2 место Познакомься, это C# . Просто, быстро, удобно! + подборка сниппетов внутри.

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
917
Баллы
113
ZennoPoster очень гибок и легок в освоении, но для легкости освоения часть функциональности по умолчанию отсутствует, некоторые не часто встречающиеся вещи нельзя реализовать стандартным функционалом или они реализуются в несколько шагов хотя действие "типично" или приходится заниматься размножением кубиков в ряде случаев.
Но все эти решить участки быстро и удобно нам может помочь C#.
Выделите час времени и Вы уже начнете ориентироваться в сниппетах и поймете, как написать свой первый C# сниппет.

C# (произносится «си шарп») — объектно-ориентированный язык программирования.
Подробнее - https://ru.wikipedia.org/wiki/C_Sharp

Мы сейчас не будем учить C#, а лишь разберем, как использовать и чуть-чуть править готовые участки кода, которые заменят/дополнят нам наш код на кубиках.

Сниппет (в программировании) — небольшой фрагмент исходного кода или текста, пригодного для повторного использования. Т.е. обособленный кусочек кода, который может использоваться отдельно.
В нашем случае это кусок кода который будет заменять 1 или несколько обычных Zenno-кубиков

Шаг сниппета в проекте:


Пример сниппета попавшегося первым мне на глаза:
Код:
string acc_full = project.Variables["account_source"].Value;
var account = acc_full.Split('|').ToList();
project.Variables["login"].Value = account[0];
project.Variables["pass"].Value = account[1];
project.Variables["hz"].Value = account[2];

Часто для сниппетов нужна актуальная версия ZennoPoster. Многие сниппеты используют методы добавленные в последних версиях. На старых версиях ZennoPoster сниппет может валиться с ошибкой.

Метод (в C#) — это функция или процедура, принадлежащая какому-то классу или объекту. Как и процедура в процедурном программировании, метод состоит из некоторого количества операторов для выполнения какого-то действия и имеет набор входных аргументов
Простыми словами - это некая команда для объекта, часто с уточняющими параметрами. Пример рассмотрим чуть ниже.

Каждый сниппет часто состоит из 3х вещей:
1.
Присваиваем значение переменым
2. Выполняем ряд методов над этими перемеными или другими объектами
3. Выводим полученный результат после обработки методами

Это не обязательная последовательность и уже тем более не обязательные составляющие.


В C# коде, все что идет после // и до переноса строки игнорируется, т.е. после символов // как правило пишут пояснения к строке кода.
При ошибке в сниппете Вам в логах ZennoPoster сообщат номер строки и где эта ошибка.

О переменных:
-Переменые внутри сниппета, отдельны от переменых внутри нашего шаблона. Их можно связать неким образом, но это ни одно и тоже.
-Переменые в C# бываю разного типа. (основы C# это, просто загуглите для понимания: "Типы переменых(данных) в C#"). Одни методы работают только с перемеными чисел, другие с текстом и т.д.
т.е. это не как в стандартных кубиках шаблона, где мы переменой присваиваем все что угодно.

Вот пример обозначения переменых в сниппете с комментариями к ним:
Код:
var list = project.Lists["BlackList"]; //project.Lists["BlackList"]; - в таком формате пишется наш обычный лист в проекте с именем BlackList, т.е. в это строке C#-ной переменой типа var именем list  мы присваиваем значение нашего списка с именем BlackList.
string id = project.Variables["it"].Value; // тут мы C#-ной переменой типа string и именем id присваиваем значение нашей переменой из проекта с именем it.
project.Variables["text"].Value = "LightWood пишет шаблоны на заказ и консультирует по ZennoPoster"; //Здесь мы изнутри C# кода присваиваем переменой проекта текст указанный в кавычках. Тут также можно присваивать, значение C#-ной переменой или результат выполнения метода, но в этих случаях уже не надо использовать кавычки. По обилию примеров готовых сниппетов на форуме все поймете)
О методах:
Что такое методы мы разобрались выше.
Метод может взаимодействовать на переменую, а может на любой другой объект.
т.е. например вот такая строка очистит куки инстанса:
Код:
instance.ClearCookie();
А такая, разобьет строку по разделителю |
Код:
string acc_full = project.Variables["account_source"].Value;
var account = acc_full.Split('|').ToList(); // Split('|').ToList(); - вот непосредственно метод разделения
К каждому виду объекта можно использовать только определенные методы. т.е. чистить куки у переменой или пытаться разбить инстанс нельзя.)

