German / Probleme mit getTimer(e)

Author
Message
grinseengel
8
Years of Service
User Offline
Joined: 27th Jul 2015
Location:
Posted: 23rd Feb 2016 13:22
Hallo,

ich verstehe nicht, wie das in LUA funktioniert. Es gibt ja weder sleep noch wait. Wie bekomme ich es hin, das z.B. in einem script der Schriftzug "10 Erfahrungspunkte" etwa 1 Sekunde auf dem Bildschirm angezeigt wird.

Ich habe im Forum schon viele Ansätze gesehen, aber nicht verstanden. Denkt dran, ich bin schon über 50
Corno_1
GameGuru Tool Maker
13
Years of Service
User Offline
Joined: 3rd Nov 2010
Location:
Posted: 23rd Feb 2016 15:16
Das ist sehr einfach:
PromptDuration(str,v)
str ist der string den du anzeigen willst, v ist die zeit in millisekunden.

Falls du mit textkommandos arbeiten willst, müsstest du mit variablen arbeiten, die sich nach einer sekunde verändern.
if var==1 then
Text(x,y,"text")
StartTimer(e)
end
if GetTimer>=1000 then
var=0
end

oder so ähnlich
My dream is to develope games, which makes fun when I create it and fun when other people play it.
PM
grinseengel
8
Years of Service
User Offline
Joined: 27th Jul 2015
Location:
Posted: 23rd Feb 2016 18:42
Danke

Das probiere ich gleich mal aus.
grinseengel
8
Years of Service
User Offline
Joined: 27th Jul 2015
Location:
Posted: 1st Apr 2016 18:31 Edited at: 1st Apr 2016 18:35
Ok, ich habe das jetzt mal ausprobiert. Mein Ansatz:

ich möchte eine Funktion haben die immer läuft.



Wenn jetzt ein NPC gekillt wird, dann wird in der Exit Funktion der Wert Dauer auf 1 gesetzt. dann müsste doch die folgende Funktion ablaufen und mir den Text für 1 Sekunde anzeigen. Das funktioniert aber nicht. Der Text wird eingeblendet, wird aber nicht wieder ausgeblendet.

Mache ich einen Denkfehler?
Corno_1
GameGuru Tool Maker
13
Years of Service
User Offline
Joined: 3rd Nov 2010
Location:
Posted: 1st Apr 2016 22:50
Quote: "Wenn jetzt ein NPC gekillt wird, dann wird in der Exit Funktion der Wert Dauer auf 1 gesetzt."

Ich glaube das Problem liegt in dem Kill selbst. Hast du es nochmal schon versucht mit PromptDuration() oder mit der selben function ohne Kill. Der Kill beendet nämlich glaub ich das script. Also der _exit part wird nur einmal ausgeführt.
My dream is to develope games, which makes fun when I create it and fun when other people play it.
PM
grinseengel
8
Years of Service
User Offline
Joined: 27th Jul 2015
Location:
Posted: 2nd Apr 2016 07:26 Edited at: 2nd Apr 2016 10:25
Getestet habe ich das mit PromptDuration(). Das geht dann auch. Ich möchte aber den Text nicht unten auf dem Bildschirm sehen, daher die andere Möglichkeit. Diese Funktion:



Ist ja eine eigenständige, die ich einem anderen Modell zuordne. Ich will ja nur das die funktion im Hintergrund läuft und dann nach Bedarf meinen Text anzeigt. Daher setze ich nach dem Kill des NPC's in der Exit die Variable "Dauer" auf 1. Dann wird der Text in meiner Funktion auch angezeigt, aber nicht ausgeblendet.
Corno_1
GameGuru Tool Maker
13
Years of Service
User Offline
Joined: 3rd Nov 2010
Location:
Posted: 2nd Apr 2016 11:04
Also wie ich schon sagte, nach der exit funktion wird, meiner meinung nach, das script verworfen. Das heißt nach einer sekunde ist das script schon lang nicht mehr aktiviert.
My dream is to develope games, which makes fun when I create it and fun when other people play it.
PM
grinseengel
8
Years of Service
User Offline
Joined: 27th Jul 2015
Location:
Posted: 2nd Apr 2016 12:21 Edited at: 2nd Apr 2016 12:21
Ja das ist mir ja bewusst. Also nochmal.

