Forum

> > Stranded II > Scripts > Scripting - Fragen/Probleme
ForenübersichtStranded II-Übersicht Scripts-ÜbersichtEinloggen, um zu antworten

Deutsch Scripting - Fragen/Probleme

6.780 Antworten
Seite
Zum Anfang Vorherige 1 2256 257 258339 340 Nächste Zum Anfang

alt Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Zitieren
ach da ist der spielemeister ja persönlich *smile*

soll deine aussage nun heißen, daß man mit addstate "object",$tmp,5; das lagerfeuer im adventure-modus tatsächlich zum ewigen feuer machen kann ?

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
Du kannst nicht so leicht herausfinden welches Lagerfeuer in deiner Nähe ist.
(Und dir das Script geben, will ich jetzt auch nicht, dabei lernt man nicht allzu viel. ;))

alt Re: Scripting - Fragen/Probleme

Westbeam
User Off Offline

Zitieren
@Nova
er hat aber gefragt, wie man etwas kleiner machen kann
und meiner meinung ist , das was ich geschrieben hab richtig
nur das ich halt geschrieben hab, wie man etwas größer macht, welches aber mit dem selben befehl gemacht wird

alt Re: Scripting - Fragen/Probleme

Mr Stranded
User Off Offline

Zitieren
@wuffelchen:
Versuchs einmal mit folgendem Code.
Versuche aber auch ihn zu begreifen.

1
2
3
4
5
6
loop ("objects",172) { //Geht alle lagerfeuer durch
	$id = loop_id (); //Vermittelt die ID des aktuellen lagerfeuers
	if (inview ("object",$id)==1) { //Checkt ob es im Blickfeld ist
		addstate ...; //Das weisst du ja
	}
}

mfg
1× editiert, zuletzt 18.03.09 19:31:23

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
Ich habe auch gar nicht gesagt, dass dein Script falsch ist. Ich habe ihm nur gesagt was er eingeben muss, damit er das Objekt verkleinert.

@Mr Stranded: Genau richtig, nur hätte ich s2 cmd inrange genommen.

alt Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Zitieren
hmm...
erstmal danke Mr Stranded.

wenn ich das richtig verstehe...

loop = ist eine funktion die stets wiederholt wird wie eine endlosschleife
("objects",172) = sind die lagerfeuer (objects = mehrzahl des gesuchten objectes ; 172 = id des lagerfeuers)
$id = hier soll die id aus dem loop_id() übernommen werden
loop_id() = hier wird die gesuchte id des lagerfeuers in die variable $id gelegt
if (inview ("object",$id)==1) = wenn das object mit der gesuchten id im blickfeld ist (== 1 / 1 = zutreffend sonst nein)
demnach müsste ich dann also im addstate folgendes schreiben...
addstate "object",$id,5; = dem gesuchten object mit der id $id den status ewiges feuer zu geben

wobei inrange durch den radius bestimmt wird und das feuer dadurch auch nicht unbedingt im blickfeld sein muß. man muß dort nur in reichweite des radius sein

bitte korrigieren, wenn ich irgendwo falsch liege will es ja auch wirklich verstehen
1× editiert, zuletzt 18.03.09 20:43:21

alt Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Zitieren
könnte man eigentlich auch schreiben, wenn das lagerfeuer in reichweite der hütte ist, daß es dann ewiges feuer sein soll ?

