Помощь и направление в Pawn | WILL BE

Сообщения
493
Реакции
90
Помог
5 раз(а)
Denzer, до этого использовал FreezeTime + ResetMaxSpeed для Т, и этого было достаточно
15 Май 2020
Так и не пойму, что не так-то, не в первый раз работаю с таском, а понять не могу почему он не выполняется
Код:
#define TASKID_TASK 6133

set_task(5.0, "UnFrozenCT", TASKID_TASK);

public UnFrozenCT(const player)
    set_entvar(player, var_flags, get_entvar(player, var_flags) & ~FL_FROZEN);
15 Май 2020
Добавлял в UnFrozenCT удаление таска, но эффекта 0
 
Сообщения
1,701
Реакции
1,512
Помог
26 раз(а)
WILL_BE, так ты у 6133 индекс снимаешь, а не у игрока.
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
WILL_BE,
Код:
set_task(5.0, "UnFrozenCT", TASKID_TASK + id);

public UnFrozenCT(player)

{
     player -= TASKID_TASK

     set_entvar(player, var_flags, get_entvar(player, var_flags) & ~FL_FROZEN);
}
 
Сообщения
493
Реакции
90
Помог
5 раз(а)
И компилятор выкидывает ERROR [62]: must be lvalue (non-constant)
15 Май 2020
Nordic Warrior, не знал о таком варианте О_О
15 Май 2020
поправил const
15 Май 2020
Думаю, может проверку на is_user_alive добавить в UnFrozen? Не будет ли она лишней?
15 Май 2020
Хотелось бы от вас увидеть лучшее виденье создание таймера, пока набросал:
Код:
new szTime[33];

g_syncHudMessage = CreateHudSyncObj();

szTime[id] = 5;

set_hudmessage(0, 255, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.1, 1.0, -1);
ShowSyncHudMsg(i, g_syncHudMessage, "Начинаем через %d", szTime[id]);
szTime[id]--
15 Май 2020
Думаю, в идеале дергать точное время таймера до начала игры из set_task FrozenCT
 
Сообщения
1,701
Реакции
1,512
Помог
26 раз(а)
WILL_BE, не проще в таске циклом снять у всех фрозен?
 
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
Стиль желательно один использовать, чтобы такого как ниже не было:

Код:
public PrimaryAttack(this)
- this
Код:
public UnFrozenCT(const player)
- const player
Код:
public PlayerBlind(const index, const inflictor, const attacker, const Float:fadeTime, const Float:fadeHold, const alpha, Float:color[3])
- const index ...
Код:
public RoundEnd(WinStatus: iStatus, ScenarioEventEndRound: iEvent, Float: flDelay)
- венгерская нотация + пробелы после типа (тега), если сравнивать с предыдущим примером

Если у террориста гранат не останется то и ножа не будет, точно так и надо?

Код:
        else
        {
            rg_give_item(i, "weapon_smokegrenade");
            rg_give_item(i, "weapon_flashbang");
            rg_set_user_bpammo(i, WEAPON_FLASHBANG, 2);
            rg_set_user_footsteps(i, true);
        }
 
Последнее редактирование модератором:
Сообщения
1,701
Реакции
1,512
Помог
26 раз(а)
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
fl0wer, он же не вызовется, если игрок жив. А если КТ выиграет и выживет, то после свапа, он будет с ножом за Т.
 
Сообщения
1,701
Реакции
1,512
Помог
26 раз(а)
Minni, ну поставь мембер чтоб вызвался или через натив вызови.
 
Сообщения
493
Реакции
90
Помог
5 раз(а)
Если у террориста гранат не останется то и ножа не будет, точно так и надо?
Да
15 Май 2020
На данный момент код таков:
Код:
#include <amxmodx>
#include <hamsandwich>
#include <reapi>

#define TASKID_TASK 6123

new g_syncHudMessage;

new szTime[33];

public plugin_init()
{
    register_plugin("Hide'N'Seek Mode", "1.0b", "CG");

    RegisterHookChain(RG_CBasePlayer_Spawn, "Player_Spawn", .post = true);
    RegisterHookChain(RG_CSGameRules_RestartRound, "RestartRound_Post", .post = true);
    RegisterHookChain(RG_PlayerBlind, "PlayerBlind", .post = false);
    RegisterHookChain(RG_RoundEnd, "RoundEnd", .post = false);

    RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "PrimaryAttack");

    g_syncHudMessage = CreateHudSyncObj();
}

public plugin_cfg()
{
    set_cvar_num("sv_airaccelerate", 100);
    set_cvar_num("mp_buytime", 0);
    set_cvar_num("mp_give_player_c4", 0);
}

public Player_Spawn(player)
{
    if(!is_user_alive(player))
        return;

    rg_remove_all_items(player);

    if(get_member(player, m_iTeam) == TEAM_CT)
        rg_give_item(player, "weapon_knife");
    else
    {
        rg_give_item(player, "weapon_smokegrenade");
        rg_give_item(player, "weapon_flashbang");
        rg_set_user_bpammo(player, WEAPON_FLASHBANG, 2);
        rg_set_user_footsteps(player, true);
    }
}

public RestartRound_Post()
{
    for(new i = 1; i <= MaxClients; i++)
    {
        if(!is_user_alive(i))
            return;

        szTime[id] = 5;

        set_hudmessage(0, 255, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.1, 1.0, -1);
        ShowSyncHudMsg(i, g_syncHudMessage, "Начинаем через %d", szTime[id]);
        szTime[id]--

        if(get_member(i, m_iTeam) == TEAM_CT)
        {
            set_entvar(i, var_flags, get_entvar(i, var_flags) | FL_FROZEN);

            set_task(5.0, "UnFrozenCT", i + TASKID_TASK);
        }
    }
}

public UnFrozenCT(player)
{
    player -= TASKID_TASK;
    set_entvar(player, var_flags, get_entvar(player, var_flags) & ~FL_FROZEN);
}

public PlayerBlind(index, inflictor, attacker, Float:fadeTime, Float:fadeHold, alpha, Float:color[3])
{
    if(index == attacker || (get_member(index, m_iTeam) == get_member(attacker, m_iTeam)))
    {
        set_member(index, m_blindAlpha, 0);

        return HC_SUPERCEDE;
    }

    return HC_CONTINUE;
}

public RoundEnd(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay)
{
    if(status != WINSTATUS_CTS && status != WINSTATUS_TERRORISTS)
        return;

    if(status == WINSTATUS_CTS)
        rg_swap_all_players();
}

public PrimaryAttack(this)
{
    new player = get_member(this, m_pPlayer);

    if(get_member(player, m_iTeam) == TEAM_CT)
        ExecuteHamB(Ham_Weapon_SecondaryAttack, this);

    return HAM_SUPERCEDE;
}
15 Май 2020
1) не дописан timer
2) имеется ли не модуль, а именно какой-то код semiclip'a
 
Сообщения
493
Реакции
90
Помог
5 раз(а)
Nordic Warrior, ну да ладно, жду просмотра кода (что и где поправить)
15 Май 2020
И еще вопрос, видел сток ScreenFade и имеется UTIL_ScreenFade, в чем разница?
 
Сообщения
493
Реакции
90
Помог
5 раз(а)
Появился насущный вопрос: имеет плагин кастомный Deagle. Выдача его идет через натив. И имеется меню со стандартным и кастомным Deagle'ом. После того как в руках побывал кастомный, пытаюсь выдать стандартный - то, о чудо, остается кастомный..
28 Май 2020
Код:
case 1: rg_give_items(id, "weapon_deagle", 35);
case 2: give_weapon_revolver(id);
28 Май 2020
В самом нативе: rg_give_custom_item(id, "weapon_deagle", GT_REPLACE, 11). GT_DROP_AND_REPLACE - не подходит, ибо при каждом Spawn'е игрок будет дропать предыдущий Deagle. Самое хорошее решение именно GT_REPLACE, но к сожалению не работает так, как хотелось бы.
 
Последнее редактирование:

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

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