Просмотр полной версии : Скрипт Adena To Gold Bar
Запустил на пвп сервере бота чтобы фармить денежки,но столкнулся с одной проблемкой...На сервере есть скилл Adena To GoldBar.
Нужен скрипт чтобы допустим когда в инвентаре 2ккк он автоматом испольовал скилл Adena To GoldBar.
Помогите плиз кому не трудно!!!Заранее благодарен!
supernewbie
30.12.2010, 02:02
запоминаешь ид адены и её кол-во, проверяешь и если > чем надо - юзаешь скил епт
запоминаешь ид адены и её кол-во, проверяешь и если > чем надо - юзаешь скил епт
Сам смысл то я понял,а как вот скрипт реализовать?
просто с паскалем не оч знаком...
supernewbie
30.12.2010, 02:25
ну ну, дальше.
Хроники? пакеты? ид скила?
ИЛ.
ID Скилла - 10000.
Добавлено через 35 секунд
ИЛ.
ID Скилла - 10000.
Type: 0x48 (MagicSkillUse)
Size: 41+2
Arrival time: 00:32:04:796
0002 d charID: 1212223739 (0x484110FB)
0006 d targetID: 1212223739 (0x484110FB)
0010 d skillID: Unknown Skill ID:10000(2710)
0014 d skillLvl: 1 (0x00000001)
0018 d hitTime: 1000 (0x000003E8)
0022 d reuseDelay: 5000 (0x00001388)
0026 d X: 146373 (0x00023BC5)
0030 d Y: -57576 (0xFFFF1F18)
0034 d Z: -2960 (0xFFFFF470)
0038 h count: 0 (0x0000)
Norther, лучше лог пакетов прикрепи, легче скрипт писать будет тому, кто захочет заняться этим скриптом.
Norther, лучше лог пакетов прикрепи, легче скрипт писать будет тому, кто захочет заняться этим скриптом.
каких именно?лог пакета MagicSkillUse?
я просто не шарю в этом)недавно начал осваивать Phx.
Norther, очисть лог, проделай руками, то что ты хочешь получить в скрипте, сохрани лог пакетов и прицепи к своемц сообщению, в архиве ессно.
Norther, очисть лог, проделай руками, то что ты хочешь получить в скрипте, сохрани лог пакетов и прицепи к своемц сообщению, в архиве ессно.
Мне нужно всего лишь использовать скилл при достижении определённого колличества адены - 2ккк.
Тоесть:
Если адены больше чем 2ккк,нужно использовать скилл Adena To Goldbar.
Пакет MagicSkillUse(После изпользования скилла Adena To Goldbar) - 48 85 CA 50 48 85 CA 50 48 10 27 00 00 01 00 00 00 E8 03 00 00 00 00 00 00 C5 3B 02 00 18 1F FF FF 70 F4 FF FF 00 00 00 00
Посмотри какие пакеты приходят при поднятии адены и какие несут себе инфу об ее кол-ве и выложи суда)
Гдет ж был скрипт под ПХ через создание базы инвентаря...
На форуме поиск не помог...
Вот он (Из ПХ своего взял):
Const
IDofItem='58';
Name='Nickers';
Max=80;
var
ItemBase : array[1..4,1..max] of integer; //ItemOID, ItemID, Kol-vo, ItemLvl
timer:TTimer; IDindex:boolean;
p,p1,p2,x,y,z,i,f:integer;
procedure Init; //Вызывается при включении скрипта
begin
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimer;
timer.enabled:=false;
timer.interval:=1000; //время задержки
buf:=#$0F;
SendToServerEx(Name);
end;
procedure CreateItemBase;
var
i, j, ListCount: integer;
begin
for i:=1 to max do begin
//очищаем масив
ItemBase[1,i]:=0; //OID
ItemBase[2,i]:=0; //ID
ItemBase[3,i]:=0; //kol-vo
ItemBase[4,i]:=0; //lvl
end;
j:=4;
ListCount:=ReadH(j);
j:=8;
for i:=1 to ListCount do begin
itemBase[1,i]:=ReadD(j); //OID
itemBase[2,i]:=ReadD(j); //ItemID
itemBase[3,i]:=ReadD(j); //кол-во
inc(j,10);
itemBase[4,i]:=ReadH(j);//EnchantLevel
inc(j,12);
end;
end;
//......................................
//************************************************** ****************************
procedure InventoryUpdate; //пакет 27, обновляет базу ObjectID по ItemID
var
i, ii, j, OID, ID, Count, ListCount, UpdType, lvl: integer;
add : boolean;
begin
add:=false;
ListCount:=ReadH(2);
j:=4;
for ii:=1 to ListCount do begin
add:=false; //Ели додумался изза чего не добавляет сразу несколько предметов в базу
UpdType:=ReadH(j);
ReadH(j); //ItemType1
OID:=ReadD(j); //ObjectID
ID:=ReadD(j); //ItemID
Count:=ReadD(j); //кол-во
inc(j,10);
lvl:=ReadH(j);
case UpdType of
1: begin
for i:=1 to max do begin
if (ItemBase[1,i]=0) and (add=false) then begin
ItemBase[1,i]:=OID;
ItemBase[2,i]:=ID;
ItemBase[3,i]:=Count;
ItemBase[4,i]:=lvl;
add:=true;
end;
end;
end;
2: begin
for i:=1 to max do begin
if ItemBase[1,i]=OID then begin
ItemBase[3,i]:=Count;
ItemBase[4,i]:=lvl;
end;
end;
end;
3: begin
for i:=1 to max do begin
if ItemBase[1,i]=OID then begin
ItemBase[1,i]:=0;
ItemBase[2,i]:=0;
ItemBase[3,i]:=0;
ItemBase[4,i]:=0;
end;
end;
end;
end;
inc(j,10);
end;
end;
function GetItem(ID, FieldIn, FieldOut : integer) : integer;
var
i : integer;
begin
for i:=1 to max do
if ItemBase[FieldIn,i]=ID then begin
result:=ItemBase[FieldOut,i]; // itemOID
exit;
end;
result:=0;
end;
procedure OnTimer(Sender: TObject);
begin
if GetItem(57,2,3)>2000000000 then //57 - ID Аденки...
begin
buf:= Сюда пакетег) (На Юз скилла)
SendToServer;
end;
end;
begin
if FromServer and (ConnectName=Name) then
case pck[1] of
//......................................
//Пакет ItemList
#$1B: CreateItemBase; //создание базы предметов
//......................................
#$27: InventoryUpdate; //Обновление базы
end; //end от case!!!
end.
Добавлено через 24 минуты
Вроде так... Ток нужен пакет на юз скилла Клиент->Сервер Чтобы отправную часть доделать... (Процедура ОнТаймер)
supernewbie
30.12.2010, 11:06
да нахрен тут массив то, если одна адена нужна)
Хз)) Можно облегчить)) Но мне влом))
Прост процедуры Создания и Обновления ставим с условием занесения "Если ID=57"(Если кусок пакета принадлежит Аденке) и чтоб заносилось не в Матрицу, а просто в массив из 2х-3х переменных(Ну там ID, OID и Count)... Я могу сделать, но влом))
Перебор i Через For или Until прыжок = отступу байтов (От ID 1го итема в пакете до ID 2го и т.д.) И в цикле проверка на if ReadD(i)==ID, Если да то заносим данные
//Пример Записи в 1о мерный массив:
//Если Нашли Адену, считываем все Данные с нее... j вычисляется из i (-4 наверн)...
Adena[1]:=Read(j);
inc(j,4);
Adena[2]:=Read(j);
inc(j,4);
Adena[3]:=Read(j);
supernewbie
30.12.2010, 14:11
нече не понял о чем ты, нормальные люди делают так:
for i:=0 to ReadH(4)-1 do
if ReadD(i*offset+12)=57 then
begin
//OIDadena:=ReadD(i*offset+8);
Countadena:=ReadD(i*offset+16);
exit;
end;
где offset - размер блока для вещи, для ил щас скажу скока...
36 офсет для ИЛа
Ну дык я примерно это и описывал)) Только у меня не переменные а Массив переменных Adena[1] это ID, 2 - OID, 3- Count)) Офф сет у меня прост через Inc'и =)
Массив то как раз и не двумерный, потому что адена тока одна))
Весь массив принадлежит адене и ее хар-кам...
supernewbie
30.12.2010, 14:49
какие тут впринципе нужны характеристики кроме количества, хм
Nickers, я бы с ним не спорил :D
Ну дык я примерно это и описывал)) Только у меня не переменные а Массив переменных Adena[1] это ID, 2 - OID, 3- Count)) Офф сет у меня прост через Inc'и =)
Я и не спорил, что мой вариант лучше или что-то типо того...
нече не понял о чем ты
Прост объяснил то, как у меня было (В голове, а он не понял)
Прост и так нормально...
(Мне нравятся массивы =Р и когда подробная инфа тоже =РРРР)
Да тут всё намного проще)заходиш в пх жмёш вкладку просмотр,юзаеш этот скил В Л2и он появиться логе в пх там будет requestmagicskilluse.жмёш правой кнопкой по нему будет отправить в посылки,потом во вкладке посылка"жмёш на часики и чтоб отправлял каждые 5 ссек и готово)должен понять что я написал хД
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot