Forum

> > Stranded II > Scripts > Random Spawn Items
ForenübersichtStranded II-Übersicht Scripts-ÜbersichtEinloggen, um zu antworten

Deutsch Random Spawn Items

16 Antworten
Zum Anfang Vorherige 1 Nächste Zum Anfang

alt Random Spawn Items

AroundTheWorld
User Off Offline

Zitieren
Hallo liebe USGN-Community.

Da ich ein absoluter Anfänger in scripten bin wollte ich nur mal fragen: Wie kann man mehrere Objekte random spawnen wenn man in den Radius dieses Objektes kommt? Es soll ebenfalls ein Spawntimer von 10 Minuten drin sein.
Ich weiß das sind viele Forderungen, aber ich brauch es echt.

Also wenn das Objekt gespawnt wurde fängt der timer an.
Ich würde mich sehr freuen wenn sich einer diese Mühe macht.

Mfg AroundTheWorld

alt Re: Random Spawn Items

Nova
User Off Offline

Zitieren
Ich möchte dir jetzt nicht einfach das ganze Script schreiben, aber ich kann dir ein paar nützliche Tipps und Links geben.

Du musst halt zuerst im regelmäßigen Abstand prüfen, ob der Spieler in Reichweite ist. Dazu benutzt du einen Trigger und stellst dort eine entsprechende Entfernung ein. Du kannst ja rumprobieren, wie groß der Radius sein muss. (Fang mit 100 an.)

Wo genau sollen die Objekte spawnen? An bestimmten Stellen oder an einem Objekt? Du kannst mit s2 cmd random dir eine zufällige Zahl ausgeben lassen und diese als Koordinate nutzen. Dafür brauchst du aber auch die Koordinate des Objektes, um das die Objekte spawnen sollen. DIe kriegst du mit s2 cmd getx und s2 cmd getz.
Lasse dir eine Zufallszahl zwischen -100 und +100 ausgeben und addiere sie mit der Koordinate des Objekts, um die die Sachen spawnen soll. So hast du ein Quadrat um das Anfangsobjekt, in dem zufällig das Objekt spawnt.
Speichere dabei alle Werte in Variablen zwischen, damit du leichter mit ihnen arbeiten kannst.
Wichtig dafür auch: s2 cmd create

(Und vergiss die runden Klammern nicht, die um Parameter kommen, wenn der Befehl einen Rückgabewert hat! Das passiert auch Leuten, die schon länger scripten. )


Solltest du noch fragen haben oder einfach etwas nicht genau verstanden haben, dann frag einfach nach. Scripten ist nicht unbedingt einfach und wir helfen gerne.

alt Re: Random Spawn Items

AroundTheWorld
User Off Offline

Zitieren
Erstmal möchte ich mich bedanken für deinen sehr ausführlich geschriebenen Beitrag.

Ich weiß leider überhaupt nicht wie das funktionieren soll.
Also ich will ein Stein spawnen lassen wenn der Spieler in der Nähe des Radiustriggers ist.
Bitte kannst du mir den Quelltext aufschreiben?
Ich hab noch nie in Stranded 2 gescriptet.
Und daraus würde ich lernen wie der Stranded 2 Quelltext aufgebaut ist. Ich weiß z.B. bei C++ fängt man mit
#include <iostream>
using namespace std;
gibt es sowas auch in Stranded 2?


##EDIT

Es tut mir leid ich habe die Frage falsch gestellt.
Ich möchte (wenn der Spieler in Radiusnähe ist) zufällig entweder ein Stück Fleisch oder einen Stein spawnen lassen. Danach soll eine Timer starten, sodass die items erneut nach 10 Minuten spawnen können.

alt Re: Random Spawn Items

Nova
User Off Offline

Zitieren
Ja, die von user Hurri04 angegebenen Seiten sind ein gutes Tutorial, um in die Scriptsprache von Stranded II einzusteigen.

Als kleine Einstiegshilfe schreibe ich dir aber mal folgendes Script auf. Stelle eine Palme auf eine neue Insel in Stranded II (im Editor) und kopiere in ihr Script-Feld das Script.
Wenn du dann mit der Benutzern-Taste (Standard "E") die Palme benutzt, dann sollte eine Nachricht kommen.
1
2
3
4
5
6
7
8
9
10
11
12
on:use
{
	$zufall = random(1, 2);
	if ($zufall == 1)
	{
		msg "Objekt: Fleisch";
	}
	else
	{
		msg "Objekt: Stein";
	}
}

