Was muss ich Scripten
wenn ich ein Tor
mit ALT aufmachen möchte
Also ich drücke halt die Taste alt und mein Tor geht auf
http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange
Hier habe ich schon geschaut aber ich blick da nicht durch
Was muss ich Scripten
wenn ich ein Tor
mit ALT aufmachen möchte
Also ich drücke halt die Taste alt und mein Tor geht auf
http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange
Hier habe ich schon geschaut aber ich blick da nicht durch
Ich hab
if(PRESSED(KEY_WALK))
{
blablabla
}
und ganz nach oben an den Anfang des Scripts setzte das ein einfach :
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
Wofür stehen die ganzen
0 llen ??
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
die 0en sind einfach nur Platzhalter.
Beispiel mit "if(PRESSED(KEY_FIRE))"
würde das selbe tun wie :
if(((newkeys & (KEY_FIRE)) == (KEY_FIRE)) && ((oldkeys & (KEY_FIRE)) != (KEY_FIRE)))
Im Prinzip ist es einfach nur kürzer
Achsooo okay
Kein Problem
Was ist hier mein Problem??
C:\Users\Dave\Desktop\Home\Server\gamemodes\grandlarc.pwn(122) : error 017: undefined symbol "newkeys"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
#define GATE(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
if(GATE(KEY_WALK))
{
if(!IsPlayerInRangeOfPoint(playerid,10,1821.57, -1450.98, 12.83))return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
{//MoveObject(tor1[0],
MoveObject(tor1[0], 1806.77, -1448.59, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[1], 1806.77, -1448.59, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor1[2], 1806.77, -1448.64, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[3], 1806.76, -1448.69, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[4], 1806.77, -1448.64, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor1[5], 1806.76, -1448.69, 15.59, 1.0, 0.00, 180.00, 170.00);
SetTimer("FWTor1",10000,false);
SendClientMessage(playerid,COLOR_GRELLRED,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
}
return 1;
}
Wo genau benutzt du die Abrage
if(GATE(KEY_WALK))
Also in welchem Callback?
Andere frage wo sollte ich es am besten nutzen ?!
ich habe es in
public OnPlayerCommandText(playerid, cmdtext[])
{
Du kannst es nur bei OnPlayerKeyStateChange benutzen. Dieses Callback wird ausgeführt,
wenn der Spieler eine Spieltaste drückt (hoch,runter,links,rechts,hupen,schießen etc.)
Wenn du das was du oben geschrieben hast nach OnPlayerKeyStateChange packst,
würde die Taste "ALT" das Tor öffnen.
warum so schwer wen es auch einfacher geht
if(newkeys & KEY_SUBMISSION)
{
if(IsPlayerInRangeOfPoint(playerid,15.0,1588.6610,-1638.5031,13.3795))
{
OnPlayerCommandText(playerid,"/pdtor");
}
}
return 1;
key musse in wiki gucken
Alles anzeigenwarum so schwer wen es auch einfacher geht
if(newkeys & KEY_SUBMISSION)
{
if(IsPlayerInRangeOfPoint(playerid,15.0,1588.6610,-1638.5031,13.3795))
{
OnPlayerCommandText(playerid,"/pdtor1");
}
}
return 1;
key musse in wiki gucken
Was zum....
Er hat keinen Befehl namens "pdtor1" oder hat er das hier geschrieben?
Du kopierst einfach irgend einen Code den du irgendwo findest und schreibst
ihm den?!
Leute klappe jetzt
Noch eine frage dazu habe ich es geht jetzt aber nur wenn ich nicht in einem Auto bin nun möchte ich das machen das man wenn man in einem Auto sitzt das es dann auch auf geht. ?!
dumm ? laber mal kein müll
das ist selbst geschriben die x,y,z sind auch ausgedacht und pdtor ist ein beispiel
//gemeldet.
Du gibst hier unnötigen Senf ab und meinst dann noch mit beleidigen zu müssen?
Dein Post hat absolut NICHTS zur Sache getan sondern einfach nur verwirrt. Dein Befehl
ist verdammt nochmal genau das selbe, was er geschrieben hat nur dass du aus unerklärlichen
Gründen OnPlayerCommandText(playerid,"/pdtor1"); rein geschrieben hast.
Hier passt ein schönes Bildchen:
Crox:
Dein Code sollte auch funktionieren wenn man im Auto sitzt. Allerdings ist in einem Fahrzeug
KEY_FIRE = Linkes STRG und nicht Maustaste
Ich habe ja KEY_WALK = LALT
Aber es geht nicht
Ich habe ja KEY_WALK = LALT
Aber es geht nicht
Natürlich. Sobald du im Auto sitzt ist ist KEY_WALK nicht mehr vertreten.
Du könntest höchstens KEY_FIRE statt KEY_WALK benutzen. Das wäre dann zu
Fuß STRG/Maustaste und im Fahrzeug STRG....
Ich habe es aber schon mehrmals gesehen das es trotzdem auf der Taste ging.
Die Taste ist gut gelegt
-.- sry hab mich versehen.
LALT zu Fuß = KEY_WALK
LALT im Veh = KEY_FIRE
Du müsstest also das hier in OnPlayerKeyStateChange schreiben:
if(GATE(KEY_WALK))
{
if(!IsPlayerInRangeOfPoint(playerid,10,1821.57, -1450.98, 12.83))return 1;
{//MoveObject(tor1[0],
MoveObject(tor1[0], 1806.77, -1448.59, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[1], 1806.77, -1448.59, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor1[2], 1806.77, -1448.64, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[3], 1806.76, -1448.69, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[4], 1806.77, -1448.64, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor1[5], 1806.76, -1448.69, 15.59, 1.0, 0.00, 180.00, 170.00);
SetTimer("FWTor1",10000,false);
SendClientMessage(playerid,COLOR_GRELLRED,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
}
return 1;
}
if(GATE(KEY_FIRE))
{
if(!IsPlayerInAnyVehicle(playerid))return 1;
if(!IsPlayerInRangeOfPoint(playerid,10,1821.57, -1450.98, 12.83))return 1;
{//MoveObject(tor1[0],
MoveObject(tor1[0], 1806.77, -1448.59, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[1], 1806.77, -1448.59, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor1[2], 1806.77, -1448.64, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[3], 1806.76, -1448.69, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[4], 1806.77, -1448.64, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor1[5], 1806.76, -1448.69, 15.59, 1.0, 0.00, 180.00, 170.00);
SetTimer("FWTor1",10000,false);
SendClientMessage(playerid,COLOR_GRELLRED,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
}
return 1;
}//Nicht getestet, sollte allerdings funktionieren :)
Achso:
Lass die Nachrichten dass er NICHT in der Nähe vom Tor ist weg, sonst bekäme jeder User auf dem
Server andauernd eine Meldung wenn er mit einem Hunter schießt oder zu Fuß gehen will. (hab sie schon entfernt)
Ich habn Neues Problem ... Jetzt geht aber immer nur das 1 Tor auf
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(GATE(KEY_WALK))
{
if(!IsPlayerInRangeOfPoint(playerid,10,1809.45, -1449.11, 12.87))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
{//MoveObject(tor1[0],
MoveObject(tor1[0], 1806.77, -1448.59, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[1], 1806.77, -1448.59, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor1[2], 1806.77, -1448.64, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[3], 1806.76, -1448.69, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[4], 1806.77, -1448.64, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor1[5], 1806.76, -1448.69, 15.59, 1.0, 0.00, 180.00, 170.00);
SetTimer("FWTor1",10000,false);
SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
}
return 1;
}
if(GATE(KEY_WALK))
{
if(!IsPlayerInRangeOfPoint(playerid,10,1812.73, -1449.70, 15.59))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
{//MoveObject(tor1[0],
MoveObject(tor2[0], 1812.75, -1449.64, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor2[1], 1812.75, -1449.64, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor2[2], 1812.73, -1449.70, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor2[3], 1812.73, -1449.70, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor2[4], 1812.72, -1449.76, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor2[5], 1812.72, -1449.76, 15.59, 1.0, 0.00, 180.00, 170.00);
SetTimer("FWTor2",10000,false);
SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
}
return 1;
}
if(GATE(KEY_WALK))
{
if(!IsPlayerInRangeOfPoint(playerid,10,1820.29, -1451.02, 12.87))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
{//MoveObject(tor1[0],
MoveObject(tor3[0], 1820.29, -1450.92, 12.87, 1.0, 0.00, 0.00, 0.00);
MoveObject(tor3[1], 1820.29, -1450.92, 15.59, 1.0, 0.00, 180.00, 180.00);
MoveObject(tor3[2], 1820.29, -1450.98, 12.87, 1.0, 0.00, 0.00, 0.00);
MoveObject(tor3[3], 1820.29, -1451.02, 12.87, 1.0, 0.00, 0.00, 0.00);
MoveObject(tor3[4], 1820.29, -1450.98, 15.59, 1.0, 0.00, 180.00, 180.00);
MoveObject(tor3[5], 1820.29, -1451.02, 15.59, 1.0, 0.00, 180.00, 180.00);
SetTimer("FWTor3",10000,false);
SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
}
return 1;
}
return 1;
}
@Zigges: Wie alt sind wa? 10?
Crox:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(GATE(KEY_WALK))
{
if(!IsPlayerInRangeOfPoint(playerid,10,1809.45, -1449.11, 12.87))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
{//MoveObject(tor1[0],
MoveObject(tor1[0], 1806.77, -1448.59, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[1], 1806.77, -1448.59, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor1[2], 1806.77, -1448.64, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[3], 1806.76, -1448.69, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor1[4], 1806.77, -1448.64, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor1[5], 1806.76, -1448.69, 15.59, 1.0, 0.00, 180.00, 170.00);
SetTimer("FWTor1",10000,false);
SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
return 1;
}
if(!IsPlayerInRangeOfPoint(playerid,10,1812.73, -1449.70, 15.59))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
{//MoveObject(tor1[0],
MoveObject(tor2[0], 1812.75, -1449.64, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor2[1], 1812.75, -1449.64, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor2[2], 1812.73, -1449.70, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor2[3], 1812.73, -1449.70, 15.59, 1.0, 0.00, 180.00, 170.00);
MoveObject(tor2[4], 1812.72, -1449.76, 12.87, 1.0, 0.00, 0.00, -10.00);
MoveObject(tor2[5], 1812.72, -1449.76, 15.59, 1.0, 0.00, 180.00, 170.00);
SetTimer("FWTor2",10000,false);
SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
return 1;
}
if(!IsPlayerInRangeOfPoint(playerid,10,1820.29, -1451.02, 12.87))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
{//MoveObject(tor1[0],
MoveObject(tor3[0], 1820.29, -1450.92, 12.87, 1.0, 0.00, 0.00, 0.00);
MoveObject(tor3[1], 1820.29, -1450.92, 15.59, 1.0, 0.00, 180.00, 180.00);
MoveObject(tor3[2], 1820.29, -1450.98, 12.87, 1.0, 0.00, 0.00, 0.00);
MoveObject(tor3[3], 1820.29, -1451.02, 12.87, 1.0, 0.00, 0.00, 0.00);
MoveObject(tor3[4], 1820.29, -1450.98, 15.59, 1.0, 0.00, 180.00, 180.00);
MoveObject(tor3[5], 1820.29, -1451.02, 15.59, 1.0, 0.00, 180.00, 180.00);
SetTimer("FWTor3",10000,false);
SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
return 1;
}
}
return 1;
}