Beiträge von aytef

    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?

    Ich Idiot, gerade germerkt, dass ich auch noch was vergessen habe... :D


    Es trat ein neuer Fehler auf, @Mencent:

    Code
    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 'WHERE UID = '0'' at line 1
     CMySQLResult::GetRowDataByName() - invalid row index ('0')
     cache_get_field_content_int - invalid datatype

    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

    Folgende Warnings:


    Code
    warning 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)

    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.. :D
    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.

    Ö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", "", "");
    }

    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=337810

    Spoiler 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..

    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:
    {