Heyho,ich wollte euch heute ein kleines Tutorial zeigen,wie man mit ein paar simplen Handgriffen ein Tor erstellen kann,welches autmatisch nach ~10 sekunden wieder schließt
Was brauchen wir?
Zuallererst brauchen wir ein Tor,welches wir mit einem beliebigen Editor erstellen.(am besten MTA)
Nachdem das alles erledigt und mit einem Object Converter in einen SA:MP Code converted ist,fügen wir die Objekte unter
OnGameModeInit ein
[pwn]public OnGamemodeInit()
{
CreateObject(980, 2422.30005, -1659.19995, 15.2, 0, 0, 270);} [/pwn]
Nun erstellen wir ganz oben im Script ein "new".Ein new hilft dazu bei,dass man ein bestimmtes Objekt in dem ganzen GM mit einem bestimmen Namen anreden kann.
Wenn ich zum Beispiel ein Tor habe,und ich will,dass das Tor mit "Toaaar" anredbar ist,erstellt man oben ein "new Toaaar;"
Wir erstellen also ganz oben im Script folgendes
[pwn]new Grovetor; //einfach irgendeinen Namen ausdenken,zumbeispiel "new LSPDTor;" oder sowas[/pwn]
Dabei ist es wichtig,das wir das ";" nicht vergessen.
Wir haben nun also oben ein "new" erstellt,jedoch haben wir diesem "new" noch kein Objekt zugewiesen....Wie gehen also wieder unter OnGameModeInit und schreiben vor das Objekt,das in meinem Fall mit "Grovetor" angeredet werden soll,ein "Grovetor ="
Das sieht dann so aus:
[pwn]public OnGameModeInit()
{
Grovetor = CreateObject(980, 2422.30005, -1659.19995, 15.2, 0, 0, 270); //dieses Objekt wird nun als "Grovetor" im ganzen Script angeredet
return 1;
}[/pwn]
Nun haben wir den 1. Teil abgeschlossen.Wir haben ein Objekt mit dem Namen "Grovetor" definiert.
Nun wollen wir,dass sich das Tor mit einem Command öffnet.Dazu gehen wir unter [pwn]public OnPlayerCommandText(playerid, cmdtext[])
{
return 0;
}[/pwn]
Hier geben wir den Command ein,mit dem das Tor geöffnet werden soll,in meinem Falle "/gtor"
[pwn]public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/gtor", cmdtext, true, 10) == 0)
return 1;
}[/pwn]
Nun haben wir den Command für das Tor,jedoch bewegt es sich noch nicht,dafür müssen wir ein
[pwn]MoveObject[/pwn]
erstellen.
Im folgenden wird von mir das Mysterium "MoveObject" erklärt
[expander]
[pwn]MoveObject(objectid,Float,X,Float,Y,Float,Z,Float,Speed,Float,RotX,1000,0,Float,RotY,1000,0,Float,RotZ,1000,0)[/pwn]
OMG,was ist das denn alles?Ich will es erklären
object id ist der vorher festgelegte name des Objectes (grovetor)
Float,X & Float,Y & Float,Z sind einfach die Koordinaten des Objektes
Speed ist die Geschwindigkeit,mit welcher das Objekt gemoved werden soll
Der Rest ist momentan egal,da wir in diesem Tutorial wir uns mit den Grundlagen beschäftigen
Wir schreiben also folgendes
[pwn]public OnPlayerCommandText(playerid, cmdtext[])
{ if (strcmp("/gtor", cmdtext, true, 10) == 0)
{
MoveObject(Grovetor, 2422.30005, -1659.19995, 5.2,2.5);
return 1;
}
return 0;
}
[/pwn]
Zur Erklärung
Grovetor = Objectid
Die ganzen zahlen sind die kopierten Koordinaten des Objektes.
Da wir ja wollen,dass das Tor 10 meter vom Urspung runter in den Boden geht,schreiben wir bei der Z Koordinate anstatt "15" "5".Damit sinkt das Tor 10 meter in den Boden.
So,nun ist das auch erledigt,aber das Tor bleibt ja nun unten,was nun?PC in die Ecke schmeißen?Knoppers essen?Erst mal zu Penny gehen?Nein,wir erstellen einen Timer,welcher nach 10 Sekunden das Tor wieder nach oben befördern soll.
Deswegen brauchen wir folgendes:
[pwn]SetTimer[/pwn]
Aber das ein Timer alleine reicht nicht,wir brauchen noch ein "forward".Diesen erstellen wir Ganz oben folgendermaßen
(zu beachten ist,dass der forward und der Timername den selben namen haben müssen,dazu später)
[pwn]#include <a_samp>
new Grovetor;
forward GroveTor (); //das hier ist unser forward für den Timer
[/pwn]
Nun erstellen wir den Timer
[pwn]SetTimer("GroveTor",5000,false);[/pwn]
Der Timer heißt "GroveTor"
er dauert 5 sekunden(pawno zählt in millisek.das heißt,eine sekunde=1000 msek)
und er wiederholt sich nicht
Das fügen wir nun ins Script unter MoveObject ein.
[pwn] if (strcmp("/gtor", cmdtext, true, 10) == 0)
{
MoveObject(Grovetor, 2422.30005, -1659.19995, 5.2,2.5);
SetTimer("GroveTor",5000,false);
D return 1;
}[/pwn]
Zwischenstand:
Wir haben ein Objekt,das mit "Grovetor" angeredet wird
Wir haben einen Command zum öffnen des Tores und einen Timer,der allerdings noch nichts macht.
Deswegen erstellen wir ganz unten im Script ein public dein Timername ()
Das sieht dann so aus:
[pwn]public GroveTor ()[/pwn]
in meinem Falle heißt mein Timer "GroveTor"
Forward und Timer MÜSSEN den selben Namen haben,dürfen aber NICHT den selben Namen wie das Objekt haben.!!
Was wollen wir,sobald der Timer abgelaufen ist?
Wir wollen,dass das Tor wieder hochgefahren wird.
Dafür erstellen wir folgendes:
[pwn]public GroveTor ()
{
MoveObject(Grovetor, 2422.30005, -1659.19995, 15.2,2.5);
return 1;
}[/pwn]
Das Objekt "Grovetor" wird wieder in die ursprüngliche Position mit der Geschwindigkeit "2.5" gesetzt.
Dazu kopieren wir einfach die Koordinaten und fertig ist unser autmatisches Tor.
Für Fragen bin ich gerne da.
Was brauchen wir?
- Grundkenntnisse
- Logisches Denkvermögen
- Pawno
- Spaß
Zuallererst brauchen wir ein Tor,welches wir mit einem beliebigen Editor erstellen.(am besten MTA)
Nachdem das alles erledigt und mit einem Object Converter in einen SA:MP Code converted ist,fügen wir die Objekte unter
OnGameModeInit ein
[pwn]public OnGamemodeInit()
{
CreateObject(980, 2422.30005, -1659.19995, 15.2, 0, 0, 270);} [/pwn]
Nun erstellen wir ganz oben im Script ein "new".Ein new hilft dazu bei,dass man ein bestimmtes Objekt in dem ganzen GM mit einem bestimmen Namen anreden kann.
Wenn ich zum Beispiel ein Tor habe,und ich will,dass das Tor mit "Toaaar" anredbar ist,erstellt man oben ein "new Toaaar;"
Wir erstellen also ganz oben im Script folgendes
[pwn]new Grovetor; //einfach irgendeinen Namen ausdenken,zumbeispiel "new LSPDTor;" oder sowas[/pwn]
Dabei ist es wichtig,das wir das ";" nicht vergessen.
Wir haben nun also oben ein "new" erstellt,jedoch haben wir diesem "new" noch kein Objekt zugewiesen....Wie gehen also wieder unter OnGameModeInit und schreiben vor das Objekt,das in meinem Fall mit "Grovetor" angeredet werden soll,ein "Grovetor ="
Das sieht dann so aus:
[pwn]public OnGameModeInit()
{
Grovetor = CreateObject(980, 2422.30005, -1659.19995, 15.2, 0, 0, 270); //dieses Objekt wird nun als "Grovetor" im ganzen Script angeredet
return 1;
}[/pwn]
Nun haben wir den 1. Teil abgeschlossen.Wir haben ein Objekt mit dem Namen "Grovetor" definiert.
Nun wollen wir,dass sich das Tor mit einem Command öffnet.Dazu gehen wir unter [pwn]public OnPlayerCommandText(playerid, cmdtext[])
{
return 0;
}[/pwn]
Hier geben wir den Command ein,mit dem das Tor geöffnet werden soll,in meinem Falle "/gtor"
[pwn]public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/gtor", cmdtext, true, 10) == 0)
return 1;
}[/pwn]
Nun haben wir den Command für das Tor,jedoch bewegt es sich noch nicht,dafür müssen wir ein
[pwn]MoveObject[/pwn]
erstellen.
Im folgenden wird von mir das Mysterium "MoveObject" erklärt
[expander]
[pwn]MoveObject(objectid,Float,X,Float,Y,Float,Z,Float,Speed,Float,RotX,1000,0,Float,RotY,1000,0,Float,RotZ,1000,0)[/pwn]
OMG,was ist das denn alles?Ich will es erklären
object id ist der vorher festgelegte name des Objectes (grovetor)
Float,X & Float,Y & Float,Z sind einfach die Koordinaten des Objektes
Speed ist die Geschwindigkeit,mit welcher das Objekt gemoved werden soll
Der Rest ist momentan egal,da wir in diesem Tutorial wir uns mit den Grundlagen beschäftigen
Wir schreiben also folgendes
[pwn]public OnPlayerCommandText(playerid, cmdtext[])
{ if (strcmp("/gtor", cmdtext, true, 10) == 0)
{
MoveObject(Grovetor, 2422.30005, -1659.19995, 5.2,2.5);
return 1;
}
return 0;
}
[/pwn]
Zur Erklärung
Grovetor = Objectid
Die ganzen zahlen sind die kopierten Koordinaten des Objektes.
Da wir ja wollen,dass das Tor 10 meter vom Urspung runter in den Boden geht,schreiben wir bei der Z Koordinate anstatt "15" "5".Damit sinkt das Tor 10 meter in den Boden.
So,nun ist das auch erledigt,aber das Tor bleibt ja nun unten,was nun?PC in die Ecke schmeißen?Knoppers essen?Erst mal zu Penny gehen?Nein,wir erstellen einen Timer,welcher nach 10 Sekunden das Tor wieder nach oben befördern soll.
Deswegen brauchen wir folgendes:
[pwn]SetTimer[/pwn]
Aber das ein Timer alleine reicht nicht,wir brauchen noch ein "forward".Diesen erstellen wir Ganz oben folgendermaßen
(zu beachten ist,dass der forward und der Timername den selben namen haben müssen,dazu später)
[pwn]#include <a_samp>
new Grovetor;
forward GroveTor (); //das hier ist unser forward für den Timer
[/pwn]
Nun erstellen wir den Timer
[pwn]SetTimer("GroveTor",5000,false);[/pwn]
Der Timer heißt "GroveTor"
er dauert 5 sekunden(pawno zählt in millisek.das heißt,eine sekunde=1000 msek)
und er wiederholt sich nicht
Das fügen wir nun ins Script unter MoveObject ein.
[pwn] if (strcmp("/gtor", cmdtext, true, 10) == 0)
{
MoveObject(Grovetor, 2422.30005, -1659.19995, 5.2,2.5);
SetTimer("GroveTor",5000,false);
D return 1;
}[/pwn]
Zwischenstand:
Wir haben ein Objekt,das mit "Grovetor" angeredet wird
Wir haben einen Command zum öffnen des Tores und einen Timer,der allerdings noch nichts macht.
Deswegen erstellen wir ganz unten im Script ein public dein Timername ()
Das sieht dann so aus:
[pwn]public GroveTor ()[/pwn]
in meinem Falle heißt mein Timer "GroveTor"
Forward und Timer MÜSSEN den selben Namen haben,dürfen aber NICHT den selben Namen wie das Objekt haben.!!
Was wollen wir,sobald der Timer abgelaufen ist?
Wir wollen,dass das Tor wieder hochgefahren wird.
Dafür erstellen wir folgendes:
[pwn]public GroveTor ()
{
MoveObject(Grovetor, 2422.30005, -1659.19995, 15.2,2.5);
return 1;
}[/pwn]
Das Objekt "Grovetor" wird wieder in die ursprüngliche Position mit der Geschwindigkeit "2.5" gesetzt.
Dazu kopieren wir einfach die Koordinaten und fertig ist unser autmatisches Tor.
Für Fragen bin ich gerne da.