Beiträge von robbi2304


    enum pDataEnum
    {
    p_id,
    bool:pLoggedIn,
    pName[MAX_PLAYER_NAME],
    pLevel,
    pMoney,
    pKills,
    pDeaths,
    pBanned,
    pTBanned,
    pSpawnchange,
    admin_level,
    pBannedGrund,
    pBanner
    }



    public OnPlayerConnect(playerid)
    {
    PlayerInfo[playerid][p_id] = 0;
    PlayerInfo[playerid][pLoggedIn] = false;
    PlayerInfo[playerid][pLevel] = 0;
    PlayerInfo[playerid][pMoney] = 0;
    PlayerInfo[playerid][pKills] = 0;
    PlayerInfo[playerid][pDeaths] = 0;
    GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
    if(PlayerInfo[playerid][pBanned]==1)
    {
    SendClientMessage(playerid,-1,"Du bist gebannt");
    SetTimerEx("DelayedKick", 100, false, "i", playerid);
    return 1;
    }




    return 1;
    }



    public OnPlayerRequestClass(playerid)
    {



    if(!PlayerInfo[playerid][pLoggedIn])
    {



    new query[128];
    mysql_format(handle, query, sizeof(query), "SELECT id FROM users WHERE name = '%e'", PlayerInfo[playerid][pName]);
    mysql_pquery(handle, query, "OnUserCheck", "d", playerid);




    }
    return 1;
    }



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_REGISTER)
    {



    if(!response) return Kick(playerid);




    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");



    new query[256];
    mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext);




    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    return 1;
    }
    if(dialogid == DIALOG_LOGIN)
    {



    if(!response) return Kick(playerid);




    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");



    //Wenn alles passt wird die Datenbank ausgelesen
    new query[256];
    mysql_format(handle, query, sizeof(query), "SELECT * FROM users WHERE name = '%e' AND password = MD5('%e')", PlayerInfo[playerid][pName], inputtext);
    mysql_pquery(handle, query, "OnUserLogin", "d", playerid);
    SpawnPlayer(playerid);
    return 1;
    }
    return 0;
    }



    public OnPlayerDisconnect(playerid, reason)
    {
    SaveUserStats(playerid);
    return 1;
    }



    forward OnUserCheck(playerid);
    public OnUserCheck(playerid)
    {




    if(cache_get_row_count() == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:", "Ok", "Abbrechen");
    }
    else
    {

    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:", "Ok", "Abbrechen");
    }
    return 1;
    }



    forward OnUserRegister(playerid);
    public OnUserRegister(playerid)
    {
    PlayerInfo[playerid][p_id] = cache_insert_id();
    SendClientMessage(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich.");
    SpawnPlayer(playerid);
    return 1;
    }



    forward OnUserLogin(playerid);
    public OnUserLogin(playerid)
    {




    if(cache_get_row_count() == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen");
    }
    else
    {




    PlayerInfo[playerid][p_id] = cache_get_field_content_int(0, "id", handle);
    PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0, "level", handle);
    PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0, "money", handle);
    PlayerInfo[playerid][pKills] = cache_get_field_content_int(0, "kills", handle);
    PlayerInfo[playerid][pDeaths] = cache_get_field_content_int(0, "deaths", handle);
    PlayerInfo[playerid][pBanned] = cache_get_field_content_int(0, "ban", handle);
    PlayerInfo[playerid][pTBanned] = cache_get_field_content_int(0, "tban", handle);
    PlayerInfo[playerid][pSpawnchange] = cache_get_field_content_int(0, "spawn", handle);
    PlayerInfo[playerid][pLoggedIn] = true;
    SendClientMessage(playerid, 0x00FF00FF, "[Konto] Eingeloggt.");
    GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);



    }
    return 1;
    }

    Dann würde nun ja alles klappen =). Hat wiegesagt was mit der Verbindung zur MySQL zutun. Da kann einfach etwas nicht stimmen und ich bezweifle das @Jeffry dir bei den gemachten Angaben wie bisher helfen kann.


    Probier das hier mal in phpmyadmin einzufügen unter den Reiter SQL



    CREATE TABLE `user` (
    `username` varchar(64) DEFAULT NULL,
    `password` varchar(128) DEFAULT NULL


    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Tabelle für die Spieler-Statistiken';

    Code
    [01:02:31] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'username = 'Spieler x', passwort = 'x', level = '1'' at line 1

    Du scheinst hier ein Problem mit deiner MySQL Datenbank zu haben. Evtl hast du Schreibfehler oder ähnliches drin. Prüfe das bitte. Am Script kannst du nichts machen wenn du nicht weißt was du an der MySQL Datenbank falsch gemacht hast.

    Schaue bitte in der Datenbank ob dort alle Tabellen vorhanden sind. Es sieht danach aus als wenn eine oder mehrere Tabellen fehlen.


    Hinzu zeig mir mal bitte deine


    public OnGameModeInit()

    Hallo erstmals startest du deine Verbindung gerade drei mal. Wie verbindest du dein Mode mit dem Server ? Zeig uns mal die Code Zeilen.


    Hinzu schau mal ob die Zeilen vorhanden sind die hier angegeben sind



    Code
    [01:02:31] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'username = 'Spieler x', passwort = 'x', level = '1'' at line 1

    Nochmals habe ich eine kleine Schwierigkeit. Nach dem ich den Server neustarte kann ich normal Joinen. Fehler ist auch bekannt aber nicht die Lösung. Er ruft mir die spalte pBanned leider erst mit dem Login auf. Auch die Abfrage daraus in den Connect zu kopieren hat nichts gebracht.



    public OnPlayerConnect(playerid)
    {
    PlayerInfo[playerid][p_id] = 0;
    PlayerInfo[playerid][pLoggedIn] = false;
    PlayerInfo[playerid][pLevel] = 0;
    PlayerInfo[playerid][pMoney] = 0;
    PlayerInfo[playerid][pKills] = 0;
    PlayerInfo[playerid][pDeaths] = 0;
    PlayerInfo[playerid][pBanned] = cache_get_field_content_int(0, "ban", handle);
    GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);


    if(PlayerInfo[playerid][pBanned]==1)
    {
    SendClientMessage(playerid,-1,"Du bist gebannt");
    SetTimerEx("DelayedKick", 100, false, "i", playerid);
    return 1;
    }



    return 1;
    }

    public OnPlayerConnect(playerid){PlayerInfo[playerid][p_id] = 0;PlayerInfo[playerid][pLoggedIn] = false;PlayerInfo[playerid][pLevel] = 0;PlayerInfo[playerid][pMoney] = 0;PlayerInfo[playerid][pKills] = 0;PlayerInfo[playerid][pDeaths] = 0;GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);if(PlayerInfo[playerid][pBanned] == 1){SendClientMessage(playerid,-1,"Du nicht");Kick(playerid);return true;}return 1;}

    Nein das geht nicht. Da erkennt er die ganze Abfrage schon nicht mehr.

    Hallo liebe Brotfische,


    heute mal wieder eine kleine Frage.


    Ich möchte gerne den Text vom SendClientMessage Angezeigt bekommen. Allerdings zeigt kickt er mich nur wie es auch sein soll nur ohne Text.


    public OnPlayerConnect(playerid)
    {
    PlayerInfo[playerid][p_id] = 0;
    PlayerInfo[playerid][pLoggedIn] = false;
    PlayerInfo[playerid][pLevel] = 0;
    PlayerInfo[playerid][pMoney] = 0;
    PlayerInfo[playerid][pKills] = 0;
    PlayerInfo[playerid][pDeaths] = 0;
    GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
    if(PlayerInfo[playerid][pBanned] == 1) return SendClientMessage(playerid,-1,"Du nicht");
    {
    Kick(playerid);
    }
    return 1;
    }

    Es wäre aber wesentlich perfomanter^^
    Wenn du es allerdings trotzdem mit einem Timer machen möchtest musst du

    Code
    SEtTimer("wanted",1000,1);

    zu


    Code
    SetTimerEx("wanted", 1000, true, "d", playerid);

    und dann würde es funktionieren

    Dies hat auch nicht zur Lösung geholfen. Da ich dort aber auch nicht groß weiter komme habe ich mich an RFT gewannt und hoffe der kriegt mir was schönes gebastelt

    Das ganze würde aber nichts an der Anzeige vom TextDraw ändern

    ups siehe an da fehlt was. Habe nur einen Timer dafür aber mehr nicht xD.




    SEtTimer("wanted",1000,1);


    Die Wanteds funktionieren aber deswegen denk ich schon das alles soweit Richtig ist. Denn der public wanted übergibt alles ans Textdraw.
    Nur das Textdraw versteht nicht das er den Wanted nur für eine Person geben soll.


    @Jeffry vielleicht kannst du da weiter helfen.


    Wanteds werden Richtig vergeben wiegesagt nur falsch im Textdraw angezeigt

    Also in dem Code werden dir selbst keine Wanteds zugewiesen.

    Sie werden mir aber im TextDraw angezeigt und den anderen.
    Ebenfalls werden diese auch gespeichert.
    Also ich denke es stimmt was mit


    PlayerInfo[pID][pWanted]+=Wanteds;


    nicht


    Oder vielleicht sitzt hier auch was falsch



    forward wanted(playerid);
    public wanted(playerid)
    {
    new string[164],pID;
    format(string,sizeof(string),"%i",PlayerInfo[playerid][pWanted]);
    TextDrawSetString(Textdraw0,string);
    return 1;
    }

    Eine Tazer funktion wo man eine SD PIstol mit einem Schuss bekommt und wenn man einen Spieler trifft, wird der getazed.

    Okay. Sowas umzusetzen ist ja nicht so schwierig

    Ein dynamisches Wanted-System. Man kann nur im Auto per /laptop
    die Wanteds sehen. /laptop soll dann schön mit Textdraw texturiert sein.


    - Wenn man im Auto ist & einen ortet, soll man solange wie man im Auto ist,
    ein sogenanntes Navi zum Täter haben, wenn man aber das Auto verlässt,
    sieht man nicht mehr wo er ist. :)

    Das mit den Laptops ist ja im Grunde dann schön gemacht aber der Übersichtlichkeit für die Team Mitglieder am Ende ist glaube ich dann etwas schwieriger oder meinst du nicht ?

    Hallo liebe Leute,


    heute wollte ich euch mal Fragen was für euch bei einem LSPD System nicht fehlen darf.
    Also schreibt drunter was für euch nicht fehlen darf und wir diskutieren ein wenig darüber =).

    Hier scheint doch noch etwas nicht zu stimmen.


    Leider bekomme ich und derjenige der die Wanteds erhalten soll die Wanteds.


    Ich will sie natürlich nicht haben haha


    Einmal hier der Code



    ocmd:su(playerid,params[])
    {
    new pID, Wanteds, Grund[128]/*Array fehlt*/;
    if(sscanf(params,"uis",pID,Wanteds,Grund))return SendClientMessage(playerid,COLOR_RED,"USING: /su [ID] [Anzahl] [Grund]");
    {
    new name[MAX_PLAYER_NAME];
    new string[128];
    new Name2[MAX_PLAYER_NAME];
    new string2[128];
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(pID,Name2,sizeof(Name2));
    format(string,128,"Du hast dem Spieler %s %i Wanteds gegeben! Grund: %s",Name2,Wanteds,Grund);
    format(string2,128,"Der Spieler %s hat dir %i Wanteds gegeben! Grund: %s",Name,Wanteds,Grund);
    PlayerInfo[pID][pWanted]+=Wanteds;
    SendClientMessage(playerid,COLOR_BUSBLUE,string);
    SendClientMessage(pID,COLOR_RED,string2);
    }
    return 1;
    }

    Code
    PlayerInfo[playerid][pWanted]+=Wanteds;

    Hoffe du speicherst die Variable beim DIsconnect in eine DB ab.
    Sonst sind die Wanteds nach dem Relog futsch.



    //Edit pID statt playerid, sonst gibst dir selbst Wanteds : SRy

    Wie Blöd bin ich auch Wanteds zum speichern freigeben aber Grund auswählen o.o aber danke dir nun gibts wenigstens keine errors

    Mit welchen Plugin arbeitest du denn ?

    Nur mit Streamer und MySQL.


    Allerdings muss ich z.b eine Funktion wie diese einbauen


    PlayerInfo[playerid][pMoney]+=hInfo[i][h_preis];


    Nur das diese eben für die Wanteds ist. Ich komm gerade echt nicht drauf wie das nochmal war. Es muss ja nur die Anzahl noch ausgelesen werden



    Wenn ich den geposteten Code verwende kommt folgender Error


    Code
    error 033: array must be indexed (variable "Grund")

    Hallöchen.


    Fast geschafft nur nochmal eine Frage an euch. Wie sage ich dem ocmd:su befehl nochmal das er in die Datenbank die Sachen schreiben soll bzw in den pWanted vormerken soll ?




    ocmd:su(playerid,params[])
    {
    new pID, Wanteds, Grund[128]/*Array fehlt*/;
    if(sscanf(params,"uis",pID,Wanteds,Grund))return SendClientMessage(playerid,COLOR_RED,"USING: /su [ID] [Anzahl] [Grund]");
    {
    new name[MAX_PLAYER_NAME];
    new string[128];
    new Name2[MAX_PLAYER_NAME];
    new string2[128];
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(pID,Name2,sizeof(Name2));
    [b]PlayerInfo[playerid][pWanted]+=Grund; // Das wäre ja Falsch[/b]
    format(string,128,"Du hast dem Spieler %s %i Wanteds gegeben! Grund: %s",Name2,Wanteds,Grund);
    format(string2,128,"Der Spieler %s hat dir %i Wanteds gegeben! Grund: %s",Name,Wanteds,Grund);
    SendClientMessage(playerid,COLOR_BUSBLUE,string);
    SendClientMessage(pID,COLOR_RED,string2);
    }
    return 1;
    }



    forward wanted();
    public wanted()
    {
    new string[164];
    format(string,sizeof(string),"%i",PlayerInfo[p_id][pWanted]);
    TextDrawSetString(Textdraw0,string);
    return 1;




    }