Nette MySQL Fehler ;)

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
  • Hallöchen und guten Abend die Brotfische die grade noch online sind.
    Ich habe ein verdammtes Problem mit dem Befehl /prison und /unprison, der wäre folgende: Der Server schmiert ab, wenn ich die Befehle in den Chat eingebe.
    Dies habe ich allerdings nur auf meinem Gameserver von Samp4you,
    wenn ich es ohne Samp4you (SAMP Server.exe) starte, funktionieren die Befehle wieder!
    Von daher kann es nur ein MySQL Fehler sein.
    Es fehlen Datenbankstrukturen und ich habe keine Ahnung, wie das gehen soll die einzufügen.
    Desweiteren funktioniert /ban auch nicht.
    Ohne die Befehle ist der Server wortwörtlich nutzlos, da ich keine Cheater bannen kann und niemanden ins Prison stecken kann, der Ärger macht
    Das Script ist das International Roleplay Script, die Mysql Datenbank ist einfach nur scheiße.
    Hier sind die Befehle:



    if(strcmp("/prison", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] < 2 || PlayerInfo[playerid][pAdmin] == -1)
    {
    SendClientMessage(playerid, COLOR_KEINADMIN, "*** INFO: Dies ist ein Adminbefehl, du bist kein Admin.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /prison [SpielerName/ID] [Zeit(Minuten)] [Grund]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /prison [SpielerName/ID] [Zeit(Minuten)] [Grund]");
    return 1;
    }
    new time = strval(tmp);
    if(time < 1) { SendClientMessage(playerid, COLOR_ERRORTEXT, " Prisonzeit muss mindestens eine Minute betragen !"); return 1; }
    if(IsPlayerConnected(giveplayerid))
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[84];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /prison [SpielerName/ID] [Zeit(Minuten)] [Grund]");
    return 1;
    }
    PlayerInfo[giveplayerid][pJailed] = 2; PlayerInfo[giveplayerid][pLocal] = -1;
    if(PlayerInfo[playerid][pAdmin] == -1){PlayerInfo[giveplayerid][pJailTime] += time * 60;}
    else{PlayerInfo[giveplayerid][pJailTime] = time * 60;}
    SetPlayerInterior(giveplayerid, 1); SetPlayerPos(giveplayerid, 2144.1943,1617.5361,993.6882); SetPlayerFacingAngle(giveplayerid,270); SetPlayerSkin(giveplayerid, 206); SetCameraBehindPlayer(giveplayerid);
    ResetPlayerWeapon(giveplayerid); PlayerTied[giveplayerid] = 0;
    PlayerInfo[giveplayerid][pGun1] = 0; PlayerInfo[giveplayerid][pGun2] = 0; PlayerInfo[giveplayerid][pGun3] = 0; PlayerInfo[giveplayerid][pGun4] = 0;
    PlayerInfo[giveplayerid][pAmmo1] = 0; PlayerInfo[giveplayerid][pAmmo2] = 0; PlayerInfo[giveplayerid][pAmmo3] = 0; PlayerInfo[giveplayerid][pAmmo4] = 0;
    PlayerTied[giveplayerid] = 0; PlayerCuffed[giveplayerid] = 0; PlayerCuffedTime[giveplayerid] = 0;
    GameTextForPlayer(giveplayerid, "~w~Willkommen im ~n~~g~Prison", 5000, 3);
    format(string, sizeof(string), "AdmCmd: %s wurde von %s für %d Minuten in das Prison teleportiert. Grund: %s", giveplayer, sendername, time, result);
    SendAdminMessage(COLOR_LIGHTRED, -1, string);
    SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
    format(string,sizeof(string),"%s hat %s in das Prison getan Grund:%s (%d)",sendername,giveplayer, result,time);
    EnterToLog("prison",string);
    UserAkte(PlayerInfo[giveplayerid][pSQLID], string);
    CopPrison(giveplayerid);
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Dieser Spieler ist offline und kann daher nicht ins Prison gesteckt werden!");
    return 1;
    }
    }
    return 1;
    }
    if(strcmp("/unprison", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] < 3)
    {
    SendClientMessage(playerid, COLOR_KEINADMIN, "*** INFO: Dies ist ein Adminbefehl, du bist kein Admin.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /unprison [SpielerName/ID] [Grund]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[84];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /unprison [SpielerName/ID] [Grund]");
    return 1;
    }
    if(IsPlayerConnected(giveplayerid))
    {
    if(PlayerInfo[giveplayerid][pJailed] != 0)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du hast %s aus dem Prison befreit.", giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTRED, string);
    format(string, sizeof(string), "* Admin %s hat dich aus dem Prison befreit.", sendername);
    SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
    format(string,sizeof(string),"%s, wurde von %s aus dem Prison geholt, die Restzeit von dem Gefangenen war %d Min. Grund: %s",giveplayer, sendername, PlayerInfo[giveplayerid][pJailTime]/60, (result));
    EnterToLog("unprison",string);
    UserAkte(PlayerInfo[giveplayerid][pSQLID], string);
    if(PlayerInfo[playerid][pAdmin] < 10)
    {
    format(string, sizeof(string), "AdmCmd: %s hat %s aus dem Prison geholt, restzeit %d min. Grund: %s", sendername, giveplayer, PlayerInfo[giveplayerid][pJailTime]/60, (result));
    SendAdminMessage(COLOR_YELLOW, 1, string);
    }
    PlayerInfo[giveplayerid][pJailTime] = 0;
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Dieser Spieler ist nicht im Prison !");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Dieser Spieler ist offline !");
    return 1;
    }
    }
    return 1;
    }
    if(strcmp("/ban", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    print("1");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /ban [SpielerName/ID] [Grund]");
    print("2");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(PlayerInfo[playerid][pAdmin] >= 2)
    {
    print("3");
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[84];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /ban [SpielerName/ID] [Grund]");
    return 1;
    }
    if(strfind(result, "'", true) != -1)
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Kein Apostroph(') !");
    return 1;
    }
    print("4");
    if(PlayerInfo[giveplayerid][pSQLID] == 1 || PlayerInfo[giveplayerid][pSQLID] == 2 && PlayerInfo[playerid][pSQLID] != 1)
    {
    format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt. Grund: %s", giveplayer, sendername, (result));
    SendClientMessage(playerid, COLOR_LIGHTRED, string);
    format(string, sizeof(string), "* %s hat versucht dich zu Bannen, er wurde aus Sicherheits Gründen gekickt Grund: %s", sendername, (result));
    SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
    Kick(playerid);
    return 1;
    }
    else
    {
    print("5");
    new year, month,day;
    getdate(year, month, day);
    format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt. Grund: %s", giveplayer, sendername, (result));
    SendAdminMessage(COLOR_LIGHTRED, -1, string);
    SendClientMessage(giveplayerid,COLOR_LIGHTRED, string);
    format(string,sizeof(string),"%s, gebannt von: %s ,Grund: %s.", giveplayer, sendername,(result));
    EnterToLog("ban",string);
    UserAkte(PlayerInfo[giveplayerid][pSQLID], string);
    SendClientMessage(giveplayerid,COLOR_GRAD3, "Du wurdest von einem Admin gebannt, sollte es sich hierbei um ein Missverständnis handeln,");
    SendClientMessage(giveplayerid,COLOR_GRAD3, "erstelle hier von einen Screenshot (F8) und erstelle im Forum einen Entbannantrag.");
    BanSelfmade(giveplayerid, playerid, (result), -1, 0);
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_KEINADMIN, "*** INFO: Dies ist ein Adminbefehl, du bist kein Admin.");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Dieser Spieler ist Offline !");
    }
    }
    return 1;
    }


    Es wäre sehr nett, wenn mir jemand per Teamviewer oder gar direkt im Forum helfen kann.
    Mit freundlichen Grüßen




    Jayden Kero

  • Guten Tag,
    wenn der Server bei SAMP4You abschmiert aber bei dir nicht heißt es das der SAMP4YOU Server zuschlecht ist.
    Ich sehe bei deinen Befehlen nichts wo es irgendwie auf die MySQL Datenbank zugreifen muss.


    Kannst du uns den Stock/Public CopPrison(giveplayerid); zeigen? den auch mal UserAkte
    Wäre sehr nett

  • Ich habe auch nicht gesagt , dass Samp4you schlecht ist, ich habe gesagt dass es nur bei einer MySQL Verbindung abscheißen tut.



    forward CopPrison(playerid);
    public CopPrison(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    new op;
    new stringlast[156];
    new string[156];
    format(string,sizeof(string),"Userakten/%d.log",PlayerInfo[playerid][pSQLID]);
    if(!fexist(string))
    {
    op = 1;
    }
    if(op == 0)
    {
    new File:f = fopen(string, io_read);
    while(fread(f, string))
    {
    format(stringlast,sizeof(stringlast),"%s",string);
    }
    fclose(f);
    }
    new string1[156],string2[256],string3[256],string4[256],string5[156],mstring[700];
    format(string1, sizeof string1, "______________________________________________{0037FF}Admin-Prison{A9C4D4}______________________________________________");
    format(string2, sizeof string2, "Du bist im Admin-Prison. Der Grund dafür ist, dass du von einem Admin bestraft wurdest.");
    format(string3, sizeof string3, "Das Admin-Prison ist wie das normale Gefängnis (Jail). Nur das hier keine Anwälte zur verfügbar sind.");
    format(string4, sizeof string4, "Deine Resthaftzeit kann mit dem Befehl {0037FF}/zeit{A9C4D4} abgerufen werden.");


    format(string5, sizeof string5, "Der Grund warum du im Admin-Prion bist kannst du hier lesen.");
    format(mstring, sizeof mstring, "\n%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s",string1,string2,string3,string4,string5,stringlast);
    ShowPlayerDialog(playerid,CopPrisonMOTD,DIALOG_STYLE_MSGBOX,"{FF6400}[Paradise Roleplay]] Information",mstring,"OK","");
    }
    }


    public UserAkte(FileID, string[])
    {
    new entry[256];
    getdate(Jahr, Monat, Tag);
    gettime(Stunde, Minute, Sekunde);
    if(Minute < 10)
    {
    format(entry, sizeof(entry), "{A9C4D4}[%d.%d.%d,%d:0%d] %s\n", Tag, Monat, Jahr, Stunde, Minute, string);
    }
    else
    {
    format(entry, sizeof(entry), "{A9C4D4}[%d.%d.%d,%d:%d] %s\n", Tag, Monat, Jahr, Stunde, Minute, string);
    }
    new strings[128];
    format(strings, sizeof(strings), "Userakten/%d.log",FileID);
    new File:hFile;
    hFile = fopen(strings, io_append);
    fwrite(hFile, entry);
    fclose(hFile);
    return 1;
    }


    PermanenT

  • new mstring[700];
    strcat(mstring,"______________________________________________{0037FF}Admin-Prison{A9C4D4}______________________________________________");
    strcat(mstring, "Du bist im Admin-Prison. Der Grund dafür ist, dass du von einem Admin bestraft wurdest.");
    strcat(mstring, "Das Admin-Prison ist wie das normale Gefängnis (Jail). Nur das hier keine Anwälte zur verfügbar sind.");
    strcat(mstring,"Deine Resthaftzeit kann mit dem Befehl {0037FF}/zeit{A9C4D4} abgerufen werden.");


    strcat(mstring,"Der Grund warum du im Admin-Prion bist kannst du hier lesen.");
    ShowPlayerDialog(playerid,CopPrisonMOTD,DIALOG_STYLE_MSGBOX,"{FF6400}[Paradise Roleplay]] Information",mstring,"OK","");


    So brauchst du nicht 100000strings
    strcat tut nämlich alle zusammen


    mach mal bei den Befehlen
    print("Wo er grade ist");
    mach das mal überall an deine Befehle und führe sie aus.
    Damit wir wissen was er noch abfragt o. ausführt.
    Das steht dann in den Server.LOgs

  • Dachtest du ehrlich, dass ich das nicht schon gemacht habe?^^
    Es kam nichts raus, es war alles in Ordnung deswegen sage ich ja dass Datenbankstrukturen fehlen
    Doch es kam eine Fehlfunktion,
    [11:18:15] CMySQLHandler::FetchRow() - You cannot call this function now. (Reason: Empty Result)
    [11:18:15] >> mysql_query( Connection handle: 1 )
    Das kommt direkt beim Befehl eingeben, es erscheint noch die Information "Verwende /prison [id] [Grund]" wenn man danach /prison id & Grund eingibt schmiert der Server ab und geht komplett off