Forum
Stranded II Scripts Scripting - Fragen/ProblemeZwischen zwei Processes soll eine Wartezeit eingebaut werden, da zwei Process Befehle hintereinander nur den Effekt bringen, dass gleich der zweite ausgeführt wird^^
Sprich, der erste processblaken läuft solange, bis der zweite ausgeführt wird(~1 millisekunde, soll aber z.b. 5 sekunden laufen).
mfg,
Hoodlum
Ich möchte das ein Eingeborener mir für 5 rohe Fische einen Bogen verkauft der Code funktioniert aber nicht und es kommt auch keine Fehlermeldung !!!
Hier der Code in der Info
...
page=6
title=Händler
text=start
...
text=end
script=start
$fish = playergotitem 89 ;
if $fish >= 5
{
find 59,1 ;
$fish = $fish - 5 ;
setamount 89, $fish ;
}
script=end
button=2,Ok
...
also:
$fish = playergotitem(89);
edit:
und setamount erwartet die id eines items auf der map und nicht die typ id (logischerweise, woher sollte das spiel sonst wissen welches fisch item auf der map gemeint ist). so kann der befehl also nicht benutzt werden. wenn du ihn dir richtig angeguckt hättest ( setamount ) hättest du auch lesen können, dass er nicht mit gelagerten items funktioniert.
benutze freestored "unit",1,89,5;
(unit 1 ist immer der spieler) dann kannst du dir auch das subtrahieren und die fish variable sparen.
edit:
nochwas: bedingungen müssen auch in runde klammern gesetzt werden.
if (x == y) { bla }
Nächstesmal les ich genauer
1
2
3
2
3
on:trigger { addstate "unit", 1, "healing"; }
Ich möchte jetzt dass wenn man das gebiet verlässt, das ich kein heal state auf mich hab. Weil den hab ich dan immer noch auf mich. Wie mach ich das?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
on:trigger { timer "self",800,"aus"; timer "self",1200,"kontrolle"; $konrolle=1; addstate "unit", 1, "healing"; } on:aus { $kontrolle=0; } on:kontrolle { if ($kontrolle==0) { freestate "unit",1,"healing"; } }
1. Dieser Code ist ungetest und somit ohne Gewähr
2. Dieser Code funktioniert nur wenn die Triggerprüfung jede Sekunde statfindet was ich vermute
Erklärung:
Wenn der Trigger ausgelöst wird, wird eine Variable auf 1 Gesetzt, der state zugewiesen und 2 Timer gestarted.
Der 1 Timer läuft ab bevor die nächste Triggerprüfung durchgeführt wird, und setzt die Variable auf 0 zurück.
Der zweite timer läuft ab nachdem die nächste Triggerprüfung durchgeführt wurde, aber noch bevor der nächste "aus-timer" abläuft.
Wenn nun die nächste Triggerprüfung kommt, weil der SPieler noch im Gebiet ist, dann wird die Variable (welche ja auf 0 Gesetzt wurde) wieder auf 1 gesetzt, wodurch die Prüfung des 2. timers negativ ausfällt und der state nicht entfernt wird.
Ist der Spieler aber nichtmehr im Gebiet, wird die Variable nicht wieder auf 1 esetzt, bleibt auf 0 und der state wird entfernt sobald der 2. Timer abläuft.
Das passiert imemr wieder solange der Spieler im Gebiet ist, sobald das einmal zum erliegen gekommen ist (also der SPieler hat das Gebiet verlassen) beginnt es erst wieder wenn der SPieler das Gebiet erneut betritt.
komischerweise funktioniert folgender code immer noch nicht wenn ich die linke Maustaste drücke passiert nichts:
1
2
3
4
5
6
7
2
3
4
5
6
7
on:attack1 { scantarget; if (targetclass()>0) { $Leben=health(targetclass(), targetid()); msg "Leben: $Leben"; } }
Ich dachte er sei richtig. Oder funktioniert das attack1 beim player immer noch nicht?
Hab das Script jetzt bei der Map eingefügt, soll ich das woanders einfügen?
mfg
Timotheus
Kannst den Code im Grunde gleich löschen, der nützt so eh nix.
Warum nicht?
Ich dachte sobald des mit attack1 geregelt ist, funktioniert das so.
mfg
Timotheus
Und ich dachte er hat zugestimmt das noch einzubauen.
mfg
Timotheus
schreib diesen Script in einen Textcontainer (das is ein Info)
Und dann schreibst zB in den globalen Script aber auf keinen Fall in einen Textcontainer :
on:start{
addscript "unit",1,id des Textcontainers mit dem Script;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SCRIPT ERROR: Mismatched brackets Script: Unit 1 (Test Typ) Event: attack1 Row: 4 Col: 41 Script: $Leben=health(targetclass(), targetid()); SCRIPT ERROR: Expecting parameter resp. ',' Script: Unit 1 (Test Typ) Event: attack1 Row: 4 Col: 41 Script: $Leben=health(targetclass(), targetid()); SCRIPT ERROR: Mismatched brackets Script: Unit 1 (Test Typ) Event: attack1 Row: 4 Col: 41 Script: $Leben=health(targetclass(), targetid());
nun dann schreib das so:
$class=targetclass();
$id=targetid();
$Leben=health ($class,$id);
Jetzt muss ich nur noch ein Problem lösen, denn wenn ich auf attack1 draufbleibe wird mir in Dauerdurchlauf die ganze Zeit das Leben angezeigt.
Sonst passt alles, nochmals daaaankeeee.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
on:attack1 { scantarget; if (targetclass()>0) { if (($bereits==0)or($class!=targetclass())) { $class=targetclass(); $id=targetid(); $Leben=health ($class,$id); msg "Leben: $Leben"; $bereits=1; timer "self",1000,1,"wieder"; } } } on:wieder { bereits=0; }
achja und tausch bitte bei dem anderen Teil das addscript gegen extendscript aus, die Parameter können so bleiben
Aber du hast nen Fehler(glaub ich).
bei on:wieder { fehlt das $ vor dem bereits, hab ich nicht recht?
Ich kann addscript lassen, da ich keine anderen scripts auf den Player mache die überschrieben werden können und wenn doch dann füge ich sie auch einfach in den Textcontainer ein.
mfg
Timotheus