Guten Morgen Breadfish,
da ich dieses Tutorial früher nicht fand, als ich das nicht konnte, mache ich jetzt mal ein Tutorial, wie man
Tore mit einer Taste öffnet und schließt.
Was brauchen wir dazu?
Die Pressed Definiton, Diese vereinfacht es, abzufragen, ob der Spieler eine Taste gedrückt hat.
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
Ihr müsst euch entscheiden welche Taste, ich zähle mal ein paar auf:
- KEY_FIRE ist die linke Maustaste
- KEY_CROUCH ist die Hupe im Auto
- KEY_SPRINT ist die Leertaste
- KEY_SECONDARY_ATTACK ist die Taste Enter
- KEY_SUBMISSION ist die Taste 2 oder Num+
So nun kommen wie zum Teil des Scriptens:
1. Als erstes müssen wie zu OnPlayerKeyStateChange gehen.
Dort fragen wir nun ab, ob der Spieler diese Taste gedrückt hat.
Ich habe nun mal die Hupe genommen, geht nur im Auto!
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_CROUCH))
{
}
return 1;
}
2. Nun fragen wir noch ab ob der Spieler in der Fraktion ist, der das Tor gehört(bei Bedarf) und an welchem Tor er ist.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_CROUCH))
{
if(GetPVarInt(playerid,"Fraktion")==1) // Das muss angepasst werden
{
if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des Tores einsetzen
{
}
if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des 2. Tores einsetzen
{
}
}
}
return 1;
}
3. Jetzt fragen wir ab ob das Tor offen oder zu ist, mit einer Variable, die zu auf 0 und auf auf 1 steht.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_CROUCH))
{
new Torvariable1,Torvariable2;
if(GetPVarInt(playerid,"Fraktion")==1) // Das muss angepasst werden
{
if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des Tores einsetzen
{
if(Torvariable1 == 0)
{
}
else if(Torvariabel == 1)
{
}
}
if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des 2. Tores einsetzen
{
if(Torvariable2 == 0)
{
}
else if(Torvariabe2 == 1)
{
}
}
}
}
return 1;
}
4. Und Anschließend müssen wir nurnoch das Tor bewegen:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_CROUCH))
{
new Torvariable1,Torvariable2;
if(GetPVarInt(playerid,"Fraktion")==1) // Das muss angepasst werden
{
if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des Tores einsetzen
{
if(Torvariable1 == 0)
{
MoveObject(Tor1, X, Y, Z, 5.0);
Torvariable1 = 1;
}
else if(Torvariabel == 1)
{
MoveObject(Tor1, X, Y, Z, 5.0);
Torvariable1 = 0;
}
}
if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des 2. Tores einsetzen
{
if(Torvariable2 == 0)
{
MoveObject(Tor2, X, Y, Z, 5.0);
Torvariable2 = 1;
}
else if(Torvariabe2 == 1)
{
MoveObject(Tor2, X, Y, Z, 5.0);
Torvariable2 = 0;
}
}
}
}
return 1;
}
5. Ihr müsst die Tore auch noch definieren, z.B. mit einem "Array":
new Tor[20];
//Ongamemodeinit
Tor[0] = CreateObject(id,x,y,z);
Tor[1] = CreateObject(id,x,y,z);
//OnPlayerKeyStateChange
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_CROUCH))
{
new Torvariable1,Torvariable2;
if(GetPVarInt(playerid,"Fraktion")==1) // Das muss angepasst werden
{
if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des Tores einsetzen
{
if(Torvariable1 == 0)
{
MoveObject(Tor[0], X, Y, Z, 5.0);
Torvariable1 = 1;
}
else if(Torvariabel == 1)
{
MoveObject(Tor[0], X, Y, Z, 5.0);
Torvariable1 = 0;
}
}
if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des 2. Tores einsetzen
{
if(Torvariable2 == 0)
{
MoveObject(Tor[1], X, Y, Z, 5.0);
Torvariable2 = 1;
}
else if(Torvariabe2 == 1)
{
MoveObject(Tor[1], X, Y, Z, 5.0);
Torvariable2 = 0;
}
}
}
}
return 1;
}
Das war erstmal das Tutorial, ich hoffe es hilft ein wenig, oder gar mehr, ich werde, wenn Fehler oder RS-Fehler drin sind, sie so schnell wie möglich entfernen.
Mit freundlich Grüßen,
#BLackYoda_