Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Szybka zmiana ekwipunku.


Marek69x

Rekomendowane odpowiedzi

Opublikowano

Witam, mam problem odnośnie szybkiej zmiany ekwipunku . Po otworzeniu panelu i zamknięciu nie mogę ponownie otworzyć go za pomocą F8, muszę relognąć.

 

Zdefiniowany przycisk

		onPressKeyDict[app.DIK_F8]  = lambda : self.ZmianaEq() 

funkcja:

	def ZmianaEq(self):
		if self.uichange.is_shown == 1:
			self.uichange.Hide()
		else:
			self.uichange.Show() 

uichange:

 

 

import ui
import player
import mouseModule
import net
import app
import chat
import snd
import item
import grp
import uiScriptLocale
import locale
import ime
import grpText
import uiToolTip
import os

class changeequip(ui.ScriptWindow):

	def __init__(self):
		import exception
		ui.ScriptWindow.__init__(self)
		self.wndEquip = None
		self.tokens = None		
		self.activeslot = 1
		self.tooltipItem = uiToolTip.ItemToolTip()
		self.tooltipItem.Hide()
		self.saveName = "lib/"+str(player.GetName())+"1.ddr"
		self.is_shown = 0

	def __del__(self):
		ui.ScriptWindow.__del__(self)

	def Show(self):			
		self.__LoadWindow()
		ui.ScriptWindow.Show(self)

	def Close(self):
		self.is_shown = 0
		self.Hide()

	def __LoadWindow(self):
		try:			
			pyScrLoader = ui.PythonScriptLoader()
			pyScrLoader.LoadScriptFile(self, "uiscript/fastequip.py")
		except:
			import exception
			exception.Abort("CostumeWindow.LoadWindow.LoadObject")
			
		self.wndEquip = self.GetChild("equipslot")
		self.bottone_change = self.GetChild("change_button")
		self.TitleBar = self.GetChild("TitleBar")		
		
		self.TitleBar.SetCloseEvent(ui.__mem_func__(self.Close))
		self.wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectItemSlot))
		self.wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
		self.wndEquip.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
		self.wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.OnOverOutItem))
		self.bottone_change.SetEvent(ui.__mem_func__(self.__change_button))
		self.clear_button = self.GetChild("clear_button")
		self.clear_button.SetEvent(ui.__mem_func__(self.__clear_button))
		
		self.eq0 = self.GetChild("eq0")
		self.eq1 = self.GetChild("eq1")
		self.eq2 = self.GetChild("eq2")
		self.eq3 = self.GetChild("eq3")
		self.eq4 = self.GetChild("eq4")
		
		self.eq0.SetEvent(ui.__mem_func__(self.__SetSlot), 1)
		self.eq1.SetEvent(ui.__mem_func__(self.__SetSlot), 2)
		self.eq2.SetEvent(ui.__mem_func__(self.__SetSlot), 3)
		self.eq3.SetEvent(ui.__mem_func__(self.__SetSlot), 4)
		self.eq4.SetEvent(ui.__mem_func__(self.__SetSlot), 5)
		
		self.is_shown = 1
		
		self.LoadData()

	
	def __change_button(self):
			for i in range(1,9):
				if self.tokens[i-1] != "@":
					net.SendItemUsePacket(int(self.tokens[i-1]))
	def __clear_button(self):
		open(self.saveName, "w").write("@\t@\t@\t@\t@\t@\t@\t@")					
					
	def	LoadData(self):
		if os.path.exists(self.saveName):
			self.tokens = open(self.saveName, "r").read().split()
		else:
			open(self.saveName, "w").write("@\t@\t@\t@\t@\t@\t@\t@")
			
	def __SetSlot(self, arg):
		self.saveName = "lib/"+str(player.GetName())+str(arg)+".ddr"
		self.LoadData()

	def OverInItem(self, slotNumber):
		if self.tooltipItem:
			self.tooltipItem.SetInventoryItem(int(self.tokens[slotNumber-1]))

	def OnOverOutItem(self):
		if self.tooltipItem:
			self.tooltipItem.HideToolTip()

	def SelectItemSlot(self, itemSlotIndex):
		isAttached = mouseModule.mouseController.isAttached()
		if isAttached:
			attachedSlotType = mouseModule.mouseController.GetAttachedType()
			attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
			itemIndex = player.GetItemIndex(attachedSlotPos)
			itemCount = player.GetItemCount(attachedSlotPos)
			item.SelectItem(itemIndex)
			itemType = item.GetItemType()
			itemSubType = item.GetItemSubType()
				
			
			if itemSlotIndex == 1 and item.IsWearableFlag(item.WEARABLE_BODY):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			elif itemSlotIndex == 2 and item.IsWearableFlag(item.WEARABLE_HEAD):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			elif itemSlotIndex == 3 and item.IsWearableFlag(item.WEARABLE_FOOTS):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			elif itemSlotIndex == 4 and item.IsWearableFlag(item.WEARABLE_WRIST):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			elif itemSlotIndex == 5 and item.IsWearableFlag(item.WEARABLE_WEAPON):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos	
			elif itemSlotIndex == 6 and item.IsWearableFlag(item.WEARABLE_NECK):		
				self.tokens[itemSlotIndex-1] = attachedSlotPos	
			elif itemSlotIndex == 7 and item.IsWearableFlag(item.WEARABLE_EAR):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			elif itemSlotIndex == 8 and item.IsWearableFlag(item.WEARABLE_SHIELD):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			else:		
				return
				
			open(self.saveName, "w").write("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s" % tuple(self.tokens))	
				
			mouseModule.mouseController.DeattachObject()
		
	def OnUpdate(self):	
		tokens = open(self.saveName, "r").read().split()		
		self.tokens = tokens
		for i in range(1,9):	
			if tokens[i-1] == "@":
				self.wndEquip.SetItemSlot(i, 0, 0)
			else:
				itemIndex = player.GetItemIndex(int(tokens[i-1]))
				if itemIndex != 0:
					item.SelectItem(itemIndex)
					if i == 1 and item.IsWearableFlag(item.WEARABLE_BODY):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 2 and item.IsWearableFlag(item.WEARABLE_HEAD):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 3 and item.IsWearableFlag(item.WEARABLE_FOOTS):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 4 and item.IsWearableFlag(item.WEARABLE_WRIST):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 5 and item.IsWearableFlag(item.WEARABLE_WEAPON):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 6 and item.IsWearableFlag(item.WEARABLE_NECK):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 7 and item.IsWearableFlag(item.WEARABLE_EAR):		
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 8 and item.IsWearableFlag(item.WEARABLE_SHIELD):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					else:
						self.wndEquip.SetItemSlot(i, 0, 0)
						self.tokens[i-1] = "@"
						open(self.saveName, "w").write("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s" % tuple(self.tokens))
						continue
				else:
					self.wndEquip.SetItemSlot(i, 0, 0)				
		
	def OnPressEscapeKey(self):
		self.Close()
		return TRUE
 

 

 

 

