Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 07.08.2008, 17:13   #1
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от bYr Посмотреть сообщение
можете выложить полный скрипт с примером на скупку.
Вот здесь пример на продажу. По аналогии можно в покупку переделать.

Добавлено через 4 минуты
Цитата:
Сообщение от Shadow Посмотреть сообщение
В принципе это нада бы сделать, но у меня все проще. Мой чар стоит как раз между котами, и только поворачивается при ретаргетинге. Так что передвижения не нужны. Главное таргет кидать.
Для таргета нужно знать ObjectId продавцов. Вот их отловить и есть небольшая проблема. В рыбалке есть, как отлавливать фишерманов.
delphi Код:
//***************************************************************       //16=NpcInfo:d(ObjectID)d(NpcTypeID)d(IsAttackable)d(X)d(Y)d(Z)d(Heading)       //d(d)d(Maspd)d(Paspd)d(runSpd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRSpd)       //d(flWSpd)d(FlyRSpd)d(FlyWSpd)f(ProperMul)f(Paspd)f(CollisRadius)       //f(CollisHeight)d(RHand)d(d)d(LHand)b(nameabove)b(isRun)b(isInFight)       //b(isAlikeDead)b(isSummoned)s(Name)s(Title)d(d)d(d)d(karma)d(abnEffect)       //d(d)d(d)d(d)d(d)b(c)b(Team)f(collisRadius)f(collisHeight)d(d)       #$16: begin         msg.Lines.Add('S>Пакет NpcInfo #$16'+inttostr(ReadD(2)));         //        OID       ID         AppendNpc(ReadD(2), ReadD(6)); //добавляем в базу данных         if (FishermanID=ReadD(6)-kID) then begin           EditFishermanOID.text:=inttostr(ReadD(2));           FishermanOID:=strtoint(EditFishermanOID.text);           if java then begin             //java             getbuylist:='npc_'+inttostr(FishermanOID)+'_Buy 411';             getselllist:='npc_'+inttostr(FishermanOID)+'_Sell';             getmultisell:='npc_'+inttostr(FishermanOID)+'_multisell 009';           end;         end;       end;

потом можно выбирать его
delphi Код:
//*************************************************************** //04=Action:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ)b(ShiftFlag) procedure Target(ObjectID: Integer); begin   buf:=#$04;   WriteD(ObjectID);   WriteD(MyX);   WriteD(MyY);   WriteD(MyZ);   WriteC(00);   SendToServerEx(Name); end; //...................................... //*************************************************************** procedure TargetAttacker(Attacker: Integer); begin   msg.Lines.Add('ObjectID='+IntToStr(Attacker)+' Player='+IntToStr(MyOID));   fishin.enabled:=false;   Target(ObjectID);   delay(800);   Target(ObjectID);   delay(800); end; //......................................  

Последний раз редактировалось NLObP, 07.08.2008 в 18:02. Причина: Добавлено сообщение
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 3 спасибками от:
Старый 07.08.2008, 17:49   #2
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
Сообщение

Цитата:
Сообщение от NLObP Посмотреть сообщение
Для таргета нужно знать ObjectId продавцов. Вот их отловить и есть небольшая проблема. В рыбалке есть, как отлавливать фишерманов.

delphi Код:
//*************************************************************** //04=Action:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ)b(ShiftFlag) procedure Target(Attacker: Integer); begin   buf:=#$04;   WriteD(Attacker);   WriteD(MyX);   WriteD(MyY);   WriteD(MyZ);   WriteC(00);   SendToServerEx(Name); end; //...................................... //*************************************************************** procedure TargetAttacker(Attacker: Integer); begin   msg.Lines.Add('Attacker='+IntToStr(Attacker)+' Player='+IntToStr(MyOID));   fishin.enabled:=false;   Target(Attacker);   delay(800);   Target(Attacker);   delay(800); end; //......................................  
Смотрел пакеты, ОбджектИД и координаты продавцов известны. Выше в куске скрипта в процедуре Roy. Что за переменные MyX, и тд? Я так понимаю это координаты моего чара. Что за переменная Attacker, откуда она берется?
__________________
Shadows anywhere...
Shadow вне форума   Ответить с цитированием
Старый 07.08.2008, 18:21   #3
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от Shadow Посмотреть сообщение
Смотрел пакеты, ОбджектИД и координаты продавцов известны. Выше в куске скрипта в процедуре Roy. Что за переменные MyX, и тд? Я так понимаю это координаты моего чара. Что за переменная Attacker, откуда она берется?
MyX,MyY,MyZ - координаты чара. Сервер проверяет расстояние и если ты далеко, то отвергает запрос.
Attacker - ObjectId. Осталось так исторически из скриптов бота. Поменял в выше отписанном сообщении.

