21/09/2019, 02:51 PM
(Última modificación: 02/10/2019, 08:48 PM por SthoNy'. Edited 4 times in total.)
[ TTT ] Item: Skeleton Gun
Descripción:
- Item especial utilizado para convertir en esqueleto a la victima emitiendo un sonido de horror y luego de 4 segundos (configurable por variable) la victima logra morir, los segundos fueron agregados para que la victima tenga ese tiempo para reaccionar y localizar al enemigo en ese corto tiempo y así poder vengar su propia muerte puede tratar de avisar quien fue su asesino, que ya después de haber sido atacado con esa arma es inevitable morir
Libreria:
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <cs_player_models_api>
#include <engine>
#include <cs_weapons_api>
#include <fun>
#include <amx_settings_api>
#include <ttt>
Requerimientos:
- [v2.5.2, March 19] Trouble in Terrorist Town mod
l
[CS] Player Models API 1.2 MUY IMPORTANTE PARA SETEAR EL MODEL
Recursos(Models/sound)
l
[CS] Player Models API 1.2 MUY IMPORTANTE PARA SETEAR EL MODEL
Recursos(Models/sound)
Código:
Código PHP:
#include <engine>
#include <cs_weapons_api>
#include <fun>
#include <amx_settings_api>
#include <ttt>
#define WEAPON_CSWID CSW_DEAGLE
#define WEAPON_NAME "weapon_deagle"
#define MODEL_NAME "skeleton"
new g_SkeletonGun, g_pMsgScreenFade, g_pMsgScreenShake, g_MaxPlayers, g_Attacker[33];
new g_szFiles[5][TTT_FILELENGHT], Cvars[7];
public plugin_precache()
{
const cantCases = 5;
new szTypeFile[15], szPath[29];
for( new i = 0; i < cantCases; i++ )
{
switch(i)
{
case 0 :
{
szTypeFile = "MODEL_V";
szPath = "models/ttt/v_skeletongun.mdl";
}
case 1 :
{
szTypeFile = "MODEL_P";
szPath = "models/ttt/p_skeletongun.mdl";
}
case 2 :
{
szTypeFile = "MODEL_W";
szPath = "models/ttt/w_skeletongun.mdl";
}
case 3 :
{
szTypeFile = "SOUND_HORROR";
szPath = "ttt/horror.wav";
}
case 4 :
{
szTypeFile = "MODEL_SKELETON";
szPath = ("models/player/%s/%s.mdl", MODEL_NAME, MODEL_NAME);
}
}
if( !amx_load_setting_string(TTT_SETTINGSFILE, "SKELETON GUN", szTypeFile, g_szFiles[i], charsmax(g_szFiles[])) )
{
g_szFiles[i] = szPath;
amx_save_setting_string(TTT_SETTINGSFILE, "SKELETON GUN", szTypeFile, g_szFiles[i]);
}
if( szTypeFile[0] == 'M')
precache_model(g_szFiles[i]);
else
precache_sound(g_szFiles[i]);
}
}
public plugin_init()
{
register_plugin("[TTT] Item: Skeleton Gun", TTT_VERSION, "SthoNy'");
Cvars[0] = my_register_cvar("ttt_skeleton_clip", "1", "Skeleton gun clip ammo. (Default: 1)");
Cvars[1] = my_register_cvar("ttt_skeleton_ammo", "0", "Skeleton gun backpack ammo. (Default: 0)");
Cvars[2] = my_register_cvar("ttt_skeleton_speed", "10.0", "Skeleton gun attack speed delay. (Default: 10.0)");
Cvars[3] = my_register_cvar("ttt_skeleton_reload", "0.0", "Skeleton gun reload speed. (Default: 0.0)");
Cvars[4] = my_register_cvar("ttt_skeleton_recoil", "0.0", "Skeleton gun recoil. (Default: 0.0)");
Cvars[5] = my_register_cvar("ttt_price_skeleton", "2", "Skeleton gun price. (Default: 2)");
Cvars[6] = my_register_cvar("ttt_time_killed", "4.0", "Skeleton gun time to killed (Default: 4.0)");
g_MaxPlayers = get_maxplayers();
g_pMsgScreenFade = get_user_msgid("ScreenFade");
g_pMsgScreenShake = get_user_msgid("ScreenShake");
}
public client_disconnect(id) remove_task(id);
public ttt_plugin_cfg() g_SkeletonGun = ttt_buymenu_add( "Skeleton Gun", get_pcvar_num(Cvars[5]), PC_TRAITOR);
public ttt_gamemode(gamemode)
{
if(gamemode == GAME_ENDED || gamemode == GAME_RESTARTING)
{
for( new i = 1; i <= g_MaxPlayers; i++ )
{
remove_task(i);
}
}
}
public ttt_item_selected(id, item, name[], price)
{
if(g_SkeletonGun == item)
{
if(user_has_weapon(id, WEAPON_CSWID))
engclient_cmd(id, "drop", WEAPON_NAME);
static data[STOREABLE_STRUCTURE];
if(!data[STRUCT_CSWA_CSW])
{
data[STRUCT_CSWA_ITEMID] = g_SkeletonGun;
data[STRUCT_CSWA_CSW] = WEAPON_CSWID;
data[STRUCT_CSWA_CLIP] = get_pcvar_num(Cvars[0]);
data[STRUCT_CSWA_MAXCLIP] = get_pcvar_num(Cvars[0]);
data[STRUCT_CSWA_AMMO] = get_pcvar_num(Cvars[1]);
data[STRUCT_CSWA_STACKABLE] = true;
data[STRUCT_CSWA_SILENCED] = -1;
data[STRUCT_CSWA_SPEEDDELAY] = _:get_pcvar_float(Cvars[2]);
data[STRUCT_CSWA_DAMAGE] = _:0;
data[STRUCT_CSWA_RELOADTIME] = _:get_pcvar_float(Cvars[3]);
data[STRUCT_CSWA_RECOIL] = _:get_pcvar_float(Cvars[4]);
data[STRUCT_CSWA_MODEL_V] = g_szFiles[0];
data[STRUCT_CSWA_MODEL_P] = g_szFiles[1];
data[STRUCT_CSWA_MODEL_W] = g_szFiles[2];
}
cswa_give_specific(id, data);
client_print_color(id, print_team_default, "%s Compraste una ^4Skeleton Gun!", TTT_TAG);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public cswa_damage(weapon_id, victim, attacker, Float:damage)
{
if(get_weapon_edict(weapon_id, REPL_CSWA_ITEMID) == g_SkeletonGun)
{
client_print_color( victim, print_team_default, "%s Te han disparado con una ^4Skeleton Gun ^1Preparate para ser llevado al ^3INFIERNO^4!", TTT_TAG);
g_Attacker[victim] = attacker;
cs_set_player_model(victim, MODEL_NAME);
emit_sound(victim, CHAN_AUTO, g_szFiles[3], 1.0, ATTN_NORM, 0, PITCH_NORM);
set_task( get_pcvar_float(Cvars[6]), "Killed", victim);
Set_user_screenfade(victim, 85, 42, 255, 4, 100);
shake_user_screen(victim);
}
}
public Killed(id)
{
if( !is_user_alive(id) || ttt_get_gamemode() == GAME_ENDED || ttt_get_gamemode() == GAME_PREPARING || !is_user_connected(g_Attacker[id]) )
return PLUGIN_HANDLED;
strip_user_weapons(id);
ExecuteHam(Ham_TakeDamage, id, g_Attacker[id], g_Attacker[id], 150.0, DMG_BLAST);
remove_task(id);
return PLUGIN_HANDLED;
}
public Set_user_screenfade(index, rrr, ggg, bbb, duracion, alpha)
{
message_begin( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, g_pMsgScreenFade, _, index );
write_short( duracion * 4096 );
write_short( duracion * 4096 );
write_short( 0x0000 );
write_byte( rrr );
write_byte( ggg );
write_byte( bbb );
write_byte( alpha );
message_end( );
}
stock shake_user_screen(index)
{
message_begin(MSG_ONE, g_pMsgScreenShake, {0,0,0}, index);
write_short(1<<14);
write_short(1<<14);
write_short(1<<14);
message_end();
}
Models y sonido
PD: Es MUY IMPORTANTE utilizar la api Player Models que dejé en los requerimientos ya que utilicé esa api para evitar la caída del servidor con el bug ese de cambiarse de model, Sí piensan utilizar este item tendrán que empezar setear el models con esta api ya que funcionaría mucho mejor
PD2: tengo varios addons por ahí que desde mi punto de vista son buenísimos pero para poder compartirlos tendría que echarles un ojo ya que los hice hace mucho y no creo que los haya hecho de la mejor manera
Mis Aportes:
[ TTT ] Item: Target Gun
[ TTT ] Item: Skeleton Gun (New)
[ TTT ] Item: Pipe Bomb
[ TTT ] Item: Inverse Golden
Pregúntate si lo que estás haciendo hoy te acerca a el lugar en el que quieres estar mañana.
[ TTT ] Item: Target Gun
[ TTT ] Item: Skeleton Gun (New)
[ TTT ] Item: Pipe Bomb
[ TTT ] Item: Inverse Golden
Pregúntate si lo que estás haciendo hoy te acerca a el lugar en el que quieres estar mañana.