Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

изменение урона оружия

Статус пользователя GOOD FELLOW
сообщение 20.3.2014, 14:20
Сообщение #1


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

значит так, сделал я плагин (оружие), и увеличиваю ему дамаг (например в 20 раз), но он не увеличивается

я зарегистрировал массив Код:
szDamage[33]
для счетчика дамага

отловил урон Код:
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")


и собственно прописал увеличение урона

Код:
public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_AK47 && g_HasAk[attacker] )
{
SetHamParamFloat(4, szDamage[attacker] * 20)
}
}


проблема: урон не увеличивается. что не так?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя offtop2012
сообщение 20.3.2014, 14:28
Сообщение #2


Стаж: 13 лет

Сообщений: 878
Благодарностей: 126
Полезность: 356

Код:
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage", 0)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 20.3.2014, 14:36
Сообщение #3


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

ничего не изменилось

Код:
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <cstrike>

#define is_valid_player(%1) (1 <= %1 <= 32)


new AK_V_MODEL[64] = "models/gold/v_ak47.mdl"
new AK_P_MODEL[64] = "models/gold/p_ak47.mdl"

new cvar_custommodel, cvar_uclip


new bool:g_HasAk[33]



const Wep_ak47 = ((1<<CSW_AK47))

public plugin_init()
{


cvar_custommodel = register_cvar("ga_model", "1")
cvar_uclip = register_cvar("ga_clip", "1")
register_clcmd("say /ga47", "golden_ak")

register_plugin(PLUGIN, VERSION, AUTHOR)

register_event("DeathMsg", "Death", "a")
register_event("WeapPickup","checkModel","b","1=19")
register_event("CurWeapon","checkWeapon","be","1=1")
register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage", 0)
register_forward( FM_CmdStart, "fw_CmdStart" )
RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)

}

public golden_ak(player)
{
if ( user_has_weapon(player, CSW_AK47) )
{
drop_prim(player)
}

give_item(player, "weapon_ak47")
g_HasAk[player] = true;
}

public client_connect(id)
{
g_HasAk[id] = false
}

public client_disconnect(id)
{
g_HasAk[id] = false
}

public Death()
{
g_HasAk[read_data(2)] = false
}

public fwHamPlayerSpawnPost(id)
{
g_HasAk[id] = false
}

public plugin_precache()
{
precache_model(AK_V_MODEL)
precache_model(AK_P_MODEL)
}


public checkModel(id)
{

new szWeapID = read_data(2)

if ( szWeapID == CSW_AK47 && g_HasAk[id] == true && get_pcvar_num(cvar_custommodel) )
{
set_pev(id, pev_viewmodel2, AK_V_MODEL)
set_pev(id, pev_weaponmodel2, AK_P_MODEL)
}
return PLUGIN_HANDLED
}

public checkWeapon(id)
{
new plrClip, plrAmmo, plrWeap[32]
new plrWeapId

plrWeapId = get_user_weapon(id, plrClip , plrAmmo)

if (plrWeapId == CSW_AK47 && g_HasAk[id])
{
checkModel(id)
}
else
{
return PLUGIN_CONTINUE
}

if (plrClip == 0 && get_pcvar_num(cvar_uclip))
{
// If the user is out of ammo..
get_weaponname(plrWeapId, plrWeap, 31)
// Get the name of their weapon
give_item(id, plrWeap)
engclient_cmd(id, plrWeap)
engclient_cmd(id, plrWeap)
engclient_cmd(id, plrWeap)
}
return PLUGIN_HANDLED
}



public fw_TakeDamage(victim, inflictor, attacker, Float:szDamage)
{
if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_AK47 && g_HasAk[attacker] )
{
szDamage = szDamage * 100
SetHamParamFloat(4, szDamage)
}
}






stock drop_prim(id)
{
new weapons[32], num
get_user_weapons(id, weapons, num)
for (new i = 0; i < num; i++) {
if (Wep_ak47 & (1<<weapons[i]))
{
static wname[32]
get_weaponname(weapons[i], wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}


Отредактировал: GOOD FELLOW, - 20.3.2014, 14:37
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 20.3.2014, 15:06
Сообщение #4
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

убирать лишние проверки перед * 20

и тестить, дебаг делать не учили?

Отредактировал: csnet, - 20.3.2014, 15:06


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 20.3.2014, 20:18
Сообщение #5


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

Код:
SetHamParamFloat(4, szDamage[attacker] * 20)
===>
Код:
SetHamParamFloat(4, damage * 20);

Не нужно никаких массивов.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: