да что та есть похожие) но увы ...)
так что мне некто не может помоч?
В чем помоч-то?
2ой пост на етой странице
Подробно напиши что тебе надо, по пунктам. И названия пакетов пиши по английски. Что за пакет выложил, это ведь не UseItem? Что напишу скрипт не обещаю, мне может не интересно будет.
Вот что мне нада сделать
1 Отослать пакет на сервер (бай айтем)
2 Провести инвентаризацию
3 Найти все айтемы с ИД 4235
4 Добавить ети айтемы в пакет продажи
Формируем пакет на продажу нескольких предметов с одинаковым ItemId, вроде визуально все правильно. Продавец в таргете. Послали пакет. Ничего не продается. Почему? Почему если одно и тоже несколько раз в пакете написать, то продается один предмет из посланного пакета?! В чем загвоздка?
Создаем пакет продажи вещей:
Код:
//******************************************************************************
//1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectID)i(ItemID)d(Count)
procedure RequestSellItem;
var
i, j : integer;
begin
say('Продадим '+inttostr(ColvoItm2)+' предмет(а) ItemID='+inttostr(Item));
buf:=#$1E;
WriteD(0);
WriteD(ColvoItm2);
for i:=1 to ColvoItm2 do begin
WriteD(ItemBase2[1,i]);
WriteD(ItemBase2[2,i]);
WriteD(ItemBase2[3,i]);
end;
say(buf='+strtohex(buf));
SendToServerEx(Name);
end;
Советую добавить в скрипт такой вот кусок:
if FromServer and (ConnectName=CharName) and (Timer.enabled=true) and (ManorPCK<>'') and (pck[1]=#$27) then
begin
ManorPCK:='';
Timer.enabled:=false;
end;
Это чтобы не запалиться, когда скрипт будет тыкаться сдать то, чего уже и в инвентаре то нету...
Типо если приходит пакет о том чот содержимое инвентаря изменилось => манор сдался
Я шас папробывал написать скриптик каторый сразу падымал бы дроп упавший с моба,но сталкнулся с такой праблемай что он падымает тока 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крипт прост до безабразия но вобшемто сложнее и не надо:).Кста если гдето струтура пакета отлечяется от вашей,то ето бырее всего патамушто скрипт под явавскую интерлюдию.
Я шас папробывал написать скриптик каторый сразу падымал бы дроп упавший с моба,но сталкнулся с такой праблемай что он падымает тока 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;
Я шас папробывал написать скриптик каторый сразу падымал бы дроп упавший с моба,но сталкнулся с такой праблемай что он падымает тока 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.
Вроде просто да безабразия а сёравно не пашет:( может ктонибудь абьеснить пачему?:)
Чёто у меня сёдня день какойто неудачный,скрипты не пашут ваше....Пришол от друга накалякал такой скрипточег ->
\\суть скрипта:если паявился чест то юзать анлок
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.
Вроде просто да безабразия а сёравно не пашет:( может ктонибудь абьеснить пачему?:)