Търсих плъгини с радиус гранати, но са толкова различно написани, че нищо не ми говорят.
Дотук успях да добавя няколко реда..
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <hamsandwich>
#include <engine>
#include <customshop>
#if !defined DMG_GRENADE
#define DMG_GRENADE (1<<24)
#endif
#define PLUGIN_VERSION "1.0"
additem ITEM_BOMBDAMAGE;
new bool:g_bHasItem[33];
new Float:g_fDamage;
new Float:g_fExplodeAt[3];
public plugin_init()
{
register_plugin("CSHOP: Radius Grenade", PLUGIN_VERSION, "AMXX-BG");
register_cvar("CSHOPHEBomb", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
RegisterHam(Ham_TakeDamage, "player", "PreTakeDamage");
g_fDamage = cshop_get_float(ITEM_BOMBDAMAGE, "Damage");
g_fExplodeAt = cshop_get_float(ITEM_BOMBDAMAGE, "Radius");
}
public plugin_precache()
{
ITEM_BOMBDAMAGE = cshop_register_item("radiusbomb", "Radius BOMB", 30000, 1);
cshop_set_float(ITEM_BOMBDAMAGE, "Damage", 5.0);
cshop_set_float(ITEM_BOMBDAMAGE, "Radius", 1000.0);
}
public cshop_item_selected(id, iItem)
{
if(iItem == ITEM_BOMBDAMAGE)
g_bHasItem[id] = true;
}
public cshop_item_removed(id, iItem)
{
if(iItem == ITEM_BOMBDAMAGE)
g_bHasItem[id] = false;
}
public PreTakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits, fExplodeAt)
{
if(g_bHasItem[iAttacker] && iDamageBits & DMG_GRENADE)
SetHamParamFloat(4, fDamage * g_fDamage * g_fExplodeAt)
}
Код за потвърждение: Избери целия код
// C:\Users\User\Desktop\scripting\cshop_atomicbomb.sma(24) : error 033: array must be indexed (variable "g_fExplodeAt")
// C:\Users\User\Desktop\scripting\cshop_atomicbomb.sma(49) : error 033: array must be indexed (variable "g_fExplodeAt")
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <hamsandwich>
#include <engine>
#include <customshop>
#if !defined DMG_GRENADE
#define DMG_GRENADE (1<<24)
#endif
#define PLUGIN_VERSION "1.0"
additem ITEM_BOMBDAMAGE;
new bool:g_bHasItem[33];
new Float:g_fExplodeAt[3], iDamageMultiplier, iRadiusMultiplier;
public plugin_init()
{
register_plugin("CSHOP: Radius Grenade", PLUGIN_VERSION, "AMXX-BG");
register_cvar("CSHOPHEBomb", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED);
RegisterHam(Ham_TakeDamage, "player", "PreTakeDamage");
g_fExplodeAt[0] = cshop_get_float(ITEM_BOMBDAMAGE, "CenterRadius");
iDamageMultiplier = cshop_get_float(ITEM_BOMBDAMAGE, "iDamageMultiplier");
iRadiusMultiplier = cshop_get_float(ITEM_BOMBDAMAGE, "iRadiusMultiplier");
}
public plugin_precache()
{
ITEM_BOMBDAMAGE = cshop_register_item("radiusbomb", "Radius BOMB", 10, 1);
cshop_set_float(ITEM_BOMBDAMAGE, "Damage", 5.0);
cshop_set_float(ITEM_BOMBDAMAGE, "CenterRadius", 5000.0);
cshop_set_float(ITEM_BOMBDAMAGE, "iDamageMultiplier", 50.0);
cshop_set_float(ITEM_BOMBDAMAGE, "iRadiusMultiplier", 4000.0);
}
public cshop_item_selected(id, iItem)
{
if(iItem == ITEM_BOMBDAMAGE)
g_bHasItem[id] = true;
}
public cshop_item_removed(id, iItem)
{
if(iItem == ITEM_BOMBDAMAGE)
g_bHasItem[id] = false;
}
public PreTakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits, fExplodeAt, iDamageMultiplier, iRadiusMultiplier)
{
if(g_bHasItem[iAttacker] && iDamageBits & DMG_GRENADE)
SetHamParamFloat(4, fDamage * iDamageMultiplier * g_fExplodeAt[0] * iRadiusMultiplier);
}