Name wird nicht ausglesen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Abend,
    ich habe ein "Freundes System" Geschrieben, jetzt ist aber das Problem, ich bekomme es nicht hin, das meine Freunde die in der Datenbank stehen
    in dem Dialog angezeigt wird. Der Dialog kommt, und schaut dann so aus. " - Online" obwohl dort ja zB "Y3tti - Online" stehen sollte.



    ocmd:friends(playerid, params[])
    {
    new query[256], name[128], string[512], string2[512], rows;
    mysql_format(Handle, query, sizeof(query), "SELECT * FROM `freundesliste` WHERE `username` = '%e'", sInfo[playerid][sName]);
    mysql_pquery(Handle, query);

    //cache_get_field_count(rows);
    //if(rows != 0)
    //{
    FriendInfo[playerid][TotalFriends] ++;
    cache_get_value_name(0, "friendname", FriendInfo[playerid][FriendName]);
    printf("fr_name: %s", name);
    if(IsFriendOnline(name))
    {
    format(string, sizeof(string), ""#FARBE_WEISS"%s - "#FARBE_GRUEN"Online\n", FriendInfo[playerid][FriendName]);
    strcat(string2, string);
    }
    else
    {
    format(string, sizeof(string), ""#FARBE_WEISS"%s - "#FARBE_ROT"Offline\n", FriendInfo[playerid][FriendName]);
    strcat(string2, string);
    }
    ShowPlayerDialog(playerid, DIALOG_FRIENDS, DIALOG_STYLE_MSGBOX, "Deine Freunde", string, "Schliessen", "");
    //}
    return 1;
    }
    }


    Habe das Cache mal ausgeklammert, wenn ich es nicht ausklammer dann kommt der Dialog auch gar nicht erst.


    Mit freundlichen Grüßen,

  • @Tommyx3
    Habe ich so getan, aber es auch printen lassen, der Name wird leider immer noch nicht aus der Tabelle ausgelesen.


    Mit freundlichen Grüßen,


    //e
    pquery wird aber richtig ausgeführt, im Print zeigt mir auch die Daten an die geladen wurden, nur im Dialog wird der Name nicht gezeigt.


    @Jeffry, @Kaliber einer von euch eine Idee?


    Einmal editiert, zuletzt von Kisa ()

  • Beitrag von EinfachMax ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Gerne, hier: query: SELECT * FROM `freundesliste` WHERE `username` = 'Y3ttiSpielt'


    Er ließt halt den Eintrag in der Tabelle nicht aus.


    //e Die MySQL Log spuckt mir aber auch etwas aus: cache_get_value_name: no active cache


    MfG.


    Einmal editiert, zuletzt von Kisa ()

  • @m4a_X Habe getan, hab es ja ausgeklammert, wenn ich die Funktion nutze, dann kommt der Dialog gar nicht erst auf.
    Weil die Log Meckert das der cache wohl nicht Aktiv sein soll,weiß nicht wie ich das "beheben" soll.


    MfG.

  • @Kaliber Danke, das läuft nun so wie es soll.
    Habe aber nun ein anderes Problem. Mein Befehl um ein Freund hinzufügen spinnt nun total rum.



    ocmd:addfriend(playerid, params[])
    {
    new pID, query[256], string[144];
    if(sscanf(params, "u", pID))return SendClientMessage(playerid, -1, "/addfriend NAME");
    mysql_format(Handle, query, sizeof(query), "INSERT INTO `freundesliste` (`username`, `friendname`) VALUES ('%e', '%e')", sInfo[playerid][sName], sInfo[pID][sName]);
    mysql_pquery(Handle, query);
    format(string, sizeof(string), "Du hast %s zu deinem Freund gemacht!", sInfo[pID][sName]);
    SendClientMessage(playerid, -1, string);
    return 1;
    }


    Aber meine Konsole rastet nun aus und es gibt auch kein Eintrag mehr in der Datenbank.



    [02:16:46] [debug] Run time error 4: "Array index out of bounds"
    [02:16:46] [debug] Attempted to read/write array element at index 65535 in array of size 1000
    [02:16:46] [debug] AMX backtrace:
    [02:16:46] [debug] #0 00009618 in public ocmd_addfriend (0, 265588) from Selfmade.amx
    [02:16:46] [debug] #1 native CallLocalFunction () from samp-server.exe
    [02:16:46] [debug] #2 00006200 in public OnPlayerCommandText (0, 265528) from Selfmade.amx


    Kannst mir da auch ein Tipp geben woran es liegen könnte/würde ?


    Mit freundlichen Grüßen,

  • Du musst checken:


    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Ein Spieler mit diesem Namen ist nicht online!");

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • ...dann musst du erstmal checken, ob der Spielername in der Datenbank existiert...


    Und dann den Namen hinzuzufügen...und nicht pID verwenden..da ein Spieler der Offline ist...ja keine spielerid hat ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Habe mal zum Testen den Befehl gemacht


    ocmd:addfriend(playerid, params[]){ new name[24], query[256], string[144]; if(sscanf(params, "s[24]", name))return SendClientMessage(playerid, -1, "/addfriend NAME"); mysql_format(Handle, query, sizeof(query), "INSERT INTO `freundesliste` (`username`, `friendname`) VALUES ('%e', '%e')", sInfo[playerid][sName], name); mysql_pquery(Handle, query); format(string, sizeof(string), "Du hast %s zu deinem Freund gemacht!", name); SendClientMessage(playerid, -1, string); return 1;}


    Jetzt kommt mir die MySQL Log und sagt mir: [02:23:29] [plugins/mysql] À/Z


    Mit freundlichen Grüßen,


    //e Problem gelöst, lag an meine Datenbank


    Einmal editiert, zuletzt von Kisa ()