DinkelºForum
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.

Scripten im Spiel

5 verfasser

Nach unten

Scripten im Spiel Empty Scripten im Spiel

Beitrag von Octagon Sa 22 Mai - 1:48:04

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 Razz
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
    . Wenn nach der Eingabe eines Befehls keinerlei Reaktion folgt, dann ist das ein Hinweis, dass das Scripten vom Entwickler des Szenarios verboten wurde.
  • 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.
Octagon
Octagon
Weiser des Dinkels
Weiser des Dinkels


https://dinkel.forumieren.de

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Octagon Sa 22 Mai - 2:17:32

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.
Octagon
Octagon
Weiser des Dinkels
Weiser des Dinkels


https://dinkel.forumieren.de

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Teraclonk Fr 25 Jun - 0:58:48

Andere Variante fürs Aufgeben und den Gegner gegebenenfalls mit in den Tod zu reißen:

/script Explode(500,GetCursor(0,0))
Teraclonk
Teraclonk
Experte
Experte

Ort Irgendwo im Nirgendwo
Laune Mathe studieren.

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Pitri Do 12 Aug - 8:57:40

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!

Code:
Schedule("SetYDir(100,CreateObject(ROCK,GetX(GetCursor()),0,NO_OWNER))",1,1000);
Lässt 1000 Steine auf den Cursor des ersten Spielers regnen! Die Steine werden im Abstand von je 1 frame erstellt!

Code:
Schedule("SetSpeed(GetXDir(GetCursor(1)),GetYDir(GetCursor(1)),FindObject(ROCK)))",1,1000000);
Macht einen Vorhandenen Stein zum "Verfolgerstein"! xD Er nimmt, wenn möglich, immer die Geschwindigkeit des Cursors an! Grin

Code:
Schedule("Schedule("SetSpeed(RandomX(-50,50),RandomX(-50,50))",1,100000,CreateObject(STFN,LandscapeWidth()/2,100))",1,1000);
Diese verschachtelte Schedule-Schleife ist so toll, dazu schreib ich lieber nix! tongue Probiert sie selber aus! (Aber rechnet mit Materialschwund! xD)


Ingame kann man auf einmal sogar mehrere Befehle ausführen, indem man sie mit dem Operator "&&" verknüpft!
Code:
/script Befehl1() && Befehl2()
Pitri
Pitri
Dinkelbäcker
Dinkelbäcker

Ort Clepal :Þ
Laune Gut! Aber immer doch!

https://www.youtube.com/user/TeraFlint

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Octagon Do 12 Aug - 9:07:58

Deine Scripts sind toll. Das erste erinnert mich an Frau Holle... *grusel*! afraid
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)
Drogenparty (der Name passt, denn der Clonk bekommt übertriebene Physicals und klatscht gegen Wände!!)
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.
Octagon
Octagon
Weiser des Dinkels
Weiser des Dinkels


https://dinkel.forumieren.de

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Pitri So 12 Sep - 1:27:27

Wipfmagus schrieb:Das einzig Dumme an Schedule ist, dass es nur statics und keine lokalen (local) oder funktionslokalen (var) Variablen nimmt.
Aber es gibt mijon unbesetzter Global()s, die man vewenden kann! Ich hab inzwischen auch was tolles rausgearbeitet, soll ichs mal posten?

Teraclonk schrieb:/script Explode(500,GetCursor(0,0))
Eine frage, Teraclonk: Seit wann hat GetCursor() 2 Parameter? Wimni gibt es da nur einen! o_O
Pitri
Pitri
Dinkelbäcker
Dinkelbäcker

Ort Clepal :Þ
Laune Gut! Aber immer doch!

https://www.youtube.com/user/TeraFlint

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Teraclonk So 12 Sep - 1:50:07

Bei mir funktionierte es auch mit 2 Parametern, aber ich weiß, dass GetCursor(p) eigentlich nur einen hat.
Teraclonk
Teraclonk
Experte
Experte

Ort Irgendwo im Nirgendwo
Laune Mathe studieren.

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Octagon So 12 Sep - 2:00:53

