[FilterScript] Reacciуn de disparos en brazos
#1

Reacciуn de disparos en brazos
Creaciуn: 23/06/2014 02:16/ Update: 23/06/2014 02:16



Sistema ъnicamente hecho por ediciуn del sistema de Fat Guy, el cual Right editу para de ese sistema crear otro. Sistema ъnicamente hecho para Forum SA-MP. Se prohibe el posteo del mismo en otras comunidades tales como:
Pawnoscripting, Espaсol Pawno donde robar crйditos estб de moda, Samp Script, йtc. Solamente se postearбn por el autor del mismo, yo.

Agradecimientos especiales para Zume-Zero, EnzoMetlc, Shura, DesingMyCry, Onfroi y especialmente a Fat Guy porel sistema de armas en el suelo, por ideas, ayudas o funciones que ellos postearon en el foro oficial de SA-MP, Forum SA-MP, no exactamente hay que contactar personalmente para ayudar en la creaciуn de sistemas, con un aporte, duda o pedido todo vale.


El sistema consta en hacer detecciones mediante condiciones, llбmese If, llбmese restricciуn, del cuerpo del usuario, lo cual aсade mбs restricciones para el funcionamiento del mismo. Las detecciones son bбsicamente; disparos
de balas que tratan de interactuar con las mismas para hacer un sistema semirealista. Las balas que golpean con los brazos, zurdo o diestro hacen que al tener un arma en la mano ( El mismo usuario que recibiу el disparo ) se le caiga de la misma.


pawn Код:
/*------------------------------------------------------------------------/*
        ======================================================
        Sistema realista de reacciуn - Forum.SA-MP.com
        ======================================================
       
Sistema ъnicamente hecho por ediciуn del sistema de Fat Guy, el cual Right
editу para de ese sistema crear otro. Sistema ъnicamente hecho para Forum
SA-MP. Se prohibe el posteo del mismo en otras comunidades tales como:
Pawnoscripting, Espaсol Pawno donde robar crйditos estб de moda, Samp Script,
йtc. Solamente se postearбn por el autor del mismo, yo.

Agradecimientos especiales para Zume-Zero, EnzoMetlc, Shura, DesingMyCry,
Onfroi y especialmente a Fat Guy por el sistema de armas en el suelo,
por ideas, ayudas o funciones que ellos postearon en el foro oficial
de SA-MP, Forum SA-MP, no exactamente hay que contactar personalmente para
ayudar en la creaciуn de sistemas, con un aporte, duda o pedido todo vale.


El sistema consta en hacer detecciones mediante condiciones, llбmese If,
llбmese restricciуn, del cuerpo del usuario, lo cual aсade mбs restricciones
para el funcionamiento del mismo. Las detecciones son bбsicamente: Disparos
de balas que tratan de interactuar con las mismas para hacer un
sistema semi realista, ya que no todo puede ser totalmente real.

/*------------------------------------------------------------------------*/


