Forum

> > Stranded II > Scripts > Scripting - Fragen/Probleme
Forums overviewStranded II overview Scripts overviewLog in to reply

German Scripting - Fragen/Probleme

6,780 replies
Page
To the start Previous 1 2256 257 258339 340 Next To the start

old Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Quote
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 ?

old Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Quote
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. ;))

old Re: Scripting - Fragen/Probleme

Westbeam
User Off Offline

Quote
@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

old Re: Scripting - Fragen/Probleme

Mr Stranded
User Off Offline

Quote
@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
edited 1×, last 18.03.09 07:31:23 pm

old Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Quote
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.

old Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Quote
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
edited 1×, last 18.03.09 08:43:21 pm

old Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Quote
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

old Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Quote
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;
		}
	}
}

old Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Quote
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
edited 1×, last 18.03.09 10:56:28 pm

old Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Quote
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.

old Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Quote
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 ?

old Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Quote
Wuffelchen has written
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 has written
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 has written
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".

old Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Quote
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
edited 1×, last 19.03.09 01:30:39 pm

old Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Quote
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.

old Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Quote
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

old Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Quote
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.

old Re: Scripting - Fragen/Probleme

Wuffelchen
User Off Offline

Quote
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.
To the start Previous 1 2256 257 258339 340 Next To the start
Log in to reply Scripts overviewStranded II overviewForums overview