Помогите поменять урон

victormevsa

Пользователь
Регистрация
5 Янв 2018
Сообщения
129
Симпатии
31
Пол
Мужской
Здравствуйте, я нашёл где-то в интернете рабочий плагин "Мега HE".
Я допилил его всем что мне нужно, но вот прикол в том что МНОЖИТЕЛЬ урона остаётся в новом раунде, как я бы не менял, всё ровно не хочет меняться на стандартный.
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fun>

new bool:he_damage[33] = false
new cvar_grenadedamage;
new cvar_nrgrenadedamage;

#define ACCESS_FLAG ADMIN_CHAT

public plugin_init()
{
register_plugin("Mega HE", "1.0b", "Marik & Slove.")

RegisterHam(Ham_TakeDamage, "player", "TakeDamage")
register_event("HLTV", "new_round", "a", "1=0", "2=0")
register_clcmd("buy_he", "buy_grenade")
register_clcmd("say /buy_he", "buy_grenade")
register_clcmd("say_team /buy_he", "buy_grenade")

cvar_grenadedamage = register_cvar("multipler","3.0");
cvar_nrgrenadedamage = register_cvar("standard","1.0");
}

public client_putinserver(id)
{
he_damage[id] = false;
}

public buy_grenade(id)
{
if(!cs_get_user_buyzone(id))
{
client_print_color(id, print_team_default,"^1Брать оружие можно только в ^4зоне ^1закупки.")
return PLUGIN_HANDLED
}

if(!is_user_connected(id) || !is_user_alive(id))
{
client_print_color(id, print_team_default,"^1Вы должны быть ^3живы ^1чтобы взять ^4Мега ^3гранату.")
return PLUGIN_CONTINUE;
}

if(user_has_weapon(id, CSW_HEGRENADE))
{
client_print_color(id, print_team_default,"^1У тебя уже есть ^4граната.")
}
else
{
if(get_user_flags(id)& ACCESS_FLAG)
{
if(cs_get_user_money(id) < 4500)
{
client_print_color(id, print_team_default,"^1Не хватает ^4денег ^1нужно^3 4500$.")
return PLUGIN_HANDLED;
}
else
{
cs_set_user_money(id, cs_get_user_money(id) - 4500)
give_item(id, "weapon_hegrenade")
he_damage[id] = true;
client_print_color(id, print_team_default,"^1Ты взял(а) ^4Мега гранату.")
}
}
else
{
client_print_color(id, print_team_default,"^1Чтобы ^4купить ^1привилегию: ^3vk.com/thedirtypublic")
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}

public TakeDamage(victim, inflicator, attacker, Float:damage, damage_type)
{
new Damag = get_pcvar_num(cvar_grenadedamage)
if(is_user_connected(attacker) && he_damage[attacker])
{
if(damage_type & (1<<24))
{
SetHamParamFloat(4, damage * Damag)
}
}
}

public new_round(victim, inflicator, attacker, Float:damage, damage_type)
{
new Damag = get_pcvar_num(cvar_nrgrenadedamage)
if(is_user_connected(attacker) && he_damage[attacker])
{
if(damage_type & (1<<24))
{
SetHamParamFloat(4, damage * Damag)
}
}
}

Помогите пожалуйста.
 

Вложения

Последнее редактирование:

wellasgood

Пользователь
Регистрация
22 Дек 2019
Сообщения
115
Симпатии
24
Пол
Мужской
ойй виключи! сделайте табуляцию кода нормальную, а то читать невозможно[DOUBLEPOST=1577223230][/DOUBLEPOST]Пример:

C++:
public func()
{
   if(a > b){
     b++;
   }
}
 

victormevsa

Пользователь
Регистрация
5 Янв 2018
Сообщения
129
Симпатии
31
Пол
Мужской

Вложения

R0mz1k

Пользователь
Регистрация
13 Июн 2018
Сообщения
3
Симпатии
1
Это
Код:
public new_round(victim, inflicator, attacker, Float:damage, damage_type)
{
    new Damag = get_pcvar_num(cvar_nrgrenadedamage)
    if(is_user_connected(attacker) && he_damage[attacker])
    {
        if(damage_type & (1<<24))
        {
            SetHamParamFloat(4, damage * Damag)
        }
    }
}

Замени на это
Код:
public new_round()
{
    for (new id = 1; id < 33; id++)
    {
        if(he_damage[id] == true && is_user_connected(id))
            he_damage[id] = false;
    }
}

Пробегать по циклу не хорошо, а по другому в данном событии не сделать.
 
K

kapangaIII

допилил его всем что мне нужно
public new_round(victim, inflicator, attacker, Float:damage, damage_type
register_event("HLTV", "new_round", "a", "1=0", "2=0")

Пробегать по циклу не хорошо, а по другому в данном событии не сделать.
Ok.
 

victormevsa

Пользователь
Регистрация
5 Янв 2018
Сообщения
129
Симпатии
31
Пол
Мужской

fantom

Разработчик
Регистрация
11 Июн 2017
Сообщения
426
Симпатии
293
Пол
Мужской
victormevsa, ивент нового раунда не имеет вообше аргументов victim, inflicator, attacker, Float:damage, damage_type. Вам уже указали как сделать
 

Vaqtincha

aggressive
Разработчик
Скриптер
Регистрация
28 Янв 2018
Сообщения
960
Симпатии
682
Пол
Мужской
fantom, имеет. если сильно хотеть
 

R0mz1k

Пользователь
Регистрация
13 Июн 2018
Сообщения
3
Симпатии
1
R0mz1k, arrayset Не не слышал
Да, действительно, можно сделать через arrayset. А разница какая ?

В arrayset ты так же пробегаешь по циклу
Код:
static cell AMX_NATIVE_CALL arrayset(AMX *amx, cell *params)
{
    cell value = params[2];

    if (!value)
    {
        memset(get_amxaddr(amx, params[1]), 0, params[3] * sizeof(cell));
    } else {
        int size = params[3];
        cell *addr = get_amxaddr(amx, params[1]);
        for (int i=0; i<size; i++)
        {
            addr[i] = value;
        }
    }

    return 1;
}

Поправьте если я ошибаюсь
 

d3m37r4

Скриптер
Постоялец
Регистрация
8 Июн 2017
Сообщения
742
Симпатии
393
Пол
Мужской
Telegram
@dmitry_isakow
R0mz1k, для любителей микрооптимизаций... К тому же зачем городить свой велесипед, если оно в готовом виде есть?
 
K

kapangaIII

Где ты видишь 'пробег по циклу' при обнулении?
 
Сверху Снизу