PDA

Просмотр полной версии : [B]l2phx вопрос[/B]


Lafisarrr
25.11.2009, 23:08
как узнать айди пухи и заточки мне для этого скрипта
//by creaDO
//Скрипт заточки под Камаель
//Автоматизация заточки предметов до необходимого уровня by NLObP
//Адаптированая под Gracia by CreaDo

//Этот скрипт помогает в рутине, когда разрешено пользователям 100% точить до
//большой величины, скажем до +200, ручками то замучаешься точить. :)

//Затачиваем по очереди все предметы с Weapon ID пока не переломаем или не заточим

//Необходимо затариться оружием, заточками и валерьянкой
//Открываем инвентарь для инициализации скрипта
//Социальное действие YES начать
//Социальное действие NO остановиться

//Enjoy!

{Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.}

//************************************************** ****************************
const
Name='PKPKPKPKPKPKPKPK';
Scroll=29712; // 959 - ItemID Scroll Enchant Weapon (Grade S)
Weapon=27264; // 9866 - ItemID Dinasty dager focus (Grade S80)
MaxEnchLvl=10; //max уровень заточки
max=80; //max количество предметов в базе
var
// WpnObjID: array[1..maxwpn,1..maxwpn] of integer; //Weapon ObjID
WpnBase: array[1..2,1..max] of integer; //Weapon ObjID,lvl
ScrlBase: integer; //Scroll ObjID
add: boolean; //прошла заточка?
timer: TTimer;
CurEnchLvl, ColvoWpn, ColvoScrl, CurWpn, CurScrl: integer;
//************************************************** ****************************
procedure Init; //Вызывается при включении скрипта
var
i:integer;
begin
//Enchant:=false;
CurEnchLvl:=0;
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimerHP;
timer.enabled:=false;
timer.interval:=4000; //время задержки
Say('Для инициализации скрипта, откройте инвентарь');
end;
//************************************************** ****************************
procedure Free; //Вызывается при выключении скрипта
begin
WpnBase:=nil;
ScrlBase:=nil;
timer.Free;
end;
//************************************************** ****************************
procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(Name);
WriteS(msg);
SendToClientEx(Name);
end;
//************************************************** ****************************
procedure CreateItemBase; //пакет 1B, Создает базу ObjectID по ItemID
var
i, ss, sc, ww, j, ObjID, ItemID, lvl, ListCount: integer;
begin
ss:=1; //индекс в массиве скроллов
ww:=1; //индекс в массиве предметов
j:=4; //смещение для ListCount
ListCount:=ReadH(j); //количество итемов не должно превышать max!
if ListCount>max then ListCount:=max;
j:=8; //смещение для ObjectID
//Пробегаем по Инвентарю и сохраняем ObjectID соответствующие необходимым ItemID
for i:=1 to ListCount do begin
ObjID:=ReadD(j); //ObjectID
ItemID:=ReadD(j); //ItemID
j:=j+4;
sc:=readD(j);
j:=j+10;
Lvl:=ReadH(j); //Level
say(inttostr(lvl));
case ItemID of
scroll: begin
ss:=sc;
ScrlBase:=ObjID;
// Say('ColvoScrl='+IntToStr(ss));
end;
weapon: begin
WpnBase[1,ww]:=ObjID;
WpnBase[2,ww]:=lvl;
ww:=ww+1;
// Say('ColvoWpn='+IntToStr(ww));
end;
end;
j:=j+44 //Gracia
// j:=j+2; //для С4
// j:=j+10; //для Интерлюдии
end;
ColvoWpn:=ww-1;
ColvoScrl:=ss;
Say('>ColvoWpn='+IntToStr(ColvoWpn)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl));
end;
//************************************************** ****************************
procedure UpdateItemBase; //пакет 27, Создает базу ObjectID по ItemID
var
i, ii, j, ss, sc, ww, ObjID, ItemID, Lvl, ListCount, UpdType: integer;
begin
ListCount:=ReadH(2); //количество итемов
//Пробегаем по Инвентарю и сохраняем пары ObjectID - Lvl
j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
// Say('Апдейт базы!');
for i:=1 to ListCount do begin
UpdType:=ReadH(j);
j:=j+2;
ObjID:=ReadD(j); //ObjectID
ItemID:=ReadD(j); //ItemID
j:=j+4;
sc:=readD(j);
j:=j+10;
Lvl:=ReadH(j); //Level
// Say('Предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID));
case UpdType of
1:case ItemID of
weapon: begin
ColvoWpn:=ColvoWpn+1;
//Say('Добавили предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(weapon));
for ii:=1 to max do
if WpnBase[1,ii]=0 then begin WpnBase[1,ii]:=ObjID; WpnBase[2,ii]:=lvl; end;
end;
scroll: begin ss:=ss+1;
if ScrlBase=0 then ScrlBase:=ObjID;
end;
end;
2:case ItemID of
weapon:
for ii:=1 to max do
if WpnBase[1,ii]=ObjID then begin WpnBase[2,ii]:=lvl; say(inttostr(WpnBase[2,ii])); end;
scroll: sc:=ss;
//Say('Внимание! Изменения в скролле!?');
end;
//удален
3:case ItemID of
weapon: begin
ColvoWpn:=ColvoWpn-1;
for ii:=1 to max do
if WpnBase[1,ii]=ObjID then begin WpnBase[1,ii]:=0; WpnBase[2,ii]:=0; end;
//Say('Удаляем предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(weapon));
end;
scroll: begin
ColvoScrl:=ColvoScrl-1;
for ii:=1 to max do
if ScrlBase=ObjID then ScrlBase:=0;
//Say('Удаляем скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(scroll));
end;
end;
end;
j:=j+44;
// j:=j+2; //для С4
// j:=j+10; //для Интерлюдии
end;
// Say('>>ColvoWpn='+IntToStr(ColvoWpn)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl));
end;
//************************************************** ****************************
function GetNextWeapon: integer; //Выдает ObjID предмета, если не найден в базе, выдает -1,
//достигли макс уровня заточки -2, подбираем мин текущий уровень заточки -3
var
i: integer;
begin
Result:=-1;
if CurEnchLvl>=MaxEnchLvl then begin
Result:=-2;
exit;
end;
for i:=1 to max do begin
//находим первый подходящий предмет
if (WpnBase[1,i]<>0) and (WpnBase[2,i]<=CurEnchLvl) then begin
Result:=WpnBase[1,i];
exit;
end;
end;
CurEnchLvl:=CurEnchLvl+1;
Result:=-3;
end;
//************************************************** ****************************
function GetNextScroll: integer; //Выдает ObjID скролла, если не найден в базе, выдает -1
var
i: integer;
begin
Result:=-1;
for i:=1 to max do begin
//находим первый подходящий предмет
if (ScrlBase<>0) then begin
Result:=ScrlBase;
exit;
end;
end;
end;
//************************************************** ****************************
procedure UseItem(ObjectID: integer);
begin
buf:=#$19;
WriteD(ObjectID);
WriteD(0);
SendToServerEx(Name);
end;
//************************************************** ****************************
procedure RequesEnchantItem(ObjectID: integer);
begin
buf:=#$5F;
WriteD(ObjectID);
SendToServerEx(Name);
end;
//************************************************** ****************************
procedure OnTimerHP(Sender: TObject);
var
wpn, scrl:integer;
begin
if ColvoScrl=0 then begin
Say('Кончились скроллы! Прервано!');
timer.enabled:=false;
exit;
end;
if ColvoWpn=1 then begin
Say('Остался последний предмет! Прервано!');
timer.enabled:=false;
exit;
end;
Scrl:=GetNextScroll;
if scrl=-1 then begin
Say('Нет такой заточки! Прервано!');
timer.enabled:=false;
exit;
end;
Wpn:=GetNextWeapon;
case wpn of
-1: begin
Say('Нет такого предмета! Прервано!');
timer.enabled:=false;
exit;
end;
-2: begin
Say('Достигли максимальный уровень заточки! Прервано!');
timer.enabled:=false;
exit;
end;
-3: begin
//Say('Подбираем текущий уровень заточки!');
timer.enabled:=true;
exit;
end;
end;
//************************************************
UseItem(Scrl);
RequesEnchantItem(Wpn);
//************************************************
Say('Заточили предмет! Weapon='+IntToStr(Wpn));
end;
//************************************************** ****************************
// вызывается при приходе каждого пакета, если скрипт включен
//************************************************** ****************************
begin
//************************************************** **************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//************************************************** **************************
//социальное действие yes для начало точки
if FromClient and (ConnectName=Name) and (pck=HStr('34 06 00 00 00')) then begin
CurEnchLvl:=0;
Say('Команда Старт!!!');
timer.enabled:=true;
end;
//************************************************** **************************
//социальное действие no для начало точки
if FromClient and (ConnectName=Name) and (pck=HStr('34 05 00 00 00')) then begin
Say('Команда Стоп!!!');
timer.enabled:=false;
end;
//************************************************** **************************
//ItemList
if FromServer and (ConnectName=Name) and (pck[1]=#$11) then CreateItemBase; //создание базы предметов
// if (ColvoWpn=0) or (ColvoScrl=0) then exit; //если нет базы итемов, скрипт дальше не пустит
//************************************************** **************************
//если удалились предметы, стираем в базе предметов пары ObjectID - ItemID
if FromServer and (ConnectName=Name) and (pck[1]=#$21) then UpdateItemBase; //Обновление базы, если принят пакет на удаление предмета
end.

таму кто поможет жму бальшое спасибо

GraNIT
25.11.2009, 23:20
кинь на землю, положи в ВХ, одень/сними её...там будет ID вещи.

Lafisarrr
25.11.2009, 23:25
кинь на землю, положи в ВХ, одень/сними её...там будет ID вещи.
где там ? в скрипте или в хлапексев пакете, если в хлапексе то там зашифровано как расшифровать ?

Клерик
26.11.2009, 00:04
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Устнови все что отмечено на скрине в своем пакет хаке, все как должно быть для твоего сервера, если все же пакеты не дешифрованы, тогда ты никак не узнаешь айди, и никакой скрипт не поможет.

GraNIT
26.11.2009, 16:33
В самой проге розшифровываеться пакет, если не понял - кидай пакет сюда.

Fix
27.11.2009, 06:28
кажется он понял)

xnobx
27.11.2009, 12:31
Очищаеш пакет лист ---одеваеш пушку или шмотку --появится пакет useitem --в нём смотри object id вот и всё!!

GraNIT
28.11.2009, 00:15
Очищаеш пакет лист ---одеваеш пушку или шмотку --появится пакет useitem --в нём смотри object id вот и всё!!
ObjID не покатит , надо ItemID, имхо обжект меняеться, ну ещё как вариант ему зайти в otemsID.ini в l2phx и найти нужную вещь - там будет написан её ID.