Как правильно записать метод и к чему его можно применить всегда написано к описанию методу. т.е. что в методе в каком порядке должно стоять., грубо говоря вы берете образец из инструкции и подставляете свои значения. Ничего сложного.

Методы ZennoPoster расписаны тут - http://zennolab.com/wiki/en:zennoposter:macros-documentation. Выбираете свою версию Zenno. (только на английском языке, но даже со скудным английским все будет понятно при желании разобраться)

Вывод результата C# шага:
В значении переменой выполненного C# шага по умолчанию будет текст "OK", но если в коде сниппета есть строка:
Код:
return [...] ;
где [...] может быть переменой, текстом и т.д., т.е например (return name; или return "finish";)
то в значение переменой C# шага будет равно значению того, что указано в return строке.

По введению в основы это всё. Дальше Вам нужно чуть всмотреться и вчитаться в готовые сниппеты и в комментарии к ним.


* Раздел по сниппетам на форуме, тут можно найти готовые сниппеты и задать вопросы - http://zennolab.com/discussion/forums/snipety.136/
* Попросить написать сниппет можно в этой теме - http://zennolab.com/discussion/threads/besplatnye-snipety-na-zakaz.23450/

По своему опыту скажу, что в 95% случаях уже на форуме есть готовые решения под необходимые задачи в разделе сниппетов, просто нужно их найти и возможно чуть подправить или скомбинировать с чем-то.

Официально вам никто не должен писать сниппет по просьбе, даже если у Вас pro версия ZennoPoster'а. Это не входит в область поддержки саппорта, но если корректно составлен вопрос, то вопрос врятли останется без внимания со стороны Zenno сообщества.

p.s. Я не C# кодер, если выразился где-то неверно, то будьте добры сообщить в теме.)





Подборка сниппетов которые я чаще всего использую:
(сниппеты мои, знакомых кодеров и наших форумчан)


Вывести количество эелементов на странице
Код:
return instance.ActiveTab.FindElementsByAttribute("тэг","имя атрибута","значение","тип поиска").Count;

Присваиваем значение перемменной, исходя из значения другой переменной
Если переменная month нашего проекта будет равна "янв", то результат сниппета будет = 1, если "фев", то результат выполнения сниппета будет = 2 и т.д.
В лучшем виде заменяет switch шаг+установку значения переменой.
Код:
return "янв|1,фев|2,март|3,апр|4,май|5,июн|6,июл|7,авг|8,сен|9,окт|10,ноя|11,дек|12".Split(',').First(s=>s.Contains(project.Variables["month"].Value)).Split('|')[1];

Меняем размер инстанса
Код:
instance.SetWindowSize(800,600);

Замена с "донором", по регулярному выражению
Код:
return Regex.Replace(project.Variables["text"].Value,"([a-zA-Zа-яА-Я; ])","$1*",RegexOptions.None); //после каждой буквы в переменной text поставит *.
// т.е.если было аб123вг, то результат выполнения а*б*12в*г*

Разбиваем строку (т.е. сплитуем) по разделителю | и раскидываю полученные части по переменным.
Код:
string acc_full = project.Variables["account_source"].Value;
var account = acc_full.Split('|').ToList();
project.Variables["login"].Value = account[0];
project.Variables["pass"].Value = account[1];
project.Variables["hz"].Value = account[2];

Проверка наличия строки в списке. С учетом регистра и т.д., т.е. текст в переменной и строка списка должны быть идентичны. Если нашлась строка то выводит true, а иначе false.
Код:
var list = project.Lists["BlackList"];
string id = project.Variables["id"].Value;
if(list.Contains(id))
{
  return "true";
}
else
{
  return "false";
}

Ищем и выводим из списка строку которая содержит текст из переменной. Без учета регистра.
Код:
List<string> list = new List<string>();
list.AddRange(project.Lists["all"]);
string myString = project.Variables["recipient"].Value;
var matchingvalues = list
.FindAll(x => x.IndexOf(myString, StringComparison.OrdinalIgnoreCase) != -1);
return matchingvalues.First();

