Русское сообщество по скриптингу

Помогите сделать выдачу EX

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Помогите сделать выдачу EX

Сообщение Hus3n » 13 июн 2019, 04:47

Здравствуйте . Подскажите пожалуйста , как через нативы выдавать EX либо LVL через другой плагин?
Подключаю инклуды а как осуществить саму команду выдачи? Натив zp_set_user_ex и zp_get_user_xp.
Например, когда выдаю деньги , все делают так cs_set_user_money(id, cs_get_user_money(id) + 15000).
Аватара пользователя
Hus3n
 
Сообщения: 17
Зарегистрирован: 05 ноя 2016, 14:01
Благодарил (а): 12 раз.
Поблагодарили: 0 раз.
Языки программирования: Только Русский :D

Re: Помогите сделать выдачу EX

Сообщение 3BEPb » 13 июн 2019, 07:56

Инфа о нативах и эксперементы тебе в помощь.
Мне бы проще было проверить самому, нежели идти на форум и спрашивать такую ерунду.
Аватара пользователя
3BEPb
 
Сообщения: 119
Зарегистрирован: 16 авг 2014, 22:02
Откуда: Пряжа
Благодарил (а): 16 раз.
Поблагодарили: 15 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn

Re: Помогите сделать выдачу EX

Сообщение Hus3n » 13 июн 2019, 14:29

Я экспериментировал но вечно ошибка в компиляции. Ежели писать этих два бесполезных предложения , мог бы из пару слов дать пример использования
Аватара пользователя
Hus3n
 
Сообщения: 17
Зарегистрирован: 05 ноя 2016, 14:01
Благодарил (а): 12 раз.
Поблагодарили: 0 раз.
Языки программирования: Только Русский :D

Re: Помогите сделать выдачу EX

Сообщение xbass13 » 13 июн 2019, 15:07

Т.к. инклуд подключен, работа ведётся как с обычными паблик-функциями. zp_get_user_xp(id) и zp_set_user_ex(id, _количество_опыта_). Но это не точно, смотреть сам include надо

По аналогии с деньгами будет так: zp_set_user_ex(id, zp_get_user_xp(id) + _количество_опыта_)
Аватара пользователя
xbass13
 
Сообщения: 43
Зарегистрирован: 13 июн 2012, 21:20
Благодарил (а): 24 раз.
Поблагодарили: 9 раз.
Опыт программирования: Больше трех лет
Языки программирования: pawn, c++, js, php

Re: Помогите сделать выдачу EX

Сообщение Leonidddd » 14 июн 2019, 17:12

Hus3n, можно сделать через консоль, но как по мне, лучше сделать через меню игроков. Пример из своих меню получения списка игроков в новой системе(естественно, флаг "b" убрать в get_players, а то только мертвые высветятся и повырезать лишнего и вполне норм для выдачи будет):

Код: Выделить всё
public ShowMenuPlayerRevive(id){
    
    new menu 
= menu_create( "\wВыберите игрока для \yвоскрешения :", "MenuReviverPlayer_Handler" );

    new players[32], pnum, tempid;

    new s_Name[32], s_Player[10];
    
    get_players
( players, pnum, "bch" );
    for ( new i; i<pnum; i++ )
    {
        tempid = players[i];
        if(id == tempid) continue;
        
        get_user_name
(tempid, s_Name, charsmax(s_Name))
        num_to_str(tempid, s_Player, charsmax(s_Player))
        menu_additem(menu, s_Name, s_Player, 0)
    }
    menu_setprop(menu,MPROP_NEXTNAME,"Далее");
    menu_setprop(menu,MPROP_BACKNAME,"Назад");
    menu_setprop(menu,MPROP_EXITNAME,"Выход"); 
    menu_display
( id, menu, 0 );
}

public MenuReviverPlayer_Handler( id, menu, item )
{
    if ( item == MENU_EXIT )
    {
        menu_destroy( menu );
        return PLUGIN_HANDLED;
    }
    
    new szData
[6], szName[64];
    new _access, item_callback;
    menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );

    new pIndex = str_to_num( szData );
    
    new num_f 
= random_num(0,5);
    new num_s = random_num(0,5);
    
    while
(num_f == num_s){
        num_s = random_num(0,5);
    }
    
    if
(!is_user_connected(pIndex)){
        menu_destroy( menu );
        PrintChatEx(0, "%s[Boss]%s Нельзя возродить т.к. он вышел из игры ",colors[num_f], colors[num_s]);
        ShowMenuPlayerRevive(id);
        return PLUGIN_HANDLED;
    }
    
    new name_boss
[33], name_player[33];
    
    get_user_name
(id, name_boss, charsmax(name_boss));
    get_user_name(pIndex, name_player, charsmax(name_player));
    
    if
(is_user_alive(pIndex)){
        
        menu_destroy
( menu );
        PrintChatEx(0, "%s[Boss]%s Нельзя возродить %s, он и так жив ",colors[num_f], colors[num_s], name_player);
        ShowMenuPlayerRevive(id);
        return PLUGIN_HANDLED;
    }
    
    if
(AliveCt() < 4 && !g_Owner[id]) {

        PrintChatEx(id, "%s[Boss]%s %s, живых КТ меньше 4, сейчас нельзя возрождать других игроков! ",colors[num_f], colors[num_s], name_boss);
        menu_destroy(menu);
        
        return ShowReviveMenu
(id);
    }

    if(dr_is_user_ghost(pIndex))
        dr_set_user_ghost(pIndex, false);

    ExecuteHamB(Ham_CS_RoundRespawn, pIndex);
    PrintChatEx(0, "%s[Boss]%s Игрок, %s, возродил игрока %s",colors[num_f], colors[num_s], name_boss, name_player);
    
    menu_destroy
(menu);
    
    ShowReviveMenu
(id);
    
    return PLUGIN_HANDLED
;


После выбора игрока можно открыть следующее меню(предварительно сохранив индекс того игрока MassiveWithPlayer[id] = pIndex, где id- это индекс админа или кто там дает, pIndex - индекс игрока, которому нужно дать ех) с выбором кол-ва ех или как его там (можно добавить пункт через messagemode, если есть силы и желание). И уже с сохраненным индексом игрока в массиве по индексу выдающего можно легко выставить через
Код: Выделить всё
new pIdPlayer = MassiveWithPlayer[id]
zp_set_user_ex(pIdPlayer , zp_get_user_xp(pIdPlayer) + iAmountEx); 
Аватара пользователя
Leonidddd
Модератор
 
Сообщения: 2212
Зарегистрирован: 08 апр 2012, 18:13
Откуда: г. Запорожье
Благодарил (а): 180 раз.
Поблагодарили: 616 раз.


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], Google [Bot] и гости: 0