Beiträge von Hagi

    Ist auch mal was, nicht immer nur Maps am BSn etc zu machen sondern einfach mal Map zu entbuggen.


    10/10, da man nichts vom gemappten wirklich sieht. Sehr sauber.


    Aber die Map wurde verwendet in einem Missionsvideo wo Carl aus Angel Pine das erste mal Cathelina trifft. Er wurde von Cesar dort hin geschickt.

    #define betakey "hierderbetakey in die anführungszeichen"
    #define betakeydialog


    OnPlayerConnect
    {
    ShowPlayerDialog(playerid,betakeydialog,DIALOG_STYLE_INPUT,"Betakey","Gebe den BETA-KEY an\n\n\n\n","Absenden","Abbrechen");
    }


    OnDialogResponse
    {
    if(dialogid == betakeydialog)
    {
    if(response == 0)
    {
    Kick(playerid);
    }
    if(response == 1)
    {
    new laenge;
    laenge = strlen(inputtext);
    if(strcmp(inputtext,betakey,false)==0 && laenge != 0)
    {
    }
    else
    {
    Kick(playerid);
    }
    }
    }
    }

    Der stock von Neo PHoenix ist doch perfekt


    stock Sprache(playerid,color,const string[],const string2[])
    {
    if(SpielerInfo[playerid][Sprache] == 1) { SendClientMessage(playerid, Farbe, string); }
    if(SpielerInfo[playerid][Sprache] == 2) { SendClientMessage(playerid, Farbe, string2); }
    }


    Da hat man nicht bei jedem SendClientMessage ne Zeilenlange Abfrage sondern nur ein mal.
    Außerdem muss man sowohl den deutschen als auch den englischen Text schreiben, denn übersetzten kann Pawo nicht.
    Daher ist der stock bestens für das Sprache-Problem geeignet

    Das hat nichts mit dem Inhalt zu tun, das Zeilenende von Pawno ist einfach erreicht.
    Da bringt es auch nichts die zu Reservierenden Byte zu erhöhen, denn das bringt nix und frisst einfach nur Reccourcen.


    Teil den einen String in 2-3 Strings auf und häng den vorherigen String einfach mit "%s",string1-2-3 ...); an den nächsten an und geb zum Schluss nur den letzten String aus

    #define maxskins 288
    for(new i = 0;i<maxskins;i++)
    {
    AddPlayerClass(i,x,y,z,rot,......
    }

    Sollte eigentlich funktionieren, probier das mal

    Kann der Temp Ban so funktionieren oder könnte in anderen Zeit verhältnissen die aktuelle Zeit kleiner als die Banzeit sein ?
    Wenn es so nicht funktionniert, wie kann ich es dann machen ?


    OnPlayerConnect


    if(GetPVarInt(playerid,TBAN_KEY) >= 1)
    {
    new year,month,day,hour,minute,second,time;
    getdate(year,month,day);
    gettime(hour,minute,second);
    time = year+month+day+hour;

    if(GetPVarInt(playerid,TBAN_KEY) > time)
    {
    SendClientMessage(playerid,lila,"Tempban noch aktiv");
    Kick(playerid);
    }
    }



    dcmd_tban(playerid,params[])
    {
    new zielid,zeit,grund[128];


    if(sscanf(params, "uds",zielid,zeit,grund))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /tban [ID] [Stunden] [Grund]");
    }


    if(GetPVarInt(playerid,ADMIN_KEY) >= 4)
    {
    if(!IsPlayerConnected(zielid))
    {
    SendClientMessage(playerid,rot,"Es existiert kein Spieler mit dieser ID");
    }
    else
    {
    new admin[MAX_PLAYER_NAME];
    new string[128];
    GetPlayerName(playerid,admin,sizeof(admin));
    format(string,sizeof(string),"Du wurdest von Admin %s für %d Stunden gebannt. Grund: %s",admin,zeit,grund);
    SendClientMessage(zielid,lila,string);


    new string2[128];
    new gekickt[MAX_PLAYER_NAME];
    GetPlayerName(zielid,gekickt,sizeof(gekickt));
    format(string2,sizeof(string2),"Admin-Command: Admin %s hat %s für %d Stunden gebannt. Grund: %s",admin,gekickt,zeit,grund);


    new year,month,day,hour,minute,second,bisban;
    getdate(year,month,day);
    gettime(hour,minute,second);
    bisban = year+month+day+hour+zeit;


    SetPVarInt(playerid,TBAN_KEY,bisban);


    SendClientMessageToAll(lila,string2);


    admincmdlog(string2);
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"Du besitzt nicht die nötige Einstufung zur Ausführung dieses Befehls");
    }
    return 1;
    }

    Als erstes
    funktionsname != variablenname


    zweitens
    wenn du schon playerid verwendest sollte die variable auch playerbezogen sein



    forward test(playerid);
    new test2[MAX_PLAYERS] = 100;// darf nicht wie der forward heißen und spielerbezogen wenn du willst || alternativ SetPVarInt


    dann zum abziehen


    public test(playerid)
    {
    test[playerid] --;
    return 1;
    }


    oder


    public test(playerid)
    {
    test[playerid] -= 1;
    return 1;
    }

    Hiermit möchte ich euch mein Badwords - System vorstellen


    Information: Es kann beliebig viele Badwords enthalten, welche sowohl über die Datei , als auch über das Game selber geändert werden können.


    Anwendung:


    1. Zuerst erstellt ihr in eurem scriptfiles Ordner einen Ordner "serverfiles" und darin die datei "badwords.txd".


    2. Dann tragt ihr unter filterscripts in der server.cfg "badwords" ein und kopiert die badwords.amx in euren filterscripts Ordner.


    3. Als nächstes schreibt ihr oben im Script die Variable "const maxbadwords" so um, dass die die von euch gewünschte Anzahl von Badwords enthält.


    4. Danach benutzt ihr für jeden Text, der auf badwords überprüft werden soll folgende Funktion "badwordscheck(playerid,text);"
    playerid = Spieler der beim Fund eines Badwords gekickt werden soll
    text = String, der auf Badwords überprüft werden soll


    5. Nun passt ihr die Strings unter OnDialogResponse euren maximalen Badwords an, damit auch alle angezeigt werden.


    6. Dann startet ihr den Server.


    PS: Alle Wörter die geladen werden, seht ihr in der Server.log


    ------------------------------


    Ihr könnt nun InGame, wenn ihr Rcon Admin seit, mit dem Command /badwords die badwords verwalten


    1. Aktuelle Badwords
    Dies zeigt euch die aktuellen Badwords an


    2. Liste neu laden
    Läd die Badwords in der badwords.txd Datei in das Script


    3. Ändern
    Damit ändert ihr die Wörter in der Datei
    Ihr solltet danach den Punkt 2 ausführen, damit die Wörter auch aktiv werden


    --------- Feedback erwünscht -------------------------


    Pastebin: http://pastebin.de/5132

    Ich würde zwei sachen verändern


    Zum ersten: Maximal 100Hp sonst saufen die sich bis auf 1000 Hp hoch und sind fast unsterblich



    new Float:playerhealth;
    GetPlayerHealth(playerid,playerhealth);
    if(playerhealth + hp <= 100)
    {
    GivePlayerHealth(playerid,hp);
    }
    else
    {
    SetPlayerHealth(playerid,100.0);
    }



    Zum zweiten die Positionsabfrage mit einer Schleife lösen


    stock IsAtAutomat(playerid)
    {
    for(new i = 0;i<sizeof(Automaten);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,Automaten[i][0],Automaten[i][1],Automaten[i][2])) return 1;
    }
    else
    {
    return 0;
    }
    }


    @dit: den stock GivePlayerHealth brauch er noch, da es die Funktion in samp nicht gibt


    stock giveplayerhealth(playerid,Float:hp);
    {
    new Float:phealth;
    GetPlayerHealth(playerid,phealth);
    SetPlayerHealth(playerid,phealth+hp);
    }