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

  • Konuyu açan Konuyu açan yakuza590
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 11
  • Gösterim Gösterim 2K
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:
Genişlet Daralt Kopyala
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:
Genişlet Daralt Kopyala
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):
Genişlet Daralt Kopyala
    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:
Genişlet Daralt Kopyala
ItemDropList=[27800,27801,27802]

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

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


Arat;
Python:
Genişlet Daralt Kopyala
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:
Genişlet Daralt Kopyala
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:
Genişlet Daralt Kopyala
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ı.
Üst