Der 2. Parameter ist dann aber überflüssig und macht nichts...
du kannst theoretisch auch etwas wie:
machen. Das gibt dann aber Abzüge für SEHR schlechten Stil... Lerne dazu!

Pitri schrieb:Aber es gibt mijon unbesetzter Global()s, die man vewenden kann! Ich hab inzwischen auch was tolles rausgearbeitet, soll ichs mal posten?
Gerne! Grin
Octagon
Octagon
Weiser des Dinkels
Weiser des Dinkels


https://dinkel.forumieren.de

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Pitri So 12 Sep - 2:22:59

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:
Code:
Global(100) = "Ich mag Wipfe! :D"
Dann eine Variable immer um 3 erhöen:
Code:
Schedule("Global(101) += 3",1,1000000000)
Nun wollen wir unseren Clonk zum Regenbogen Verwandeln:
Code:
Schedule("SetColorDw(HSL(Global(101),255,125))",1,1000000000,GetCursor())
Und jetzt Text in Clonkfarbe gleich dazu!
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ß!
Pitri
Pitri
Dinkelbäcker
Dinkelbäcker

Ort Clepal :Þ
Laune Gut! Aber immer doch!

https://www.youtube.com/user/TeraFlint

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Octagon So 12 Sep - 7:44:17

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.
Octagon
Octagon
Weiser des Dinkels
Weiser des Dinkels


https://dinkel.forumieren.de

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Luigi Fr 1 Okt - 22:23:06

Spoiler:

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)
ACHTUNG könnte laggen
Luigi
Luigi
Inventar
Inventar

Ort Irgendwo im Nirgendwo, im Tal der Ahnunglosigkeit
Laune Gut

http://fr3akgamerfan.lima-city.de

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Pitri Sa 2 Okt - 2:47:05

Luigi schrieb:Sowas gibts schon, es nennt sich zOmg
zOMG ist aber anders, wie Wipfmagus es beschrieben hat! Es geht noch mehr! Razz

OMGOMG!:
Pitri
Pitri
Dinkelbäcker
Dinkelbäcker

Ort Clepal :Þ
Laune Gut! Aber immer doch!

https://www.youtube.com/user/TeraFlint

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Octagon So 3 Okt - 18:22:26

Luigi schrieb:
Spoiler:
Noch nie gehoert... Muss ich mal raussuchen.
Luigi schrieb: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)
ACHTUNG könnte laggen
Klingt lustig. Feststecken frei Haus! Wink
Octagon
Octagon
Weiser des Dinkels
Weiser des Dinkels


https://dinkel.forumieren.de

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Luigi Mo 4 Okt - 2:23:01

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)
DA WIRD MAN FESTECKEN XD


Zuletzt von Luigi am Mo 4 Okt - 4:13:51 bearbeitet; insgesamt 2-mal bearbeitet
Luigi
Luigi
Inventar
Inventar

Ort Irgendwo im Nirgendwo, im Tal der Ahnunglosigkeit
Laune Gut

http://fr3akgamerfan.lima-city.de

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Pitri Mo 4 Okt - 3:47:04

Wipfmagus schrieb:
Luigi schrieb:
Spoiler:
Noch nie gehoert... Muss ich mal raussuchen.
Luigi schrieb: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)
ACHTUNG könnte laggen
Klingt lustig. Feststecken frei Haus! Wink
Omg, bei so viel verschachtelten Zitaten bekommt man ja kopfweh oO

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! Silent
Pitri
Pitri
Dinkelbäcker
Dinkelbäcker

Ort Clepal :Þ
Laune Gut! Aber immer doch!

https://www.youtube.com/user/TeraFlint

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von ShAdowWipf Do 28 Okt - 0:42:50

http://cndg.forumieren.de/anfanger-f1/scripten-wahrend-des-spiels-t77.htm

Hier Grin ein Link für Scriptanfänger
ShAdowWipf
ShAdowWipf
Clonker
Clonker

Ort wer weiß... :)
Laune naja...eigentlich...recht gut :D

http://Clonk.de       :)

Nach oben Nach unten

Scripten im Spiel Empty Re: Scripten im Spiel

Beitrag von Gesponserte Inhalte


Gesponserte Inhalte


Nach oben Nach unten

Nach oben


 
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten