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

Вопрос с меню - установка гравитации  [Решено]

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

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

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

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

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

Вопрос с меню - установка гравитации  [Решено]

Сообщение Gavrik » 18 окт 2017, 01:44

Здравствуйте! У меня не получается сделать через меню выдачу (установку) гравитации выбранному игроку.
Хотел переделать плагин передачи аммо, но только с гравити, но не получается никак, вернее почти получилось, но не меняется в меню гравитация, подскажите что да как сделать?
Код: Выделить всё
#include <amxmodx>
#include <cstrike>
#include <fun>

new Float:d_grav[33]
new v_name[33][33]
new v_id[33]

#define PLUGIN "Gravity Menu"
#define VERSION "1.0"
#define AUTHOR "NoName"

public client_connect(id)
{
    d_grav[id]=1.0
    v_id
[id]=id
    v_name
[id][32]=get_user_name(id,v_name[id],charsmax(v_name[]))
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_clcmd("amx_gravity","gravity_handled")
}

public gravity_handled(id)
{
    static menu[500]
    formatex(menu, 499, "\rМеню гравитации:")
    new i_Menu = menu_create(menu, "gravity_sub")

    formatex(menu, charsmax(menu), "Какую гравитацию:\y%f",d_grav[id])
    menu_additem(i_Menu, menu, "1")

    formatex(menu, charsmax(menu), "Получатель: \y%s^n",v_name[id])
    menu_additem(i_Menu, menu, "2")

    formatex(menu, charsmax(menu), "Установить")
    menu_additem(i_Menu, menu, "3")

    menu_setprop(i_Menu, MPROP_NEXTNAME, "Вперёд")
    menu_setprop(i_Menu, MPROP_BACKNAME, "Назад")
    menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")

    menu_display(id, i_Menu, 0)
    return PLUGIN_HANDLED
}

public gravity_sub(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    
}
    new s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo
(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key 
= str_to_num(s_Data)
    switch(i_Key)
    {
        case 1:
        {
            if(d_grav[id]<0.2)d_grav[id]=0.2; else
            if
(d_grav[id]>=0.2&&d_grav[id]<0.5)d_grav[id]=0.5; else
            if
(d_grav[id]>=0.5&&d_grav[id]<0.7)d_grav[id]=0.7;else d_grav[id]=1.0
            gravity_handled
(id)
        }
        case 2:player_select(id)
        case 3:give_money(id)
    }
    menu_destroy(menu)
    return PLUGIN_HANDLED
}
public player_select(id)
{
    new i_Menu = menu_create("\rВыберите получателя: ", "player_select_sub")
    new s_Players[32], i_Num, i_Player
    new s_Name
[32], s_Player[10]
    get_players(s_Players, i_Num)    
    for 
(new i; i < i_Num; i++)
    {
        i_Player = s_Players[i]
        get_user_name(i_Player, s_Name, charsmax(s_Name))
        num_to_str(i_Player, s_Player, charsmax(s_Player))
        menu_additem(i_Menu, s_Name, s_Player, 0)
    }
    menu_setprop(i_Menu, MPROP_NEXTNAME, "Вперёд")
    menu_setprop(i_Menu, MPROP_BACKNAME, "Назад")
    menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
    
    menu_display
(id, i_Menu, 0)
    return PLUGIN_HANDLED
}

public player_select_sub(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    
}
    new s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo
(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    new i_Player = str_to_num(s_Data)
    get_user_name(i_Player, v_name[id], charsmax(  v_name[]))
    v_id[id]=i_Player
    menu_destroy
(menu)
    gravity_handled(id)
    return PLUGIN_HANDLED
 
}
public give_money(id)
{
    new debug_v_name[33][33];get_user_name(v_id[id], debug_v_name[id],charsmax(  debug_v_name))
    set_user_gravity(v_id[id],d_grav[id])
    client_printcolor(v_id[id],"!yВам установлено !t %f !yгравитации!", d_grav[id])
    gravity_handled(id)
}
public client_disconnect(id)
{
    for (new i; i < 33; i++)if(v_id[i]==id)v_id[i]=i,v_name[i][32]=get_user_name(i,v_name[i],charsmax(v_name[]))
}

stock client_printcolor(const id, const input[], any:...)
{
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all
(msg, 190, "!g", "^4") // Green Color
    replace_all(msg, 190, "!y", "^1") // Default Color
    replace_all(msg, 190, "!t", "^3") // Team Color
    
    if 
(id) players[0] = id; else get_players(players, count, "ch") 
    
{
        for ( new i = 0; i < count; i++ )
        {
            if ( is_user_connected(players[i]) )
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Gavrik
 
Сообщения: 29
Зарегистрирован: 19 ноя 2009, 21:51
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.

Re: Вопрос с меню - установка гравитации

Сообщение RevCrew » 18 окт 2017, 14:09

Gavrik, ну вы же сами условия поставили

Код: Выделить всё
if(d_grav[id]<0.2)d_grav[id]=0.2; else
            if(
d_grav[id]>=0.2&&d_grav[id]<0.5)d_grav[id]=0.5; else
            if(
d_grav[id]>=0.5&&d_grav[id]<0.7)d_grav[id]=0.7;else d_grav[id]=1.0


Попробуйте вместо условий что то типа
Код: Выделить всё

 
if(d_grav[id] > 1.0d_grav[id] = 0.0;
 
d_grav[id] += 0.2;
 
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Re: Вопрос с меню - установка гравитации

Сообщение Gavrik » 18 окт 2017, 23:00

RevCrew писал(а):Gavrik, ну вы же сами условия поставили

Да я просто изменил плагин, а про эти условия забыл. Спасибо большое, заработало.

И ещё такой вопрос, можно на подобии такого меню, сделать выдачу оружий?
Аватара пользователя
Gavrik
 
Сообщения: 29
Зарегистрирован: 19 ноя 2009, 21:51
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.

Re: Вопрос с меню - установка гравитации

Сообщение 3BEPb » 21 окт 2017, 12:30

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

Re: Вопрос с меню - установка гравитации

Сообщение Gavrik » 23 окт 2017, 21:00

3BEPb писал(а):Можно, если с нативами разбираешься.

Плохо разбираюсь.
Тему можно закрыть. Спасибо.
Аватара пользователя
Gavrik
 
Сообщения: 29
Зарегистрирован: 19 ноя 2009, 21:51
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.


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

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

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