Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 25.02.2009, 15:09   #1
Новичок
 
Регистрация: 15.01.2009
Сообщений: 7
Сказал Спасибо: 1
Имеет 1 спасибку в 1 сообщении
bistriy пока неопределено
По умолчанию Рисую аденой.

Вот на досуге за вечер написал скрипт рисование аденой.
Рисует почти все буквы . Всё в ваших руках модифицируйте скрипт .
Осталось добавить недостающие буквы и еще разобраться в отступах между буквами. Скрипт рабочий.

В скрипте проблемма помогите разобраться , когда запускаю скрипт виснет
управление чаром видно как он кидает адену но если щелкнуть левой кнопкой мыши по земле то чар не двигаеться а рисует пока не дорисует как мне сделать чтоб чар по щелчку мыши двигался во время работы скрипта ???

Код:
//Скрипт Рисуй аденой.
// MyName  запишите свой ник.
// зайдите в игру запустите скрипт киньте 1 адену на землю.
//Пишет почти все буквы.
//Для использования скрипта создайте в директории C:\l2jokes\risuuadenoy
//файл 1.txt запишите в него строку.
var
MyName: String;
f: TStringList;
jokes: array [1..2] of string;
m: TMemo;
MyID: Cardinal;
MyName2: String;
i: Integer;
X, Y, Z: Integer;
X1, Y1, Z1: Integer;
gX: Integer;
N: Char;
MyTest: String;
MyI: Integer;
DL: Integer;
SI: String;
p: Integer;
smeshenie, smeshenie1: Integer;
v: Integer;
procedure Init; //It is called at script turn on
begin
MyName:='bobrul';
i:= 0;
gX := 1;
p := 1;
v := 0;

 //Загружаю текст из файла 1.txt