Ktoś mógłby pomóc mi to poprawić? 

 

Po 24 dam limit lajków osobie która pomoże. 

Opublikowano

Witam, mam problem odnośnie szybkiej zmiany ekwipunku . Po otworzeniu panelu i zamknięciu nie mogę ponownie otworzyć go za pomocą F9, muszę relognąć.

 

Zdefiniowany przycisk

		onPressKeyDict[app.DIK_F8]  = lambda : self.ZmianaEq() 

bo masz ustawiony pod f8

Opublikowano

bo masz ustawiony pod f8

Nie rozumiem co z tego? Nie mogę go ponownie F8 włączyć, a bs'a normalnie mogę.

 

EDIT: Ble literówka... tak czy tak problem pozostaje pod którym F by nie było.

Opublikowano
		try:			
			pyScrLoader = ui.PythonScriptLoader()
			pyScrLoader.LoadScriptFile(self, "uiscript/fastequip.py")
		except:
			import exception
			exception.Abort("CostumeWindow.LoadWindow.LoadObject")

Masz fastequip.py wgrany do uiscript ? Jak już Ci pisałem na pw jak coś nie działa to wstawiaj zawartość syserr

ZAHONnaMPC-1339068796.png

Opublikowano
		try:			
			pyScrLoader = ui.PythonScriptLoader()
			pyScrLoader.LoadScriptFile(self, "uiscript/fastequip.py")
		except:
			import exception
			exception.Abort("CostumeWindow.LoadWindow.LoadObject")
Masz fastequip.py wgrany do uiscript ? Jak już Ci pisałem na pw jak coś nie działa to wstawiaj zawartość syserr

 

Ogólnie sam w sobie EQ changer działa występuje problem po zamknięciu okna przez naciśnięcie ponowne F8 lub X, tym problemem jest, że na F8 już nie reaguje i nie otwiera ponownie szybkiej zmiany eq dopiero po relogu.

 

