• Уважаемые пользователи!
    За решением проблем с работой плагинов, компиляцией, падением сервера и прочими обращайтесь в раздел Помощи!
    Данная тема предназначена для обсуждения плагина, его функционала, принципа работы и предложений.

Разработка дублирование презентов

Статус
В этой теме нельзя размещать новые ответы.
Если хотите открыть тему, нажмите кнопку Жалоба в первом сообщении.

alan191

Участник
Сообщения
121
Реакции
2
Баллы
18
Техническое задание
дублирование презентов и маленькая переделка
Здравствуйте, если можно сделайте такое:
1) Презенты выпадают каждый раунд (количество настроить самому) но с 3 раунда
2) и если нет столько case пусть презенты дублируются
3) худ в правом нижнем углу не пропадает
 
3) худ в правом нижнем углу не пропадает
Сообщение отображается 20 секунд. Больше- не имеет смысла. Ваши "клиенты" и без этого не в восторге от худа.

2) и если нет столько case пусть презенты дублируются
Пусть дублируются. Им никто не запрещает.

1) Презенты выпадают каждый раунд (количество настроить самому) но с 3 раунда
Презенты выпадают по таймеру. Блокировать до 3-го раунда и спавнить в начале каждого раунда- делается самостоятельно и не имеет отношения к основному плагину. Не забывайте про серверы без раундов.
 
@zhorzh78, не замечал что дублируются ( На последней версии не тестировал. )
 
@V1adJkee, Из 20-ти презентов при спавне 3-5 штук вполне могут не дублироваться
.. или что-то другое имеется ввиду?
 
@zhorzh78, например, всего создано 2 презента, в кфг указан спавн 5, заспавнятся лишь 2, опять же повторяюсь, на новой версии не тестировал.
 
всего создано 2 презента, в кфг указан спавн 5, заспавнятся лишь 5
Заспавнятся 2. Можно это обойти и заспавнить вручную в доп.плагине
C++:
native CmsSpawnPresentById(idKey, Float:origin[]={0.0, 0.0, 0.0}, bool:noanons = false, owner = 0, Float:flTime = 0.0)
пример для текущей ситуации
CmsSpawnPresentById(0) заспавнит еще 2
 
так сколько в итоге спавнится подарков? Я брльше 2 не вижу
 
@alan191, Логично, что вы не можете дать 5 рублей, если у вас их всего 2.
Вопрос стоял о дублировании, а не спавне больше чем имеется. Дублирование- это когда 2 презента- одинаковые.
 
@alan191,
Код:
new rand = random_num(1,3); // рандомим кол-во доп. подарков

for(new i; i != rand; i++) // создаём цикл который будет спавнить доп. коробки, впихивай в старт раунда или куда тебе нужоно
{

    CmsSpawnPresentById(айди_коробки);// Вызываем функцию спавна, в аргументах передаём айди коробки.

}
 
C++:
#include <amxmodx>
#include <gamecms_present>
#include <fun>
#include <cstrike>

new gRoundNum

public plugin_init()
{
    register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0"); //новый раунд
}

//Если основной плагин презентов не стартанул, останавливаем
public OnPresentCoreStopped()
    pause("d");
    
public plugin_cfg()
{
    set_cvar_num("cms_present_nums", 1); //кол-во одновременно выпадающих ящиков. Нам нужен 1.
    
    CmsAddPresent(300, "Автомат АК-47", -1, 0, 0, "sunduk77");
    CmsAddPresent(301, "Автомат M4A1", -1, 0, 0, "sunduk77");
    CmsAddPresent(302, "Игровые 500$", -1, 0, 0, "sunduk77");
    //и т.д...
}

public EventRoundStart()
{
    //например, в 4-м раунде спавним 2 любых презента, даже если он всего один
    if(gRoundNum++ == 4)
    {
        CmsSpawnPresentById(0);
        CmsSpawnPresentById(0);
    }
}

