Nützliche Codeschnipsel

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Für die leute, die nicht wollen das man mit M4, Deagle etc als beifahrer schiessen kann. (ganz nützlich für RL Server)
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    switch(newstate)
    {
    case PLAYER_STATE_PASSENGER:
    {
    if(GetPlayerWeapon(playerid)!=28&&GetPlayerWeapon(playerid)!=29&&GetPlayerWeapon(playerid)!=32)
    {
    new waffe[2];
    GetPlayerWeaponData(playerid, 4, waffe[0], waffe[1]);
    if(waffe[0]==28||waffe[0]==29||waffe[0]==32) SetPlayerArmedWeapon(playerid,waffe[0]);
    else SetPlayerArmedWeapon(playerid,0);
    }
    }
    }
    return 1;
    }
    MP5, TEC9 und Micor SMG gehen trotzdem!


    Mfg.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • stock ReturnPlayerFromIP(ip[])
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    new ipp = GetPlayerIP(i, ipp, sizeof(ipp));
    if(!strcmp(ip, ipp, false))
    {
    return i;
    }
    }
    }
    }
    Returnt die PlayerID aus der IP. UNGETESTET. Sollte aber funktionieren. Könnte man für OnRconLoginAttempt nehmen.


    Evil

  • kp obs das schon gab (lese mir keine 24 seiten durch :P) aber das sollte funktionieren, denke ich:


    stock SetAllPlayerMoney(money)
    {
    new geld;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if (IsPlayerConnected(i))
    {
    geld = GetPlayerMoney(i);
    GivePlayerMoney(i, -geld);
    GivePlayerMoney(i, money);
    }
    }
    return 1;
    }


    verwendung:
    SetAllPlayerMoney(5000); <-- Setzt das Geld von allen OnlineSpielern auf 5000



    wenns falsch is pls sagen xD

  • Hier ne nette Funktion die die momentane Position des Spielers Speichert, und eine Funktion die den Spieler zur gespeicherten Position teleportiert.



    new Float:CordSave[MAX_PLAYERS][3];


    stock SavePlayerPos(playerid)
    {
    GetPlayerPos(playerid, CordSave[playerid][0],CordSave[playerid][1],CordSave[playerid][2]);
    }


    stock TeleToSavedPlayerPos(playerid)
    {
    if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    new vehicle = GetPlayerVehicleID(playerid);
    SetVehiclePos(vehicle, CordSave[playerid][0],CordSave[playerid][1],CordSave[playerid][2]);
    }
    else
    {
    SetPlayerPos(playerid, CordSave[playerid][0],CordSave[playerid][1],CordSave[playerid][2]);
    }
    }


  • Ein bisschen kürzer:
    stock SetAllPlayerMoney(money)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    if(IsPlayerConnected(i))
    GivePlayerMoney(i, money-GetPlayerMoney(i));
    }

  • Gut um zu testen ob einer Godmode Hack an Hat:




    if(strcmp(cmd,"/aexplode",true)==0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /aexplode [playerid/PartOfName]");
    return 1;
    }
    new Float:plocx,Float:plocy,Float:plocz;
    new plo;
    plo = ReturnUser(tmp);
    if(IsPlayerConnected(plo))
    {
    if(plo != INVALID_PLAYER_ID)
    {
    if(PlayerInfo[playerid][pAdmin] >= 1337)
    {
    GetPlayerPos(plo, plocx, plocy, plocz);
    CreateExplosion(plocx,plocy+2, plocz,3,10);
    SendClientMessage(playerid, COLOR_GRAD1, "Explodiert!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du bist kein Admin!");
    }
    }
    }
    else
    {
    format(string, sizeof(string), " %d ist kein Aktiver Spieler.", plo);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • Double-O-Seven hat was kleineres^^:
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_PASSENGE && IsPlayerAdmin(playerid) == 0)
    {
    new weapons, ammo;
    GetPlayerWeaponData(playerid, 4, weapons, ammo);
    #pragma unused ammo
    SetPlayerArmedWeapon(playerid, weapons);
    }
    return 1;
    }

    So kann er nur als Rcon admin alles benutzen^^

    Berlin - Tel Aviv - Moskau

  • RoundNumber(number)


    Hier mal ne Codeschnipsel, um zahlen zu runden !
    (Negative Zahlen werden auch unterstützt)
    Die funktion ist einfach:
    RoundNumber(zahl);
    Diee Funktion gibt die runde zahl aus.
    z.B. schreibt ihr 256, wird es zu 260, schreibt ihr -14, wird es zu -10...


    http://pastebin.com/tMeZbTQ5


    forward RoundNumber(num2round);
    public RoundNumber(num2round)
    {
    new number[64];
    format(number,sizeof(number),"%d",num2round);
    new numblen=strlen(number),_number=strval(number),orgnumb[64],negative=0;
    format(orgnumb,sizeof(orgnumb),"%d",_number);
    if(_number<0) { negative=1; }
    strdel(number,0,(numblen-1));
    _number=strval(number);
    if((negative==1) && (_number>0)) { _number-=(_number*2); }
    if(strval(orgnumb)>0)
    {
    if(_number<5) { return (strval(orgnumb)-_number); }
    else { return strval(orgnumb)+(10-_number); }
    } else {
    if(_number>-5) { return strval(orgnumb)-_number; }
    else { return strval(orgnumb)-(10+_number); }
    }
    }


    PS.: Ich weiß, da sind ein paar unnötige Funktionen drinnen, und es geht auch ganz kürzer.
    Aber ich habe es eben so gemacht weil ich keine Zeit hatte.
    Hauptsache es macht was es machen muss ;)

    2 Mal editiert, zuletzt von FoxHound ()

  • bei onplayerconnect

    new playername[MAX_PLAYER_NAME];

    GetPlayerName(playerid, playername, sizeof(playername));
    new pIP[128], year, mnth, day, datum[256], hour, minute, second;
    GetPlayerIp(playerid, pIP, sizeof(pIP));
    getdate(year,mnth,day);
    gettime(hour, minute, second);
    format(datum, sizeof(datum), "Am %d.%d.%d um %d:%dUhr %s ", day, mnth, year, hour, minute, playername);
    dini_Set("IPs.txt",datum,pIP);


    speichert die ip von jedem der connectet in ner txt datei^^

  • strpart


    Eine weitere strtok-Alternative, welches besser und ressourcenschonender ist als strtok und strget.. Und auch kürzer: 9 Zeilen.


    http://pastebin.com/5i6qmfDY


    stock strpart(string[], strpos=0, seperator=' ') { //by FoxHound
    new str[512],pos=0,lastpos=0,len=strlen(string);
    format(str,sizeof(str),"%s",string);
    for(new i;i<512;i++) {
    if((str[i]==seperator) || str[i]=='\n') {
    //if(i==0) { str[0]=0; continue; }
    if(strpos==pos) {
    if(pos>0) { strdel(str,0,lastpos+1); }
    strdel(str,i-1,len); return str; }
    lastpos=i; pos++; }
    if(i==len) break; }
    return str; }


    Und hier ist der Code mit dem ich alles getestet habe:
    public OnRconCommand(cmd[])
    {
    if(!strcmp(cmd,"strpart_test",true))
    {
    printf("strpart: 'Zick Zack Zoe' has been strpart'd to '%s'",strpart("Zick Zack Zoe"),0);
    }
    return 1;
    }


    [b]edit:// update.

    11 Mal editiert, zuletzt von FoxHound ()

  • fcmd


    Hi. Dieses Script ist nicht ganz ein nützliches Script.
    Diesen Script habe ich in 2-3 Minuten gemacht um Firefox zu zeigen wie einfach soetwas ist.
    Auch wenn es nur 2 Minuten "arbeit" war, hat es aufjedenfall viel mehr sinn als RCMD (bzw. Firefox seins).


    Mit diesem Script, schreibt ihr die Commands als eine einzige Zeile unter "OnPlayerCommandText".
    Ich gebe euch jetzt einfach ein Beispiel:
    FCMD(rofl);


    Danach schreibt ihr den Inhalt dahin, wo ihr wollt (ausser in Callbacks):
    FCMD_rofl(playerid)
    {
    SendClientMessage(playerid,0xFAFAFAFF,"ROFLMAO!! You used '/rofl' !!");
    return 1;
    }
    _______________________________________________________________


    So kommen wir nun zum Release.
    http://pastebin.com/h3fqwNdw
    Hier ist der Code dafür:
    #define FCMD(%1) if(!strcmp(cmdtext,#/%1,true)) FCMD_%1(playerid)


    Einfach unter den ganzen Includes kopieren.
    Viel Spaß damit, obwohl es eh niemand benutzen wird, mir eigentlich auch egal x)

    2 Mal editiert, zuletzt von FoxHound ()

  • Auch wenn es nur 2 Minuten "arbeit" war, hat es aufjedenfall viel mehr sinn als RCMD (bzw. Firefox seins).

    Warum stachelst du mich eig. schonwieder an?
    Deins hat den Sinn: ??? Den hast du nicht genannt, deshalb keinen?! Läuft über strcmp, also ists auch nicht schneller
    Man muss den Befehl außerhalb schreiben, also mehr Aufwand.


    Meins hat mehrere Sinne: Anfängerfreundlichkeit, Weniger Schreibarbeit, Einfacher Integers und Strings herbekommen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen