Beiträge von _Max

Aus gegebenem Anlass: Sichert eure Backupcodes wenn ihr die Zwei-Faktor-Authentifizierung aktiviert habt!

Infos dazu findet ihr nochmal hier

Nimm am Dezember Gewinnspiel von breadfish.de teil und gewinne u.A. eine Playstation 5 oder eine Apple Watch. Klicke hier

    Oder sollte das query jetzt schon ausgeführt werden oder hast du mir nur den Log nach dem Server Start gegeben?!

    Ups ^^





    SkinID wurde nicht gefunden, ich schau da nochmal genauer nach :D


    //Edit: Habe es gefixxt.
    Hatte unter cache_get_value_name_int(0, "skinid", PlayerInfo[playerid][pSkinid]); das s in skinid groß geschrieben.


    ------------------------------------
    ANDERES THEMA:


    Gibt es eine Funktion ,die den Waffen Namen ausliest?
    Ich möchte einen /givegun Befehl machen und dann sollte eine Admin Nachricht kommen wie bspw.
    "AdmCMD: Admin Max hat Spieler Max eine Deagle mit 244 Schuss gegeben."
    Und als Befehl gibt er ein: /givegun Max 24 244


    Brauche dann den Waffennamen von der ID 24 (ist die Deagle)

    ast du eventuell 2x mysql_log oder sowas in deinem Skript?

    Habe es exakt 1x im Script vorhanden, eben noch einmal geschaut.


    Hast du es auch wirklich compilt...usw

    Ja, habe ich :D



    Es muss einen Log geben, sonst würde das heißen, dass du kein MySQL nutzt

    Uff ^^


    Woran könnte es noch liegen?
    Hab jetzt nochmal alles nachgeschaut, wüsste aber nicht, woran es liegen könnte. ._.


    //Edit: Hab's geschafft :D
    Log:

    Wie sieht denn die Funktion: SaveUserStats aus? :)


    stock SaveUserStats(playerid)
    {
    if(!PlayerInfo[playerid][pLoggedIn]) return 1;


    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d', skinid = '%d', adminlevel = '%d' WHERE id = '%d'",
    PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][pSkinid], PlayerInfo[playerid][adminlevel], PlayerInfo[playerid][p_id]);


    mysql_pquery(handle, query);
    return 1;
    }

    Und schau mal hier rein: Schneller & strukturierter skripten Eventuell hilft das ein wenig

    Hab ich tatsächlich schon und verwende schon:
    #define ADM_ERROR "Du besitzt nicht die benötigten Rechte!"
    #define NOT_CON "Der Spieler ist nicht online!"


    Allerdings hab ich die älteren Befehle alle noch nicht umgeschrieben ^^


    //Edit: Funktioniert nach dem /restart Befehl doch nicht ^^

    Hi,
    habe einen /setskin Befehl gemacht, der auch wunderbar funktioniert.
    Wenn ich relogge, setzt er mir auch den Skin wenn ich spawne, bis dahin alles gut.
    Aber wenn ich den Server per /restart neustarte. wird der Skin auf den Standart Wert aus der Datenbank gesetzt.
    Der /restart Befehl:
    ocmd:restart(playerid, params[]){new nachricht[128];if(!isAdmin(playerid, 4)) return SendClientMessage(playerid, COLOR_GREY, "Diesen Befehl darfst du nicht benutzen!");if(PlayerInfo[playerid][pLoggedIn] == 0) return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht eingeloggt.");format(nachricht, sizeof(nachricht), "[Server-Restart] %s %s hat den Server neugestartet, wir bitten um einen Moment Geduld!", TeamNames[PlayerInfo[playerid][adminlevel]], SpielerName(playerid));SendClientMessageToAll(COLOR_GREEN, nachricht);SendRconCommand("gmx");SaveUserStats(playerid);return 1;}


    SaveUserStats:
    stock SaveUserStats(playerid){if(!PlayerInfo[playerid][pLoggedIn]) return 1;new query[256];mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d', skinid = '%d', adminlevel = '%d' WHERE id = '%d'",PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][pSkinid], PlayerInfo[playerid][adminlevel], PlayerInfo[playerid][p_id]);mysql_pquery(handle, query);return 1;}


    In den Logs ist auch nichts zu finden.

    Hat jemand zufällig eine ältere Installationsversion von Sinusbot?
    Die aktuelle funktioniert bei mir nicht für Teamspeak³ =)

    Hi,
    danke dir, das geht jetzt auf jeden Fall schon mal. :)
    Allerdings kommt jetzt einfach kein Dialog xd Habe es dir mal per PN geschickt, weiß nicht woran es liegt :/

    Hi,
    saß gestern und heute den ganzen Tag daran, meine Datenbank etc.. auf den laufenden zu bringen, allerdings habe ich ein Problem.
    Wenn ich In-Game mein Passwort eingebe, geht der Dialog zwar weg, aber ich bleib in diesem Spawn-Bild(?) und kann nichts machen.
    Wenn ich nur crashdetect als Plugin drin habe, kommt das als Log:


    Wenn ich sscanf und MySQL hinzufüge, ist das der Log:



    Bild von der Datenbank:
    https://gyazo.com/943086cd87dbf06347aa281fac4b20fb



    stock MySQL_SetupConnection(ttl = 3)
    {
    print("[MySQL] Verbindungsaufbau...");


    handle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DBSE);


    if(mysql_errno(handle) != 0)
    {
    if(ttl > 1)
    {
    print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
    printf("[MySQL] Starte neuen Verbindungsversuch (TTL: %d).", ttl-1);
    return MySQL_SetupConnection(ttl-1);
    }
    else
    {
    print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
    print("[MySQL] Bitte prüfen Sie die Verbindungsdaten.");
    print("[MySQL] Der Server wird heruntergefahren.");
    return SendRconCommand("exit");
    }
    }
    printf("[MySQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: %d", _:handle);
    return 1;
    }

    Nein, das ist Quatsch, du musst da sowas haben:


    mysql_format(dbhandle, query, sizeof(query), "SELECT * FROM user WHERE username='%e' LIMIT 1;", SpielerName(playerid));mysql_tquery(dbhandle, query, "LoadAccount", "d", playerid);Sonst würdest du ja, dein tquery auf das Insert Query ausführen und das macht natürlich keinen Sinn.

    Hab es jetzt so geändert, dennoch ändert sich nach dem Registrieren nichts und ich bleibe in diesem Screen, wovon ich ein Post ein Screenshot gepostet habe. :/

    Kannst du löschen.
    Wie sieht denn jetzt dein Code aus?


    Zeig mal deinen Query und was im Callback steht :)

    Habe es jetzt wie folgt unter DIALOG_REGISTER:

    if(dialogid==DIALOG_REGISTER)
    {
    if(!response)
    return Kick(playerid);
    if(!isnull(inputtext) && strlen(inputtext) > 4)
    {
    new query[128];
    // new whirlpoolHash[129];
    //WP_Hash(whirlpoolHash, sizeof(whirlpoolHash), inputtext);
    mysql_format(dbhandle, query, sizeof(query), "INSERT INTO user (username, password) VALUES ('%s', '%s')", SpielerName(playerid), inputtext);
    //mysql_format(dbhandle, query, sizeof(query), "INSERT INTO user (username, password) VALUES ('%s', '%s')", SpielerName(playerid), whirlpoolHash);
    mysql_query(dbhandle, query);
    //SetTimerEx("LoadAccount", 1500, false, "d", playerid);
    mysql_tquery(dbhandle, query, "LoadAccount", "d", playerid);
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registrierung", "{FF0000}Dein Passwort muss mindestens 4 Zeichen lang sein!\n\n{FFFFFF}Herzlich Willkommen auf ...!\nEs scheint so, als hättest du noch keinen Account.\nBitte gebe jetzt dein gewünschtes Passwort ein.", "Registrieren", "Abbrechen");
    }
    }


    LoadAccount:

    public LoadAccount(playerid)
    {
    new string[128];
    // mysql_format(dbhandle, string, sizeof(string), "SELECT * FROM user WHERE username='%e' LIMIT 1;", SpielerName(playerid));
    // new Cache:result = mysql_query(dbhandle, string);
    //cache_set_active(result);
    cache_get_value_name_int(0, "id", sInfo[playerid][id]);
    cache_get_value_name_int(0, "money", sInfo[playerid][money]);
    cache_get_value_name_int(0, "alevel", sInfo[playerid][alevel]);
    cache_get_value_name_int(0, "skin", sInfo[playerid][skin]);
    cache_get_value_name_int(0, "level", sInfo[playerid][level]);
    cache_get_value_name_int(0, "kills", sInfo[playerid][kills]);
    cache_get_value_name_int(0, "deaths", sInfo[playerid][deaths]);


    sInfo[playerid][eingeloggt] = 1;


    SetPlayerMoney(playerid, sInfo[playerid][money]);
    SetPlayerScore(playerid, sInfo[playerid][level]);


    SendClientMessage(playerid, COLOR_GREEN, "[Willkommen]: Du hast dich erfolgreich eingeloggt.");
    if (GetPVarInt(playerid, "FirstSpawn") == 0)
    {
    if (isAdmin(playerid, 1))
    {
    format(string, sizeof(string), "{FFFF00}Du bist {FF4000}%s{FFFF00}.", TeamNames[sInfo[playerid][alevel]]);
    SendClientMessage(playerid, COLOR_YELLOW, string);
    }
    SetPVarInt(playerid, "FirstSpawn", 1);
    }


    SetPlayerSkin(playerid, sInfo[playerid][skin]);
    SpawnPlayer(playerid);


    cache_unset_active();
    //cache_delete(result);
    sInfo[playerid][sektimer] = SetTimerEx("SekundenTimer", 1000, true, "d", playerid);


    Spectate[playerid] = TextDrawCreate(75.0, 150.0, " ");
    TextDrawFont(Spectate[playerid], 1);
    TextDrawLetterSize(Spectate[playerid], 0.25, 1.0);
    TextDrawHideForPlayer(playerid, Spectate[playerid]);
    SetPVarInt(playerid, "spectate", INVALID_PLAYER_ID);
    return 1;
    }

    Vorrausgesetzt du verwendest jetzt den selben Query per mysql_tquery

    Ja, verwende ich =)


    //Edit: Wenn ich "new Cache:result = mysql_query(dbhandle, string);" entferne, kommt folgende Fehlermeldung:
    "script.pwn(1564) : error 017: undefined symbol "result"


    Das ist diese Zeile: cache_delete(result);


    Soll ich new [..] im Script lassen?


    2. Edit:
    Jetzt werde ich gar nicht erst gespawnt, nach der Passwort Eingabe:
    https://gyazo.com/93cb38cb6a71789f2aba1d6afc7c6070