Код поиска частичного совпадения в списке. Если какая-то из строк списка включает в себя значение переменной, то выводим yes, иначе no.
Код:
// берем из переменной текст, который надо искать
var textContains = project.Variables["tmp_city"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["city"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
  for(int i=0; i < sourceList.Count; i++)
  {
  // читаем строку из списка
  var str = sourceList[i];
  // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
  if (str.Contains(textContains))
  return "yes";
  }
}
// если ничего не нашли возвращаем "no"
return "no";

Ищет в таблице в укзанном столбце ячеку которая содержит переменную, если находит то выводит true, а иначе false.
Код:
var table = project.Tables["base"];
for(int i = 0; i < table.RowCount; i++)
{
    int col_num = 0; //порядковый номер колонки
    string cur_string = table.GetCell(col_num,i); //текущая строка которую обрабатываем
    //project.SendInfoToLog(cur_string);
    if(cur_string.Contains(project.Variables["partSite"].Value))
    {
      
        return "true";
    }
}
return "false";

Меняем тип переменной, для работы внутри методов C#
Код:
// Переводим переменную проекта mailDays типа стринг, в тип инт
int mailDaysC = int.Parse(project.Variables["mailDays"].Value);

//Переводим переменную проекта useSSL типа стринг, в тип bool
bool mailDaysC = bool.Parse(project.Variables["useSSL"].Value);

Ставим значение 0 всем чекбоксам на странице
Код:
HtmlElementCollection hecol = instance.ActiveTab.FindElementsByAttribute("input:checkbox", "fulltagname", "input:checkbox", "regexp");
for(int i = 0; i< hecol.Count; i++)
{
    hecol.Elements[i].SetValue("0", instance.EmulationLevel, false);
}

Делаем клик по всем чекбоксам на странице
Код:
HtmlElementCollection hecol = instance.ActiveTab.FindElementsByAttribute("input:checkbox", "fulltagname", "input:checkbox", "regexp");
    for(int i = 0; i< hecol.Count; i++)
    {
        hecol.Elements[i].Click();
    }

Получаем размер файла в байтах
Код:
var length = new System.IO.FileInfo(@"C:\img.png").Length;
return length;

Получаем количество символов в значении переменной
Код:
return project.Variables["var1"].Value.Length;

Разбить файл на мелкие по разделителю внутри текста. 11111 - разделитель в тексте. Файлы сохраняются в папку с шаблоном.
текст изначально выглядит так:
a
b
c
11111
d
e
f
11111
g
h
i
Код:
string data = File.ReadAllText(project.Directory+"\\"+ "data.txt");
string separator = "11111";
string[] text = data.Split(new string[] { separator }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < text.Length; i++)
   {
      File.WriteAllText(project.Directory+"\\"+ i + ".txt", text[i].Trim());
   }

Помещает значее переменной var1 в буфер обмена и делает вставку нажатием ctrl+v
Код:
var descr = project.Variables["var1"].Value;
System.Windows.Forms.Clipboard.SetText(descr);
instance.ActiveTab.KeyEvent("v","press","ctrl");
 
Тема статьи
Нестандартные хаки
Номер конкурса статей
Пятый конкурс статей

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование:

Лев

Client
Регистрация
09.12.2014
Сообщения
290
Благодарностей
273
Баллы
63
ахаха LightWood молодец, давай 10 статей напиши, время еще есть)
 
  • Спасибо
Реакции: i6nake9

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
  • Спасибо
Реакции: Konrod_m

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28
Метод (в C#) — это функция или процедура, принадлежащая какому-то классу или объекту.
Ха -ха - ха ))) Прочитал и ничего не понял ))) Но Visual Studio 2015 уже поставил ) Без неё как понимаю никак ...

Подскажи понятные и простые для понимания материалы (видеокурсы и тп.) по C# Что можешь рекомендовать ?

И объясни зачем это всё вообще ? Почему многие разработчики шаблонов рано или поздно переходят на использование C# ?
 
Последнее редактирование:

hard176

Client
Регистрация
19.06.2014
Сообщения
43
Благодарностей
11
Баллы
8
И объясни зачем это всё вообще ? Почему многие разработчики шаблонов рано или поздно переходят на использование C# ?
Иногда попадаются такие вещи, которые невозможно сделать стандартными средствами Zennoposter, а использование С# кода снимает это ограничение.
Для примера - иногда нужно кликнуть по элементу на странице, маленькому попапу, в котором находится ссылка, который очень трудно поймать стандартными средствами. А в коде это можно сделать.
Работа со списками и таблицами - иногда просто невозможно что-то сделать на стандартных экшенах, либо решение получится ну очень громоздкое. В коде же без проблем можно решить задачу.
Да и само решение, проекты выглядят гораздо элегантнее, в нескольких кубиках C#, нежели столбы стандартных экшенов. Я в своих проектах очень часто прибегаю к коду, когда со временем пришло понимание программирования на C#. Обучался по видеоурокам от CBS - http://edu.cbsystematics.com/ru/
 
  • Спасибо