alt Re: Random Spawn Items

AroundTheWorld
User Off Offline

Zitieren
Vielen Dank , vielen dank aber das brauch ich nicht... ich programmier mit C++ hat das gleiche Aufbauschema.
Ich möchte nur die vom Programm vorgegebenen script elemente lernen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
on:use
{

//While Schleife?     

	$zufall = random(1, 2);
     if ($zufall == 1)
     {
         ???SPAWNOBJECT ???
     }
     else
     {
          ??? SPAWNOBJECT ???
     }
addtimer??? 4000 Frames

}

Ich weiß nur nicht wie die Befehle in Stranded 2 heißen.

alt Re: Random Spawn Items

Nova
User Off Offline

Zitieren
Dafür musst du dir die Trigger anschauen. Mit ihnen kannst du alle halbe Sekunde nachschauen, ob der Spieler im Radius ist. Wenn der Spieler drin ist, dann guckst du nach, ob eine Variable auf 0 steht. Sollte dies der Fall sein, spawnst du das entsprechende Objekt, setzt die Variable auf 1 und setzt einen s2 cmd timer mit 600000. (Millisekunden, entspricht 10 Minuten.) Schau dir den Befehl an, um zu sehen, wie er funktioniert.
Auch s2 cmd create ist zum Spawnen wichtig, schaue es dir in der Befehlsreferenz an. (Einfach auf das Wort klicken.)

Sobald das Event dieses Timers ausgeführt wird, setzt du die Variable wieder auf 0. So verhinderst du, dass die ganze Zeit Sachen gespawnt werden.

Wie du zufällig etwas auswählst, habe ich dir ja schon geschrieben.


Es ist gut, dass du C++ kannst. Allerdings ist das keine Garantie, dass du auch die Stranded-II-Scriptsprache sofort kannst. Das Event-System mit s2 cmd on und den timern ist eine Neuerung, die schon verwirren kann.

alt Re: Random Spawn Items

AroundTheWorld
User Off Offline

Zitieren
Vielen Dank. Ich werde mich jetzt ans schreiben machen.
Falls es nicht klappt melde ich mich nochmal

##EDIT

create "Klasse", Typ [, X, Z] [, Menge]

Was ist die Klasse und der Typ?
muss ich getx und gety beim Item, das spawnen soll oder
beim trigger schreiben?

alt Re: Random Spawn Items

Hurri04
Super User Off Offline

Zitieren
klasse: "object", "item", "unit", "info"
je nachdem, aus welcher gruppe du was spawnen lassen willst.

typ: wenn du im editor z.b. auf ein item in der liste links zeigst, wird dort im tooltip eine nummer angezeigt.
dies ist die typ-nummer und kommt an dieser stelle ins script rein. ohne anführungszeichen und so!
und bitte nicht mit der ID verwechseln, das ist die nummer für eine instanz und zudem hat jede klasse einen eigenen ID-range.

getx und gety kommen natürlich beim trigger rein, so wie eigentlich alles in diesem einfachen beispiel, wenn ich das richtig sehe.

alt Re: Random Spawn Items

AroundTheWorld
User Off Offline

Zitieren
Ich kriegs nicht hin.
Ihr schreibt alle es ist einfach.
Bitte schreibt mir doch ein script
wie muss der Area trigger aufgebaut sein?

alt Re: Random Spawn Items

Hurri04
Super User Off Offline

Zitieren
schau dir mal s2 cmd on an und verwende davon "on:trigger" in der scriptbox des triggers, um das event abzufangen, das ausgelöst wird, wenn die eingestellten parameter zutreffen.

alt Re: Random Spawn Items

Kayren
User Off Offline

Zitieren
Ich versuchs mal:


1
2
3
4
5
6
on:load{
 timer 0, 600000,0;
}
on:timer{
 areal_event "createclose", getx("self"),gety("self"),getz("self"),radius;
}
Steckt in irgendeiner Info.
Sollte via s2 cmd addscript dem Spieler gegeben werden so dass jede 10 Minuten er ein Skript ausführt, das jedem Objekt in einem beliebigen radius(radius mit Zahl zu ersetzen) ein Event namens createclose ausführt.

