PDA

Просмотр полной версии : Скрипт Adena To Gold Bar


Norther
30.12.2010, 01:31
Запустил на пвп сервере бота чтобы фармить денежки,но столкнулся с одной проблемкой...На сервере есть скилл Adena To GoldBar.
Нужен скрипт чтобы допустим когда в инвентаре 2ккк он автоматом испольовал скилл Adena To GoldBar.
Помогите плиз кому не трудно!!!Заранее благодарен!

supernewbie
30.12.2010, 02:02
запоминаешь ид адены и её кол-во, проверяешь и если > чем надо - юзаешь скил епт

Norther
30.12.2010, 02:19
запоминаешь ид адены и её кол-во, проверяешь и если > чем надо - юзаешь скил епт

Сам смысл то я понял,а как вот скрипт реализовать?
просто с паскалем не оч знаком...

supernewbie
30.12.2010, 02:25
ну ну, дальше.
Хроники? пакеты? ид скила?

Norther
30.12.2010, 02:35
ИЛ.
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)

NLObP
30.12.2010, 02:40
Norther, лучше лог пакетов прикрепи, легче скрипт писать будет тому, кто захочет заняться этим скриптом.

Norther
30.12.2010, 02:47
Norther, лучше лог пакетов прикрепи, легче скрипт писать будет тому, кто захочет заняться этим скриптом.

каких именно?лог пакета MagicSkillUse?
я просто не шарю в этом)недавно начал осваивать Phx.

NLObP
30.12.2010, 02:49
Norther, очисть лог, проделай руками, то что ты хочешь получить в скрипте, сохрани лог пакетов и прицепи к своемц сообщению, в архиве ессно.

Norther
30.12.2010, 03:05
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

dyh9l
30.12.2010, 04:22
Посмотри какие пакеты приходят при поднятии адены и какие несут себе инфу об ее кол-ве и выложи суда)

Nickers
30.12.2010, 10:04
Гдет ж был скрипт под ПХ через создание базы инвентаря...
На форуме поиск не помог...

Вот он (Из ПХ своего взял):
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
да нахрен тут массив то, если одна адена нужна)

Nickers
30.12.2010, 13:58
Хз)) Можно облегчить)) Но мне влом))
Прост процедуры Создания и Обновления ставим с условием занесения "Если 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 офсет для ИЛа

Nickers
30.12.2010, 14:26
Ну дык я примерно это и описывал)) Только у меня не переменные а Массив переменных Adena[1] это ID, 2 - OID, 3- Count)) Офф сет у меня прост через Inc'и =)

Массив то как раз и не двумерный, потому что адена тока одна))
Весь массив принадлежит адене и ее хар-кам...

supernewbie
30.12.2010, 14:49
какие тут впринципе нужны характеристики кроме количества, хм

dyh9l
31.12.2010, 02:40
Nickers, я бы с ним не спорил :D

Nickers
31.12.2010, 16:05
Ну дык я примерно это и описывал)) Только у меня не переменные а Массив переменных Adena[1] это ID, 2 - OID, 3- Count)) Офф сет у меня прост через Inc'и =)
Я и не спорил, что мой вариант лучше или что-то типо того...

нече не понял о чем ты
Прост объяснил то, как у меня было (В голове, а он не понял)
Прост и так нормально...
(Мне нравятся массивы =Р и когда подробная инфа тоже =РРРР)

Roman32
20.01.2012, 18:47
Да тут всё намного проще)заходиш в пх жмёш вкладку просмотр,юзаеш этот скил В Л2и он появиться логе в пх там будет requestmagicskilluse.жмёш правой кнопкой по нему будет отправить в посылки,потом во вкладке посылка"жмёш на часики и чтоб отправлял каждые 5 ссек и готово)должен понять что я написал хД