Der Y Wert ist zu klein, Pickups werden nur bis um die + bzw - 4000 in alle Richtungen angezeigt.
Beiträge von Jeffry
-
-
Genau.
Poste bitte außerdem den Befehl der Liste dazu, ich nehme durch die Fehlermeldung an, dass der genau drüber steht, und wohl der Grund für den Fehler ist.
-
Kannst du bitte den Code zu den Fehlern posten und die Zeilen markieren?
-
Du hast die Funktion ReturnPlayerID noch immer nicht in deinen Code eingefügt (ganz unten im Gamemode). Das sage ich dir nun zum dritten mal.
Die Funktion steht im anderen Thread, suche sie dir dort raus und füge sie in deinen Gamemode ein. -
~d~ Down arrow
~u~ Up arrow
~<~ Left arrow
~>~ Right arrow
~t~ Rectangle -
Na also, da ist die Zuweisung doch!
Versuche es in deinem Online-List Befehl so:
mysql_query("SELECT name, fraktion FROM users WHERE rank = 6;");
mysql_store_result();
new rows = mysql_num_rows();
if(!rows) return SendClientMessage(playerid, 0xFF0000FF, "Error: Etwas ist schief gegangen.");
new str[512], row[64], name[32], frak, fname[32];
while(mysql_fetch_row(row, "|"))
{
sscanf(row, "p<|>sd", name, frak);
switch(frak)
{
case 1:{fname = "LSPD";}
case 2:{fname = "BND";}
case 3:{fname = "Hitman Agency";}
case 4:{fname = "SAA";}
case 5:{fname = "Regierung";}
case 6:{fname = "LSMD";}
case 7:{fname = "OAmt";}
case 8:{fname = "Varrios Los Aztecas";}
case 9:{fname = "SAM AG";}
case 10:{fname = "Grove";}
case 11:{fname = "Ballas";}
case 12:{fname = "Terror";}
case 13:{fname = "LCN";}
}
if(ReturnPlayerID(name) != INVALID_PLAYER_ID) format(str, sizeof(str), "%s{FFFFFF}%d [%s] - {00FF00}Online\n", str, name, fname);
else format(str, sizeof(str), "%s{FFFFFF}%d [%s] - {FF0000}Offline\n", str, name, fname);
}
ShowPlayerDialog(playerid, 4521, DIALOG_STYLE_MSGBOX, "OnlineList", str, "Ok");
return 1;Bedenke, dass du das Query anpassen musst:
mysql_query("SELECT name, fraktion FROM users WHERE rank = 6;");
//users = Tabelle die die Userdaten enthält
//name = Spalte in der der Name steht
//fraktion = Spalte in der die Fraktions ID steht -
Poste doch mal die 200 Zeilen vor
case 0:{return SCM(playerid,ROT,"Du hast keinen Fraktionsrang!");}
Und 50 danach. -
Zum Beispiel:
PlayerTextDrawTextSize(BankEinzahlen[playerid], 240.0 + 100.0, 12.0);
//100.0 = Breite
//12.0 = Höhe
Beide Werte sind geschätzt, die musst du gegebenenfalls anpassen, einfach ausprobieren. -
Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/TextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.
Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24. -
Versuche es so:
if(strcmp(cmd, "/prison", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new playa, time, len = strlen(cmd)+1;
tmp = strtok(cmdtext, idx);
len += strlen(tmp)+1;
playa = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
len += strlen(tmp)+1;
time = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /prison [Spieler ID / Name] [Zeit in Minuten] [Grund]");
return 1;
}
if(playa == playerid)
{
SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nicht dich selber einsperren!");
return 1;
}
if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playa][pAdmin])
{
SendClientMessage(playerid, COLOR_GRAD1, "Du kannst keinen höherrangigen Admin einsperren!");
return 1;
}
if (PlayerInfo[playerid][pAdmin] >= 2)
{
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Du hast %s ins Prison gesteckt. Grund: %s", giveplayer, cmdtext[len]);
SendClientMessage(playerid, 0xFF1E00FF, string);
format(string, sizeof(string), "* Du wurdest von Admin %s ins Prison gesteckt. Grund: %s", sendername, cmdtext[len]);
SendClientMessage(playa, 0xFF1E00FF, string);
format(string, sizeof(string), " %s wurde von %s ins Prison gesteckt. Grund: %s", giveplayer, sendername, cmdtext[len]);
SendClientMessageToAll(0xFF1E00FF, string);
ResetPlayerWeapons(playa);
WantedPoints[playa] = 0;
PlayerInfo[playa][pJailed] = 1;
PlayerInfo[playa][pJailTime] = time*60;
SetPlayerInterior(playa, 0);
SetPlayerPos(playa, 271.1351,1858.3071,8.7578);
format(string, sizeof(string), "Du wurdest für %d Minuten ins Prison gesteckt.", time);
SendClientMessage(playa, COLOR_LIGHTBLUE, string);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Du darfst diesen Befehl nicht benutzen!");
}
}
return 1;
} -
Du hattest dort eine weitere IsPlayerInRangeOfPoint Abfrage drin, daher ging es nicht. Außerdem waren noch ein paar Klammern zu viel vorhanden, die habe ich auch gleich entfernt.
Außerdem war die Abfrage ob JobDuty 0 ist, das habe ich zu nicht 0 geändert, weil du es am Ende auf 0 setzt.
Gegebenenfalls musst du es beim Start auf 1 setzen.Schreibe es so:
if(SpielerInfo[playerid][Job]==10)
{
if(JobDuty[playerid]!=0)
{
for(new i=0; i<=sizeof(kanalrohre); i++)
{
if(IsPlayerInRangeOfPoint(playerid,5,kanalrohre[i][rorx],kanalrohre[i][rory],kanalrohre[i][rorz]))
{
DisablePlayerCheckpoint(playerid);
SetCameraBehindPlayer(playerid);
TogglePlayerControllable(playerid, false);
ApplyAnimation(playerid, "BEACH", "Lay_Bac_Loop", 4.0, 1, 0, 0, 0, 0);
SetTimerEx("UnfreezeRepairPlayer",4500, false, "d", playerid);
SetPlayerCheckpoint(playerid,kanalrohre[i+1][rorx],kanalrohre[i+1][rory],kanalrohre[i+1][rorz],1.0);
SendClientMessage(playerid, COLOR_ROT, "Du hast dir durch dieses Rohr 50€ verdient. Gehe zum Nächsten Checkpoint.");
GibGeld(playerid,50);
SpielerSpeichern(playerid);
return 1;
}
}
if(IsPlayerInRangeOfPoint(playerid, 3.0, 2170.6145,-1944.5775,54.8270))
{
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid, COLOR_GRAD2, "* Du bist nun Fertig mit dem Job. Deine endsumme beträgt (+$500).");
SendClientMessage(playerid, COLOR_GRAD4, "* Um erneut die Rohre zu Repairen, musst du lediglich erneut in den Dienst gehen.");
JobDuty[playerid] = 0;
SetPlayerSkin(playerid, SpielerInfo[playerid][Skin]);
return 1;
}
}
} -
Du kannst es dir hier abschauen: [ SCRIPTING ] [jTuT] Fraktions-Fahrzeug-System mit MySQL R39-2
Die uvid von dir, ist die ID im Tutorial.
-
nop sonst gibt es nichts mit fname
Doch da muss es noch was geben. Sonst wäre der Wert von fname leer.
Über dem mysql_SetString muss noch was mit fname kommen. -
Das hat dann nichts mit dem Pickup zu tun.
Welche Meldung kommt denn, wenn du die Taste drückst? -
Ok, super!
Das #if defined heißt, wenn du FILTERSCRIPT definiert hast, dann wird der Code vom Compiler beachtet. Wenn nicht, dann nicht.
Du hattest es nicht definiert (mit #define), daher hat der Compiler den Code dazwischen nicht kompiliert. -
Zeig bitte den Teil von fb den du bei OnPlayerCommandText eingebaut hast.
-
Das ist soweit korrekt.
Wie betrittst du es? -
bool_fban
Zu
bool:fban
War mein Tippfehler.Den dcmd fb musst du bei OnPlayerCommandText, wie den anderen Befehl, hinzufügen.
-
Nein, wie gesagt.
-
Kommt drauf an wie du es machst. Normalerweise dürfte es da keine Probleme geben.
Poste gegebenenfalls den Code.