Beiträge von PizzaHaus

    Guten Tag meine Accounts Speichern nicht (MySQL)



    public OnUserCheck(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,mdhandle);
    if(num_rows==0)
    {
    //Registrierung
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Montana Deathmatch Registrierung","Herzlich Wilkommen auf Montana Deathmatch\nDein Account wurde in unserem Datenbank nicht gefunden!\nBitte gib dein Passwort niemals weiter auch nicht an die Supporter!\n\nDu kannst dich nun Registieren","OK"," ");
    }
    else
    {
    //Login
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Montana Deatmatch Login","Herzlich Wilkommen zurück auf Montana Deatmatch!\nDein Account wurde in unserem Datenbank gefunden!\nBitte gib dein Passwort niemals weiter auch nicht an die Supporter!\nDu kannst dich nun Einloggen","OK"," ");
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    ChatBoxClear(playerid,40);
    SendClientMessage(playerid, GELB, " Verbindung zum Server wird hergestellt. ");
    SendClientMessage(playerid, GELB, " Einen Moment Bitte du wirst sofort mit dem Server verbunden. ");
    //Login/Register
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT id FROM user WHERE username='%s'",name);
    mysql_function_query(mdhandle,query,true,"OnUserCheck","i",playerid);
    return 1;
    }


    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>3)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,mdhandle);
    format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s',MD5('%s')) ",name,passwort);
    }
    else
    {
    //Passwort nicht lang genug
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Montana Deathmatch Registrierung","Das Passwort war nicht lang genug\n\nHerzlich Wilkommen auf Montana Deathmatch\nDein Account wurde in unserem Datenbank nicht gefunden!\n Bitte gib dein Passwort niemals weiter auch nicht an die Supporter!\n\nDu kannst dich nun Registieren","OK"," ");
    }
    }
    else
    {
    Kick(playerid);
    }
    return 1;
    }

    Du formatierst deinen String, erstellst eine For-Schleife mit der Bedingungen des Adminlevels und sendest sie anschließend an den Inhalt der For-Schleife.

    ocmd:spec(playerid,params[])
    {
    if(sInfo[playerid][alevel]==1)
    {
    new string[128];
    format(string,sizeof(string),"Ein Admin TVT nun: %s",GetName(playerid));
    SendClientMessage(playerid, BLAU, string);
    }
    if(GetPVarInt(playerid,"Beobachten") == 0)
    {
    new pID;
    new string[128];
    if(sInfo[playerid][alevel] < 1)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,GRAU,"Benutzung: /spec [PlayerID]");
    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid,pID);
    format(string,sizeof(string),"Du beobachtest %s. Um das Beobachten abzubrechen, tippe (/specaus)!",GetName(pID));
    SendClientMessage(playerid,ORANGE,string);
    SetPVarInt(playerid,"Beobachten",0);
    }
    else if(GetPVarInt(playerid,"Beobachten") == 1)
    {
    SendClientMessage(playerid,GRAU,"Du beobachtest bereits einen Spieler, tippe (/specaus) um das Beobachten zu beenden.");
    }
    return 1;
    }



    so?

    Guten Abend,
    ich hatte eine Frage undzwar: Wie mache ich wenn man z.B /spec [ID] eingibt an ALLE Admins senden sollte : %s tvt nun %s also sozusagen eine nachricht an admins schicken oder /makeadmin ...


    %s wurde zum admin bennant von %s

    Der Lösungsvorschlag ist nicht korrekt. Mache es so wie ich es dir geschrieben habe.
    Achte aber darauf, dass du von dem Code aus startest, den du anfangs gepostet hast, also mache diese Änderung zuerst rückgängig.


    ...
    Fehler in 2 Sekunden gesehen.

    Code
    sInfo[playerid][pBan] = 1;

    zu

    Code
    sInfo[pID][pBan] = 1;

    Sonst settet der Admin sich selbst die 1 in der Datenbank lel.

    Habe ich Jeffrey


    Probiere ich gleich aus

    Wird immer noch nicht auf 1 gesetet

    Guten Tag,
    Ich habe einen Problem undzwar wenn ich /ban [ID] [Grund] eingebe wird er vom Server gebannt, aber er kann ganznormal wieder Connecten und auff der Datenbank wird es bei pBan nicht auf 1 gesetzt!


    stock SpielerLaden(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Accounts/%s.ini",Sname);
    if(dini_Exists(Spieler))
    {
    sInfo[playerid][Adminlevel] = dini_Int(Spieler,"Adminlevel");
    GivePlayerMoney(playerid,dini_Int(Spieler,"pGeld"));
    dini_IntSet(Spieler,"pBan",GetPVarInt(playerid,"pBan"));
    }
    if(GetPVarInt(playerid,"pBan")==1)
    {
    SendClientMessage(playerid,0xEB0000FF,"Du bist auf diesem Server gebannt!");
    }
    return 1;
    }


    ocmd:ban(playerid, params[])
    {
    if(!isAdmin(playerid,4))return SendClientMessage(playerid,GRAU,"Dir ist es nicht erlaubt, diesen Befehl zu benutzen!");
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GRAU,"Verwendung: /ban [PlayerID] [Grund]");
    format(string,sizeof(string),"SERVER: %s wurde von %s gebannt. Grund: %s",GetName(pID),GetName(playerid),reason);
    SendClientMessageToAll(ROT,string);
    sInfo[playerid][pBan] = 1;
    Kick(pID);
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Accounts/%s.ini",Sname);
    if(dini_Exists(Spieler))
    {
    dini_IntSet(Spieler,"Adminlevel",sInfo[playerid][Adminlevel]);
    dini_IntSet(Spieler,"pGeld",GetPlayerMoney(playerid));
    dini_IntSet(Spieler,"pBan",GetPVarInt(playerid,"pBan"));
    }
    return 1;
    }

    Dann setzt du das Interior nicht mehr, bzw. nicht mehr zurück zu 0, je nach dem wo du spawnen willst.
    Poste gegebenenfalls mal den Teil von OnPlayerSpawn.

    public OnPlayerSpawn(playerid)
    {
    if(PlayerInArena[playerid] == 1) // Deagle
    {
    new Random = random(sizeof(DeagleSpawns));
    SetPlayerPos(playerid, DeagleSpawns[Random][0], DeagleSpawns[Random][1], DeagleSpawns[Random][2]);
    SetPlayerFacingAngle(playerid, DeagleSpawns[Random][3]);
    SetPlayerInterior(playerid,1);
    GivePlayerWeapon(playerid, 24, 250);
    }
    else if(PlayerInArena[playerid] == 2) // DM
    {
    new Random = random(sizeof(DMSpawns));
    SetPlayerPos(playerid, DMSpawns[Random][0], DMSpawns[Random][1], DMSpawns[Random][2]);
    SetPlayerFacingAngle(playerid, DMSpawns[Random][3]);
    SetPlayerInterior(playerid,10);
    GivePlayerWeapon(playerid, 24, 250);
    GivePlayerWeapon(playerid, 33, 250);
    }
    else if(PlayerInArena[playerid] == -1) // Kein Modus
    {


    }
    switch(GetPVarInt(playerid,"Skinauswahl"))
    {
    case 0:{SetPlayerPos(playerid,mdspawn);SetPlayerColor(playerid,WEIß);}
    }
    return 1;
    }

    Moin wenn ich bei einer DM oder Deagle Arena sterbe Spawne ich aber ich habe dann Object Bug also ich kann nichts sehen es ist alles Grau



    ocmd:deagle(playerid,params[])
    {
    if(PlayerInArena[playerid] > 0) return SendClientMessage(playerid, GRAU, "Fehler: Du bist bereits in einer Arena!");
    PlayerInArena[playerid] = 1;
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon(playerid,24,500);
    SetPlayerHealth(playerid,100);


    new rand = random(sizeof(DeagleSpawns));
    SetPlayerPos(playerid,DeagleSpawns[rand][0],DeagleSpawns[rand][1],DeagleSpawns[rand][2]);
    SetPlayerFacingAngle(playerid,DeagleSpawns[rand][3]);
    SetPlayerInterior(playerid, 1);
    SetPlayerVirtualWorld(playerid, 1);


    new pName[MAX_PLAYER_NAME];
    new string[128];
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string, sizeof(string), "%s hat die Deagle Arena (/deagle) betreten.", pName);
    SendClientMessageToAll(GRÜN, string);
    return 1;
    }


    ocmd:dm(playerid,params[])
    {
    if(PlayerInArena[playerid] > 0) return SendClientMessage(playerid, GRAU, "Fehler: Du bist bereits in einer Arena!");
    PlayerInArena[playerid] = 2;
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon(playerid,24,500);
    SetPlayerHealth(playerid,100);


    new rand = random(sizeof(DMSpawns));
    SetPlayerPos(playerid,DMSpawns[rand][0],DMSpawns[rand][1],DMSpawns[rand][2]);
    SetPlayerFacingAngle(playerid,DMSpawns[rand][3]);
    SetPlayerInterior(playerid, 10);
    SetPlayerVirtualWorld(playerid, 1);


    new pName[MAX_PLAYER_NAME];
    new string[128];
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string, sizeof(string), "%s hat die DM Arena (/dm) betreten.", pName);
    SendClientMessageToAll(GRÜN, string);
    return 1;


    ganz einfach du Fragst ab ob er in einer Arena istz.B.


    Code
    if(PlayerInArena[playerid] > 1) return SendClientMessage(playerid,COLOR_RED,"Du bist bereits in einer Arena"); // Die 1 steht für die Arenanummer, also wenn deine Arena bei der ID 0 anfängt einfach 0 hinschreiben und PlayerInArena ist eine Abfrage.


    Das tuhst du natürlich in deinen Befehl rein z.B. /Deagle

    Kommt keine Meldung if(Deagle[playerid] > 1) return SendClientMessage(playerid,ORANGE,"Du bist in keiner Arena");

    Füge das ganz unten im Code ein:
    public OnFilterScriptExit(){ return 1;}


    Und entferne das return 1 in Zeile 5 in dem ersten Code den du gepostet hast, im post drüber.

    danke aber nun


    [20:22:13] [WARNING] CMySQLHandle::Create - connection already exists


    C:\Users\QQ\Desktop\Montana Deathmatch\gamemodes\md.pwn(251) : error 004: function "OnFilterScriptExit" is not implemented
    C:\Users\QQ\Desktop\Montana Deathmatch\gamemodes\md.pwn(255) : warning 225: unreachable code
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Zeile 251:
    OnFilterScriptExit();
    return 0;
    }
    }
    return 1;
    }


    Zeile 255


    return 1;
    }

    Nein, das ist es nicht.
    In der Zeile nach der ich frage kommt "DL_ConnectMYSQL" vor, damit rufst du den stock ja auf.

    Ich habe nirgendswo "DL_ConnectMYSQL" stehen außer bei stock DL_ConnectMYSQL.............

    So, und jetzt poste bitte noch die Zeile, die DL_ConnectMYSQL aufruft (wird wohl bei OnGameModeInit stehen).

    mdhandle = mysql_connect(db_host,db_user,db_db,db_pass);


    public DL_CheckWhiteList(playerid)
    {
    new rows, fields;
    cache_get_data(rows, fields);
    if(!rows)
    {
    SendClientMessage(playerid, ORANGE, "Der Server verfügt über ein Whitelist System!");
    SendClientMessage(playerid, ORANGE, "Da du auf der Whitelist nicht gefunden wurdest, wirst du nicht Verbunden!");
    SetTimerEx("Kick2", 2000, false, "i", playerid);
    TogglePlayerControllable(playerid, false);
    return 1;
    }
    //#error Ersetze hier den SpawnPlayer(playerid); durch den Aufruf deinen Logins
    SendClientMessage(playerid, GELB, "Du wurdest auf der Whitelist gefunden und wirst nun weitergeleitet!");
    SpawnPlayer(playerid);
    return 1;
    }