/Members > OFFLINE

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • /Members > OFFLINE

    PAWN-Quellcode

    1. ocmd:members(playerid, params[])
    2. {
    3. // if(!IsPlayerAdmin(playerid)) return 0;
    4. new str[128], Cache:members;
    5. if(PlayerInfo[playerid][FracID] == 0) return SCM(playerid,COOLRED,"You are in no Frac");
    6. mysql_format(handle, str, sizeof(str), "SELECT * FROM `user` WHERE FracID = '%d'",PlayerInfo[playerid][FracID]);
    7. members = mysql_query(handle, str, true);
    8. new count = cache_num_rows();
    9. if(count > 0)
    10. {
    11. SendClientMessage(playerid, USAGE, "Members:");
    12. for(new i = 0; i < count; i++)
    13. {
    14. new username[25], Rank[25],showmembs[128];
    15. cache_get_value_name(i, "Name", username);
    16. format(showmembs,sizeof(showmembs),"%s%s %s",str,"Members",((PlayerInfo[i][pLoggedIn] == true)?("{6EF83C}[ONLINE]"):("{ff0000}[OFFLINE]")));
    17. ShowPlayerDialog(playerid, 345, DIALOG_STYLE_LIST, "Members", showmembs, "Choose", "Exit");
    18. }
    19. }
    20. else return SendClientMessage(playerid, RED, "There are currently no Members > Server Error!");
    21. cache_delete(members);
    22. return 1;
    23. }
    Alles anzeigen




    KEINE ahnung wie ich das richtig angehe xD >> pic-upload.de/view-36114114/members.png.html
    Programmieren: 1% Programmieren, 99% Bugs Fixen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von JacLos ()

  • Erstens:
    Es sieht so aus als wäre der Query String zu klein, vergrößer ihn.

    Zweitens:
    Du benutzt MySQL nicht richtig...
    1. Benutz "mysql_query" NUR wenn du genau weißt was du machst! Sonst sorgt das nur für Lags.
    2. Welche MySQL Version verwendest du?
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251

  • MySQL R41-4 also das aktuellste

    Ne Idee wie ich den Code umschreiben muss ? Habe keinen Plan, habe

    sowas in der Art noch nie gemacht

    2.//


    // edit 15:50 > Hab mal den Wert von WelcomeMsg höher zu setzten als MAX_PLAYER_NAME,

    crasht leider immernoch


    PAWN-Quellcode

    1. [15:39:30] [INFO] Callback successfully executed.[15:39:44] [DEBUG] mysql_pquery(1, "INSERT INTO `ServerShops` (´EnterX´, `EnterY`, `EnterZ`, `ExitX`, `ExitY`,`ExitZ`,`SpecialShopName`,`WelcomeMsg`,`interior`,`MapIconID`) VALUES ('1953.741333', '-2104.513427', '13.546875', '372.485900', '-133.244598', '1001.492187','Well stacked Pizza','You entered Well stacke','5','29')", "OnServerShopCreated", "i")[15:39:44] [DEBUG] CCallback::Create(amx=0x4b07678, name='OnServerShopCreated', format='i', params=0x5af7250, param_offset=5)[15:39:44] [DEBUG] CCallback::Create - callback index for 'OnServerShopCreated': 63[15:39:44] [DEBUG] processing specifier 'i' with parameter index 0[15:39:44] [DEBUG] retrieved and pushed value '9'[15:39:44] [INFO] Callback 'OnServerShopCreated' set up for delayed execution.[15:39:44] [DEBUG] created delayed callback with 1 parameter[15:39:44] [DEBUG] CHandle::Execute(this=0x258f2d8, type=2, query=0x25909b8)[15:39:44] [DEBUG] CConnectionPool::Queue(query=0x25909b8, this=0x258b9d0)[15:39:44] [DEBUG] CHandle::Execute - return value: true[15:39:44] [DEBUG] mysql_pquery: return value: '1'[15:39:44] [DEBUG] CConnection::Execute(query=0x25909b8, this=0x5fe4020, connection=0x25b7f68)[15:39:44] [DEBUG] CQuery::Execute(this=0x25909b8, connection=0x25b7f68)[15:39:44] [ERROR] error #1064 while executing query "INSERT INTO `ServerShops` (´EnterX´, `EnterY`, `EnterZ`, `ExitX`, `ExitY`,`ExitZ`,`SpecialShopName`,`WelcomeMsg`,`interior`,`MapIconID`) VALUES ('1953.741333', '-2104.513427', '13.546875', '372.485900', '-133.244598', '1001.492187','Well stacked Pizza','You entered Well stacke','5','29')": 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 '´EnterX´, `EnterY`, `EnterZ`, `ExitX`, `ExitY`,`ExitZ`,`SpecialShopName`,`Welc' at line 1[15:39:44] [DEBUG] CConnection::GetError(this=0x5fe4020, connection=0x25b7f68)[15:39:44] [DEBUG] CCallback::Create(amx=0x4b07678, name='OnQueryError', format='dsssd)[15:39:44] [DEBUG] CCallback::Create - callback index for 'OnQueryError': -10046[15:39:44] [DEBUG] processing specifier 'd'[15:39:44] [DEBUG] retrieved and pushed value '1064'[15:39:44] [DEBUG] processing specifier 's'[15:39:44] [DEBUG] retrieved and pushed value '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 '´EnterX´, `EnterY`, `EnterZ`, `ExitX`, `ExitY`,`ExitZ`,`SpecialShopName`,`Welc' at line 1'[15:39:44] [DEBUG] processing specifier 's'[15:39:44] [DEBUG] retrieved and pushed value 'OnServerShopCreated'[15:39:44] [DEBUG] processing specifier 's'[15:39:44] [DEBUG] retrieved and pushed value 'INSERT INTO `ServerShops` (´EnterX´, `EnterY`, `EnterZ`, `ExitX`, `ExitY`,`ExitZ`,`SpecialShopName`,`WelcomeMsg`,`interior`,`MapIconID`) VALUES ('1953.741333', '-2104.513427', '13.546875', '372.485900', '-133.244598', '1001.492187','Well stacked Pizza','You entered Well stacke','5','29')'[15:39:44] [DEBUG] processing specifier 'd'[15:39:44] [DEBUG] retrieved and pushed value '1'[15:39:44] [INFO] Callback 'OnQueryError' set up for delayed execution.[15:39:44] [DEBUG] created delayed callback with 5 parameters[15:39:44] [DEBUG] CCallback::Execute(amx=0x4b07678, index=-10046, num_params=5)



    Geht auch mit der Vergrößerung nicht, hier mal der Original code


    PAWN-Quellcode

    1. format(query, sizeof(query),"INSERT INTO `ServerShops` (´EnterX´, `EnterY`, `EnterZ`, `ExitX`, `ExitY`,`ExitZ`,`SpecialShopName`,`WelcomeMsg`,`interior`,`MapIconID`) VALUES ('%f', '%f', '%f', '%f', '%f', '%f','%s','%s','%d','%d')",xc, yc, zc,ServerShop[id][ExitX],ServerShop[id][ExitY],ServerShop[id][ExitZ],ServerShop[id][SpecialShopName],ServerShop[id][WelcomeMsg],ServerShop[id][shopint],ServerShop[id][SMapIconID]);mysql_pquery(handle, query, "OnServerShopCreated", "i", id);printf(query);[15:39:44] INSERT INTO `ServerShops` (´EnterX´, `EnterY`, `EnterZ`, `ExitX`, `ExitY`,`ExitZ`,`SpecialShopName`,`WelcomeMsg`,`interior`,`MapIconID`) VALUES ('1953.741333', '-2104.513427', '13.546875', '372.485900', '-133.244598', '1001.492187','Well stacked Pizza','You entered Well stacke','5','29')[15:39:44] [debug] Server crashed due to an unknown error[15:39:45] [debug] Native backtrace:[15:39:45] [debug] #0 004016eb in ?? () from samp-server.exe[15:39:45] [debug] #1 6f6c35e9 in ?? () from plugins\mysql.DLL[15:39:45] [debug] #2 6f6c6688 in ?? () from plugins\mysql.DLL[15:39:45] [debug] #3 6f6ac52e in ?? () from plugins\mysql.DLL[15:39:45] [debug] #4 6f6adc7f in ?? () from plugins\mysql.DLL[15:39:45] [debug] #5 6f6ae3d3 in ?? () from plugins\mysql.DLL[15:39:45] [debug] #6 00469a66 in ?? () from samp-server.exe[15:39:45] [debug] #7 0048d4db in ?? () from samp-server.exe[15:39:45] [debug] #8 0049b4a1 in ?? () from samp-server.exe[15:39:45] [debug] #9 0049b4b1 in ?? () from samp-server.exe[15:39:45] [debug] Registers:
    Programmieren: 1% Programmieren, 99% Bugs Fixen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von JacLos ()

  • Was ist denn bei dem mysql_pquery die 1? Das soll der handle sein...
    Hast du irgendwo oben in deinem Script ein "new MySQL:handle;" oder ähnliches?

    Und zu MAX_PLAYER_NAME erhöht? MAX_PLAYER_NAME sind 24 Zeichen...
    Versuch es mal auf 256 zu erhöhen.

    Also so wie es aussieht, ist alles was du mit MySQL in deinem Script hast falsch.
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251

  • PAWN-Quellcode

    1. ocmd:members(playerid, params[])
    2. {
    3. // if(!IsPlayerAdmin(playerid)) return 0;
    4. new str[128];
    5. if(PlayerInfo[playerid][FracID] == 0) return SCM(playerid,COOLRED,"You are in no Frac");
    6. mysql_format(handle, str, sizeof(str), "SELECT * FROM `user` WHERE FracID = '%d'",PlayerInfo[playerid][FracID]);
    7. mysql_tquery(handle, str, "OnFrakMembersLoad", "d", playerid);
    8. }
    9. forward OnFrakMembersLoad(playerid);
    10. public OnFrakMembersLoad(playerid)
    11. {
    12. new count;
    13. cache_num_rows(count);
    14. if(count > 0)
    15. {
    16. SendClientMessage(playerid, USAGE, "Members:");
    17. for(new i = 0; i < count; i++)
    18. {
    19. new username[25], Rank[25],showmembs[128];
    20. cache_get_value_name(i, "Name", username);
    21. format(showmembs,sizeof(showmembs),"%s%s %s",str,"Members",((PlayerInfo[i][pLoggedIn] == true)?("{6EF83C}[ONLINE]"):("{ff0000}[OFFLINE]")));
    22. ShowPlayerDialog(playerid, 345, DIALOG_STYLE_LIST, "Members", showmembs, "Choose", "Exit");
    23. }
    24. }
    25. else return SendClientMessage(playerid, RED, "There are currently no Members > Server Error!");
    26. return 1;
    27. }
    Alles anzeigen

    Sollte so klappen, ist aber ungetestet.
    Les dich am besten mal in die MySQL R41-4 rein:
    MySQL/R40
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251

  • Quellcode

    1. format(showmembs,sizeof(showmembs),"%s%s %s\n",str,"Members",((PlayerInfo[i][pLoggedIn] == true)?("{6EF83C}[ONLINE]"):("{ff0000}[OFFLINE]")));
    2. ShowPlayerDialog(playerid, 345, DIALOG_STYLE_LIST, "Members", showmembs, "Choose", "Exit");
    Danke schon mal soweit,

    was ist mit dem Dialog? Da wird jetzt nur [ONLINE] angezeigt, stelle ich mir irgendwie

    komplizierter vor als es vermutlich ist.

    format(showmembs,sizeof(showmembs),"%s%s %s\n",str,"Members",((username,PlayerInfo[pLoggedIn] == true)?("{6EF83C}[ONLINE]"):("{ff0000}[OFFLINE]")));
    ShowPlayerDialog(playerid, 345, DIALOG_STYLE_LIST, "Members", showmembs, "Choose", "Exit");
    Programmieren: 1% Programmieren, 99% Bugs Fixen
  • Du kannst das so nicht abfragen ob jemand online ist, da die playerid immer überschrieben wird.

    Stattdessen könntest du eine Funktion zum Beispiel nehmen um alle Spieler auf dem Server nach einem Namen durchzuloopen, und wenn ein Spieler mit dem Namen online ist return true wenn nicht halt return false.
    Und dann kannst du diese Funktion einfach verwenden. (Den Namen hast du bei username ja schon gespeichert.)
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251

  • PAWN-Quellcode

    1. forward OnFrakMembersLoad(playerid);
    2. public OnFrakMembersLoad(playerid)
    3. {
    4. new count, str[128];
    5. cache_get_row_count(count);
    6. if(count > 0)
    7. {
    8. SendClientMessage(playerid, USAGE, "Members:");
    9. for(new i = 0; i < count; i++)
    10. {
    11. new username[25], Rank[25],showmembs[128],number;
    12. cache_get_value_name(i, "Name", username);
    13. cache_get_value_name_int(i, "number", number);
    14. new pid = getAccIDBesitzer(number);
    15. format(showmembs,sizeof(showmembs),"%s %s\n",username,((IsPlayerConnected(pid))?("{6EF83C}[ONLINE]"):("{ff0000}[OFFLINE]")));
    16. ShowPlayerDialog(playerid, 345, DIALOG_STYLE_TABLIST, "Members", showmembs, "Choose", "Exit");
    17. }
    18. }
    19. else return SendClientMessage(playerid, RED, "There are currently no Members > Server Error!");
    20. return 1;
    21. }
    Alles anzeigen



    Okay soweit sogut, jetzt zeigt er mir schon Username + Online Status korrekt an.

    Aber halt nur von einer Person, wie kann ich alle anzeigen lassen?
    Programmieren: 1% Programmieren, 99% Bugs Fixen
  • Pack das ShowPlayerDialog unter die Schleife.
    Das mit dem IsPlayerConnected geht immer noch nicht! Die playerid wird immer überschrieben, wenn sich der nächste einloggt, nachdem du dich eingeloggt hast, erhält er deine playerid.
    Benutz diese Funktion:

    PAWN-Quellcode

    1. IsPlayerConnectedEx(pname[])
    2. {
    3. new pname2[MAX_PLAYER_NAME];
    4. for(new i; i<MAX_PLAYERS; i++)
    5. {
    6. GetPlayerName(i, pname2);
    7. if(!strcmp(name,pname2, true) return true;
    8. }
    9. return false;
    10. }

    Und das format machst du so;

    PAWN-Quellcode

    1. format(showmembs,sizeof(showmembs),"%s%s %s\n",showmembs,username,((IsPlayerConnectedEx(username))?("{6EF83C}[ONLINE]"):("{ff0000}[OFFLINE]")));
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251


  • Vielen Dank ^^ //

    Aber kurze Frage hätte ich noch :D


    Bei OnFrakMembersLoad wird ja einfach alles bis zum letzten match durchgeloopt,

    SetPVarString(playerid,"UserEditName",username);


    Heißt also wenn ich den User den ich anklicke editieren möchte, wird mir immer der letzte angezeigt, > IG getestet unter der schleife und in

    der schleife.

    Die schleife beenden nach dem ersten match wär ja auch dumm,

    Ideen?
    Programmieren: 1% Programmieren, 99% Bugs Fixen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von JacLos ()

  • Du verwendest ja den Dialog Style DIALOG_STYLE_TABLIST, also kannst du mit \t Tabs verwenden.
    Du änderst das format jetzt einfach zu;

    PAWN-Quellcode

    1. format(showmembs,sizeof(showmembs),"%s%s\t%s\n",showmembs,username,((IsPlayerConnectedEx(username))?("{6EF83C}[ONLINE]"):("{ff0000}[OFFLINE]")));

    Und bei OnDialogResponse, fragst du bei dem Dialog einfach den inputtext ab, welcher dann der Spielername ist.
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251