Hallo Freunde,
ich habe gerade ein Problem, welches ich nicht lösen kann.
Ich möchte, dass ein Server-Event aufgerufen wird. Mitgegeben werden sollen: Der Spieler, das Object und der Typ (Gridlist).
Das Object brauche ich, um in der server.lua die Position von diesem herauszubekommen.
Außerdem soll geprüft werden, ob sich das Object in einem colRectangle befindet (einem bestimmten)
Mein Problem ist nun aber : das Event createObjectOnBase wird einfach nicht aufgerufen. Ich bekomme keinerlei Fehlermeldung.
Ich habe auch schon versucht, ganz oben in der Funktion mir eine outputChatBox-Nachricht ausgeben zu lassen - diese wurde auch nicht angezeigt.
Client:
Spoiler anzeigen
local selectedRow, selectedColumn = guiGridListGetSelectedItem(Obj_Gridlist)
if (selectedRow and selectedColumn and selectedRow ~= -1 and selectedColumn ~= -1) then else return end
outputChatBox("Test1") -- Diese Nachricht wird noch angezeigt
triggerServerEvent("createObjectOnBase", localPlayer, localPlayer, Current_Map_Obj, guiGridListGetItemText(Obj_Gridlist, selectedRow, ObjTyp))
guiGridListClear(Obj_Gridlist)
triggerServerEvent("loadObject", localPlayer, localPlayer)
destroyElement(Current_Map_Obj)
Current_Map_Obj = false
Server:
Spoiler anzeigen
Basepfad = "Basesystem/Bases.xml"
--Befindet sich das zu platzierende Objekt in dem Rectangle der Base?
function isObjectInBase(player, Element)
if checkClanBase(getPlayersClan(player)) == true then else infobox(player, "Du bist in keinem Clan!", "You are not in a clan!", 3000, 255, 0, 0, 255, 0, 0) return end
for i, v in pairs(Base_Table) do
if v.Besitzer == getPlayersClan(player) then
if isElementWithinColShape(Element, v.Gebiet) then
return true
end
end
end
end
--Platziere das Obj, lan
Obj_Placed = {}
Objs_Number = 0
addEvent("createObjectOnBase", true)
addEventHandler("createObjectOnBase", getRootElement(),
function(player, Object, Typ)
outputChatBox(Typ)
if isObjectInBase(player, Object) == true then else infobox(player, "Du kannst dies nur in deiner Base platzieren!", "You cant place this Object here!\nPut the object in your base!", 3000, 255, 0, 0, 255, 0, 0) return end
local Datei = xmlLoadFile(Basepfad)
if Datei then else outputChatBox("Error: Base.xml konnte nicht geladen werden!", getRootElement(), 255, 0, 0) return end
local Child = xmlFindChild(Datei, "Bases", 0)
for i, v in ipairs(xmlNodeGetChildren(Child)) do
if xmlNodeGetAttribute(v, "Besitzer") == getPlayersClan(player) then
local Map = xmlFindChild(v, "Map", 0)
local NeuObj = xmlCreateChild(Map)
local Modell = getElementModel(Object)
local x, y, z = getElementPosition(Object)
local r1, r2, r3 = getElementRotation(Object)
local Dim, Int = getElementDimension(Object), getElementInterior(Object)
xmlNodeSetAttribute(NeuObj, "Modell", Modell)
xmlNodeSetAttribute(NeuObj, "Typ", Typ)
xmlNodeSetAttribute(NeuObj, "x", x)
xmlNodeSetAttribute(NeuObj, "y", y)
xmlNodeSetAttribute(NeuObj, "z", z)
xmlNodeSetAttribute(NeuObj, "int", Int)
xmlNodeSetAttribute(NeuObj, "dim", Dim)
xmlNodeSetAttribute(NeuObj, "r1", r1)
xmlNodeSetAttribute(NeuObj, "r2", r2)
xmlNodeSetAttribute(NeuObj, "r3", r3)
Objs_Number = Objs_Number +1
Obj_Placed[Objs_Number] = {}
removeClanObjekt(getPlayersClan(player), Modell, 1, false)
end
end
xmlSaveFile(Datei)
xmlUnloadFile(Datei)
end)
Alles anzeigen
(Sämtliche Funktionen wie z.b. getPlayersClan existieren und wurden erfolgreich getestet!)
Mfg KeksKing