Çözülemedi envanter temizleme kodu lazım python

Ne yazık ki bu konuda sorulara çözüm bulunmuyor. Eğer konuda yorumlar varsa hepsini inceleyebilirsiniz. Belki sizlerin sorununuzu çözmek için için ipuçları bulabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

yakuza590

Üye
Üye
Mesaj
10
Beğeni
0
Puan
38
Ticaret Puanı
0
Get Item List - Item Dumper;

Quellcode​

Python:
import sys,os,item
try:
    import chatm2g as chat
except:
    import chat
f = open('ItemList.txt','w')
for vnum in xrange(100000):
    item.SelectItem(vnum)
    itemType=item.GetItemType()
    if itemType <> 6 and item.GetItemName() <> '' and item.GetItemName() <> 'NoNAme':
        print >>f,str(vnum)+' - '+item.GetItemName()
chat.AppendChat(7,'#### LOG: Items dumped! [ItemList.txt]')
f.close()

unX Inventory Cleaner;

Quellcode​

Python:
import ui,app
try:
    import playerm2g2 as player
except:
    import player
try:
    import chatm2g as chat
except:
    import chat
try:
    import m2netm2g as net
except:
    import net
ItemDropList=[27800,27801,27802]
botStat=0
keyPressed=0
def DropItem():
    global botStat,ItemDropList
    if botStat==1:
        for slot in xrange(player.INVENTORY_PAGE_SIZE * 2):
            if player.GetItemIndex(slot) in ItemDropList:
                net.SendItemDropPacketNew(slot, 200)
                break
    else:
        pass
def HotkeyFunc():
    global botStat
    if app.IsPressed(app.DIK_F5) and botStat==0:
        botStat=1
        chat.AppendChat(7,'#### unX Inventory Cleaner [ON]')
    else:
        pass
    if app.IsPressed(app.DIK_F6) and botStat==1:
        botStat=0
        chat.AppendChat(7,'#### unX Inventory Cleaner [OFF]')
    else:
        pass
bu = ui.Window()
bu.OnUpdate = DropItem
bu.Show()
hu = ui.Window()
hu.OnUpdate = HotkeyFunc
hu.Show()
chat.AppendChat(7,'#### unX Inventory Cleaner [IMPORTED]')


beceri kitapları (50300) koduyla geçtigi için gereksiz çöp bkları yere attıramıyorum.
bunu nasıl çözerim.
bilgisi olan varmı ?
 
Beceri kitapları aynı vnum değeri taşır bu yüzden bu şekilde ayırt edemezsiniz. Beceri kitaplarını ayırt edebilmek için socket verilerini almanız gerekiyor.
 
Örnek;
Lua (Quest):
    item.SelectItem(50300)
    socket = item.GetSocket(0)

    if socket == 33:
        print("Zehirli Bulut Beceri Kitabı")


Yetenek kodları, beceri kitaplarının socket kısmında saklanır. Envanterden silmek istediğiniz beceri kitaplarını item.GetSocket(0) fonksiyonunu kullanarak ayırt edebilirsiniz.
 
Arat;
Python:
ItemDropList=[27800,27801,27802]

Değiştir;
Python:
ItemDropList=[27800,27801,27802, 50300]

Altına ekle;
Python:
bkDropList=[1,2,3,4,5,6,16,17,18,19,20,21] #warrior


Arat;
Python:
def DropItem():
    global botStat,ItemDropList
    if botStat==1:
        for slot in xrange(player.INVENTORY_PAGE_SIZE * 2):
            if player.GetItemIndex(slot) in ItemDropList:
                net.SendItemDropPacketNew(slot, 200)
                break
    else:
        pass


Değiştir;
Python:
def DropItem():
    global botStat,ItemDropList, bkDropList
    if botStat==1:
        for slot in xrange(player.INVENTORY_PAGE_SIZE * 2):
            if player.GetItemIndex(slot) in ItemDropList:
                if player.GetItemIndex(slot) == 50300:
                    item.SelectItem(player.GetItemIndex(slot))
                    if item.GetSocket(0) in bkDropList:
                        net.SendItemDropPacketNew(slot, 200)
                        break
                else:
                    net.SendItemDropPacketNew(slot, 200)
                    break
    else:
        pass

Kodları denemedim. Herhangi bir hata verirse söyleyebilirsiniz.
 
Herhangi bi hata almadım ancak
(bkDropList=[1,2,3,4,5,6,16,17,18,19,20,21])
buraya bkları nasıl tanımlamalıyım.
metin belgesi oluşturup tanımlama mı yapmalıyım.
itemlist'e benzeyen ?
yada numaralarını nasıl öğrenmeliyim.
zehirli bulut bk'nın numarasını nasıl öğrenebilirim.
 
Google'da "metin2 yetenek kodları" diye aratın çıkıyor.
 
bkDropList yazan yere bk kod ve yetenek kod yazdım ancak işe yaramadı.



Python:
ItemDropList=[50300]
bkDropList=[ BURAYA TAM OLARAK NE YAZMALIYIM ] #warrior
botStat=0
keyPressed=0

def DropItem():
    global botStat,ItemDropList, bkDropList
    if botStat==1:
        for slot in xrange(player.INVENTORY_PAGE_SIZE * 2):
            if player.GetItemIndex(slot) in ItemDropList:
                if player.GetItemIndex(slot) == 50300:
                    item.SelectItem(player.GetItemIndex(slot))
                    if item.GetSocket(0) in bkDropList:
                        net.SendItemDropPacketNew(slot, 200)
                        break
                else:
                    net.SendItemDropPacketNew(slot, 200)
                    break
    else:
        pass
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst