Beiträge von FoxHound

    #include <a_samp>


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


    public OnPlayercommandText(playerid,cmdtext[])
    {
    dcmd(eject,5,cmdtext);
    dcmd(kidnap,6,cmdtext);
    return 0;
    }


    dcmd_eject(playerid,params[])
    {
    new pID,string[128],pName[MAX_PLAYER_NAME],pIdName[MAX_PLAYER_NAME];
    if(!IsPlayerInAnyVehicle(playerid)) { return SendClientMessage(playerid,AFAFAFAA,"Du bist in keinem Fahrzeug !"); }
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) { return SendClientMessage(playerid,0xAFAFAFAA,"Du bist nicht der Fahrer !"); }
    if(sscanf(params,"u",pID)) { return SendClientMessage(playerid,0xAFAFAFAA,"SYNTAX: /eject [playerid]"); }
    if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,AFAFAFAA,"Ungültige ID!"); }
    if(!IsPlayerInVehicle(pID,GetPlayerVehicleID(playerid)) { return SendClientMessage(playerid,COLOR_GREY,"Dieser Spieler ist nicht in deinem Fahrzeug !"); }
    GetPlayerName(playerid,pName,sizeof(pName));
    GetPlayerName(pID,pIdName,sizeof(pIdName));
    RemovePlayerFromVehicle(pID);
    format(string,sizeof(string),"Du hast %s aus deinem Auto geschmissen !",pIdName);
    SendClientMessage(playerid,0xFFFFFFAA,string);
    format(string,sizeof(string),"Fahrer %s hat dich aus seinem Auto geschmissen !",pName);
    SendClientMessage(pID,0xFFFFFFAA,string);
    return 1;
    }


    dcmd_kidnap(playerid,params[])
    {
    new pID,seatid,string[64],pName[MAX_PLAYER_NAME],pIdName[MAX_PLAYER_NAME];
    if(!IsPlayerInAnyVehicle(playerid)) { return SendClientMessage(playerid,AFAFAFAA,"Du bist in keinem Fahrzeug !"); }
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) { return SendClientMessage(playerid,0xAFAFAFAA,"Du bist nicht der Fahrer !"); }
    if(sscanf(params,"ud",pID,seatid)) { return SendClientMessage(playerid,0xAFAFAFAA,"SYNTAX: /kidnap [playerid] [SitzId]"); }
    if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,AFAFAFAA,"Ungültige ID!"); }
    if(GetDistanceBetweenPlayers(playerid,pID) > 7.0) { return SendClientMessage(playerid,COLOR_GREY,"Du bist zu weit entfernt !"); }
    if(IsPlayerInAnyVehicle(pID) { return SendClientMessage(playerid,COLOR_GREY,"Dieser Spieler ist in einem Fahrzeug !"); }
    GetPlayerName(playerid,pName,sizeof(pName));
    GetPlayerName(pID,pIdName,sizeof(pIdName));
    PutPlayerInVehicle(pID,GetPlayerVehicleID(playerid),seatid);
    TogglePlayerControllable(pID,0);
    format(string,sizeof(string),"Du hast %s gekidnappt!",pIdName);
    SendClientMessage(playerid,COLOR_GREY,string);
    GameTextForPlayer(pID,"~r~Kidnapped!",5000,3);
    return 1;
    }


    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {
    setarg(paramPos, 0, _:floatstr(string[stringPos]));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }


    ;D ;)

    Kein codeschnipsel aber ein kleiner info ;)
    In SAMP 0.3 hab ich etwas kleines gemacht und rausgefunden, dass OnPlayerUpdate in 5 sekunden 80 mal, also in einer sekunde etwa 16 mal in der sekunde aufgerufen wird.

    ne falsch ^^
    wenn der spieler aufm desktop ist, wird OnPlayerUpdate nicht aufgerufen.
    Bei aufrufen von OnPlayerUpdate wird einer variable +1 wert dazugegeben.
    aber wenn es 0 ist, bedeutet es das OnPlayerUpdate nicht aufgerufen wird und der spieler bekommt nen kick wenn er zu lange aufm deski ist ^^

    VORWORT
    Hi, ich wollte dieses FS eig. einfach so machen aus langweile, aber als ich gesehen habe was daraus geworden ist, habe ich weitergemacht
    und jetzt will ich es mit euch 'teilen' :D


    BESCHREIBUNG / HOW TO USE
    Also ganz oben gibts eine definierung: "
    #define MAX_DESKTOP_TIME 120" da kann man ændern wieviele sekunden man maximal aufm Desktop sein darf.
    Wenn er soo viele sekunden aufm desktop ist, bekommt er einen kick.


    DOWNLOAD
    Show ADT.pwn - pastebin.com


    Download Anti-Desktop_bY_FoxHound.rar - SolidFiles
    Download Anti-Desktop_bY_FoxHound.rar - SendSpace


    SCHLUSSWORT
    Es ist ein einfaches FilterScript für noobs die es nicht können aber es brauchen ^^
    Also bitte nicht zu harte kommentare :)


    Mit Freundlichen Grüßen

    wenns möglich ist, klar :D
    das kenn ich auch mit dem spray, das ist so cool ^^ besonders die Trainingsmissionen mitm spray, das macht soo fun alter !
    B2T XD :
    ja ehm ich versuche es. mal sehn obs geht XD

    VORWORT
    Hi, ich hatte bock drauf das zu machen, kommen wir zum thema ^^
    Auch wenn es schon viele solche æhnliche systeme gibt, wollte ich auch eins machen ^^
    Ich hatte dabei eine idee, und zwar es wie in Metal Gear Solid für PS1 zu machen :D
    In MGS legt man eine bombe mit einer taste und man zündet sie mit der O-Taste (die taste mit dem man schlagen kann).
    Also hier legt man die bombe mit einem cmd (siehe "commands") und man læsst es mit STRG/CTRL/Linke Maustaste hochgehen ^^


    FUNKTIONEN & HOW TO USE
    Es gibt oben im script eine definierung: "
    #define MAX_BOMBS".
    Da könnt ihr hinschreiben maximal wieviele bomben ein spieler gleichzeitig legen kann.
    Es ist standartweise als '3' definiert.
    Man macht ingame /c4 und legt eine bombe, und man læsst es mit STRG/CTRL/Linke Maustaste hochgehen ^^


    VIDEO

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    COMMAND


    /c4
    Legt eine C4-Bombe.


    DOWNLOAD
    Show C4_SYS.pwn - pastebin.com


    Download C4_System_bY_FoxHound.rar - SolidFiles
    Download C4_System_bY_FoxHound.rar - SendSpace


    SCHLUSSWORT
    Ich hoffe ihr habt spaß damit :)
    MfG, FoxHound :P

    Ne soviel ich weiß gibt es doch in s***it ein hack womit man seine energie auffüllen kann, der sich "Restore Health" nennt. ^^
    mein Anti-HP-Hack war für den Restore Health.
    Deins ist fürs godmode, aber sehr sehr sehr nützlich du profi :) ^^

    versuchen wir dann mal Anti-HP-Hack ^^
    new Float:lastHP[MAX_PLAYERS];
    new ActivateHP[MAX_PLAYERS];


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


    public OnPlayerSpawn(playerid)
    {
    ActivatedHP[playerid] = 1;
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    ActivatedHP[playerid] = 0;
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    if(ActivatedHP[playerid] == 1)
    {
    new Float:currentHP[MAX_PLAYERS];
    GetPlayerHealth(playerid, currentHP[playerid]);
    if(currentHP[playerid] > lastHP[playerid])
    {
    CallLocalFunction("OnPlayerRestoreHealth","uff",playerid,lastHP[playerid],currentHP[playerid]);
    lastHP[playerid] = currentHP[playerid];
    }
    }
    return 1;
    }


    public OnPlayerRestoreHealth(playerid, Float:oldhealth, Float:newhealth)
    {
    /****************************** BEISPIEL ******************************/
    SetPlayerHealth(playerid,oldhealth); //macht seine energie wieder auf den alten stand
    /****************************** BEISPIEL ******************************/
    return 1;
    }


    aber man müsste die SetPlayerHealth und so funktionen ein bisschen ændern und auch wenn man das macht, wenn man die originalen NPC's im BSN zum essen benutzt, könnte das das essen verhindern ^^

    ah ja und wie kleinerOpa es gesagt hat, können wir auch abfragen ob der spieler nahe einem spieler ist und die feuertaste drückt ^^
    Aber so würden es auch klitzekleine bugs geben ^^
    und das gibts hier:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys == KEY_FIRE)
    {
    if(GetPlayerWeapon(playerid) == 0) //so wird diese funktion nur aufgerufen, wenn der spieler keine waffen hat
    {
    new Float:iX,Float:iY,Float:iZ;
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    GetPlayerPos(i,iX,iY,iZ);
    if(IsPlayerInRangeOfPoint(playerid, 2.0, iX, iY, iZ)
    {
    CallLocalFunction("OnPlayerPunchPlayer","uu",playerid,i);
    }
    }
    }
    }
    }


    und das hier das callback, ganz unten ins script:
    public OnPlayerPunchPlayer(playerid, punchedplayerid)
    {
    new string[64],playername[MAX_PLAYER_NAME],punchedplayername[MAX_PLAYER_NAME];
    /******************************************** BEISPIELS SCRIPT ********************************************/
    GetPlayerName(playerid,playername,sizeof(playername));
    GetPlayerName(punchedplayerid,punchedplayername,sizeof(punchedplayername));
    format(string,sizeof(string),"Du hast %s geschlagen !",punchedplayername);
    SendClientMessage(playerid,0xFFFFFFAA,string);
    format(string,sizeof(string),"Du wurdest von %s geschlagen !",playername);
    SendClientMessage(punchedplayerid,0xFFFFFFAA,string);
    /******************************************* BEISPIELS SCRIPT *******************************************/
    return 1;
    }
    auch kP ob das so funzt xD

    Jedes mal wenn der spieler HP verliert (also auch wenn er runterfællt,geschlagen wird,beschossen wird,wenn er bei einer explosion steht und so):
    new Float:lastHP[MAX_PLAYERS];
    new ActivateHP[MAX_PLAYERS];


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


    public OnPlayerSpawn(playerid)
    {
    ActivatedHP[playerid] = 1;
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    ActivatedHP[playerid] = 0;
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    if(ActivatedHP[playerid] == 1)
    {
    new Float:currentHP[MAX_PLAYERS];
    GetPlayerHealth(playerid, currentHP[playerid]);
    if(currentHP[playerid] < lastHP[playerid])
    {
    CallLocalFunction("OnPlayerLoseHealth","uff",playerid,lastHP[playerid],currentHP[playerid]);
    lastHP[playerid] = currentHP[playerid];
    }
    }
    return 1;
    }


    und das ist das neue callback den du ganz unten einfügst:
    public OnPlayerLoseHealth(playerid, Float:oldhealth, Float:newhealth)
    {
    /******** BEISPIELS SCRIPT ********/
    new string[64];
    new Float:lost_hp = oldhealth-newhealth;
    format(string,sizeof(string),"Du hast %.2f gesundheit verloren !",lost_hp);
    SendClientMessage(playerid,0xAFAFAFAA,string);
    /******** BEISPIELS SCRIPT ********/
    return 0;
    }
    so könnte man auch einen Anti-Health hack machen :love:


    so würde es doch gehn, oder? ^^:rolleyes:

    //OnPlayerCommandText
    dcmd(eject,5,cmdtext);


    //Ganz unten ins script
    dcmd_eject(playerid,params[])
    {
    new pID,string[128],pName[MAX_PLAYER_NAME],pIdName[MAX_PLAYER_NAME];
    if(!IsPlayerInAnyVehicle(playerid)) { return SendClientMessage(playerid,AFAFAFAA,"Du bist in keinem Fahrzeug !"); }
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) { return SendClientMessage(playerid,0xAFAFAFAA,"Du bist nicht der Fahrer !"); }
    if(sscanf(params,"u",pID)) { return SendClientMessage(playerid,0xAFAFAFAA,"SYNTAX: /eject [playerid]"); }
    if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,AFAFAFAA,"Ungültige ID!"); }
    if(!IsPlayerInVehicle(pID,GetPlayerVehicleID(playerid)) { return SendClientMessage(playerid,COLOR_GREY,"Dieser Spieler ist nicht in deinem Fahrzeug !"); }
    GetPlayerName(playerid,pName,sizeof(pName));
    GetPlayerName(pID,pIdName,sizeof(pIdName));
    RemovePlayerFromVehicle(pID);
    format(string,sizeof(string),"Du hast %s aus deinem Auto geschmissen !",pIdName);
    SendClientMessage(playerid,0xFFFFFFAA,string);
    format(string,sizeof(string),"Fahrer %s hat dich aus seinem Auto geschmissen !",pName);
    SendClientMessage(pID,0xFFFFFFAA,string);
    return 1;
    }


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


    //OnPlayerCommandText
    dcmd(kidnap,6,cmdtext);


    //Ganz unten ins script
    dcmd_kidnap(playerid,params[])
    {
    new pID,seatid,string[64],pName[MAX_PLAYER_NAME],pIdName[MAX_PLAYER_NAME];
    if(!IsPlayerInAnyVehicle(playerid)) { return SendClientMessage(playerid,AFAFAFAA,"Du bist in keinem Fahrzeug !"); }
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) { return SendClientMessage(playerid,0xAFAFAFAA,"Du bist nicht der Fahrer !"); }
    if(sscanf(params,"ud",pID,seatid)) { return SendClientMessage(playerid,0xAFAFAFAA,"SYNTAX: /kidnap [playerid] [SitzId]"); }
    if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,AFAFAFAA,"Ungültige ID!"); }
    if(GetDistanceBetweenPlayers(playerid,pID) > 7.0) { return SendClientMessage(playerid,COLOR_GREY,"Du bist zu weit entfernt !"); }
    if(IsPlayerInAnyVehicle(pID) { return SendClientMessage(playerid,COLOR_GREY,"Dieser Spieler ist in einem Fahrzeug !"); }
    GetPlayerName(playerid,pName,sizeof(pName));
    GetPlayerName(pID,pIdName,sizeof(pIdName));
    PutPlayerInVehicle(pID,GetPlayerVehicleID(playerid),seatid);
    TogglePlayerControllable(pID,0);
    format(string,sizeof(string),"Du hast %s gekidnappt!",pIdName);
    SendClientMessage(playerid,COLOR_GREY,string);
    GameTextForPlayer(pID,"~r~Kidnapped!",5000,3);
    return 1;
    }


    müssten beide funzen

    dcmd(givegun,7,cmdtext);
    //ABküRZUNG:
    dcmd(g,1,cmdtext);


    dcmd_givegun(playerid, params[])
    {
    new pID,gun,ammo;
    if(!IsPlayerAdmin(playerid)) { return SendClientMessage(playerid, 0xFFFFFFAA, "Du darfst dieses Befehl nicht benutzen !"); }
    if(sscanf(params, "udd", pID, gun, ammo)) { return SendClientMessage(playerid, 0xFFFFFFAA, "SYNTAX: (/g)ivegun [playerid/name] [WaffenID] [Munition]"); }
    if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid, 0xFFFFFFAA, "Ungültige ID !"); }
    if(ammo < 1 || ammo > 999) { return SendClientMessage(playerid, 0xFFFFFFAA, "Minimum 1, Maximal 999 Munition !"); }
    GivePlayerWeapon(pID, gun, ammo);
    return 1;
    }
    //ABKüRZUNG VOM COMMAND:
    dcmd_g(playerid, params[]) { return dcmd_givegun(playerid, params); }


    Boooooooaaaah, das macht voll SPAß dcmd zu scripten ^^ :D
    //edit
    und das beste ist, das der command so höllisch kurz ist (10 zeilen) obwohl es 3 parameter hat.
    aber man kann es auch kürzer machen, in dem man das CMD so macht das es jeder spieler benutzen kann, und das man unendlich munition geben kann. dann würden es etwa 2 zeilen weniger sein ^^ (erste stufe mathe xD :thumbup: )

    dcmd_givemoney(playerid,params[])
    {
    new sSumme,pID;
    if(sscanf(params, "dd",pID,sSumme))
    {
    return SendClientMessage(playerid,COLOR_RED,"Nutze: /givemoney [playerid] [Betrag]");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    new ThePlayer[MAX_PLAYER_NAME], string[128];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(string,sizeof(string),"%s (ID %d) bekam geld geschickt,Betrag: %s",ThePlayer,pID,sSumme);
    GivePlayerMoney(playerid,-sSumme);
    GivePlayerMoney(pID,sSumme);
    return 1;
    }