Beiträge von Templer

    Hab dir in dein Script eine neue Funktion eingebaut: UpdatePlayerAccount


    Diese Speichert die Spielerdaten ab, wenn der Spieler vom Server geht. Natürlich hab ich dir auch eingerichtet, dass das AdminLvl beim Connecten geladen wird... HF ^^

    Such mal unter dialogid == 1 nach folgender Zeile:


    format(Spieler[playerid][Passwort], MAX_PASSWORD_LENGTH, dini_Get(Spielerdatei,"Passwort"));


    Damit überträgst du das Passwort von der Datei in den String Spieler[playerid][Passwort]

    Oh ok, ja du hast Admin so definiert und ned pAdmin, habs geändert im Anhang. Und du, OnPlayerUpdate ist ein Callback der jede 500ms wenn nicht kürzer aufgerufen wird und nichts mit dem Speichern zu tun hat...

    Das OnDIalogResponse gefällt mir nicht xD Achja die #define bitte oben im Script einfügen!


    #define MAX_PASSWORD_LENGTH (128) //Bitte hier den Wert eingeben der beim enum von Spieler bei Passwort im [ ] steht!


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 0)
    {
    if(response)
    {
    new Spielerdatei[256];
    new SpielerName[MAX_PLAYER_NAME];
    if(!strlen(inputtext))return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, "Logge dich ein!", " ", "Login!", "Abbrechen!");
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    format(Spielerdatei,sizeof(Spielerdatei),"/Simon/%s.ini",SpielerName);
    format(Spieler[playerid][Passwort], MAX_PASSWORD_LENGTH, dini_Get(Spielerdatei,"Passwort"));
    if(strcmp(inputtext,Spieler[playerid][Passwort],false) == 0)
    {
    SendClientMessage(playerid,gruen,"Du hast dich erfolgreich eingeloggt!");
    }
    else
    {
    SendClientMessage(playerid,rot,"Falsches Passwort, du wurdest gekickt!");
    Kick(playerid);
    }
    }
    }
    if(dialogid == 1)//dialog wo er sein pw zum registerieren eingiebt
    {
    if(response == 1)
    {
    new Spielerdatei[64];
    new Name[MAX_PLAYER_NAME];
    Spieler[playerid][Admin] = 0;
    GetPlayerName(playerid,Name,sizeof(Name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Simon/%s.ini",Name);
    dini_Create(Spielerdatei);
    if(!strlen(inputtext))return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Registriere dich!", " ", "Registrieren!", "Abbrechen!");
    dini_Set(Spielerdatei,"Passwort",inputtext);
    dini_IntSet(Spielerdatei,"Admin",Spieler[playerid][Admin]);
    SendClientMessage(playerid,gruen,"Du hast dich erfolgreich Registriert!");
    }
    }
    return 1;
    }

    Ach ich depp, tut mir echt leid, hier der richtige Code...


    public check()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerAdmin(i)) continue;
    if(Spieler[i][eingeloggt] != 1) continue;
    if(IsPlayerInArea(i,-2989.536, 1763.359, 2977.858, 2989.536) ||
    IsPlayerInArea(i,-2989.536, -2942.825, 2977.858, -864.1628) ||
    IsPlayerInArea(i,-1237.855, -2942.825, 2977.858, 2989.536))
    {
    SendClientMessage(i,COLOR_RED, " CHEATER AN DIE WAND !!!!");
    Kick(i);
    }
    }
    return 1;
    }

    Sry ich schau so selten hier in dieses UnterForum ^^ Also deine Lösung ist ein Bool


    new bool:UsingCamera[MAX_PLAYERS];


    public OnPlayerConnect(playerid)
    {
    UsingCamera[playerid] = false;
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmd, "/camera", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader]== 13)
    {
    if(UsingCamera[playerid] == false && !PlayerToPoint(4.0,playerid,-441.3912,2593.4473,47.9643))
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist nicht im Kontrollzentrum !");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) {
    SendClientMessage(playerid, COLOR_WHITE, "BENUTZUNG: /camera [number 1 - 9] (0 = AUS)");
    return 1;
    }
    new number = strval(tmp);
    if(number < 0 || number > 9) { SendClientMessage(playerid, COLOR_GREY, " Camera Number can't be below 1 or above 6 !"); return 1; }
    TogglePlayerControllable(playerid, 0);
    GetPlayerPos(playerid, Unspec[playerid][Coords][0],Unspec[playerid][Coords][1],Unspec[playerid][Coords][2]);
    UsingCamera[playerid] = true;
    if(number == 1) { SetPlayerCameraPos(playerid, 118.1011,1931.3221,22.5527); SetPlayerCameraLookAt(playerid, 98.9656,1920.9819,18.2180); }
    else if(number == 2)
    {
    SetPlayerPos(playerid, -441.3912,2593.4473,47.9643);
    SetPlayerCameraPos(playerid, -384.0906,2455.7146,57.1729); SetPlayerCameraLookAt(playerid, -454.6434,2444.4929,47.8664);
    SetPlayerPos(playerid, -384.0906,2455.7146,37.1729);
    }
    else if(number == 3) { SetPlayerCameraPos(playerid, -375.5078,2572.4436,48.0439); SetPlayerCameraLookAt(playerid, -373.3245,2555.3127,39.1375);
    SetPlayerPos(playerid, -375.5078,2572.4436,28.0439);
    }
    else if(number == 4) { SetPlayerPos(playerid, -441.3912,2593.4473,47.9643);
    SetPlayerCameraPos(playerid, -313.5163,2489.6052,62.3611); SetPlayerCameraLookAt(playerid, -350.6290,2510.4980,36.3124);
    SetPlayerPos(playerid, -313.5163,2489.6052,62.3611);
    }
    else if(number == 5) { SetPlayerPos(playerid, -441.3912,2593.4473,47.9643);
    SetPlayerCameraPos(playerid, 1515.3293,-1689.2743,19.2422); SetPlayerCameraLookAt(playerid, 1536.3868,-1660.9712,13.5469);
    SetPlayerPos(playerid, 1515.3293,-1689.2743,5.2422);
    }
    else if(number == 6) {
    SetPlayerCameraPos(playerid, 1515.5198,-1642.0814,19.2422); SetPlayerCameraLookAt(playerid, 1534.4851,-1683.7422,13.3828);
    SetPlayerPos(playerid, 1515.5198,-1642.0814,5.2422);
    SetPlayerPos(playerid, -441.3912,2593.4473,47.9643);
    }
    else if(number == 7) { SetPlayerPos(playerid, -441.3912,2593.4473,47.9643);
    SetPlayerCameraPos(playerid, 1175.4746,-962.5681,50.6797); SetPlayerCameraLookAt(playerid, 1213.5614,-922.4760,42.9271);
    SetPlayerPos(playerid, 1175.4746,-962.5681,35.6797);
    }
    else if(number == 8) { SetPlayerPos(playerid, -441.3912,2593.4473,47.9643);
    SetPlayerCameraPos(playerid, 1235.1565,-743.5441,97.5103); SetPlayerCameraLookAt(playerid, 1247.2988,-766.9556,92.1002);
    SetPlayerPos(playerid, 1235.1565,-743.5441,77.5103);
    }
    else if(number == 9) { SetPlayerPos(playerid, -441.3912,2593.4473,47.9643);
    SetPlayerCameraPos(playerid, 1251.6777,-785.9006,93.2916); SetPlayerCameraLookAt(playerid, 1244.3627,-767.7976,91.9526);
    SetPlayerPos(playerid, 1251.6777,-785.9006,70.2916); }
    else if(number == 0)
    {
    SetPlayerPos(playerid, -441.3912,2593.4473,47.9643);
    UsingCamera[playerid] = false;
    MedicBill[playerid] = 0;
    TogglePlayerControllable(playerid, 1);
    SetSpawnInfo(playerid, PlayerInfo[playerid][pTeam], PlayerInfo[playerid][pModel], Unspec[playerid][Coords][0], Unspec[playerid][Coords][1], Unspec[playerid][Coords][2], 10.0, -1, -1, -1, -1, -1, -1);
    SpawnPlayer(playerid);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " You are not a Cop / Soldier !");
    return 1;
    }
    }
    return 1;
    }
    return 0;
    }


    Wenn du fragen bezüglich dem hast, bitte stellen...

    Mach es nach diesem Schema, da es viel Schonender ist und dein Code sinnlos eine Position abfragt xD


    public OnGameModeInit()
    {
    SetTimer("check", 100, 1); //Wobei ich eher 1000ms empfehlen würde...
    return 1;
    }



    forward check();
    public check()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerAdmin(i)) return 1;
    if(Spieler[i][eingeloggt] != 1) return 1;
    if(IsPlayerInArea(i,-2989.536, 1763.359, 2977.858, 2989.536) ||
    IsPlayerInArea(i,-2989.536, -2942.825, 2977.858, -864.1628) ||
    IsPlayerInArea(i,-1237.855, -2942.825, 2977.858, 2989.536))
    {
    SendClientMessage(i,COLOR_RED, " CHEATER AN DIE WAND !!!!");
    Kick(i);
    }
    }
    return 1;
    }

    SetTimerEx wird bei Funktionen verwendet die Parameter haben und SetTimer die keine haben... zB.:


    forward Test(playerid);
    public Test(playerid)
    {
    SendClientMessage(playerid, 0xFFFFFF00, "Kauf dir ein Reallife!");
    return 1;
    }
    Dann wäre SetTimerEx praktisch...


    SetTimerEx("Test", 1000, 0, "d", playerid);


    oder wenn dein public so aussieht:
    forward Test();
    public Test()
    {
    SendClientMessageToAll(0xFFFFFF00, "Kauf dir ein Reallife!");
    return 1;
    }
    dann reicht vollkommen SetTimer

    SetTimer("Test", 1000, 0);

    Auch wenn dieses Thema langsam in den GF Thread gehört


    if(strcmp(cmd, "/clear", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new member = PlayerInfo[playerid][pMember];
    new leader = PlayerInfo[playerid][pLeader];
    new rank = PlayerInfo[playerid][pRank];
    if(gTeam[playerid] == 2)
    {
    if (PlayerInfo[playerid][pRank] < 2) return SendClientMessage(playerid, COLOR_GRAD2, " Du benötigst mindestens Rang 2 dafür");
    if (!IsACopCar(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Du bist in keinem Polizei Auto");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "BENUTZUNG: /clear [playerid/PartOfName] [Anzahl der Wanteds]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "BENUTZUNG: /clear [playerid/PartOfName] [Anzahl der Wanteds]");
    return 1;
    }
    new wanted = strval(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selbst clearen!"); return 1; }
    if(wanted < 1 || wanted > 6) return SendClientMessage(playerid, COLOR_GREY, "Die zu löschenend Wanteds nicht kleiner als 1 oder höher als 6!");
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du hast die Wanted von %s gelöscht.", giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Polizist %s hat deine Wanteds gelöscht.", sendername);
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
    if(wanted > WantedLevel[giveplayerid]) WantedLevel[giveplayerid] = 0;
    else WantedLevel[giveplayerid] -= wanted;
    WantedPoints[giveplayerid] = 0;
    ClearCrime(giveplayerid);
    if(gTeam[giveplayerid]==4)
    {
    gTeam[giveplayerid] = 3;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Name in der Verbrecher Akte nicht gefunden.");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " You are not an Cop / FBI / National Guard !");
    }
    }//not connected
    return 1;
    }

    Hoffe du verstehst das xD


    //Ganz oben Script dies einfügen..
    new gCountDeleteCreatedVehicles = 0; //Erstelle Definition mit Wert 0, welche zum zählen der erstellten Autos dient!
    new gDeleteCreatedVehicles[50]; //Die Zahl ändern, wenn mehr als 50 Autos damit definiert wurden bzw weniger als 50 Autos ^^


    //Folgende Code muss dann dort eingeügt werden, wo du es verwendest!...
    gDeleteCreatedVehicles[gCountDeleteCreatedVehicles] = AddStaticVehicleEx (411,player_pos[0],player_pos[1],player_pos[2],player_pos[3],-1,-1,-1); //Fahrzeug ID wird in Definition 'gDeleteCreatedVehicles' abgelagert und die derzeit Freie Zahl von 'gCountDeleteCreatedVehicles' verwendet!
    gCountDeleteCreatedVehicles++; //Erhöhe die erstellten Fahrzeuge um 1 (dafür steht das ++)


    //Im Angegebenen Callback folgendes schreiben...
    public OnVehicleDeath(vehicleid, killerid)
    {
    new vehid;
    for(; vehid < gCountDeleteCreatedVehicles; vehid++) //Geht alle derzeit erstellten Fahrzeuge durch
    {
    if(vehicleid == gDeleteCreatedVehicles[vehid]) //Wenn das zerstörte Fahrzeug die gleiche ID hat wie vom Fahrzeug das erstellt wurden ist
    {
    DestroyVehicle(gDeleteCreatedVehicles[vehid]); //Zerstöre Fahrzeug
    break; //Brich Schleife ab und führe restlichen Codes vom OnVehicleDeath durch
    }
    }
    return 1;
    }

    Versuch das mal hier, ka ob das geht ^^


    if(strcmp(cmd, "/clear", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new member = PlayerInfo[playerid][pMember];
    new leader = PlayerInfo[playerid][pLeader];
    new rank = PlayerInfo[playerid][pRank];
    if(gTeam[playerid] == 2)
    {
    if (IsPlayerInVehicle(IsACop))
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Du bist in keinem Polizei Auto");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "BENUTZUNG: /clear [playerid/PartOfName] [Anzahl der Wanteds]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "BENUTZUNG: /clear [playerid/PartOfName] [Anzahl der Wanteds]");
    return 1;
    }
    new wanted = strval(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selbst clearen!"); return 1; }
    if(wanted < 1 || wanted > 6) return SendClientMessage(playerid, COLOR_GREY, "Die zu löschenend Wanteds nicht kleiner als 1 oder höher als 6!");
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du hast die Wanted von %s gelöscht.", giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Polizist %s hat deine Wanteds gelöscht.", sendername);
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
    if(wanted > WantedLevel[giveplayerid]) WantedLevel[giveplayerid] = 0;
    else WantedLevel[giveplayerid] -= wanted;
    WantedPoints[giveplayerid] = 0;
    ClearCrime(giveplayerid);
    if(gTeam[giveplayerid]==4)
    {
    gTeam[giveplayerid] = 3;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Name in der Verbrecher Akte nicht gefunden.");
    }
    }
    else if(member == 13||member == 13||leader == 13||leader == 13)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "BENUTZUNG: /clear [playerid/PartOfName]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "BENUTZUNG: /clear [playerid/PartOfName] [Anzahl der Wanteds]");
    return 1;
    }
    new wanted = strval(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "You cannot Clear yourself!"); return 1; }
    if(wanted < 1 || wanted > 6) return SendClientMessage(playerid, COLOR_GREY, "Die zu löschenend Wanteds nicht kleiner als 1 oder höher als 6!");
    if(rank < 4) { SendClientMessage(playerid, COLOR_GREY, " You need Rank 4 to clear someone's Wanted Points + Records !"); return 1; }
    if(GetPlayerMoney(playerid) < 5000) { SendClientMessage(playerid, COLOR_GREY, " You need $5000 to Clear your Family Member !"); return 1; }
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(member > 0)
    {
    if(PlayerInfo[giveplayerid][pMember] != member)
    {
    SendClientMessage(playerid, COLOR_GREY, " That player is not in your Family !");
    return 1;
    }
    format(string, sizeof(string), "* You cleared the Records and Wanted Points of %s for $5000.", giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Family Member %s with Rank %d, has cleared your Records and Wanted Points.", sendername, rank);
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
    }
    else if(leader > 0)
    {
    if(PlayerInfo[giveplayerid][pMember] != leader)
    {
    SendClientMessage(playerid, COLOR_GREY, " That player is not in your Family !");
    return 1;
    }
    format(string, sizeof(string), "* You cleared the Records and Wanted Points of %s for $5000.", giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Family Leader %s, has cleared your Records and Wanted Points.", sendername);
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
    }
    WantedPoints[giveplayerid] = 0;
    if(wanted > WantedLevel[giveplayerid]) WantedLevel[giveplayerid] = 0;
    else WantedLevel[giveplayerid] -= wanted;
    ClearCrime(giveplayerid);
    GivePlayerMoney(playerid, -500000);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Invalid ID/Name!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " You are not an Cop / FBI / National Guard / Family Member !");
    }
    }//not connected
    return 1;
    }

    folgendes ganz oben in dein Script auch einfügen:


    #if !defined dcmd
    #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
    #endif


    und schick mir dein OnPlayerCommandText Callback, wenn noch Fehler vorhanden sind

    Probiers mal so:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmd, "/fcrespawncars", true) == 0 || strcmp(cmd, "/fsrc", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pLeader] == 11)
    {
    new bool:unwanted[CAR_AMOUNT];
    for(new player=0; player<MAX_PLAYERS; player++)
    {
    if(IsAFSCar(GetPlayerVehicleID(player))) unwanted[GetPlayerVehicleID(player)]=true;
    }
    for(new car = 1; car <= CAR_AMOUNT; car++)
    {
    if(!unwanted[car]) SetVehicleToRespawn(car);
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "Fahrschule: %s hat alle unbesetzten Fahrschul Autos respawnt.", sendername);
    BroadCast(COLOR_WHITE,string);
    }
    return 1;
    }
    }
    return 1;
    }
    und der folgende public sollte auch so aussehen


    public IsAFSCar(carid)
    {
    for(new vehid = 0; vehid < sizeof(fsCars); vehid++)
    {
    if(carid == fsCars[vehid]) return true;
    }
    return false;
    }