hi habe problem wegs server crash

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
  • hallo zusammen immer wenn ich kicken/bannen willl vereckt der server.....
    //------------------------------------------------------------------------------
    if(strcmp(cmd, "/lkick", true) == 0) {
    if(PlayerInfo[playerid][Level] >= 3) {
    new tmp[256];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) {
    SendClientMessage(playerid, red, "USAGE: /lkick [id] [grund]");
    return 1; }
    new player1;
    player1 = strval(tmp);
    if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID ) {
    SendClientMessage(playerid,red,"ERROR: Player is not connected or is yourself");
    return 1; }
    tmp = strtok(cmdtext, idx);


    GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));


    CMDMessageToAdmins(playerid,"KICK");
    format(string,256,"AdmCmd: %s wurde von %s gekick.[Grund: %s]",playername,adminname,cmdtext[7]); SendClientMessageToAll(red,string);
    SaveToFile("KickLog",string);Kick(player1);
    } else {
    SendClientMessage(playerid,red,"Fehler:Du hast ein zu niedriges LVL"); }
    return 1; }
    //------------------------------------------------------------------------------
    wenn ihr ne idee habt wieso sagt bescheid

  • wenn du jetzt die id eingibst ohne grund, crasht der server?

  • daran wirds zwar net liegen aber


    new tmp[256];


    ändern in


    new tmp[32];


    und


    format(string,256,"...


    ändern in


    format(string,128,"...



    warum?
    die command wird selten länger wie 32 zeichen sein, reicht also dicke und das log wird auch niemals 256 zeichen lang sein ;)


    spart massig ram wenn man es konsequent durch den kompletten GM zieht mit den string-längen.


    sa-reallife.org läuft mit 28-32mb ram bei ~100 spielern durch die ganzen anpassungen der strings, ein standard godfather frisst gerne mal über 50-100mb

  • kann nict compilieren aber versuchs mal damit



    if(strcmp(cmd, "/lkick", true) == 0) {
    if(PlayerInfo[playerid][Level] < 3) { SendClientMessage(playerid,red,"Fehler:Du hast ein zu niedriges LVL"); return 1; }
    new tmp[256];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) { SendClientMessage(playerid, red, "USAGE: /lkick [id] [grund]"); return 1; }
    new player1 = strval(tmp);
    if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID ) { SendClientMessage(playerid,red,"ERROR: Player is not connected or is yourself"); return 1; }
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; }
    result[idx - offset] = EOS;
    if(!strlen(result)) { SendClientMessage(playerid, red, "USAGE: /lkick [id] [grund - fehlt]"); return 1; }


    GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));


    CMDMessageToAdmins(playerid,"KICK");
    format(string,256,"AdmCmd: %s wurde von %s gekick.[Grund: %s]",playername,adminname,result); SendClientMessageToAll(red,string);
    SaveToFile("KickLog",string);
    Kick(player1);

    return 1; }