23.06.2014, 05:09
Reacciуn de disparos en brazos
Creaciуn: 23/06/2014 02:16/ Update: 23/06/2014 02:16
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;
}