f := TStringList.Create;
  f.LoadFromFile('C:\l2jokes\risuuadenoy\' + IntToStr(1) + '.txt');
  jokes[1] := f.Text;
  f.free;

   ShowTab;
  //Создаю TMemo
  m:=TMemo.Create(UserTab);
  m.parent:=UserTab;
  m.align:=alClient;
  m.ReadOnly:=true;
  m.ScrollBars:=ssBoth;
  m.lines.add('Загружен текст из файла 1.txt :');
  MyTest:=Trim(Lowercase(jokes[1]));
  m.lines.add(MyTest);  //В MyTest содержиться строка из файла.
  MyI:=Length(MyTest);  //Длина строки MyTest

end;

procedure Free; //It is called at script turn off
begin
//Уничтожаю TMemo
  m.Free;
  HideTab;
end;


procedure RisP;   //Кидает адену на землю.
begin
   buf := #$17;
   buf := buf + HStr('A1 81 02 10 01 00 00 00');
   WriteD(X); //X
   WriteD(Y);    //Y
   WriteD(Z);    //Z
   SendToServer;
   Delay(2000);
   Application.ProcessMessages;
end;

procedure Vverx(J: Integer);
begin
gX:=1;
 for gX:= 1 to J do
     begin
     Y:=Y - 5;  //Рисует вверх.
     Application.ProcessMessages;
     RisP;
     Application.ProcessMessages;
     gX:=gX+1;
     end;
     gX:=1;
end;

procedure Vpravo(J: Integer);
begin
gX:=1;
for gX:= 1 to J do
     begin
     X:=X + 5;  //Рисует вправо.
     Application.ProcessMessages;
     RisP;
     Application.ProcessMessages;
     gX:=gX+1;
     end;
     //Запомнить максимальное смещение вправо.
     smeshenie := X - X1;

     gX:=1;
end;

procedure Vniz(J: Integer);
begin
gX:=1;
     for gX:= 1 to J do
     begin
     Y:=Y + 5;  //Рисует вниз.
     Application.ProcessMessages;
     RisP;
     Application.ProcessMessages;
     gX:=gX+1;
     end;
     gX:=1;
end;

procedure Vlevo(J: Integer);
begin
gX:=1;
for gX:= 1 to J do
     begin
     X:=X - 5;  //Рисует влево.
     Application.ProcessMessages;
     RisP;
     Application.ProcessMessages;
     gX:=gX+1;
     end;
     gX:=1;
end;

//Заготовки букв.

procedure BP(SI: String); // Рисование бувы п.
begin
   if SI = 'а' then
   begin
   vverx(1);
   Y:=Y - 5;
   vpravo(1);
      Y:=Y - 5;
   vpravo(1);
      Y:=Y - 5;
   vpravo(1);
      Y:=Y - 5;
   vpravo(1);
      Y:=Y - 5;
   vpravo(1);
   X:=X + 5;
   vniz(1);
      X:=X + 5;
   vniz(1);
      X:=X + 5;
   vniz(1);
      X:=X + 5;
   vniz(1);
      X:=X + 5;
   vniz(1);
   X:=X - 35;  // Рисует вправо.
Y:=Y - 5;  //ВВерх
vverx(1);
vpravo(4);
X:=X + 15;
//smeshenie1 := X - X1;
//smeshenie := smeshenie1;
   end;

   if SI = 'б' then
   begin
   vverx(6);
   vpravo(3);
   vverx(1);
   X:=X - 15;  // Рисует вправо.
   Y:=Y + 30;  //ВВерх
   vpravo(3);
   vverx(3);
   vlevo(2);
   end;

   if SI = 'в' then
   begin
   vverx(6);
   vpravo(3);
   vniz(2);
   vlevo(2);
   vniz(1);
   vpravo(1);
   X:=X + 5;  // Рисует вправо.
   vniz(2);
   vlevo(2);
   end;

      if SI = 'г' then
   begin
   vverx(6);
   vpravo(3);
   vniz(2);
   end;

   if SI = 'д' then
   begin
   vverx(2);
   vpravo(5);
   vniz(1);
   X:=X - 20;  // Рисует вправо.
   Y:=Y - 5;  //ВВерх
   vverx(4);
   vpravo(3);
   vniz(3);
   end;

   if SI = 'и' then
   begin
   vverx(6);
   Y:=Y + 20;
   vpravo(1);
   Y:=Y - 5;
   vpravo(1);
      Y:=Y - 5;
   vpravo(1);
   Y:=Y - 5;
   vpravo(1);
   Y:=Y - 5;
   vpravo(1);
   vniz(5);
   end;



   if SI = 'е' then
   begin
   Y:=Y - 5;
   vverx(3);
   Y:=Y - 5;
   vpravo(1);
   Y:=Y - 5;
   vpravo(2);
   X:=X + 5;
   vniz(1);
   X:=X + 5;
   vniz(1);
   vlevo(4);
   Y:=Y + 10;
   vniz(1);
   vpravo(3);
   Y:=Y - 5;
   vpravo(1);
   end;

      if SI = 'ё' then
   begin
   Y:=Y - 5;
   vverx(3);
   Y:=Y - 5;
   vpravo(1);
   Y:=Y - 5;
   vpravo(2);
   X:=X + 5;
   vniz(1);
   X:=X + 5;
   vniz(1);
   vlevo(4);
   Y:=Y + 10;
   vniz(1);
   vpravo(3);
   Y:=Y - 5;
   vpravo(1);
   Y:=Y - 30;
   vlevo(1);
   X:=X - 10;
   vlevo(1);
   end;

   if SI = 'ж' then
   begin
   vverx(1);
   Y:=Y - 5;
   vpravo(1);
   Y:=Y - 5;
   vpravo(1);
   vverx(1);
   X:=X - 5;
   vverx(1);
   X:=X + 5;
   vverx(1);
   X:=X + 10;
   vpravo(1);
   vniz(5);
   X:=X + 10;
   vpravo(1);
   Y:=Y - 5;
   vlevo(1);
   Y:=Y - 5;
   vlevo(1);
   vverx(1);
   X:=X + 5;
   vverx(1);
   X:=X + 5;
   vverx(1);
   end;

   if SI = 'з' then
   begin
   vverx(1);
   vpravo(4);
   Y:=Y - 5;
   vpravo(1);
   vverx(1);
   Y:=Y - 5;
   vlevo(4);
   Y:=Y - 10;
   vlevo(1);
   vpravo(5);
   vniz(1);
   end;

   if SI = 'п' then
   begin
   vverx(6);
   vpravo(3);
   vniz(5);
   end;

   if SI = 'р' then
   begin
   vverx(6);
   vpravo(3);
   vniz(3);
   vlevo(2);
   end;

   if SI = 'с' then
   begin
   vverx(6);
   vpravo(3);
   X:=X - 15;  // Рисует вправо.
   Y:=Y + 25;  //ВВерх
   vpravo(3);
   end;

   if SI = 'т' then
   begin
   Y:=Y - 20;  //ВВерх
   vverx(2);
   vpravo(4);
   vniz(1);
   X:=X - 5;  // Рисует вправо.
   vlevo(1);
   vniz(4);
   end;

   if SI = 'у' then
   begin
   vverx(1);
   Y:=Y - 20;  //ВВерх
   vverx(1);
   X:=X + 5;  // Рисует вправо.
   vniz(1);
   X:=X + 5;  // Рисует вправо.
   vniz(2);
   X:=X - 5;  // Рисует вправо.
   vniz(1);
   X:=X + 10;  // Рисует вправо.
   Y:=Y - 5;  //ВВерх
   vverx(3);
   X:=X + 15;
   end;

      if SI = 'ф' then
   begin
   Y:=Y - 15;  //ВВерх
   vverx(1);
   Y:=Y - 5;  //ВВерх
   vpravo(7);
   X:=X + 5;  // Рисует вправо.
   vniz(1);
   X:=X - 5;  // Рисует вправо.
   vniz(1);
   vlevo(6);
   X:=X + 15;  // Рисует вправо.
   Y:=Y - 10;  //ВВерх
   vverx(1);
   Y:=Y + 5;  //ВВерх
   vniz(1);
   Y:=Y + 5;  //ВВерх
   vniz(2);
   end;

   if SI = 'х' then
   begin
   vverx(1);
   Y:=Y - 20;  //ВВерх
   vverx(1);
   X:=X + 5;
   vniz(1);
   X:=X + 5;
   vniz(1);
   X:=X + 5;
   vniz(1);
   X:=X + 5;
   vniz(1);
   X:=X + 5;
   vniz(1);
   X:=X - 20;
   vverx(1);
   X:=X + 5;
   vverx(1);
   X:=X + 5;
   vverx(1);
   X:=X + 5;
   vverx(1);
   X:=X + 5;
   vverx(1);
   end;

         if SI = 'ц' then
   begin
   vverx(6);
   Y:=Y + 25;
   vpravo(3);
   vverx(5);
   Y:=Y + 25;
   X:=X + 5;
   vniz(1);
   X:=X + 5;
   vniz(2);
   end;

   if SI = 'ч' then
   begin
   Y:=Y - 10;
   vverx(4);
   Y:=Y + 15;
   vpravo(3);
   vverx(3);
   Y:=Y + 15;
   vniz(2);
   vlevo(1);
   X:=X + 5;
   vpravo(1);
   Y:=Y - 25;
   X:=X - 5;
   vlevo(1);
   X:=X - 10;
   vlevo(1);
   end;

  //Запомню максимальное смещение вправо.

end;


begin

if FromClient then
  case pck[1] of
     #$17:
     begin
     if p = 1 then
     begin
     X := ReadD(10);
     Y := ReadD(14);
     Z := ReadD(18);

     X1 := ReadD(10);
     Y1 := ReadD(14);
     Z1 := ReadD(18);

     p := 2;
     end;
   //Подходим ближе к тому месту где будем рисовать.
   buf := #$0F;
   WriteD(X); //X
   WriteD(Y + 10);    //Y
   WriteD(Z);    //Z
   WriteD(X); //X
   WriteD(Y);    //Y
   WriteD(Z);    //Z
   buf := buf + HStr('01 00 00 00 ');
   SendToServer;
   Delay(2000);
   Application.ProcessMessages;

     for DL:= 1 to MyI do //MyI длина строки MyTest
     begin
     SI:=Copy(MyTest,DL,1);
     m.lines.add(SI);
     BP(SI); //Рисую все буквы по порядку.
     SI := '';
   //Возвращаю позицию в позицию для рисования следующей буквы.
   X := X1 + smeshenie + 10;  //Перевод вправо на 10 позиций чтобы рисовать следующую букву.
   v := v - 5;
   Y := Y1;
   Z := Z1;
   //перемещение вправо перед рисованием следующей буквы.
   buf := #$0F;
   WriteD(X); //X
   WriteD(Y + 10);    //Y
   WriteD(Z);    //Z
   WriteD(X); //X
   WriteD(Y);    //Y
   WriteD(Z);    //Z
   buf := buf + HStr('01 00 00 00 ');
   SendToServer;
   Delay(2000);
   Application.ProcessMessages;
     end;
   v := 0;
   p := 1;
     end;
     end;


end.
Еще вопрос кто нибудь подскажите. Хочу дописать скрипт.
План такой:
1. Поместить в файл например 'привет игра Lineage !'.
И вторая строка 'меня зовут bobrul'.
2. Прочитать слово из файла по буквам потом ворое третье и т д.
Закончилась строка перейти на вторую строку прочитать по буквам слово потом второе третье и тд.
3. При чтении каждой буквы рисовать её на земле. При переходе на новую строку переместить перса на исходную позицию и рисовать по буквам вторую строку и т д. пока не закончаться все буквы.

Исправил скрип


Вопрос: Как мне осуществить чтение слов из файла по буквам.
Как определить конец строки.
Как брать буквы из первой строки .
Как брать буквы из второй строки.
Как определить конец файла .

Пишу скрипты на заказ пишите сюда: bistriy@bk.ru

Последний раз редактировалось bistriy, 27.02.2009 в 08:57. Причина: Добавлено сообщение
bistriy вне форума   Ответить с цитированием
За это сообщение bistriy нажился спасибкой от:
Старый 25.02.2009, 15:25   #2
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Цитата:
Сообщение от bistriy Посмотреть сообщение
Всё в ваших руках модифицируйте скрипт .
нафига? =)
QaK вне форума   Ответить с цитированием
Старый 25.02.2009, 15:41   #3
Пользователь
 