Funktion exit NPC:

Hier wird einmalig, das reicht ja für diesen Zweck aus, die Variable Dauer auf 1 gesetzt. Desweiteren wird der Wert für EP um 100 erhöht. Das funktioniert auch problemlos.

Funktion Text anzeigen.

Dadurch das die Variable Dauer auf 1 gesetzt wurde wird der Text auch angezeigt. Jetzt setze ich den Timer und nach einer Sekunde müsste der Text wieder ausgeblendet werden. Mein Problem bezieht sich nicht auf die NPC Exit Funktion sondern darauf ob ich da mit dem Timer was falsch gemacht habe.
Corno_1
GameGuru Tool Maker
13
Years of Service
User Offline
Joined: 3rd Nov 2010
Location:
Posted: 2nd Apr 2016 23:01
So nochmal lang:
es gibt:
function _init (wird einmal am Start des programmes im Ladeprozess ausgeführt)
function _main (wird im Loop solange das entity "lebt" während der laufzeit ausgeführt)
function _exit (wird einmal wenn das entity stibt aufgerufen, danach ist das skript aus dem Spiel entfernt)

Also sobald die funktion _exit ausgeführt wird, läuft sie einmal durch. Danach wird nichts mehr ausgeführt!!!! Absolut nichts. Also wenn du zB eine if abfrage machst und die false ist im letzten durchlauf, wird das nicht ausgeführt.
Nach der _exit funktion wird auch die _main beendet!!!! Aller code in der _main wird also nicht mehr ausgeführt.

Dein Problem würde folgendes lösen:
function _exit löschen.
Alles in die main schreiben was in der _exit steht mit if g_entity['health']<1 then end
dann deinen Code reinschreiben
Falls alles ausgeführt wurde, Destroy(e) aufrufen.

Ich hoffe es wurde jetzt klar. Und der lösungsansatz war verständlich
My dream is to develope games, which makes fun when I create it and fun when other people play it.
PM
grinseengel
8
Years of Service
User Offline
Joined: 27th Jul 2015
Location:
Posted: 3rd Apr 2016 08:39 Edited at: 3rd Apr 2016 08:40
Hallo Corno_1,

vielen Dank nochmal für deine ausführlichen Erläuterungen zum Aufbau einer Funktion. Das ist mir im Prinzip schon klar. Ich werde das auch mal ausprobieren alles in die Main zu schrieben. Sei mir nicht böse das ich hier so beharrlich bin.

Ich denke mal, ich habe meinen Lösungsansatz nicht richtig beschrieben. Ich habe zwei unterschiedliche Funktionen.

1) Die NPC Funktion, die im Moment in der Exit den wert Dauer = 1 erzeugt. Mehr muss an der Stelle auch nicht erfolgen. Variable dauer ist eine globale Variable.

2) Die Funktion ep_text.

Die Funktion ep_text "wartet" im Hintergrund darauf, das die Variable Dauer 1 beträgt und führt dann die Anweisung Text anzeigen (was auch bereits funktioniert) aus. Soll dann 1 Sekunde warten, die Variable Dauer auf 0 setzen und somit den Text ausblenden. Und genau die Anweisung Text ausblenden funktioniert nicht. Ich denke mal das liegt an der Funktion ep_text. Im Forum steht auch etwas darüber, das GetTimer nicht richtig funktionieren soll?
Corno_1
GameGuru Tool Maker
13
Years of Service
User Offline
Joined: 3rd Nov 2010
Location:
Posted: 3rd Apr 2016 10:11
Warum sagst du das nicht gleich
Naja, du machst einen entscheidenden Fehler in deinem anderen Skript, immer wenn die dauer eins ist, startest du den timer neu, der timer wird also immer wieder auf null gesetzt, bevor überhaupt eine sekunde verstrichen ist.
Ich hab mal nen mögliche lösung gemacht:

My dream is to develope games, which makes fun when I create it and fun when other people play it.
PM
grinseengel
8
Years of Service
User Offline
Joined: 27th Jul 2015
Location:
Posted: 6th Apr 2016 18:10
Funktioniert super, vielen Dank.

Login to post a reply

Server time is: 2024-04-26 01:50:37
Your offset time is: 2024-04-26 01:50:37