Forum www.l2walkerpolska.fora.pl Strona Główna www.l2walkerpolska.fora.pl
L2Walker, Lineage II, L2.Net, L2Divine, L2Superman,
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

sniffer do targu

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.l2walkerpolska.fora.pl Strona Główna -> L2.Net Scenariusze (scrypting)
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
akazel




Dołączył: 04 Wrz 2010
Posty: 24
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Sob 0:00, 12 Mar 2011    Temat postu: sniffer do targu

Chce napisac bota ktory przeglada targ i zapamietuje ceny itemow. Cos jak l2wh sniffer na priva. Nie znam samego pakietu z lista itemow private store. Chyba to to ale pewien nie jestem. O ile dobrze rozumiem wystarczy łapać pakiety z kodem 0xbe, ale zanim zaczne prosze o rady albo jakieś przytakniecie ze dobrze myśle. Może ktoś pisał coś podobnego? Gotowce milewidziane.

Kod:

public class PrivateStoreListBuy extends L2GameServerPacket
{
   //   private static final String _S__D1_PRIVATEBUYLISTBUY = "[S] b8 PrivateBuyListBuy";
   private static final String _S__D1_PRIVATESTORELISTBUY = "[S] be PrivateStoreListBuy";
   private int _objId;
   private long _playerAdena;
   private TradeList.TradeItem[] _items;
   
   public PrivateStoreListBuy(L2PcInstance player, L2PcInstance storePlayer)
   {
      _objId = storePlayer.getObjectId();
      _playerAdena = player.getAdena();
      storePlayer.getSellList().updateItems(); // Update SellList for case inventory content has changed
      _items = storePlayer.getBuyList().getAvailableItems(player.getInventory());
   }
   
   @Override
   protected final void writeImpl()
   {
      writeC(0xbe);
      writeD(_objId);
      writeQ(_playerAdena);
      
      writeD(_items.length);
      
      for (TradeList.TradeItem item : _items)
      {
         writeD(item.getObjectId());
         writeD(item.getItem().getItemId());
         writeD(item.getLocationSlot());
         writeQ(item.getCount());
         writeH(item.getItem().getType2());
         writeH(item.getCustomType1());
         writeH(0x00);
         writeD(item.getItem().getBodyPart());
         writeH(item.getEnchant());
         writeH(item.getCustomType2());
         // Player cannot sell/buy augmented, shadow or time-limited items
         // probably so hardcode values here
         writeD(0x00);   // Augment
         writeD(-1);      // Mana
         writeD(-9999);   // Time
         writeH(item.getAttackElementType());
         writeH(item.getAttackElementPower());
         for (byte i = 0; i < 6; i++)
         {
            writeH(item.getElementDefAttr(i));
         }
         // Enchant Effects
         writeH(0x00);
         writeH(0x00);
         writeH(0x00);
         writeD(item.getObjectId());
         writeQ(item.getPrice());
         writeQ(item.getItem().getReferencePrice() * 2);
         writeQ(item.getStoreCount());
      }
   }
   
   /* (non-Javadoc)
    * @see com.l2jserver.gameserver.serverpackets.ServerBasePacket#getType()
    */
   @Override
   public String getType()
   {
      return _S__D1_PRIVATESTORELISTBUY;
   }
}


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
FX
Moderator



Dołączył: 28 Sty 2010
Posty: 682
Przeczytał: 0 tematów

Pomógł: 17 razy
Ostrzeżeń: 0/5

PostWysłany: Nie 20:20, 13 Mar 2011    Temat postu:

ktos pisal cos takeigo ale niewiem czy dal to publicznie
jutro sprawdze dokaldnie jaki pakiet etc Smile


te pakiety zawieraja liste itemow:(tak jak sam zreszta napisales Smile)

Type:0xBE (PrivateStoreListBuy)
Type:0xA1 (PrivateStoreListSell)

bedziesz musial zrobic skrypt co zagada do kazdego shopa


Post został pochwalony 0 razy

Ostatnio zmieniony przez FX dnia Pon 11:50, 14 Mar 2011, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
akazel




