16/10/2015, 03:31 PM
Tutorial de como cambiarle el daño a una arma
La explicación está dentro del código....
Por cierto, el daño tiene que ser un decimal... osea "1.0, 2.0, 1.3, 1.4 etc.."
Código PHP:
#include <amxmodx>//Librería básica
#include <amxmisc>//Librería básica
#include <hamsandwich> //Librería que usaremos para cambiar el daño de un arma
#pragma semicolon 1 //Esto es para poner al final de una línea ";"
// Plugin Version Creador
new const PluginInfo[][] = { "[TUT] Dano de Arma", "v1.0", "totopizza" };
native is_valid_ent(iIndex); //Si es válida la entidad....
//Cuando inicia un mapa
public plugin_init() {
//Registramos el plugin..
// Plugin Version Creador
register_plugin(PluginInfo[0], PluginInfo[1], PluginInfo[2]);
/* Registramos el evento del daño.
* Ham_TakeDamage => Detecta cuando se hace daño.
* "player" => Detecta el daño a un player/jugador
* "pTakeDamage" => Public que usaremos al hacerle daño a un player/jugador
* 1 => True | 0 => False
*/
RegisterHam(Ham_TakeDamage, "player", "pTakeDamage", 1);
}
/*Llamamos a la funcion pTakeDamage
* victim => Victima que resive el daño
* inflictor => No se para que era xD
* attacker => El que hace el daño a la otra persona.
* Float:damage => Daño que resive la victima
* damagebits => No se explicar esto :s
*/
public pTakeDamage(victim, inflictor, attacker, Float:damage, damagebits)
{
/* Aqui decimos lo siguiente:
* Si el atacante no está conectado
* Si la victima no está viva
* Si la victima no es una entidad válida
* Ignorará el daño que daremos, o sea, no continuará la función..
*/
if(!is_user_connected(attacker)|| !is_user_alive(victim) || !is_valid_ent(victim))
return HAM_IGNORED;//No continua la función...
/*
* Si la victima es igual al attacker
* Ejemplo: Cuando nos tiramos una granada...
* No resivirá el daño que hará la granada...
*/
if( victim == attacker)
return HAM_SUPERCEDE;//No resive daño de sí mismo..
/* Aquí decimos lo siguiente:
* Si el arma que está usando para hacer el daño es igual al knife
* Y si su equipo es CT
* Multiplicamos el daño por 2.0, o sea si le hizo 65 de daño: 65*2.0 = 140.0 será el daño
*/
if(get_user_weapon(attacker) == CSW_KNIFE && get_user_team(attacker) == 2)
damage *= 2.0; //Daño normal * 2.0
/*
Si tiene el knife en la mano y su equipo son los Terroristas hará daño por por 2.5
*/
else if(get_user_weapon(attacker) == CSW_KNIFE && get_user_team(attacker) == 1)
damage *= 2.5;
SetHamParamFloat(4, damage);//Aquí damos el daño que hará el knife
return HAM_HANDLED;//Retornamos con HAM_HANDLED;
}