Rozwiązałem to w game zastępując to:

	def ZmianaEq(self):
		if self.uichange.is_shown == 1:
			self.uichange.Hide()
		else:
			self.uichange.Show() 

tym:

	def ZmianaEq(self):
		import uichange
		self.uichange = uichange.changeequip()
		self.uichange.Show()

Działa to teraz na zasadzie, że możemy otworzyć F8 okno zmiany ekwipunku i zamknąć krzyżykiem (F8 już nie reaguje jako przycisk otwarcia i zamknięcia za to po wyłączeniu krzyżykiem możemy ponownie włączyć EQ changer F8.) 

 

aktualnie wyglada to tak chce dodać 2 sloty w zielonych miejscach mówimy o serwerze Revoria mianowicie do PASA i dodatkowego pierścienia 

 

88a7px.jpg

 

e9989a.jpg

 

Dodałem do uichange.py

 

 

		if itemSlotIndex == 1 and item.IsWearableFlag(item.WEARABLE_BODY):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			elif itemSlotIndex == 2 and item.IsWearableFlag(item.WEARABLE_HEAD):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			elif itemSlotIndex == 3 and item.IsWearableFlag(item.WEARABLE_FOOTS):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			elif itemSlotIndex == 4 and item.IsWearableFlag(item.WEARABLE_WRIST):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			elif itemSlotIndex == 5 and item.IsWearableFlag(item.WEARABLE_WEAPON):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos	
			elif itemSlotIndex == 6 and item.IsWearableFlag(item.WEARABLE_NECK):		
				self.tokens[itemSlotIndex-1] = attachedSlotPos	
			elif itemSlotIndex == 7 and item.IsWearableFlag(item.WEARABLE_EAR):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			elif itemSlotIndex == 8 and item.IsWearableFlag(item.WEARABLE_SHIELD):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			elif itemSlotIndex == 9 and item.IsWearableFlag(item.WEARABLE_BELT):	
				self.tokens[itemSlotIndex-1] = attachedSlotPos
			else:		
				return

 

 

itemSlotIndex == 9 dodany przezmnie

 

 

def OnUpdate(self):	
		tokens = open(self.saveName, "r").read().split()		
		self.tokens = tokens
		for i in range(1,9):	
			if tokens[i-1] == "@":
				self.wndEquip.SetItemSlot(i, 0, 0)
			else:
				itemIndex = player.GetItemIndex(int(tokens[i-1]))
				if itemIndex != 0:
					item.SelectItem(itemIndex)
					if i == 1 and item.IsWearableFlag(item.WEARABLE_BODY):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 2 and item.IsWearableFlag(item.WEARABLE_HEAD):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 3 and item.IsWearableFlag(item.WEARABLE_FOOTS):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 4 and item.IsWearableFlag(item.WEARABLE_WRIST):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 5 and item.IsWearableFlag(item.WEARABLE_WEAPON):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 6 and item.IsWearableFlag(item.WEARABLE_NECK):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 7 and item.IsWearableFlag(item.WEARABLE_EAR):		
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 8 and item.IsWearableFlag(item.WEARABLE_SHIELD):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					elif i == 9 and item.IsWearableFlag(item.WEARABLE_BELT):	
						self.wndEquip.SetItemSlot(i, itemIndex, 0)
					else:
						self.wndEquip.SetItemSlot(i, 0, 0)
						self.tokens[i-1] = "@"
						open(self.saveName, "w").write("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s" % tuple(self.tokens))
						continue
				else:
					self.wndEquip.SetItemSlot(i, 0, 0)				

 

 

tu róznież elif i == 9 and item.IsWearableFlag(item.WEARABLE_BELT): dodałem ja

 

Fizycznie te dodane linijki nic nie zmieniły nie widać slota.

 

Niestety nie wiem dalej co mam robić bo nigdy nie dodawałem slotów do eq etc.

  • 5 miesięcy temu...
Opublikowano

WEAR_BELT jest zdaje sie w src.

Jak chcesz slota widocznego to zmien sciezke do tga bo w tych plikach masz starą, inventorywindow.py tam znajdziesz poprawna.

Nie interesuje mnie czy dasz mi "+" czy "-" jestem tu aby dzielić się swoją wiedzą i czerpać wiedzę od innych.

 

www.antero.pl

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...