|
www.l2walkerpolska.fora.pl L2Walker, Lineage II, L2.Net, L2Divine, L2Superman,
|
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
|
Wysł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 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
|
Wysł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
te pakiety zawieraja liste itemow:(tak jak sam zreszta napisales )
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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
akazel
Dołączył: 04 Wrz 2010
Posty: 24
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
akazel
Dołączył: 04 Wrz 2010
Posty: 24
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysł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 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
|
Wysłany: Śro 11:51, 16 Mar 2011 Temat postu: |
|
|
jakies konkret plany z tym ?
planujesz np. na www/programie wyswietlac liste itemkow/ceny etc ?
czy to raczej jako nauke traktujesz ?
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
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
|
Wysł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 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
|
Wysł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
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..
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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
akazel
Dołączył: 04 Wrz 2010
Posty: 24
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysł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 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
|
Wysł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
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
|
|
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
|