Dołączył: 04 Wrz 2010
Posty: 24
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Wto 0:03, 15 Mar 2011    Temat postu:

Coś posklejalem narazie teoretycznie do podgladniecia struktury ale nie testowalem.

Kod:

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cos 159
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cos 160
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" sell 161
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cos 162

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cos 189
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" buy 190
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cos 191
do
sleep 1000
loop 1 == 1
end_script



FUNCTION cos
  PRINT_TEXT "Packet zwiazany z targiem :) :"
  DEFINE INT PACKET_ID
  DEFINE INT BUF1
  DEFINE STRING BUF2
  DEFINE STRING BUF3
  PACKET.READ_BYTE PACKET_ID
 
  LOCK MUTEX
      FOR Z 0 "<&PACKET.LENGTH&>" 1
        PACKET.READ_BYTE BUF1
        BUF3 = BUF1.GET_HEX
        BUF3 = "BUF3.SUBSTRING #I0 #I2"
        BUF2 = "#$<&BUF2&> <&BUF3&>"
      NEXT
      PRINT_TEXT "#<&BUF2&>#"
  UNLOCK MUTEX
 
RETURN VOID

FUNCTION sell
  PRINT_TEXT "SELL PACKET :"
  DEFINE INT PACKET_ID
  DEFINE INT BUF1
  DEFINE STRING BUF2
  DEFINE STRING BUF3
  PACKET.READ_BYTE PACKET_ID
 
  LOCK MUTEX
      FOR Z 0 "<&PACKET.LENGTH&>" 1
        PACKET.READ_BYTE BUF1
        BUF3 = BUF1.GET_HEX
        BUF3 = "BUF3.SUBSTRING #I0 #I2"
        BUF2 = "#$<&BUF2&> <&BUF3&>"
      NEXT
      PRINT_TEXT "#<&BUF2&>#"
  UNLOCK MUTEX
 
RETURN VOID

FUNCTION buy
  PRINT_TEXT "BUY PACKET:"
  DEFINE INT PACKET_ID
  DEFINE INT BUF1
  DEFINE STRING BUF2
  DEFINE STRING BUF3
  PACKET.READ_BYTE PACKET_ID
 
  LOCK MUTEX
      FOR Z 0 "<&PACKET.LENGTH&>" 1
        PACKET.READ_BYTE BUF1
        BUF3 = BUF1.GET_HEX
        BUF3 = "BUF3.SUBSTRING #I0 #I2"
        BUF2 = "#$<&BUF2&> <&BUF3&>"
      NEXT
      PRINT_TEXT "#<&BUF2&>#"
  UNLOCK MUTEX
 
RETURN VOID


Post został pochwalony 0 razy

Ostatnio zmieniony przez akazel dnia Wto 1:26, 15 Mar 2011, w całości zmieniany 2 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
akazel




Dołączył: 04 Wrz 2010
Posty: 24
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Wto 21:08, 15 Mar 2011    Temat postu:

DONE !!! ;]

Kod:

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cos 159
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cos 160
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" SELLSNIFF 161
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cos 162

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cos 189
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" BUYSNIFF 190
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cos 191
do
sleep 1000
loop 1 == 1
end_script



FUNCTION cos
  PRINT_TEXT "Packet zwiazany z targiem :) :"
  DEFINE INT PACKET_ID
  DEFINE INT BUF1
  DEFINE STRING BUF2
  DEFINE STRING BUF3
  PACKET.READ_BYTE PACKET_ID
 
  LOCK MUTEX
      FOR Z 0 "<&PACKET.LENGTH&>" 1
        PACKET.READ_BYTE BUF1
        BUF3 = BUF1.GET_HEX
        BUF3 = "BUF3.SUBSTRING #I0 #I2"
        BUF2 = "#$<&BUF2&> <&BUF3&>"
      NEXT
      PRINT_TEXT "#<&BUF2&>#"
  UNLOCK MUTEX
 
RETURN VOID



