Beiträge von Sigi.

    Hallo Brotfische..


    Ich habe ein kleines problem, wenn ich ein Spieler Banne dann bleibt es auch nicht gespeichert,..aber warum?


    Server basiert auf MySQL


    CODE:
    ocmd:ban(playerid,params[])
    {
    new pID,Name[MAX_PLAYER_NAME],gName[MAX_PLAYER_NAME],reason[100],string[128];
    GetPlayerName(playerid,Name, sizeof(Name));
    GetPlayerName(pID,gName, sizeof(gName));
    if(SpielerInfo[playerid][pAdmin] < 2)return SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen.");
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOR_GREY,"FEHLER: /ban [playerid] [Grund]");
    format(string, sizeof string,"AdmCmd: %s wurde von %s gebannt, Grund: %s",gName, Name, reason);
    SendClientMessageToAll(COLOR_RED,string);
    SpielerInfo[pID][pBan] = 1;
    SpielerInfo[pID][pBans] ++;
    SavePlayer(pID);
    Kick(pID);
    return 1;
    }


    Nach dem Ban sieht die Tabele so aus:


    Hallo Community.


    Warum Crasht mein Server bei diesem Command hier?


    ocmd:ban(playerid,params[])
    {
    new pID,Name[MAX_PLAYER_NAME],gName[MAX_PLAYER_NAME],reason[100],string[128];
    GetPlayerName(playerid,Name sizeof(Name));
    GetPlayerName(pID,gName, sizeof(gName));
    if(SpielerInfo[playerid][pAdmin] < 2)return SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen.");
    format(sscanf(params,"ui",pID,reason))return SendClientMessage(playerid,COLOR_GREY,"FEHLER: /ban [playerid] [Grund]");
    format(string, sizeof string,"AdmCmd: %s wurde von %s gebannd, Grund: %s",gName, SenderName, reason);
    SpielerInfo[pID][pBan] = 1;
    SpielerInfo[pID][pBans] += 1;
    Ban(pID);
    }

    MySQL richtig konfiguriert, denn laut Tutorial sollte es funktionieren ?


    Ja sollte es,..funktioniert aber nicht...



    Atzger hier.


    stock mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:sqlfloat;
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat;
    }
    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }

    Ja,...es gibt keine ich habs schonma gepostet der einzige der mir geholfen hat war Mr.Undercover,... geht aber tzrm nicht...




    SetPVarInt(playerid,"Eingeloggt",1)
    LoadPlayer(playerid);
    SpawnPlayer(playerid);



    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    SavePlayer(playerid);
    DeletePVar(playerid,"Eingeloggt");
    return 1;
    }



    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pAdmin]);
    }
    }
    return 1;
    }

    So sieht das jetz bei mir aus aber funktioniert trzdm nicht,...


    if(strcmp(cmdtext,"/geld", true) == 0)
    {
    GivePlayerMoney(playerid, 50000);
    SendClientMessage(playerid,COLOR_WHITE,"Du hast dir Geld gegeben.");
    SavePlayer(playerid);
    return 1;
    }


    DAS GEHT IMMER NOCH NICHT HELFT MIR MAL JEMAND -.-!!!

    Hallo Brotfische.


    Ich habe ein kleines Problem,...der Spieler wird nicht gespeichert,..
    wenn ich mir Ingame z.B 5k mache,..mich wieder auslogge und wieder einlogge, dann bleibt das geld nicht gespeichert, sondern das verschfindet.
    bei Level , Admin , Kills und Tode genau das gleiche,...


    CODE:
    Wenn sich der Spieler eingeloggt hat



    SetPVarInt(playerid,"Eingeloggt",1)
    LoadPlayer(playerid);
    SpawnPlayer(playerid);


    Ganz unten:


    STOCK LOADPLAYER


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    }
    return 1;
    }



    Unter OnPlayerDisconnect.


    public OnPlayerDisconnect(playerid, reason)
    {
    SavePlayer(playerid);
    DeletePVar(playerid,"Eingeloggt");
    return 1;
    }



    STOCK SAVEPLAYER



    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pAdmin]);
    }
    }
    return 1;
    }

    Hallo Brotfische.


    Ich habe eine Frage,..wenn ich enums mache für mein Account also sowas
    pLevel,
    pGeld,
    pAdmin,
    usw


    wird das nicht in dem ordner accounts.sql erstellt, und wird auch nicht in der datenbank geladen...
    weis einer warum das so ist?...mein script läuft auf MySQL.


    Danke im Vorraus








    Code:



    #define SQL_HOST "127.0.0.1"
    #define SQL_USER "root"
    #define SQL_PASS "Passwort"
    #define SQL_DATA "samp_db"


    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    pGeld,
    pKills,
    pTode,
    Float:pHealth,
    pAdmin
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];



    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    }
    return 1;
    }
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pAdmin]);
    }
    }
    return 1;
    }


    SQL datei:


    DROP TABLE IF EXISTS `accounts`;
    CREATE TABLE `accounts` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `Name` varchar(24) NOT NULL,
    `Passwort` varchar(128) NOT NULL,
    `Level` int(11) NOT NULL DEFAULT '1',
    `Geld` int(11) NOT NULL DEFAULT '0',
    `Kills` int(11) NOT NULL DEFAULT '0',
    `Tode` int(11) NOT NULL DEFAULT '0',
    `Health` float NOT NULL DEFAULT '100',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=220 DEFAULT CHARSET=latin1;



    Ich brauche bitte hilfe, ich komme nicht weiter -.-

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/open", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,-833.12, 1435.20, 13.65))
    {
    MoveObject(tor,-833.12, 1435.20, 10.88, 2);
    SendClientMessage(playerid,Weiß,"Das Tor schliesst in 5 Sekunden!");
    SetTimer("close", 5000,0);
    return 1;
    }
    return 1;
    }
    }
    jetz isses ;)

    ja habe ich...


    DROP TABLE IF EXISTS `accounts`;
    CREATE TABLE `accounts` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `Name` varchar(24) NOT NULL,
    `Passwort` varchar(128) NOT NULL,
    `Level` int(11) NOT NULL DEFAULT '1',
    `Geld` int(11) NOT NULL DEFAULT '0',
    `Kills` int(11) NOT NULL DEFAULT '0',
    `Tode` int(11) NOT NULL DEFAULT '0',
    `Health` float NOT NULL DEFAULT '100',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=220 DEFAULT CHARSET=latin1;