1
2
3
4
5
6
7
8
9
10
11
12
loop ("objects",172)
{
$lfid = loop_id();
loop ("objects",206)
{
$hid = loop_id();
if (inrange ("object",$lfid,10) == ($hid)
{
addstate "object",$lfid,5;
}
}
}

nee, so geht es nicht. kann auch sein, daß ich da ein denkfehler drin habe

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
Sorry, aber Schleifen sind in Stranded II nicht schachtelbar.
Das bedeutet, dein Code funktioniert leider nicht.


Ps: Ich würde dir empfehlen deinen Code einzurücken.
Also so etwas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
on:start
	{
	loop ("count", 5)
		{
		if (loop_id() == 3)
			{
			mach_etwas;
			}
		else
			{
			mach_etwas_anderes;
			}
		}
	}

Dadurch wird dein Code leichter zu überschauen. (Deinen eigenen Stil, wie du einrückst, wirst du erst finden müssen.)
Diese Einrückung wird auch oft benutzt, ist meiner Meinung nach aber nicht so toll:

1
2
3
4
5
6
7
8
9
10
on:start {
	loop ("count", 5) {

		if (loop_id() == 3) {
			mach_etwas;
		} else {
			mach_etwas_anderes;
		}
	}
}

alt Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Zitieren
würde denn das hier eher funktionieren ?

1
2
3
4
5
6
7
on:start
	{
	if (count_inrage ("objects",172,20),("objects",206))
		{
		addstate "objects",172,5;
		}
	}

Edit:
cool, habs eben mal versucht und keinen script debug fehler im parser bekommen
aber funktioniert des auch wirklich ?! :S
1× editiert, zuletzt 18.03.09 22:56:28

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
Nö, das funktioniert leider nicht.

Fehler:
> Du hast "count_inrage" geschrieben, es heißt aber "count_inrange".
> Du hast die runden Klammern bei dem Befehl falsch gesetzt. Ein rundes Klammernpaar um alle Parameter, nicht einfach irgendwo in der Mitte aufhören und ein neues Paar beginnen.
> Du musst während einer If-Abfrage auch etwas abfragen. Count_inrange ist dafür eh nicht geeignet, weil es dir nicht sagt, welches Lagerfeuer in deiner Nähe ist.
> Einzig und allein bei loop wird "objekts" beschrieben, sonst immer "objekt".
> Du musst die ID-Nummer und nicht die Typ-Nummer bei addstate benutzen.

alt Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Zitieren
geschweige über meine fehler die ich oben gemacht habe, daß es so nicht funktionieren konnte

aber hier steht doch:

count_inrange "Klasse", Typ [,Radius] [,"Klasse2", ID2]
Kategorien: return, player
Gibt die Anzahl der Objekte eines bestimmten Typs innerhalb eines Radiuses (Standard 300) um den Spieler (oder ein Objekt) zurück

meine ok, für den ersten teil müsste des doch gehn, da dort der typ gesucht wird und für den zweiten müsste ich die id durch den loop befehl suchen.

und wenn man da dann sagt:
wenn das object 1 in der nähe von object 2 ist... dann...

oder nicht ?

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
Wuffelchen hat geschrieben
aber hier steht doch:

count_inrange "Klasse", Typ [,Radius] [,"Klasse2", ID2]
Kategorien: return, player
Gibt die Anzahl der Objekte eines bestimmten Typs innerhalb eines Radiuses (Standard 300) um den Spieler (oder ein Objekt) zurück
Was bringt es dir, die Anzahl der Lagerfeuer in deiner Nähe zu wissen? Du brauchst du ID eines Lagerfeuers in deiner Nähe.

Wuffelchen hat geschrieben
meine ok, für den ersten teil müsste des doch gehn, da dort der typ gesucht wird und für den zweiten müsste ich die id durch den loop befehl suchen.
Wie gesagt, siehe oben.
Das mit dem loop stimmt aber.

Wuffelchen hat geschrieben
und wenn man da dann sagt:
wenn das object 1 in der nähe von object 2 ist... dann...

Richtig, nur solltest du dafür s2 cmd count_behaviourinrange nehmen. Dazu brauchst du das Verhalten "cover".

alt Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Zitieren
jetzt blicke ich überhaupt nicht mehr durch
sollte doch nicht schwer sein zu sagen, wenn die hütte in der nähe des feuers ist, dann soll das feuer immer brennen bzw das feuer in der nähe der hütte.
aber anscheinend ist das hier nicht möglich oder nur über zich umwege. wollte doch kein dinA4 script deswegen schreiben müssen
wobei ich jetzt das mit dem "verhalten" und "cover (nirgends angegeben) verstehe
1× editiert, zuletzt 19.03.09 13:30:39

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
Klicke auf den fett markierten Link und gebe dann bei deinem Script für "Verhalten" dann "cover" ein.

Das Script ist nicht allzu komplex (und groß), jedenfalls nicht wenn man weiß, was man eingeben muss.

alt Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Zitieren
sorry, bin ich wohl doch zu blöde für. (mir zu komplex und undurchsichtig das ganze)
wäre mir lieber, ich könnte sagen:

if (inrange ("klasse",typ1,radius,"klasse"typ2))
dann mache dies oder das

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
Das geht auch, nur etwas anders^^

Erstelle eine neue Map und setzte auf sie eine Hütte. Jetzt setzt du auf die Map noch zwei Lagerfeuer, das eine in der Hütte, das zweite etwas entfernt. (Ungefähr zwei Hüttenlängen)
In die beiden Lagerfeuer setzt du nun dieses Script:

1
2
3
4
5
6
7
8
9
on:use
	{
	$id = currentid();
	if ( count_behaviourinrange("object", "cover", 60, "object", "$id") > 0)
		{
		addstate "self", 5;
		closemenu;
		}
	}

Wenn du jetzt das Lagerfeuer in der Hütte benutzt, dann sollte es anfangen zu brennen. Das draußen sollte aus bleiben.


Jetzt musst du nur noch herausfinden wie du herausfindest welche ID das Lagerfeuer vor dir hat.
Tipp: s2 cmd inview und s2 cmd loop sind da ausschlaggebend.

alt Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Zitieren
sorry, wohl mein fehler, weil ich mich nicht richtig ausgedrückt habe.

Nova ich baue nur 1 lagerfeuer auf ner map und baue die hütte da drüber. und sobald die hütte steht sollte das lagerfeuer immer brennen. da kann ich keine 2 lagerfeuer vergleichen.
Zum Anfang Vorherige 1 2256 257 258339 340 Nächste Zum Anfang
Einloggen, um zu antworten Scripts-ÜbersichtStranded II-ÜbersichtForenübersicht