Frage mich gerade wieso du das Fahrzeug in eine neu erstellte Sektorenbezogene Variable lädst und nicht in das Array mit der Enumerator Verbindung.
Kannst du mir folgen?
Frage mich gerade wieso du das Fahrzeug in eine neu erstellte Sektorenbezogene Variable lädst und nicht in das Array mit der Enumerator Verbindung.
Kannst du mir folgen?
ähhhh stehe gerade bissn aufm Schlauch
Warum geht der Code nicht ? ![]()
Weil du den Cache erst in einem Callback auswerten lassen kannst.
Aber noch vorab, du brauchst bei einer zweiseitigen Abfrage, kein return verwenden.
Weil er wird bei dieser Abfrage Methode nicht das andere von beiden auch noch ausführen.
Daher schreibe es mal so:
new query[128];
mysql_format(handle, query, sizeof(query), "SELECT ID FROM Accounts WHERE Name = '%e'", Name),
mysql_pquery(handle, query, "Callback", "d", playerid); //d oder i für einen runden Zahlenwert
forward Callback(playerid); //Kann beliebig umbenannt werden
public Callback(playerid)
{
new rows;
cache_get_row_count(rows);
if(rows == 0)
{
}
else
{
}
}
Ok dachte ich mir ![]()
Brauche aber die Funktion so dass er das Return ![]()
Ok dachte ich mir
auf jeden Fall.
Brauche aber die Funktion so dass er das Return
Was soll es denn für eine Funktion werden?
Ich bezweifle es nämlich, dass du was damit Anfangen kannst, wenn er bei beiden Reihen Abfragen den Zahlenwert 1 zurückgibt.
Nutze doch bitte die PAWN Box für solch Quellcodes, danke!
Ja, also.. ich nehme an dass du die soweit die neuste Version von BlueG nutzt, so wie fast jeder heutzutage.
Von daher, wird das so nicht funktionieren.
Schicke anstatt deinem Funktionsaufruf, einen Query mit einer Aufforderung an die Datenbank, eine Spalte zu markieren unter wie folgtem Namen: "playername". In dem Callback, arbeitest du dann mit dem Cache der dir zur Verfügung steht.
Früher ging das noch .. bei R5 habe ich das mal so angewendet mit mysql_num_rows(); unter der gleichen Funktion.
Sprich, so wie ich es dir Oben geschickt habe.
Geht sowas noch ?
Die Frage ist doch eher, sollte es so gemacht werden?
Und die Antwort ist ganz klar nein.
Das hat seine Gründe, wieso diese Asynchronität eingeführt wurde.
Natürlich muss man jetzt etwas umdenken, weil man es davor gewohnt war synchron zu arbeiten.
Du brauchst den Wert nicht, du kannst einfach den Code, der danach kommt in den Callback packen und ihn da weiter ausführen lassen.
Und dort quasi den Wert verarbeiten lassen.
//Code von Kasakow
new query[41 + MAX_PLAYER_NAME];
mysql_format(handle, query, sizeof(query), "SELECT `ID` FROM `Accounts` WHERE `Name` = '%e'", Name),
mysql_pquery(handle, query, "Callback", "d", playerid);
forward Callback(playerid); //Kann beliebig umbenannt werden
public Callback(playerid)
{
new rows;
cache_get_row_count(rows);
if(rows == 0)
{
//Hier der Code Weiter, wenn nicht
}
else
{
//Hier der Code Weiter wenn doch :D
}
}
Alles anzeigen
Geht sowas noch ?
Ja, es würde noch gehen, aber wie wie schon von den Vorrednern gesagt, ist es nicht zu empfehlen, außer man weiß zu 100% was man macht.
Gehen würde es mit mysql_query.
https://wiki.sa-mp.com/wiki/MySQL/R40#mysql_query
Daher, wenn, dann nur mit Bedacht nutzen.
Wenn in deinem Fall die Funktion nur aus einem (oder mehreren) Befehlen heraus, immer nur für einen Name verwendet wird, dann könnte man das durchgehen lassen, weil es den Aufbau vom Code natürlich deutlich einfacher und übersichtlicher macht, als wenn man bei 20 Befehlen 20 unterschiedliche Callbacks macht, oder alles in eins mit switch packt.
Wichtig ist auf jeden Fall, cache_delete() danach zu nutzen.
Ist das Zurücksetzten von PVar's beim Ausloggen bzw. Connecten eigentlich nötig? Diese werden ja nicht gespeichert.. Habe jedoch schon in einigen Scripts gesehen, dass das so gemacht wurde.
Nein brauchst du nicht, die werden automatisch beim Verlassen gelöscht.
Bekomme folgenden Error: script.pwn(34) : error 029: invalid expression, assumed zero
Hier die Zeile im Script:
mysql_log(LOG_ALL);else print(">> [MYSQL]: Die Verbindung zur Datenbank konnte NICHT erfolreich hergestellt werden. Der Server wird nun heruntergefahren."),
SendRconCommand("exit");
Welches ist denn die Zeile?
Welches ist denn die Zeile?
Die obere erste:
mysql_log(LOG_ALL);else print(">> [MYSQL]: Die Verbindung zur Datenbank konnte NICHT erfolreich hergestellt werden. Der Server wird nun heruntergefahren."),
Ein bisschen Mehr Code außenrum würde nicht schaden, du kannst zudem dem PWN Tag auch eine Startzeilennummer angeben, bspw
[pwn=43]
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
SetupPlayerForClassSelection(playerid)
{
SetPlayerInterior(playerid,14);
SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
SetPlayerFacingAngle(playerid, 270.0);
SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
}
public OnPlayerRequestClass(playerid, classid)
{
SetupPlayerForClassSelection(playerid);
return 1;
}
public OnGameModeInit()
{
SetGameModeText("Bare Script");
ShowPlayerMarkers(1);
ShowNameTags(1);
AllowAdminTeleport(1);
AddPlayerClass(265,1958.3783,1343.1572,15.3746,270.1425,0,0,0,0,-1,-1);
return 1;
}
[/pwn]
Einfach [pwn=43] schreiben
Alles anzeigenEin bisschen Mehr Code außenrum würde nicht schaden, du kannst zudem dem PWN Tag auch eine Startzeilennummer angeben, bspw
[pwn=43]public OnPlayerDeath(playerid, killerid, reason){ return 1;}SetupPlayerForClassSelection(playerid){ SetPlayerInterior(playerid,14); SetPlayerPos(playerid,258.4893,-41.4008,1002.0234); SetPlayerFacingAngle(playerid, 270.0); SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234); SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);}public OnPlayerRequestClass(playerid, classid){ SetupPlayerForClassSelection(playerid); return 1;}public OnGameModeInit(){ SetGameModeText("Bare Script"); ShowPlayerMarkers(1); ShowNameTags(1); AllowAdminTeleport(1); AddPlayerClass(265,1958.3783,1343.1572,15.3746,270.1425,0,0,0,0,-1,-1); return 1;}[/pwn]
Einfach [pwn=43] schreiben
Oh sorry..
[pwn=22]main()
{
}
public OnGameModeInit()
{
SetGameModeText("The new Generation of Roleplay!");
//MySQL Verbindung
Handle=mysql_connect(mysql_host, mysql_user, mysql_data, mysql_pass);
if(mysql_errno() < 1)print(">> [MYSQL]: Die Verbindung zur Datenbank wurde erfolgreich hergestellt.");
mysql_log(LOG_ALL);else print(">> [MYSQL]: Die Verbindung zur Datenbank konnte NICHT erfolreich hergestellt werden. Der Server wird nun heruntergefahren."),
SendRconCommand("exit");
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetSpawnInfo(playerid,0,0,0,0,0,0,0,0,0,0,0,0);
SpawnPlayer(playerid);
return 1;
}
public OnPlayerConnect(playerid)
{
new nachricht[128];
format(nachricht,sizeof(nachricht),"Du bist mit der ID %i verbunden.",playerid);
SendClientMessage(playerid,COLOR_RED,nachricht);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}[/pwn]
Am Ende der Zeile 33 sollte sicherlich ein Semikolon stehen
Am Ende der Zeile 33 sollte sicherlich ein Semikolon stehen
Gleicher Error besteht leider weiterhin.
mysql_log(LOG_ALL);else print(">> [MYSQL]: Die Verbindung zur Datenbank konnte NICHT erfolreich hergestellt werden. Der Server wird nun heruntergefahren."),
Mach mal das else eine Zeile drunter.