[Python]Slotfenster mit Items

03/14/2017 15:18 ChiefKeef.#1
Hab folgenden Code
Code:
		self.itemSlots = ui.GridSlotWindow()
		self.itemSlots.SetParent(self)
		self.itemSlots.ArrangeSlot(0, gridSizeX, gridSizeY, 32, 32, 0, 0)
		self.itemSlots.SetPosition(38,20)
		self.itemSlots.SetSlotBaseImage("d:/ymir work/ui/public/Slot_Base.sub",1,1,1,1)		
		self.itemSlots.Show()

		items = [53001,11299,3139,20009,189,149,279,11289,11499,11489,53001,53002]
		i=0
		for itemVnum in items:
			item.SelectItem(itemVnum)
			self.itemSlots.SetItemSlot(i, itemVnum, 1)
                       i+=1
[Only registered and activated users can see links. Click Here To Register...]
gibt es einen einfachen weg um herauszufinden ob der slot schon benutzt wird wegen der item größe?
03/14/2017 20:48 xCPx#2
meine idee wäre:


Mehrdimensionales Array initialisieren:

arr =[]
for i in xrange(0, gridSizeX):
arr[i] = []
for i2 in xrange(0, gridSizeY):
arr[i][i2] = 0


ne funktion um x / y koordinaten zu kriegen:

def SlotToX(self, slotnr):
return slotnr %gridSizeX

def SlotToY(self, slotnr):
return slotnr / gridSizeX


dann das ganze beim adden Prüfen:


def AddItem(id, vnum, slot):
if(self.CanAddItem(vnum, slot) != TRUE)
return
item.SelectItem(vnum)
size = item.GetSize()
base_y = self.SlotToY(slot)
base_x = self.SlotToX(slot)
i=0
while i < size:
arr[base_x][base_y + i] = 1
i+=1
self.itemSlots.SetItemslot(id, vnum, 1)

def CanAddItem(vnum, slot):
item.SelectItem(vnum)
size = item.GetSize()
base_y = self.SlotToY(slot)
base_x = self.SlotToX(slot)
i=0
while i < size:
if(arr[base_x][base_y + i] == 1):
return FALSE
i+=1
return TRUE
03/15/2017 15:07 ChiefKeef.#3
Quote:
Originally Posted by xCPx View Post
meine idee wäre:


Mehrdimensionales Array initialisieren:

arr =[]
for i in xrange(0, gridSizeX):
arr[i] = []
for i2 in xrange(0, gridSizeY):
arr[i][i2] = 0
musste da mit arr.append arbeiten ansonsten hab ich fehler bekommen aber habs hinbekommen
deine süßen kleinen runden augen können sich geküsst fühlen