[EQ Changer] Einfügen in den 40k Clienten

02/12/2015 12:15 Himmelsgarde™#1
Hallo Com,

wie bereits in der Überschrift steht, möchte ich gerne den EQ Changer:

[Only registered and activated users can see links. Click Here To Register...]

in meinen Clienten (40k von Viruz) einbauen. Nun kommen folgende Probleme:

#1: Hier erstmal die Dateien die dafür benötigt sind: (evt. muss da was
geändert werden.

ROOT:

constinfo.py:

Code:
FAST_PAGE = 1
FAST_EQUIP = 0
game.py:

Code:
		onPressKeyDict[app.DIK_F7]	= lambda : self.__quikeqchange()

	def __quikeqchange(self):
		import uifastequip
		self.uuifastequipDlg = uifastequip.changeequip()
		self.uuifastequipDlg.Show()
uifastequip.py:

Code:
import snd
import item
import chat
import player
import locale
import grpText
import uiRefine
import constInfo
import uiToolTip
import mouseModule
import uiAttachMetin
import uiScriptLocale

class changeequip(ui.ScriptWindow):
	def __init__(self):
		import exception
		ui.ScriptWindow.__init__(self)
		self.wndEquip = None
		self.tokens = None
		self.tooltipItem = uiToolTip.ItemToolTip()
		self.tooltipItem.Hide()
		if constInfo.FAST_PAGE == 1:
			self.saveName = "lib/FastEquipPage1.pyc"
		elif constInfo.FAST_PAGE == 2:
			self.saveName = "lib/FastEquipPage2.pyc"
		elif constInfo.FAST_PAGE == 3:
			self.saveName = "lib/FastEquipPage3.pyc"
		elif constInfo.FAST_PAGE == 4:
			self.saveName = "lib/FastEquipPage4.pyc"

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

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

	def Close(self):
		constInfo.FAST_EQUIP = 0
		snd.PlaySound("sound/ui/click.wav")
		self.Hide()

	def __LoadWindow(self):
		try:			
			pyScrLoader = ui.PythonScriptLoader()
			pyScrLoader.LoadScriptFile(self, "uiscript/fastequip_window.py")
		except:
			import exception
			exception.Abort("CostumeWindow.LoadWindow.LoadObject")
		
		self.wndEquip = self.GetChild("equipslot")
		self.bottone_change = self.GetChild("change_button")
		self.clear_button = self.GetChild("clear_button")
		self.TitleBar = self.GetChild("TitleBar")
		self.pag1_button = self.GetChild("page1_button")
		self.pag2_button = self.GetChild("page2_button")
		self.pag3_button = self.GetChild("page3_button")
		self.pag4_button = self.GetChild("page4_button")
		
		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.SetEvent(ui.__mem_func__(self.__clear_button))
		self.pag1_button.SAFE_SetEvent(self.__pag1_button)
		self.pag2_button.SetEvent(ui.__mem_func__(self.__pag2_button))
		self.pag3_button.SetEvent(ui.__mem_func__(self.__pag3_button))
		self.pag4_button.SetEvent(ui.__mem_func__(self.__pag4_button))
		
		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@\t@")
		
		button = self.GetChild("page1_button")
		button.Down()

	def __clear_button(self):
		if constInfo.FAST_PAGE == 1:
			self.saveName = "lib/FastEquipPage1.pyc"
			if os.path.exists(self.saveName):
				os.remove(self.saveName)
				open(self.saveName, "w").write("@\t@\t@\t@\t@\t@\t@\t@\t@")
		elif constInfo.FAST_PAGE == 2:
			self.saveName = "lib/FastEquipPage2.pyc"
			if os.path.exists(self.saveName):
				os.remove(self.saveName)
				open(self.saveName, "w").write("@\t@\t@\t@\t@\t@\t@\t@\t@")
		elif constInfo.FAST_PAGE == 3:
			self.saveName = "lib/FastEquipPage3.pyc"
			if os.path.exists(self.saveName):
				os.remove(self.saveName)
				open(self.saveName, "w").write("@\t@\t@\t@\t@\t@\t@\t@\t@")
		elif constInfo.FAST_PAGE == 4:
			self.saveName = "lib/FastEquipPage4.pyc"
			if os.path.exists(self.saveName):
				os.remove(self.saveName)
				open(self.saveName, "w").write("@\t@\t@\t@\t@\t@\t@\t@\t@")

	def __pag1_button(self):
		constInfo.FAST_PAGE = 1
		button2 = self.GetChild("page2_button")
		button3 = self.GetChild("page3_button")
		button4 = self.GetChild("page4_button")
		button2.SetUp()
		button3.SetUp()
		button4.SetUp()
		
		self.saveName = "lib/FastEquipPage1.pyc"
		if os.path.exists(self.saveName):
			open(self.saveName, "r").read().split()
		else:
			open(self.saveName, "w").write("@\t@\t@\t@\t@\t@\t@\t@\t@")

	def __pag2_button(self):
		constInfo.FAST_PAGE = 2
		button1 = self.GetChild("page1_button")
		button3 = self.GetChild("page3_button")
		button4 = self.GetChild("page4_button")
		button1.SetUp()
		button3.SetUp()
		button4.SetUp()
		
		self.saveName = "lib/FastEquipPage2.pyc"
		if os.path.exists(self.saveName):
			open(self.saveName, "r").read().split()
		else:
			open(self.saveName, "w").write("@\t@\t@\t@\t@\t@\t@\t@\t@")

	def __pag3_button(self):
		constInfo.FAST_PAGE = 3
		button1 = self.GetChild("page1_button")
		button2 = self.GetChild("page2_button")
		button4 = self.GetChild("page4_button")
		button1.SetUp()
		button2.SetUp()
		button4.SetUp()
		
		self.saveName = "lib/FastEquipPage3.pyc"
		if os.path.exists(self.saveName):
			open(self.saveName, "r").read().split()
		else:
			open(self.saveName, "w").write("@\t@\t@\t@\t@\t@\t@\t@\t@")

	def __pag4_button(self):
		constInfo.FAST_PAGE = 4
		button1 = self.GetChild("page1_button")
		button2 = self.GetChild("page2_button")
		button3 = self.GetChild("page3_button")
		button1.SetUp()
		button2.SetUp()
		button3.SetUp()
		
		self.saveName = "lib/FastEquipPage4.pyc"
		if os.path.exists(self.saveName):
			open(self.saveName, "r").read().split()
		else:
			open(self.saveName, "w").write("@\t@\t@\t@\t@\t@\t@\t@\t@")

	def __change_button(self):
		for i in range(1,10):
			if self.tokens[i-1] != "@":
				net.SendItemUsePacket(int(self.tokens[i-1]))	

	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 item.IsWearableFlag(item.WEARABLE_BODY):
				self.tokens[1-1] = attachedSlotPos
				snd.PlaySound("sound/ui/equip_metal_armor.wav")
			elif item.IsWearableFlag(item.WEARABLE_HEAD):
				self.tokens[2-1] = attachedSlotPos
				snd.PlaySound("sound/ui/drop.wav")
			elif item.IsWearableFlag(item.WEARABLE_FOOTS):
				self.tokens[3-1] = attachedSlotPos
				snd.PlaySound("sound/ui/drop.wav")
			elif item.IsWearableFlag(item.WEARABLE_WRIST):
				self.tokens[4-1] = attachedSlotPos
				snd.PlaySound("sound/ui/drop.wav")
			elif item.IsWearableFlag(item.WEARABLE_WEAPON):
				self.tokens[5-1] = attachedSlotPos
				if itemSubType == 2:
					snd.PlaySound("sound/ui/equip_bow.wav")
				else:
					snd.PlaySound("sound/ui/equip_metal_weapon.wav")
			elif item.IsWearableFlag(item.WEARABLE_NECK):
				self.tokens[6-1] = attachedSlotPos
				snd.PlaySound("sound/ui/equip_ring_amulet.wav")
			elif item.IsWearableFlag(item.WEARABLE_EAR):
				self.tokens[7-1] = attachedSlotPos
				snd.PlaySound("sound/ui/equip_ring_amulet.wav")
			elif item.IsWearableFlag(item.WEARABLE_SHIELD):
				self.tokens[8-1] = attachedSlotPos
				snd.PlaySound("sound/ui/drop.wav")
			elif item.IsWearableFlag(item.WEARABLE_ARROW):
				self.tokens[9-1] = attachedSlotPos
				snd.PlaySound("sound/ui/drop.wav")
			else:
				return
			
			open(self.saveName, "w").write("%s\t%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,10):	
			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_ARROW):
						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\t%s" % tuple(self.tokens))
						continue
				else:
					self.wndEquip.SetItemSlot(i, 0, 0)				

	def OnPressEscapeKey(self):
		self.Close()
		snd.PlaySound("sound/ui/click.wav")
		return TRUE
