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

Организация выдачи предметов

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

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

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

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

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

Re: Организация выдачи предметов

Сообщение MrJunior » 02 фев 2018, 21:49

Так после выдачи оружия, выдайте деньги:
Код: Выделить всё

set_user_money
(i_Player10001); // УСТАНОВИТ игроку 1000$
set_user_money(i_Playerget_user_money(i_Player)+10001); // Установит игроку +1000$(добавит 1000 к текущим деньгам
 
Аватара пользователя
MrJunior
Скриптер
 
Сообщения: 146
Зарегистрирован: 21 сен 2016, 19:46
Откуда: localhost
Благодарил (а): 3 раз.
Поблагодарили: 31 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn | Web | Lua

Re: Организация выдачи предметов

Сообщение radical » 02 фев 2018, 21:56

MrJunior писал(а):Так после выдачи оружия, выдайте деньги:
Код: Выделить всё

set_user_money
(i_Player, 1000, 1); // УСТАНОВИТ игроку 1000$
set_user_money(i_Player, get_user_money(i_Player)+1000, 1); // Установит игроку +1000$(добавит 1000 к текущим деньгам
 


Так дело в том,надо выдавать что-то одно. Как в UAIO плагине, например. Уже два дня бьюсь.

Например, нужно выдать HP = Я выбираю в меню "HP MENU". Дальше открывается меню с игроками и я выбираю игрока. После ему выдаются жизни.
Аватара пользователя
radical
 
Сообщения: 84
Зарегистрирован: 01 фев 2018, 19:31
Благодарил (а): 22 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Pawn
SourcePawn
C#

Re: Организация выдачи предметов

Сообщение MrJunior » 02 фев 2018, 22:12

Сделайте ещё одно меню на основе этого(того, что уже имеется и выдает оружие), и вместо оружия выдавайте деньги.
Аватара пользователя
MrJunior
Скриптер
 
Сообщения: 146
Зарегистрирован: 21 сен 2016, 19:46
Откуда: localhost
Благодарил (а): 3 раз.
Поблагодарили: 31 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn | Web | Lua

Re: Организация выдачи предметов

Сообщение radical » 02 фев 2018, 22:18

MrJunior писал(а):Сделайте ещё одно меню на основе этого(того, что уже имеется и выдает оружие), и вместо оружия выдавайте деньги.

Но это получается, для каждого меню создавать вот этот код:
Код: Выделить всё
public select(id)
{
    // Сперва необходимо создать переменную для меню, с которой мы будем взаимодействовать в дальнейшем
    new i_Menu = menu_create("\rPlayer menu:", "menu_handler1")

    // Необходимые переменные, которые понадобятся нам при выводе меню из игроков
    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
        i_Player = s_Players[i]

        // Получаем имя и ID игрока
        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_display(id, i_Menu, 0)
}
 
public menu_handler1
(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)

    // Получаем ID игрока, который был выбран в меню
    new i_Player = str_to_num(s_Data)

    // Проверяем, если игрок живой
    if (is_user_alive(i_Player))
        // Устанавливаем его здоровье в 100 HP
        ITEMS[id_money][param];
    
    

    menu_destroy
(menu)
    return PLUGIN_HANDLED
 
}


Добавлено спустя 2 минуты 50 секунд:
MrJunior писал(а):Сделайте ещё одно меню на основе этого(того, что уже имеется и выдает оружие), и вместо оружия выдавайте деньги.


Я пробовал сделать так: создавал глобальную переменную, равную i_Player, например, IDx. В этой переменной хранился ID игрока. И дальше я указывал его везде. Например, "give_item(IDx, "weapon_usp").

Но такой фокус работал лишь один раз. При следующем заходе на сервер ничего не работало.
Аватара пользователя
radical
 
Сообщения: 84
Зарегистрирован: 01 фев 2018, 19:31
Благодарил (а): 22 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Pawn
SourcePawn
C#

Re: Организация выдачи предметов

Сообщение MrJunior » 02 фев 2018, 22:20

А вы создание подобных меню по-другому представляли?

Добавлено спустя 1 минуту 3 секунды:
UPD: зачем фокусы творить?
Аватара пользователя
MrJunior
Скриптер
 
Сообщения: 146
Зарегистрирован: 21 сен 2016, 19:46
Откуда: localhost
Благодарил (а): 3 раз.
Поблагодарили: 31 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn | Web | Lua

Re: Организация выдачи предметов

Сообщение radical » 02 фев 2018, 22:24

MrJunior писал(а):А вы создание подобных меню по-другому представляли?

Добавлено спустя 1 минуту 3 секунды:
UPD: зачем фокусы творить?


Немного по - другому) ;)

Фокус был очень удобный. Не нужно было никаких лишних меню - выбрал ID игрока, и дальше можно с ним взаимодействовать. Мне сказали, что нужно обнулять эту переменную, например, при старте раунда. Будет ли так работать?
Аватара пользователя
radical
 
Сообщения: 84
Зарегистрирован: 01 фев 2018, 19:31
Благодарил (а): 22 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Pawn
SourcePawn
C#

Re: Организация выдачи предметов

Сообщение MrJunior » 02 фев 2018, 22:34

Обнулять при старте? Зачем?
Обнулять её стоит, когда игрок-цель отключается:
Код: Выделить всё
public client_disconnect(id) if(id == IDxIDx 0
// если id игрока, который отключился, это то что записано - обнуляем его
 


Но при этом, нужно всегда записывать новое ID цели в переменную.
Аватара пользователя
MrJunior
Скриптер
 
Сообщения: 146
Зарегистрирован: 21 сен 2016, 19:46
Откуда: localhost
Благодарил (а): 3 раз.
Поблагодарили: 31 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn | Web | Lua

Re: Организация выдачи предметов

Сообщение radical » 02 фев 2018, 22:47

MrJunior писал(а):Обнулять при старте? Зачем?
Обнулять её стоит, когда игрок-цель отключается:
Код: Выделить всё

public client_disconnect
(id) if(id == IDx) IDx = 0; 
// если id игрока, который отключился, это то что записано - обнуляем его


Но при этом, нужно всегда записывать новое ID цели в переменную.


Как вы думаете, попробовать "подсунуть" ID, или же писать для каждого "предмета" отдельное меню?
Аватара пользователя
radical
 
Сообщения: 84
Зарегистрирован: 01 фев 2018, 19:31
Благодарил (а): 22 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Pawn
SourcePawn
C#

Re: Организация выдачи предметов

Сообщение MrJunior » 02 фев 2018, 22:50

Есть меню, как amx_teammenu.
Где седьмым(вроде) пунктом выступает смена действия.
Можно переделать код, что-бы был список игроков + выбор действия.
Нажал на пункт с действием - оно сменилось, и так по кругу.
Потом нажал на игрока - выдали.
Аватара пользователя
MrJunior
Скриптер
 
Сообщения: 146
Зарегистрирован: 21 сен 2016, 19:46
Откуда: localhost
Благодарил (а): 3 раз.
Поблагодарили: 31 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn | Web | Lua

Re: Организация выдачи предметов

Сообщение radical » 02 фев 2018, 23:01

MrJunior писал(а):Есть меню, как amx_teammenu.
Где седьмым(вроде) пунктом выступает смена действия.
Можно переделать код, что-бы был список игроков + выбор действия.
Нажал на пункт с действием - оно сменилось, и так по кругу.
Потом нажал на игрока - выдали.


Интересно. Осталось посмотреть этот код. Спасибо) :thumbs_up

Добавлено спустя 2 минуты 27 секунд:
radical писал(а):
MrJunior писал(а):Есть меню, как amx_teammenu.
Где седьмым(вроде) пунктом выступает смена действия.
Можно переделать код, что-бы был список игроков + выбор действия.
Нажал на пункт с действием - оно сменилось, и так по кругу.
Потом нажал на игрока - выдали.


Интересно. Осталось посмотреть этот код. Спасибо) :thumbs_up


UPD: Очень жаль, что нельзя засунуть действие в переменную
Аватара пользователя
radical
 
Сообщения: 84
Зарегистрирован: 01 фев 2018, 19:31
Благодарил (а): 22 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Pawn
SourcePawn
C#

Пред.След.

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

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

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