Участник
Пользователь
- Сообщения
- 102
- Реакции
- 16
- Ошибка
-
//// injection.sma
//
// C:\Users\User\Desktop\╒ырь\╩юьяшы ЄюЁ\injection.sma(35) : error 001: expected token: ",", but found "("
// C:\Users\User\Desktop\╒ырь\╩юьяшы ЄюЁ\injection.sma(35) : warning 215: expression has no effect
// C:\Users\User\Desktop\╒ырь\╩юьяшы ЄюЁ\injection.sma(35) : error 001: expected token: ";", but found ")"
// C:\Users\User\Desktop\╒ырь\╩юьяшы ЄюЁ\injection.sma(35) : error 029: invalid expression, assumed zero
// C:\Users\User\Desktop\╒ырь\╩юьяшы ЄюЁ\injection.sma(35) : fatal error 107: too many error messages on one line
//
// Compilation aborted.
// 4 Errors.
// Could not locate output file C:\Users\User\Desktop\╒ырь\╩юьяшы ЄюЁ\compiled\injection.amx (compile failed).
//
// Compilation Time: 0,7 sec
// ----------------------------------------
Press enter to exit ...
- Компилятор
- Локальный
- Amx Mod X
- 1.10.0
- Исходный код
-
#include <amxmodx>
#include <hamsandwich>
#include <reapi>
public stock const VERSION[] = "1.1.2";
enum _:CVARS
{
ACCESS[32],
ROUND,
Float:HEALTH,
Float:HEALTH_PERCENT,
USE_METHOD,
SEQUENCE,
VIP,
DIFF,
ONE_ROUND,
KILL,
V_MODEL[MAX_RESOURCE_PATH_LENGTH],
P_MODEL[MAX_RESOURCE_PATH_LENGTH],
SAMPLE[MAX_RESOURCE_PATH_LENGTH],
}; new CVAR[CVARS];
new g_iAccess;
new g_bHasInjection;
new Float:g_flAnimationLength;
public plugin_precache()
{
register_plugin("Injection Med-Kit", VERSION, "Emma Jule");
bind_pcvar_string(create_cvar("inj_access", "d", .description = "Флаг доступа к шприцу"), CVAR[ACCESS] charsmax(CVAR[ACCESS]));
bind_pcvar_num(create_cvar("inj_round", "2", .description = "С какого раунда доступен шприц"), CVAR[ROUND]);
bind_pcvar_float(create_cvar("inj_health", "50.0", .description = "Кол-во пополняемого здоровья", .has_max = true, .max_val = 100.0), CVAR[HEALTH]);
bind_pcvar_float(create_cvar("inj_health_percent", "80.0", .description = "Использовать шприц можно, только если у игрока меньше # здоровья", .has_min = true, .min_val = 1.0, .has_max = true, .max_val = 100.0), CVAR[HEALTH_PERCENT]);
bind_pcvar_num(create_cvar("inj_use_method", "3", .description = "Метод использования:^n0 - через Z (radio1)^n1 - через X (radio2)^n2 - через C (radio3)^n3 - через G (drop)", .has_max = true, .max_val = 3.0), CVAR[USE_METHOD]);
bind_pcvar_num(create_cvar("inj_sequence", "0", .description = "Индекс анимации модели шприца"), CVAR[SEQUENCE]);
bind_pcvar_num(create_cvar("inj_vip", "0", .description = "Запрет VIP игроку использовать шприц (на as_* картах)"), CVAR[VIP]);
bind_pcvar_num(create_cvar("inj_win_diff", "5", .description = "Разница между победами команд, для блокировки шприца"), CVAR[DIFF]);
bind_pcvar_num(create_cvar("inj_only_round", "1", .description = "Использовать шприц игрок сможет только один раз за раунд"), CVAR[ONE_ROUND]);
bind_pcvar_num(create_cvar("inj_kill_reset", "1", .description = "Убирать у игрока шприц если он умер"), CVAR[KILL]);
bind_pcvar_string(create_cvar("inj_v_model", "models/legendarycs/injectorX/v_injectorX.mdl", .description = "V модель шприца (обязательно)"), CVAR[V_MODEL], charsmax(CVAR[V_MODEL]));
bind_pcvar_string(create_cvar("inj_p_model", "models/legendarycs/injectorX/p_injectorX.mdl", .description = "P модель шприца (опционально)"), CVAR[P_MODEL], charsmax(CVAR[P_MODEL]));
bind_pcvar_string(create_cvar("inj_sample", "items/medshot4.wav", .description = "Звук после иньекции (опционально)"), CVAR[SAMPLE], charsmax(CVAR[SAMPLE]));
precache_model(CVAR[V_MODEL]);
{
if (!(g_flAnimationLength = UTIL_CalculateAnimationLength(CVAR[V_MODEL], CVAR[SEQUENCE])))
set_fail_state("Модель или анимация шприца не подходит :P");
}
if (!file_exists(CVAR[P_MODEL]))
CVAR[P_MODEL][0] = '^0';
else
precache_model(CVAR[P_MODEL]);
if (!file_exists(fmt("sound/%s", CVAR[SAMPLE])))
CVAR[SAMPLE][0] = '^0';
else
precache_sound(CVAR[SAMPLE]);
switch (CVAR[USE_METHOD])
{
case 0:
register_clcmd("radio1", "@use_injection");
case 1:
register_clcmd("radio2", "@use_injection");
case 2:
register_clcmd("radio3", "@use_injection");
case 3:
register_clcmd("drop", "@use_injection");
}
g_iAccess = read_flags(CVAR[ACCESS]);
AutoExecConfig(.name = "injection");
}
public plugin_init()
{
register_dictionary("injection.txt");
RegisterHam(Ham_Item_Holster, "weapon_knife", "CBaseWeapon_Holster", true);
RegisterHam(Ham_Item_Deploy, "weapon_knife", "CBaseWeapon_Deploy", true);
RegisterHookChain(RG_CBasePlayer_OnSpawnEquip, "CBasePlayer_OnSpawnEquip", true);
if (CVAR[KILL])
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true);
}
public GiveUserInjection(id)
{
if (get_member_game(m_iTotalRoundsPlayed) + 1 < CVAR[ROUND])
client_print_color(id, print_team_red, "%L %L", LANG_PLAYER, "INJ_PREFIX", LANG_PLAYER, "INJ_ROUND", CVAR[ROUND]);
else if (!is_user_alive(id))
client_print_color(id, print_team_red, "%L %L", LANG_PLAYER, "INJ_PREFIX", LANG_PLAYER, "INJ_ALIVE");
else if (CVAR[VIP] && get_member(id, m_bIsVIP))
client_print_color(id, print_team_red, "%L %L", LANG_PLAYER, "INJ_PREFIX", LANG_PLAYER, "INJ_VIP");
else if (CVAR[ONE_ROUND] && get_member(id, m_iNumSpawns) > 1)
client_print_color(id, print_team_red, "%L %L", LANG_PLAYER, "INJ_PREFIX", LANG_PLAYER, "INJ_PER_ROUND");
else if (get_member(id, m_iTeam) == UTIL_GetTeamDominate())
client_print(id, print_center, "%L", LANG_PLAYER, "INJ_DOMINA");
else if (flag_get(g_bHasInjection, id))
client_print(id, print_center, "%L", LANG_PLAYER, "INJ_ALREADY");
else
{
flag_set(g_bHasInjection, id);
client_print_color(id, print_team_default, "%L %L", LANG_PLAYER, "INJ_PREFIX", LANG_PLAYER, "INJ_NOTIFY");
}
return PLUGIN_HANDLED;
}
public CBasePlayer_OnSpawnEquip(id)
{
if (get_member_game(m_iTotalRoundsPlayed) + 1 < CVAR[ROUND])
{
flag_unset(g_bHasInjection, id);
return;
}
if (CVAR[ONE_ROUND] && get_member(id, m_iNumSpawns) > 1)
return;
if (~get_user_flags(id) & g_iAccess)
return;
flag_set(g_bHasInjection, id);
}
public CBasePlayer_Killed(id)
{
flag_unset(g_bHasInjection, id);
}
public CBaseWeapon_Deploy(const pWeapon)
{
new id = get_member(pWeapon, m_pPlayer);
if (!flag_get(g_bHasInjection, id))
return;
if (get_user_health(id) > 35)
return;
client_print(id, print_center, "%L", LANG_PLAYER, "INJ_LOW_HP");
}
public CBaseWeapon_Holster(const pWeapon)
{
SetThink(pWeapon, "");
}
public client_disconnected(id)
{
flag_unset(g_bHasInjection, id);
}
@use_injection(id)
{
if (get_member_game(m_bRoundTerminating))
return PLUGIN_CONTINUE;
if (!is_user_alive(id))
return PLUGIN_CONTINUE;
if (!flag_get(g_bHasInjection, id))
return PLUGIN_CONTINUE;
if (CVAR[VIP] && get_member(id, m_bIsVIP))
return PLUGIN_CONTINUE;
new pWeapon = get_member(id, m_pActiveItem);
if (is_nullent(pWeapon) || get_member(pWeapon, m_iId) != CSW_KNIFE)
return PLUGIN_CONTINUE;
if (get_member(id, m_iTeam) == UTIL_GetTeamDominate())
{
client_print(id, print_center, "%L", LANG_PLAYER, "INJ_DOMINA");
return PLUGIN_HANDLED;
}
if ((Float:get_entvar(id, var_health) * 100.0 / Float:get_entvar(id, var_max_health)) >= CVAR[HEALTH_PERCENT])
{
client_print(id, print_center, "%L", LANG_PLAYER, "INJ_FULL_HP");
return PLUGIN_HANDLED;
}
ExecuteHam(Ham_Weapon_PrimaryAttack, pWeapon);
set_member(id, m_flNextAttack, g_flAnimationLength);
set_member(id, m_szAnimExtention, "c4");
set_entvar(id, var_viewmodel, CVAR[V_MODEL]);
if (CVAR[P_MODEL][0])
set_entvar(id, var_weaponmodel, CVAR[P_MODEL]);
UTIL_SendWeaponAnim(id, CVAR[SEQUENCE]);
SetThink(pWeapon, "CWeapon__Think");
set_entvar(pWeapon, var_nextthink, get_gametime() + g_flAnimationLength);
return PLUGIN_HANDLED;
}
public CWeapon__Think(pWeapon)
{
if (is_nullent(pWeapon))
return;
new id = get_entvar(pWeapon, var_owner);
ExecuteHamB(Ham_TakeHealth, id, CVAR[HEALTH], DMG_GENERIC);
flag_unset(g_bHasInjection, id);
rg_switch_weapon(id, pWeapon);
UTIL_ScreenFade(id);
if (CVAR[SAMPLE][0])
rh_emit_sound2(id, 0, CHAN_ITEM, CVAR[SAMPLE]);
client_print_color(id, print_team_blue, "%L %L", LANG_PLAYER, "INJ_PREFIX", LANG_PLAYER, "INJ_SUCCESFULLY_INJECTED");
SetThink(pWeapon, "");
}
stock TeamName:UTIL_GetTeamDominate(&diff = 0)
{
if (!CVAR[DIFF])
return TEAM_UNASSIGNED;
new TeamName:team = TEAM_UNASSIGNED;
if ((diff = get_member_game(m_iNumTerroristWins) - get_member_game(m_iNumCTWins)) > 0)
team = TEAM_TERRORIST;
else if (diff < 0)
team = TEAM_CT;
return (
abs(diff) < CVAR[DIFF] ? TEAM_UNASSIGNED : team
);
}
stock UTIL_SendWeaponAnim(const id, const sequence)
{
set_entvar(id, var_weaponanim, sequence);
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = id);
write_byte(sequence);
write_byte(0);
message_end();
}
stock UTIL_BlinkAccount(id, const times = 2, bool:bShowMessage = false)
{
if (bShowMessage)
client_printex(id, print_center, "#Not_Enough_Money");
static iMsgBlinkAcct;
if (iMsgBlinkAcct || (iMsgBlinkAcct = get_user_msgid("BlinkAcct")))
{
message_begin(MSG_ONE_UNRELIABLE, iMsgBlinkAcct, .player = id);
write_byte(times);
message_end();
}
}
stock UTIL_ScreenFade(const id, const Float:fxtime = 1.0, const Float:holdtime = 0.3, const color[3] = { 0, 200, 0 }, const alpha = 150)
{
if (Float:get_member(id, m_blindUntilTime) > get_gametime())
return;
static iMsgScreenFade;
if (iMsgScreenFade || (iMsgScreenFade = get_user_msgid("ScreenFade")))
{
message_begin(MSG_ONE_UNRELIABLE, iMsgScreenFade, .player = id);
write_short(clamp(floatround(fxtime * (1 << 12)), 0, 0xFFFF));
write_short(clamp(floatround(holdtime * (1 << 12)), 0, 0xFFFF));
write_short(0x0000);
write_byte(color[0]);
write_byte(color[1]);
write_byte(color[2]);
write_byte(alpha);
message_end();
}
}
stock Float:UTIL_CalculateAnimationLength(const szModel[], const sequence)
{
new file = fopen(szModel, "rb");
if (!file)
return 0.0;
new aData[32], i, seqs, frames, Float:FPS;
fseek(file, 164, SEEK_SET);
{
fread(file, seqs, BLOCK_INT);
fread(file, i, BLOCK_INT);
if (!(0 <= sequence < seqs))
return 0.0;
}
fseek(file, i + 176 * sequence, SEEK_SET);
fread_blocks(file, aData, 32, BLOCK_CHAR);
if (aData[0] == '^0')
return 0.0;
fread(file, _:FPS, BLOCK_INT);
fseek(file, 20, SEEK_CUR);
fread(file, frames, BLOCK_INT);
fclose(file);
return Float:(
frames / FPS
);
}
Всем привет! Помогите скомпилировать плагин
В этой теме было размещено решение! Перейти к решению.