Участник
Пользователь
- Сообщения
- 151
- Реакции
- 17
- Помог
- 3 раз(а)
- Ошибка
-
error 017: undefined symbol "RG_CBasePlayer_ThrowGrenade"
warning 215: expression has no effect
error 029: invalid expression, assumed zero
error 017: undefined symbol "post"
fatal error 107: too many error messages on one line
- Компилятор
- Локальный
- Amx Mod X
- 1.9.0
- Исходный код
-
// Copyright © 2018 Vaqtincha
/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG START ■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/
const Float:EXPLODE_DELAY = 3.0
// #define PL_DEBUG
/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG END ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/
/***
#define EXPLODE_DELAY 3
if (flGameTime > flStartThrow + EXPLODE_DELAY.0)
{
/...
}
Q: Mistriсk - и нафик так писать
A: думаю это лучше чем сидеть на форуме как говно и нифига не писать не помогать людей.
*/
#include <amxmodx>
#include <reapi>
#include <hamsandwich>
const GRENADE_BS = ((1<<_:WEAPON_HEGRENADE)|(1<<_:WEAPON_FLASHBANG)/* |(1<<_:WEAPON_SMOKEGRENADE) */)
public plugin_init()
{
register_plugin("Quake Hand Grenade", "0.2", "Vaqtincha")
RegisterHookChain(RG_CBasePlayer_ThrowGrenade, "CBasePlayer_ThrowGrenade", .post = false)
#if defined PL_DEBUG
RegisterHookChain(RG_CBasePlayer_OnSpawnEquip, "CBasePlayer_OnSpawnEquip", .post = true)
#endif
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", .post = false)
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_hegrenade", "CBasePlayerWeapon_PrimAttack", .Post = true)
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_flashbang", "CBasePlayerWeapon_PrimAttack", .Post = true)
// RegisterHam(Ham_Weapon_ShouldWeaponIdle, "weapon_hegrenade", "CBasePlayerWeapon_ShouldWpnIdle", .Post = false)
// RegisterHam(Ham_Weapon_ShouldWeaponIdle, "weapon_flashbang", "CBasePlayerWeapon_ShouldWpnIdle", .Post = false)
}
// public CBasePlayerWeapon_ShouldWpnIdle(const pWeapon)
// {
// SetHamReturnInteger(true)
// return HAM_SUPERCEDE;
// }
#if defined PL_DEBUG
public CBasePlayer_OnSpawnEquip(const pPlayer)
{
rg_give_item(pPlayer, "weapon_flashbang")
rg_set_user_bpammo(pPlayer, WEAPON_FLASHBANG, 5)
rg_give_item(pPlayer, "weapon_hegrenade")
rg_set_user_bpammo(pPlayer, WEAPON_HEGRENADE, 5)
}
#endif
public CBasePlayer_ThrowGrenade(const pPlayer, const pWeapon, Float:vecSrc[3], Float:vecThrow[3], Float:time, const usEvent)
{
const ARG_TIME = 5
new pActiveItem = get_member(pPlayer, m_pActiveItem)
if (pActiveItem > 0 && (GRENADE_BS & (1 << get_member(pActiveItem, m_iId))))
{
new Float:flDmgTime = get_entvar(pActiveItem, var_dmgtime)
#if defined PL_DEBUG
server_print("[ThrowGrenade] DmgTime %f", flDmgTime)
#endif
if (flDmgTime > 0.0 && flDmgTime < time)
{
if (flDmgTime < 0.1)
{
vecThrow[0] = 0.0; vecThrow[1] = 0.0; vecThrow[2] = 0.0;
}
SetHookChainArg(ARG_TIME, ATYPE_FLOAT, flDmgTime)
}
}
}
// FIXFIX: Double louch
public CBasePlayer_Killed(const pPlayer, const pevAttacker, const iGib)
{
new pActiveItem = get_member(pPlayer, m_pActiveItem)
if (pActiveItem > 0 && (GRENADE_BS & (1 << get_member(pActiveItem, m_iId))))
{
if (get_entvar(pActiveItem, var_dmgtime) > 0.0)
{
set_entvar(pPlayer, var_button, get_entvar(pPlayer, var_button) & ~IN_ATTACK)
// set_member(pActiveItem, m_flStartThrow, 0.0)
}
}
}
public CBasePlayerWeapon_PrimAttack(const pWeapon)
{
if (pWeapon <= 0)
return HAM_IGNORED
new pPlayer = get_member(pWeapon, m_pPlayer)
new Float:flStartThrow = Float:get_member(pWeapon, m_flStartThrow)
new Float:flGameTime = get_gametime()
if (pPlayer > 0 && flStartThrow != 0.0)
{
new Float:flTime = floatmax(((flStartThrow - flGameTime) + EXPLODE_DELAY), 0.01)
client_print(pPlayer, print_center, "Взрыв через %0.1f секунд!", flTime)
set_entvar(pWeapon, var_dmgtime, flTime)
if (flGameTime > flStartThrow + EXPLODE_DELAY)
{
ExecuteHam(Ham_Weapon_WeaponIdle, pWeapon)
if (get_member(pPlayer, m_rgAmmo, ExecuteHam(Ham_Item_PrimaryAmmoIndex, pWeapon)) <= 0)
{
ExecuteHam(Ham_Weapon_RetireWeapon, pWeapon) // force switch to best weapon
}
}
}
return HAM_IGNORED
}
В чём проблема может быть?
В этой теме было размещено решение! Перейти к решению.