Вот есть у меня старый плагин, делали мне под
Knife DM. Там вроде шапка для випа + двойное хп за убийство и деньги.
Код:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta_util>
#include <engine>
#define PLUGIN "Vipka hule"
#define VERSION "1.0"
#define AUTHOR "StudenT"
#define ACCESS ADMIN_LEVEL_H
new g_SayText
new g_MaxPlayers
new g_iMSG_ScoreAttrib
new iEnt
new const HatModel[][] = {"models/vip_hat.mdl"}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Killed, "player", "Killed_Player")
RegisterHam(Ham_Spawn, "player", "Spawn_Player", 1)
register_clcmd("say", "fw_HookSay")
register_clcmd("say_team", "fw_HookSayTeam")
register_clcmd("say /cam", "cam")
g_SayText = get_user_msgid("SayText")
g_MaxPlayers = get_maxplayers()
g_iMSG_ScoreAttrib = get_user_msgid("ScoreAttrib")
iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
}
public cam(id)
set_view(id, CAMERA_3RDPERSON)
public plugin_precache()
{
for(new i; i < sizeof(HatModel); i++)
precache_model(HatModel[i])
precache_model("models/rpgrocket.mdl")
}
public Spawn_Player(id)
{
if(is_user_alive(id))
{
if(get_user_flags(id) & ACCESS)
{
set_pev(iEnt, pev_movetype, MOVETYPE_FOLLOW)
set_pev(iEnt, pev_aiment, id)
engfunc(EngFunc_SetModel, iEnt, HatModel[0])
message_begin(MSG_ALL, g_iMSG_ScoreAttrib)
write_byte(id)
write_byte(4)
message_end()
}
}
}
public Killed_Player(victim, attacker)
{
if(!is_user_connected(victim) || !is_user_connected(attacker) || attacker == victim)
return HAM_IGNORED
if(get_user_flags(attacker) & ACCESS)
{
cs_set_user_money(attacker, cs_get_user_money(attacker) + 5000)
fm_set_user_health(attacker, get_user_health(attacker) + 10)
}
return HAM_IGNORED
}
public fw_HookSay(id)
{
new g_Args[192], g_Msg[512], iLen, g_Name[32]
new g_Alive, i
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
return PLUGIN_CONTINUE
read_args(g_Args, charsmax(g_Args))
remove_quotes(g_Args)
if(is_empty_message(g_Args))
return PLUGIN_HANDLED
get_user_name(id, g_Name, charsmax(g_Name))
g_Alive = is_user_alive(id)
if(get_user_flags(id) & ACCESS)
iLen = format(g_Msg[iLen], charsmax(g_Msg) - 1, "^1%s[^4VIP^1] ", g_Alive ? "" : "*DEAD* ")
else
iLen = format(g_Msg[iLen], charsmax(g_Msg) - 1, "^1%s ", g_Alive ? "" : "*DEAD*")
iLen += format(g_Msg[iLen], charsmax(g_Msg) - 1, "^3%s ^1: ", g_Name)
iLen += format(g_Msg[iLen], charsmax(g_Msg) - 1, "^1%s", g_Args)
for(i = 1; i <= g_MaxPlayers; i++)
{
if(!is_user_connected(i))
continue
message_begin(MSG_ONE, g_SayText, {0, 0, 0}, i)
write_byte(id)
write_string(g_Msg)
message_end()
}
return PLUGIN_HANDLED_MAIN
}
public fw_HookSayTeam(id)
{
new g_Args[192], g_Msg[512], iLen, g_Name[32]
new g_Alive, g_Team, i
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
return PLUGIN_CONTINUE
read_args(g_Args, charsmax(g_Args))
remove_quotes(g_Args)
if(is_empty_message(g_Args))
return PLUGIN_HANDLED
get_user_name(id, g_Name, charsmax(g_Name))
g_Alive = is_user_alive(id)
g_Team = get_user_team(id)
if(get_user_flags(id) & ACCESS)
{
if(g_Team == 1)
iLen = format(g_Msg[iLen], charsmax(g_Msg) - 1, "^1%s (^4T^1) [^4VIP^1] ", g_Alive ? "" : "*DEAD*")
else
if(g_Team == 2)
iLen = format(g_Msg[iLen], charsmax(g_Msg) - 1, "^1%s (^4CT^1) [^4VIP^1] ", g_Alive ? "" : "*DEAD*")
else
if(g_Team == 3)
iLen = format(g_Msg[iLen], charsmax(g_Msg) - 1, "^1%s (^4SPEC^1) [^4VIP^1] ", g_Alive ? "" : "*DEAD*")
}
else
{
if(g_Team == 1)
iLen = format(g_Msg[iLen], charsmax(g_Msg) - 1, "^1%s (^4T^1) ", g_Alive ? "" : "*DEAD*")
else
if(g_Team == 2)
iLen = format(g_Msg[iLen], charsmax(g_Msg) - 1, "^1%s (^4CT^1) ", g_Alive ? "" : "*DEAD*")
else
if(g_Team == 3)
iLen = format(g_Msg[iLen], charsmax(g_Msg) - 1, "^1%s (^4SPEC^1) ", g_Alive ? "" : "*DEAD*")
}
iLen += format(g_Msg[iLen], charsmax(g_Msg) - 1, "^3%s ^1: ", g_Name)
iLen += format(g_Msg[iLen], charsmax(g_Msg) - 1, "^1%s", g_Args)
for(i = 1; i <= g_MaxPlayers; i++)
{
if(!is_user_connected(i))
continue
if(get_user_team(id) != get_user_team(i))
continue
message_begin(MSG_ONE, g_SayText, {0, 0, 0}, i)
write_byte(id)
write_string(g_Msg)
message_end()
}
return PLUGIN_HANDLED_MAIN
}
stock is_empty_message(const Message[])
{
if(equal(Message, "") || !strlen(Message))
return true
return false
}
Отредактировал: Bloo, - 6.6.2014, 9:31