Metin2 Hungarian Forum

Metin2 => Segítség => Szerver készítés => Privát szerverek => Archívum => A témát indította: zalanka Dátum 2015-03-10, 17:21:52

Cím: Gombra megnyitó parancs (i)
Írta: zalanka Dátum 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?
Cím: Re:Gombra megnyitó parancs?
Írta: 5310pati Dátum 2015-03-10, 17:24:12
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
Cím: Re:Gombra megnyitó parancs?
Írta: zalanka Dátum 2015-03-10, 18:50:33
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
Cím: Re:Gombra megnyitó parancs?
Írta: 5310pati Dátum 2015-03-10, 19:40:08
nem lehet hogy a python rossz amit meg akarsz nyitni és ezért nem csinál semmit?
Cím: Re:Gombra megnyitó parancs?
Írta: zalanka Dátum 2015-03-10, 20:04:17
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
Cím: Re:Gombra megnyitó parancs?
Írta: 5310pati Dátum 2015-03-10, 20:53:47
próbáld meg esetleg a Kosztüm gombot lemásolni az ItemShopos érme helyett :D
Cím: Re:Gombra megnyitó parancs?
Írta: zalanka Dátum 2015-03-10, 20:59:09
Ez elvileg a tárgy piac raktár gombja
Cím: Re:Gombra megnyitó parancs?
Írta: zalanka Dátum 2015-03-10, 21:18:08
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
Cím: Re:Gombra megnyitó parancs?
Írta: 5310pati Dátum 2015-03-10, 21:25:16
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
Cím: Re:Gombra megnyitó parancs?
Írta: zalanka Dátum 2015-03-10, 23:00:17
Holnap majd összehozom valahogy, köszi amúgy !:)
Ment a +
EhPortal 1.39 © 2025, WebDev