Итак, я решил наконец использовать свои знания и заняться реальным проектом. Но все-же моих знаний немного не хватает. Здесь Я буду размещать проблемы с игрой:
1. Я настроил спрайт главного героя так, что когда нажата одна из стрелок, то он идет в этом направлении. Также, добавил много спрайтов, и при нажатии одной из стрелок спрайт меняется в направлении этой стрелки, а при отпускании стрелки, тот же спрайт меняется на спрайт, стоящий в направлении, указанном на стрелке. Все бы хорошо, но при нажатии двух стрелок, а затем отпускании одной из них объект жутко глючит. Мини-исходник.(Вопрос решен) 2. Я создал событие "При создании объекта character переменная "zadanie_deda=0". Проблема в том, что если из локации выйти, а потом снова войти, то переменная снова будет равна нулю, а это нежелательно. Я понимаю, что нужно создать глобальную переменную, но сразу становится вопрос: КАК?(решено) 3. Как сделать, чтобы эффект был поверх всего остального? Мини-пример.(решено) 4. Ну, это не понятно конкретно мне: как в коде вывести табличку с надписью на русском языке? Пишет, что непонятный символ.(решено) 5. Я сделал вопрос, как сделать событие ответа "Да" и ответа "Нет"?(решено) 6. Я делаю систему покупок. Есть событие, если нажать Левой Кнопкой Мыши по объекту, то
Code
global.mech+=1
Но когда я нажимаю, то мечи прибавляются бесконечно. Вопрос: как сделать, чтоб при одном щелчке мыши на объекте к переменной прибавлялась только единица? Типа, один раз нажал, держи сколько угодно, отнимется все равно один?(решено) 7. Я наконец-то начал создавать счетчики для персонажа. И сразу возникает вопрос - как привязать вывод переменной к виду?(решено) 8. Начинаю делать врагов. Вопрос таков - как сделать проверку движения? То есть, если враг движется влево, то спрайт enemy_l, eсли вверх enemy_u, и т.д.
Получено разрешение модератора данного раздела. Он подтвердит.
Пишет что файл не найден... Могу пока что предложить только такое: Вот мой код для движения в 8 направлениях. Можешь попробовать сделать на его основе:
Code
if (keyboard_check(vk_right)) {//нажата кнопка вправо sprite_index=spr_character_E image_speed=0.35 motion_set(0,5)
if (keyboard_check(vk_down)) {//нажаты кнопки вправо и вниз sprite_index=spr_character_SE; image_speed=0.35; motion_set(315,5); } else { if (keyboard_check(vk_up)) {//нажаты кнопки вправо и вверх sprite_index=spr_character_NE; image_speed=0.35; motion_set(45,5); } } } else { if (keyboard_check(vk_down)) {//нажата кнопка вниз sprite_index=spr_character_S; image_speed=0.35; motion_set(270,5);
if (keyboard_check(vk_left)) {//нажаты кнопки вниз и влево sprite_index=spr_character_SW; image_speed=0.35; motion_set(225,5); } } else { if (keyboard_check(vk_left)) {//нажата кнопка влево sprite_index=spr_character_W; image_speed=0.35; motion_set(180,5);
if (keyboard_check(vk_up)) {//нажаты кнопки влево и вверх sprite_index=spr_character_NW; image_speed=0.35; motion_set(135,5); } } else { if (keyboard_check(vk_up)) {//нажата кнопка вверх sprite_index=spr_character_N; image_speed=0.35; motion_set(90,5); } else {//ничего не нажато motion_set(direction,0); image_speed=0; } } } }
После последней строки image_speed=0 добавь замену спрайта на спрайт стоящего человека (выбор спрайта сделай в зависимости от direction)
Тут у тебя очень много событий стоит. Это не рационально и плохо влияет на производительность. С таким кодом будет работать быстрее (конечно, на мощном компе это будет не заметно). Мне с кнопками труднее разбираться. Плохо я их понимаю.... Могу, если хочешь, переделать этот код под твой пример. Новый пример инвентаря! /20.06.2012/
Dva_Kota, Ммм... Я бы и сам смог, мне бы только коды действий "Кнопка нажата", "Кнопка отпущена", и "Клавиатура"(кнопка удерживается). Посоветуйте, где скачать VB6 :C
Там и так готовый код. Проверяется какая комбинация клавиш нажата, потом выбирается соответствующий спрайт, назначается скорость анимации и выбирается направление движения и скорость. Если ни одна из стрелок не нажата - никуда не идем, направление остается прежним. Вставь этот код в Step, замени названия спрайтов на свои. Должно все работать (только события нажатия клавишь убери).
p.s.: я в посте, где код, дописал комментарии, какой спрайт в какой код ставить.
Добавлено (18.12.2010, 20:21) --------------------------------------------- Dva_Kota, спасибо! Плюс я уже ставил, поэтому пока на словах спасибо.)
Добавлено (18.12.2010, 22:57) --------------------------------------------- Добавил еще один вопрос:
Quote (Apelsinoviy_kot)
2. Я создал событие "При создании объекта character переменная "zadanie_deda=0". Проблема в том, что если из локации выйти, а потом снова войти, то переменная снова будет равна нулю, а это нежелательно. Я понимаю, что нужно создать глобальную переменную, но сразу становится вопрос: КАК?
Но тогда задавай эту переменную не в создании твоего объекта, а в каком, нибудь другом объекте, иначе при входе в локацию у тебя опять будет создаваться этот объект и переменная опять станет равна нулю.
Еще вот совет: при тесте игры меню только мешает, но в меню я, обычно ставлю всякие нужные объекты (например загрузчик ресурсов или что-нибудь еще). Чтобы меню не мешало при загрузке (когда иру делаешь нужно ведь часто тестировать) и чтобы не нажимать там каждый раз какую-то кнопку (начать новую игру) я в событии создания какого-нибудь объекта завожу alarm[0] на 1, а в событии alarm0 ставлю переход в следующую комнату. Надеюсь эта информация тебе поможет. Новый пример инвентаря! /20.06.2012/
1. Я настроил спрайт главного героя так, что когда нажата одна из стрелок, то он идет в этом направлении. Также, добавил много спрайтов, и при нажатии одной из стрелок спрайт меняется в направлении этой стрелки, а при отпускании стрелки, тот же спрайт меняется на спрайт, стоящий в направлении, указанном на стрелке. Все бы хорошо, но при нажатии двух стрелок, а затем отпускании одной из них объект жутко глючит. Мини-исходник.(Вопрос решен)
Но тогда задавай эту переменную не в создании твоего объекта, а в каком, нибудь другом объекте, иначе при входе в локацию у тебя опять будет создаваться этот объект и переменная опять станет равна нулю.
можно еще юзать
Code
globalvar variable
Рекомендую для создания переменных сделать специальный невидимый объект, который создается 1 раз при запуске игры
А если спереди к переменной приписать global., то все будет хорошо)
Добавлено (19.12.2010, 14:11) --------------------------------------------- 3. У меня полетел исходник, при загрузке выдает "Error Loading: File seems to be corrupted.". Я советовался с одним человеком, он сказал, что создается backup исходника, но не знает, как его использовать. Как его использовать? Жду ответа от вас, дорогие форумчане)
А если спереди к переменной приписать global., то все будет хорошо)
Когда напишешь строк 10к кода, и будешь в каждой таскать этот global тебе будет очень хорошо Толи один раз написать globalvar def; Толи каждый раз писать global.def. Но тут каждый сам себе выбирает, учится писать культурно или жечь себе мозг.
Quote (Apelsinoviy_kot)
3. У меня полетел исходник, при загрузке выдает "Error Loading: File seems to be corrupted.". Я советовался с одним человеком, он сказал, что создается backup исходника, но не знает, как его использовать. Как его использовать? Жду ответа от вас, дорогие форумчане)
По-моему, была в меню гм где-то кнопка восстановить или что-то такое. back-up- это непонятные файлы, которые лежат с проектом, расширение не помню, .gb вроде или как-то так. Там даже количество можно выбирать, у меня всегда 3-4 стоит, на всякий случай