Beiträge von BOMBER


    //MYSQL//
    stock mysql_CheckAccount(playerid)
    {
    new Query[128],Name[MAX_PLAYER_NAME],count;
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name, Name);
    format(Query, sizeof(Query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", Name);
    mysql_query(Query);
    mysql_store_result();
    count = mysql_num_rows();
    mysql_free_result();
    return count;
    }
    //MYSQL Accounterstellungs Stock//
    stock CreateAccount(playerid, pass[])
    {
    new query[256],Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    SetPlayerScore(playerid, 1);
    mysql_real_escape_string(Name,Name);
    mysql_real_escape_string(pass,pass);
    format(query, sizeof(query), "INSERT INTO `accounts` (`Name`,`Passwort`) VALUES ('%s',MD5('%s'))", Name, pass);
    mysql_query(query);
    return true;
    }
    //Passwort MYSQL Stock//
    stock mysql_ReturnPasswort(Name[])
    {
    new query[130], Get[130];
    mysql_real_escape_string(Name, Name);
    format(query, 128, "SELECT `passwort` FROM `accounts` WHERE `Name` = '%s'", Name);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }


    Hier mal der stock, also wenn sich jemand registriert, wird dass Passwort MD5-Gehasht in meiner Datenbank gespeichert, aber sobald ich /GMX (Im Spiel) mache, oder die BATCH neu starte


    Wird dem Spieler ausgegeben, dass das Passwort falsch wäre, jemand ne Idee? :)

    Naja, aufm lokalem Server läufts noch.


    Aufm Root später, wirds ja denn wieder was ganz anderes.


    Ansonsten muss ich da mal debugen später wenns laagt.


    So //Closed. :D Danke

    Okey. - Ich werde mal schauen, da ich jetzt eigentlich schon alles aus der Datenbank ausgelesen habe, mit dem Enum..


    Danke, kann erst mal geschlossen werden, geht nu alles.

    Das heisst ich soll jetzt, in der SpielerInfo -> Kopfgeld eintragen, MySQL Feld -> Kopfgeld anlegen. -> MySQL Feld Kopfgeld auslesen.


    Denn kann ich die PVars ja wieder löschen :D

    Ja also, ich werde jetzt nicht noch 3200 Zeilen umschreiben. - Keine Möglich die Variable einzeln zu deklaren beim PlayerConnect?


    //Edit: MySQL SpielerLaden ->



    stock SpielerLaden(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid,SpielerInfo[playerid][pName],MAX_PLAYER_NAME);
    if(r_LoadSQLEntrance("accounts","Name",SpielerInfo[playerid][pName]))
    {


    SpielerInfo[playerid][Level] = r_mysql_GetInt("Level");
    SpielerInfo[playerid][Health] = r_mysql_GetFloat("Health");
    SpielerInfo[playerid][Adminlevel] = r_mysql_GetInt("Adminlevel");
    SpielerInfo[playerid][Fraktion] = r_mysql_GetInt("Fraktion");
    GivePlayerMoney(playerid,r_mysql_GetInt("Geld"));
    SpielerInfo[playerid][Banned] = r_mysql_GetInt("Banned");
    SpielerInfo[playerid][Paytime] = r_mysql_GetInt("Paytime");
    SpielerInfo[playerid][Rang] = r_mysql_GetInt("Rang");
    SpielerInfo[playerid][Morde] = r_mysql_GetInt("Morde");
    SpielerInfo[playerid][SkinID] = r_mysql_GetInt("SkinID");
    SpielerInfo[playerid][Spielzeit] = r_mysql_GetInt("Spielzeit");
    SpielerInfo[playerid][RespektPunkte] = r_mysql_GetInt("RespektPunkte");
    SpielerInfo[playerid][Fuehrerschein] = r_mysql_GetInt("Fuehrerschein");
    SpielerInfo[playerid][Konto] = r_mysql_GetInt("Konto");
    SpielerInfo[playerid][Job] = r_mysql_GetInt("Job");
    SpielerInfo[playerid][Contracted] = r_mysql_GetInt("Contracted");
    SpielerInfo[playerid][Wanteds] = r_mysql_GetInt("Wanteds");

    printf("Spielerdaten vom Spieler %s erfolgreich aus der Datenbank geladen",SpielerName(playerid));
    if(SpielerInfo[playerid][Banned] == 1)
    {
    Kick(playerid);
    }
    r_UnloadSQLEntrance();
    }


    }
    return 1;
    }

    Danke, hat geklappt.


    Super!


    Aber wird die Variable jetzt auch gespeichert? bis er von einem Hitman erschossen wurde. (Von der Contractliste) gelöscht wurde?

    Sagen wir ich habe jetzt oben, "new Auftragsgeld;" definiert


    SetPVarInt(targetid, "Kopfgeld", Auftragsgeld);


    Und denn oben bei /contractlist -> GetPVarInt(targetid,"Kopf",Auftragsgeld);?

    Wenn du mir noch erklärst was ein Newline Charachter ist? (\n) ?<-



    for (new i=0; i<sizeof(i); i++)
    {
    if(IsPlayerConnected(i)
    {
    new string[128];
    if(SpielerInfo[playerid][Contracted] == 1
    {
    }
    }
    }
    return 1;
    }

    Der Dialog soll ja nur bei /Contractlist angezeigt werden, nicht bei /Contract.^^

    Nein das wird nicht funktionieren, da es sich wohl sonst schneiden würde.


    Überall wo du einen String brauchst, wirst du wohl einen neuen erstellen & formatieren müssen.


    //Edit: Rechtschreibung.


    //Edit: Kann natürlich auch sein, dass ich falsch liege.

    Wie meinst du das mit SetPVarInt? ich habe kein dini mehr als Speichermethode.


    Also, bei Contract, wird ja das Kopfgeld um den eingegeben Betrag erhöht bzw. Gesetzt, und dieses Kopfgeld soll in dem Dialog_Contract als Integer angezeigt werden.


    Bomber - 2500$ Kopfgeld


    ocmd:contract(playerid,params[])
    {
    new targetid;
    new cash1;
    if(sscanf(params,"ui",targetid, cash1))return SendClientMessage(playerid,ROT,"Contract [ID/NAME] [Bezahlung]");
    if(GetPlayerMoney(playerid) < cash1)return SendClientMessage(playerid,GELB,"Du hast nicht soviel Geld!");
    if(cash1 < 10000)return SendClientMessage(playerid, ROT, "Die Auftragsmörder wollen mindenstens 10000$ von dir sehen!");
    if(!IsPlayerConnected(targetid) || targetid == INVALID_PLAYER_ID) return SendClientMessage(playerid,ROT, "Spieler ist nicht online!");
    if(SpielerInfo[targetid][Contracted] == 1)return SendClientMessage(playerid, ROT, "Spieler ist bereits contracted!");
    SendClientMessage(targetid,ROT, "Unbekannt hat dich auf die Contractliste der Hitmans gesetzt!");
    SpielerInfo[targetid][Contracted] = 1;
    GivePlayerMoney(playerid, -cash1);
    Hitmankasse += cash1;
    return 1;
    }



    ocmd:contractlist(playerid,params[])
    {
    if(SpielerInfo[playerid][Fraktion] == 4)
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(SpielerInfo[i][Fraktion] == 4)
    {
    new string[600];
    new targetid;
    new cash2;
    if(IsPlayerConnected(i))
    {
    if(SpielerInfo[i][Fraktion] == 4)
    {
    format(string,sizeof(string),"%s %i$ Kopfgeld",SpielerName(targetid),cash2); <-- Hier (Cash2) Soll dass Kopfgeld von /contract ausgelesen werden - > Siehe oben Contract Befehl
    ShowPlayerDialog(playerid,DIALOG_Contract,DIALOG_STYLE_MSGBOX,"Contractliste",string,"0K","");
    }
    }
    }
    }
    }
    return 1;
    }


    So jetzt die Frage, wie kann ich unten dass Geld (cash1) von /contract Abfragen und in dem Strign ausgeben?

    Jap, danke euch beiden, kann geschlossen werden, werds denn nachher mal testen, ansonsten meld ich mich noch mal ;)


    %s %s ist auch klar -> String Ausgabe. :)


    //Closed

    BOMBER... Schau dir mal den obigen Post mal genauer an. Der Code baut dir den String Stück für Stück auf und lässt ihn am Ende dem Dialog ausgeben ;]


    Gruss: Sonic


    format(string,sizeof(string),"%s%s - ????/n",string,SpielerName(targetid)); <-- %s %s = Ausgabe des Strings, SpielerName(targetid)) -> Gibt den Namen des Spieler der Contractet wurde aus, oder hab ich was falsch verstanden? \n umbricht die Zeile 1 weiter runter, oder nicht?

    format(String,sizeof(String),"%s %i Kopfgeld\n%s %i Kopfgeld\n%s %i Kopfgeld\n",String);
    So aber wie kann ich jetzt z.b. 3x Target ID reinschreiben?


    Müsste ja denn eigentlich da stehen, wo "String am Ende" steht.


    //Edit: ah okey, der String gibt ja targetid aus am Ende, sorry bin bisschen blöd. - Danke ;)