FUNCTION SELLSNIFF
  PRINT_TEXT "SELL SHOP:"
  DEFINE INT PACKET_ID
  DEFINE INT ITEMPRICE
  DEFINE INT ITEMID
  DEFINE INT ITEMCOUNT
  DEFINE INT ILE_SLOTOW   
 
  PACKET.READ_BYTE PACKET_ID
  PACKET.READ_INT32 NULL //OBJECT ID
  PACKET.READ_INT32 NULL //PACKAGE SALE
  PACKET.READ_INT64 NULL //PLAYER ADENA
  PACKET.READ_INT32 ILE_SLOTOW //ILE ITEMOW
FOR Z 0 "<&ILE_SLOTOW&>" 1
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 ITEMID
  PACKET.READ_INT32 NULL
  PACKET.READ_INT64 ITEMCOUNT
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT64 ITEMPRICE
  PACKET.READ_INT64 NULL
  PRINT_TEXT "ITEM ID: <&ITEMID&> COUNT: <&ITEMCOUNT&> PRICE: <&ITEMPRICE&>"
 
NEXT
PRINT_TEXT "SELL SHOP:"
PACKET.READ_INT16 NULL   
RETURN VOID

FUNCTION BUYSNIFF
  PRINT_TEXT "BUY SHOP:"
  DEFINE INT PACKET_ID
  DEFINE INT ITEMPRICE
  DEFINE INT ITEMID
  DEFINE INT ITEMCOUNT
  DEFINE INT ILE_SLOTOW   
 
  PACKET.READ_BYTE PACKET_ID
  PACKET.READ_INT32 NULL //OBJECT ID
  PACKET.READ_INT64 NULL //PLAYER ADENA
  PACKET.READ_INT32 ILE_SLOTOW //ILE ITEMOW
FOR Z 0 "<&ILE_SLOTOW&>" 1
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 ITEMID
  PACKET.READ_INT32 NULL //slot
  PACKET.READ_INT64 ITEMCOUNT
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT32 NULL //OBJECT ID
  PACKET.READ_INT64 ITEMPRICE
  PACKET.READ_INT64 NULL
  PACKET.READ_INT64 NULL
  PRINT_TEXT "ITEM ID: <&ITEMID&> COUNT: <&ITEMCOUNT&> PRICE: <&ITEMPRICE&>"
 
NEXT
PRINT_TEXT "BUY SHOP:"
PACKET.READ_INT16 NULL   
RETURN VOID



Post został pochwalony 0 razy

Ostatnio zmieniony przez akazel dnia Śro 1:16, 16 Mar 2011, w całości zmieniany 3 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
FX
Moderator



Dołączył: 28 Sty 2010
Posty: 682
Przeczytał: 0 tematów

Pomógł: 17 razy
Ostrzeżeń: 0/5

PostWysłany: Śro 11:51, 16 Mar 2011    Temat postu:

jakies konkret plany z tym ?Razz
planujesz np. na www/programie wyswietlac liste itemkow/ceny etc ?Razz
czy to raczej jako nauke traktujesz ?Razz


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
akazel




Dołączył: 04 Wrz 2010
Posty: 24
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Śro 14:36, 16 Mar 2011    Temat postu:

Robie na wlasny uzytek mam skrypt do automatycznego wystawiania sklepow a teraz napisze bota ktory bedzie go uaktualnial odwiedzajac sklepy i zbierajac ceny. Musze wykryc teraz sklepy a to co znalazlem na oficjalnym forum nie do konca dziala. To jak je wykryć?




Kod:

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" CharInfo 49


WHILE ONE == ONE
  SLEEP 1000
WEND

SCRIPT_END

FUNCTION CharInfo

  DEFINE INT PacketType 0
  DEFINE INT X 0
  DEFINE INT Y 0
  DEFINE INT Z 0
  DEFINE INT Heading 0
  DEFINE INT ObjectID 0
  DEFINE STRING Name " "
  DEFINE INT PrivateStoreType 0

  PACKET.READ_BYTE PacketType
  PACKET.READ_INT32 X
  PACKET.READ_INT32 Y
  PACKET.READ_INT32 Z
  PACKET.READ_INT32 Heading
  PACKET.READ_INT32 ObjectID
  PACKET.READ_STRING Name

//crap we dont need (23)
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null

