Guten Tag,
und zwar will ich meine dxWindow Klasse ein wenig erweitern und hierbei wird nun ein Event im Constructor erstellt:
function dxWindow:New (x,y,w,h,title,enable,relative)
local self = setmetatable({},{__index = self})
self.activ = true
if ( relative ) then
self.x = x
self.y = y
self.w = w
self.h = h
else
self.x = gx*(x/gpx)
self.y = gy*(y/gpy)
self.w = gx*(w/gpx)
self.h = gy*(h/gpy)
end
self.r = 0
self.g = 0
self.b = 0
self.a = 100
self.enable = enable
self.title = title
self.visible = true
self.render = function() self:onRender() end
self.click = function( key, state ) self:onExit( key, state ) end
addEventHandler("onClientRender",root,self.render)
addEventHandler("onClientClick",root,self.click)
addEvent("onDXWindowDestroy",true) -- Hier ist das Event
return self
end
Alles anzeigen
Soweit bis hierhin. Nun kann man ganz oben rechts auf ein Kreuz drücken, damit das Event ausgeführt wird:
function dxWindow:onExit( key, state )
if ( self.activ ) then
if ( self.visible ) then
if ( key == "left" and state == "down" ) then
if ( getCursorArea(self.x+self.w-20,self.y,self.x+self.w,self.y+15) ) then
triggerEvent("onDXWindowDestroy",root)
end
end
end
end
end
Alles anzeigen
Hier wird nun das Event getriggert, und sollte dementsprechend allen addEventHandler`s sagen, führe nun deine Aufgabe aus.
Jedoch will ich, dass nicht alle Windows geschlossen werden sollen, also brauche ich eine Abfrage, was jedoch nicht so klappt wie geplant ( Hier ist die Abfrage ) :
local window
local win
function lift_window ( )
if ( state == false ) then
state = true
window = dxWindow:New(557, 161, 242, 340,"Santos Depository Lift",true,false)
win = dxWindow:New(0, 0, 100, 100,"Santos Depository Lift",true,false) -- Hier werden sie gebildet
addEventHandler("onDXWindowDestroy",root,lift_window_destroy) -- Das sind die EventHandler
addEventHandler("onDXWindowDestroy",root,lift_window_second)
end
end
function lift_window_destroy ( )
outputDebugString(tostring(source))
source:destroy() -- "Zum test"
if ( state == true and source == window ) then -- Hier vergleiche ich sie mit source
removeEventHandler("onClientRender",root,l_w_render)
removeEventHandler("onDXWindowDestroy",root,lift_window_destroy)
window:destroy()
list:destroy()
state = false
end
end
function lift_window_second( ) --- Dazu da um es für zwei zu testen
if ( source == win ) then
win:destroy()
end
end
Alles anzeigen
Der Code klappt nicht wie geplant, und später sagt er mir als Error vom outputDebugString attempt to index global source < a userdata value >
Dabei vergleich ich die dxWindows mit source, da
Ich hoffe ihr könnt mir weiterhelfen.
Mfg Iven