Was genau hast du denn vor umzurechnen? Hast du bereits einen Code und eine Vorstellung was am Ende rauskommen soll?
Beiträge von Jeffry
-
-
DestroyDynamicMapIcon(HouseInfo[i][hMap]);
-
Also ich würde es so versuchen, dass du die Schranke minimal in ihrer Position änderst, so dass man es nicht merkt. Dann lässt du sie gaaaaaanz langsam bewegen (ist ja auch nur gaaaaaanz wenig Distanz), dann solltest du die Rotation flüssig hinbekommen.
Musst eben probieren, bis es klappt. -
Ich übersetze:
Diese Funktion kann genutzt werden um Objekte flüssig rotieren zu lassen. Um das zu erreichen muss das Objekt aber bewegt werden [in seiner Position]. Die angegebene Rotation ist die Rotation die das Objekt nach der Bewegung hat. Das Objekt rotiert nicht, wenn keine Bewegung stattfindet. Als Beispiel kann das Riesenrad von Kye angesehen werden, welches sich im Standard Paket von SAMP 0.3d befindet.Das heißt, das Objekt muss seine Position ändern um sich rotieren zu können.
-
Das liegt daran, dass das true bzw false nicht an deine Key Funktion übergeben wird, da mysql_function_query den Wert vom aufgerufenen public nicht zurück gibt.
Du musst also den Teil der das Auto öffnet auch in das public schreiben, mit dem du den Cache prüfst.
-
So ?
Nein, du willst ja alle Spieler speichern, also so:
stock SaveAllPlayers()
{
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if(!IsPlayerConnected(playerid)) continue;
new query[256];
format(query,sizeof(query),"UPDATE user SET level='%i',skin='%i',money='%i',alevel='%i',slevel='%i',fraktion='%i',rang='%i',spawnchange='%i' WHERE id='%i'",
GetPlayerScore(playerid),GetPlayerSkin(playerid),GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][slevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][spawnchange],sInfo[playerid][db_id]);
mysql_function_query(dbhandle,query,false,"","");
}
return 1;
} -
ocmd:saveall(playerid)
{
if(!isAdmin(playerid,1337)) return SendClientMessage(playerid,ROT,"Info: Du bist kein Admin!");
SaveAllPlayers();
SendClientMessage(playerid, GRÜN, "Alle Account Daten wurden erfolgreich gespeichert.");
SendClientMessageToAll(weiß, "(( SERVER: Alle Account Daten wurden gespeichert! ))");
return 1;
}stock SaveAllPlayers()
{
//Speicher-Zeugs hier
return 1;
} -
Genau, da ja nicht jeder Spieler die gleichen Statistiken hat. Deshalb großzügig aufrunden, dann wirst du da keine Probleme haben.
-
new exp = PlayerInfo[i][pRespekt], nxtlevel = PlayerInfo[i][pLevel]+1, expamount = nxtlevel*levelexp;
if(exp >= expamount)
{
SendClientMessage(i, COLOR_WHITE, "* LEVEL UP");
PlayerInfo[i][pLevel]++; //Entweder so, oder += 1.
PlayerInfo[i][pRespekt] = 0;
} -
pInfo
Ich glaube du verstehst deinen Code nicht.Ich tippe mal du hast es als Integer deklariert. Schreib es mal so:
else if(!PlayerInfo[i][pFestPD] && PlayerInfo[i][pFestgeld] != 0)
{
new tmp_brx = floatround(float(PlayerInfo[i][pFestgeld])*0.035);
format(string,sizeof(string),"Die Bank dir $%d überwiesen + einen Zinssatz von ca. 3%% ($%d)", PlayerInfo[i][pFestgeld], tmp_brx);
SendClientMessage(i,-1,string);
PlayerInfo[i][pBank]+=tmp_brx;
PlayerInfo[i][pFestgeld]=0;
PlayerInfo[i][pFestPD]=0;
} -
Kann ich schwer abschätzen.
Die beste Möglichkeit ist Folgende:Du setzt das mainquery auf 10000, dann fügst du vor mysql_query das hier ein:
printf("mainquery = %d", strlen(mainquery));Dann gehst du in den Server und lässt den Spieler speichern. Im Server Log steht dann, wie lang das mainquery war. Wenn dann da zum Beispiel
Zitatmainquery = 4251
steht, dann rundest du auf 5000 auf, und die Sache passt. -
-
Wie kann ich das anderst machen?
Wie kannst du was anders machen? -
else if(!PlayerInfo[i][pFestPD] && PlayerInfo[i][pFestgeld] != 0)
{
new Float:tmp_brx = PlayerInfo[i][pFestgeld]*0.035;
format(string,sizeof(string),"Die Bank dir $%0.2f überwiesen + einen Zinssatz von ca. 3%% ($%0.2f)", PlayerInfo[i][pFestgeld], tmp_brx);
SendClientMessage(i,-1,string),PlayerInfo[i][pBank]+=tmp_brx;
PlayerInfo[i][pFestgeld]=0, PlayerInfo[i][pFestPD]=0;
}Unter der Voraussetzung, dass pFestgeld als Float deklariert wurde.
-
Ich glaube kaum, dass du ein System welches komplett deinen Wünschen entspricht finden wirst. Da musst du wohl dieses System etwas abändern. Ob das jetzt Kilometer oder Meter sind ist ja relativ egal, das kann man mit ein wenig Mathe umrechnen.
new km = meter / 1000;Ein TextDraw kannst du dir mit einem TextDraw-Editor selbst erstellen:
http://forum.sa-mp.com/showthread.php?t=376758
http://forum.sa-mp.com/showthread.php?t=376758Den Text kannst du dann über einen Timer mit TextDrawSetString aktualisieren.
Falls du doch lieber auf jemanden zurückgreifen willst, der dir das ganze System schreibt, gibt es natürlich jederzeit die Möglichkeit eine Anfrage am Marktplatz zu machen: http://forum.sa-mp.de/handelse…-sa-mp-mta-sa-marktplatz/
-
Aber die WHERE Bedinung kommt doch erst am ende, wenn ich fertig bin.
Dann ist gut, ich dachte du willst es so laufen lassen.Ich habe auch nochmal nach einem möglichen Limit gegoogelt und im Englischen Forum gesucht, habe aber auch da nichts dazu gefunden, also tippe ich stark darauf, dass du keine Probleme wegen überschreiten von Limits haben solltest.
-
format(query,sizeof(query),"SELECT * FROM gtari_vehiclekeys WHERE VehicleID = '%i' && userid = '%i'",vehicleid,sInfo[playerid][id]);
zu:
format(query,sizeof(query),"SELECT * FROM gtari_vehiclekeys WHERE VehicleID = '%i' AND userid = '%i'",vehicleid,sInfo[playerid][id]);&& muss AND sein.
-
Du musst eben dein "mainquery" erhöhen, aber sonst kannst du es eigentlich ewig machen, mir wäre kein Limit bekannt.
Beachte aber, dass dein Query oben Fehlerhaft ist, es fehlt am Ende die WHERE Bedingung.
-
Ist zwar nicht dini, aber ini.
http://forum.sa-mp.com/showthread.php?t=420595Sollte trotzdem kein Problem sein.
-
Naja, bei dem langen Code ist das relativ schwer. Ich würde anfangen, zu prüfen, ob die Schleife überhaupt komplett durchläuft, oder ob sie sich irgendwo aufhängt, das heißt du printest am Anfang der Schleife für jeden Spieler-Index "beginn für ID %d" und am Ende "Ende von ID %d". Wenn du dann ingame feststellst, dass jemand den PayDay nicht korrekt bekommen hat, kannst du im Log nachschauen, ob für die ID das Ende erreicht wurde. Wenn nicht, dann sprengst du wohl irgendwo ein Array, dann musst du weiter suchen, Variablen-Werte ausgeben lassen, zwischen Beginn und Ende....und so weiter. Du musst du praktisch an den Fehler hinarbeiten.
Das kann durchaus eine Weile dauern, aber das ist die beste Möglichkeit was zu finden.