Аватар для ERASE
 
Регистрация: 09.08.2008
Сообщений: 29
Сказал Спасибо: 14
Имеет 2 спасибок в 2 сообщенях
ERASE пока неопределено
По умолчанию

Я начинал делать похожую шнягу, но из-за отсутствия времени перестал.

Насколько я знаю, в паскале/дельфи конец файла - eof (возвращает true или false)... Тут не знаю. Тебе поможет мануал по Fast Script. Тут где-то выкладывали. Там должны быть функции работы с файлами.

Добавлено через 2 минуты
Кстати, у меня все это реализовано было непосредственно через координаты. Ну, там задавалось не "вправо(х)", "влево(х)", а рисование по самим координатам... Если время будет, допишу и выложу... Хотя, все говорят, что никому это не надо, тут все довольно-таки интересно)

Последний раз редактировалось ERASE, 25.02.2009 в 15:41. Причина: Добавлено сообщение
ERASE вне форума   Ответить с цитированием
Старый 25.02.2009, 15:55   #4
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Цитата:
Сообщение от ERASE Посмотреть сообщение
Хотя, все говорят, что никому это не надо, тут все довольно-таки интересно)
никому не надо пока готовое, хотябы 60% рабочее, кто-нить не выложит.
А вообще лучше сделать так: рисуешь в любом графическом редакторе черным по белому. Сохраняешь как матрицу нулей и единиц 0 - белый, 1 - черный, потом читаешь матрицу и, соответственно выкидываешь адену по всему массиву.
З.Ы. идея интересная, реализовывать - тупо лень =)

