Показать сообщение отдельно
Старый 28.04.2009, 20:08   #8
Пользователь
 
Аватар для z0mbie
 
Регистрация: 13.03.2009
Сообщений: 41
Сказал Спасибо: 26
Имеет 1 спасибку в 1 сообщении
z0mbie пока неопределено
По умолчанию

Я вот этот скрипт пробовал:
Бот рассказывающий анекдоты если у него кто то купил 1 соску .
Создайте папку C:\l2jokes запишите анекдоты в файлы 1.txt, 2.txt и тд.
jokes_max = 100; здесь поставьте количество анекдотов помните что длинна анекдота не должна превышать 255 символов.
MyName:='bobrul'; Поменяйте на своё имя.
if ReadD(i) = 1152 then {S1_PURCHASED_S3_S2_s} поменяйте ID соски С воин на любой другой предмета который будете продавать.
delphi Код:
const jokes_max = 15; var TITLE_DATA2: array [0..16] of string; IDs: array [1..2000] of cardinal; Names: array [1..2000] of String; jokes: array [1..jokes_max] of string; InTimer: Boolean; curpos: byte; f: TStringList; t: TTimer; m: TMemo; MyName: String; count: Integer; MyID: Cardinal; jokes_real: integer; procedure OnTimerProc; begin   InTimer := true;   buf := #$0B;   WriteS(MyName);   WriteS(TITLE_DATA2[curpos]);   SendToServer;   curpos := curpos + 1;   if curpos > 16 then curpos := 0;   InTimer := false; end; procedure Init; var i: byte; begin MyName:='Ruslan'; curpos := 0; randomize;   count := 0;   f := TStringList.Create;   jokes_real := 0;   for i := 1 to jokes_max do   begin     try       f.LoadFromFile('C:\l2jokes\' + IntToStr(i) + '.txt');       jokes_real := jokes_real + 1;     except     end;     jokes[jokes_real] := f.Text;   end;   f.free; //Создаю таймер t := TTimer.Create(nil);   t.Enabled := false;   t.Interval := 700;   t.OnTimer := @OnTimerProc;   TITLE_DATA2[0] := '@(o_O)@';   TITLE_DATA2[1] := '@(O_o)@';   TITLE_DATA2[2] := '@(o_O)@';   TITLE_DATA2[3] := '@(O_o)@';   TITLE_DATA2[4] := '';   TITLE_DATA2[5] := 'ANEKDOTI';   TITLE_DATA2[6] := '';   TITLE_DATA2[7] := 'ANEKDOTI';   TITLE_DATA2[8] := '';   TITLE_DATA2[9] := 'ANEKDOTI';   TITLE_DATA2[10] := '';   TITLE_DATA2[11] := '@(o_O)@';   TITLE_DATA2[12] := '@(O_o)@';   TITLE_DATA2[13] := '@(o_O)@';   TITLE_DATA2[14] := '@(O_o)@';   TITLE_DATA2[15] := '@(o_O)@';   TITLE_DATA2[16] := '@(O_o)@';   ShowTab;   //Создаю TMemo   m:=TMemo.Create(UserTab);   m.parent:=UserTab;   m.align:=alClient;   m.ReadOnly:=true;   m.ScrollBars:=ssBoth;   m.lines.add('Анекдотов загружено: ' + inttostr(jokes_real)); end; procedure Free; begin   t.OnTimer := nil;   t.Enabled := false;   t.Interval := 0;   t.Free;   m.Free;   HideTab; end; function FindPlayer(ObjID: cardinal): integer; //Ищет ObjID в массиве IDs var k: cardinal; begin   result := -1;   if Count > 0 then     for k := 1 to Count do       if IDs[k] = ObjID then       begin         result := k;         break       end; end; var i: integer; objid: cardinal; name: string; begin if FromServer then   case pck[1] of      #$31: // CharInfo     begin      i := 18; //В етой позиции находиться ObjectID в пакете CharInfo      objid := ReadD(i);      i := FindPlayer(ObjID);      if i = -1 then       begin       i := 22; //В етой позиции находиться Name в пакете CharInfo       name := ReadS(i);       // Добавление имени в массив ников IDs это ObjectID и Names это Name        if (name = '') then         begin           // (none)         end         else begin         count := count + 1;         IDs[count] := ObjID;         Names[count] := name;         m.Lines.Add(IntToStr(count) + ' - ' + Format('%x', [ObjId])+' = '+ Names[count]);         end;       end;     end;     #$32: //UserInfo Ищет мой ObjectID     begin       i := 18;       MyID := ReadD(i);       i := 22;       MyName := ReadS(i);       //Включает таймер бегущей строки в том случае если мой ObjectID найден       //Тогда начинает работать бегущая строка       t.Enabled := true;     end;     #$23: //TargetSeleted     begin       i := 2;       objid := ReadD(i);       if ReadD(i) <> MyID then exit;       i := FindPlayer(objid);       if i <> -1 then       begin         buf := #$49;         WriteS('Привет, '+names[i]+'! Я бот! Купи у меня сосок и я, в благодарность за это, расскажу тебе анекдот или стишок на тему LineAge2! ;)');         WriteD(2);         WriteS(names[i]);         SendToServer;         // в лог         m.Lines.Add(TimeToStr(now)+': '+names[i]+'Взял вас в таргет.');         end;         end;         #$08: // ObjectDelete     begin       i := 2;       objid := ReadD(i);       i := FindPlayer(objid);       if i <> -1 then       begin         IDs[i] := IDs[count];         Names[i] := Names[count];         count := count - 1;       end;     end;      #$62:     begin       i := 2;       if ReadD(i) = 1152 then {S1_PURCHASED_S3_S2_s}       begin         i := i + 4*2;         name := ReadS(i);           buf := #$49;           i := int(random * jokes_real) + 1;           WriteS(jokes[i]);           WriteD(2);           WriteS(name);           SendToServer;           if (Length(m.Lines.Text) > 1000) then m.Lines.Text := '<cleared>';           // внесем в лог           m.Lines.Add(TimeToStr(now)+': '+name+' purchased');           m.Lines.Add('> ' + jokes[i]);         end;     end; end; end.
Но у меня всё время ошибка выходит. Мой ник руслан. 15 анекдотов. Нада ли быть в клане чтобы этот скрипт работал?
__________________
Баги и читы для Lineage II ---> http://chiter.winbb.ru

Последний раз редактировалось QaK, 28.04.2009 в 21:49.
z0mbie вне форума   Ответить с цитированием