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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 11.01.2011, 16:04   #31
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

щас выложу рабочий на фрее скрипт скана инвентаря
PS
мой друг недоволен твоей орфографией -
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 11.01.2011, 16:06   #32
Местный
 
Регистрация: 11.06.2010
Сообщений: 644
Сказал Спасибо: 119
Имеет 85 спасибок в 77 сообщенях
dyh9l пока неопределено
По умолчанию

ты кста хоть инвертарь открываешь?)
__________________
dyh9l вне форума   Ответить с цитированием
Старый 11.01.2011, 16:40   #33
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

короче как-то так
delphi Код:
const Name=''; offset=68; var Inventory:array of variant; procedure Init; //Вызывается при включении скрипта begin buf:=#$14; SendToServerEx(Name); SetLength(Inventory,0); end; procedure Free; //Вызывается при выключении скрипта begin end; procedure ItemList; var i:integer; v:variant; begin SetLength(Inventory,0); if ReadH(4)<1 then exit; for i:=0 to ReadH(4)-1 do begin v:=[0,1,2]; v[0]:=ReadD(i*offset+6)//0 - OID v[1]:=ReadD(i*offset+10); //1 - ItemID v[2]:=ReadQ(i*offset+18); //2 - Count SetLength(Inventory,length(Inventory)+1); Inventory[length(Inventory)-1]:=v; end; end; procedure InventoryUpdate; var i,j:integer; v:variant; begin if ReadH(2)<1 then exit; for i:=0 to ReadH(2)-1 do begin v:=[0,1,2]; v[0]:=ReadD(i*offset+6); v[1]:=ReadD(i*offset+10); v[2]:=ReadQ(i*offset+18); case ReadH(i*offset+4) of 1: begin SetLength(Inventory,length(Inventory)+1); Inventory[length(Inventory)-1]:=v; end; 2: begin j:=FindItemByParams(v,0); if j=-1 then exit; Inventory[j]:=v; end3: begin j:=FindItemByParams(v,0); if j=-1 then exit; if (j<>length(Inventory)-1) then Inventory[j]:=Inventory[length(Inventory)-1]; SetLength(Inventory,length(Inventory)-1); end; end;    end; end; function FindItemByParams(v:variant;p:byte) : integer; var i:integer; tempv:variant; begin result:=-1; for i:=0 to length(Inventory)-1 do begin tempv:=Inventory[i]; if tempv[p]=v[p] then begin result:=i; exit; end; end; end; function Say2 : boolean; var i:integer; v:variant; begin result:=true; case ReadS(2) of 'how': CreatureSay('Всего вещей '+inttostr(length(Inventory))); 'say all' : for i:=0 to length(Inventory)-1 do begin v:=Inventory[i]; CreatureSay(IntToStr(i+1)+'. OID='+inttostr(v[0])+'; ItemID='+inttostr(v[1])+'; Count='+inttostr(v[2])); end; else result:=false; end; if result then pck:=''; end; procedure CreatureSay(s:string); begin buf:=#$4A; WriteMask('ddss',[0,3,'Инфо',s]); SendToClientEx(Name); end; //основная часть скрипта //вызывается при приходе каждого пакета если скрипт включен begin if FromServer and (ConnectName=Name) then case pck[1] of #$11: ItemList; #$21: InventoryUpdate; end; if FromClient and (ConnectName=Name) then case pck[1] of #$49: Say2; end; end.
__________________
Начало.

Последний раз редактировалось supernewbie, 11.01.2011 в 16:43.
supernewbie вне форума   Ответить с цитированием
За это сообщение supernewbie нажился спасибкой от:
Старый 11.01.2011, 20:16   #34
Местный
 
Регистрация: 04.11.2009
Адрес: Где-то в жопе европы
Сообщений: 316
Сказал Спасибо: 32
Имеет 42 спасибок в 39 сообщенях
wimax пока неопределено
По умолчанию

