Forum
Stranded II Allgemein Nützliche ScriptsUnd ich denke das ist der falsche Thread. Schreib doch in den Scripting Fragen/probleme thread
u nnd ich habe mmitlerweile auch verstanden wie das alles geht
danke an alle
und coole scripts
edited 2×, last 19.05.10 08:56:52 pm
Ich habe ihn nie wirklich beendet und keine Lust ihn zu testen. Er könnte nun mit sehr vielen schönheitsfehlern funktionieren. Dinge welche Eingestellt werden müssen sind groß geschrieben:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// globaler unendlicher timer benötigt (event "worldtimer") on:start { event "create", "self"; } on:create { local $mod,$attack,$x,$y,$z; $mod=0; //0=Standart $attack=0; //0=kein Gegner,1=verfolgt Spieler,2=greift Spieler an, 3=verfolgt unit, 4=greift unit an $x=getx ("self"); $z=getz ("self"); $y=gety ("self"); local $spieler, $gegner, $distance, $feind; $spieler=0; $gegner=0; } on:worldtimer { if ($mod==0) { $spieler=count_inrange "unit",1,500,"self"; //sieht ob der Spieler in der Nähe ist $gegner=count_inrange "unit",FEINDID,500,"self"; //sieht ob eine Einheit der Art XXX in der Nähe ist } if (($mod==0)&&($spieler=>0)) { $mod=1; $attack=1; ai_mode $id,"goto","unit",1; $distance=distance "self","unit",1; } if (($mod==1)&&($spieler=>0)) { $distance=distance "unit",$id,"unit",1; } if (($mod==1)&&($distance=<100)) { projectile EINSTELLEN MODUS MUSS 4 SEIN // Hierdurch wird angegriffen } if (($mod==0)&&($gegner=>0)) { $mod=2; $attack=1; $UNITNAMEID=$id; timer "self",1,1,"abfrage"; } if (($mod==1)&&($spieler=>0)) { $distance=distance "unit",$id,"unit",1; } if ($mod==3) { $mod=4; ai_mode $id,"goto","unit",$feind; $distance=distance "self","unit",$feind; } if (($mod==4)&&($distance=>100))) { $distance=distance "self","unit",$feind; } if (($mod==4)&&($distance=<100)) { projectile EINSTELLEN MODUS MUSS 1 SEIN // Hierdurch wird angegriffen } on:abfrage { $feind=$UNITNAMEIDDESFEINDES; $mod=3; }
Script funktioniert so:
1. Script sucht nach Einheiten, welche er bekämpfen soll.
2. Er stellt die ID der Einheit in eine globale Variable (Der Scriptbefehl count_inrange erkennt den Typ, aber nicht die ID).
3. Er ruft die Gegnerische ID ab.
4. Er misst die Distanz zwischen den beiden Einheiten.
5. Er löst ein Projectil aus, welches auf den Gegner fliegt.
Den Script muss man wie gesagt stark bearbeiten, wenn euch Bugs auffallen:
Mir eine PN mit:
1. Script (vieleicht fehler bei der Anpassung?)
2. Fehlerbeschreibung
Hoffe der Script kann jemanden helfen. Achja er ist natürlich für Modifikationen gemacht für Maps ist er eher bedingt geeignet (sollte aber auch gehen).
Bekannte Bugs:
-Nur für Fernkämpfer/ Nahkämpfer nur stark bedingt.
-Die Einheit erkennt nicht wann der Gegner Tod ist.
-Falsche Einheit kann als Gegner erkannt werden.
-Einheit könnte zu schnell angreifen (Angriffsgeschwindigkeit=Kontrolltimer)
-Einheit könnte zu langsam reagieren
edited 1×, last 17.05.11 05:13:14 pm
on:start {
player_speed X;
}
ist doch einfacher
für X eine belibige zahl setzen
Zu deiner Frage:
Wenn du dir Novas Script mal genauer angesehen hättest, würdest du feststellen, das dieses Script dafür sorgt, je mehr du trägst, desto langsamer läufst du.
Und das kann dein Script nicht.
Damit änderst du nur die geschwindigkeit. Außerdem steckt in Novas Script genau der Befehl auch drin, aber eben etwas modifiziert, damit man eben langsamer wird je mehr man trägt.
das hab ich wohl übersehen na ich probier das mal aus
Am Anfang des Codes findet man ein paar Variablen, mit denen festgelegt wird, welche Einstellungen ihr benutzen wollt. In zwei bestimmten Variablen (siehe Code) wird dabei gespeichert, die Items welches Objektes denn gespeichert werden sollen oder in welches Objekt sie geladen werden sollen.
Folgendes Script gehört dabei in das Globale Script der Map. Dabei können alle Zeilen mit // am Anfang gelöscht werden. Dies sind nur Kommentare zum Quellcode. Klickt dafür einfach auf "Mehr".
Möchtest du das Speichern und Laden von Items mal testen? Dazu erstellst du mit dem Editor eine neue Map, gehst dort in das Globale Script und kopierst dann den Quelltext von oben hinein. Danach setzt du irgendein Objekt auf die Map und fügst den unteren Quellcode dort hinein. Am besten verteilst du noch ein paar Items in der Map, damit du auch Items hast, mit denen du das Script testen kannst. Danach drückst du F12 (Map testen) und drückst E, während du auf das erstellte Objekt mit dem Script schaust. (Benutzen)
Jetzt dürfte alle deine Items weg und gespeichert sein. Wenn du jetzt mit der linken Maustaste auf das Objekt klickst (Schlagen), dürftest du alle deine Items wiederhaben!
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
on:use { 	event "NVitemsSpeichern", "global"; 	msg "Alle Items des Spielers gespeichert!", 0, 5000; } on:hit { 	event "NVitemsLaden", "global"; 	msg "Items geladen und dem Spieler gegeben!", 0, 5000; }
Zwei Dinge, die man bei dem Testcode beachten sollte: Wenn ihr das Objekt zwei Mal direkt hintereinander benutzt, sind alle eure Items weg! Erst werden eure Items gespeichert, und dann noch mal. Da ihr aber in dem Augenblick keine Items mehr habt, wird nichts gespeichert, und dieses Nichts überschreibt dann den alten Speicherstand.
Solltet ihr Fehler finden oder einfach eure Meinung zu dem Quelltext sagen wollen, dann nur raus damit!
edited 1×, last 17.06.12 06:26:03 pm
Die Idee an sich lasse ich jetzt aber mal unkommentiert.
Die Idee zu dem Script kam, wie gesagt, von -tony316- aus einem anderen Thread. Ich selber finde sie aber auch gut, da man sie für verschiedene Zwecke einsetzen kann, allen voran beispielsweise als "Abnahme der Items", wenn man von Eingeborenen gefangen genommen wird.