Scripten im Spiel
5 verfasser
DinkelºForum :: Gaming :: Clonk :: Entwickeln
Seite 1 von 1
Scripten im Spiel
Wie ihr sicherlich wisst, kann man während einer laufenden Runde Scriptbefehle ausführen. Scriptbefehle im Spiel können sehr nützlich sein, um z. B. eine Regel einzustellen, ein schwer erreichbares Objekt zu entfernen, einen feststeckenden Clonk zu befreien, Regelbrecher mit Paralyse oder Eigentumsverlust zu bestrafen oder ganz einfach Explosionsketten zu verursachen
Es sollte allerdings nicht wie wild herumgescriptet werden, um sich einen schnellen Sieg zu ercheaten, die Gegner zu ärgern oder dergleichen. Scripting sollte nur benutzt werden, um die Ressourcen der Spieler fair zu modifizieren (z. B. um bei Druckwellenkampf jedem 1000 Clunker Startgeld oder 50 Flints zu geben oder jeden Clonk zu heilen), man eine verabredete Scriptrunde halten will (v. a. bei Teh Scriptorz möglich) oder wenn ein wirklicher Notfall vorliegt (z. B. wenn der letzte Clonk an einer Kante hängend überm Abgrund gespawnt wurde oder nach zweieinhalb Stunden Siedeln das Windrad abfackelt).
Wer Melees dadurch gewinnt, dass er die Clonks des Gegners explodieren lässt, bei der Goldmine erst das Gold mit einem Explode(500, FindObject(_FOO))-Befehl freisprengt und dann komplett entfernt usw., der hat bald keinerlei Spielspaß mehr. Außerdem macht man sich als Host dadurch sehr unbeliebt.
Daher sage ich noch einmal: Geht verantwortungsvoll mit euren neu erworbenen Scriptkenntnissen um!
Frohes Scripten! :wipf:
Voraussetzungen zum Scripten während des Spiels
Es sollte allerdings nicht wie wild herumgescriptet werden, um sich einen schnellen Sieg zu ercheaten, die Gegner zu ärgern oder dergleichen. Scripting sollte nur benutzt werden, um die Ressourcen der Spieler fair zu modifizieren (z. B. um bei Druckwellenkampf jedem 1000 Clunker Startgeld oder 50 Flints zu geben oder jeden Clonk zu heilen), man eine verabredete Scriptrunde halten will (v. a. bei Teh Scriptorz möglich) oder wenn ein wirklicher Notfall vorliegt (z. B. wenn der letzte Clonk an einer Kante hängend überm Abgrund gespawnt wurde oder nach zweieinhalb Stunden Siedeln das Windrad abfackelt).
Wer Melees dadurch gewinnt, dass er die Clonks des Gegners explodieren lässt, bei der Goldmine erst das Gold mit einem Explode(500, FindObject(_FOO))-Befehl freisprengt und dann komplett entfernt usw., der hat bald keinerlei Spielspaß mehr. Außerdem macht man sich als Host dadurch sehr unbeliebt.
Daher sage ich noch einmal: Geht verantwortungsvoll mit euren neu erworbenen Scriptkenntnissen um!
Frohes Scripten! :wipf:
Voraussetzungen zum Scripten während des Spiels
- Selbstverständlich ist der erste Schritt das Starten des Szenarios.
- Der sogenannte Debugmodus muss aktiviert sein, damit eingegebene Scriptbefehle akzeptiert werden. Dies lässt sich über Strg-F5 bewerkstelligen. Dann sollte am oberen Rand des Bildschirms (unter der Logoleiste) kurz eine Meldung 'Debugmodus:an' zu sehen sein.
- Man muss vorm Scriptbefehl ein "/script" eingeben. Also wie z. B. "/script CreateObject(FGRV)" (erstellt die Regel "Flagge abnehmbar").
- Das Szenario muss Scripten erlauben. Bei vielen Szenarien ist das Scripten deaktiviert, was sich in der Scenario.txt ( einer Datei in der Szenariodatei, die man im Editor sehen kann) an einer Zeile "NoDebug=1" erkennen lässt. Normalerweise steht nach erfolgreicher Eingabe ein Bestätigungstext, der die Antwort des Scriptbefehls ausgibt; z. B.
- Code:
-> CreateObject(FGRV)
= Flagge abnehmbar #135
- In einem Netzwerkspiel muss man der Host sein (der Spieler, der die Runde veranstaltet). Alle anderen Spieler können grundsätzlich nicht scripten, weil die Engine es ihnen nicht erlaubt. Eine Ausnahme bildet die Runde "Teh Script Orz", diese hat jedoch eine eigene Regel, die dies erlaubt, und außerdem werden dort Scriptbefehle per "/s" und nicht "/script" ausgeführt.
- In Ligaspielen ist der Debugmodus grundsätzlich nicht erlaubt.
Re: Scripten im Spiel
Als erstes sollten es einfache Scriptbefehle sein, mit denen man Objekte erzeugen oder Werte verändern kann.
_FOO wird hier als Beispiel-ID verwendet. An seiner Stelle sollte die ID eines Beispielobjekts stehen. Für eine Liste gültiger Objekt-IDs aus dem Original-Objektpacks siehe hier
CreateObject(_FOO,X,Y)
Erzeugt ein Objekt der ID _FOO an der Position (X|Y) auf der Map.
CreateContents(FLNT, GetCursor(0),10)
Gibt dem angewählten Clonk von Spieler Nummer 0 zehn Feuersteine.
DoWealth(0, 500)
Gibt Spieler Nummer 0 500 Clunker.
_FOO wird hier als Beispiel-ID verwendet. An seiner Stelle sollte die ID eines Beispielobjekts stehen. Für eine Liste gültiger Objekt-IDs aus dem Original-Objektpacks siehe hier
CreateObject(_FOO,X,Y)
Erzeugt ein Objekt der ID _FOO an der Position (X|Y) auf der Map.
CreateContents(FLNT, GetCursor(0),10)
Gibt dem angewählten Clonk von Spieler Nummer 0 zehn Feuersteine.
DoWealth(0, 500)
Gibt Spieler Nummer 0 500 Clunker.
Re: Scripten im Spiel
Andere Variante fürs Aufgeben und den Gegner gegebenenfalls mit in den Tod zu reißen:
/script Explode(500,GetCursor(0,0))
/script Explode(500,GetCursor(0,0))
Teraclonk- Experte
- Irgendwo im Nirgendwo
Mathe studieren.
Re: Scripten im Spiel
Im Ingamescript kann man leider kein if(), while() oder for() verwenden, allerdibns gibt es einen Befehl, der vergleichbar gute ergebnisse erzielt! Es lebe Schedule()!
Hier ein paar von mir erstellte Schedule-Beispiele mit Kommentar!
Ingame kann man auf einmal sogar mehrere Befehle ausführen, indem man sie mit dem Operator "&&" verknüpft!
Hier ein paar von mir erstellte Schedule-Beispiele mit Kommentar!
- Code:
Schedule("SetYDir(100,CreateObject(ROCK,GetX(GetCursor()),0,NO_OWNER))",1,1000);
- Code:
Schedule("SetSpeed(GetXDir(GetCursor(1)),GetYDir(GetCursor(1)),FindObject(ROCK)))",1,1000000);
- Code:
Schedule("Schedule("SetSpeed(RandomX(-50,50),RandomX(-50,50))",1,100000,CreateObject(STFN,LandscapeWidth()/2,100))",1,1000);
Ingame kann man auf einmal sogar mehrere Befehle ausführen, indem man sie mit dem Operator "&&" verknüpft!
- Code:
/script Befehl1() && Befehl2()
Re: Scripten im Spiel
Deine Scripts sind toll. Das erste erinnert mich an Frau Holle... *grusel*!
Den Verfolgerstein und das Ding, das soziopathische Super-T-Flints erzeugt, muss ich mir merken.
Das "Windschwert" (erzeugt einen Kreis aus Windstößen um den Cursor) und die "Drogenparty" (erzeugt übertrieben gestapelte Trankeffekte mit extrem "überdopten" Clonks) von Quit (siehe Clonkwiki: http://de.wiki.nosebud.de/wiki/Benutzer:Quit) sind aber auch toll.
Windschwert:
Das einzig Dumme an Schedule ist, dass es nur statics und keine lokalen (local) oder funktionslokalen (var) Variablen nimmt.
Den Verfolgerstein und das Ding, das soziopathische Super-T-Flints erzeugt, muss ich mir merken.
Das "Windschwert" (erzeugt einen Kreis aus Windstößen um den Cursor) und die "Drogenparty" (erzeugt übertrieben gestapelte Trankeffekte mit extrem "überdopten" Clonks) von Quit (siehe Clonkwiki: http://de.wiki.nosebud.de/wiki/Benutzer:Quit) sind aber auch toll.
Windschwert:
- Code:
Schedule("CreateObject(ABLA)->ActivateAngle(GetCursor(), Global(0)+=30)", 5, 24)
- Code:
Schedule("CreateObject(PWIP)->Activate(GetCursor())", 1, 200)
Das einzig Dumme an Schedule ist, dass es nur statics und keine lokalen (local) oder funktionslokalen (var) Variablen nimmt.
Re: Scripten im Spiel
Aber es gibt mijon unbesetzter Global()s, die man vewenden kann! Ich hab inzwischen auch was tolles rausgearbeitet, soll ichs mal posten?Wipfmagus schrieb:Das einzig Dumme an Schedule ist, dass es nur statics und keine lokalen (local) oder funktionslokalen (var) Variablen nimmt.
Eine frage, Teraclonk: Seit wann hat GetCursor() 2 Parameter? Wimni gibt es da nur einen! o_OTeraclonk schrieb:/script Explode(500,GetCursor(0,0))
Re: Scripten im Spiel
Bei mir funktionierte es auch mit 2 Parametern, aber ich weiß, dass GetCursor(p) eigentlich nur einen hat.
Teraclonk- Experte
- Irgendwo im Nirgendwo
Mathe studieren.
Re: Scripten im Spiel
Der 2. Parameter ist dann aber überflüssig und macht nichts...
- du kannst theoretisch auch etwas wie:
- Code:
GetCursor(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
Gerne!Pitri schrieb:Aber es gibt mijon unbesetzter Global()s, die man vewenden kann! Ich hab inzwischen auch was tolles rausgearbeitet, soll ichs mal posten?
Re: Scripten im Spiel
In einer Runde TehScript0rz habe icheinen Tollen Effekt entwickelt, der meinen Regenbogenmäßig die Fabe ändern ließ! Desweiteren hat er immer einen Text in seiner Farbe ausgerufen!
So gehts:
Zuerst eine Variable mit Text belegen:
Den Text kann man einfach mit Global(100) = "Neuer Text" ändern!
Viel Spaß!
So gehts:
Zuerst eine Variable mit Text belegen:
- Code:
Global(100) = "Ich mag Wipfe! :D"
- Code:
Schedule("Global(101) += 3",1,1000000000)
- Code:
Schedule("SetColorDw(HSL(Global(101),255,125))",1,1000000000,GetCursor())
- Code:
Schedule("Message("<c %x>%s</c>",this,GetColorDw(),Global(211))",1,1000000000,GetCursor())
Den Text kann man einfach mit Global(100) = "Neuer Text" ändern!
Viel Spaß!
Re: Scripten im Spiel
Cooles Script. So was ähnliches wird in meinem ersten CM-Ordner sein...
Ein Szenario namens "Omg ist das toll!!!11", bei dem ein Script mit Effekt für zufälligen Farbwechsel alle 12 Frames an alles Objekte appendiert wird - und ein Befehl, der zufällig die Sky umfärbt. Augenkrebs frei Haus.
Ein Szenario namens "Omg ist das toll!!!11", bei dem ein Script mit Effekt für zufälligen Farbwechsel alle 12 Frames an alles Objekte appendiert wird - und ein Befehl, der zufällig die Sky umfärbt. Augenkrebs frei Haus.
Re: Scripten im Spiel
- Spoiler:
Sowas gibts schon, es nennt sich zOmgWipfmagus schrieb:Cooles Script. So was ähnliches wird in meinem ersten CM-Ordner sein...
Ein Szenario namens "Omg ist das toll!!!11", bei dem ein Script mit Effekt für zufälligen Farbwechsel alle 12 Frames an alles Objekte appendiert wird - und ein Befehl, der zufällig die Sky umfärbt. Augenkrebs frei Haus.
Hier ist auch noch einer der selten nützlich ist :
- Code:
Schedule("DrawMaterialQuad("Earth",GetX(GetCursor(0))+20,GetY(GetCursor(0)),
GetX(GetCursor(0)),GetY(GetCursor(0))+20,GetX(GetCursor(0))-20,
GetY(GetCursor(0)),GetX(GetCursor(0)),GetY(GetCursor(0))-20,true)",1,3600)
Re: Scripten im Spiel
zOMG ist aber anders, wie Wipfmagus es beschrieben hat! Es geht noch mehr!Luigi schrieb:Sowas gibts schon, es nennt sich zOmg
- OMGOMG!:
- SetSkyAdjust(RGBa(255,255,255,250),RGBa(255,255,255,255))
Re: Scripten im Spiel
Klingt lustig. Feststecken frei Haus!Luigi schrieb:Noch nie gehoert... Muss ich mal raussuchen.
- Spoiler:
Sowas gibts schon, es nennt sich zOmgWipfmagus schrieb:Cooles Script. So was ähnliches wird in meinem ersten CM-Ordner sein...
Ein Szenario namens "Omg ist das toll!!!11", bei dem ein Script mit Effekt für zufälligen Farbwechsel alle 12 Frames an alles Objekte appendiert wird - und ein Befehl, der zufällig die Sky umfärbt. Augenkrebs frei Haus.Luigi schrieb:Hier ist auch noch einer der selten nützlich ist :ACHTUNG könnte laggen
- Code:
Schedule("DrawMaterialQuad("Earth",GetX(GetCursor(0))+20,GetY(GetCursor(0)),
GetX(GetCursor(0)),GetY(GetCursor(0))+20,GetX(GetCursor(0))-20,
GetY(GetCursor(0)),GetX(GetCursor(0)),GetY(GetCursor(0))-20,true)",1,3600)
Re: Scripten im Spiel
Am besten nimmt man
- Code:
Schedule("DrawMaterialQuad("Granit",GetX(GetCursor(0))+20,GetY(GetCursor(0)),GetX(GetCursor(0)),GetY
(GetCursor(0))+20,GetX(GetCursor(0))-20,
GetY(GetCursor(0)),GetX(GetCursor(0)),GetY(GetCursor(0))-20,true)",1,3600)
Zuletzt von Luigi am Mo 4 Okt - 4:13:51 bearbeitet; insgesamt 2-mal bearbeitet
Re: Scripten im Spiel
Omg, bei so viel verschachtelten Zitaten bekommt man ja kopfweh oOWipfmagus schrieb:Klingt lustig. Feststecken frei Haus!Luigi schrieb:Noch nie gehoert... Muss ich mal raussuchen.
- Spoiler:
Sowas gibts schon, es nennt sich zOmgWipfmagus schrieb:Cooles Script. So was ähnliches wird in meinem ersten CM-Ordner sein...
Ein Szenario namens "Omg ist das toll!!!11", bei dem ein Script mit Effekt für zufälligen Farbwechsel alle 12 Frames an alles Objekte appendiert wird - und ein Befehl, der zufällig die Sky umfärbt. Augenkrebs frei Haus.Luigi schrieb:Hier ist auch noch einer der selten nützlich ist :ACHTUNG könnte laggen
- Code:
Schedule("DrawMaterialQuad("Earth",GetX(GetCursor(0))+20,GetY(GetCursor(0)),
GetX(GetCursor(0)),GetY(GetCursor(0))+20,GetX(GetCursor(0))-20,
GetY(GetCursor(0)),GetX(GetCursor(0)),GetY(GetCursor(0))-20,true)",1,3600)
Und luigi, kannst du bei deinem Script einen Zeilenumbruch machen? ich muss seitlich scrollen, um alles anschauch zu können und den Edit-button zu kommen!
Re: Scripten im Spiel
http://cndg.forumieren.de/anfanger-f1/scripten-wahrend-des-spiels-t77.htm
Hier ein Link für Scriptanfänger
Hier ein Link für Scriptanfänger
DinkelºForum :: Gaming :: Clonk :: Entwickeln
Seite 1 von 1
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten
|
|