if (v[1])=7134 then v[0]=OID
ет куда вписать то ?)))
извени конеш реально но не могу выехать у тебя идет проверка всех итемов а как зделоть из твоего скрипта на 1 ид?
wimax вне форума   Ответить с цитированием
Старый 11.01.2011, 20:37   #35
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

поиск конечно извращен, но пали че делаешь

var
v:variant;
i:integer;

begin
v:=[0,1,2];
v[1]:=7134;
i:=FindItemByParams(v,1);
Inventory[i] <--- это и будет вещь ИтемИДом 7134, если она существует.
end;

или просто добавль эту функцию

delphi Код:
function FindItemByItemID(ItemId:integer) : integer; var i:integer; tempv:variant; begin result:=-1; for i:=0 to length(Inventory)-1 do begin tempv:=Inventory[i]; if tempv[1]=ItemId then begin result:=i; exit; end; end; end;
__________________
Начало.

Последний раз редактировалось supernewbie, 11.01.2011 в 20:39.
supernewbie вне форума   Ответить с цитированием
За это сообщение supernewbie нажился спасибкой от:
Старый 11.01.2011, 21:17   #36
Местный
 
Регистрация: 04.11.2009
Адрес: Где-то в жопе европы
Сообщений: 316
Сказал Спасибо: 32
Имеет 42 спасибок в 39 сообщенях
wimax пока неопределено
По умолчанию

