переменная = определяющая команду. и далее действия(например агр) проверяем переменную на принадлежность к какой либо команде Так объекты могут быть однотипными, но принадлежать разным командам, смотря кто их создал(присвоения значения переменной)
то есть я бы каждому оъекту задал переменную, например player = 1(объект принадлежит первому игроку)
Quote
можно зделать тупо 3 разных вида обьектов которые "агрятся"
неприемлемо для стратегий, одного и тогоже юнита расписывать для всех команд.
http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Воскресенье, 17 Апреля 2011, 19:30
делаешь обе картинки в 1 спрайте. Далее в событии create объекта напиши всего 2 функции image_speed = 0.33(к примеру) image_index = 0 и все, кадр спрайта будет меняться со скорость 0.33(примерно пол-секунды) 1 секунда примерно 0.02 ну и так далее http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Воскресенье, 17 Апреля 2011, 16:39
а мне нарисуйте спрайты разных гербов) буду оч благодарен...!))
Чё трудного сделать кнопки как в варкрафт 3? запускаешь игру, делаешь скрин, открываешь paint, немного редактируешь если надо, сохраняешь результат, и вуаля: картинки кнопок готовы!!!
Хотя бы так. Дальше сам доработаю(Черным - отрисовочные линии)
код должен закрашивать в определенный цвет каждую точку не располагающейся в области данного объекта, но и максимально близкую к объекту(то есть соседнюю). и еще 1 условие - если в этой точке находится область другого определенного объекта.
http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Суббота, 12 Марта 2011, 21:41
Срочно нужна помощь!!! Хочу сделать один эффект, но никак не могу найти подхода к нему. Надо чтобы эффект отрисоввывался лишь в тех координатах, где области объектов соприкасаются(ну или сталкиваются). Чтобы лучше понять зв пример можно взять простую линию. То есть необходимо чтобы линия отрисовывалась в местах спорикосновения объектов. и больше нигде.
(область применения такого эффекта довольна широка на первый взгляд) Кто знает какие приемы? СПС заранее))
http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Суббота, 12 Марта 2011, 21:10
Просто добавлю, чтоб не обманулся. Если маску не поставить область столкновения определяется картинкой. Если маску задать - то картинка лишь видимая область, а область столкновения - маска.(Яркий пример тому - изометрия) http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Понедельник, 07 Марта 2011, 12:41
Какой тут может быть исходник? спрайт и маска код что ли?. Маска это граница объекта для столкновений, таким образом спрайт просто становится изображением, а не границей объекта не понять чего ты хочешь и скрин не выложил. http://farchive.jino.ru/
справка толково описано. мб дело в том что вы сами не определились чего хотите? или с чего начать? тада пиши мне в личку и расскажи чего хочешь сделать. МБ Старт дам(если жанры похожие), ну а далее и справка вам сильно поможет.. http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Понедельник, 17 Января 2011, 14:38
код оптимален и один на всех - выполняется в объекте-родителе
Добавлено (16.01.2011, 15:14) --------------------------------------------- предположим массив на 100 ячеек -по 2 массива -200. и более чем для 100 объектов 20тыс ячеек, это для начала
http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Воскресенье, 16 Января 2011, 15:14
Есть такая идея: массив задавать в отдельном объекте
да я тож первое об этом подумал. Так када начал делать большой геморой с переадресацией оказался.(для сохранения скорости и объема разумеется ячейки я приравниваю к самим объектам, чтоб потом сами же объекты и вызывать. если делать 2=й объект с массивом, в каждом объекте надо написать ссылку на свой объект-двойник) Ну ничего, подумаю еще.. http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Воскресенье, 16 Января 2011, 12:43
"Все дата-структуры работают глобально" память + они не сохраняются при сохранение игры. Конечно я списки создаю и использую в игре для удобства, но базовую инфу держу в массивах. и чтобы конечная емкость файла была меньше, желательно уменьщить массив, если есть пустые эл-ты. (я беспокоюсь поскольку одних только етих массивов с которыми я щас мучаюсь будет сотни*2, а максимальный размер массива пока не знаю, но на глаз не менее сотни
Добавлено (15.01.2011, 22:34) --------------------------------------------- да раз массив удалить нельзя(так и знал) то я надеялся услышать некие приемы как его сделать стартовым
http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Суббота, 15 Января 2011, 22:32
В основной комнате я храню некоторые однотипные массивы для множества объектов размер которых я постоянно меняю(в зависимости от кол-ва разновидности объектов, хранящийхся в инфе массивов) Понятно как меняю размер, увеличить то просто - просто добавить следующий эл-т, а уменьшаю я при помощи списка. загружая данные в список, я перехожу в др комнату, там делаю что мне нужно, перехожу обратно и пишу данные в массив (которые при старте комнаты опять маленький и пустой)
Проблема заключается в том, что основная моя комната ПОСТОЯННА и при переходе в др, данные ее сохраняются. Таким образом изменить значения массива я могу, но не могу уменьшить его размер.
Вот потому мне собственно и нужно знать приемы удаления массива еще в той же комнате. где он работает.
кстати описанный ранее код затрагивал в основном визуальный эффект инвентаря. если интересно вот полный код, и если вдуматься он достаточно прост объект item -родитель, содержит код манипуляций с предметами в инвентаре объект item_0 - содержит инфу о инвентаре.(массив отвечающий за наличие объектов и их раскладку, при старте комнаты создает соответствующие элементам массива объекты - итемы в инвентаре) и объекты - предметы item_1, item_2, item_3 ..... - дочерние к item-у Item
событие create image_speed = 0 image_index = 0 select = 0 понятно что при старте комнаты данный объект восозздается вновь( но только в том случае если в установках комнаты не стоит галочка "постоянный" В моем случае комната не постоянна - это знач при переходи аз комн в комн данные принимают изначально заданное положение и все вышеописанный значения также при старте комнаты обнуляются для предметов в инвентаре Я просто далее использую массив, хранящий инфу о предметах и их расположение. ТАк сделано, чтобы я мог использовать характеристики некоторых предметов и в основной комнате, а так же эту же комнату использовать и для магазинамне же ненужно чтобы магазин сохраниля в моем инвентаре:D)
событие Begin Step(начальный шаг) if(image_index=1) { x = mouse_x-32 y = mouse_y-32}
событие Left Pressed(обязательно pressed на ето у меня рассчитан остальной код. в случае с button код повторится множество раз и итем не сдвинется с места. в случае с released конкретный итем не успеет присвоить значение select см дальше) if(x>32)and(x<300)and(y>64)and(y<662)//определяем что мышка находится в рамке с ячейками n = (mouse_y-64) div 68 // k = (mouse_x-32) div 68 //определяю ячейку if(image_index == 1) // если объект выделен - код положить объект { if(item_0.jaika[n,k]==0){item_0.cel =0} // если ячейка пуста, знач переменная, хранящая инфу выделен ли какой либо объект обнуляется(потому что мы ложим объект и выделенных объектов теперь не должно быть) image_index = 0 x = k*68+32 y = n*68+64 item_0.jaika[n,k] = select // данной ячейке присваеваем значение item_p.select(item_p -итем в котором задействован данный код) select = 0 // только теперь(не ранее) следует обнулить select данного объекта
} else {
if(image_index == 0) // если объект не выделен - код поднять объект { if(item_0.cel == 0) {item_0.cel = 1 item_0.jaika[n,k]=0 } // если перем item_0.cel ноль, знач до этого объект не был выделен(то есть это не замена а только лишь берем предмет, сл-но естественно мы указываем что объект поднят(item_0.cel =1) и обнуляем ячейку) image_index = 1
} }
объект item_0
create cel = 0 // при старте комнаты ни один объект не выделен
jaika[8,0] = 0 jaika[8,1] = 0 jaika[8,2] = 0 jaika[8,3] = 0 // задал массив сразу на 36 ячеек. почему не задал с 1 ячейко ведь можно увеличить. далее в коде room start я понял что массив в ГМЛ беден и манипулировать с элементами можно только писав огромные коды(нет функций таких к массиву), а в случае если ложить итем через 1 ячейку( заполн - пустая - заполн - пустая) в зависимости от того какой код я писал ошибка массива либо он после первого нуля не считал эл-ты либо ошибка вылета массива за свои пределы. так что я думаю данный способ менее трудоемкий. количество ячеек ведь можно определять при помощи отдельно взятой переменной, и при старте комнаты если ячеек больше чем базовое 36 то просто добавить еще эл-ты массива
Room Start items = 36 n = 0 k = 0 while ( items > 0 ) {
left button if(image_index = 1) {item.select = item_1} // означает что когда объект выделен он записывает в запасную переменную свое значение. (нарошно сделано иначе могут быть баги если 1 объект меняешь на другой - гарантирую)
+ также во избежание багов в объекте выходе из комнаты-инвентаря написать следующее в событие любого нажатия кнопки if(item_0.cel ==0){room_goto(нужная комната)}
следует также добавить что при переходе с 1 комнаты в другую негглобальные данные использовать неполучится. поэтому в данном примере можно пойти 2 путями. Либо массив jaika[n,k] сделать глобальным: везде в коде заменить на global.jaika[n,k] либо не делать его глобальным но при переходе использовать списки для перепеси данных из массива.(а в новой комнате лучше записать из списка в нов массив и удалить список). хотя последний олее емкий(списки сами по себе глобальны+ доп код. но у меня так и сделано по особой причине) аналогично делается магазин
http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Пятница, 14 Января 2011, 15:10
шаг step. мало того что у меня объект держался углом за мышку(ну я там с коорд подправил на всяк случай)., так еще использовал стандартный шаг в условии. кароч зачастую объект не успевал бежать за мышкой и когда я нажимал на объект нах-ся в ячейке, объект прикрепленный к мыше был проигнорирован. потому и оказывалось что в итоге оба выделены.
В этом случае надо использовать только начальный шаг и никаких проблем не будет Теперь мой инвентарь полностью работает исправно.
http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Пятница, 14 Января 2011, 13:49