Dazu kannst du folgende Funktion nutzen:
stock GetClosestATM(playerid, Float:dist = 10000.0)
{
new Float:tmp, Float:x, Float:y, Float:z, id = -1;
for(new i = 0; i < sizeof(ATMInfo); i++)
{
if(ATMInfo[i][set])
{
tmp = GetPlayerDistanceFromPoint(playerid, ATMInfo[i][aX], ATMInfo[i][aY], ATMInfo[i][aZ]);
if(tmp <= dist)
{
dist = tmp;
id = i;
}
}
}
return id;
}
Beiträge von Jeffry
-
-
Erstelle in deinem /pawno/ Ordner bitte mal eine Datei "pawn.cfg" und schreibe dort "-d3" rein (ohne Anführungszeichen).
Dann öffne die /pawno/pawno.exe und öffne über "Öffnen" deinen Code und kompiliere ihn.Starte dann den Server wieder und reproduziere den Fehler. Poste die dann erscheinende Meldung nochmal, eventuell, wenn du es siehst, die entsprechende Zeile Code dazu (bzw. ein paar Zeilen).
-
Du musst ja die Datenbank ansprechen, sonst können ja die Daten nirgends her kommen.
mysql_pquery(dbhandle, "SELECT * FROM atms;", "LoadATMs", ""); -
Du scheinst bei einem mysql_pquery einen Parameter zu wenig oder zu viel (oder mehrere) angegeben haben, als das zugehörige public hat.
Prüfe mal alle deine mysql_pquerys im Code, ob das public dazu passt. -
Du darfst das public nicht direkt aufrufen, sondern musst es über ein SELECT Query mittels mysql_function_query oder mysql_pquery aufrufen.
-
Kannst du den Code und das Query dazu bitte posten?
-
Wie rufst du das public auf?
-
-
Im Zusammenhang mit dem was du an Code gepostet hast werden die Funktion dort nicht aufgerufen. Dort scheint der Fehler also nicht zu liegen.
Grundsätzlich kommt der Fehler auf, da du versuchst einen Cache auszulesen, wo es keinen gibt. An welcher Stelle das ist, ist aus dem Log nicht erkennbar.
-
Lade dir das crashdetect Plugin herunter und füge es in deinen Server ein. Dann poste was im Server Log steht, wenn du den Befehl eingibst bzw. dich einloggst und der Server dabei abstürzt.
http://forum.sa-mp.com/showthread.php?t=262796 -
Kralle[GetVehicleModel(id)] = 1;
Zu
Kralle[id] = 1; -
Nutze die mysql_static.so anstelle der mysql.so.
-
Das kann man auch direkt in der Query lösen.
Gute Methode, funktioniert super! Ist ein sehr geschickter Lösungsweg. Danke für den Hinweis.

Wenn man mehrere IDs gleichzeitig auslesen will, geht es auch, minimal abgewandelt:
-
-
Beim öffnen hast du als Geschwindigkeit 3000 angegeben. Man gibt hier aber nicht die Dauer an, sondern die Geschwindigkeit. Gebe daher z.B. 0.1 als Geschwindigkeit an.
Beim schließen hast du keine Geschwindigkeit angegeben, daher wird 0 genommen, von den nachfolgenden drei 0.00000's.
-
Eine Frage noch bezüglich des Speed's und kann man auch die Geschwindigkeit höher setzen?
Sprich wenn ein Fahrzeug standartmäßig 50km/h fahren kann könnte man daraus 100 machen?Bedingt, ja.
Ich habe hier mal einen kleinen Filterscript geschrieben, mit dem man das hinbekommt: Fahrzeug schnelligkeit
Das ist aber wie beschrieben nicht perfekt, da es nur als Test diente, ob es überhaupt irgendwie geht. -
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
SpawnPlayer(playerid);
SetPlayerPos(playerid, x, y, z);Gegebenenfalls muss das SetPlayerPos über OnPlayerSpawn gesteuert werden.
-
stock SetVehicleSpeed(vehicleid,mph)
zu:
stock SetVehicleSpeed(vehicleid,Float:mph) -
dcmd_tban(playerid,params[])
{
new pID,pIdName[MAX_PLAYER_NAME],pName[MAX_PLAYER_NAME],banTime,reason[64],string[128];
if(PlayerInfo[playerid][pAdmin] <= 1) { return 1; }
if(sscanf(params,"uds",pID,banTime,reason)) { return SendClientMessage(playerid,COLOR_GRAD1,"Benutzung: /tban [Spieler / ID] [Zeit in Stunden] [Grund]"); }
if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,COLOR_GRAD1,"Falsche ID!"); }
if(banTime < 1) { return SendClientMessage(playerid,COLOR_GRAD1,"Minimale Zeit: 1 Stunde"); }
GetPlayerName(pID,pIdName,sizeof(pIdName));
GetPlayerName(playerid,pName,sizeof(pName));
format(string,sizeof(string),"AdminSystem: %s wurde von %s für %d Stunden gebannt, Grund: %s",pIdName,pName,banTime,reason);
SendClientMessageToAll(0xFF6347AA,string);
printf("AdminSystem(TIMEBAN): Admin: %s(%i) - Timeban Spieler: %s(%i) - Timeban Grund: %s",pName,playerid,pIdName,pID,reason);
pBanner[pID] = pName;
TBan(pID,banTime*60);
return 1;
} -
Wenn du die Zeit weiterhin in Minuten angeben willst, dann nicht. Man kann ja dann z.B. 180 Minuten für 3 Stunden angeben, das geht nach wie vor.