//18
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null

PACKET.READ_INT32 null

//24
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null
PACKET.READ_INT16 null

//14
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null

//11 (movemultiplier to face)
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null

//(title to 0)
PACKET.READ_INT16 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null

PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT16 null

//start clanID to nothing
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null
PACKET.READ_INT32 null


//start sitting to mount type
PACKET.READ_BYTE null
PACKET.READ_BYTE null
PACKET.READ_BYTE null
PACKET.READ_BYTE null
PACKET.READ_BYTE null
PACKET.READ_BYTE null

//END crap we dont need


PACKET.READ_BYTE PrivateStoreType  //privatestoretype


  PRINT_TEXT " Rcvd - CharInfo - X=<&X&> | Y=<&Y&> | Z=<&Z&> ]"
  PRINT_TEXT " Heading=<&Heading&> | ObjectID=<&ObjectID&> ]"
  PRINT_TEXT " Name=<&Name&> | PrivateStoreType=<&PrivateStoreType&> ]"
  PRINT_TEXT " ______________________________________________________________ ]"

RETURN VOID


Post został pochwalony 0 razy

Ostatnio zmieniony przez akazel dnia Śro 14:38, 16 Mar 2011, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
FX
Moderator



Dołączył: 28 Sty 2010
Posty: 682
Przeczytał: 0 tematów

Pomógł: 17 razy
Ostrzeżeń: 0/5

PostWysłany: Śro 19:40, 16 Mar 2011    Temat postu:

hmm wzioles to z starego skryptu ?
char info to dobre rozwiazanie i dziala na 100%
ztym ze zle cos czytasz tego pakieta
niechcialo mi sie liczyc tego bo to spory pakiet
ale te 16 na poczatku watpie zeby dawaly odpowiednia sume bajtow ...

tu masz wersja jaka ja uzywam na frei w nieopublikowanym pod freye awp Razz
Kod:


