Понедельник, 25 Ноября 2024, 18:29

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблема...
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.
Но проблема в том что если есть ещё какие-нибудь палки в комнате или камни, когда я пытаюсь скрафтить они тоже удаляются... sad

Пожалуйста помогите...
Буду рад любой помощи happy


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, да я бы с радостью сделал бы так... Но я хочу поступить оригинально. Но все равно Спс happy ! 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() // Уничтожаем меч
}

}
}

Написал так... теперь всё нормально удаляется ,но не появляется меч sad


KEKW

Сообщение отредактировал lisiyrak - Пятница, 10 Августа 2012, 19:23
buftlerДата: Пятница, 10 Августа 2012, 19:01 | Сообщение # 5

Добряк

Сейчас нет на сайте
что то не понял 2й код трудно воспринимаются чужие переменные wacko
если надо наверняка то дай исходник (или хотя бы тут коменты поставь) dry
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. Легче по этому ИД искать потом.
А рецепты просто по порядку.



  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг