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 286 87 88339 340 Nächste Zum Anfang

alt Re: Scripting - Fragen/Probleme

Hoodlum
User Off Offline

Zitieren
äh...

Zwischen 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

alt Re: Scripting - Fragen/Probleme

Norius
User Off Offline

Zitieren
Hilfe !!!

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

alt Re: Scripting - Fragen/Probleme

DC
Admin Off Offline

Zitieren
befehle die einen wert zurückgeben müssen runde klammern um die parameter haben, bzw. leere runde klammern hinter dem befehl wenn er keine parameter hat.

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 ( s2 cmd setamount ) hättest du auch lesen können, dass er nicht mit gelagerten items funktioniert.
benutze s2 cmd 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 }

alt Re: Scripting - Fragen/Probleme

Royal Flash
User Off Offline

Zitieren
Ich hab ein Gebiets Trigger gemacht, wenn man rein läuft wird man geheilt.

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

alt Re: Scripting - Fragen/Probleme

Flying Lizard
User Off Offline

Zitieren
1
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.

alt Re: Scripting - Fragen/Probleme

Timotheus
User Off Offline

Zitieren
Hm,
komischerweise funktioniert folgender code immer noch nicht wenn ich die linke Maustaste drücke passiert nichts:

1
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

alt Re: Scripting - Fragen/Probleme

Flying Lizard
User Off Offline

Zitieren
machs mal beim spieler rein.

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

alt Re: Scripting - Fragen/Probleme

Timotheus
User Off Offline

Zitieren
Gut du hast das ganze schon vorwärtsgebracht, doch nachdem ich unter Wasser in richtung Fass, die linke Maustaste gedrückt habe kam folgender Fehler:
1
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());

alt Re: Scripting - Fragen/Probleme

Timotheus
User Off Offline

Zitieren
Perfekt, es funktioniert, danke.
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.

alt Re: Scripting - Fragen/Probleme

Flying Lizard
User Off Offline

Zitieren
umpf, hm ich denke da ist es das schlauste wenn du amchst dass er etwa alle Sekunde einmal anzeigt.

1
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

alt Re: Scripting - Fragen/Probleme

Timotheus
User Off Offline

Zitieren
Gut so wie du es geschrieben hast funktioniert es.
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
Zum Anfang Vorherige 1 286 87 88339 340 Nächste Zum Anfang
Einloggen, um zu antworten Scripts-ÜbersichtStranded II-ÜbersichtForenübersicht