Beiträge von IPrototypeI

    strcat hierbei zu benutzen ist wohl eher sinnlos


    ocmd:stats(playerid,params[])
    {
    if(isPlayerAFK(playerid))return SCM(playerid,-1,"Du bist Abwesend gemeldet. Mit dem Befehl /back kannst du dich wieder Anwesend melden!");
    new Gender[20],Job[20],Admlvl[20],ipadress[16],string[650];
    switch(SpielerInfo[playerid][pGeschlecht]){
    case 1: Gender = "Männlich";
    case 2: Gender = "Weiblich";
    }
    switch(SpielerInfo[playerid][pJob]){
    case 0: Job = "Arbeitslos";
    case 1: Job = "Detektiv";
    case 2: Job = "Anwalt";
    case 3: Job = "Hure";
    case 4: Job = "Automechaniker";
    case 5: Job = "Strassenreiniger";
    }
    if(isPlayerAnAdmin(playerid,1)){
    switch(SpielerInfo[playerid][pAdmin]){
    case 1:Admlvl= "Supporter";
    case 2:Admlvl= "Moderator";
    case 3:Admlvl= "Administrator";
    case 4:Admlvl= "Lead-Admin";
    case 5:Admlvl= "Serverinhaber";
    }
    GetPlayerIp(playerid, ipadress, 16);
    format(string,400,"{00E500}======[Stats von %s %s auf Lifestyle Roleplay]======{FFFFFF}\n{FF0000}** Allgemeines ------------------------{FFFFFF} \nLevel:\t\t %d\nGeld:\t\t %d \nKontostand:\t\t %d\nRespektpunkte:\t\t %d\nHandynummer %d\nGeschlecht:\t\t %s\nAlter:\t\t %d\nJob:\t\t\t %s\nFraktion:\t\t None\nRank:\t\t\t %d",
    Admlvl,PlayerName(playerid),GetPlayerScore(playerid),SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pKonto],SpielerInfo[playerid][pRespekt],SpielerInfo[playerid][pHandyNummer],Gender,SpielerInfo[playerid][pAlter],Job,SpielerInfo[playerid][pFrakrank]);
    format(string,650,"%s\n{FF0000}** Fraktion ---------------------{FFFFFF}\nGehalt (pro Payday):\t 0€\n{FF0000}** Besitz -----------------------------{FFFFFF}\n{EEB900}** Admineinsicht -----------------------------{FFFFFF}\nAdminlevel:\t\t\t %d(%s)\nMutezeit:\t\t\t %d\nVerwarnungen:\t\t\t %d\nKicks:\t\t\t %d\nBans:\t\t\t %d\nSupportpunkte:\t\t\t %d\nIP-Adresse:\t\t\t %s",string,SpielerInfo[playerid][pAdmin],Admlvl
    ,SpielerInfo[playerid][pMute],SpielerInfo[playerid][pWarns],SpielerInfo[playerid][pKicks],SpielerInfo[playerid][pBans],SpielerInfo[playerid][pSupportpunkte],ipadress);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Statstik",string,"Schliessen","");
    }
    return 1;
    }


    Hier sollte gehen


    Hier


    // This is a comment
    // uncomment the line below if you want to write a filterscript


    #include <a_samp>
    #include <ocmd>
    #include <dini>
    #define ROT 0xFF000FFF
    #define PlayerName(%0) pName[%0]
    enum {
    DIALOG_BANK = 17823,
    DIALOG_TRANSFER,
    DIALOG_TRANSFER2,
    DIALOG_DEPOSIT,
    DIALOG_WITHDRAW,
    };


    new pName[MAX_PLAYERS][18];
    new id,
    str[128],
    Spielerdatei[30];


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" banksystem by lcp9");
    print("--------------------------------------\n");
    return 1;
    }
    public OnFilterScriptExit()
    {
    new i;
    for(; i < MAX_PLAYERS; ++i)if(IsPlayerConnected(i))SpielerSpeichern(i);
    return 1;
    }
    public OnPlayerConnect(playerid)
    {

    strdel(Spielerdatei,0,30);
    strdel(pName[playerid],0,18);
    GetPlayerName(playerid,pName[playerid],18);
    format(Spielerdatei,30,"/bank/%s.txt",PlayerName(playerid));
    LoadAccount(playerid,Spielerdatei);
    return 1;
    }
    public OnPlayerDisconnect(playerid)
    {
    SpielerSpeichern(playerid);
    return 1;
    }
    stock SpielerSpeichern(playerid){
    strdel(Spielerdatei,0,30);
    format(Spielerdatei,30,"/bank/%s.txt",PlayerName(playerid));
    dini_IntSet(Spielerdatei,"bank",GetPVarInt(playerid,"bank"));
    return 1;
    }
    stock LoadAccount(playerid, string[]){
    if(dini_Exists(Spielerdatei))return SetPVarInt(playerid,"bank",dini_Int(string,"bank"));
    return dini_Create(Spielerdatei);
    }
    ocmd:bank(playerid, params[])
    {
    strdel(str,0,128);
    format(str,128,"{0005FF}You have {19FF00}%d${0005FF} in your bank account",GetPVarInt(playerid,"bank"));
    SendClientMessage(playerid,ROT,str);
    ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,str,"{3C00FF}Deposit money\n{3C00FF}Withdraw money\n{3C00FF}Transfer money","Yes","Cancel");
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid){
    case DIALOG_BANK:{
    if(response){
    switch(listitem){
    case 0:return ShowPlayerDialog(playerid,DIALOG_DEPOSIT,1,"Deposit!","How much money to deposit?","Ok","Cancel");
    case 1:return ShowPlayerDialog(playerid,DIALOG_WITHDRAW,1,"Withdraw!","How much money to withdraw?","Ok","Cancel");
    case 2:return ShowPlayerDialog(playerid,DIALOG_TRANSFER,1,"Transfer money","To him do want to give money?","Ok","Cancel");


    }
    }
    }
    case DIALOG_DEPOSIT:{
    if(!response){
    strdel(str,0,128);
    format(str,128,"{0005FF}You have {19FF00}%d${0005FF} in your bank account",GetPVarInt(playerid,"bank"));
    return ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,str,"{3C00FF}Deposit money\n{3C00FF}Withdraw money\n{3C00FF}Transfer money","Yes","Cancel");
    }
    new money = strval(inputtext);
    if(GetPlayerMoney(playerid) < money || money <= 0)return ShowPlayerDialog(playerid,DIALOG_DEPOSIT,1,"Deposit!","You haven't got enought money!","Ok","Cancel");
    strdel(str,0,128);
    format(str,64,"You deposited %d$",money);
    GivePlayerMoney(playerid,-money);
    SetPVarInt(playerid,"bank", GetPVarInt(playerid,"bank") +money);
    return SendClientMessage(playerid,ROT,str);
    }
    case DIALOG_WITHDRAW:{
    if(!response){
    strdel(str,0,128);
    format(str,128,"{0005FF}You have {19FF00}%d${0005FF} in your bank account",GetPVarInt(playerid,"bank"));
    return ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,str,"{3C00FF}Deposit money\n{3C00FF}Withdraw money\n{3C00FF}Transfer money","Yes","Cancel");
    }
    new money = strval(inputtext);
    if(GetPVarInt(playerid,"bank") < money || money <= 0)return ShowPlayerDialog(playerid,DIALOG_WITHDRAW,1,"Deposit money","You don't have so much money on your bank !","Ok","Cancel");
    strdel(str,0,128);
    format(str,64,"You withdraw %d$",money);
    GivePlayerMoney(playerid,money);
    SetPVarInt(playerid,"bank", GetPVarInt(playerid,"bank") -money);
    return SendClientMessage(playerid,ROT,str);
    }
    case DIALOG_TRANSFER:{
    if(!response){
    strdel(str,0,128);
    format(str,128,"{0005FF}You have {19FF00}%d${0005FF} in your bank account",GetPVarInt(playerid,"bank"));
    return ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,str,"{3C00FF}Deposit money\n{3C00FF}Withdraw money\n{3C00FF}Transfer money","Yes","Cancel");
    }
    strdel(str,0,128);
    format(str,128,"Ok you choosed %s(%d)\nNow Enter The Amount You Want To Transfer",PlayerName(id),id);
    SendClientMessage(playerid,ROT,str);
    id = strval(inputtext);
    if(!IsPlayerConnected(id))return ShowPlayerDialog(playerid,DIALOG_TRANSFER,1,"Transfer money","To him do want to give money?","Ok","Cancel");
    return ShowPlayerDialog(playerid,DIALOG_TRANSFER2,DIALOG_STYLE_INPUT,"PAY","How much you want to pay?","ok","Cancel");
    }
    case DIALOG_TRANSFER2:{
    if(!response)return ShowPlayerDialog(playerid,DIALOG_TRANSFER,1,"Transfer money","To him do want to give money?","Ok","Cancel");
    new money = strval(inputtext);
    if(GetPVarInt(playerid,"bank") < money || money <= 0)return ShowPlayerDialog(playerid,DIALOG_TRANSFER2,1,"Deposit!","You haven't got enought money!","Ok","Cancel");
    SetPVarInt(playerid,"bank", GetPVarInt(playerid,"bank") -money);
    SetPVarInt(id,"bank", GetPVarInt(playerid,"bank") +money);
    strdel(str,0,128);
    format(str,64,"You gave player %s %d $",PlayerName(id),money);
    SendClientMessage(playerid,ROT,str);
    strdel(str,0,64);
    format(str,64,"Player %s gave you %d $",PlayerName(playerid),money);
    return SendClientMessage(id,ROT,str);
    }
    }
    return 1;
    }


    lass doch das format doch bitte weg ja Kaliber und reduziere die buffer string zu dem gebe bei dem nächsten format doch die string größe an oder benutze doch gleich strcat :D würde auch bei case schon gehen je nach dem wäre sogar besser und davor immer schön den string leeren

    ocmd:admins(playerid,params[])
    {
    new i, pName[MAX_PLAYER_NAME], string[40];
    SendClientMessage(playerid,GELB,"Supporter/Administratoren Online:");
    for(; i < MAX_PLAYERS; ++i){
    if(!IsPlayerConnected(i) && GetPVarInt(playerid,"Adminlevel") == 0)continue;
    GetPlayerName(i, pName, MAX_PLAYER_NAME);
    strdel(string,0,40);
    switch(GetPVarInt(playerid,"Adminlevel")){
    case 1:strcat(string,"Supporter: "),strcat(string,pName);
    case 2:strcat(string,"Administrator: "),strcat(string,pName);
    case 3:strcat(string,"High-Administrator: "),strcat(string,pName);

    }
    SendClientMessage(playerid, WEISS, string);
    }
    return 1;
    }


    Hier bitte sollte gehen

    Also was memory an geht bist du anscheinend auch ein hater dagegen. Arbeite mal mehr mit der zuweißung von datentypen.
    generel , wenn ich dies schon sehe wird mich innerlich übel
    GetPlayerName(i,pname,sizeof(pname));


    beim sekunden timer speicher die ganzen namen in einer array und kannst dazu noch ein define machen.
    zu dem hast du ein public drinne was du nicht mal benutzt
    forward ac_CheckTimer();
    public ac_CheckTimer(){


    mal ein kleiner tipp schiebe die forwards nach oben dann kompilt das skript schneller wegen der initialization der public-funktionen
    und wenn du schon ein cmd prozessor benutzt dann schreib auch alle die command mit dme prozessor und bei OnPlayerCommandText schaud doch mal du startest immer wieder
    eine neue if abfrage dies braucht zeit benutz dafür else if.
    und zu dem kommen viele elemente aus einem GF und sowas
    allstring[1900]
    da denk ich nur eins das wort Scheiße ala Trainer Ludwig
    http://www.youtube.com/watch?f…page&v=vR7rj8DAUc8#t=265s


    Nun gut was kann man dazu noch sagen außer das dieser Gamemode zu nix wirklichem taugt von fachlicher kompetenz in pawn kann hier keine rede sein.

    Hi community,
    ich habe eine frage wie kann ich einen checkpoint machen der nur so ein ring ist der sollte dann in der luft sein weil in der luft "will" ich nciht diese normalen checkpoints haben


    //edit hier ist ein foto davon http://www.google.de/imgres?q=…s:0,i:88&biw=1333&bih=664


    denk doch mal nach siehe auf der Seite


    //Add Type = 3 (Air normal)
    SetPlayerRaceCheckpoint(playerid, type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size);


    http://wiki.sa-mp.com/wiki/SetPlayerRaceCheckpoint


    Mit den zweiten x y z werten lässt du den nächsten checkpoint erstellen und für das ende den typ 4

    Funktioniert leider nicht, so hab ichs vorhin schon einmal probiert und gerade eben noch mal. - Aber trotzdem danke.



    Na, heut Morgen mit Peter Lustig geduscht und danach ein Clown gefrühstückt?


    ich hab dir das ganze mal umgeschrieben sollte normal funktionieren

    stock GetAge(playerid,string[])
    {
    new Date[3];
    sscanf(string, "p<.>iii",SpielerInfo[playerid][pBdayTag],SpielerInfo[playerid][pBdayMonat],SpielerInfo[playerid][pBdayJahr] );
    if(SpielerInfo[playerid][pBdayTag] > 31 || SpielerInfo[playerid][pBdayTag] <= 0)return 0;
    else if(SpielerInfo[playerid][pBdayMonat] > 12 || SpielerInfo[playerid][pBdayMonat] <= 0)return 1;
    getdate(Date[0],Date[1],Date[2]);
    if(SpielerInfo[playerid][pBdayJahr] > Date[0] || SpielerInfo[playerid][pBdayJahr] < 1900)return 2;
    SpielerInfo[playerid][pAlter] = (Date[0] - SpielerInfo[playerid][pBdayJahr]) - ((Date[1] < SpielerInfo[playerid][pBdayMonat])? 1 : ((Date[1] == SpielerInfo[playerid][pBdayMonat] && Date[2] < SpielerInfo[playerid][pBdayTag])? 1 : 0));
    return SpielerInfo[playerid][pAlter];
    }


    case DIALOG_PERSONALAUSWEIS1:{
    if(!response)return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    switch(GetAge(playerid,inputtext)){
    case 0:{
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Tag deines Geburtsdatums!");
    return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    }
    case 1:{
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Monat deines Geburtsdatums!");
    return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    }
    case 2:{
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Jahr deines Geburtsdatums!");
    return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    }
    case default:{
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(string,sizeof(string),"Bitte überprüfen Sie, ob ihre Angaben korrekt sind!\n\nName: %s\nGeburtsdatum: %d.%d.%d\nAlter %d\n\n\nSind diese Angaben korrekt?",name,SpielerInfo[playerid][pBdayTag],SpielerInfo[playerid][pBdayMonat], SpielerInfo[playerid][pBdayJahr],SpielerInfo[playerid][pAlter]);
    return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS2,DIALOG_STYLE_MSGBOX,"Personalausweis - Antrag [2/2]",string,"Ja","Nein");
    }
    }
    }


    //edit hab beim splitten mit sscanf die 2 variabeln vergessen

    1. Ich möchte das gerne machen egal ob sie online oder offline sind. =)


    2. Ich wollte gerne sowieso wissen woran man das mit mysql oder dini erkennt und was das bringt =/.


    1. Nun gut jetzt ist nur noch wichtig mit was gespeichert wird.


    2. Bei mysql brauchst du eine MySQL datenbank erkennen kann man dies an dem mysql plugin oder an der include wo oben drinne steht direkt ^^.
    Wer hätte es gedacht das natürlich auch in deinem skript die funktion mysql_query verwendet wird nun gut .
    Was ist der unterschied zwischen MySQL und DINI ja mysql ist schneller als dini hat auch in vielen beziehungen einen vorteil zwar kannst du das per query
    verändern was bei files natürlich nicht so leicht möglich ist dort hast du nur zwei möglichkeiten alle accounts zu öffnen und den jeweiligen wert auf 0 zu setzen der darin gespeichert ist nun ist das problem das du alle namen brauchst um das jeweilige file zu öffnen. Andere option bei files wäre eine zusätzliche variabel womit du das
    ganze abgleichst beim laden des accounts.

    Was hast du dir da vorgestellt alle Leader zu uninviten , wenn diese online sind oder auch die wo offline sind und zu dem läuft das skript auf dini oder mysql
    naja hab auch schon von einer mysql version von dem skript gehört meine ich ^^.


    Sowas ist möglich mit programmen ^^ hab glaub ich auch noch ihrgend wo so ein rcon hack rum liegen dieser probiert mehrere möglichkeiten aus
    bis man das rcon hat. => Dauer sehr lange . Dies geht von außerhalb natürlich auch rcon query
    siehe
    http://wiki.sa-mp.com/wiki/Query_Mechanism
    Die leute die das machen gehen durch die ganze SAMP: Masterlist .


    Daher bietet es sich an die leute zu bannen / ihre ip sollte das password 3 oder mehrmals falsch eingegeben werden

    Also sehr viel helfen können wir da auch nicht ohne code normal kommt dieser Fehler zustande wenn mehrere anweisungen in einer reihe sin d
    beispiel


    ... = ihrgend etwas
    switch(...){
    case ...:print("Fehler"); print("Fehler");
    }


    daher muss man diesen code umstellen und zwar
    entweder das semikolon entfernen und ein komma hin setzen


    switch(...){
    case ...:print("Fehler"), print("Fehler");
    }


    oder mit Klammern arbeiten und einen anweisungsblock erstellen.


    switch(...){
    case ...:{
    print("Fehler");
    print("Fehler");
    }
    }

    Das ist mit


    SQL
    DROP TABLE `tabellen name`


    dennoch solltest du zusätzlich abfragen ob die Tabelle existiert um warning zu vermeiden mit

    SQL
    IF EXISTS


    das ganze nochmal zusammen


    SQL
    DROP TABLE  IF EXISTS `tabellen name`

    Dan mach halt die Augen auf und schau dir die stock-funktion an .
    dennoch solltest du die Tabelle einmal erstellen lassen per skript danach die funktion ausklammern grund ist eine mir nicht bekannte komplikationen, was
    einen crash verursacht mit dem Timer. Kann jedoch auch nur bei mir sein aufgrund eines mysteriösen problems. Zu dem verwende die neuste version da
    dort der memory leak gefixxt ist.

    genau daher habe ich die
    Auch DANKE
    Ich Liebe dich


    Das besteht allerdings aus einem Ordner
    Soll ich den in den Plugin Ordner verschieben??
    Oder wie


    Generel gibt es wie schon gesagt eine wzeite version

    #include <a_samp>
    #include <a_mysql>


    #undef MAX_PLAYERS
    #define MAX_PLAYERS (50)
    #define STR_LEN (450)


    #define DIALOG_REGISTER_ACCEPT (0)
    #define DIALOG_REGISTER (1)
    #define DIALOG_LOGIN (2)



    #define PlayerName(%0) PlayerInfo[%0][pName]
    #define DIALOG_REGISTER_ACCEPT_TEXT "Willkommen auf unserem Server,\nwenn sie sich Registrieren wollen so klicken sie auf {ADFF2F}Weiter"


    enum pStats
    {
    pName[20],
    pPassword[129],
    pAge,
    pCountry[20],
    pLevel,
    pAdmin,
    pDonate,
    pGender[10],
    pMoney,
    pBank,
    Float:pPosX,
    Float:pPosY,
    Float:pPosZ,
    pVW,
    pInt,
    pRank,
    pFraction,
    pCarlic,
    pBikelic,
    pPlanelic,
    pLKWlic,
    pHelilic,
    Float:pHealth,
    Float:pArmour,
    pBan,
    pRegdate[20],
    pLastLogin[20],
    }
    new PlayerInfo[MAX_PLAYERS][pStats],
    bool:player_loged_in[MAX_PLAYERS char],
    enter_password_try[MAX_PLAYERS char],
    m_connect;


    native WP_Hash(buffer[], len, const str[]);


    forward OnPlayerLoadPlayerData(playerid);
    forward OnPlayerCheckAccount(playerid);
    forward LoginCamera(playerid);


    new ALLSTRING[64],
    Hash[129],
    Query[STR_LEN];


    main(){ }
    public OnGameModeInit()
    {
    SetGameModeText("Blank");
    mysql_debug(true);
    Databaseconnect();
    //CreateTables();
    return 1;
    }
    public OnGameModeExit()
    {
    for(new i; i < MAX_PLAYERS; ++i)if(player_loged_in{i})SavePlayerData(i),player_loged_in{i}=false;
    return 1;
    }
    public OnPlayerConnect(playerid)
    {
    strdel(Query,0,STR_LEN);
    for(new x; pStats:x < pStats; x++) PlayerInfo[playerid][pStats:x] = 0;
    GetPlayerName(playerid,PlayerInfo[playerid][pName],20);
    SendClientMessage(playerid,-1,"Willkommen auf dem Server");
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    if(player_loged_in{playerid}){
    SavePlayerData(playerid);
    player_loged_in{playerid}=false;
    enter_password_try{playerid}=0;
    }
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    if(player_loged_in{playerid}==false)return Kick(playerid);
    return 1;
    }
    public OnPlayerRequestClass(playerid, classid)
    {
    TogglePlayerSpectating(playerid,1);
    SetTimerEx("LoginCamera", 100, false, "i", playerid);
    return 1;
    }
    public LoginCamera(playerid)
    {
    SetPlayerCameraPos(playerid,-201.4289,1372.9482,67.0541);
    SetPlayerCameraLookAt(playerid,204.4058,0,0);
    mysql_format(m_connect,Query,"SELECT `Password`,`LastLogin` FROM `accounts` WHERE `Name` = '%e'",PlayerName(playerid));
    mysql_function_query(m_connect,Query,true,"OnPlayerCheckAccount","i", playerid);
    return 1;
    }
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid){
    case DIALOG_REGISTER_ACCEPT:{
    if(response)return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Bitte gebe dein gewünschtes Passwort hier ein","Registrieren","Abbrechen");
    else Kick(playerid);
    }
    case DIALOG_REGISTER:{
    if(response){
    if(strlen(inputtext) > 32 || strlen(inputtext) < 4) {
    SendClientMessage(playerid,-1,"Dein Passwort muss mindestens 4 Zeichen oder darf Maximal 16 Zeichen enthalten!");
    return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Bitte gebe dein gewünschtes Passwort hier ein","Registrieren","Abbrechen");
    }else{
    WP_Hash(PlayerInfo[playerid][pPassword], 129, inputtext);
    strdel(Query,0,STR_LEN);
    mysql_format(m_connect,Query,"INSERT INTO `accounts` (`Name`, `Password`, `Age`, `Country`, `Level`, `Admin`, `Donate`, `Gender`, `Money`, `Bank`, `X`, `Y`, `Z`, `VW`, `Interior`, `Rank`, `Fraction`, `Carlic`, `Bikelic`, `Planelic`, `LKWlic`, `Helilic`, `Health`, `Armour`, `Ban`,`RegDate`,`LastLogin`) VALUES ('%s', '%s', '0', '0', '0', '0', '0', '0', '0', '0', '155.8156', '-1963.1462', '3.7734', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',NOW(),NOW())",
    PlayerInfo[playerid][pName],PlayerInfo[playerid][pPassword]);
    mysql_function_query(m_connect,Query,false,"","");
    return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login","Gebe dein Passwort ein","Anmelden","Abbrechen");
    }
    }else return Kick(playerid);
    }
    case DIALOG_LOGIN:{
    if(response){
    strdel(Hash,0,sizeof(Hash));
    WP_Hash(Hash, 129, inputtext);
    if(!strcmp(PlayerInfo[playerid][pPassword], Hash)){
    strdel(Query,0,STR_LEN);
    mysql_format(m_connect,Query,"SELECT * FROM `accounts` WHERE `Name` = '%e'",PlayerName(playerid));
    mysql_function_query(m_connect,Query,true,"OnPlayerLoadPlayerData","i",playerid);
    SendClientMessage(playerid,-1,"Du hast dich erfolgreich eingloggt!");
    }else{
    strdel(ALLSTRING,0,sizeof(ALLSTRING));
    format(ALLSTRING,64,"Passworteingabe | Letzer Login: {FF8C00}%s",PlayerInfo[playerid][pLastLogin]);
    SendClientMessage(playerid,-1,"Dein Account wurde gefunden. Bitte logge dich ein.");
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login",ALLSTRING,"Anmelden","Abbrechen");
    enter_password_try{playerid}++;
    strdel(ALLSTRING,0,sizeof(ALLSTRING));
    format(ALLSTRING,64,"Du hast noch %d Versuche!",(3-enter_password_try{playerid}));
    SendClientMessage(playerid,-1,ALLSTRING);
    if(enter_password_try{playerid} == 3){
    SendClientMessage(playerid,-1,"Du hast 3mal dein Passwort falsch eingegben!");
    return Kick(playerid);
    }
    }
    }else return Kick(playerid);
    }
    }
    return 1;
    }


    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }
    public OnPlayerCheckAccount(playerid)
    {
    new row, field;
    cache_get_data(row,field);
    if(!row)return ShowPlayerDialog(playerid, DIALOG_REGISTER_ACCEPT, DIALOG_STYLE_MSGBOX,"Registrierung",DIALOG_REGISTER_ACCEPT_TEXT,"Weiter","Abbrechen");
    else{
    cache_get_field_content(0,"Password",PlayerInfo[playerid][pPassword]);
    cache_get_field_content(0,"LastLogin",PlayerInfo[playerid][pLastLogin]);
    cache_get_field_content(0,"Ban",PlayerInfo[playerid][pBan]);
    if(PlayerInfo[playerid][pBan] == 1)return Kick(playerid);
    strdel(Query,0,STR_LEN);
    strdel(ALLSTRING,0,sizeof(ALLSTRING));
    format(ALLSTRING,64,"Passworteingabe | Letzer Login: {FF8C00}%s",PlayerInfo[playerid][pLastLogin]);
    SendClientMessage(playerid,-1,"Dein Account wurde gefunden. Bitte logge dich ein.");
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login",ALLSTRING,"Anmelden","Abbrechen");
    }
    return 1;
    }
    public OnPlayerLoadPlayerData(playerid)
    {
    new data[30];
    cache_get_row(0,0,PlayerInfo[playerid][pName]);
    cache_get_row(0,2,data); PlayerInfo[playerid][pAge] = strval(data);
    cache_get_row(0,3,PlayerInfo[playerid][pCountry]);
    cache_get_row(0,4,data); PlayerInfo[playerid][pLevel] = strval(data);
    cache_get_row(0,5,data); PlayerInfo[playerid][pAdmin] = strval(data);
    cache_get_row(0,6,data); PlayerInfo[playerid][pDonate] = strval(data);
    cache_get_row(0,7,PlayerInfo[playerid][pGender]);
    cache_get_row(0,8,data); PlayerInfo[playerid][pMoney] = strval(data);
    cache_get_row(0,9,data); PlayerInfo[playerid][pBank] = strval(data);
    cache_get_row(0,10,data); PlayerInfo[playerid][pPosX] = floatstr(data);
    cache_get_row(0,11,data); PlayerInfo[playerid][pPosY] = floatstr(data);
    cache_get_row(0,12,data); PlayerInfo[playerid][pPosZ] = floatstr(data);
    cache_get_row(0,13,data); PlayerInfo[playerid][pVW] = strval(data);
    cache_get_row(0,14,data); PlayerInfo[playerid][pInt] = strval(data);
    cache_get_row(0,15,data); PlayerInfo[playerid][pFraction] = strval(data);
    cache_get_row(0,16,data); PlayerInfo[playerid][pCarlic] = strval(data);
    cache_get_row(0,17,data); PlayerInfo[playerid][pBikelic] = strval(data);
    cache_get_row(0,18,data); PlayerInfo[playerid][pPlanelic] = strval(data);
    cache_get_row(0,19,data); PlayerInfo[playerid][pLKWlic] = strval(data);
    cache_get_row(0,20,data); PlayerInfo[playerid][pHelilic] = strval(data);
    cache_get_row(0,21,data); PlayerInfo[playerid][pHealth] = floatstr(data);
    cache_get_row(0,22,data); PlayerInfo[playerid][pArmour] = floatstr(data);
    cache_get_row(0,25,PlayerInfo[playerid][pRegdate]);
    TogglePlayerSpectating(playerid,0);
    SetPlayerScore(playerid,PlayerInfo[playerid][pLevel]);
    GivePlayerMoney(playerid,PlayerInfo[playerid][pMoney]);
    SetCameraBehindPlayer(playerid);
    SetSpawnInfo(playerid, 0, 0, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], 0.0, 0, 0, 0, 0, 0, 0);
    SetPlayerVirtualWorld(playerid,PlayerInfo[playerid][pVW]);
    SetPlayerInterior(playerid,PlayerInfo[playerid][pInt]);
    player_loged_in{playerid}=true;
    strdel(Query,0,STR_LEN);
    mysql_format(m_connect,Query,"UPDATE `accounts` SET `LastLogin` = NOW() WHERE `Name` = '%s'",PlayerName(playerid));
    mysql_function_query(m_connect,Query,false,"","");
    return SpawnPlayer(playerid);
    }
    public OnQueryError( errorid, error[], callback[], query[], connectionHandle ){
    printf("EID: %d | Error: %s | callback: %s | Query: %s", errorid, error, callback, query);
    return 1;
    }
    stock Databaseconnect()
    {
    if(mysql_ping(m_connect) == 1)return print("Verbindung hergestellt");
    else{
    m_connect = mysql_connect("localhost", "root", "samp_db", "");
    if(mysql_ping(m_connect) == 1)return print("Verbindung hergestellt");
    else{
    print("Verbindung fehlgeschlagen");
    SendRconCommand("exit");
    return 1;
    }
    }
    }
    stock SavePlayerData(playerid)
    {
    strdel(Query,0,STR_LEN);
    GetPlayerPos(playerid,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]);
    PlayerInfo[playerid][pInt] = GetPlayerInterior(playerid);
    PlayerInfo[playerid][pVW] = GetPlayerVirtualWorld(playerid);
    PlayerInfo[playerid][pMoney] = GetPlayerMoney(playerid);
    GetPlayerArmour(playerid, PlayerInfo[playerid][pArmour]);
    GetPlayerHealth(playerid, PlayerInfo[playerid][pHealth]);
    mysql_format(m_connect,Query,"UPDATE `accounts` SET `Name` = '%s', `Level` = '%d', `Admin` = '%d', `Donate` = '%d', `Money` = '%d', `Bank` = '%d', `X` = '%f', `Y` = '%f', `Z` = '%f', `VW` = '%d', `Interior` = '%d', `Fraction` = '%d', `Carlic` = '%d', `Bikelic` = '%d', `Planelic` = '%d', `LKWlic` = '%d', `Helilic` = '%d', `Health` = '%f', `Armour` = '%f', `Ban` = '%d' WHERE `Name` = '%s' ",PlayerName(playerid),PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonate],
    PlayerInfo[playerid][pMoney],PlayerInfo[playerid][pBank],PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ],PlayerInfo[playerid][pVW],PlayerInfo[playerid][pInt],PlayerInfo[playerid][pFraction],PlayerInfo[playerid][pCarlic],PlayerInfo[playerid][pBikelic],PlayerInfo[playerid][pPlanelic],PlayerInfo[playerid][pLKWlic],PlayerInfo[playerid][pHelilic],PlayerInfo[playerid][pHealth],PlayerInfo[playerid][pArmour],PlayerInfo[playerid][pBan],PlayerInfo[playerid][pName]);
    mysql_function_query(m_connect,Query,true,"","");
    printf("%d",strlen(Query));
    return 1;
    }
    stock CreateTables()
    {
    mysql_format(m_connect,Query,"CREATE TABLE IF NOT EXISTS `accounts`(`Name` varchar(20) NOT NULL,`Password` varchar(129) NOT NULL,`Age` int(3) NOT NULL,`Country` varchar(20) NOT NULL,`Level` int(10) NOT NULL,`Admin` int(10) NOT NULL,`Donate` int(2) NOT NULL,`Gender` varchar(10) NOT NULL,`Money` int(22) NOT NULL,`Bank` int(22) NOT NULL,`X` float NOT NULL,`Y` float NOT NULL,`Z` float NOT NULL,");
    mysql_format(m_connect,Query,"%s`VW` int(6) NOT NULL,`Interior` int(3) NOT NULL,`Rank` int(2) NOT NULL,`Fraction` int(2) NOT NULL,`Carlic` int(1) NOT NULL,`Bikelic` int(1) NOT NULL,`Planelic` int(1) NOT NULL,`LKWlic` int(1) NOT NULL,`Helilic` int(1) NOT NULL,`Health` float NOT NULL,`Armour` float NOT NULL,`Ban` int(1) NOT NULL,`RegDate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`LastLogin` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00')",Query);
    mysql_function_query(m_connect,Query,false,"","");
    return 1;
    }


    unterschied hier sind paar erweiterungen , spart memory und die Accounts werden gespeichert beim Serverausfall dennoch mit dem arbeiten der variabeln also ohne auslesen sollte er auch den rest bei restarts speichern was er auch tut nur halt eben paar andere elemente, Daher kann man auch ein Timer machen der
    die variabeln erneuert verknüpfbar mit einem anticheat

    Was dir fehlt ist das whirlpool plugin wegen dem hash das eine basic login und register welches ich mal geschrieben habe ich hab noch eine neuere Version
    die ich für jemand mal geschrieben habe von GTA Werk