Последний раз редактировалось QaK, 25.02.2009 в 15:57.
QaK вне форума   Ответить с цитированием
Старый 25.02.2009, 16:21   #5
Новичок
 
Регистрация: 06.02.2009
Сообщений: 13
Сказал Спасибо: 3
Имеет 15 спасибок в 6 сообщенях
AD! пока неопределено
По умолчанию

Был бот, сча название не помню, в него загружалась картинка и он ее реализовывал, красиво получалось, быстро рисовалось, но и банили тож быстро)

Добавлено через 54 секунды
L2Helper название его)

Последний раз редактировалось AD!, 25.02.2009 в 16:21. Причина: Добавлено сообщение
AD! вне форума   Ответить с цитированием
Старый 25.02.2009, 21:17   #6
Местный
 
Регистрация: 05.09.2008
Сообщений: 50
Сказал Спасибо: 3
Имеет 6 спасибок в 6 сообщенях
Krona пока неопределено
По умолчанию

народ извините за скромный вопрос.... просто недавно начал писать скрипты те что в формате .SEC... и вот теперь смотрю на это и понимаю что это совершенно не такое ... скажите эти скрипты также пишутся просто по другому работают и другие команды или они ваще к валкеру никакого отношения не имеют?
Krona вне форума   Ответить с цитированием
Старый 26.02.2009, 06:28   #7
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Krona,
Цитата:
Сообщение от Krona Посмотреть сообщение
они ваще к валкеру никакого отношения не имеют?
QaK вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 02:57.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!