PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Skriptproblem!!!!!!! timer geht nicht...



Asado2005
11-01-06, 10:28
Huhu http://forums.ubi.com/infopop/emoticons/icon_smile.gif
ich habe mal versucht eine Nadel zu machen mit der ich auf Stoff Stoffrollen machen kann... es klappt auch alles gut bis zum timer... http://forums.ubi.com/infopop/emoticons/icon_confused.gif
hier ist mal der skript...

begin MY_Nadel_1

short button
float timer
short done
short Stoff

if ( OnActivate == 1 )
if ( done == 0 )
Messagebox "Was willst du herstellen?", "Stoffrolle (1 Stoff)"
set done to 1
activate
set Stoff to ( Player -> GetItemCount, "misc_de_cloth11")
endif
endif
if ( done == 1 )
set button to GetButtonPressed
if ( button == -1 )
return
elseif ( button == 0 )
if ( stoff >= 1 )
set timer to ( timer + GetSecondsPassed )
if timer > 10
set done to 2
Messagebox "zeit um", "ok"
endif
elseif ( stoff < 1 )
Messagebox "Dir fehlt Stoff", "ok"
set timer to 0
set done to 0
endif
endif
endif
if ( done == 2 )
set timer to 0
set done to 0
Player -> drop, "misc_de_cloth11", 1
Player -> AddItem, "misc_clothbolt_03", 1
endif

end MY_Nadel_1

die messagebox nach dem timer dient zur kontrolle und kam nie...
achja btw kann mir jemand sagen wie ich etwas aus dem Inventar und gleichzeitig aus dem Spiel entfernen kann?

Asado2005
11-01-06, 10:28
Huhu http://forums.ubi.com/infopop/emoticons/icon_smile.gif
ich habe mal versucht eine Nadel zu machen mit der ich auf Stoff Stoffrollen machen kann... es klappt auch alles gut bis zum timer... http://forums.ubi.com/infopop/emoticons/icon_confused.gif
hier ist mal der skript...

begin MY_Nadel_1

short button
float timer
short done
short Stoff

if ( OnActivate == 1 )
if ( done == 0 )
Messagebox "Was willst du herstellen?", "Stoffrolle (1 Stoff)"
set done to 1
activate
set Stoff to ( Player -&gt; GetItemCount, "misc_de_cloth11")
endif
endif
if ( done == 1 )
set button to GetButtonPressed
if ( button == -1 )
return
elseif ( button == 0 )
if ( stoff &gt;= 1 )
set timer to ( timer + GetSecondsPassed )
if timer &gt; 10
set done to 2
Messagebox "zeit um", "ok"
endif
elseif ( stoff &lt; 1 )
Messagebox "Dir fehlt Stoff", "ok"
set timer to 0
set done to 0
endif
endif
endif
if ( done == 2 )
set timer to 0
set done to 0
Player -&gt; drop, "misc_de_cloth11", 1
Player -&gt; AddItem, "misc_clothbolt_03", 1
endif

end MY_Nadel_1

die messagebox nach dem timer dient zur kontrolle und kam nie...
achja btw kann mir jemand sagen wie ich etwas aus dem Inventar und gleichzeitig aus dem Spiel entfernen kann?

Killfetzer
11-01-06, 10:39
So, erstmal das einfache:
Ein Item aus dem Inventar zu entfernen ist einfacher als das was du machen willst:

CallingObject-&gt;RemoveItem "Item_ID" ItemCount

also z.B. Player-&gt;RemoveItem "misc_de_cloth11" 1

Zu deinem anderen Problem müsste ich mir das Script mal genauer angucken, hab dafür aber im Moment keine Zeit. Ich poste später noch mal, wenn sich noch keine Antwort gefunden hat. http://forums.ubi.com/infopop/emoticons/icon_smile.gif

PS: Du hilfst dir und anderen, wenn du nach logischen Absätzen in deinem Script Leerzeilen verwendest. http://forums.ubi.com/infopop/emoticons/icon_smile.gif

Asado2005
11-01-06, 10:43
ok vielen dank schonmal für das erste http://forums.ubi.com/infopop/emoticons/icon_smile.gif
aber eigentlich hab ich immer einmal tab gedrückt im skripteditor... muss wohl beim kopieren etwas schiefgegangen sein sry...

ReneMiner
11-01-06, 21:45
...set Stoff to ( Player -&gt; GetItemCount, "misc_de_cloth11")
endif
endif
if ( done == 1 )

der fehler ist hier:

set button to GetButtonPressed

das wird ja jeden Scriptdurchlauf gesetzt und da du nicht dauernd draufdrücken kannst springt es sofort wieder auf -1

if ( button == -1 )
return
elseif ( button == 0 )
if ( stoff &gt;= 1 )
set timer to ( timer + GetSecondsPassed )
if timer &gt; 10
set done to 2
Messagebox "zeit um", "ok"
endif
elseif ( stoff &lt; 1 )
Messagebox "Dir fehlt Stoff", "ok"
set timer to 0
set done to 0
endif

Killfetzer
12-01-06, 06:43
Ja das mit dem Tabulator ist ein Fehler beim Kopieren ins Forum (kann man leider nicht umgehen). Ich meine wirklich Leerzeilen. Also 2*mal Enter statt einmal. (z.B. jedesmal wenn du ein endif setzt, das die Schachtelung auf 0 zurückfürt. Also alle if-Bedingungen geschlossen wurden)

Asado2005
12-01-06, 08:57
ok vielen dank http://forums.ubi.com/infopop/emoticons/icon_smile.gif
hab skript fast komplett überarbeitet nur anfang gelassen und jetzt klappt es falls es jemanden interesiert:

begin MY_Nadel_1

short button
float timer
short done
short stoff

if ( OnActivate == 1 )
if ( done == 0 )
Messagebox "Was willst du herstellen?", "Stoffrolle (1 Stoff)"
set done to 1
set stoff to ( Player -&gt; GetItemCount, "misc_de_cloth11" )
endif
endif
if ( done == 1 )
set button to GetButtonPressed
if ( button == -1 )
return
elseif ( button == 0 )
if ( Stoff &gt;= 1 )
set done to 2
else
Messagebox "Nicht genug Stoff", "ok"
endif
endif
elseif ( done == 2 )
DisablePlayerControls
set done to 3
elseif ( done == 3 )
set timer to ( timer + GetSecondsPassed )
if timer &gt; 10
EnablePlayerControls
Player -&gt; RemoveItem "misc_de_cloth11" 1
Player -&gt; AddItem "misc_clothbolt_02" 1
set done to 0
set timer to 0
endif
endif

end MY_Nadel_1

und danke nochmal
P.S: hoffentlich sind jetzt die leerzeichen da http://forums.ubi.com/infopop/emoticons/icon_wink.gif