Создание игрового магазина |
Aviener « Citoyen » 1453235220000
| 0 | ||
Здесь вы узнаете, как создать игровой магазин с собственной валютой Данный гайд будет полезен тем, кто планирует в будущем сохранять свои данные в БД НИКТО не будет здесь давать ГОТОВЫЙ код! ШАГ 1 Создаем основу нашего кода. Пожалуй, начнем с маплиста! Создаем массив maps, куда будем вписывать наши карты. Я возьму на примере 5-4 карт из vanilla-ротации. Далее, зададим переменну maplist и присвоим ей рандомное значение из маплиста через математическую функцию math.random. Полный гайд как делать маплист! (на английском) ШАГ 2 Дальше, напишем функцию, которая будет подключать наших игроков к игре. Для этого создадим пустой массив и назовем его players. Далее, воспользовавщись функцией eventNewPlayer. На данном этапе у нас стоит задача: выбрать валюту (название). Я ее просто назову levels. Добавим индекс к массиву [playerName] и присвоим значение по-умолчанию 0. Используем эту функцию для всех игроков в комнате, через цикл: цикл for name,player in pairs(tfm.get.room.playerList) do eventNewPlayer(name) end *Обращение к функции производится через ее название + аргумент ШАГ 3 Итак, мы уже написали часть кода. Осталось определеится с тем, как будет повышать уровень. Я, например, решил, что буду давать 1 левл за 1 вход в нору. Создаем функцию eventPlayerWon. После чего, мы присвоим нашему массиву players[playerName].level значение +1, то есть массив + 1. Справа показано то, что должен выводить print в консоль (подсчеты!) +1 players[playerName].level = players[playerName].level+1 *Для удобства можно прописать отправку подсчетов в консоль через print()* **В скобках указываем массив БЕЗ кавычек (чтобы вернуть значение, а не строку) ШАГ 5 Итак, у нас уже есть подсчет. Осталось сделать сам магазин. Начнем с начала, то есть с его открытия. Можно использовать eventChatCommand или tfm.exec.bindKeyboard. Я воспользуюсь вторым вариантом. Забиндим, например, клавишу M (номер 77). Первым делом, забиндим ее для ВСЕХ игроков в комнате. Как это делать мы разбирали во втором пункте. Далее, воспользуемся функцией event eventKeyboard. В эту функцию надо прописать условие, если клавиша 77, значит. условие if key == 77 then Основная часть есть, осталось сделать сам магазин. Можно воспользоваться моим шаблоном (вставляете после условия). Все кнопки (закрыть, например) должны быть привязаны к определенному событию: привязка ui.addTextArea(5,"<a href='event:close'>X</a>",playerName,569,72,11,20,0x212F36,0x212F36,1,true) X - кнопка закрытия, в данном случае ШАГ 6 Итак, кнопка "Купить" у нас есть, но игра не реагирует на нажатие вообще любых кнопок. Воспользуемся функцией eventTextAreaCallback. После пропишем условия для, например, закрытия (if ... then). То есть, при нажатии на X должны убираться все поля (textarea). Для этого пропишем условие: условие if callback == "..название события.." then ui.removeTextArea(1, playerName) ui.removeTextArea(2, playerName) и т.д. ШАГ 7 Итак, осталось прописать условия для покупки. Для этого, создадим текстовое поле с привязкой к событию, buy..номер объекта.., например. Но, получается, что тогда предмет/способность может купить любой игрок. Для этого пропишем условие, где укажем цену объекта: Где:
ШАГ 8 Мы написали все. Осталось внести пару иземений в код. Если игрок покупает вещь, то у него НЕ отнимается цена предмета от общего счета. Создадим локальную переменную (которая работает только в данной структуре), и назовем ее, например. j = цена объекта. Осталось только вычесть из общего счета цену, то есть значение переменной - j: Скоро Dernière modification le 1458800580000 |
Aviener « Citoyen » 1453235340000
| 0 | ||
Вся информация сверху была приведена в "разжеванном" виде. Например, переменную j можно было использовать условии. Но, это сделано для понимания менее освоившихся пользователей. - резерв - |
Yfcnz12065 1501035840000
| | ||
[Modéré par Mitropolit] |
Yfcnz12065 « Citoyen » 1514199900000
| 0 | ||
Готовый код не дают? Некоторым лень писать! |
0 | ||
Я просто всё списала. |
Customernc « Citoyen » 1514381460000
| 0 | ||
Yfcnz12067 a dit : Учитесь самим код писать, тюлени! |
Xckewovjreobmn « Consul » 1520180520000
| 0 | ||
Customernc a dit : Ну и молодёжь пошла всё готовое хочет |
Yfcnz12065 « Citoyen » 1525139580000
| 0 | ||
ибо слишком долго присматриватся чтобы списать, пройдет 3 часа |
Wenter « Citoyen » 1564930620000
| 0 | ||
Я нишо не понял .-. |