Okay, der Fehler tretet bis jetzt nicht mehr auf. Eins würde ich aber noch fragen:
"Ansonsten solltest du die Länge des Debug Ausgabe im MySQL Plugin erhöhen [...]" Wie soll das gehen, wenn ich fragen darf?
Beiträge von aytef
-
-
Ich Idiot, gerade germerkt, dass ich auch noch was vergessen habe...
SQL
Alles anzeigenpublic LoadGarages() { //garageCount = 1; new rows, fields; cache_get_data(rows, fields); for(new i = 0; i <= rows; i++) { cache_get_field_content(i,"Owner",gInfo[i][Owner],MySqlConnection,24); gInfo[i][Owned] = cache_get_field_content_int(i, "Owned", MySqlConnection); gInfo[i][Locked] = cache_get_field_content_int(i, "Locked", MySqlConnection); gInfo[i][Price] = cache_get_field_content_int(i, "Price", MySqlConnection); gInfo[i][PosX] = cache_get_field_content_int(i, "PosX", MySqlConnection); gInfo[i][PosY] = cache_get_field_content_int(i, "PosY", MySqlConnection); gInfo[i][PosZ] = cache_get_field_content_int(i, "PosZ", MySqlConnection); gInfo[i][Interior] = cache_get_field_content_int(i, "Interior", MySqlConnection); gInfo[i][UID] = cache_get_field_content_int(i, "UID", MySqlConnection); UpdateGarageInfo(i); garageCount++; } printf("SERVER » Garagen geladen %d/%i",garageCount,MAX_GARAGES); return 1; }
-
Es sieht ja halt nach der "#SQL_TAG"_garages Query aus..
Die Tabelle ist ja leer.. -
Es trat ein neuer Fehler auf, @Mencent:
CodeCMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE UID = '0'' at line 1 CMySQLResult::GetRowDataByName() - invalid row index ('0') cache_get_field_content_int - invalid datatype
-
Werde sobald ich zuhause bin testen.
E: LeijaT: Fehler besteht weiterhin. -
Hey, ich habe in meinen MySQL Logs folgendes gefunden und wollte wissen, was das Problem ist..:
SQL[ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('0') [ERROR] cache_get_field_content_int - invalid datatype oder [14:50:08] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Owned = 0,Locked = 0,Price = 0,PosX = 0.000000,PosY = 0.000000,PosZ = 0.000000,I' at line 1
Hier schon mal die UPDATE server_properties_furnitures
SQL
Alles anzeigenfor(new i=0; i < MAX_GARAGES; i++){ format(query, sizeof(query), "UPDATE "#SQL_TAG"_garages SET \ Owner = %s,\ Owned = %d,\ Locked = %d,\ Price = %d,\ PosX = %f,\ PosY = %f,\ PosZ = %f,\ Interior = %d,\ UID = %d,\ WHERE UID = '%d'", gInfo[i][Owner], gInfo[i][Owned], gInfo[i][Locked], gInfo[i][Price], gInfo[i][PosX], gInfo[i][PosY], gInfo[i][PosZ], gInfo[i][Interior], gInfo[i][UID], gInfo[i][UID] );} mysql_function_query(MySqlConnection,query,false,"","");
-
Folgende Warnings:
Codewarning 219: local variable "modelid" shadows a variable at a preceding level warning 219: local variable "modelid" shadows a variable at a preceding level
Zeilen
public OnPlayerEditAttachedObject(playerid, response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ)
public OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z) -
Jeffry.
Okay, gerade das entdeckt.. Ich gucke mal im Save und Load nochmal nach.
Fehler behoben: Hatte ein Flüchtigkeitsfehler im Save drinne.. -
Okay, danke. Merke ich mir.
E: Jeffry: Es funktioniert nicht, der Name wird nicht angezeigt.. -
Müsste ich dann das dann überall machen wo z.b. gInfo[i][----] = vor dem cache_get_field_content_* das gInfo[i][----] = entfernen?
-
Schon wieder n' kleines Problem.
Der Name im Label wird nicht angezeigt..
3DLabel
-
format(ltext,128,"Garage von "#SERVERFARBE"%s "#HTML_WHITE"\nStatus: %s",SpielerName(gInfo[gid][Owner]),GetLockedStatus(gInfo[gid][Locked]));
garageLabel[gid] = CreateDynamic3DTextLabel(ltext, WEISS, gInfo[gid][PosX],gInfo[gid][PosY],gInfo[gid][PosZ]+0.1,DD);SpielerName
-
stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}Wo Owner steht:
-
enum garageInfo{
Owner[24],
...
}Und wie der Name geladen wird:
-
for(new i = 0; i <= rows; i++)
{
gInfo[i][Owner] = cache_get_field_content(i,"Owner",gInfo[i][Owner],MySqlConnection);
...
} -
Kleenes Problem.. wieder..
Ich wüsste jetzt nicht, was das Problem wäre.. D:
Der Fehler:
C:\Users\Atef Aloui\Desktop\Westside Stories\Serverskript\gamemodes\ws_selfmade.pwn(5187) : error 035: argument type mismatch (argument 3)Die Zeile:
gInfo[i][Owner] = cache_get_field_content(i, "Owner",MySqlConnection);//Owner ist eine Spalte, wo der Name gespeichert bzw. geladen wird. Ich sah, dass "cache_get_field_content_int" dort stand. Aber es ist ja kein Integer sondern ein Name. Also Textausgabe.
-
Sorry, wenn ich das hier einfüge, aber was ist daran falsch? Er läd den Namen nicht..
gInfo[i][Owner] = cache_get_field_content(i, "Owner",gInfo[i][Owner],MySqlConnection); -
Öh, kleines Problem.
Ich kriege einen Print etwa hundert mal ausgegeben, obwohl ich den eig. nur einmal brauche..
public LoadGarages()
{
garageCount = 0;
new rows, fields;
cache_get_data(rows, fields);
for(new i = 0; i <= rows; i++)
{
gInfo[i][Owner] = cache_get_field_content(i, "Owner",gInfo[i][Owner],MySqlConnection);
gInfo[i][Owned] = cache_get_field_content_int(i, "Owned", MySqlConnection);
---
}
printf("SERVER » Garagen geladen %d/%i",garageCount-1,MAX_GARAGES);
return 1;
}Wo ich denke, was das Problem verursacht:
for(new i = 0; i<MAX_GARAGES; i++){
mysql_function_query(MySqlConnection, "SELECT * FROM `"#SQL_TAG"_garages` ORDER BY UID ASC", true, "LoadGarages", "", "");
} -
Suche eine ObjektID für ein Autoreifen, was man evtl. als Pickup benutzen könnte.
-
Spoiler anzeigen Hey, ich habe schon vorher gefragt, wie das gehen sollte, dass ich eine "Funktion" die mit MySQL R5 geschrieben worden ist, auf R39 konvertiere.
Habe dazu auch ein Thread bekommen, wie das gehen sollte, aber ich kriege es dennoch nicht hin.
Das Problem bei mir ist, dass in dem Stock kein playerid oder ähnl. steht.
Und weiß dann auch nicht, wie ich das dann richtig zum laufen kriege..Spoiler anzeigen Hier ist schon mal der Code der R5 Funktion
stock Load_Garages()
{
garageCount = 1; //Debug-Garagen
new sql[128] = "SELECT * FROM `garages`";
new i;
mysql_query(sql);
mysql_store_result();
while(mysql_fetch_row(sql))
{
sscanf(sql, "e<p<|>s[24]dddfffdd>", gInfo[i]);
//printf("DEBUG: %s %d %d %d %f %f %f %d %d",gInfo[i][Owner],gInfo[i][Owned],gInfo[i][Locked],gInfo[i][Price],gInfo[i][PosX],gInfo[i][PosY],gInfo[i][PosZ],gInfo[i][Interior],gInfo[i][UID]);
UpdateGarageInfo(i);
garageCount++;
i++;
}
mysql_free_result();
return 1;
}
Spoiler anzeigen Und das Tutorial, was ich nachgehen sollte:
http://forum.sa-mp.com/showthread.php?t=337810Spoiler anzeigen Es wäre echt nett, wenn mir jemand dabei helfen könnte.
Hat sich geklärt! Habe die Informationen aus folgendem Thread entnommen: System umschreiben (MySQL R39-2)
Ich bedanke mich nochmal herzlich bei Jeffry: -
Hey, ich wollte etwas was mit MySQL R5 ist auf R39 konventieren.
Der R5 Code sieht so aus:
stock Load_Garages()
{
garageCount = 1; //Debug-Garagen
new sql[128] = "SELECT * FROM `garages`";
new i;
mysql_query(sql);
mysql_store_result();
while(mysql_fetch_row(sql))
{
sscanf(sql, "e<p<|>s[24]dddfffdd>", gInfo[i]);
//printf("DEBUG: %s %d %d %d %f %f %f %d %d",gInfo[i][Owner],gInfo[i][Owned],gInfo[i][Locked],gInfo[i][Price],gInfo[i][PosX],gInfo[i][PosY],gInfo[i][PosZ],gInfo[i][Interior],gInfo[i][UID]);
UpdateGarageInfo(i);
garageCount++;
i++;
}
mysql_free_result();
return 1;
}Leider habe ich damit keinen blassen Schimmer wie ich den Code auf R39 umwandle.. Bei anderen "Codeschnipsel" ging es wunderbar, aber da wüsste ich es garnicht..
Es wäre nett, wenn einer mir das erklären würde, wie ich das jetzt machen könnte.. -
kannst du mir das mal bitte genau zeigen.. Verstehe das gerade nicht.. :l
-
Neues Problem:
Wenn ich zum ersten mal den Befehl '/friends' eingebe, sehe ich ganz normal die User, die ich als Freunde eingetragen habe. Und nur einmal, wie das so sollte.
Gebe ich den Befehl aber zum zweiten mal ein, sehe ich die doppelt aufgelistet.erste Eingabe:
Name: User1 (online)
Name: User2 (offline)zweite Eingabe:
Name: User1 (online)
Name: User2 (offline)
Name: User1 (online)
Name: User2 (offline)Und immer so weiter. Das ist echt ein merkwürdiges Problem..
Aber hier der Code:
Befehl /friends
COMMAND:friends(playerid, params[])
{
new query[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_friends` WHERE `UserDBID` = %i", Spieler[playerid][pDBID]);
mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriends", "ii", REQUEST_FRIEND_THREAD, playerid);
return 1;
}Die Funktion 'OnPlayerRequestFriends
Spoiler anzeigen
public OnPlayerRequestFriends(thread, playerid, Friend_ID)
{
switch(thread)
{
case THREAD_NO_RESULT:
{
return 1;
}
case ADD_FRIEND_THREAD:
{
new rows, fields;
cache_get_data(rows, fields, MySqlConnection);
if(rows)
{
new
query[128],
szResult[64],
szFriendName[64],
FriendDBID;
for(new row; row < rows; row++) {
cache_get_field_content(row, "Name", szResult, MySqlConnection, sizeof(szResult)); szFriendName = szResult;
cache_get_field_content(row, "id", szResult, MySqlConnection, sizeof(szResult)); FriendDBID = strval(szResult);
SetPVarInt(playerid, "New_Friend_DBID", FriendDBID);
SetPVarString(playerid, "New_Friend_Name", szFriendName);
mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_friends` WHERE `UserDBID` = %i AND `FriendDBID` = %i", Spieler[playerid][pDBID], FriendDBID);
mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriends", "ii", FINAL_FRIEND_THREAD, playerid);
return 1;
}
}
else {
SendClientMessage(playerid, WEISS, "Der Name existiert nicht.");
}
return 1;
}
case FINAL_FRIEND_THREAD:
{
new rows,
fields;Spoiler anzeigen cache_get_data(rows, fields, MySqlConnection);Spoiler anzeigen if(!rows) {
new query[128],
FriendName[MAX_PLAYER_NAME+1];
mysql_format(MySqlConnection, query, sizeof(query), "INSERT INTO `"#SQL_TAG"_account_friends` (`UserDBID`, `FriendDBID`) VALUES (%i, %i)", Spieler[playerid][pDBID], GetPVarInt(playerid, "New_Friend_DBID"));
mysql_function_query(MySqlConnection, query, false, "OnPlayerRequestFriends", "i", THREAD_NO_RESULT);
GetPVarString(playerid, "New_Friend_Name", FriendName, sizeof FriendName);
format(query, sizeof query, "Du hast %s zum Freund ernannt.", FriendName);
SendClientMessage(playerid, WEISS, query);
DeletePVar(playerid, "New_Friend_Name");
DeletePVar(playerid, "New_Friend_DBID");
return 1;
}
else {
SendClientMessage(playerid, WEISS, "Du hast bereits einen Freund mit diesem Namen.");
}
return 1;
}
case REQUEST_FRIEND_THREAD:
{
new rows,
fields;Spoiler anzeigen cache_get_data(rows, fields, MySqlConnection);Spoiler anzeigen if(rows) {
new szResult[64];Spoiler anzeigen for(new row; row < rows; row++) {
cache_get_field_content(row, "FriendDBID", szResult, MySqlConnection, sizeof(szResult));
new query[128];
mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_main` WHERE `id` = %i", strval(szResult));
mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriendNames", "ii", playerid, strval(szResult));
}
}
return 1;
}
}
return 1;
}Die Funktion 'OnPlayerRequestFriendNames'
Spoiler anzeigen
public OnPlayerRequestFriendNames(playerid, Friend_DBID, thread)
{
switch(thread)
{
case 0:
{
new rows, fields;
cache_get_data(rows, fields, MySqlConnection);
if(rows) {
new
szPlayerName[MAX_PLAYER_NAME],
szTitle[64];
SetPVarInt(playerid, "Friend_DBID", Friend_DBID);
for(new row; row < rows; row++)
{
cache_get_field_content(row, "Name", szPlayerName, MySqlConnection, sizeof(szPlayerName));
foreach(Player, i) {
if(Spieler[i][pDBID] == Friend_DBID){
format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {8BA870}(online)", szFriendList, szPlayerName);
}
else {
format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {FF0000}(offline)", szFriendList, szPlayerName);
}
}
}
format(szTitle, sizeof szTitle, "%s's Freundesliste", SpielerName(playerid));
ShowPlayerDialog(playerid, DIALOG_FRIENDLIST, DIALOG_STYLE_LIST, szTitle, szFriendList, "Select", "Cancel");
}
}
case 1:
{Spoiler anzeigen }
}
}
-
Perfekt, vielen dank!