[AJUDA] /taser
#1

Bom dia galera,bom sou novato em pawn,e quero saber como que faзo um /taser.Quando o player digitar,se ele for cop ele ganha um pistola silenciada e quando um player for atingido ele cai no chгo e fica parado por algum tempo. Alguem ajuda ae por favor.
Reply
#2

Nгo foi eu que fiz, achei ai no forum samp, й sу vocк adaptar ao jeito que vocк quer

pawn Код:
/*
===================================
[FS]Taser by GangstaLC
ICQ: 369-11-88-17
===================================
*/

#include <a_samp>
#include "../include/gl_common.inc"

forward TimerClear(playerid);
forward TimerFall(playerid);
forward Float:GetDistanceBetweenPlayers(p1,p2);
forward GetClosestPlayer(p1);

new HaveTaser[MAX_PLAYERS];

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print("[FS]Taser by GangstaLC - Loaded");
    print("--------------------------------------\n");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256],idx;
    cmd = strtok(cmdtext, idx);

    if(strcmp("/gettaser", cmd, true) == 0)
    {
        new tmp[258];
        SetPlayerAttachedObject(playerid, 0, 18642, 6, 0.06, 0.01, 0.08, 180.0, 0.0, 0.0);
        HaveTaser[playerid] = 1;
        format(tmp,sizeof(tmp),"{FFFFFF}You have got a {FF6600}taser{FFFFFF}.");
        SendClientMessage(playerid,0xFFFFFF,tmp);
    }
   
    else if(strcmp("/droptaser", cmd, true) == 0)
    {
        new tmp[258];
        RemovePlayerAttachedObject(playerid, 0);
        HaveTaser[playerid] = 0;
        format(tmp,sizeof(tmp),"{FFFFFF}You have dropped the {FF6600}taser{FFFFFF}.");
        SendClientMessage(playerid,0xFFFFFF,tmp);
    }
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys & KEY_FIRE)
    {
        if(HaveTaser[playerid] == 1)
        {
            ApplyAnimation(playerid,"KNIFE","knife_3",4.1,0,1,1,0,0,1);
            SetTimerEx("TimerClear",2000,false,"d",playerid);
            new victimid = GetClosestPlayer(playerid);
            if(IsPlayerConnected(victimid))
            {
                if(GetDistanceBetweenPlayers(playerid,victimid) < 2)
                {
                    new Float:health;
                    GetPlayerHealth(victimid, health);
                    SetPlayerHealth(victimid, health - 5.0);
                    SetTimerEx("TimerFall",300,false,"d",victimid);
                    return 1;
                 }
             }
         }
    }
    return 1;
}

public TimerClear(playerid)
{
    ClearAnimations(playerid,1);
}

public TimerFall(playerid)
{
    ApplyAnimation(playerid,"KNIFE","knife_hit_3",4.1,0,1,1,0,0,1);
}

public GetClosestPlayer(p1)
{
    new x,Float:dis,Float:dis2,player;
    player = -1;
    dis = 99999.99;
    for (x=0;x<MAX_PLAYERS;x++)
    {
        if(IsPlayerConnected(x))
        {
            if(x != p1)
            {
                dis2 = GetDistanceBetweenPlayers(x,p1);
                if(dis2 < dis && dis2 != -1.00)
                {
                    dis = dis2;
                    player = x;
                }
            }
        }
    }
    return player;
}

public Float:GetDistanceBetweenPlayers(p1,p2)
{
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
    {
        return -1.00;
    }
    GetPlayerPos(p1,x1,y1,z1);
    GetPlayerPos(p2,x2,y2,z2);
    return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}

public OnPlayerConnect(playerid)
{
    HaveTaser[playerid] = 0;
    RemovePlayerAttachedObject(playerid, 0);
    return 1;
}
Reply
#3

Mas esse, й um corpo a corpo.o q eu vi foi um pistola silenciada,vc sabe como que eu faзo esse ?
Reply
#4

Nгo testei pois estou sem gta, tenta ai.

pawn Код:
/*
===================================
[FS]Taser by GangstaLC
ICQ: 369-11-88-17
===================================
*/

#include <a_samp>
#include "../include/gl_common.inc"

forward TimerClear(playerid);
forward TimerFall(playerid);
forward Float:GetDistanceBetweenPlayers(p1,p2);
forward GetClosestPlayer(p1);

new HaveTaser[MAX_PLAYERS];

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print("[FS]Taser by GangstaLC - Loaded");
    print("--------------------------------------\n");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256],idx;
    cmd = strtok(cmdtext, idx);

    if(strcmp("/taser", cmd, true) == 0)
    {
        new tmp[258];
        GivePlayerWeapon(playerid,23,500) ;
        HaveTaser[playerid] = 1;
        format(tmp,sizeof(tmp),"{FFFFFF}You have got a {FF6600}taser{FFFFFF}.");
        SendClientMessage(playerid,0xFFFFFF,tmp);
    }
   
    else if(strcmp("/taseroff", cmd, true) == 0)
    {
        new tmp[258];
        HaveTaser[playerid] = 0;
        ResetPlayerWeapons()
        format(tmp,sizeof(tmp),"{FFFFFF}You have dropped the {FF6600}taser{FFFFFF}.");
        SendClientMessage(playerid,0xFFFFFF,tmp);
    }
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys & KEY_FIRE)
    {
        if(HaveTaser[playerid] == 1)
        {
            SetTimerEx("TimerClear",2000,false,"d",playerid);
            new victimid = GetClosestPlayer(playerid);
            if(IsPlayerConnected(victimid))
            {
                if(GetDistanceBetweenPlayers(playerid,victimid) < 2)
                {
                    new Float:health;
                    GetPlayerHealth(victimid, health);
                    SetPlayerHealth(victimid, health - 5.0);
                    return 1;
                 }
             }
         }
    }
    return 1;
}

public TimerClear(playerid)
{
    ClearAnimations(playerid,1);
}

public GetClosestPlayer(p1)
{
    new x,Float:dis,Float:dis2,player;
    player = -1;
    dis = 99999.99;
    for (x=0;x<MAX_PLAYERS;x++)
    {
        if(IsPlayerConnected(x))
        {
            if(x != p1)
            {
                dis2 = GetDistanceBetweenPlayers(x,p1);
                if(dis2 < dis && dis2 != -1.00)
                {
                    dis = dis2;
                    player = x;
                }
            }
        }
    }
    return player;
}

public Float:GetDistanceBetweenPlayers(p1,p2)
{
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
    {
        return -1.00;
    }
    GetPlayerPos(p1,x1,y1,z1);
    GetPlayerPos(p2,x2,y2,z2);
    return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}

public OnPlayerConnect(playerid)
{
    HaveTaser[playerid] = 0;
    RemovePlayerAttachedObject(playerid, 0);
    return 1;
}
Reply
#5

Ta do mesmo jeito fera.
Reply
#6

Entгo nгo sei, to sem gta e nгo da para testar =x
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)