Автоматическа выдача в Health Grenade by Radius

Сообщения
42
Реакции
10
TODO:
— автоматическая выдача лечебной гранаты при спавне
— проверка на флаги z и t


C++:
#include <amxmodx>
#include <hamsandwich>
#include <health_grenade>

#define PLUGIN "Health Grenade Bonus"
#define VERSION "1.0"
#define AUTHOR "Radius & s.k"

const AUTO_EQUIP_HG_NUM = 1;
const POST = 1;

public plugin_init()
{
  register_plugin(PLUGIN, VERSION, AUTHOR);

  RegisterHam (Ham_Spawn , "player", "player_Spawn_Post", POST);
}

public player_Spawn_Post(id)
{
  if (!is_user_alive(id)) {
    return HAM_IGNORED;
  }

  new need_add_hg_num = AUTO_EQUIP_HG_NUM - hg_get_health_grenades_num(id);

  if (need_add_hg_num > 0) {
    hg_give_health_grenade(id, need_add_hg_num);
  }

  return HAM_IGNORED;
}
C++:
public access_check(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
    return PLUGIN_HANDLED
}

public player_Spawn_Post(id)
{
  if (!is_user_alive(id)) {
    return HAM_IGNORED;
  }

  new need_add_hg_num = AUTO_EQUIP_HG_NUM - hg_get_health_grenades_num(id);

  if (need_add_hg_num > 0) {
    hg_give_health_grenade(id, need_add_hg_num);
  }

  return HAM_IGNORED;
}
 
Последнее редактирование:

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
Да, вполне подойдет.
Но, ты должен использовать функцию access_check().
От её ответа должно зависеть получит игрок гранату или нет.
 
Сообщения
42
Реакции
10
Ayk, можете подробнее объяснить?
 

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
Вот, изучай:
Код:
bool:access_check(id)
{
    if( get_user_flags(id) & ADMIN_LEVEL_H )
           return true;
        
    return false;
}

public player_Spawn_Post(id)
{
  if( !is_user_alive(id) || !access_check(id) ) { // мёртв или не имеет нужный флаг
    return HAM_IGNORED;
  }

  new need_add_hg_num = AUTO_EQUIP_HG_NUM - hg_get_health_grenades_num(id);

  if (need_add_hg_num > 0) {
    hg_give_health_grenade(id, need_add_hg_num);
  }

  return HAM_IGNORED;
}
 
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
Не проще-ли вообще так сделать? Не?

Код:
public player_Spawn_Post(id)
{
  if (!is_user_alive(id) || ~get_user_flags(id) & ADMIN_LEVEL_H) {
    return HAM_IGNORED;
  }

  new need_add_hg_num = AUTO_EQUIP_HG_NUM - hg_get_health_grenades_num(id);

  if (need_add_hg_num > 0) {
    hg_give_health_grenade(id, need_add_hg_num);
  }

  return HAM_IGNORED;
}
автоматическая выдача лечебной гранаты в начале раунда
Spawn - это не начало раунда, ибо возродится можно не только во время активного freezetime.
 
Сообщения
17
Реакции
-1
Помог
2 раз(а)
Код:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <health_grenade>
new g_szCondigsDir[128];
new const CONFIG_NAME[] = "/configs/health_grenade.cfg";
public plugin_precache(){
    Auto_Config()
    server_cmd("exec %s", g_szCondigsDir);
    server_exec();
}
public plugin_init(){
    register_plugin("Health Grenade Give", "1.3.0", "Radius & detu mou")
    register_cvar ("hg_access_flags", "m");
    RegisterHam(Ham_Spawn,"player","player_respawn")
}
public player_respawn(id){
    new flag[128];
    get_cvar_string("hg_access_flags", flag, charsmax(flag));
	if(hg_get_health_grenades_num(id) == 0 && get_user_flags(id) & read_flags(flag))
	{
        hg_give_health_grenade(id,1)
    }
}
stock Auto_Config(){
    get_basedir(g_szCondigsDir, charsmax(g_szCondigsDir));
    add(g_szCondigsDir, charsmax(g_szCondigsDir), CONFIG_NAME);
}
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу