Проблема с Ini Файлами и улучшением обьекта
| |
overbolt | Дата: Воскресенье, 11 Января 2015, 21:59 | Сообщение # 1 |
Overbolt's Project
Сейчас нет на сайте
| Всем привет.Делаю для игры выбор языка.С Ini работаю впервые,вроде все сделал как в туториале,но не работает.В чем проблема?Сначала я задаю переменные в создании Код global.Health="" global.XP="" global.Hunger="" global.Thrust="" В Step открываю Ini файл Код if global.english=1 { ini_open("english.ini")
global.Health=ini_read_string("Interface","Health","None") global.XP=ini_read_string("Interface","XP","None") global.Hunger=ini_read_string("Interface","Hunger","None") global.Thrust=ini_read_string("Interface","Thrust","None") ini_close() И в рисовании уже записываю Код draw_text(view_xview + 34,view_yview + 5,""+string(global.Health) +string(global.hp)+"/"+string(global.maxhp)) draw_text(view_xview + 34,view_yview + 25,""+string(global.XP) +string(global.xp) + "/" + string(global.maxxp)) draw_text(view_xview + 34,view_yview + 45,""+string(global.Hunger) +string(global.hunger)+ "/" + string(global.maxhunger)) draw_text(view_xview + 34,view_yview + 65,""+string(global.Thrust) +string(global.thrust)+ "/" + string(global.maxthrust)) Но то,что я читаю с Ini всеравно не отображается в игре.
И еще нашел в игре такой казус,когда сделал апгрейд зданий: Допустим по нажатию кнопки E происходит событие: если герой находится рядом с зданием и есть определенное количество ресурсов для улучшения,то я удаляю обьект и на этом-же месте создаю обьект этого же здания,только 2 уровня,и чтобы улучшить со 2 до третьего тоже используется тот-же код,только ресурсов нужно больше.Но не об этом.Чтобы улучшить от 1 до 2 уровня нужно допустим 20 ресурсов,а от 2 до 3 еще 40 ресурсов,от 3 до 4 еще 60 и тд.И вообщем если у героя есть 20+40+60 ресурсов и около здания первого уровня он нажимает E,то улучшается сразу до того уровня до которого максимум хватает ресурсов,а нужно чтобы улучшалось только до следующего уровня.Что делать?
Сообщение отредактировал overbolt - Воскресенье, 11 Января 2015, 22:06 |
|
| |
LunarPixel | Дата: Воскресенье, 11 Января 2015, 22:28 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| Цитата overbolt ( ) Что делать? Много вариантов можно придумать, как, пожалуй, самый простой, попробуй использовать keyboard_clear(ord('E')). Поставь его в событие создания здания, или даже лучше в событие удаления.
В ini у тебя предварительно что-нибудь записано заранее, вручную? ini лежит в папке с игрой? Если GMS, то ini, по умолчанию, создается в рабочей директории. Попробуй для теста в Create прописать:
Код ini_open("english.ini") ini_write_string("Interface","Health","100"); ini_close()
ini_open("english.ini") global.XP=ini_read_string("Interface","XP","None"); ini_close()
show_message(global.XP); И посмотри, выдаст тебе 100 в сообщении или нет.
Так же, если у тебя после считывания global.english не изменяется, то нужно вытащить считывания из Step, а то получится, что он у тебя постоянно будет этот ini файл открывать/читать/закрывать. И если переменные у тебя числовые, то используй не ini_read_string/ini_write_string, а ini_read_real/ini_write_real.
|
|
| |
overbolt | Дата: Воскресенье, 11 Января 2015, 22:37 | Сообщение # 3 |
Overbolt's Project
Сейчас нет на сайте
| LunarPixel, Как раз таки в ini вручную добавил еще одну переменную,тоисть записывать нужно только через game maker?
|
|
| |
LunarPixel | Дата: Воскресенье, 11 Января 2015, 22:44 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| overbolt, можно перейти в рабочую директорию и там изменять ini файл, но точно не помню, какой путь по умолчанию. Кажется: C:\Users\Пользователь\AppData\Local\Название проекта Но лучше всего задавать все через Game Maker, меньше хлопот, да и, как по мне, проще в управлении.
|
|
| |
overbolt | Дата: Вторник, 13 Января 2015, 14:32 | Сообщение # 5 |
Overbolt's Project
Сейчас нет на сайте
| LunarPixel, спасибо Добавлено (13 января 2015, 14:32) --------------------------------------------- Еще появился вопрос,можно ли записать текст в ini в одну переменную,но чтобы отображалось как то так Код global.text=строчка1 строчка2 строчка3 И если в draw_text введешь global.text в игре писалось в 3 строки.
|
|
| |
LunarPixel | Дата: Вторник, 13 Января 2015, 15:07 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| overbolt, можно переносить используя символ "#" для переноса, попробуй строку с ним записать в ini, потом вывести. Код global.text="строчка1#строчка2#строчка3"
|
|
| |
overbolt | Дата: Вторник, 13 Января 2015, 15:08 | Сообщение # 7 |
Overbolt's Project
Сейчас нет на сайте
| LunarPixel, Спасибо
|
|
| |
|