Добавлено через 13 минут
Цитата:
Сообщение от Shadow Посмотреть сообщение
В каком месте скрипта правильно всетаки поставить закупку заточек?
И еще, как лучше сделать вызов процедуры на закупку, чтобы из переменных подставлялись значения итема, чтобы оперативно изменять что покупать. Типа - Закупка(СкроллЫ);
а в СкроллЫ(СкроллА,Б,С) прописано listID, EntryId и Count этих свитков? А то я второй день в этих скриптах ковыряюсь, уже голова набекрень =)
delphi Код:
//*************************************************************** //s10=SellList:d(Money)h(ListID)w(ListCount)w(ItemType1)h(ObjectID)i(ItemID)d(Count)w(ItemType2)w(h)d(ItemBodyPart)w(EnchantLevel)w(h)w(h)d(refPrice) //c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectID)i(ItemID)d(Count) //продаем по одному типу procedure RequestSellItem(ItemOID,ItemID,Count:integer); begin   if ReadyToSell then begin     msg.Lines.Add('Продадим предмет OID:'+inttostr(ItemOID)+' ID:'+inttostr(ItemID)+' в кол-ве:'+inttostr(count));     buf:=#$1E;     WriteD(ListID);     WriteD(1);     WriteD(ItemOID);     WriteD(ItemID);     WriteD(Count);     SendToServerEx(Name);   end; end; //...................................... //*************************************************************** //c1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d(Count) //купим по одному типу procedure RequestBuyItem(ItemID,Count:integer); begin   if ReadyToBuy then begin     msg.Lines.Add('Купим предмет ID:'+inttostr(ItemID)+' в кол-ве:'+inttostr(count));     buf:=#$1F;     WriteD(ListID);     WriteD(1);     WriteD(ItemID);     WriteD(Count);     SendToServerEx(Name);   end; end; //...................................... //*************************************************************** //cA7=RequestMultiSellChoose:h(ListID)d(EntryID)d(Amount) //продаем по одному типу procedure RequestMultiSellItem(ListId,EntryID,Count:integer); begin   msg.Lines.Add('Обменяем предмет ListID:'+inttostr(ListID)+' EntryID:'+inttostr(EntryID)+' в кол-ве:'+inttostr(count));   if ReadyToMultiSell then begin     buf:=#$A7;     WriteD(ListID);     WriteD(EntryId);     WriteD(Count);     SendToServerEx(Name);   end; end; //...................................... procedure OnTimer(Sender: TObject); begin   EditItemVal.text:=inttostr(sumitem(ItemID));   EditScrollVal.text:=inttostr(sumitem(ScrollID));   if (CurEnchLvl>=strtoint(Edit1.Text)) then begin     msg.Lines.Add('Нечего точить! Прервано!');     timer.enabled:=false;     exit;   end;   if (sumitem(ItemID)<=1) then begin //  if (sumitem(ItemID)<=0) then begin //если надо точить одну вещь     msg.Lines.Add('Прервано!');     timer.enabled:=false;     exit;   end;   ScrollOID:=GetItem(ScrollID,0);   if ScrollOID=0 then begin     msg.Lines.Add('Нет заточки! Прервано!');     timer.enabled:=false;     exit;   end;   UseItem(ScrollOID);   msg.Lines.Add('Задействовали скролл ScrollID='+IntToStr(scrollID)+' ScrollOID='+IntToStr(ScrollOID));   ready:=true; //готовы затачивать end; //......................................  

В процедуре OnTimer вместо прерывания работы вставь вызовы процедур закупки. Потом снова таймер запускай, для продолжения заточки.


PS: Вы свои скрипты сюда выкладывайте, когда отладите. Я их в первый пост выложу.

Последний раз редактировалось NLObP, 07.08.2008 в 18:21. Причина: Добавлено сообщение
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 2 спасибками от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 00:32.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!