Beiträge von Uppermost

    Bist mit Sicherheit kein fortgeschrittener Scripter wenn du sowas nicht weißt, auf jeden Fall legst du den Spawn selber fest mit den Koordinaten. Die findest du raus, wenn du ingame /save eingibst.

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


    #include <a_samp>


    #if defined FILTERSCRIPT



    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" server bei xxsniper");
    print("--------------------------------------\n");
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    #else


    main()
    {
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
    }


    #endif







    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/area51", cmdtext, true, 10) == 0)
    {
    SetPlayerPos(playerid,210.9240,1905.7544,17.6406)
    return 1;
    }
    return 0;
    }

    Zitat

    Uppermost:
    Was sagt der Mysql Log? Frage am besten ab ob der Spieler connected ist und setze einen Timer, der den Server nach 5 Sekunden neustartet, damit der Server alle Spieler schafft.

    Werde ich probieren, danke-

    Werde ich auch machen, falls der Timer nicht klappt
    Der Timer hat tatsächlich funktioniert, wäre nicht drauf gekommen^^ Danke

    Wenn ich /restart eingebe setzen sich Stats wie Geld,Level etc. zurück. Hier der Befehl:
    ocmd:restart(playerid,params[])
    {
    if(pInfo[playerid][Adminlevel]<6) return SendClientMessage(playerid,Weiss,"Diesen Befehl gibt es nicht! Benutze '/help' oder '/sup'");
    SendClientMessageToAll(Weiss,"INFO: Der Server wird neu gestartet!");
    new query[128],iname[MAX_PLAYER_NAME],gametext[64];
    format(gametext,sizeof(gametext),"Server wird neu gestartet Bitte warten...");
    GameTextForAll(gametext,5,1);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    GetPlayerName(i,iname,sizeof(iname));
    format(query,sizeof(query),"UPDATE user SET banned='%d',adminlevel='%d',level='%d',money='%d',faction='%d',rank='%d',wanteds='%d' WHERE username='%s'",pInfo[i][Banned],pInfo[i][Adminlevel],pInfo[i][Level],GetPlayerMoney(i),pInfo[i][Fraktion],pInfo[i][Rang],pInfo[i][Wanteds],iname);
    mysql_function_query(dbhandle,query,false,"","");
    }
    SendRconCommand("gmx");
    return 1;
    }

    Eigentlich werden doch alle Spieler gespeichert vor dem GMX Command, doch das klappt hier irgendwie nicht? die Werte in pInfo werden übrigens nach dem Logindialog gefüllt:
    public PasswortAbfrage(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows>0)
    {
    pInfo[playerid][Logged] = 1;
    pInfo[playerid][Level] = cache_get_field_content_int(0,"level",dbhandle);
    pInfo[playerid][Geschlecht] = cache_get_field_content_int(0,"sex",dbhandle);
    pInfo[playerid][Alter] = cache_get_field_content_int(0,"age",dbhandle);
    pInfo[playerid][Adminlevel] = cache_get_field_content_int(0,"adminlevel",dbhandle);
    pInfo[playerid][Geld] = cache_get_field_content_int(0,"money",dbhandle);
    pInfo[playerid][Fraktion] = cache_get_field_content_int(0,"faction",dbhandle);
    pInfo[playerid][Rang] = cache_get_field_content_int(0,"rank",dbhandle);
    pInfo[playerid][Wanteds] = cache_get_field_content_int(0,"wanteds",dbhandle);
    //Sterne
    if(pInfo[playerid][Wanteds] >=10 && pInfo[playerid][Wanteds]<20) SetPlayerWantedLevel(playerid,1);
    if(pInfo[playerid][Wanteds] >=20 && pInfo[playerid][Wanteds]<30) SetPlayerWantedLevel(playerid,2);
    if(pInfo[playerid][Wanteds] >=30 && pInfo[playerid][Wanteds]<40) SetPlayerWantedLevel(playerid,3);
    if(pInfo[playerid][Wanteds] >=40 && pInfo[playerid][Wanteds]<50) SetPlayerWantedLevel(playerid,4);
    if(pInfo[playerid][Wanteds] >=50 && pInfo[playerid][Wanteds]<69) SetPlayerWantedLevel(playerid,5);
    if(pInfo[playerid][Wanteds] ==69) SetPlayerWantedLevel(playerid,6);
    TextDrawShowForPlayer(playerid, Time), TextDrawShowForPlayer(playerid, Date);
    SetPlayerScore(playerid,pInfo[playerid][Level]);
    new altmoney = GetPlayerMoney(playerid);
    GivePlayerMoney(playerid,-altmoney);
    GivePlayerMoney(playerid,pInfo[playerid][Geld]);
    SetPVarInt(playerid,"Speichern",1);
    SetSpawnInfo(playerid,0,29,-1969.4128,137.6455,27.6875,91.5533,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    }
    else
    {
    SetPVarInt(playerid,"badlogin",GetPVarInt(playerid,"badlogin")+1);
    if(GetPVarInt(playerid,"badlogin")<3)
    {
    SendClientMessage(playerid,Rot,"Dieses Passwort war falsch!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN1,DIALOG_STYLE_PASSWORD,"Login","Dein Passwort:","OK","Abbrechen");
    }
    if(GetPVarInt(playerid,"badlogin") >=3)
    {
    SendClientMessage(playerid,Rot,"Du wurdest gekickt, weil du dein Passwort dreimal falsch eingegeben hast!");
    Kick(playerid);
    }
    }
    return 1;
    }

    Ich mag schlichte Designs, gefällt mir sehr gut. Nur finde ich, dass es eher ein Hintergrund als ein Logo ist :D Vlt könntest du nur das Dreieck benutzen und im Hintergrund einen Verlauf oder so nutzen.. Das gibt nen guten Effekt! 7/10

    Gespeichert wird beim Disconnect
    public OnPlayerDisconnect(playerid, reason)
    {
    TextDrawHideForPlayer(playerid, Time), TextDrawHideForPlayer(playerid, Date);
    new query[128],pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof(pname));
    format(query,sizeof(query),"UPDATE user SET banned ='%d',adminlevel='%d',level='%d',money='%d',faction='%d',rank='%d',wanteds='%d' WHERE username='%s'",pInfo[playerid][Banned],pInfo[playerid][Adminlevel],pInfo[playerid][Level],pInfo[playerid][Geld],pInfo[playerid][Fraktion],pInfo[playerid][Rang],pInfo[playerid][Wanteds],pname);
    mysql_function_query(dbhandle,query,false,"","");
    pInfo[playerid][Logged] = 0;
    DeleteTicket(playerid);
    return 1;
    }

    Wenn ich connecte und drei mal mein Passwort falsch eingebe, wird in der mySQL DB meine Stats(Level,Adminlevel,Geld,Wanteds) zurückgesetzt... was kann ich da tun?
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    switch(dialogid)
    {
    case DIALOG_LOGIN1:
    {
    if(response)
    {
    new query[256],passwort[40];
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT username,password,sex,age,adminlevel,level,money,faction,rank,wanteds FROM user WHERE username='%s' AND password='%s'",pname,passwort);
    mysql_function_query(dbhandle,query,true,"PasswortAbfrage","i",playerid);
    }
    else
    {
    SendClientMessage(playerid,Gelb,"Gib ein Passwort ein!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN1,DIALOG_STYLE_PASSWORD,"Login","Dein Passwort:","OK","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    public PasswortAbfrage(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows>0)
    {
    pInfo[playerid][Logged] = 1;
    pInfo[playerid][Level] = cache_get_field_content_int(0,"level",dbhandle);
    pInfo[playerid][Geschlecht] = cache_get_field_content_int(0,"sex",dbhandle);
    pInfo[playerid][Alter] = cache_get_field_content_int(0,"age",dbhandle);
    pInfo[playerid][Adminlevel] = cache_get_field_content_int(0,"adminlevel",dbhandle);
    pInfo[playerid][Geld] = cache_get_field_content_int(0,"money",dbhandle);
    pInfo[playerid][Fraktion] = cache_get_field_content_int(0,"faction",dbhandle);
    pInfo[playerid][Rang] = cache_get_field_content_int(0,"rank",dbhandle);
    pInfo[playerid][Wanteds] = cache_get_field_content_int(0,"wanteds",dbhandle);
    //Sterne
    if(pInfo[playerid][Wanteds] >=10 && pInfo[playerid][Wanteds]<20) SetPlayerWantedLevel(playerid,1);
    if(pInfo[playerid][Wanteds] >=20 && pInfo[playerid][Wanteds]<30) SetPlayerWantedLevel(playerid,2);
    if(pInfo[playerid][Wanteds] >=30 && pInfo[playerid][Wanteds]<40) SetPlayerWantedLevel(playerid,3);
    if(pInfo[playerid][Wanteds] >=40 && pInfo[playerid][Wanteds]<50) SetPlayerWantedLevel(playerid,4);
    if(pInfo[playerid][Wanteds] >=50 && pInfo[playerid][Wanteds]<69) SetPlayerWantedLevel(playerid,5);
    if(pInfo[playerid][Wanteds] ==69) SetPlayerWantedLevel(playerid,6);
    TextDrawShowForPlayer(playerid, Time), TextDrawShowForPlayer(playerid, Date);
    SetPlayerScore(playerid,pInfo[playerid][Level]);
    new altmoney = GetPlayerMoney(playerid);
    GivePlayerMoney(playerid,-altmoney);
    GivePlayerMoney(playerid,pInfo[playerid][Geld]);
    SetSpawnInfo(playerid,0,29,-1969.4128,137.6455,27.6875,91.5533,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    }
    else
    {
    SetPVarInt(playerid,"badlogin",GetPVarInt(playerid,"badlogin")+1);
    if(GetPVarInt(playerid,"badlogin")<3)
    {
    SendClientMessage(playerid,Rot,"Dieses Passwort war falsch!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN1,DIALOG_STYLE_PASSWORD,"Login","Dein Passwort:","OK","Abbrechen");
    }
    if(GetPVarInt(playerid,"badlogin") >=3)
    {
    SendClientMessage(playerid,Rot,"Du wurdest gekickt, weil du dein Passwort dreimal falsch eingegeben hast!");
    Kick(playerid);
    }
    }
    return 1;
    }
    Andere Frage: Wird bei einem Kick OnPlayerDisconnect aufgerufen? Falls ja, dort werden die Stats gespeichert, aber somit auch bei einem Kick (das soll nicht so sein).. Wie könnte ich das beheben?

    Ich habe in meinem registersystem 3 Dialoge eingebaut. Wenn ein User beispielsweise ein Passwort zum registrieren eingibt, bei der Geschlechtsauswahl aber abbricht, wie kann ich diesen dann löschen?
    (BlueG mySQL)
    Momentan sieht die Query so aus, klappt aber nicht:
    format(query,sizeof(query),"DELETE FROM user * WHERE username='%s'",pname);
    pname ist definiert weiter oben