IPrototypeI:
In deiner Funktion ist ein Klammerfehler. So wäre es richtig:
CountPlayerInMode(string[],len = sizeof(string)){
new i, count[2];
for(; i != MAX_PLAYERS; ++i){
switch(PlayerInfo[i][pMode]){
case 1: ++count[0];
case 2: ++count[1];
}
}
format(string,len ,"Cops'n Robbers: %d Spieler | Freeroam: %d Spieler",count[0],count[1]);
return 1;
}
Beiträge von Jeffry
-
-
Oder, wenn du auf sscanf verzichten willst, kannst dir mal den Command anschauen:
/m Befehl FehlerDer entspricht dem was du willst, benutzt halt kein sscanf, und gibt dir daher mehr Freiheiten, ist eben etwas komplizierter.
-
themanu616gta:
Das ist das Gleiche, nur andersrum. Letztendlich ist das aber etwas schlechter, da du mehr Speicherplatz verbrauchst (2x256) also mehr als doppelt so viel.
Beide Lösungen gehen aber gut. -
Jo also. So:
enum InfoBox
{
pName[50],
pInhalt[200]
}new Infoboxen[MAX_INFO][InfoBox]; -
Wie ist denn InfoText definiert? Kannst du da mal die Funktion zeigen?
-
SendClientMessage(PLAYER_STATE_DRIVER,WEIS,string2);
Zu
SendClientMessage(j,WEIS,string2); -
1) Kann man "RemoveBuildingForPlayer" auch nur in einer bestimmten Interior-World ID benutzen? Also, sodass das Objekt nur entfernt wird, wenn man in der entsprechenden Interior-World ID ist.
Falls nicht, gibt es trotzdem irgendeinen Trick dann z.B. das entsprechende Objekt zwar doch überall zu removen, aber dann in der Interior-ID zu erstellen?
Nein, aber den Trick kannst du mit dem Streamer Plugin von Incognito anwenden, indem du ein Objekt in ein Interior definierst. (http://forum.sa-mp.com/showthread.php?t=102865)
2) Wie kann ich einen "PlayerPlaySound" beenden? Ich habe ihn an bestimmten Koordinaten erstellt und möchte ihn auf Befehl beenden, allerdings ist der Sound an sich eine Endlosschleife.
PlayerPlaySound mit einer Nummer höher aufrufen, also wenn z.B. 1037 dein Sound ist, dann nimm 1038 um es zu beenden (das geht aber nur bei den endlosen Musik-Teilen (z.B. Bumblebee-Spiel-Musik). -
Ja, außer du entfernst diese Einschränkung.
-
Ich darf an dieser Stelle mal Selbstwerbung betreiben:
http://forum.sa-mp.com/showthread.php?t=252128Vor einiger Zeit habe ich diesen FS/INC veröffentlicht, das sollte genau das sein, was du suchst.
-
-
Der Script sagt doch schon aus, dass du einen RP-Namen verwenden musst.
Also nimm eben Highscore_Test als Name.Und so nebenbei: Es wäre wesentlich sinnvoller, wenn du erst einmal PAWN-Scripten lernen würdest anstatt dir einen Code runterzuladen den du nicht mal verstehst.
-
Das heißt dass die Variable i bereits definiert ist. Ersetze einfach alle i's in meinem Code mit j's dann tut's.
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(ispassenger)
{
//Passagier = Ja
if(GetVehicleModel(vehicleid) == 431)
{
//Bus = Ja
new bool:fahrer = false;
for(new j=0; j<MAX_PLAYERS; j++)
{
if(IsPlayerInAnyVehicle(j))
{
if(GetPlayerState(j) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(j) == vehicleid)
{
//Es ist ein Fahrer im Bus
fahrer = true;
}
}
}
if(!fahrer)
{
//Es ist kein Fahrer im Bus
TogglePlayerControllable(playerid, false);
TogglePlayerControllable(playerid, true);
SendClientMessage(playerid, 0xFF0000FF, "Achtung: Es ist kein Busfahrer vorhanden, du kannst nicht einsteigen.");
}
}
}
return 1;
} -
Die schleife nach "new bool:..." fehlt. Wo haste die hin?
Du musst nur meinen Code kopieren... -
Nur vor der letzten Klammer zu ein return 1;
1 nimmt man eigentlich immer bei erfolgreicher Ausführung.
0 bei nicht erfolgreicher Ausführung bzw. unwahrer Abfrage. -
GetVehicleZAngle(carid,vr);
müsste doch
GetVehicleZAngle(AHC[carid],vr);
sein.carid ist ja nur der Index, und nicht die vehicleid, die steht in AHC[carid].
-
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(ispassenger)
{
//Passagier = Ja
if(GetVehicleModel(vehicleid) == 431)
{
//Bus = Ja
new bool:fahrer = false;
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerInAnyVehicle(i))
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(i) == vehicleid)
{
//Es ist ein Fahrer im Bus
fahrer = true;
}
}
}
if(!fahrer)
{
//Es ist kein Fahrer im Bus
TogglePlayerControllable(playerid, false);
TogglePlayerControllable(playerid, true);
SendClientMessage(playerid, 0xFF0000FF, "Achtung: Es ist kein Busfahrer vorhanden, du kannst nicht einsteigen.");
}
}
}
return 1;
}Ist zwar nicht getestet aber sollte eigentlich funktionieren.
Falls nicht, bitte sagen. -
Das kommt auf dein Admin System an.
Generell sähe das so aus:if(PlayerInfo{playerid][Level] == 5) //Geld geben, da Level 5
else //kein Geld gebenoder:
if(PlayerInfo{playerid][Level] != 5) //Spieler ist NICHT Level 5, kann aber Level 215421 sein, oder -1454 oder 4272, oder 24242574, oder sonstwas. -
http://wiki.sa-mp.com/wiki/IsPlayerAdmin
Sollte klar sein. Falls du das Beispiel nicht verstehst, sag bitte was du daran nicht verstehst. -
Das liegt ganz einfach daran, dass INSERT INTO eine neue Zeile erstellt, daher eine neue ID.
Beispiel:
10 Telefonzellen vorhanden (0..9).DELETE 5
INSERT INTO
=> Neue ID in der Datenbank: 10.
=> 5 existiert nicht mehr.Was kannst du machen?
Mach eine neue Spalte, die "deleted" heißt, in deiner Datenbank. Anstatt die Telefonzelle zu DELETE'n setzt du einfach "deleted" zu 1, und die anderen Werte leer/null.
Anstatt INSERT INTO beim Erstellen der Telefonzelle anhand der GetPVar nimmst du UPDATE und setzt die Werte, sowie "deleted" wieder zu 0.Verstanden?
-
public OnPlayerCommandText(playerid, cmdtext[])// das sind Befehle
{
if (strcmp("/help", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid,DIALOG_HELP, DIALOG_STYLE_LIST,"Befehle:","/help\n/cheats\n/tele","Aktzeptieren","Abbrechen");
return 1; //Return 1 gehört in die Klammer
}
if (strcmp("/cheat", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid,DIALOG_CHEAT, DIALOG_STYLE_LIST,"Cheats:","M4\nHeal","Aktzeptieren","Abbrechen");
return 1; //Return 1 gehört in die Klammer
}
if (strcmp("/teleport", cmdtext, true, 10) == 0)
{
SetPlayerPos(playerid,1542.5127,-1676.4347,13.5546); //Facing angle: siehe Zeile unten
SetPlayerFacingAngle(playerid, 73.3714);
return 1; //Return 1 gehört in die Klammer
}
return 0; //Return 0 GANZ am Ende von OnPlayerCommandText
}Erklärungen im Code.