# -->
uiscript

fastequip_window:

Code:
## -- ©2013, ®iWizz™. --
## ---------------------

# --<
import item
import uiScriptLocale

window = {
	"name" : "FastEquipWindow",
	
	"x" : SCREEN_WIDTH - 360,
	"y" : 140,
	
	"style" : ("movable", "float",),
	
	"width" : 212,
	"height" : 290,
	
	"children" :
	(
		{
			"name" : "board",
			"type" : "board",
			"style" : ("attach",),
			
			"x" : 0,
			"y" : 0,
			
			"width" : 212,
			"height" : 290,
			
			"children" :
			(
				{
					"name" : "TitleBar",
					"type" : "titlebar",
					"style" : ("attach",),
					
					"x" : 6,
					"y" : 6,
					
					"width" : 200,
					"color" : "yellow",
					
					"children" :
					(
						{ "name":"TitleName", "type":"text", "x":100, "y":3, "text":uiScriptLocale.FAST_EQUIP, "text_horizontal_align":"center" },
					),
				},
				
				{
					"name" : "equip_Base",
					"type" : "image",
					
					"x" : 27,
					"y" : 38,
					
					"image" : "d:/ymir work/ui/game/windows/fastequip_base.sub",
				},
				
				{
					"name" : "equipslot",
					"type" : "slot",
					"x" : 30,
					"y" : 41,
					
					"width" : 145,
					"height" : 172,
					
					"slot" : (
								{"index":1, "x":41, "y":37, "width":32, "height":64},
								{"index":2, "x":41, "y":2, "width":32, "height":32},
								{"index":3, "x":41, "y":145, "width":32, "height":32},
								{"index":4, "x":75, "y":67, "width":32, "height":32},
								{"index":5, "x":3, "y":3, "width":32, "height":96},
								{"index":6, "x":114, "y":84, "width":32, "height":32},
								{"index":7, "x":114, "y":52, "width":32, "height":32},
								{"index":8, "x":75, "y":35, "width":32, "height":32},
								{"index":9, "x":114, "y":1, "width":32, "height":32},
							),
				},
				
				{
					"name" : "change_button",
					"type" : "button",
					
					"x" : 16,
					"y" : 235,
					
					"text" : "Cambia",
					
					"default_image" : "d:/ymir work/ui/public/Large_Button_01.sub",
					"over_image" : "d:/ymir work/ui/public/Large_Button_02.sub",
					"down_image" : "d:/ymir work/ui/public/Large_Button_03.sub",
				},
				
				{
					"name" : "clear_button",
					"type" : "button",
					
					"x" : 109,
					"y" : 235,
					
					"text" : "Reset",
					
					"default_image" : "d:/ymir work/ui/public/Large_Button_01.sub",
					"over_image" : "d:/ymir work/ui/public/Large_Button_02.sub",
					"down_image" : "d:/ymir work/ui/public/Large_Button_03.sub",
				},
				
				{
					"name" : "page1_button",
					"type" : "radio_button",
					
					"x" : 10,
					"y" : 260,
					
					"text" : "Equip 1",
					
					"default_image" : "d:/ymir work/ui/public/Small_Button_01.sub",
					"over_image" : "d:/ymir work/ui/public/Small_Button_02.sub",
					"down_image" : "d:/ymir work/ui/public/Small_Button_03.sub",
				},
				
				{
					"name" : "page2_button",
					"type" : "radio_button",
					
					"x" : 60,
					"y" : 260,
					
					"text" : "Equip 2",
					
					"default_image" : "d:/ymir work/ui/public/Small_Button_01.sub",
					"over_image" : "d:/ymir work/ui/public/Small_Button_02.sub",
					"down_image" : "d:/ymir work/ui/public/Small_Button_03.sub",
				},
				
				{
					"name" : "page3_button",
					"type" : "radio_button",
					
					"x" : 110,
					"y" : 260,
					
					"text" : "Equip 3",
					
					"default_image" : "d:/ymir work/ui/public/Small_Button_01.sub",
					"over_image" : "d:/ymir work/ui/public/Small_Button_02.sub",
					"down_image" : "d:/ymir work/ui/public/Small_Button_03.sub",
				},
				
				{
					"name" : "page4_button",
					"type" : "radio_button",
					
					"x" : 160,
					"y" : 260,
					
					"text" : "Equip 4",
					
					"default_image" : "d:/ymir work/ui/public/Small_Button_01.sub",
					"over_image" : "d:/ymir work/ui/public/Small_Button_02.sub",
					"down_image" : "d:/ymir work/ui/public/Small_Button_03.sub",
				},
			),
		},
	),
}
# -->
ymir work\ui\game\windows