packet.read_byte null
packet.read_int32 pakiecik_char.x
packet.read_int32 pakiecik_char.y
packet.read_int32 pakiecik_char.z
packet.read_int32 null
packet.read_int32 pakiecik_char.oid
packet.read_string pakiecik_char.name
packet.read_int32 pakiecik_char.race
packet.read_int32 pakiecik_char.sex
packet.read_int32 pakiecik_char.class
packet.read_int32 pakiecik_char.id_under
packet.read_int32 pakiecik_char.id_head
packet.read_int32 pakiecik_char.id_rhand
packet.read_int32 pakiecik_char.id_lhand
packet.read_int32 pakiecik_char.id_gloves
packet.read_int32 pakiecik_char.id_chest
packet.read_int32 pakiecik_char.id_legs
packet.read_int32 pakiecik_char.id_feet
packet.read_int32 pakiecik_char.id_back
packet.read_int32 pakiecik_char.id_lrhand
packet.read_int32 pakiecik_char.id_hair
packet.read_int32 pakiecik_char.id_hair2
packet.read_int32 pakiecik_char.id_rbracklet
packet.read_int32 pakiecik_char.id_lbracklet
packet.read_int32 pakiecik_char.id_deco1
packet.read_int32 pakiecik_char.id_deco2
packet.read_int32 pakiecik_char.id_deco3
packet.read_int32 pakiecik_char.id_deco4
packet.read_int32 pakiecik_char.id_deco5
packet.read_int32 pakiecik_char.id_deco6
packet.read_int32 pakiecik_char.id_belt
packet.read_int32 pakiecik_char.aug_id_under
packet.read_int32 pakiecik_char.aug_id_head
packet.read_int32 pakiecik_char.aug_id_rhand
packet.read_int32 pakiecik_char.aug_id_lhand
packet.read_int32 pakiecik_char.aug_id_gloves
packet.read_int32 pakiecik_char.aug_id_chest
packet.read_int32 pakiecik_char.aug_id_legs
packet.read_int32 pakiecik_char.aug_id_feet
packet.read_int32 pakiecik_char.aug_id_back
packet.read_int32 pakiecik_char.aug_id_lrhand
packet.read_int32 pakiecik_char.aug_id_hair
packet.read_int32 pakiecik_char.aug_id_hair2
packet.read_int32 pakiecik_char.aug_id_rbracklet
packet.read_int32 pakiecik_char.aug_id_lbracklet
packet.read_int32 pakiecik_char.aug_id_deco1
packet.read_int32 pakiecik_char.aug_id_deco2
packet.read_int32 pakiecik_char.aug_id_deco3
packet.read_int32 pakiecik_char.aug_id_deco4
packet.read_int32 pakiecik_char.aug_id_deco5
packet.read_int32 pakiecik_char.aug_id_deco6
packet.read_int32 pakiecik_char.aug_id_belt
packet.read_int32 null
packet.read_int32 null
packet.read_int32 pakiecik_char.pvpflag
packet.read_int32 pakiecik_char.karma
packet.read_int32 pakiecik_char.matakspd
packet.read_int32 pakiecik_char.patakspd
packet.read_int16 null
packet.read_int16 null
packet.read_int32 pakiecik_char.runspd
packet.read_int32 pakiecik_char.walkspd
packet.read_int32 null
packet.read_int32 null
packet.read_int32 null
packet.read_int32 null
packet.read_int32 null
packet.read_int32 null
packet.READ_DOUBLE pakiecik_char.spdmulti
packet.READ_DOUBLE pakiecik_char.atakspdmulti
packet.READ_DOUBLE pakiecik_char.colisradio
packet.READ_DOUBLE pakiecik_char.coliheigh
packet.read_int32 pakiecik_char.hairstyle
packet.read_int32 pakiecik_char.haircolor
packet.read_int32 pakiecik_char.face
packet.read_string pakiecik_char.title
packet.read_int32 pakiecik_char.clanid
packet.read_int32 pakiecik_char.clancrestid
packet.read_int32 pakiecik_char.alyid
packet.read_int32 pakiecik_char.alycrestid
packet.read_byte pakiecik_char.issitting
packet.read_byte pakiecik_char.isrunning
packet.read_byte pakiecik_char.incombat
packet.read_byte pakiecik_char.isdead
packet.read_byte pakiecik_char.invis
packet.read_byte pakiecik_char.mount_type
packet.read_byte pakiecik_char.store_type
...

reszta zbedna
zamien sobie to co trzeba na nulle zreszta wiesz oco biega.. Smile


Post został pochwalony 0 razy

Ostatnio zmieniony przez FX dnia Śro 19:41, 16 Mar 2011, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
akazel




Dołączył: 04 Wrz 2010
Posty: 24
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Śro 23:24, 16 Mar 2011    Temat postu:

Dzieki pomysle nad tym może w późniejszym etapie twoje rozwiazanie bedzie lepsze, ale narazie obszedlem to inaczej, zyskuje dzieki temu title shopa.

Skrypt działa!!! Sprawdza dość chaotycznie ale działa.

Teraz interesuje mnie jakiś lepszy algorytm przegladania shopów. Tak żeby się nie zacinał w giran/aden. Narazie to jedyny pomysl jest taki zeby mu ustawic range. Pierwsze sprawdza czy jest jakis shop blisko np dystans 200 jak nie ma to patrzy 400 nie ma 600 800 1000 1500 mysle ze to da rade ale co z przeszkodami. Mozna tez pomyslec zeby sprawdzal sektorami takimi ze sie nie da zaciac i chodził miedzy nimi sciezkami. Dobra ide spac bb ;]


Kod:


INCLUDE StdLib\Player.l2c
INCLUDE StdLib\shop.l2c

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" SELLSNIFF 161
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" SELLDETECT 162
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" BUYSNIFF 190
SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" BUYDETECT 191

DEFINE_GLOBAL ARRAYLIST GL
DEFINE INT LICZNIK
DEFINE INT R_TMP
SLEEP 10000
WHILE ONE == ONE
PRINT_TEXT " LIST COUNT <&GL.COUNT&>"
LICZNIK = 0
FOREACH P SHOP GL
CALL GL.P.DISTF VOID 0
IF 500 > GL.P.DIST
TARGET "<&GL.P.OBJ_ID&>"
SLEEP 1000
TARGET "<&GL.P.OBJ_ID&>"
SLEEP 5000
PRINT_TEXT "WYWALAM <&GL.LICZNIK.PLAYER_NAME&>"
GL.REMOVE "<&LICZNIK&>"

