Beiträge von Pille

    Wieso?


    Dann speichert er 0 in die Variable, sollte doch normal funktionieren...
    Dann gibt er ihm 10 Leben, er ist aber schon tot, er respawnt wieder...


    Ich versteh den Sinn nicht sorry ^^

    Darf ich dich fragen, Red Jocker, warum du in einer If-Abfrage die
    Leben des Spielers in die Variable speicherst?


    Und warum du so eine seltsame Formatierung hast...



    stock RJ_AddHealth(playerid, Float:health)
    {
    new Float:player_Health;
    GetPlayerHeahtl(playerid,player_Health);
    SetPlayerHealth(playerid, player_Health+health);
    return 1;
    }
    So wäre der stock kürzer und doch genau dasselbe, oder?



    Die Variable müsste eigentlich "Darfspielerschreiben" heißen.
    Wenn er NICHT reden darf, bekommt er die Nachricht "Du darfst nur alle 60 Sekunden schreiben".
    Wenn er reden darf, redet er und startet dabei den Timer.
    Von nun an darf er 60 Sekunden nicht reden, also wird die Variable "Darfspielerschreiben" auf false gsetzt.


    versucht der User jetzt mit /h zu schreiben, kommt die SendClientMessage und das wars.
    Er darf nicht /h schreiben.


    Nachdem 60 Sekunden vorbei sind wird die Variable wieder auf false gsetzt,
    damit der Spieler wieder schreiben kann.

    Du musst einen Timer an dem Zeitpunkt starten, wo er etwas geschrieben hat.


    SetTimerEx("htimer",60000,false,"i",playerid);


    Dann musst einen neuen Public erstellen.


    forward htimer(playerid);
    public htimer(playerid)
    {
    return 1;
    }



    Wenn der Timer abgelaufen ist, darf er wieder schreiben.
    Dafür benötigen wir eine Variable.


    new bool:darfspielerschreiben[MAX_PLAYERS];


    //Bei dem /h Command:
    if(darfspielerschreiben[playerid]==true) return SendClientMessage(playerid,COLOR_RED,"Du darfst nur alle 60 Sekunden schreiben.");
    SetTimerEx("htimer",60000,false,"i",playerid);
    darfspielerschreiben[playerid]=true;


    // Bei dem Timer:
    forward htimer(playerid);
    public htimer(playerid)
    {
    darfspielerschreiben[playerid]=false;
    return 1;
    }

    Wenn man stirbt, speicherst du die Position des Spielers in einer Variable.
    Wenn ein Sanitäter online ist, dann setzt du den Spieler nach dem respawnen
    an die Koordinaten mit einer Animation und rufst den Notdienst.

    if(strcmp(cmd, "/repair", true) == 0)
    {
    if(JobDuty[playerid] != 1) return 1;
    if(PlayerInfo[playerid][pLeader] != 18 && PlayerInfo[playerid][pMember] != 18) return 1;
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "Benutze: /repair [SpielerID] [Preis]");
    new playa,money;
    playa = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    money = strval(tmp);
    if(money < 1 || money > 2000) return SendClientMessage(playerid, COLOR_GREY, "Repairpreis kann max. $2000 betragen!");
    if(!IsPlayerConnected(playa)) return SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler ist offline.");
    if(playa == INVALID_PLAYER_ID) return 1;
    if(!ProxDetectorS(8.0, playerid, playa)|| !IsPlayerInAnyVehicle(playa)) return SendClientMessage(playerid, COLOR_GREY, "Spieler nicht in deiner Nähe.");
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du bietest %s an sein Auto für $%d zu reparieren.",giveplayer,money);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Mechaniker %s bietet dir an dein Auto für $%d zu reparieren, (Benutze /accept repair) zum akzteptieren.",sendername,money);
    SendClientMessage(playa, COLOR_LIGHTBLUE, string);
    RepairOffer[playa] = playerid;
    RepairPrice[playa] = money;
    return 1;
    }


    Das wäre so meine Lösungsvariante..

    //----------------------------------[Betreten]-----------------------------------------------//
    new psender[MAX_PLAYER_NAME];
    new string2[200];
    GetPlayerName(playerid, psender, sizeof(psender));
    if(strfind(psender,"_",false)==-1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "Dein Name ist nicht in diesem Style: Name_Vorname");
    Kick(playerid);
    }
    format(string2, sizeof(string2), "**{E1BA4F}%s {99989C}hat den Server betreten.{FFFFFF}", psender);
    SendClientMessageToAll(COLOR_WHITE, string2);
    //---------------------------------------------------------------------------------//


    Ich mach peinliche Fehler sorry ^^

    Du speicherst die Position von Spieler (Beispiel: GTAzocker) in einer Variable.
    Dann erstellst du genau an dem Punkt, wo der Spieler GTAzocker sich befindet
    einen Checkpoint für ihn. Er ist in dem Checkpoint, deswegen wird der Callback
    "OnPlayerEnterCheckpoint" aufgerufen.

    Du speicherst die Koordinaten eines Spielers und setzt
    an dieser Stelle einen Checkpoint.


    Dannach wird der Callback "OnPlayerEnterCheckpoint" aufgerufen,
    was steht dadrin?

    //----------------------------------[Betreten]-----------------------------------------------//
    new psender[MAX_PLAYER_NAME];
    new string2[200];
    GetPlayerName(playerid, psender, sizeof(psender));
    if(!strfind(name,"_",false)!=-1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "Dein Name ist nicht in diesem Style: Name_Vorname");
    Kick(playerid);
    }
    format(string2, sizeof(string2), "**{E1BA4F}%s {99989C}hat den Server betreten.{FFFFFF}", psender);
    SendClientMessageToAll(COLOR_WHITE, string2);
    //---------------------------------------------------------------------------------//

    Fast, lösch ein "if(!strfind(name,"_",false)!=-1)" und rücke die Zeilen noch richtig ein.


    Also so:



    public OnPlayerConnect(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(name,sizeof(name));
    if(!strfind(name,"_",false)!=-1)
    {
    Kick(playerid);
    }
    return 1;
    }

    Der Spieler connected.


    Du musst nun prüfen ob in seinem Namen ein "_" enthalten ist.


    Erstmal den Namen des Spielers in einen String speichern:
    new name[MAX_PLAYER_NAME];
    GetPlayerName(name,sizeof(name));


    Nun musst du mit dem Befehl strfind ein _ suchen.


    if(!strfind(name,"_",false)!=-1)


    name = Den String den du durchsuchen möchtest
    "_" = Das Wort/Zeichen dass du suchen möchtest.
    false = Groß-und Kleinschreibung beachten
    ! = Wenn er das NICHT findet!


    if(!strfind(name,"_",false)!=-1)
    {
    Kick(playerid);
    }