fastequip_base:

Code:
title subImage
version 1.0
image "fastequip_window.dds"
left 0
top 152
right 156
bottom 340
ymir work\ui

Da ist die .dds drin

PS: Bei meinem Clienten ist keine ymir work.eix/epk drin! Wichtig?!

Sooo, das dazu, jetzt sofern ich das alles so einfüge, die

Code:
import locale
zu
Code:
import localeInfo as locale
geändert, wegen 40k right? :rolleyes:

Ja und dann die ymir work einfach gepackt als eix/epk und dann beim
starten erscheint folgende Meldung:

Quote:
[Only registered and activated users can see links. Click Here To Register...]
Bitte um Hilfe, finde das echt genial für den Server :handsdown:
02/12/2015 13:06 DerForenLeser#2
ymir work ist ein Ordner in der locale_de. Locale_de > locale > de > ymir work und dort findest Du die restlichen Verzeichnisse. Da müssen die entsprechenden Dateien herein.
02/12/2015 13:09 .K0rí#3
So Guten Tag,

Ich habe es dir mal eingebaut, und lade dir auch alles als Anhang mit hoch.
Was du machen musst:

entpacke deine root und füge einfach alles ein! alle Ordner und sachen in die root rein und dann packen, du musst keine neue eix/epk erstellen dafür.