//событие попытки поднять презент
public OnTakePresent(id, itemId, iEntity)
{
    switch(itemId)
    {
        case 300:
        {
            if(give_item(id, "weapon_ak47"))
            {
                //при поднятии презента спавним следующий
                CmsSpawnPresentById(0); //и так в каждом кейсе поднятия
                cs_set_user_bpammo(id, CSW_AK47, 90);
                return PLUGIN_HANDLED;
            }
        }
        case 301:
        {
            if(give_item(id, "weapon_m4a1"))
            {
                cs_set_user_bpammo(id, CSW_M4A1, 90);
                return PLUGIN_HANDLED;
            }
        }
        case 302:
        {
            cs_set_user_money(id, min(cs_get_user_money(id) + 500, 16000));
            return PLUGIN_HANDLED;
        }
        //и т.д...
    }
    
    return PLUGIN_CONTINUE;
}
 
Учитывая, что такой спавн является "ручным", то нужно:
- в plugin_cfg установить ручной режим спавна
C++:
CmsPresentSetSpawnMode(2)
- а презентам желательно добавить время "жизни" в секундах
C++:
CmsSpawnPresentById(0, .flTime = 30.0);
либо указать его при создании:
CmsAddPresent(300, "Автомат АК-47", -1, 0, 0, "sunduk77",_,30.0);
 
@zhorzh78,
@alan191, Логично, что вы не можете дать 5 рублей, если у вас их всего 2.
Вопрос стоял о дублировании, а не спавне больше чем имеется. Дублирование- это когда 2 презента- одинаковые.
почемуже, презентов у меня 5, в cfg прописано для спавна 5, но всегда выпадает 2
 
@alan191, Плагин не может выдать преезнтов, которых не существует, ответ был дан выше.
 
@zhorzh78,
C++:
#include <amxmodx>
#include <gamecms_present>
#include <fun>
#include <cstrike>

new gRoundNum

public plugin_init()
{
    register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0"); //новый раунд
}

//Если основной плагин презентов не стартанул, останавливаем
public OnPresentCoreStopped()
    pause("d");
   
public plugin_cfg()
{
    set_cvar_num("cms_present_nums", 1); //кол-во одновременно выпадающих ящиков. Нам нужен 1.
   
    CmsAddPresent(300, "Автомат АК-47", -1, 0, 0, "sunduk77");
    CmsAddPresent(301, "Автомат M4A1", -1, 0, 0, "sunduk77");
    CmsAddPresent(302, "Игровые 500$", -1, 0, 0, "sunduk77");
    //и т.д...
}

public EventRoundStart()
{
    //например, в 4-м раунде спавним 2 любых презента, даже если он всего один
    if(gRoundNum++ == 4)
    {
        CmsSpawnPresentById(0);
        CmsSpawnPresentById(0);
    }
}

//событие попытки поднять презент
public OnTakePresent(id, itemId, iEntity)
{
    switch(itemId)
    {
        case 300:
        {
            if(give_item(id, "weapon_ak47"))
            {
                //при поднятии презента спавним следующий
                CmsSpawnPresentById(0); //и так в каждом кейсе поднятия
                cs_set_user_bpammo(id, CSW_AK47, 90);
                return PLUGIN_HANDLED;
            }
        }
        case 301:
        {
            if(give_item(id, "weapon_m4a1"))
            {
                cs_set_user_bpammo(id, CSW_M4A1, 90);
                return PLUGIN_HANDLED;
            }
        }
        case 302:
        {
            cs_set_user_money(id, min(cs_get_user_money(id) + 500, 16000));
            return PLUGIN_HANDLED;
        }
        //и т.д...
    }
   
    return PLUGIN_CONTINUE;
}
то есть если вписать это то презенты будут выпадать с 3 раунда?

new gRoundNum
public plugin_init()
{
register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0"); //новый раунд
}
 
почемуже, презентов у меня 5, в cfg прописано для спавна 5, но всегда выпадает 2
А почему выпадает 2 написано в логе. Для этого, достаточно прочесть конфиг плагина, включить в нем запись логов и предоставить их.
В остальном- читайте, вникайте, пробуйте.
 
Статус
В этой теме нельзя размещать новые ответы.
Если хотите открыть тему, нажмите кнопку Жалоба в первом сообщении.
Назад
Сверху