Цитата:
Сообщение от NLObP
Цитата:
Сообщение от PunkRediska
Я шас папробывал написать скриптик каторый сразу падымал бы дроп упавший с моба,но сталкнулся с такой праблемай что он падымает тока 1'ну вешь из всех дропнувшыхся.Умные люди падскажите как ето можно исправить?:)Скриптик мой выгледит так :
var
begin
if FromServer and (pck[1]=#$0C)
then begin
buf:=#$04+pck[6]+pck[7]+pck[8]+pck[9]+pck[14]+pck[15]+pck[16]+pck[17]+pck[18]+pck[19]+pck[20]+pck[21]+pck[22]+pck[23]+pck[24]+pck[25]+#$00;
SendToServer;
end;
end.
^этот^ cкрипт прост до безабразия но вобшемто сложнее и не надо:).Кста если гдето струтура пакета отлечяется от вашей,то ето бырее всего патамушто скрипт под явавскую интерлюдию.
|
Как я сделал в ботике, выше по теме. В основном цикле создаем базу по выпавшим вещам:
Код:
//****************************************************************************
//DropItem - выпала вещь
if FromServer and (ConnectName=Name) and (pck[1]=#$0C) then begin
//чужие вещи не берем
if (Attacker=ReadD(2)) then begin
timer1.enabled:=false; //выключаем бота
//перебираем базу, ищем свободную ячейку в ней и добавляем
for i:=1 to max do begin
if (ItemBase[1,i]=0) then begin
//запоминаем в свободную ячейку
ItemBase[1,i]:=ReadD(6); //ObjectID
ItemBase[2,i]:=ReadD(14); //x
ItemBase[3,i]:=ReadD(18); //y
ItemBase[4,i]:=ReadD(22); //z
inc(itm);
NeedBackup:=true;
say('Добавили данные по предмету');
break;
end;
end;
end;
say('ColvoItm='+inttostr(itm));
end;
Подпрограмма сбора вещей. Здесь только просим поднять, на практике вещь может не взяться, недоступна к примеру и т.д.:
Код:
//******************************************************************************
procedure ReqGetItem;
begin
if itm=0 then begin
timer1.enabled:=true; //включаем отсчет времени
needbackup:=false;
exit;
end;
timer1.enabled:=false; //выключаем отсчет времени
//перебираем базу
for i:=1 to max do begin
//если нашли, то обнуляем
if (ItemBase[1,i]<>0) then begin //ObjectID
say('ReqGetItem');
//даем команду подобрать вещь
buf:=#$04;
WriteD(ItemBase[1,i]);
WriteD(ItemBase[2,i]);
WriteD(ItemBase[3,i]);
WriteD(ItemBase[4,i]);
WriteH(00);
SendToServerEx(Name);
end;
end;
end;
В основном цикле проверяем, что вещи реально подняты:
Код:
//****************************************************************************
//определяем реальность поднятия вещи, пакет GetItem
if FromServer and (ConnectName=Name) and (pck[1]=#$0D) then begin
//перебираем базу
for i:=1 to max do begin
//если нашли, то обнуляем
if (ItemBase[1,i]=ReadD(6)) then begin //ObjectID
ItemBase[1,i]:=0; //x
ItemBase[2,i]:=0; //x
ItemBase[3,i]:=0; //y
ItemBase[4,i]:=0; //z
dec(itm);
say('Удаляем данные по предмету');
end;
end;
if itm=0 then begin
needbackup:=false;
timer1.enabled:=true;
end;
say('ColvoItm='+inttostr(itm));
end;
|
спс что выложил ,тока ты не вылажил первую чясть где аписуются переменные и я чёто непайму Attacker-это PlayerID?:)
Добавлено спустя 29 минут 53 секунды:
всё нашол часть с переменными:) чюток подправил под себя и всё пашет СПС тебе NLObP !!
Добавлено спустя 4 часа 21 минуту 2 секунды:
Чёто у меня сёдня день какойто неудачный,скрипты не пашут ваше....Пришол от друга накалякал такой скрипточег ->
\\суть скрипта:если паявился чест то юзать анлок
var i:string;
begin
if FromServer and (pck[1]=#$16) and (pck[6]+pck[7]+pck[8]+pck[9]=#$9f+#$89+#$0f+#$00) then begin \\условия ,pck-npcinfo
buf:=#$04+hstr('(readd(2))+(readd(14))+(readd(18)) +(readd(24))') + #$00; \\таргет
SendToServer;
buf:=hstr('2F 1B 00 00 00 00 00 00 00 00 '); \\юзать анлок
SendToServer;
end;
end.
Вроде просто да безабразия а сёравно не пашет:( может ктонибудь абьеснить пачему?:)