delphi Код:
Const Name='BloodOfEva'; offset=68; ItemID=7134; var    Timer01: TTimer;    Timer02: TTimer;    Timer03: TTimer;    Timer04: TTimer;    Inventory:array of variant;    v:variant;    i:integer;     procedure Init;    begin    buf:=#$11;    SendToServerEx(Name);    SetLength(Inventory,0);    Timer01:=TTimer.Create(nil); //выделяем памать и т.п.    Timer01.OnTimer:=@OnTimer01; //привязываем процедуру к событию    Timer01.enabled:=false; //начальное положение включен(true)/выключен(false)    Timer01.interval:=2000; //280000 интервал(в милисекундах) как часто таймер срабатывает    Timer02:=TTimer.Create(nil); //выделяем памать и т.п.    Timer02.OnTimer:=@OnTimer02; //привязываем процедуру к событию    Timer02.enabled:=false; //начальное положение включен(true)/выключен(false)    Timer02.interval:=10; //10интервал(в милисекундах) как часто таймер срабатывает    Timer03:=TTimer.Create(nil); //выделяем памать и т.п.    Timer03.OnTimer:=@OnTimer03; //привязываем процедуру к событию    Timer03.enabled:=false; //начальное положение включен(true)/выключен(false)    Timer03.interval:=3000; //310000 интервал(в милисекундах) как часто таймер срабатывает    Timer04:=TTimer.Create(nil); //выделяем памать и т.п.    Timer04.OnTimer:=@OnTimer04; //привязываем процедуру к событию    Timer04.enabled:=false; //начальное положение включен(true)/выключен(false)    Timer04.interval:=6000; //1200000 интервал(в милисекундах) как часто таймер срабатывает  end; procedure Free; begin     Timer01.free;     Timer02.free;        Timer03.free;     Timer04.free;    end; procedure ItemList; var i:integer; v:variant; begin SetLength(Inventory,0); if ReadH(4)<1 then exit; for i:=0 to ReadH(4)-1 do begin v:=[0,1,2]; v[0]:=ReadD(i*offset+6)//0 - OID v[1]:=ReadD(i*offset+10); //1 - ItemID v[2]:=ReadQ(i*offset+18); //2 - Count SetLength(Inventory,length(Inventory)+1); Inventory[length(Inventory)-1]:=v; end; end; procedure InventoryUpdate; var i,j:integer; v:variant; begin if ReadH(2)<1 then exit; for i:=0 to ReadH(2)-1 do begin v:=[0,1,2]; v[0]:=ReadD(i*offset+6); v[1]:=ReadD(i*offset+10); v[2]:=ReadQ(i*offset+18); case ReadH(i*offset+4) of 1: begin SetLength(Inventory,length(Inventory)+1); Inventory[length(Inventory)-1]:=v; end; 2: begin j:=FindItemByParams(v,0); if j=-1 then exit; Inventory[j]:=v; end3: begin j:=FindItemByParams(v,0); if j=-1 then exit; if (j<>length(Inventory)-1) then Inventory[j]:=Inventory[length(Inventory)-1]; SetLength(Inventory,length(Inventory)-1); end; end;    end; end; function FindItemByParams(v:variant;p:byte) : integer; var a:integer; tempv:variant; begin result:=-1; for a:=0 to length(Inventory)-1 do begin tempv:=Inventory[a]; if tempv[p]=v[p] then begin result:=a; exit; end; end; end; function FindItemByItemID(ItemId:integer) : integer; var i:integer; tempv:variant; begin result:=-1; for i:=0 to length(Inventory)-1 do begin tempv:=Inventory[i]; if tempv[1]=ItemID then begin result:=i; exit; end; end; end; procedure OnTimer01(Sender: TObject); begin Timer01.enabled:=False; Timer02.enabled:=Trueend; procedure OnTimer02(Sender: TObject); begin pck:=''; buf:=HStr('C6 BF 07 00 00 01 00 00 00 03 00 00 00'); SendToServerEx(Name); end; procedure OnTimer03(Sender: TObject); begin Timer03.enabled:=False; Timer02.enabled:=Falseend; procedure OnTimer04(Sender: TObject); begin Timer04.enabled:=False; begin pck:=''; buf:=HStr('B3 00 00 00 00'); SendToServerEx(Name); end; end; procedure Use; begin buf:=#$19; WriteD(i); WriteD(0); SendToServerEx(Name); end; procedure Localchek; begin  if (ReadD(2)=924) then Use; end; begin IF FromServer and( pck[1]=#$4A) and (ReadS(12)='CTF: Старт через 5 мин. для уровней 76-85.')begin Timer01.enabled:=True; Timer03.enabled:=True; Timer04.enabled:=True; end; if FromServer and (ConnectName=Name) then case pck[1] of #$11: ItemList; #$21: InventoryUpdate; #$62: Localchek; end; end.
почините кто небуть я не могу уже мозги выносит жесть(((

Последний раз редактировалось wimax, 11.01.2011 в 22:46.
wimax вне форума   Ответить с цитированием
Старый 12.01.2011, 12:41   #37
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

короче учи паскаль, задолбал
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 12.01.2011, 14:47   #38
Местный
 
Регистрация: 04.11.2009
Адрес: Где-то в жопе европы
Сообщений: 316
Сказал Спасибо: 32
Имеет 42 спасибок в 39 сообщенях
wimax пока неопределено
По умолчанию

та блин пытаюсь както учить...... проблема тока в objid вроде все правильно написал и все равно....не хочет он вписывать его... все пашыт кроме етого епаного юза скрола... он его юзает тока вот с objid 0.....что там не так я уже хз...
wimax вне форума   Ответить с цитированием
Старый 12.01.2011, 15:01   #39
Местный
 
Регистрация: 11.06.2010
Сообщений: 644
Сказал Спасибо: 119
Имеет 85 спасибок в 77 сообщенях
dyh9l пока неопределено
По умолчанию

кароче делай проще, при юзе клиентом скрола сое, запоминать его ОИД
__________________
dyh9l вне форума   Ответить с цитированием
Старый 12.01.2011, 15:02   #40
Местный
 
Регистрация: 04.11.2009
Адрес: Где-то в жопе европы
Сообщений: 316
Сказал Спасибо: 32
Имеет 42 спасибок в 39 сообщенях
wimax пока неопределено
По умолчанию

епт а как бот будет юзать сое?.....
wimax вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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