Реакции: AlexGoodWeb

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Не забываем что у многих кубиков есть функция перевода в c#.
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Которая толком не работает.
Лучше сразу писать на сишарпе. Логика будет стройнее.
 

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28
Не забываем что у многих кубиков есть функция перевода в c#.
Данный вариант больше соответствует изначальным ожиданиям к возможностям ZP (т.е. создание любых шаблонов без знаний кода) и если разработчики доведут данное начинание до полной успешной реализации, чего я им искренне желаю, то будет просто отлично !
На данный момент перевод в C# работает только на некоторых экшенах, к сожалению.
 
Последнее редактирование:
  • Спасибо
Реакции: Marcelo

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28
Которая толком не работает.
Лучше сразу писать на сишарпе. Логика будет стройнее.
Для начинающих получается долго и трудно ... это если хорошо знаешь C# или опыт программирования на других языках есть легко и быстро.
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
C# очень простой язык. Правда я особо не углублялся пока.
Кодить одно удовольствие. Тот же JS - просто ад.
 

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28
  • Спасибо
Реакции: Rimen и diverfor

hard176

Client
Регистрация
19.06.2014
Сообщения
43
Благодарностей
11
Баллы
8

Но насколько понял курс устарел и на сегодня версия C# и Visual Studio уже отличаются ...
Версия Visual Studio - это всего лишь версия Visual Studio. Просто в новые версии разработчики пихают функционал, который по их мнению будет радовать кодеров. Можно кодить на любой версии, насчет этого не парься. Если еще не программировал - самое главное понять принципы, а потом уже приходит понимание, что к чему. На складчике есть полные курсы от этих ребят.
 
  • Спасибо
Реакции: AlexGoodWeb
Регистрация
20.09.2015
Сообщения
33
Благодарностей
8
Баллы
8
И объясни зачем это всё вообще ? Почему многие разработчики шаблонов рано или поздно переходят на использование C# ?
Просто сравни, как всё выглядит на моём скрине. 1.0 - первая версия шаблона, где всё было на кубиках, там было выполнение 3х действий для одного сайта накрутки. 2.0 - вторая версия, там всё сделано на C#, причём действий уже не 3, а 5.
То что код существенно расширяет функционал зенно это да, но я ещё ни разу не делал в коде функции, которые зенно бы не выполнял, уж такие задачи для шаблонов. А вот из-за красоты, удобства и лаконичности я как раз-таки это всё и юзаю.

Которая толком не работает.
Лучше сразу писать на сишарпе. Логика будет стройнее.
А у меня вот довольно-таки неплохо работает. Всё что можно конвертировать конвертирую, логику пишу сам, остальное гуглю. Если бы всё писал сам, то остановился бы на 1 версии (скрин выше), ибо C# знаю очень поверхностно.
 
Последнее редактирование:
  • Спасибо
Реакции: AlexGoodWeb

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Всё бы хорошо, но там изучение идёт на английском языке причём техническом IT ... был бы русский перевод тогда да.
Имхается мне, в такой сфере как IT, английский язык далеко не самый бесполезный навык.
 
  • Спасибо
Реакции: andrwork и Juror

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
А у меня вот довольно-таки неплохо работает. Всё что можно конвертировать конвертирую, логику пишу сам, остальное гуглю. Если бы всё писал сам, то остановился бы на 1 версии (скрин выше), ибо C# знаю очень поверхностно.
Частность подтвеждает целое.
Надеюсь, вы не остановитесь в тот момент, когда весь проект будет помещаться в один экшен своего кода на сишарпе.

Visual Studio можно пользоваться абсолютно бесплатно и без ограничений, например, по потокам.
 

Megalo

Client
Регистрация
30.03.2015
Сообщения
84
Благодарностей
40
Баллы
18

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Megalo какие-либо сделки.

