Участник
Пользователь
- Сообщения
- 143
- Реакции
- 68
- Помог
- 1 раз(а)
Здравствуйте.
Кто может подсказать вот в чем.
С примеров сделал плагин выпадения монеты с тела после убийства.
Есть проверка на регистрацию игрока на сайте.
Не могу только пока сделать проверку на киллера. То есть, чтобы монету мог подбирать только убийца.
Вот что получилось. Буду оч. рад за помощь.
Кто может подсказать вот в чем.
С примеров сделал плагин выпадения монеты с тела после убийства.
Есть проверка на регистрацию игрока на сайте.
Не могу только пока сделать проверку на киллера. То есть, чтобы монету мог подбирать только убийца.
Код:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <gamecms5>
#define PLUGIN "Coins"
#define VERSION "1.0"
#define AUTHOR "Fenix"
#define CLASSNAME_DEFAULT "info_null"
#define CLASSNAME_SET "info_coin"
#define COIN_MODEL "models/coin/exp2_blue.mdl"
#define COIN_SOUND "coin/coin.wav"
new Float:fMoney = 0.05; //сумма денег за монетку (на баланс сайта)
public plugin_precache()
{
precache_model(COIN_MODEL);
precache_sound(COIN_SOUND);
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_dictionary("present_coins.txt");
RegisterHam(Ham_Killed, "player", "fw_KilledPlayerPost", true);
RegisterHam(Ham_Touch, CLASSNAME_DEFAULT, "fw_TouchCoinPost", true);
RegisterHam(Ham_Think, CLASSNAME_DEFAULT, "fw_ThinkCoinPost", true);
register_logevent("event_RoundEnd", 2, "1=Round_End");
}
public fw_KilledPlayerPost(iVictim, iAttacker, iCorpse)
{
if(!is_user_connected(iVictim))
return;
new Float: fOrigin[3], Float: fVelocity[3];
pev(iVictim, pev_origin, fOrigin);
new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, CLASSNAME_DEFAULT));
set_pev(iEnt, pev_classname, CLASSNAME_SET);
set_pev(iEnt, pev_origin, fOrigin);
set_pev(iEnt, pev_solid, SOLID_TRIGGER);
set_pev(iEnt, pev_movetype, MOVETYPE_NONE);
set_pev(iEnt, pev_framerate, 1.0);
engfunc(EngFunc_DropToFloor, iEnt)
engfunc(EngFunc_SetSize, iEnt, Float: {-10.0, -10.0, -10.0}, Float: {10.0, 10.0, 10.0});
engfunc(EngFunc_SetModel, iEnt, COIN_MODEL);
set_pev(iEnt, pev_velocity, fVelocity);
set_pev(iEnt, pev_nextthink, get_gametime() + 15);
}
public fw_TouchCoinPost(iEnt, id)
{
if(!pev_valid(iEnt) || !is_user_alive(id))
return;
if (cmsapi_is_user_member(id))
{
static sClassName[32];
pev(iEnt, pev_classname, sClassName, charsmax(sClassName));
if(!equal(sClassName, CLASSNAME_SET))
return;
cmsapi_add_user_money(id, fMoney);
client_print_color(id, print_team_default, "%L", LANG_SERVER, "CMS_COINT_TAKE", fMoney);
emit_sound(id, CHAN_WEAPON, COIN_SOUND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
set_pev(iEnt, pev_flags, pev(iEnt, pev_flags) | FL_KILLME);
}
else
{
client_print_color(id, print_team_default, "%L", LANG_SERVER, "CMS_COINT_NO_TAKE");
}
}
public fw_ThinkCoinPost(iEnt)
{
if(!pev_valid(iEnt))
return;
static sClassName[32];
pev(iEnt, pev_classname, sClassName, charsmax(sClassName));
if(!equal(sClassName, CLASSNAME_SET))
return;
set_pev(iEnt, pev_flags, pev(iEnt, pev_flags) | FL_KILLME);
}
public event_RoundEnd()
{
new iEnt = FM_NULLENT;
while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", CLASSNAME_SET)))
if(pev_valid(iEnt))
set_pev(iEnt, pev_flags, pev(iEnt, pev_flags) | FL_KILLME);
}