s0h, я компилировал стандартный исходник даже
вот мой
Код:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <zombieplague>
//#include <myaddon30>
#include <cstrike>
#include <fun>
#include <fakemeta>
//LOGS
#define LOGS //comment if don't wont logs
#define FILE_NAME "miniboss.txt"
//END LOGS
//ETC
#define KILL_MONEY 3000 //How much money give for player when he kill boss.
#define KILL_AMMOPACK 3 //How much AP give for player when he kill boss.
#define HP_MINIBOSS 5000 //Add HP to Mini Boss
new map[32]
new g_maxplayers;
new g_countminiboss;
new g_MiniBoss[33];
new count_zombieDie;
const OFFSET_LINUX = 5
const OFFSET_PAINSHOCK = 108 // ConnorMcLeod
public plugin_init()
{
register_plugin("Mini Boss", "1.0", "s0h")
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage_Post", 1)
g_maxplayers = get_maxplayers()
#if defined LOGS
get_mapname(map, 31)
log_to_file(FILE_NAME, "START %s", map)
#endif
}
public plugin_natives()
register_native("szp_get_miniboss", "native_get_mboss", 1)
public native_get_mboss(id)
return g_MiniBoss[id]
public zp_round_ended()
{
for(new i = 1; i <= g_maxplayers; i++)
{
if(g_MiniBoss[i])
{
g_MiniBoss[i] = false;
g_countminiboss = 0;
}
}
}
public fw_TakeDamage_Post(id)
{
if (!is_user_alive(id) || !zp_get_user_zombie(id) || !g_MiniBoss[id])
return HAM_IGNORED
set_pdata_float(id, OFFSET_PAINSHOCK, 1.0, OFFSET_LINUX)
return HAM_IGNORED
}
public zp_user_humanized_pre(id)
{
if(g_MiniBoss[id])
{
g_MiniBoss[id] = false;
g_countminiboss = 0;
}
}
public fw_PlayerKilled(victim, attacker, shouldgib)
{
if(g_MiniBoss[victim])
{
g_MiniBoss[victim] = false;
g_countminiboss = 0;
cs_set_user_money(attacker, cs_get_user_money(attacker) + KILL_MONEY, 1)
zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + KILL_AMMOPACK)
new name[32]
get_user_name(attacker, name, charsmax(name));
print_col_chat( 0,"^4[ZP]^3 %s ^1убил ^4мини-босса^1. Награда:^4 %s$ ^1и ^4%s Аммо-Пака", name, KILL_MONEY, KILL_AMMOPACK + 3)
#if defined LOGS
log_to_file(FILE_NAME, "%s убил мини-босса [%s]",name, map)
#endif
}
if(zp_get_user_zombie(victim)) count_zombieDie++;
}
rnd_do(num1, num2, const res)
{
new rnd = random_num(num1, num2)
//client_print(0, print_chat, "DEBUG [NUM1: %d, NUM2: %d, RES: %d", num1, num2, rnd)
if(rnd == res)
{
#if defined LOGS
log_to_file(FILE_NAME, "Random true: (NUM1 - %d) (NUM2 - %d) (RES - %d) [%s]", num1, num2, res, map)
#endif
return true;
}
return false;
}
public zp_user_infected_post( id, infector, nemesis )
{
if ( nemesis ) return;
new bool:doLittleBoss = false;
if(count_zombieDie > 250)
{
if(rnd_do(0,15,15))
doLittleBoss = true;
}
else if(count_zombieDie > 100)
{
if(rnd_do(0,25,25))
doLittleBoss = true;
}
else if(count_zombieDie < 100)
{
if(rnd_do(0,35,35))
doLittleBoss = true;
}
if( doLittleBoss && (zp_get_human_count() >= 24) && g_countminiboss == 0 && zp_get_zombie_count() > 1)
{
new l_name[32];
get_user_name(id, l_name, 31);
g_MiniBoss[id] = true;
g_countminiboss++;
set_hudmessage(200, 66, 66, -1.0, 0.2, 0, 2.0, 4.0)
show_hudmessage(0, "%s стал МИНИ-БОССОМ!", l_name)
set_user_health(id, get_user_health(id) + HP_MINIBOSS)
#if defined LOGS
log_to_file(FILE_NAME, "%s стал МИНИ-БОССОМ [%s]",l_name, map)
#endif
set_task(0.1, "aura", id, _, _, "b");
}
}
public aura(id)
{
// Not nemesis, not in zombie madness
if (!g_MiniBoss[id])
{
// Task not needed anymore
remove_task();
return;
}
// Get player's origin
static origin[3]
get_user_origin(id, origin)
// Colored Aura
message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
write_byte(TE_DLIGHT) // TE id
write_coord(origin[0]) // x
write_coord(origin[1]) // y
write_coord(origin[2]) // z
write_byte(12) // radius
write_byte(220) // r
write_byte(66) // g
write_byte(66) // b
write_byte(2) // life
write_byte(0) // decay rate
message_end()
}
stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4"); // Green Color
replace_all(msg, 190, "!y", "^1"); // Default Color (湫)
replace_all(msg, 190, "!t", "^3"); // Team Color
if (id) players[0] = id; else get_players(players, count, "ch");
{
for ( new i = 0; i < count; i++ )
{
if ( is_user_connected(players[i]) )
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}