1
2
3
on:start{
 addscript "Unit",1,id;
}
In der Map selbst.
Bei der ID fügst du die ID der Info ein wo du das erste Skript hineingelegt hast. Das wird dadurch am Anfang des Spieles dem Spieler gegeben. Wenn ich mich recht erinnere ist der Spieler immer die Unit mit der ersten ID, daher.


1
2
3
4
5
6
7
8
on:createclose{
 local $while;
 $while=0
 while($while<random(20)) {
  randomcreate "item", random(100),Ymin,Ymax,menge;
 }
 freevar $while;
}

Wird dem Objekt, dem der Spieler nahe kommen soll gegeben und wird dort ausgelöst, da dann createclose bei dem Objekt ausgeführt wird. Erschafft 0 bis 21 der ersten 100 Gegenstände nach Nummer ihres Typs für eine bestimmte Menge(füge eine Zahl oder random(irgendwas) ein statt menge) in einem Bereich der durch Ymin und Ymax bestimmt ist.

Das Ganze ist nicht ausgetestet, falls also Fehler drin sind, bitte hier sagen. Falls Andere einen Fehler finden, ihr könnt ihn, falls ihr wollt, verbessern. Habe schon lange nicht mehr geskriptet und mein PC ist zu langsam führ Stranded 2(lol?)
2× editiert, zuletzt 22.06.13 17:31:42

alt Re: Random Spawn Items

Kayren
User Off Offline

Zitieren
Tschuldigung.
1
2
3
4
5
on:createclose{
 loop("count",random(20)) {
  randomcreate "item", random(100),Ymin,Ymax,menge;
 }
}

Das verbesserte Skript das ins Objekt gehört.

Danke, Nova. So müsste es klappen.

alt Re: Random Spawn Items

Hurri04
Super User Off Offline

Zitieren
@user Kayren:
meine güte ey, was ist denn das für ein chaos?!
das lässt sich wesentlich leichter und mit nur einem script machen.

das einzig richtige bei deinem 1. script ist die 4. zeile und das 2. script wird garnicht gebraucht, wenn man es richtig macht.

beim 3. script steht $while immer auf 0, die letzten 3 parameter von zeile 5 müssen ersetzt werden und s2 cmd freevar braucht man allerhöchstens bei scripts, die per rekursion auf 10.000 verschiedene variablen zugreifen, die nur einmalig gebraucht werden (wobei sich dann aber eher andere sorgen machen sollte, anstatt darauf zu achten ob man alle variablen aufgeräumt hat).


sorry, aber die scripte wimmeln mit fehlern und die syntax ist auch nicht besonders toll. zudem sind deine beschreibungen unter aller sau.


@user AroundTheWorld:
wenn du's immer noch nicht hingekriegt hast:
Spoiler >


ich hoffe, dass dir das hilft, einen einstieg ins scripten von S2 zu finden.
1× editiert, zuletzt 22.06.13 22:26:19

alt Re: Random Spawn Items

0TT0
User Off Offline

Zitieren
gibt es keinen befehl der überprüft, ob eine variable einen wert besitzt? - dann könnte man "on:starten" weglassen

alt Re: Random Spawn Items

Hurri04
Super User Off Offline

Zitieren
nein, einen solchen befehl gibt es nicht.
Mehr >


zudem ist das event "on:starten" nicht dazu gedacht, die variable zu überprüfen, sondern sie zu setzen.
denn das ist die art, wie der s2 cmd timer befehl funktioniert: er löst ein neues event aus (anstatt an der aktuellen stelle im code zu warten). folglich ist das die einzige möglichkeit, wie man nach einer bestimmtem zeit (hier 10 minuten) eine sache ausführen kann.

außerdem: was soll der geiz? das sind gerade mal 2 simple events, einfacher geht's wirklich nicht mehr.
Zum Anfang Vorherige 1 Nächste Zum Anfang
Einloggen, um zu antworten Scripts-ÜbersichtStranded II-ÜbersichtForenübersicht