Atoom
18.05.2008, 22:38
Da es mich stört wenn man seinen Char umkleiden wollte immer das Inventar aufmachen muss und dann alle Teile einzeln umziehen muss, wollt ich mal ein Pi schreiben mit dem Man bestimmte Kleidungs- und WaffFensets speichern und bei bedarf schnell wechseln kann. Vorher wollt ich aber noch mal fragen ob nicht einer schon so ein Pi kennt, damit ich nicht völlig unnötig was fabriziere was eh schon existiert.
edit: ich hab die skripts zwar schon geschrieben, aber ich hab damit ein Problem:
Erst mal des Script des zur auswahl und festlegung der Sets dient (liegt auf nem Misc Item, desweiteren wird die OBSE-Funktion "getequippedobject"):
scn aasetmainactivatorSCRIPT
ref foot1
ref lowerbody1
ref tail1
ref upperbody1
ref hand1
ref leftring1
ref rightring1
ref amulet1
ref head1
ref hair1
ref weapon1
ref ammo1
ref foot2
ref lowerbody2
ref tail2
ref upperbody2
ref hand2
ref leftring2
ref rightring2
ref amulet2
ref head2
ref hair2
ref weapon2
ref ammo2
ref foot3
ref lowerbody3
ref tail3
ref upperbody3
ref hand3
ref leftring3
ref rightring3
ref amulet3
ref head3
ref hair3
ref weapon3
ref ammo3
short button
short start
begin onequip
messagebox "Was wollt ihr tun?", "Set 1 speichern", "Set 1 löschen", "Set 2 speichern", "Set 2 löschen", "Set 3 speichern", "Set 3 löschen", "Nichts"
set start to 1
end
begin gamemode
set button to getbuttonpressed
if button > -1 && start == 1
set start to 0
if button == 0
set foot1 to player.getequippedobject 5
set lowerbody1 to player.getequippedobject 3
set tail1 to player.getequippedobject 15
set upperbody1 to player.getequippedobject 2
set hand1 to player.getequippedobject 4
set leftring1 to player.getequippedobject 7
set rightring1 to player.getequippedobject 6
set amulet1 to player.getequippedobject 8
set head1 to player.getequippedobject 0
set hair1 to player.getequippedobject 1
set weapon1 to player.getequippedobject 16
set ammo1 to player.getequippedobject 17
if player.getitemcount aaset1orb == 0
player.additem aaset1orb 1
endif
messagebox "Was ihr gerade tragt wurde als Set 1 abgespeichert."
set button to -1
elseif button == 1
if player.getitemcount aaset1orb == 1
player.removeitem aaset1orb 1
endif
messagebox "Set 1 gelöscht."
set button to -1
elseif button == 2
set foot2 to player.getequippedobject 5
set lowerbody2 to player.getequippedobject 3
set tail2 to player.getequippedobject 15
set upperbody2 to player.getequippedobject 2
set hand2 to player.getequippedobject 4
set leftring2 to player.getequippedobject 7
set rightring2 to player.getequippedobject 6
set amulet2 to player.getequippedobject 8
set head2 to player.getequippedobject 0
set hair2 to player.getequippedobject 1
set weapon2 to player.getequippedobject 16
set ammo2 to player.getequippedobject 17
if player.getitemcount aaset2orb == 0
player.additem aaset2orb 1
endif
messagebox "Was ihr gerade tragt wurde als Set 2 abgespeichert."
set button to -1
elseif button == 3
if player.getitemcount aaset2orb == 1
player.removeitem aaset2orb 1
endif
messagebox "Set 2 gelöscht."
set button to -1
elseif button == 4
set foot3 to player.getequippedobject 5
set lowerbody3 to player.getequippedobject 3
set tail3 to player.getequippedobject 15
set upperbody3 to player.getequippedobject 2
set hand3 to player.getequippedobject 4
set leftring3 to player.getequippedobject 7
set rightring3 to player.getequippedobject 6
set amulet3 to player.getequippedobject 8
set head3 to player.getequippedobject 0
set hair3 to player.getequippedobject 1
set weapon3 to player.getequippedobject 16
set ammo3 to player.getequippedobject 17
if player.getitemcount aaset3orb == 0
player.additem aaset3orb 1
endif
messagebox "Was ihr gerade tragt wurde als Set 3 abgespeichert."
set button to -1
elseif button == 5
if player.getitemcount aaset3orb == 1
player.removeitem aaset3orb 1
endif
messagebox "Set 3 gelöscht."
set button to -1
endif
endif
end
und Hier eins der Skripte das auf den Misc Items der Sets liegt:
scn aaset1orbSCRIPT
ref foot1orb
ref lowerbody1orb
ref tail1orb
ref upperbody1orb
ref hand1orb
ref leftring1orb
ref rightring1orb
ref amulet1orb
ref head1orb
ref hair1orb
ref weapon1orb
ref ammo1orb
short equipped
short start
begin onequip
set start to 1
message "DEBUG:Start"
end
begin gamemode
if start == 1
set start to 0
if equipped == 0
message "DeBUG:Begin"
set foot1orb to aasetmainactivatorREF.foot1
set lowerbody1orb to aasetmainactivatorREF.lowerbody1
set tail1orb to aasetmainactivatorREF.tail1
set upperbody1orb to aasetmainactivatorREF.upperbody1
set hand1orb to aasetmainactivatorREF.hand1
set leftring1orb to aasetmainactivatorREF.leftring1
set rightring1orb to aasetmainactivatorREF.rightring1
set amulet1orb to aasetmainactivatorREF.amulet1
set head1orb to aasetmainactivatorREF.head1
set hair1orb to aasetmainactivatorREF.hair1
set weapon1orb to aasetmainactivatorREF.weapon1
set ammo1orb to aasetmainactivatorREF.ammo1
player.equipitem foot1orb
player.equipitem lowerbody1orb
player.equipitem tail1orb
player.equipitem upperbody1orb
player.equipitem hand1orb
player.equipitem leftring1orb
player.equipitem rightring1orb
player.equipitem amulet1orb
player.equipitem head1orb
player.equipitem hair1orb
player.equipitem weapon1orb
player.equipitem ammo1orb
message "Set 1 angelegt."
set equipped to 1
elseif equipped == 1
set foot1orb to aasetmainactivatorREF.foot1
set lowerbody1orb to aasetmainactivatorREF.lowerbody1
set tail1orb to aasetmainactivatorREF.tail1
set upperbody1orb to aasetmainactivatorREF.upperbody1
set hand1orb to aasetmainactivatorREF.hand1
set leftring1orb to aasetmainactivatorREF.leftring1
set rightring1orb to aasetmainactivatorREF.rightring1
set amulet1orb to aasetmainactivatorREF.amulet1
set head1orb to aasetmainactivatorREF.head1
set hair1orb to aasetmainactivatorREF.hair1
set weapon1orb to aasetmainactivatorREF.weapon1
set ammo1orb to aasetmainactivatorREF.ammo1
player.unequipitem foot1orb
player.unequipitem lowerbody1orb
player.unequipitem tail1orb
player.unequipitem upperbody1orb
player.unequipitem hand1orb
player.unequipitem leftring1orb
player.unequipitem rightring1orb
player.unequipitem amulet1orb
player.unequipitem head1orb
player.unequipitem hair1orb
player.unequipitem weapon1orb
player.unequipitem ammo1orb
message "Set 1 abgelegt."
set equipped to 0
endif
endif
end
Und hier mein Problem: Des speichern des sets funkioniert (warscheinlich) reibungslos, aber wenn ich es anlegen oder ablegen will fangen die beiden Debug-Nachrichten "DEBUG:Start" und "DEBUG: Begin" an schnell (warscheinlich pro frame) hinundherzuflackern, die nachricht "Set 1 angelegt" kommt jedoch nicht, und es wird auch nicht angelegt.
edit: ich hab die skripts zwar schon geschrieben, aber ich hab damit ein Problem:
Erst mal des Script des zur auswahl und festlegung der Sets dient (liegt auf nem Misc Item, desweiteren wird die OBSE-Funktion "getequippedobject"):
scn aasetmainactivatorSCRIPT
ref foot1
ref lowerbody1
ref tail1
ref upperbody1
ref hand1
ref leftring1
ref rightring1
ref amulet1
ref head1
ref hair1
ref weapon1
ref ammo1
ref foot2
ref lowerbody2
ref tail2
ref upperbody2
ref hand2
ref leftring2
ref rightring2
ref amulet2
ref head2
ref hair2
ref weapon2
ref ammo2
ref foot3
ref lowerbody3
ref tail3
ref upperbody3
ref hand3
ref leftring3
ref rightring3
ref amulet3
ref head3
ref hair3
ref weapon3
ref ammo3
short button
short start
begin onequip
messagebox "Was wollt ihr tun?", "Set 1 speichern", "Set 1 löschen", "Set 2 speichern", "Set 2 löschen", "Set 3 speichern", "Set 3 löschen", "Nichts"
set start to 1
end
begin gamemode
set button to getbuttonpressed
if button > -1 && start == 1
set start to 0
if button == 0
set foot1 to player.getequippedobject 5
set lowerbody1 to player.getequippedobject 3
set tail1 to player.getequippedobject 15
set upperbody1 to player.getequippedobject 2
set hand1 to player.getequippedobject 4
set leftring1 to player.getequippedobject 7
set rightring1 to player.getequippedobject 6
set amulet1 to player.getequippedobject 8
set head1 to player.getequippedobject 0
set hair1 to player.getequippedobject 1
set weapon1 to player.getequippedobject 16
set ammo1 to player.getequippedobject 17
if player.getitemcount aaset1orb == 0
player.additem aaset1orb 1
endif
messagebox "Was ihr gerade tragt wurde als Set 1 abgespeichert."
set button to -1
elseif button == 1
if player.getitemcount aaset1orb == 1
player.removeitem aaset1orb 1
endif
messagebox "Set 1 gelöscht."
set button to -1
elseif button == 2
set foot2 to player.getequippedobject 5
set lowerbody2 to player.getequippedobject 3
set tail2 to player.getequippedobject 15
set upperbody2 to player.getequippedobject 2
set hand2 to player.getequippedobject 4
set leftring2 to player.getequippedobject 7
set rightring2 to player.getequippedobject 6
set amulet2 to player.getequippedobject 8
set head2 to player.getequippedobject 0
set hair2 to player.getequippedobject 1
set weapon2 to player.getequippedobject 16
set ammo2 to player.getequippedobject 17
if player.getitemcount aaset2orb == 0
player.additem aaset2orb 1
endif
messagebox "Was ihr gerade tragt wurde als Set 2 abgespeichert."
set button to -1
elseif button == 3
if player.getitemcount aaset2orb == 1
player.removeitem aaset2orb 1
endif
messagebox "Set 2 gelöscht."
set button to -1
elseif button == 4
set foot3 to player.getequippedobject 5
set lowerbody3 to player.getequippedobject 3
set tail3 to player.getequippedobject 15
set upperbody3 to player.getequippedobject 2
set hand3 to player.getequippedobject 4
set leftring3 to player.getequippedobject 7
set rightring3 to player.getequippedobject 6
set amulet3 to player.getequippedobject 8
set head3 to player.getequippedobject 0
set hair3 to player.getequippedobject 1
set weapon3 to player.getequippedobject 16
set ammo3 to player.getequippedobject 17
if player.getitemcount aaset3orb == 0
player.additem aaset3orb 1
endif
messagebox "Was ihr gerade tragt wurde als Set 3 abgespeichert."
set button to -1
elseif button == 5
if player.getitemcount aaset3orb == 1
player.removeitem aaset3orb 1
endif
messagebox "Set 3 gelöscht."
set button to -1
endif
endif
end
und Hier eins der Skripte das auf den Misc Items der Sets liegt:
scn aaset1orbSCRIPT
ref foot1orb
ref lowerbody1orb
ref tail1orb
ref upperbody1orb
ref hand1orb
ref leftring1orb
ref rightring1orb
ref amulet1orb
ref head1orb
ref hair1orb
ref weapon1orb
ref ammo1orb
short equipped
short start
begin onequip
set start to 1
message "DEBUG:Start"
end
begin gamemode
if start == 1
set start to 0
if equipped == 0
message "DeBUG:Begin"
set foot1orb to aasetmainactivatorREF.foot1
set lowerbody1orb to aasetmainactivatorREF.lowerbody1
set tail1orb to aasetmainactivatorREF.tail1
set upperbody1orb to aasetmainactivatorREF.upperbody1
set hand1orb to aasetmainactivatorREF.hand1
set leftring1orb to aasetmainactivatorREF.leftring1
set rightring1orb to aasetmainactivatorREF.rightring1
set amulet1orb to aasetmainactivatorREF.amulet1
set head1orb to aasetmainactivatorREF.head1
set hair1orb to aasetmainactivatorREF.hair1
set weapon1orb to aasetmainactivatorREF.weapon1
set ammo1orb to aasetmainactivatorREF.ammo1
player.equipitem foot1orb
player.equipitem lowerbody1orb
player.equipitem tail1orb
player.equipitem upperbody1orb
player.equipitem hand1orb
player.equipitem leftring1orb
player.equipitem rightring1orb
player.equipitem amulet1orb
player.equipitem head1orb
player.equipitem hair1orb
player.equipitem weapon1orb
player.equipitem ammo1orb
message "Set 1 angelegt."
set equipped to 1
elseif equipped == 1
set foot1orb to aasetmainactivatorREF.foot1
set lowerbody1orb to aasetmainactivatorREF.lowerbody1
set tail1orb to aasetmainactivatorREF.tail1
set upperbody1orb to aasetmainactivatorREF.upperbody1
set hand1orb to aasetmainactivatorREF.hand1
set leftring1orb to aasetmainactivatorREF.leftring1
set rightring1orb to aasetmainactivatorREF.rightring1
set amulet1orb to aasetmainactivatorREF.amulet1
set head1orb to aasetmainactivatorREF.head1
set hair1orb to aasetmainactivatorREF.hair1
set weapon1orb to aasetmainactivatorREF.weapon1
set ammo1orb to aasetmainactivatorREF.ammo1
player.unequipitem foot1orb
player.unequipitem lowerbody1orb
player.unequipitem tail1orb
player.unequipitem upperbody1orb
player.unequipitem hand1orb
player.unequipitem leftring1orb
player.unequipitem rightring1orb
player.unequipitem amulet1orb
player.unequipitem head1orb
player.unequipitem hair1orb
player.unequipitem weapon1orb
player.unequipitem ammo1orb
message "Set 1 abgelegt."
set equipped to 0
endif
endif
end
Und hier mein Problem: Des speichern des sets funkioniert (warscheinlich) reibungslos, aber wenn ich es anlegen oder ablegen will fangen die beiden Debug-Nachrichten "DEBUG:Start" und "DEBUG: Begin" an schnell (warscheinlich pro frame) hinundherzuflackern, die nachricht "Set 1 angelegt" kommt jedoch nicht, und es wird auch nicht angelegt.