Gombra megnyitó parancs (i)

Indította zalanka, 2015-03-10, 17:21:52

Sziasztok!
Csináltam egy gombot, de nem tudom, hogyan lehetne egy olyan funkciót rárakni, hogy egy adott .py fájlt töltsön be.

Valakinek ötlete?

2015-03-10, 17:24:12 #1 Utolsó szerkesztés: 2015-03-10, 17:40:28 Szerző: 5310pati
import pythonneve

ezt a betöltést szinte minden python fájl elején meg is találod amúgy :D

egy példa ha nem menne
maga a gomb:
WhisButton = ui.Button()
WhisButton.SetText("")
WhisButton.SetPosition(wndMgr.GetScreenWidth()-135,200)
WhisButton.SetSize(88,21)
WhisButton.SetEvent(self.Funkcio)
WhisButton.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
WhisButton.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
WhisButton.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
WhisButton.Show()

és amit csináljon ha rákattintanak(SetEvent)
ha csak be akarsz tölteni egy pythont:
def Funkcio(self):
import pythonneve

Köszi!  ;D

De sajnos ha rá kattintok nem csinál semmit.
Syserr nem ír semmit.
Meg így az egyik gomb se működik.

Esetleg tudnál adni egy leírást, mert vagy 8x kezdtem neki, de nem jött össze.
Meg próbáltam a leltárba is berakni, ott a "MallButton" alapján csináltam mindent, de akkor sem tökéletes.

:o

De még megnézem párszor, hátha elnézek valamit

nem lehet hogy a python rossz amit meg akarsz nyitni és ezért nem csinál semmit?

F7-re reagál, de át akarom rakni az inventoryba.

self.costumeButton = self.GetChild2("CostumeButton")
self.FcsButton = self.GetChild2("FcsButton")


# MallButton
if self.mallButton:
self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))

# FcsButton
if self.FcsButton:
self.FcsButton.SetEvent(ui.__mem_func__(self.ClickFcsButton))


def ClickMallButton(self):
print "click_mall_button"
net.SendChatPacket("/click_mall")

def ClickFcsButton(self):
import uifastequip


inventorywindow:
## Felszerelés cserélő
{
"name" : "FcsButton",
"type" : "button",

"x" : 87,
"y" : 150,

"tooltip_text" : uiScriptLocale.FAST_EQUIP,

"default_image" : "d:/ymir work/ui/game/taskbar/costume_Button_01.tga",
"over_image" : "d:/ymir work/ui/game/taskbar/costume_Button_02.tga",
"down_image" : "d:/ymir work/ui/game/taskbar/costume_Button_03.tga",
},


Ehhez kellene még valami, mert nem találtam? :o

próbáld meg esetleg a Kosztüm gombot lemásolni az ItemShopos érme helyett :D

Ez elvileg a tárgy piac raktár gombja

Esetleg meg tudnád nézni ezt a Felszerelés cserélő rendszert, hogy mégis, hogyan kellene behívni a funkcióba?
http://metin2hungary.net/index.php/topic,188279.0.html

hát nem használtam még ilyet, de ajánlani tudom ew-t :D
onPressKeyDict[app.DIK_F5] = lambda : self._VectorsHzl()
def _VectorsHzl(self):
import uiVectorsHzl
self.VectorsHzl = uiVectorsHzl.VectorsKSK()
self.VectorsHzl.Show()

uivectorshzl.py
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 VectorsKSK(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.vctrs"

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

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

def Close(self):
self.Hide()

def __LoadWindow(self):
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "uiscript/VectorsHzl.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.Vectors0 = self.GetChild("Vectors0")
self.Vectors1 = self.GetChild("Vectors1")
self.Vectors2 = self.GetChild("Vectors2")
self.Vectors3 = self.GetChild("Vectors3")
self.Vectors4 = self.GetChild("Vectors4")

self.Vectors0.SetEvent(ui.__mem_func__(self.__SetSlot), 1)
self.Vectors1.SetEvent(ui.__mem_func__(self.__SetSlot), 2)
self.Vectors2.SetEvent(ui.__mem_func__(self.__SetSlot), 3)
self.Vectors3.SetEvent(ui.__mem_func__(self.__SetSlot), 4)
self.Vectors4.SetEvent(ui.__mem_func__(self.__SetSlot), 5)

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

Holnap majd összehozom valahogy, köszi amúgy !:)
Ment a +