//=================//
#include <a_samp>// by SA-MP
#include <streamer>// by Incognito
#include <zcmd>// by Zeex
#include <foreach>// by ******
//=================//
#define MAX_DROP_ITEMS 1000//Cambiar para modificar el nъmero de armas tiradas
#define COLOR_ACTION 0xFFC0CBFF//Color gay, rosa
//=================//
new string[128], sendername[MAX_PLAYER_NAME], DropObject[MAX_DROP_ITEMS];
//=================//
enum dData
{
    DropGunAmmount[2],//ModelID & balas
    Float:DropGunPosX,
    Float:DropGunPosY,
    Float:DropGunPosZ,
    DropGunVWorld,
    DropGunInterior,
};
new DropInfo[MAX_DROP_ITEMS][dData];
//=================//
new GunObjectIDs[200] ={

   1575,  331, 333, 334, 335, 336, 337, 338, 339, 341, 321, 322, 323, 324, 325, 326, 342, 343, 344, -1,  -1 , -1 ,
   346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 372, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
   368, 369, 1575
};
//=================//
public OnFilterScriptInit()
{
    print("\n----------------------------------------");
    print(" Sistema de reacciуn - Forum SA:MP - Right");
    print("----------------------------------------\n");
    return 1;
}
//=================//
stock GetGunObjectID(WeaponID)
{
    if (WeaponID < 0 || WeaponID > 64)
    {
        return 1575;
    }
    return GunObjectIDs[WeaponID];
}
//=================//
stock DropGun(playerid, GunID, GunAmmo, Float:X, Float:Y, Float:Z, world, interior)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    if(GunID != 0 && GunAmmo != 0)
    {
        for(new i = 0; i < sizeof(DropInfo); i++)
        {
            if(DropInfo[i][DropGunPosX] == 0.0 && DropInfo[i][DropGunPosY] == 0.0 && DropInfo[i][DropGunPosZ] == 0.0)
            {
                DropInfo[i][DropGunAmmount][0] = GunID;
                DropInfo[i][DropGunAmmount][1] = GunAmmo;
                DropInfo[i][DropGunPosX] = X;
                DropInfo[i][DropGunPosY] = Y;
                DropInfo[i][DropGunPosZ] = Z;
                DropInfo[i][DropGunVWorld] = world;
                DropInfo[i][DropGunInterior] = interior;
                DropObject[i] = CreateDynamicObject(GetGunObjectID(GunID), X, Y, Z-1, 80.0, 0.0, 0.0, world);
                return 1;
            }
        }
        return 1;
    }
    return 1;
}
//=================//
stock RemovePlayerWeapon(playerid, weaponid)//Crйditos a Xalphox
{
    if(!IsPlayerConnected(playerid) || weaponid < 0 || weaponid > 50)
        return;
    new saveweapon[13], saveammo[13];
    for(new slot = 0; slot < 13; slot++)
        GetPlayerWeaponData(playerid, slot, saveweapon[slot], saveammo[slot]);
    ResetPlayerWeapons(playerid);
    for(new slot; slot < 13; slot++)
    {
        if(saveweapon[slot] == weaponid || saveammo[slot] == 0)
            continue;
        GivePlayerWeapon(playerid, saveweapon[slot], saveammo[slot]);
    }

    GivePlayerWeapon(playerid, 0, 1);

}
//=================//
public OnFilterScriptExit()
{
    print(" Sistema de reacciуn - Forum SA:MP Right");
    return 1;
}
//=================//
public OnPlayerDeath(playerid, killerid, reason)
{
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    DropGun(playerid, GetPlayerWeapon(playerid),GetPlayerAmmo(playerid),X,Y,Z,GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
    return 1;
}
//=================//
stock SendLocalMessage(playerid, msg[], Float:MessageRange, Range1color, Range2color)
{
    new Float: PlayerX, Float: PlayerY, Float: PlayerZ;
    GetPlayerPos(playerid, PlayerX, PlayerY, PlayerZ);
    foreach (Player, i)
    {
        if(IsPlayerInRangeOfPoint(i, MessageRange, PlayerX, PlayerY,PlayerZ))
        {
            SendClientMessage(i, Range1color, msg);
        }
        else if(IsPlayerInRangeOfPoint(i, MessageRange/2.0, PlayerX, PlayerY,PlayerZ))
        {
            SendClientMessage(i, Range2color, msg);
        }
    }
}

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
    if(IsPlayerConnected(issuerid) && (bodypart == 5)) // Lee si le han dispara en el brazo izquierdo
    {
    SendClientMessage(playerid, COLOR_ACTION, "Estбs sangrando, te han disparado en tu brazo izquierdo y la reacciуn te hizo soltar tu arma");
    new Float:X,Float:Y,Float:Z;
    new GunID = GetPlayerWeapon(playerid);
    new GunAmmo = GetPlayerAmmo(playerid);
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerPos(playerid, X, Y, Z);
    RemovePlayerWeapon(playerid, GunID);
    DropGun(playerid, GunID,GunAmmo,X,Y,Z,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid));
    format(string, sizeof(string), "* %s tira su arma de golpe y esta cae en el suelo.", sendername);
    SendLocalMessage(playerid, string, 10.0, COLOR_ACTION, COLOR_ACTION);
    }
    else
    {
    if(IsPlayerConnected(issuerid) && (bodypart == 6)) // Lee si le han disparado en el brazo derecho
    {
    new Float:X,Float:Y,Float:Z;
    new GunID = GetPlayerWeapon(playerid);
    new GunAmmo = GetPlayerAmmo(playerid);
    SendClientMessage(playerid, COLOR_ACTION, "Estбs sangrando, te han disparado en tu brazo derecho y la reacciуn te hizo soltar tu arma");
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerPos(playerid, X, Y, Z);
    RemovePlayerWeapon(playerid, GunID);
    DropGun(playerid, GunID,GunAmmo,X,Y,Z,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid));
    format(string, sizeof(string), "* %s tira su arma de golpe y esta cae en el suelo.", sendername);
    SendLocalMessage(playerid, string, 10.0, COLOR_ACTION, COLOR_ACTION);
    }
    }
    return 1;
}
Reply
#2

esto estб guapнsimo
Reply
#3

guapo! thx
Reply
#4

;o

Tambiйn podrнas revisar esto un poco:

pawn Код:
static GunObjectIDs[200] ={

   1575,  331, 333, 334, 335, 336, 337, 338, 339, 341, 321, 322, 323, 324, 325, 326, 342, 343, 344, -1,  -1 , -1 ,
   346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 372, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
   368, 369, 1575
};

stock GetGunObjectID(WeaponID)
{
    return (WeaponID < 0 || WeaponID > 64) ? (1575) : (GunObjectIDs[WeaponID]);
}
Tambiйn quitar la variable name en la funciуn DropGun ya que por lo que veo no la utilizas :3

Fuera de esto estб nice, buen trabajo para ayudar a un tipo que pedнa esto jaja.
+3.
Reply
#5