Testen konnte ich es nicht, da ich auf Arbeit bin, fals fehler kommen, hier rein posten ich kümmerre mich dann.

Mit freundlichen Grüßen
.Kori
02/12/2015 13:50 Himmelsgarde™#4
Quote:
Originally Posted by DerForenLeser View Post
ymir work ist ein Ordner in der locale_de. Locale_de > locale > de > ymir work und dort findest Du die restlichen Verzeichnisse. Da müssen die entsprechenden Dateien herein.
Auch da ist keine ymir work vorhanden, bei diesem Clienten. :rolleyes:

Quote:
Originally Posted by .K0rí View Post
So Guten Tag,

Ich habe es dir mal eingebaut, und lade dir auch alles als Anhang mit hoch.
Was du machen musst:

entpacke deine root und füge einfach alles ein! alle Ordner und sachen in die root rein und dann packen, du musst keine neue eix/epk erstellen dafür.

Testen konnte ich es nicht, da ich auf Arbeit bin, fals fehler kommen, hier rein posten ich kümmerre mich dann.

Mit freundlichen Grüßen
.Kori
Habe alles in die Root gepackt samt uiscipt Ordner etc. allerdings InGame
nichts zu finden. Laut Video muss man ja den Button unten in der Chat-
Leiste drücken in der Mitte, aber da erscheint leider rein gar nichts.
02/12/2015 14:57 .K0rí#5
onPressKeyDict[app.DIK_F7] = lambda : self.__quikeqchange()

Mit F7 holst du es :D
02/12/2015 15:05 Triona2#6
Aber kannst du das auch umcoden das man es mit einen button öffnet?

MFG Team Triona2
02/15/2015 11:48 Himmelsgarde™#7
@Push, hat sich immer noch nicht geklärt, weiß jemand Rat?