Недавно начал доделовать свою игру и вот дошёл до опций, сначала была проблема то-что когда менял разрешение все кнопки куда-то девались и нажать было их трудно но благодаря FaV я решил эту проблему, кстати спасибо ему) но вот как реализовать следуещие вещи я не знаю.
1.Сохранение настроек(я знаю что это делается через ини файл, но как?0_о)
2.Изменение настроек(я немного по размышлял и вот результат, например:
if keyboard_check_released(vverh) {vspeed+=2}
vverh - и тут всё. Я незнаю как сделать так что-бы опциях какую кнопку нажал такая и будет использоваться)
Об опциях
Сообщений 1 страница 8 из 8
Поделиться12010-06-07 17:52:03
Поделиться22010-06-07 18:07:59
Я делал помню такие настройки, поищу пример, завтра обязательно кину
Поделиться32010-06-07 22:15:05
Этот код сохраняет опции. Он расположен в собынии нажатия мыши по "принять изменения":
if file_exists("tera.ini") //если файл существует, удаляем
{
ini_close()
file_delete("tera.ini")
}
if !file_exists("tera.ini") //если не существует...
{
ini_open("tera.ini") //...создаём и открываем для записи...
ini_write_string("Options","Background",string(global.bk)) //...и начинаем записывать переменные
ini_write_string("Options","Texture",string(global.obl))
ini_write_string("Options","Effects",string(global.effects))
ini_write_string("Options","Sound",string(global.sounds))
ini_write_string("Game options","Complexity",string(global.dif))
ini_write_string("Game options","Frequency",string(global.ballres))
ini_write_string("Game options","Health",string(global.hit))
ini_write_string("Another options","Superballs",string(global.sb))
ini_write_string("Another options","Bats",string(global.bat))
ini_write_string("Another options","Heal-balls",string(global.heal))
ini_write_string("Another options","Mines",string(global.mine))
ini_write_string("Another options","Player 1",string(global.gm1))
ini_write_string("Another options","Player 2",string(global.gm2))
ini_write_string("Another options","Player 3",string(global.gm3))
ini_write_string("Another options","Player 4",string(global.gm4))
}
А вот загрузка файла. Находится в событии создания:
global.obl=1 //здесь начальное объявление переменных
//Сложность (скорость ботов)
global.dif=6
//Хелсы
global.hit=50
//Частота выпадения шаров
global.ballres=300
//Доп. объекты (1-есть, 0-нет)
//Супершары
global.sb=0
//Отбивалки
global.bat=0
//Аптечки
global.heal=0
//Мины
global.mine=0
//Игроки и боты (0-игрок, 1-бот)
global.gm1=0
global.gm2=1
global.gm3=1
global.gm4=1
ini_open("tera.ini") //открываем файл...
global.bk = ini_read_string("Options","Background",string(global.bk)) //и присваиваем переменным значения из файла.
global.obl = ini_read_string("Options","Texture",string(global.obl)) //обрати внимание на string. 0 в переменной, и 0 в txt - совсем разные вещи.
global.effects = ini_read_string("Options","Effects",string(global.effects))// первый нолик - значение, но второй - лишь символ.
global.sounds = ini_read_string("Options","Sound",string(global.sounds))
global.dif = ini_read_string("Game options","Complexity",string(global.dif))
global.ballres = ini_read_string("Game options","Frequency",string(global.ballres))
global.hit = ini_read_string("Game options","Health",string(global.hit))
global.sb = ini_read_string("Another options","Superballs",string(global.sb))
global.bat = ini_read_string("Another options","Bats",string(global.bat))
global.heal = ini_read_string("Another options","Heal-balls",string(global.heal))
global.mine = ini_read_string("Another options","Mines",string(global.mine))
global.gm1 = ini_read_string("Another options","Player 1",string(global.gm1))
global.gm2 = ini_read_string("Another options","Player 2",string(global.gm2))
global.gm3 = ini_read_string("Another options","Player 3",string(global.gm3))
global.gm4 = ini_read_string("Another options","Player 4",string(global.gm4))
Поделиться42010-06-07 22:16:19
Код выдран из моей недоделанной игры. Вот здесь исходник.
Поделиться52010-06-08 02:03:45
Спасибо FaV. if FaV.help=true {FaV.respect+=1}
Только я не понял куда деть этот код
ini_open("tera.ini") //открываем файл...
global.bk = ini_read_string("Options","Background",string(global.bk)) //и присваиваем переменным значения из файла.
global.obl = ini_read_string("Options","Texture",string(global.obl)) //обрати внимание на string. 0 в переменной, и 0 в txt - совсем разные вещи.
global.effects = ini_read_string("Options","Effects",string(global.effects))// первый нолик - значение, но второй - лишь символ.
global.sounds = ini_read_string("Options","Sound",string(global.sounds))
global.dif = ini_read_string("Game options","Complexity",string(global.dif))
global.ballres = ini_read_string("Game options","Frequency",string(global.ballres))
global.hit = ini_read_string("Game options","Health",string(global.hit))
global.sb = ini_read_string("Another options","Superballs",string(global.sb))
global.bat = ini_read_string("Another options","Bats",string(global.bat))
global.heal = ini_read_string("Another options","Heal-balls",string(global.heal))
global.mine = ini_read_string("Another options","Mines",string(global.mine))
global.gm1 = ini_read_string("Another options","Player 1",string(global.gm1))
global.gm2 = ini_read_string("Another options","Player 2",string(global.gm2))
global.gm3 = ini_read_string("Another options","Player 3",string(global.gm3))
global.gm4 = ini_read_string("Another options","Player 4",string(global.gm4))
Я кстати сам попробывал сделать настраеваемые кнопки и вот результат
Information about object: Up
Sprite: Mask
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: Mask
Create Event:
execute code:
knopka = vk_up //кнопка по умолчанию
vybor=1
mouse_enter=0
nadpis='?'
Step Event:
execute code:
if vybor>=3 {vybor=0}
if vybor=2 {knopka = keyboard_lastkey}
if mouse_enter=1
{
vybor=1
}
if mouse_enter=1 && mouse_check_button_released(mb_left)
{
mouse_enter=2
}
if mouse_enter=2
{
vybor=2
}
if mouse_enter=3 && mouse_check_button_released(mb_left) && vybor=2
{
vybor=0
mouse_enter=0
}
nadpis=chr(knopka)
if nadpis='&' {nadpis='Вверх'}
if nadpis='%' {nadpis='Влево'}
if nadpis='(' {nadpis='Вниз'}
if knopka=39 {nadpis='Вправо'}
if knopka=16 {nadpis='Shift'}
if knopka=17 {nadpis='Ctrl'}
if knopka=18 {nadpis='Alt'}
if knopka=0 {nadpis='?'}
if knopka=20 {nadpis='Caps Lock'}
if knopka=8 {nadpis='Backspace'}
if knopka=192 {nadpis='~'}
if knopka=32 {nadpis='Space'}
if knopka=13 {nadpis='Enter'}
if knopka=97 {nadpis='Num1'}
if knopka=98 {nadpis='Num2'}
if knopka=99 {nadpis='Num3'}
if knopka=100 {nadpis='Num4'}
if knopka=101 {nadpis='Num5'}
if knopka=102 {nadpis='Num6'}
if knopka=103 {nadpis='Num7'}
if knopka=104 {nadpis='Num8'}
if knopka=105 {nadpis='Num9'}
if knopka=111 {nadpis='/'}
if knopka=106 {nadpis='*'}
if knopka=109 {nadpis='-'}
if knopka=107 {nadpis='+'}
if knopka=96 {nadpis='0'}
if knopka=110 {nadpis='.'}
if knopka=112 {nadpis='F1'}
if knopka=113 {nadpis='F2'}
if knopka=114 {nadpis='F3'}
if knopka=115 {nadpis='F4'}
if knopka=116 {nadpis='F5'}
if knopka=117 {nadpis='F6'}
if knopka=118 {nadpis='F7'}
if knopka=119 {nadpis='F8'}
if knopka=120 {nadpis='F9'}
if knopka=121 {nadpis='F10'}
if knopka=27 {nadpis='Esc'}
if knopka=93 {knopka=0}
if knopka=93 {nadpis='?'}
Mouse Event for Mouse Enter:
execute code:
mouse_enter=1
Mouse Event for Mouse Leave:
execute code:
mouse_enter=3
Draw Event:
execute code:
if vybor=2 {draw_rectangle_color(x,y,x+83,y+19,c_red,c_red,c_red,c_red,1)} //рисуем выделение
draw_rectangle_color(x-1,y-1,x+84,y+20,c_black,c_black,c_black,c_black,1) //рисуем границы
draw_text_color(x,y,nadpis,c_black,c_black,c_black,c_black,1) //рисуем надпись
draw_set_font(font0) //подключаем шрифт
И вроде всё работает(можете сами проверить) но как теперь сделать так что-бы у объекта кнопка зависила от переменной knopka
Пытался так
if keyboard_check_released(Up.knopka) {vspeed+=1} но это не работает(
Отредактировано Sadas (2010-06-08 11:22:03)
Поделиться62010-06-09 22:38:41
Не понял значения слов кнопка зависила от переменной knopka. Я по твоему коду пример собрал, надписи не было. Тебе нужно, чтобы надпись высвечивалась? И зачем ты всунул верт. скорость?
Поделиться72010-06-10 16:48:11
Вот пример
Не понял значения слов кнопка зависела от переменной knopka.
FaV Ну типа ты в опциях заменил кнопку и теперь в игре игрок действует с этой кнопкой которую нажал, а переменная knopka и есть кнопка которую нажал)
Тебе нужно, чтобы надпись высвечивалась?
Нет она уже показывается на кнопке где её меняешь
И зачем ты всунул верт. скорость?
Это для примера
Типа сделал игрока и в степ прописал if keyboard_check_released(Up.knopka) {vspeed+=1} но так как в кейборд_чек надо писать прописанную в гейм малер кнопку, и любая другая переменная переменная там(keyboard_check_released(Здесь)) работать не будет. И что теперь сделать?Что-бы всё работало.
P.S сделать новую константу уже пытался не работает((
Отредактировано Sadas (2010-06-10 16:50:31)
Поделиться82010-06-10 21:08:12
Короче тебе нужна настройка управления. Я тебе с наскока ничего посоветовать не могу, зайди на http://www.gm-rus.ru/. Там народ поопытнее будет. Единственное - форум неоправданно тормозит.
Отредактировано FaV (2010-06-10 21:09:01)