Препод конечно окуеть! Общается с аудиторией как с полными дебилами из детского сада. Лучше изучить "Школа Программирования | C# и .Net Framework (2011)" - есть на всех торрентах. Очень грамотно и быстро рассказывает про ООП в С#.
После 2-х дней изучения я наконец-то впервые заработал первые деньги в интернете (целых 300 руб. за парсинг магазина) - начал писать коммерческие С# программы сначала на фрилансе, потом уже снипеты в Зенке для своих проектов. И путь от офисного планктона, сидящего с 9 до 18 на кривом кресле в open, мать его, space, со вконец заэтовавшими коллегами, с одним очком на 30 человек, наблюдающего радостные и позитивные лица в метро в часы пик, зарплатой 70000 руб., до ИПшника с зарплатой чуть более ) занял примерно полгода. В ближайшее время планирую из Москвы в Тайланд перебраться - очень пальмы и солнце нравятся.
В общем, всем кто хочет писать качественные шаблоны и зарабатывать кучу бабла- C# обязательно изучить! Облегчает и ускоряет создание сложных шаблонов в несколько раз. Это откроет для вас кучу возможностей:
1) Устроится на высокооплачиваемую работу. Данный вариант для тру программеров, которые способны общаться только со своим непосредственным начальником и женщин видят только на специальных сайтах.
2) Для всех остальных, кто не падает в обморок при звонке потенциального/обиженного/контуженного на пол башки клиента, Zennoposter дает массу вариантов заработка:
2.1) Создание крутого шаблона-комбайна и продажа на складчике (см. раздел - авторские складчины). Авторы получают от 100 000 каждый месяц.
2.2) Создание своего сервиса. Куча вариантов! Агрегатор недвижки/авто/сериалов/тренингов, поиск вилок у букмекеров, автоматическое создание прокси, SSH тоннелей, накрутка голосований/просмотров и т.д. и т.п.
2.3) Для тех, кому не дает покоя слава и деньги Парабеллума, Азамата Ушанова, Евгения Попова. Создание своего инфобизнеса. Берем любую тему по заработку в интернете и думаем как это можно автоматизировать и массштабировать с помощью Зеннопостера. Пишем шаблон и продаем на складчике (см. пункт 2.1)
2.4) Пойти по пути многоуважаемого Rostonix и создать серию обучающих курсов по основам Zennoposter, затем добавить обучение созданию снипетов С# в Зенке, затем сделать полный курс по C# (кстати, до сих пор нет нормального курса)
 
Последнее редактирование:

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28
Имхается мне, в такой сфере как IT, английский язык далеко не самый бесполезный навык.
Согласен, однако изучение языка до такого уровня требует массу времени дополнительного.. проще изучать по русскоязычным материалам.

 
  • Спасибо
Реакции: diverfor

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Просто сравни, как всё выглядит на моём скрине.
Уверен что и свитч и все 5 кубиков можно было в один запихнуть.
Удобство кубиков в наглядности (недаром сейчас BluePrint кодинг стал развиваться) и в дебаге.
 
  • Спасибо
Реакции: AlexGoodWeb

Megalo

Client
Регистрация
30.03.2015
Сообщения
84
Благодарностей
40
Баллы
18

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Megalo какие-либо сделки.

Кстати, если кто не в курсе - Visual Studio можно скачать на торрентах. Причем, если кто сидит на Windows XP - вам подойдет только Visual Studio 2012
 

Fantomass

Client
Регистрация
13.04.2016
Сообщения
86
Благодарностей
36
Баллы
18
Кстати, если кто не в курсе - Visual Studio можно скачать на торрентах. Причем, если кто сидит на Windows XP - вам подойдет только Visual Studio 2012
Зачем бесплатную программу качать на торрентах?
 
  • Спасибо
Реакции: Konrod_m и AlexGoodWeb

Megalo

Client
Регистрация
30.03.2015
Сообщения
84
Благодарностей
40
Баллы
18

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Megalo какие-либо сделки.

Она бесплатна только для студентов, стартаперов и прочих нищебродов ). Причем свою принадлелжность к касте избранных еще доказать надо перед великим и всемогущим Microsoft ом
 
Последнее редактирование:

vierasen

Client
Регистрация
10.12.2015
Сообщения
582
Благодарностей
277
Баллы
63
Уверен что и свитч и все 5 кубиков можно было в один запихнуть.
Удобство кубиков в наглядности (недаром сейчас BluePrint кодинг стал развиваться) и в дебаге.
Можно все в один кубик запихнуть, но искать в нем что-то потом будет проблематично. Кубик С# когда выполняет одно действие гораздо удобней. Тут нужно баланс соблюдать)
 
  • Спасибо
Реакции: andrwork

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Еще можно кодить в Visual Studio с нормальным отладчиком, а в зенно писать только содержимое Main.
Закрывать шаблон, добавлять к цене $10 и не париться с тем, что код сольют в паблик.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)