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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 30.03.2009, 22:19   #1
Пользователь
 
Аватар для z0mbie
 
Регистрация: 13.03.2009
Сообщений: 41
Сказал Спасибо: 26
Имеет 1 спасибку в 1 сообщении
z0mbie пока неопределено
По умолчанию Скрипты

Скрипт юзает баночки HP если ваше HP < MaxHP
Скрипт тест проходил на Lineage 2 Gracia Part 1.
В строке Name:='bobrul'; имя поменять на своё. Если помог жми спасибку не жадничай !
Код:
var
timer: TTimer;
Name: String;
OID, OIDName: Integer;
MaxHP: Integer;
w: Integer;
procedure Init; //It is called at script turn on
begin
Name:='bobrul';
OID:= 0;
OIDName:= 0;
w:= 0;
 timer:=TTimer.Create(nil);
  timer.OnTimer:=@OnHTimer;
  timer.enabled:=false;
  timer.interval:=10100; //время задержки
end;

procedure Free; //It is called at script turn off
begin
timer.enabled:=false;
end;

procedure OnHTimer(Sender: TObject);
begin
If OID <> 0 then
begin
buf :=HStr('19');
WriteD(OID);
buf := buf + HStr('00 00 00 00');
SendToServer;
end
else timer.enabled:=false;
end;

begin
if FromServer and (ConnectName=Name) then
case pck[1] of
    #$21: begin
    if ReadD(12) = 1061 then OID:=ReadD(8);  //OID HealingPotion.
    end;

    #$32: begin
    If ReadS(22) = Name then
    begin
    MaxHP:=ReadD(84);  //MaxHP перса Name
    OIDName:=ReadD(18); //OID перса Name
    end;
    end;

    #$18: begin
    //Используем банки если HP<MaxHP.
    If (ReadD (2) = OIDName) and (ReadD(14) < MaxHP) and (w = 0) then
    begin
    timer.enabled:=TRUE;
    w:= 1;
    end;
    If (ReadD(2) = OIDName) and (ReadD(14) = MaxHP) then
    begin
    timer.enabled:=false;
    w:= 0;
    end;
    end;
    end;


end.
Скрипт юзанья скила UsedSkilFokucedForce для орка у которого есть скил FokucedForce.
Name:='bobrul'; поменять имя .
Код:
var
timer: TTimer;
Name: String;
procedure Init; //It is called at script turn on
begin
Name:='bobrul';
 timer:=TTimer.Create(nil);
  timer.OnTimer:=@OnTimer;
  timer.enabled:=false;
  timer.interval:=880; //время задержки
  timer.enabled:=true;
end;

procedure Free; //It is called at script turn off
begin
timer.enabled:=false;
end;

procedure OnTimer(Sender: TObject);
begin
buf :=HStr('39 32 00 00 00 00 00 00 00 00');
SendToServer;
end;
//Script main body
//It is called at arrival of each package if the script is included
begin
if FromServer and (ConnectName=Name) then
case pck[1] of
    #$F9: begin
     if (ReadD(2) < 2) then     //Здесь можно указать при скольки зарядах включиться скил.
    begin
    timer.enabled:=true;
    end;
    if (ReadD(2) = 5) then  //Здесь указано при скольки зарядах отключиться скил.
    begin
    timer.enabled:=false;
    end;
    end;

    #$62: begin
    if (ReadD(2) = 31) and (ReadD(6) = 0) then
    begin
    pck:='';
    timer.enabled:=false;
    end;
    if (ReadD(2) = 324) and (ReadD(6) = 0) then  pck:='';
    end;
    end;
end.
Бот рассказывающий анекдоты если у него кто то купил 1 соску .
Создайте папку C:\l2jokes запишите анекдоты в файлы 1.txt, 2.txt и тд.
jokes_max = 100; здесь поставьте количество анекдотов помните что длинна анекдота не должна превышать 255 символов.
MyName:='bobrul'; Поменяйте на своё имя.
if ReadD(i) = 1152 then {S1_PURCHASED_S3_S2_s} поменяйте ID соски С воин на любой другой предмета который будете продавать.
Код:
const
jokes_max = 100;

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:='bobrul';
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.
__________________
Баги и читы для Lineage II ---> http://chiter.winbb.ru
z0mbie вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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