Проблема...
|
|
lisiyrak | Дата: Пятница, 10 Августа 2012, 16:39 | Сообщение # 1 |
Hero of bacon
Сейчас нет на сайте
| Короче недавно решил замутить крафт в своей игре. Крафтится всё так : 1)Мы кидаем нужные предметы 2)Кликаем по ним ПКМ 3)Все предметы удаляются 4)И появляется предмет Итак сначала напишу свой код потом опишу саму проблему.
Ставлю в ПКМ у палки:
if mouse_check_button(mb_right) { if distance_to_object(stone) < 40 // проверка:есть ли поблизости камень { if distance_to_object(stick) < 40.. проверка:есть ли поблизости ещё одна палка {
instance_create(player.x,player.y-90,swordcool) with(other) { with(mouse_check_button(mb_right)) //с with я конечно ЖУУТКО намудрил { with(stick) { instance_destroy() } } } with(stone) { instance_destroy() } } } }
Кто вы видите я хочу сделать так ,что если рядом лежат 2 палки и один камень и если мы нажмём по камню ПКМ создатся объект swordcool. Но проблема в том что если есть ещё какие-нибудь палки в комнате или камни, когда я пытаюсь скрафтить они тоже удаляются...
Пожалуйста помогите... Буду рад любой помощи
KEKW
Сообщение отредактировал lisiyrak - Пятница, 10 Августа 2012, 16:40 |
|
| |
buftler | Дата: Пятница, 10 Августа 2012, 17:37 | Сообщение # 2 |
Добряк
Сейчас нет на сайте
| Code if distance_to_object(sticks)<40 //если дистанция до объекта ... { i=instance_nearest (x,y,sticks) // определяем ид ближайшей палки } if i>0 //ид нашли { with(i) instance_destroy() //удаляем эту палку } добавлено все отлично
Сообщение отредактировал buftler - Пятница, 10 Августа 2012, 17:47 |
|
| |
ilgamer | Дата: Пятница, 10 Августа 2012, 17:46 | Сообщение # 3 |
Needle Games
Сейчас нет на сайте
| Думаю с дистанцией ты не правильно сделал. Проверяй, если по иксу/игрику левее правее и т.д. Как один из путей решения, сделать для каждого крафта массив. Если расположил ты предмет на крафт доске и комбинация совпадает с одной из списка, то появляется в окошке "выхода" готовый "продукт". То есть каждый объект, например шлем это:
--- жжж ж-ж
Где ж- железо или другие материалы, а - (прочерк) - ничего. Но этот способ мудренее будет. Делай лучше с проверками на наличие объектов слева-справа и т.п. Удачи!
|
|
| |
lisiyrak | Дата: Пятница, 10 Августа 2012, 18:38 | Сообщение # 4 |
Hero of bacon
Сейчас нет на сайте
| ilgamer, да я бы с радостью сделал бы так... Но я хочу поступить оригинально. Но все равно Спс ! buftler, тебе тоже спасибо ,щас попробую!
Добавлено (10.08.2012, 18:38) --------------------------------------------- Поменял те объекты на свои. Это в ПКМ у sword if mouse_check_button(mb_right)//если нажать ПКМ { if place_meeting(x+25,y,gold) || place_meeting(x-25,y,gold) // Проверяем есть ли справа или слева золото { with(gold) { i = place_meeting(x+25,y,sword) || place_meeting(x-25,y,small_old_sword) i = instance_nearest(x,y,pleyer)// i = ближайшиму объекту к pleyer (правда я скорее всего ошибаюсь) i = instance_nearest(x,y,sword) i = ближайшиму объекту к sword } instance_create(pleyer.x +40,pleyer.y -60,swordcool) // создаём объект swordcool
with(i) { instance_destroy() // Уничтожаем золото }
with(sword) { instance_destroy() // Уничтожаем меч }
} }
Написал так... теперь всё нормально удаляется ,но не появляется меч
KEKW
Сообщение отредактировал lisiyrak - Пятница, 10 Августа 2012, 19:23 |
|
| |
buftler | Дата: Пятница, 10 Августа 2012, 19:01 | Сообщение # 5 |
Добряк
Сейчас нет на сайте
| что то не понял 2й код трудно воспринимаются чужие переменные если надо наверняка то дай исходник (или хотя бы тут коменты поставь)
|
|
| |
zmear | Дата: Пятница, 10 Августа 2012, 19:08 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| Quote (lisiyrak) хочу поступить оригинально это нисколько не оригинально т. к. массив будет быстрее работать, меньше багов и мозгонапряжений. И лепить по кучи проверок очень... неразумно, попробуй массивом!
|
|
| |
lisiyrak | Дата: Пятница, 10 Августа 2012, 19:27 | Сообщение # 7 |
Hero of bacon
Сейчас нет на сайте
| buftler, Добавил коммменты к коду!
KEKW
Сообщение отредактировал lisiyrak - Пятница, 10 Августа 2012, 19:27 |
|
| |
LetsOffBrains | Дата: Пятница, 10 Августа 2012, 19:53 | Сообщение # 8 |
Project SoRDeLKa
Сейчас нет на сайте
| Код не предоставлю, но помочь попробую. 0. Записать все возможные комбинации в массивы и объединить их в еще один массив. 1. Записать все предметы в определенном радиусе от игрока в массив. 2. Последовательно проверить какие предметы были записаны в массив. 3. Проверить под какие комбинации подходят эти предметы. 4. Удалять использованные предметы, создавать создаваемые. =)
Записывать предметы с псевдо ID так. item[id]=rock. Легче по этому ИД искать потом. А рецепты просто по порядку.
|
|
| |