Esta parte podrнas hacerla una sola hacen exactamente lo mismo.
pawn Код:
if(IsPlayerConnected(issuerid) && (bodypart == 5)) // Lee si le han dispara en el brazo izquierdo
    {
    SendClientMessage(playerid, COLOR_ACTION, "Estбs sangrando, te han disparado en tu brazo izquierdo y la reacciуn te hizo soltar tu arma");
    new Float:X,Float:Y,Float:Z;
    new GunID = GetPlayerWeapon(playerid);
    new GunAmmo = GetPlayerAmmo(playerid);
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerPos(playerid, X, Y, Z);
    RemovePlayerWeapon(playerid, GunID);
    DropGun(playerid, GunID,GunAmmo,X,Y,Z,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid));
    format(string, sizeof(string), "* %s tira su arma de golpe y esta cae en el suelo.", sendername);
    SendLocalMessage(playerid, string, 10.0, COLOR_ACTION, COLOR_ACTION);
    }
    else
    {
    if(IsPlayerConnected(issuerid) && (bodypart == 6)) // Lee si le han disparado en el brazo derecho
    {
    new Float:X,Float:Y,Float:Z;
    new GunID = GetPlayerWeapon(playerid);
    new GunAmmo = GetPlayerAmmo(playerid);
    SendClientMessage(playerid, COLOR_ACTION, "Estбs sangrando, te han disparado en tu brazo derecho y la reacciуn te hizo soltar tu arma");
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerPos(playerid, X, Y, Z);
    RemovePlayerWeapon(playerid, GunID);
    DropGun(playerid, GunID,GunAmmo,X,Y,Z,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid));
    format(string, sizeof(string), "* %s tira su arma de golpe y esta cae en el suelo.", sendername);
    SendLocalMessage(playerid, string, 10.0, COLOR_ACTION, COLOR_ACTION);
    }
    }
asн:

pawn Код:
if(IsPlayerConnected(issuerid) && (bodypart == 5 || bodypart == 6))
    {
    new Float:X,Float:Y,Float:Z;
    new GunID = GetPlayerWeapon(playerid);
    new GunAmmo = GetPlayerAmmo(playerid);
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerPos(playerid, X, Y, Z);
    RemovePlayerWeapon(playerid, GunID);
    DropGun(playerid, GunID,GunAmmo,X,Y,Z,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid));
    format(string, sizeof(string), "* %s tira su arma de golpe y esta cae en el suelo.", sendername);
    SendLocalMessage(playerid, string, 10.0, COLOR_ACTION, COLOR_ACTION);
    format(string, sizeof(string), "Estбs sangrando, te han disparado en tu brazo %s y la reacciуn te hizo soltar tu arma", (bodypart == 5)?("izquierdo"):("derecho"));
    SendClientMessage(playerid, COLOR_ACTION, string);
    }
Te ahorras varias lineas.
Reply
#6

Nada mal, te felicito por el trabajo hecho +rep
Reply
#7

Estб bien, una vez lo hice pero mбs optimizado.

Una cosa, por mбs que digas que es para FS no faltarбn los que empiecen a publicarlos en varios lugares, hasta en lugares donde a los administradores les da igual esto de los derechos con tal de que ingresen nuevos aportes en ese tipo de comunidades. Y, bueno, no creo que esto sea penalizado (refiriйndome a lo de publicar trabajos en los cuales, el creador de йste prohiba su publicaciуn), por mбs de que estй mal, pero bueno, es asн.
Reply
#8

Quote:
Originally Posted by DeadSkyTkb
Посмотреть сообщение
Estб bien, una vez lo hice pero mбs optimizado.

Una cosa, por mбs que digas que es para FS no faltarбn los que empiecen a publicarlos en varios lugares, hasta en lugares donde a los administradores les da igual esto de los derechos con tal de que ingresen nuevos aportes en ese tipo de comunidades. Y, bueno, no creo que esto sea penalizado (refiriйndome a lo de publicar trabajos en los cuales, el creador de йste prohiba su publicaciуn), por mбs de que estй mal, pero bueno, es asн.
Hombre, їlo dices tъ que publicaste trabajos mios sin mi permiso? jajaja
Reply
#9

їOtra vez discutiendo por ese sistemita de bolsillitos divinos que es lo mбs "antirolero" que hay? a mн me da igual ese sistemita, nunca sirviу de nada, no sуlo porque tenнa bugs, si no porque quita el rol por asн decirlo. Estбs pendiente de todo, eh, como si fuese a publicar ese GMcito mal optimizado de Rulzjame (o Rolgame, creo que era asн, que la verdad que es malнsima la conjugaciуn esa, es una especie de spanglish, porque la palabra serнa Role, pero Rolegame estarнa mal conjugado tambiйn) si es que se llamaba asн, porque la verdad mucho nome acuerdo. Y bien que me pediste 1.000 veces que programe para vos en las 534534 comunidades que tuviste.

[arg]їY quй carajo me decнs hombre, te pensбs que tengo 50 aсos como vos? Pero por dios, nos vemos en Disney pedazo de salame.[/arg]
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)