ENDIF
LICZNIK = LICZNIK + 1
NEXTEACH
SLEEP 2000
WEND

SCRIPT_END

FUNCTION SELLDETECT
DEFINE ARRAYLIST L
DEFINE SHOP S

PACKET.READ_BYTE NULL
PACKET.READ_INT32 S.OBJ_ID
PACKET.READ_STRING S.TITLE

GET_PLAYERS L

FOREACH I PLAYER L
IF ( L.I.ID == S.OBJ_ID )
S.PLAYER_NAME = L.I.NAME
S.X = L.I.X
S.Y = L.I.Y
S.Z = L.I.Z
ENDIF
NEXTEACH

GL.ADD S


PRINT_TEXT "####SELL SHOP"
PRINT_TEXT "OBJ_ID: <&S.OBJ_ID&>"
PRINT_TEXT "PLAYER_NAME: <&S.PLAYER_NAME&>"
PRINT_TEXT "TITLE: <&S.TITLE&>"
PRINT_TEXT "X: <&S.X&>"
PRINT_TEXT "Y: <&S.Y&>"
PRINT_TEXT "Z: <&S.Z&>"
PRINT_TEXT "####SELL SHOP"
RETURN VOID

FUNCTION BUYDETECT
DEFINE ARRAYLIST L
DEFINE SHOP S

PACKET.READ_BYTE NULL
PACKET.READ_INT32 S.OBJ_ID
PACKET.READ_STRING S.TITLE

GET_PLAYERS L

FOREACH I PLAYER L
IF ( L.I.ID == S.OBJ_ID )
S.PLAYER_NAME = L.I.NAME
S.X = L.I.X
S.Y = L.I.Y
S.Z = L.I.Z
ENDIF
NEXTEACH

GL.ADD S


PRINT_TEXT "####BUY SHOP"
PRINT_TEXT "OBJ_ID: <&S.OBJ_ID&>"
PRINT_TEXT "PLAYER_NAME: <&S.PLAYER_NAME&>"
PRINT_TEXT "TITLE: <&S.TITLE&>"
PRINT_TEXT "X: <&S.X&>"
PRINT_TEXT "Y: <&S.Y&>"
PRINT_TEXT "Z: <&S.Z&>"
PRINT_TEXT "####BUY SHOP"
RETURN VOID

FUNCTION cos
  PRINT_TEXT "Packet zwiazany z targiem :) :"
  DEFINE INT PACKET_ID
  DEFINE INT BUF1
  DEFINE STRING BUF2
  DEFINE STRING BUF3
  PACKET.READ_BYTE PACKET_ID
 
  LOCK MUTEX
      FOR Z 0 "<&PACKET.LENGTH&>" 1
        PACKET.READ_BYTE BUF1
        BUF3 = BUF1.GET_HEX
        BUF3 = "BUF3.SUBSTRING #I0 #I2"
        BUF2 = "#$<&BUF2&> <&BUF3&>"
      NEXT
      PRINT_TEXT "#<&BUF2&>#"
  UNLOCK MUTEX
 
RETURN VOID



FUNCTION SELLSNIFF
  PRINT_TEXT "SELL SHOP:"
  DEFINE INT PACKET_ID
  DEFINE INT ITEMPRICE
  DEFINE INT ITEMID
  DEFINE INT ITEMCOUNT
  DEFINE INT ILE_SLOTOW     
 
  PACKET.READ_BYTE PACKET_ID
  PACKET.READ_INT32 NULL //OBJECT ID
  PACKET.READ_INT32 NULL //PACKAGE SALE
  PACKET.READ_INT64 NULL //PLAYER ADENA
  PACKET.READ_INT32 ILE_SLOTOW //ILE ITEMOW
