Also ich mach das so, dass ich für solche Fälle in LUA reinschaue.
Da wirds dann interessant...
folgendes steht bei meiner Test-Cartridge drin:
Code:
function objAktuelleZone:OnStart()
end
function objAktuelleZone:OnRestore()
end
function objTestzone1:OnEnter()
currentZone = "objTestzone1"
_Urwigo.GlobalZoneEnter()
end
function objTestzone1:OnExit()
currentZone = "objTestzone1"
_Urwigo.GlobalZoneExit()
objTestgegenstand1:MoveTo(objTestzone2)
end
function objTestzone2:OnEnter()
currentZone = "objTestzone2"
_Urwigo.GlobalZoneEnter()
end
function objTestzone2:OnExit()
currentZone = "objTestzone2"
_Urwigo.GlobalZoneExit()
objTestgegenstand1:MoveTo(objTestzone1)
end
function objTestgegenstand1:Oncmdablegen(target)
objTestgegenstand1:MoveTo(currentZone)
end
function objTestgegenstand1:Oncmdaufnehmen(target)
objTestgegenstand1:MoveTo(Player)
end
function _Urwigo.GlobalZoneEnter()
_Urwigo.MessageBox{
Text = "Du betrittst jetzt die Zone: ".._G[currentZone].Name
}
end
function _Urwigo.GlobalZoneExit()
_Urwigo.MessageBox{
Text = "Du verlasst jetzt die Zone: ".._G[currentZone].Name
}
end
Was man deutlich sieht, wenn man über Urwigo auf den Namen der aktuellen Zone zugreift, dann
erzeugt Urwigo ein Konstrukt _G[currentZone].Name.
currentZone ist gemäß obigem Code ein String und nicht das Zonen-Objekt, das genau ist das Problem.
Die Lösung des Problems ist allerdings auch angegeben - die Zone muss mit _G[currentZone] angesprochen werden können - also muss hier vermutlich ein LUA benutzerdefinierter Ausdruck her...
wo auch immerdie Table _G herkommt, das hab ich jetzt noch nicht herausfinden können...
...und da wirds auch gleich problematisch - Urwigo frisst beim MoveTo keinen benutzerdefinierten Ausdruck - da wird man über ne LUA-Zeile arbeiten müssen...d.h. dem Gegenstand eine Kennung verpassen und das Move-Statement selber schreiben...