Нова версия - 1.1
Change Log:
Код за потвърждение: Избери целия код
v 1.0 - Първа версия
v 1.1 - Оправени са всички бъгове и са добавени чат команди
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <colorchat>
#if AMXX_VERSION_NUM < 183
#include <dhudmessage>
#endif
#define PLUGIN "Nemessis Chance"
#define VERSION "1.1"
#define AUTHOR "Just In Case"
#define IsPlayer1(%1) ( 1 <= %1 <= MAX_PLAYERS )
#define MAX_PLAYERS 32
native bb_is_user_zombie(id)
enum PluginSettings {
CVAR_ENABLE,
CVAR_PREFIX,
CVAR_PERCENT,
CVAR_MODEL,
CVAR_HP,
CVAR_TASKTIME,
CVAR_GRAVITY,
CVAR_SPEED,
CVAR_DAMAGE
}
new iCvars[ PluginSettings ]
new iEnable, iPercent, iHP, iGravity
new gZombie[33], gPlayer_Model[33][32], g_ent_playermodel[33]
new bool:Nemesis[33], bool:szHave
new Float: fTaskTime
new const szChatCommands[][] = {
"say /chance", "say_team /chance",
"say chance", "say_team chance"
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_logevent("evStartRound", 2, "1=Round_Start")
for ( new i = 0; i < sizeof( szChatCommands ); i++ )
register_concmd(szChatCommands[ i ], "chanceCMD")
iCvars[ CVAR_ENABLE ] = register_cvar("bb_enable_nemesis", "1")
iEnable = get_pcvar_num(iCvars[ CVAR_ENABLE ])
iCvars[ CVAR_PREFIX ] = register_cvar("bb_nemesis_prefix", "EXAMLE")
iCvars[ CVAR_PERCENT ] = register_cvar("bb_nemesis_precent", "10")
iPercent = get_pcvar_num(iCvars[ CVAR_PERCENT ])
iCvars[ CVAR_HP ] = register_cvar("bb_nemesis_hp", "25000")
iHP = get_pcvar_num(iCvars[ CVAR_HP ])
iCvars[ CVAR_GRAVITY ] = register_cvar("bb_nemesis_gravity", "200")
iGravity = get_pcvar_num(iCvars[ CVAR_GRAVITY ])
iCvars[ CVAR_TASKTIME ] = register_cvar("bb_nemesis_message", "60")
fTaskTime = get_pcvar_float(iCvars[ CVAR_TASKTIME ])
iCvars[ CVAR_SPEED ] = register_cvar("bb_nemesis_speed", "350")
register_logevent("logevent_round_end", 2, "1=Round_End")
set_task(fTaskTime, "taskMessage", 0, _, _, "b")
}
public chanceCMD(id)
{
gZombie[ id ] = bb_is_user_zombie(id)
if(is_user_alive(id))
{
if(iEnable)
{
new Float:Gravity
if( random(100) <= iPercent )
{
if(Nemesis[ id ] == true)
{
ColorChat(id, RED, "^4[ %s ] ^1You already won the ^4Chance^1. You are now ^3NEMESIS ^4!^3!^4!", GetPrefix())
return
}
if(szHave == true)
{
ColorChat(id, RED, "^4[ %s ] ^1Someone already won the ^4Chance ^1this round try the next one", GetPrefix())
return
}
new szPlayerWon[33]
get_user_name(id, szPlayerWon, 32)
copy( gPlayer_Model[ id ], charsmax( gPlayer_Model[] ), "nemesis")
fm_set_playermodel_ent( id, gPlayer_Model[ id ] )
set_user_health(id, iHP)
set_user_maxspeed(id , get_pcvar_float(iCvars [ CVAR_SPEED ]))
Gravity = iGravity / 800.0
set_user_gravity(id, Gravity)
set_dhudmessage(230, 60, 0, 0.30, 0.35, 1, 6.0, 3.0, 0.3, 1.5)
show_dhudmessage( id, "YOU WON NEMESIS CLASS FOR THIS ROUND^nYour HP is now : %i", iHP )
ColorChat(0, RED, "^4[ %s ] ^3%s ^1won NEMESIS CLASS this round. Be carefull !!!", GetPrefix(), szPlayerWon)
szHave = true
Nemesis[ id ] = true
}
}
}
}
public taskMessage()
{
ColorChat(0, RED, "^4[ %s ] ^1Type ^4/chance^3, ^4chance ^1in the chat to have a chance to become ^3NEMESIS", GetPrefix())
}
public client_connect(id)
{
szHave = false
Nemesis[ id ] = false
}
public client_disconnect(id)
{
szHave = false
Nemesis[ id ] = false
}
public logevent_round_end(id)
{
Nemesis[ id ] = false
szHave = false
}
public plugin_precache()
{
precache_player_model("nemesis")
}
public ham_TakeDamage_Pre(victim, inflictor, attacker, Float:damage, damage_bits)
{
if( !IsPlayer1( attacker ) || !is_user_alive( attacker ) || inflictor != attacker )
{
return;
}
if ( Nemesis[ attacker ] && get_user_weapon(attacker) == CSW_KNIFE )
{
SetHamParamFloat( 4, damage * 9999 );
}
}
/*================================================================================
[Stocks]
=================================================================================*/
stock fm_set_playermodel_ent( id, const modelname[] )
{
set_pev( id, pev_rendermode, kRenderTransTexture )
set_pev( id, pev_renderamt, 1.0 )
static modelpath[100]
formatex( modelpath, charsmax( modelpath ), "models/player/%s/%s.mdl", modelname, modelname )
if ( !pev_valid( g_ent_playermodel[id] ) )
{
g_ent_playermodel[id] = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) )
if ( !pev_valid( g_ent_playermodel[id] ) ) return;
set_pev( g_ent_playermodel[id], pev_movetype, MOVETYPE_FOLLOW )
set_pev( g_ent_playermodel[id], pev_aiment, id )
set_pev( g_ent_playermodel[id], pev_owner, id )
}
engfunc( EngFunc_SetModel, g_ent_playermodel[id], modelpath )
}
stock precache_player_model(szModel[])
{
new szFile[128]
formatex(szFile, charsmax(szFile), "models/player/%s/%s.mdl", szModel, szModel)
precache_model(szFile)
replace(szFile, charsmax(szFile), ".mdl", "T.mdl")
if(file_exists(szFile))
precache_model(szFile)
}
stock GetPrefix()
{
new Prefix[33]
get_pcvar_string(iCvars[ CVAR_PREFIX ], Prefix, charsmax(Prefix))
return Prefix
}