MaP-MaKeRs

MaP-MaKeRs

Logo MaP-MaKeRs
Samstag, 20. April 2024
  • Status

  • Besucher
    Heute:
    0
    Gestern:
    0
    Gesamt:
    0
  • Benutzer & Gäste
    335 Benutzer registriert, davon online: 17 Gäste
 
Start Einloggen Einloggen Die Mitglieder Das Foren-Team Suchfunktion
2525 Beiträge & 393 Themen in 15 Foren
Keine neuen Beiträge, seit Ihrem letzten Besuch am 20.04.2024 - 16:26.
  Login speichern
Forenübersicht » WAC » Reaktivierbare Ereignisse trotz "never then"

vorheriges Thema   nächstes Thema  
3 Beiträge in diesem Thema (offen) Seiten (1): (1)
Autor
Beitrag
sleepless ist offline sleepless  
Reaktivierbare Ereignisse trotz "never then"
73 Beiträge - Neuling
Manchmal möchte man ein Ereignis auslösen das erst nur ein mal durchlaufen soll und dann zu einem selbst bestimmten Zeitpunkt noch mal funktionieren soll... oder eben auch öfter. Klar, man könnte das Ereignis erneut in die Wac schreiben oder man verwendet die Möglichkeit einem Script einen Namen zu geben. Dieses Script kann man das jederzeit zurücksetzen, als wäre es nie durchlaufen. An einem einfachen Beispiel erklärt. Ich habe eine Text der links oben eingeblendet werden soll... Fall 1 (immer wieder aufs Neue) und Fall 2 (wenn eine Variable einen bestimmten Wert erhält der durch ein anderes Ereignis ausgelöst wird.

Fall 1:
if [info] past(1) and never then
consol("AW2_Lost in Desert")
consol("Map made by Sleepless")
consol("wish you much fun and good luck")
endif
if elapse(600) then
reset(info)
endif

Eigentlich würde dieses Ereignis nur einmal ausgelöst (Never then) und dann nie wieder. Ich vergebe diesem Ereignis hier den Namen "info" (muss in eckigen Klammern stehen!). Das Ereignis läuft einmal durch. Nach 600 Sekunden geben ich den Befehl dass das Ereignis "info" zurückgesetzt wird. Für das Programm wurde es also noch nicht ausgelöst und es startet erneut. dies wiederholt sich bis zum Ende der Map.

Fall 2:
if [info] past(1) and never then
consol("AW2_Lost in Desert")
consol("Map made by Sleepless")
consol("wish you much fun and good luck")
endif
if V1 == 1 then
reset(info)
V1 = 0
endif

Gleiches Spiel wie oben, nur dass ich das Zurücksetzen der Ereignisses "info" abhängig mach von der Variable V1 - die durch irgendein anderes Ereignis in der Wac ausgelöst wird. Direkt nach dem Zurücksetzen, ändere ich die Variable V1 wieder auf 0. Ansonsten würde das Zurücksetzen jede Sekunde(jeden Durchlauf der Wac) ausgeführt und somit ständig erscheinen.

Um ein anderes Beispiel zur Verwendung zu zeigen, hier ein Script aus meiner "AW2 Rabbit Punch 2" bei der ein Hund immer das Bellen anfängt wenn ein Spieler in die Nähe einer Haustür kommt. Kleiner Wachhund eben. glücklich

//////////////////////////////////////////// dog
PLOOP
if ssnnearssn(player,132570,10) enter
v20 = 0
if [dog] !v14 and never then
ssnwave(132570,"rp2_dogattack.wav",700)
endif
if chain(10) then
reset(dog)
v20 = 1
endif
endif
END


Braucht man einen bellenden Hund in der Map? Nein, der ist nicht spielentscheidend, aber ich steh einfach auf solche Details glücklich

Letztendlich sollen diese Scripts nur zeigen wieviele Möglichkeiten man wirklich hat... und das sind wahnsinnig viele - nur begrenzt durch die eigene Fatasie.



Mittlerweile kann ich schon ein bissl was lachend


Dieser Beitrag wurde 1 mal editiert, zuletzt von sleepless am 09.01.2019 - 10:32.
Beitrag vom 09.01.2019 - 10:20
Diesen Beitrag melden   nach weiteren Posts von sleepless suchen sleepless`s Profil ansehen sleepless eine E-Mail senden sleepless eine private Nachricht senden sleepless zu Ihren Freunden hinzufügen zum Anfang der Seite
Raven ist offline Raven  
Ausrufe Zeichen
116 Beiträge - Gelegenheitsposter
Raven`s alternatives Ego
Da ich es ja nicht so habe mit Variablen und ich mich da erst immer durchkämpfen muss, habe ich gleich mal eine Frage. Was bedeutet !v14 ? Wieso muss da ein ! davor stehen.





Laechle, denn du kannst sie nicht alle toeten.
Beitrag vom 09.01.2019 - 22:25
Diesen Beitrag melden   nach weiteren Posts von Raven suchen Raven`s Profil ansehen Raven eine E-Mail senden Raven eine private Nachricht senden Raven zu Ihren Freunden hinzufügen zum Anfang der Seite
sleepless ist offline sleepless  
RE: Ausrufe Zeichen
73 Beiträge - Neuling
Zitat
Original geschrieben von Raven

Da ich es ja nicht so habe mit Variablen und ich mich da erst immer durchkämpfen muss, habe ich gleich mal eine Frage. Was bedeutet !v14 ? Wieso muss da ein ! davor stehen.




Es gibt bei Variablen immer unterschiedliche Schreibweisen, eine mit Kürzel oder eben mit Zeichen. Welche dieser Arten man wählt, bleibt einem selbst überlassen - in Funktion unterscheiden sie sie nicht.
In dem Fall von "!"(Ausrufezeichen) heißt das nichts anderes als not(nicht). Diese not (!) kann vor allem möglichen stehen (z.B. auch vor einem "=", also "!=" - was auch als "ne" schreibbar wäre (not equal/ ungleich) Stellt man also eine Abfrage nach !v14 (not v14), fragt man ab ob die Variable v14 einen Wert hat. Also alles andere als 0. Eine Variable hat bei Mapstart immer erst mal den Wert 0.
Ich verwende diese Abfrage (z.B. beim bellenden Hund) um das Event des Hundes ein und ausschalten zu können. Wie im anderen Post nachlesbar, verwende ich ja sehr oft Hintergrundmusik, die im Intervall abgespielt wird. Würde nun ein Hintergrundmusikevent laufen und ein Spieler würde zur Haustüre gehen, bricht das Bellen des Hundes die Hintergrundmusik ab. Zwar nur für dieses eine mal, aber das könnte theoretisch jedesmal passieren wenn ein Spieler an der Haustüre vorbei geht. Ich setze also V14 in dem anderen Event kurzzeitig auf 1, für das Hundeevent bedeutet das V14 ist nicht mehr ohne Wert und der Hund bellt nicht. Nach dem Musikevent schalte ich v14 wieder auf 0 und der Hund darf wieder bellen.

Es gibt viele dieser Schreibweisemöglichkeiten. Hier ein paar davon:
equal (eq) ( == )
not equal (ne) (!=)
genauso gibt es für "<", ">", ">=", und "<=" die Abkürzungen "lt"(lower than", "gt"(greater than), "ge"(greater equal), und "le"(lower equal)

Setze Variable auf Wert # (set(var,#) ) =# (wobei # für einen beliebigen Wert steht)
erhöhe Variable um Wert # (add(var,#) ) (+# wobei # für einen beliebigen Wert steht)
reduziere Variable um Wert # (sub(var,#) ) (-# wobei # für einen belibigen Wert steht)
erhöhe variable um (1 inc(var) ) (+1)
reduziere Variable um 1 (dec(var) ) (-1)

Das liesst sich jetzt gerade vllt etwas verwirrend, doch im Endeffekt ist es sehr einfach:

Leg dich auf eine Schreibweise fest und du hast es in einer Stunde drauf.

Ich könnte also das gleiche Script auf 2 Weisen schreiben.
Schreibweise 1:
If V14 eq 0 and never then
add(v10,5)
endif

Schreibweise 2:
if v14 == 0 and never then
v10 = V10 + 5
endif

Halt, ich berichtige mich - es geht noch eine weitere Schreibweise da wir ja abfragen ob v14 den Wert "0" hat (also keinen Wert), ginge hier sogar noch das Ausrufezeichen:
if !v14 and never then
v10 = V10 + 5
endif





Mittlerweile kann ich schon ein bissl was lachend


Dieser Beitrag wurde 2 mal editiert, zuletzt von sleepless am 10.01.2019 - 12:08.
Beitrag vom 10.01.2019 - 09:11
Diesen Beitrag melden   nach weiteren Posts von sleepless suchen sleepless`s Profil ansehen sleepless eine E-Mail senden sleepless eine private Nachricht senden sleepless zu Ihren Freunden hinzufügen zum Anfang der Seite
Baumstruktur - Signaturen verstecken
Seiten (1): (1) vorheriges Thema   nächstes Thema

Gehe zu:  
Es ist / sind gerade 0 registrierte(r) Benutzer und 17 Gäste online. Neuester Benutzer: HaraBear
Mit 4540 Besuchern waren am 22.09.2021 - 04:08 die meisten Besucher gleichzeitig online.
Aktive Themen der letzten 24 Stunden | Foren-Topuser
 
  • Buttonbox

  • Geburtstag heute

 
Seite in 0.07745 Sekunden generiert


Diese Website wurde mit PHPKIT WCMS erstellt
PHPKIT ist eine eingetragene Marke der mxbyte GbR © 2002-2012