Yardım python item pozisyonu

  • Konuyu açan Konuyu açan TheAdmin33
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 8
  • Gösterim Gösterim 117
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

TheAdmin33

Ah, bu şarkıların gözü kör olsun
Geliştirici
Yardımsever Üye
Usta Üye
Editör
Mesaj
1.327
Çözümler
75
Beğeni
5.108
Puan
2.859
Ticaret Puanı
0
belirli bir vnum a sahip eşyayı envanterde aratıp onun pozisyon bilgisini bir değişkene atamak istiyorum, python tarafında böyle bir şey varmı yokmu? bakındım ama öyle bir şeye rastlayamadım.

Envanterde efsun nesnesi varmı yokmu diye aratıp eğer varsa pozisyon bilgisiyle SendItemUseToItemPacket paketi göndermek istiyorum.
 
Çözüm
şu şekilde hallettim;
C++:
Genişlet Daralt Kopyala
    def ChangeAttr(self):
        if player.GetItemCountByVnum(71084) > 0:
            for slot in xrange(player.INVENTORY_PAGE_SIZE * player.INVENTORY_PAGE_COUNT):
                if player.GetItemIndex(slot) == 71084:
                    net.SendItemUseToItemPacket(slot, self.targetItemPos)
                    break
        else:
            chat.AppendChat(1, "Efsun nesnesi kalmadı")
Ne yapmak istediğinden emin değilim ama eğer sonuçta servere gidecekse neden python üzerinden yapmak istiyorsun? Direkt serverdan da yapabilirsin gibi görünüyor.

Ama yinede en basit haliyle aşağıdaki gibi bir şey kullanabilirsin:
Python:
Genişlet Daralt Kopyala
def Test(self):
    getItemVNum=player.GetItemIndex
    for i in xrange(player.INVENTORY_PAGE_SIZE):
        # farklı py'den yapacaksan bunu dışarıdan çağırman gerekebilir
        # veya basit bir ek fonksiyon oluşturabilirsin  
        slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
       
        itemVnum = getItemVNum(slotNumber)
        if itemVnum == 71084:
            net.SendItemUseToItemPacket(.....) #slotbnumber'ı gönderebilirsin
 
Ne yapmak istediğinden emin değilim ama eğer sonuçta servere gidecekse neden python üzerinden yapmak istiyorsun? Direkt serverdan da yapabilirsin gibi görünüyor.

Ama yinede en basit haliyle aşağıdaki gibi bir şey kullanabilirsin:
Python:
Genişlet Daralt Kopyala
def Test(self):
    getItemVNum=player.GetItemIndex
    for i in xrange(player.INVENTORY_PAGE_SIZE):
        # farklı py'den yapacaksan bunu dışarıdan çağırman gerekebilir
        # veya basit bir ek fonksiyon oluşturabilirsin 
        slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
      
        itemVnum = getItemVNum(slotNumber)
        if itemVnum == 71084:
            net.SendItemUseToItemPacket(.....) #slotbnumber'ı gönderebilirsin
Amacım Efsun Botunun guisine "efsun değiş" butonu koymak ve bu butona basıldığında iteme 1 tane efsun atmasını sağlamak.
 
Amacım Efsun Botunun guisine "efsun değiş" butonu koymak ve bu butona basıldığında iteme 1 tane efsun atmasını sağlamak.
Manual bonus changer diye bir efsun botu vardı, elle tıklayarak efsun atılan bot benzeri bir şeydi. Sanırım onu incelersen istediğin şeyi yapabilirsin.
 
Manual bonus changer diye bir efsun botu vardı, elle tıklayarak efsun atılan bot benzeri bir şeydi. Sanırım onu incelersen istediğin şeyi yapabilirsin.
ona baktımda efsunun pozisyonunu mouse üzerinden çekiyor yani işime yaramıyor.(Sistem guisini açmak için efsunu iteme sürükleyince efsunun pozisyonunu alıyor)
 
Amacım Efsun Botunun guisine "efsun değiş" butonu koymak ve bu butona basıldığında iteme 1 tane efsun atmasını sağlamak.
kullandığınız efsun botunun mantığında bi sorgu ekleyerek örneğin 15 kılıç var olmayan bi efsunu random attırabilirsiniz envanterde efsun var mı yok mu ya da varsa şu paketi göndere gerek yok zaten efsun botu da aynı mantıkda çalışıyor
 
ona baktımda efsunun pozisyonunu mouse üzerinden çekiyor yani işime yaramıyor.(Sistem guisini açmak için efsunu iteme sürükleyince efsunun pozisyonunu alıyor)
O zaman yukarıda verdiğim koda ek olarak bir de bot içindeki itemin slotnumberını çek ve;
Python:
Genişlet Daralt Kopyala
net.SendItemUseToItemPacket(efsunNesnesiSlotNumber, botItemSlotNumber)
Şeklinde dene.

Veya:
Python:
Genişlet Daralt Kopyala
net.SendItemUseToItemPacket(player.INVENTORY, efsunNesnesiSlotNumber, player.INVENTORY, botItemSlotNumber)

Eğer bot penceresi ayrı bir slot window ise bu şekilde de deneyebilirsin. ikinci player.INVENTORY kısmını bota uygun olarak değiştirirsin.
 
Umarım işini görür.

test.py:
Genişlet Daralt Kopyala
            if player.GetItemCountByVnum(71084) <= 0:
                if shop.IsOpen():
                    for EachShopSlot in xrange(shop.SHOP_SLOT_COUNT):
                        ShopItemValue = shop.GetItemID(EachShopSlot)
                        if ShopItemValue == 71084:
                            net.SendShopBuyPacket(EachShopSlot)
                else:
                    chat.AppendChat(1, "Efsun nesnesi kalmadı")
                    #self.Cfg[tabNumber][0] = 0
                    #self.Gui[self.lenGui+tabNumber].SetbtnText(self.Cfg[tabNumber][0])
                    return
 
şu şekilde hallettim;
C++:
Genişlet Daralt Kopyala
    def ChangeAttr(self):
        if player.GetItemCountByVnum(71084) > 0:
            for slot in xrange(player.INVENTORY_PAGE_SIZE * player.INVENTORY_PAGE_COUNT):
                if player.GetItemIndex(slot) == 71084:
                    net.SendItemUseToItemPacket(slot, self.targetItemPos)
                    break
        else:
            chat.AppendChat(1, "Efsun nesnesi kalmadı")
 
Çözüm
Geri
Üst