FOR Z 0 "<&ILE_SLOTOW&>" 1
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 ITEMID
  PACKET.READ_INT32 NULL
  PACKET.READ_INT64 ITEMCOUNT
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT64 ITEMPRICE
  PACKET.READ_INT64 NULL
  PRINT_TEXT "ITEM ID: <&ITEMID&> COUNT: <&ITEMCOUNT&> PRICE: <&ITEMPRICE&>"
 
NEXT
PRINT_TEXT "SELL SHOP:"
PACKET.READ_INT16 NULL     
RETURN VOID

FUNCTION BUYSNIFF
  PRINT_TEXT "BUY SHOP:"
  DEFINE INT PACKET_ID
  DEFINE INT ITEMPRICE
  DEFINE INT ITEMID
  DEFINE INT ITEMCOUNT
  DEFINE INT ILE_SLOTOW     
 
  PACKET.READ_BYTE PACKET_ID
  PACKET.READ_INT32 NULL //OBJECT ID
  PACKET.READ_INT64 NULL //PLAYER ADENA
  PACKET.READ_INT32 ILE_SLOTOW //ILE ITEMOW
FOR Z 0 "<&ILE_SLOTOW&>" 1
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 ITEMID
  PACKET.READ_INT32 NULL //slot
  PACKET.READ_INT64 ITEMCOUNT
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT32 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT16 NULL
  PACKET.READ_INT32 NULL //OBJECT ID
  PACKET.READ_INT64 ITEMPRICE
  PACKET.READ_INT64 NULL
  PACKET.READ_INT64 NULL
  PRINT_TEXT "ITEM ID: <&ITEMID&> COUNT: <&ITEMCOUNT&> PRICE: <&ITEMPRICE&>"
 
NEXT
PRINT_TEXT "BUY SHOP:"
PACKET.READ_INT16 NULL     
RETURN VOID




SHOP.L2C

Kod:

CLASS SHOP NULL

     VAR_START
         PUBLIC INT OBJ_ID
         PUBLIC INT TYPE //0-SELL 1-BUY     
          PUBLIC STRING TITLE
          PUBLIC STRING PLAYER_NAME
          PUBLIC INT X
          PUBLIC INT Y
          PUBLIC INT Z
         PUBLIC INT DIST
     VAR_END

PUBLIC DISTF
DISTANCE THIS.DIST CHAR_X CHAR_Y CHAR_Z THIS.X THIS.Y THIS.Z
RETURN VOID
PUBLIC T
TARGET THIS.OBJ_ID
RETURN VOID


     PUBLIC CONSTRUCT 0
         THIS.OBJ_ID = 0
         THIS.TYPE = 0
        THIS.TITLE = "#$"
        THIS.PLAYER_NAME = "#$"     
         THIS.X = 0
         THIS.Y = 0
         THIS.Z = 0
       THIS.DIST = 9999999
     RETURN VOID

END_CLASS


Post został pochwalony 0 razy

Ostatnio zmieniony przez akazel dnia Czw 4:13, 17 Mar 2011, w całości zmieniany 2 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
FX
Moderator



Dołączył: 28 Sty 2010
Posty: 682
Przeczytał: 0 tematów

Pomógł: 17 razy
Ostrzeżeń: 0/5

PostWysłany: Czw 12:50, 17 Mar 2011    Temat postu:

mozesz zrobic tak jak ja zrobilem w awp oly helpera z wykrywaniem odp areny czyli..

wymaga troche roboty niestety .... ale w maire prostej
dzielisz miasta na pewne sektory takie ktore moga bloknac postac
na srodku kazdego takiego sektoru bierzesz cordy
teraz majac liste sklepow wypelniasz tablice sektorow (tyle ile sektorow tyle tablic )
wedlug dystansow od tych pointow
nastepnie sprawdzasz wokolo sklepy w tym sektorze jak wyczyscisz tablice
idziesz do nastepnego sektora(to stale sciezki ktore sam podajesz )
etc etc zapobiega to blokowaniu
i wiesz dokladnie gdzie jestes

no i jest to wmiare proste rozwiazanie Razz


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.l2walkerpolska.fora.pl Strona Główna -> L2.Net Scenariusze (scrypting) Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin