Beiträge von Domain_26

    Jeffry: Hat leider nicht funktioniert


    Hab mal den Code gedebuggt:


    public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
    {
    if(IsBeingSpeced[playerid] == 1){
    print("Spieler wird beobachtet");
    for(new i=0;i<MAX_PLAYERS;i++){
    print("for-Schleife wird ausgeführt");
    if(spectatorid[i] == playerid){
    print("ID wird abgefragt");
    SetPlayerInterior(i,newinteriorid);
    print("Inter wird gewechselt");
    SetPlayerVirtualWorld(i,GetPlayerVirtualWorld(playerid));
    print("vWorld wurde geupdatet");
    }
    }
    }
    return 1;
    }


    Das hat die Konsole ausgespuckt:



    (Gut, dass ich MAX_PLAYERS vordefiniert habe)


    Es scheint wohl nichts fehlerhaft zu sein.

    Hey,


    habe ein Problem mit meine Spectator-System.
    Wenn der zu beobachtende Spieler das Interior und der virtuelle Welt wechselt, updatet das Specsystem bzw. ich werde nicht in das Interior oder in die virtuelle Welt gesetzt.
    (Ich sehe dann nur Himmel)


    Specbefehl:


    ocmd:tv(playerid, params[]){
    if(!SpielerInfo[playerid][pEingeloggt])return SendClientMessage(playerid,Grau,"Du bist nicht eingeloggt.");
    if(!IstAdmin(playerid, 1))return SendClientMessage(playerid,Grau,"Du hast nicht die benötigten Rechte für diesen Befehl.");
    {
    new pID;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,Gelb,"/tv [Spieler/ID]");
    if(pID == playerid)return SendClientMessage(playerid,Grau,"Du kannst Dich nicht selber beobachten.");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Grau,"Der Spieler ist nicht verbunden.");
    if(IsSpecing[playerid] == 1)return SendClientMessage(playerid,Grau,"Du bist bereits im Beobachtungsmodus.");
    GetPlayerPos(playerid,sx[playerid],sy[playerid],sz[playerid]);
    inter[playerid] = GetPlayerInterior(playerid);
    vWorld[playerid] = GetPlayerVirtualWorld(playerid);
    TogglePlayerSpectating(playerid,true);
    if(IsPlayerInAnyVehicle(pID) == 1){
    if(GetPlayerInterior(pID) > 0){
    SetPlayerInterior(playerid,GetPlayerInterior(pID));
    }
    if(GetPlayerVirtualWorld(pID) > 0){
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(pID));
    }
    PlayerSpectateVehicle(playerid,GetPlayerVehicleID(pID));
    }else{
    if(GetPlayerInterior(pID) > 0){
    SetPlayerInterior(playerid,GetPlayerInterior(pID));
    }
    if(GetPlayerVirtualWorld(pID) > 0){
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(pID));
    }
    PlayerSpectatePlayer(playerid,pID);
    }
    PlayerPlaySound(playerid,5201,0.0,0.0,0.0);
    new str[64],str1[64];
    format(str,sizeof(str),"Du beobachtest nun %s",SpielerName(pID));
    format(str1,sizeof(str1),"%s beobachtet nun %s",SpielerName(playerid),SpielerName(pID));
    SendClientMessage(playerid,Tuerkies,str);
    SendAdminChat(1,Hellgruen,str1);
    IsSpecing[playerid] = 1;
    IsBeingSpeced[pID] = 1;
    spectatorid[playerid] = pID;
    }
    return 1;
    }


    Callback


    public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
    {
    if(IsBeingSpeced[playerid] == 1){
    for(new i=0;i<MAX_PLAYERS;i++){
    if(spectatorid[i] == playerid){
    SetPlayerInterior(i,GetPlayerInterior(playerid));
    SetPlayerVirtualWorld(i,GetPlayerVirtualWorld(playerid));
    }
    }
    }
    return 1;
    }


    Habe es schon mit


    GetPlayerPos();


    Versucht, ist leider gescheitert.

    Hey,


    habe ein Problem mit "meinem" Spectator-System.
    Wenn der zu beobachtende Spieler das Interior und die virtuelle Welt wechselt updatet Spec nicht


    Code:


    public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
    {
    if(IsBeingSpeced[playerid] == 1){
    for(new i=0;i<MAX_PLAYERS;i++){
    if(spectatorid[i] == playerid){
    SetPlayerInterior(i,GetPlayerInterior(playerid));
    SetPlayerVirtualWorld(i,GetPlayerVirtualWorld(playerid));
    }
    }
    }
    return 1;
    }


    Mehr Infos im Hauptthread, wo ich es fast 1:1 auf mein Script übernommen habe (außer dem foreach alles gleich - habe es mit GetPlayerPos() versucht, geht nicht). Grund ist, dass der Codeschnipsel für einge verwirrend sein kann:


    http://forum.sa-mp.com/showthread.php?t=298656


    Mit freundlichen Grüßen
    Domain



    Käme über den vier Spawncoords nochmal vier Spawncoords, hieße es so:



    8+random(8);


    Oder?


    (Entschuldige für das verkackte Zitat, justsmartphonethings :thumbup: )

    Wie kann ich random() so verwenden, dass er beim Spawn genau die anzahl der Koordiaten wählt:
    (Wenn die Anzahl von anderen Koordiaten abweicht)


    Der Code:


    enum rpos
    {
    Float:rX,
    Float:rY,
    Float:rZ,
    Float:rA
    };


    new RandomSpawn[][rpos] =
    {
    {2170.1455,1619.1500,999.9766,268.7325},
    {2173.8379,1578.2926,999.9676,355.0020},
    {2206.3252,1551.2097,1008.0002,275.0152},
    {2197.7476,1611.7670,999.9689,270.7063},


    {-2024.7386,-109.2195,35.1596,0.2173},
    {-2015.4510,-121.6510,35.2182,91.6650},
    {-2015.0005,-137.1997,35.3009,89.6315},
    {-2018.5839,-178.4551,35.3203,22.8108},
    {-2091.4858,-176.1541,35.3203,83.7007},
    {-2091.5969,-111.5125,35.3203,354.6252},
    {-2042.5494,-112.4007,35.2064,262.4997},
    {-2046.2974,-173.9614,35.3203,309.6849},


    };


    So zum beispiel (4 SpawnCoords, 8 SpawnCoords)
    So das random() zwischen den 8 entscheidet nicht zwischen den obrigen 4


    Habe gehört, dass man drölf+random() machen muss.
    Kapier das ganze nicht :wacko:

    Ist das beabsichtigt, dass das Callback


    public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
    {
    return 1;
    }


    nich im Blank Script drin ist und man es selber hinzufügen muss?
    Ist das nur ein Einzelfall oder sind da mehrere Callbacks "versteckt"?


    (Falls das in dieses Forum nicht reinpasst, einfach verschieben :whistling:)

    Gutes Tutorial.


    Ich habe die Variante von Maddin in mein Script übernommen (stock mysql_GetInt, stock mysql_GetString usw.). :D


    Eine Frage:
    Warum ist Maddins Variante (Tutorial) "veraltet", beziehungsweise, ist diese Variante noch zu empfehlen, das mit dem Funtkionen erstellen, um die Spielerdaten zu holen?
    (Merke selber schon, dass mit Maddins Variante, der Login etwas länger dauert um die Spielerdaten zu laden, weiß nicht ob es an den Funktionen oder am MySQL Plugin (R5) liegt)

    Hey,


    ich habe ein Kill und Tode Textdraw geschrieben, das - offensichtlich - die Tode und Kills des Spielers anzeigt.
    Das Problem ist, der Textdraw wird nur bei mir angezeigt bzw. nur auf dem PC auf dem ich den Gamemode scripte.
    Ich habe auch einen anderen PC mit dem ich die Sachen teste, die ich nicht alleine testen kann.
    Und auf dem PC wird der Textdraw nicht angezeigt, obwohl meine Textdraw-Uhrzeit angezeigt wird


    Hier ist der Code:


    Textdrawerstellung und Variablen


    new Text:t_kills;
    new Text:t_tode;


    t_kills = TextDrawCreate(401.000000, 430.000000, "Kills:");
    TextDrawBackgroundColor(t_kills, 255);
    TextDrawFont(t_kills, 1);
    TextDrawLetterSize(t_kills, 0.609999, 1.399999);
    TextDrawColor(t_kills, -1);
    TextDrawSetOutline(t_kills, 0);
    TextDrawSetProportional(t_kills, 1);
    TextDrawSetShadow(t_kills, 1);

    t_tode = TextDrawCreate(493.000000, 430.000000, "Tode:");
    TextDrawBackgroundColor(t_tode, 255);
    TextDrawFont(t_tode, 1);
    TextDrawLetterSize(t_tode, 0.609999, 1.399999);
    TextDrawColor(t_tode, -1);
    TextDrawSetOutline(t_tode, 0);
    TextDrawSetProportional(t_tode, 1);
    TextDrawSetShadow(t_tode, 1);


    Timer für die Aktualisierung


    forward KillsTodeUpdate(playerid);


    SetTimer("KillsTodeUpdate",1000,1);


    public KillsTodeUpdate(playerid)
    {
    new kills[15],tode[15];
    format(kills,sizeof(kills),"Kills: %i",sInfo[playerid][Kills]);
    TextDrawSetString(t_kills,kills);
    TextDrawShowForPlayer(playerid,t_kills);

    format(tode,sizeof(tode),"Tode: %i",sInfo[playerid][Tode]);
    TextDrawSetString(t_tode,tode);
    TextDrawShowForPlayer(playerid,t_tode);
    return 1;
    }


    Ich weiß echt nicht was daran falsch sein soll, immerhin ist das, das selbe Prinzip wie bei der Uhr
    Ich hoffe ihr könnt mir helfen.


    Mit freundlichem Gruß
    Domain

    Hi,


    ich habe ein Problem mit meinem Skinauswahlsystem.
    Alle Skins werden nicht dargestellt außer dem von CJ und The Truth (Hippie), also Skin ID 0 und 1


    Hier ist der Code von dem ich vermute das er den Fehler verursacht:



    new Skinchange[MAX_PLAYERS];


    public OnPlayerConnect(playerid)
    {
    Skinchange[playerid] = 0;
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_SECONDARY_ATTACK)
    {
    if(Skinchange[playerid] == 1)
    {
    Skinchange[playerid]=0;
    SetCameraBehindPlayer(playerid);
    SpawnPlayer(playerid);
    TogglePlayerControllable(playerid, 1);
    }
    }

    if(newkeys == KEY_SPRINT)
    {
    if(Skinchange[playerid] == 1)
    {
    if(GetPlayerSkin(playerid) == 1)
    {
    SetPlayerSkin(playerid,299);
    }
    new Skin[MAX_PLAYERS];
    Skin[playerid]--;
    SetPlayerSkin(playerid, Skin[playerid]);
    GetPlayerSkin(playerid);
    }
    }
    if(newkeys == KEY_JUMP)
    {
    if(Skinchange[playerid] == 1)
    {
    if(GetPlayerSkin(playerid)==299)
    {
    SetPlayerSkin(playerid,1);
    }
    new Skin[MAX_PLAYERS];
    Skin[playerid]++;
    SetPlayerSkin(playerid, Skin[playerid]);
    GetPlayerSkin(playerid);
    }
    }
    return 1;
    }


    Ich hoffe ihr könnt mir weiterhelfen.


    Mit freundlichem Gruß
    Domain

    Hallo,


    Ich hab ein Problem mit dem Speichern des Grundes und der Name des Admins der den Ban ausgeführt hat
    Wer mein Thread "Timebanzeit läuft einfach weiter" gesehen hat merkt , dass der Grund und Der Name (Zensiert) angezeigt werden.
    Das bedeutet im Dialog stehen Grund und Adminname leer.


    Mögliche Codes die dieses Problem auslösen:


    ocmd:tban(playerid,params[])
    {
    if(!IstSpielerAdmin(playerid,3))return SendClientMessage(playerid,Grau,"[Fehler] Du hast nicht die benötigten Rechte für diesen Befehl.");
    {
    new pID;
    new zeit;
    new grund[64];
    new string[128];
    new tmptime;
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Rot,"Der Spieler ist nicht verbunden.");
    if(sscanf(params,"uis",pID,zeit,grund))return SendClientMessage(playerid,Gelb,"/tban [Spieler/ID] [Zeit] [Grund]");
    {
    format(string,sizeof(string),"%s wurde von %s für %i Minuten gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),zeit,grund);
    SendClientMessageToAll(Superhellrot,string);
    tmptime = gettime()+(60*zeit);
    SetPVarInt(pID,"Timeban",tmptime);
    new Spieler[128];
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",SpielerName(pID));
    {
    dini_Set(Spieler,"Timebangrund",grund);
    dini_Set(Spieler,"Timebanadmin",SpielerName(playerid));
    dini_IntSet(Spieler,"Timebanzeit",GetPVarInt(pID,"Timeban"));
    }
    Kick(pID);
    }
    }
    return 1;
    }


    ocmd:offban(playerid,params[])
    {
    new Spieler[64];
    new string[128];
    new offreason[64];
    new name[MAX_PLAYER_NAME];
    if(!IstSpielerAdmin(playerid,3))return SendClientMessage(playerid,Grau,"[Fehler] Du hast nicht die benötigten Rechte für diesen Befehl.");
    {
    if(sscanf(params,"ss",name,offreason))return SendClientMessage(playerid,Gelb,"/offban [Spielername] [Grund]");
    {
    format(string,sizeof(string),"%s wurde von %s offline gebannt. Grund: %s",name,SpielerName(playerid),offreason);
    SendClientMessageToAll(Rot,string);
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",name);
    if(fexist(Spieler))
    {
    dini_IntSet(Spieler,"Ban",1);
    dini_Set(Spieler,"Admin",SpielerName(playerid));
    dini_Set(Spieler,"Grund",offreason);
    }
    else
    {
    SendClientMessage(playerid,Rot,"Keine Spieler mit diesen Namen in der Datenbank gefunden.");
    }
    }
    }
    return 1;
    }


    ocmd:unban(playerid,params[])
    {
    new Spieler[64];
    new string[128];
    new name[MAX_PLAYER_NAME];
    if(!IstSpielerAdmin(playerid,3))return SendClientMessage(playerid,Grau,"[Fehler] Du hast nicht die benötigten Rechte für diesen Befehl.");
    {
    if(sscanf(params,"s",name))return SendClientMessage(playerid,Gelb,"/unban [Spieler]");
    format(string,sizeof(string),"*%s wurde von %s entbannt.",name,SpielerName(playerid));
    SendClientMessageToAll(Rot,string);
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",name);
    if(dini_Exists(Spieler))
    {
    dini_IntSet(Spieler,"Ban",0);
    dini_Unset(Spieler,"Reason");
    dini_Unset(Spieler,"Admin");
    }
    }
    return 1;
    }


    ocmd:ban(playerid,params[])
    {
    new pID;
    new reason[128];
    new string[256];
    if(!IstSpielerAdmin(playerid,3))return SendClientMessage(playerid,Grau,"[Fehler] Du hast nicht die benötigten Rechte für diesen Befehl.");
    {
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Rot,"Der Spieler ist nicht verbunden.");
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,Gelb,"/ban [Spieler/ID] [Grund]");
    {
    format(string,sizeof(string),"*%s wurde von %s vom Server gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(Rot,string);
    SetPVarInt(pID,"Ban",1);
    new Spieler[128];
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",SpielerName(pID));
    if(dini_Exists(Spieler))
    {
    dini_Set(Spieler,"Reason",reason);
    dini_Set(Spieler,"Admin",SpielerName(playerid));
    }
    Kick(pID);
    }
    }
    return 1;
    }


    new Spieler1[128];
    format(Spieler1,sizeof(Spieler1),"/Spieler/%s.txt",SpielerName(playerid));
    if(dini_Exists(Spieler1))
    {
    SetPVarInt(playerid,"Timeban",dini_Int(Spieler1,"Timebanzeit"));
    dini_Get(Spieler1,"Timebangrund");
    dini_Get(Spieler1,"Timebanadmin");
    }
    new time = gettime();
    if(time < GetPVarInt(playerid,"Timeban"))
    {
    new restzeit = (GetPVarInt(playerid,"Timeban") - time)/60;
    new string[384];
    format(string,sizeof(string),"Dein Account wurde wegen eines Regelverstoßes temporär gesperrt, mit ihm kann zurzeit nicht gespielt werden.\n\nWenn das nicht Dein Account ist, verwende einen anderen Nicknamen\nWenn Du zu Unrecht gesperrt wurdest, dann melde Dich bitte bei einem Admin\n\nGrund: %s\nDauer: %i Minute/n\nAdmin: %s",dini_Get(Spieler1,"Timebangrund"),restzeit,dini_Get(Spieler1,"Timebanadmin"));
    ShowPlayerDialog(playerid,BAN,DIALOG_STYLE_MSGBOX,"Script Server Unlimited - Temporärer Spielausschluss",string,"Okay","");
    return 0;
    }
    new bantext[384];
    new Spieler[64];
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",SpielerName(playerid));
    if(dini_Exists(Spieler))
    {
    dini_Get(Spieler,"Reason");
    dini_Get(Spieler,"Admin");
    SetPVarInt(playerid,"Ban",dini_Int(Spieler,"Ban"));
    }
    if(GetPVarInt(playerid,"Ban") !=0)
    {
    format(bantext,sizeof(bantext),"Dein Account wurde wegen eines Regelverstoßes gesperrt, mit ihm kann nicht mehr gespielt werden.\n\nWenn das nicht Dein Account ist, verwende einen anderen Nicknamen\nWenn Du zu Unrecht gesperrt wurdest, dann melde Dich bitte bei einem Admin\n\nGrund: %s\nDauer: permanent\nAusführender Admin: %s",dini_Get(Spieler,"Reason"),dini_Get(Spieler,"Admin"));
    ShowPlayerDialog(playerid,BAN,DIALOG_STYLE_MSGBOX,"Script Server Unlimited - Spielausschluss",bantext,"Okay","");
    return 0;
    }


    Ich bedanke mich schon im Vorraus


    Mit freundlichen Grüßen
    Domain_26


    EDIT: Ich bin wahrscheinlich der größte Vollidiot den es gibt :thumbup:. Hab beim Disconnect SpielerReset gemacht ...

    Nein,


    warte vielleicht zeige ich Dir noch das hier:


    new LoggedSkin[MAX_PLAYERS]


    public OnPlayerRequestClass(playerid, classid)
    {
    if(LoggedSkin[playerid] == 1)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    SetPlayerPos(playerid, 217.8752, -98.5620, 1005.2578);
    SetPlayerCameraPos(playerid, 216.1171, -100.3419, 1005.2578);
    SetPlayerCameraLookAt(playerid, 217.4201, -98.9890, 1005.2578);
    SetPlayerFacingAngle(playerid, 133.4082);
    SetPlayerInterior(playerid,15);
    SetPlayerVirtualWorld(playerid,i);
    return 1;
    }
    }
    else if(LoggedSkin[playerid] == 0)
    {
    new Spieler[64];
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",SpielerName(playerid));
    if(dini_Exists(Spieler))
    {
    SetSpawnInfo(playerid,0,dini_Int(Spieler,"Skin"),2000.4022, 1543.4606, 13.5859,270.5474, 1, 1, 0, 0, 0, 0);
    SpawnPlayer(playerid);
    return 1;
    }
    }
    return 0;
    }


    public OnPlayerRequestSpawn(playerid)
    {
    if(LoggedSkin[playerid] == 1)
    {
    LoggedSkin[playerid] = 0;
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerFacingAngle(playerid, 269.1425);
    SetPlayerInterior(playerid, 0);
    SetCameraBehindPlayer(playerid);
    return 1;
    }
    return 0;
    }


    public OnPlayerSpawn(playerid)
    {
    StopAudioStreamForPlayer(playerid);
    new string[64];
    format(string,sizeof(string),"~w~Willkommen~n~~b~%s",SpielerName(playerid));
    GameTextForPlayer(playerid,string,0,1);
    return 0;
    }


    Edit: Hat sich erledigt hab dieses SpawnPlayer und SetSpawnInfo bei SpielerLaden hingeschrieben

    Hey,


    Ich habe ein Problem beim Login (Spawn)


    Folgendes Szenario: Ich joine den Server, Login Dialog erscheint, Gebe zunächst kein Passwort ein, drücke den Button , was passiert? Ich spawne, aber der Login Dialog erscheint weiterhin (Da kein Passwort = Passwort falsch), auch beim Abbruch.
    Genauso ist es beim Time/Ban Dialog, Buttonklick, Spawn.
    Und ich weiß nicht was ich noch machen soll, return 0; o.ä funktioniert nicht.
    Register funktioniert hervorragend (bzw. kein Spawn beim Buttonresponse)


    Alle wahrscheinlichen Codes die dieses Problem verursachen:


    public OnPlayerConnect(playerid)
    {
    SpielerMitTimeban(playerid);
    new Spieler1[128];
    format(Spieler1,sizeof(Spieler1),"/Spieler/%s.txt",SpielerName(playerid));
    if(dini_Exists(Spieler1))
    {
    dini_Get(Spieler1,"Timebangrund");
    dini_Get(Spieler1,"Timebanadmin");
    }
    new time = gettime();
    if(time < GetPVarInt(playerid,"Timeban"))
    {
    new restzeit = (GetPVarInt(playerid,"Timeban") - time)/60;
    new string[384];
    format(string,sizeof(string),"Dein Account wurde wegen eines Regelverstoßes temporär gesperrt, mit ihm kann zurzeit nicht gespielt werden.\n\nWenn das nicht Dein Account ist, verwende einen anderen Nicknamen\nWenn Du zu Unrecht gesperrt wurdest, dann melde Dich bitte bei einem Admin\n\nGrund: %s\nDauer: %i Minute/n\nAdmin: %s",dini_Get(Spieler1,"Timebangrund"),restzeit,dini_Get(Spieler1,"Timebanadmin"));
    ShowPlayerDialog(playerid,BAN,DIALOG_STYLE_MSGBOX,"Script Server Unlimited - Temporärer Spielausschluss",string,"Okay","");
    return 0;
    }
    SpielerMitBan(playerid);
    if(GetPVarInt(playerid,"Ban") !=0)
    {
    new bantext[320];
    new Spieler[64];
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",SpielerName(playerid));
    if(dini_Exists(Spieler))
    {
    dini_Get(Spieler,"Reason");
    dini_Get(Spieler,"Admin");
    }
    format(bantext,sizeof(bantext),"Dein Account wurde wegen eines Regelverstoßes gesperrt, mit ihm kann nicht mehr gespielt werden.\n\nWenn das nicht Dein Account ist, verwende einen anderen Nicknamen\nWenn Du zu Unrecht gesperrt wurdest, dann melde Dich bitte bei einem Admin\n\nGrund: %s\nDauer: permanent\nAdmin: %s",dini_Get(Spieler,"Reason"),dini_Get(Spieler,"Admin"));
    ShowPlayerDialog(playerid,BAN,DIALOG_STYLE_MSGBOX,"Script Server Unlimited - Spielausschluss",bantext,"Okay","");
    return 0;
    }
    RemoveBuildingForPlayer(playerid, 8836, 2027.8828, 1552.1641, 11.2578, 0.25);
    RemoveBuildingForPlayer(playerid, 8978, 2028.7813, 1554.9453, 22.1094, 0.25);
    RemoveBuildingForPlayer(playerid, 3482, 2028.7500, 1552.9063, 23.7188, 0.25);
    RemoveBuildingForPlayer(playerid, 3482, 2028.7500, 1556.9844, 23.7188, 0.25);
    RemoveBuildingForPlayer(playerid, 9129, 2028.7656, 1554.9453, 33.5469, 0.25);
    RemoveBuildingForPlayer(playerid, 1503, 1998.0078, 1544.1953, 12.9609, 0.25);
    RemoveBuildingForPlayer(playerid, 8423, 2028.7813, 1554.9453, 22.1094, 0.25);
    RemoveBuildingForPlayer(playerid, 3434, 2028.7500, 1552.9063, 23.7188, 0.25);
    TextDrawShowForPlayer(playerid,Textdraw0);
    TextDrawShowForPlayer(playerid,Textdraw1);
    TextDrawShowForPlayer(playerid,Textdraw2);
    TextDrawShowForPlayer(playerid,Textdraw3);
    TextDrawShowForPlayer(playerid,Textdraw4);
    PlayAudioStreamForPlayer(playerid,"https://ronehothiphopdetroit.files.wordpress.com/2014/07/wiz-khalifa_you-and-your-friends_radio-edit.mp3");
    new cstring[128];
    format(cstring,sizeof(cstring),"%s [ID: %i] hat den Server betreten.",SpielerName(playerid),playerid);
    SendClientMessageToAll(Tuerkies,cstring);
    for(new i=0; i<25; i++)
    {
    SendClientMessage(playerid,-1,"");
    }
    new Spieler2[64],string[256];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler2,sizeof(Spieler2),"/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler2))
    {
    SendClientMessage(playerid,Blau,"Herzlich Willkommen zurück auf Script Server Unlimited");
    format(string,sizeof(string),"Willkommen zurück %s\n\nDein Account wurde in unserer Datenbank gefunden.\nGebe niemals dein Passwort weiter, auch nicht der Administration!\nBitte gebe nun dein Passwort ein um dich einzuloggen:",Sname);
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,"Script Server - Login",string,"Login","Abbrechen");
    }
    else
    {
    SendClientMessage(playerid,Blau,"Herzlich Willkommen auf Script Sever Unlimited");
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Script Server - Registrieren","Herzlich Willkommen auf Hurensohn Gaming.\n\nBitte wähle ein Passwort um Dir einen Account zu erstellen!","Registrieren","Abbrechen");
    }
    return 1;
    }


    stock SpielerLaden(playerid)
    {
    new Spieler[128];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    SetPlayerScore(playerid,dini_Int(Spieler,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spieler,"Money"));
    sSpieler[playerid][Adminlevel] = dini_Int(Spieler,"Adminlevel");
    sSpieler[playerid][Level] = dini_Int(Spieler,"Level");
    sSpieler[playerid][Team] = dini_Int(Spieler,"Team");
    sSpieler[playerid][Kills] = dini_Int(Spieler,"Kills");
    sSpieler[playerid][Deaths] = dini_Int(Spieler,"Deaths");
    SetPVarInt(playerid,"Mute",dini_Int(Spieler,"Mute"));
    SetPlayerSkin(playerid,dini_Int(Spieler,"Skin"));
    dini_Unset(Spieler,"Timebanadmin");
    dini_Unset(Spieler,"Timebangrund");
    dini_Unset(Spieler,"Timebanzeit");
    sSpieler[playerid][sLogin] = 1;


    }
    return 1;
    }


    stock Login(playerid,key[])
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(!strcmp(key,dini_Get(Spieler,"Passwort"),false))
    {
    for(new i=0; i<50; i++)
    {
    SendClientMessage(playerid,-1,"");
    }
    SpielerLaden(playerid);
    SendClientMessage(playerid,Blau,"Login erfolgreich . . . Spielerdaten werden geladen!");
    ShowAdminRangName(playerid);
    }
    else
    {
    new string[256];
    format(string,sizeof(string),"{FFFFFF}Willkommen zurück %s\n\nDein Account wurde in unserer Datenbank gefunden.\n\n{FFFF00}Das eingegebene Passwort ist falsch.\n\n{FFFFFF}Gebe niemals dein Passwort weiter, auch nicht der Administration!\nBitte gebe nun dein Passwort ein um dich einzuloggen:",SpielerName(playerid));
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,"Script Server - Login",string,"Login","Abbrechen");
    }
    return 0;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == TIMEBAN)
    {
    if(response == 1)
    {
    SendClientMessage(playerid,Rot,"|_____Die Verbindung wird nun getrennt_____|");
    Kick(playerid);
    return 1;
    }
    }
    if(dialogid == BAN)
    {
    if(response == 1)
    {
    SendClientMessage(playerid,Rot,"|_____Die Verbindung wird nun getrennt_____|");
    Kick(playerid);
    return 1;
    }
    }
    if(dialogid == LOGIN)
    {
    if(response == 1)
    {
    Login(playerid,MD5_Hash(inputtext));
    return 1;
    }
    if(response == 0)
    {
    SendClientMessage(playerid,Rot,"Du hast den Authenfizierungs Prozess abgebrochen . . .");
    Kick(playerid);
    return 1;
    }
    }
    if(dialogid == REGISTER)
    {
    if(response == 1)
    {
    if(strlen(inputtext)> 3)
    {
    Register(playerid,MD5_Hash(inputtext));
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Blau,"Dein Passwort muss mindestens 3 Zeichen lang sein");
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte wähle ein Passwort um dir einen Account zu erstellen!","Registrieren","Abbrechen");
    return 1;
    }
    }
    if(response == 0)
    {
    SendClientMessage(playerid,Rot,"Du hast den Registrierungsprozess abgebrochen.");
    Kick(playerid);
    return 1;
    }
    }
    return 1;
    }


    Ich hoffe Ihr könnt mir dabei helfen.


    Mit freundlichen Grüßen
    Domain_26

    Man muss die Variabeln zurücksetzen, denn man nehme an, Spieler A hat die ID 0, disconnected ( Stats werden nicht zurückgesetzt = Stats bleiben auf ID 0). Spieler B connected, bekommt die ID 0 (also die ID von Spieler A) bekommt somit auch die Stats(Variabeln) von Spieler A. Das ist dann unpraktisch wenn dieser Spieler (Spieler A) vor kurzem gebannt o.ä erhalten hat, denn dann würde jeder Spieler (Spieler B, C , D etc.) der die ID 0 bekäme ,gebannt werden.


    Das ist der Grund weshalb es nötig ist die Variabeln (i.d.F die Stats) zurück zu setzen.


    Zum Beispiel mit Hilfe eines stocks:


    stock SpielerReset(playerid)
    {
    sSpieler[playerid][Adminlevel] = 0;
    sSpieler[playerid][Level] = 0;
    //oder
    SetPVarInt(playerid,"Adminrang",0);
    SetPvarInt(playerid,"Level",0);
    return 1;
    }


    Und dann bei OnPlayerDisconnect/Connec einsetzen


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


    Hoffe ich konnte Dir das verständlich erklären


    Mit freundlichen Grüßen
    Domain_26