![]() |
вот твоя ошибка : посмотри внимательно c 272 по 275 строку
я нашол ошибку за ~45 сек... ps. если невидете такую примитивную ошибку то как вам писать большие игры ? а еще говорят что у меня нету опыта :bad: |
Совместно с jimon устранили баг с "взрывающимися" кубиками и осколками!
БАГ - очень сложно устранимый! итак: Код:
EntityType boom1\Obj,typeexp Код:
EntityType boom1\Obj,typeexp буду юзать! но от помощи как всегда не откажусь! |
Вот! Причем опечатку найти даже сложнее, чем другую ошибку, хотя и не всегда.
Насчет убивания белых все ясно, просто надо закомментировать 3 строчки в функции fnUpdateBooms() Код:
;copy_cube.cubes = Object.cubes (EntityName (ent4)) |
Итак, уважаемые друзья!!!
Смею вас заверить, что проект НЕ СДОХ, а успешно продолжает жить! Просто сейчас из-за учебы у меня нет времени... итак! вот что сегодня как тяжкий груз висит: 1) AI. описание есть в диздоке 2) Сделать призы. (пока это 3Д кубики, которые изменяют параметры игрока( все в диздоке) |
Ладно, уважаемые друзья-кодеры!!!
давайте все по-порядку! и добьем НАШ (заметим не мой, а уже Жекин, ZubZero, impersonalis, jimona) коль скоро у всех учеба...и нету времени, то я решил (как руководитель и "задумщик" проекта) делать так: а) задавать конкретные вопросы, а не писать тупо:сделаем призы :@ потому что это выглядит как:сделаем игру. б) спрашивать конкретные вопросы. в) в конце концов если вопрос туп (все просто) то убидительно прошу не напоминать мне это, ибо я уже не задаю вопрос, а говорю на каком этапе игра. То есть либо я это первый сделаю, либо ктто-то.. Кто первый сделает - тот и выкладывает! Итак: 1) AI нужно сделать так, что бы "кубик" (уже есть в исходниках - клавишей 1 активируется) при столкновении поворачивался на 90. При этом(это легко я делал) встречается баг! Если "кубик" между 3 кубиками-но он крутится до бесконечности. Вообзе про AI тип 1 есть в диздоке 2) Нужно создать кубик-приз. а) создать кубик - он должен создаваться ТОЛЬКО внутри убиваемого кубика(это сложность) б) убивается бомбой в)изменяет параметр игрока. Если взят - жизнь игрока=жизнь +1 (естть в диздоке. Для этого нужно ввести переменную жизни. (она есть...ее нужно апдейтНУТЬ) Итак... теперь я надеюсь, что кно-нибудь 1 пункт, но сделает! А то проект...замерзает(( |
(я новый код не зырил)
1. Советую сделать двухмерный массив, такой же как в редакторе карт, и его использовать для проверки есть ли препятствие на пути или нет, но коллизии оставить! Т.е. при столкновении противника со стенкой ты его поворачиваешь, но не сразу, а сначала проверяешь есть ли препятствие там, куда планируешь повернуть. Для определения наличия препятствия используешь "суперинформативний" массив. Тут "сложность" только в том, чтобы определить, в каком секторе карты находится противник, чтобы перевести его координаты в индексы массива. поле имеет размер 29х29, каждый кубик имеет размер 10х10х10 Получаем игровое поле 290х290 Допустим, противник врезался в стенку, имея координаты (надо только х и z) (127,y,200) Надо получить из этого индексы для массива, так получаем их! posX# = 127 posZ# = 200 koefX = posX# * 0.1 - "делим" координату Х на ширину кубика. Этим мы получили целое цисло кубиков, которые находятся слева от противника koefX - целое число! = 12 в нашем случае Надо что-то сделать с оставшейся 7-кой addX = posX# - koefX * 10 if (addX-5>2.5) koefX = koefX + 1 На практике не должно получиться этого "округления", потому что размер противника соизмерим с размером кубиков... так же для координаты z потом проверяем значение массива value = mapInfoMas(koefX,koefZ) - это для сектора, где противник в ДАННЫЙ момент - не интересно mapInfoMas(koefX-1,koefZ) - что находится слева от противника? mapInfoMas(koefX+1,koefZ) - что находится справа от противника? mapInfoMas(koefX,koefZ+1) - что находится спереди от противника? mapInfoMas(koefX,koefZ-1) - что находится позади противника? имеется ввиду сдвиг на 1 кубик в каждую сторону 2. Смотря что нужно: если призы должны появляться всегда в разных кубиках, то из игры их расставлять, если в одном и том же, то проще/нагляднее расставить в редакторе карт... ПС: чем отличаются пункты а) и б), которые самые верхние? |
Вложений: 1
Я немножко переделал функцию обработки ИИ, теперь противники бегают по полю и поворачиваются, если столкнулись с чем-то...
Но надо еще подправить кое-что: там, где я вписал проверку на коллизию противников с различными типами объектов, надо это писать не в один IF, а в несколько, т.к. бывает столкновение обновременно с игроком и стенкой и работает неправильно. Хотя может и не в том дело. !!! Я делал исправления в старой версии, какой не помню... ПС: Изначально противник(и) нарезает креги в "замкнутом" пространстве, но стоит нам взорвать одно из препятствий, как... ППС: это всем, кто просит помочь с кодом: те примеры, которые я пишу, НЕ ЯВЛЯЮТСЯ эталоном правильности или чего-то в этом роде, они позволяют врубиться что к чему (и то не всегда наверное), не больше. Поэтому: нужно брать саму идею и делать по-своему как вам УДОБНЕЕ, и не переделывать свою прогу ПОД МОЙ код! (если хотите - делайте, я не против, просто сказал, как лучше будет). Расширение файла надо ПЕРЕИМЕНОВАТЬ в RAR! |
2Жека:
Я посмотрел твой код. То, что есть в ИИ сейчас это то, к чему я когда-либо уже приходил. И потому я не выложил такой результат, что когда ИИ враг типа1 при коллизии с кубиком - поворачивается - это + , но при повороте он так же...меняет свою позицию - "дергается". Что крайне нежелательно. Убрать "дерганье" можно при помощи команды rotateentity. Но я не справился со всем. Посему прошу тебя немого пересмотреть "движение" ИИ. 2All 1) Сделал приз. дает +1 к кол-ву бомб. Теперь игрок не может клавишей пробел ставить больше 1 бомбы( пока не взорвется первая. При получении приза (активируется клавишей f5 на цифровой клавиатуре) игрок ставит уже 2 бомбы. Повторное нажатие f5 ставит опять кубик-приз 2) Убрал лишний код...привел в порядок то, что есть. Теперь белый(непробиваемый) кубик не пробивается 3) БАГ!!!! ВНИМАНИЕ: то, что нужно сделать: 1) f5 2) берем приз 3) ставим !!рядом!! 2 бомбы 4) взрыв в неположеном месте. Это грусно(( 4) Нужно сделать так, что бы кубик-приз(тот, что есть уже(то есть мой)) появлялся в случайном месте внутри кубика. (разумеется пробиваемого) 5) Необходимо сделать ИИ 2 типа. ОПИСАНИЕ: 2. Странник - этот тип имеет обыновение путешествовать по игровой локации, поворачивая в случайном направлении(на 90,180,270,360 грудусов) каждые N количество секунд. Если встречает препятствие(любое), поворачивает на 90 грудусов. Вырезка из ДизДока Сложность: как сделать так, что когда ИИ2 поворачивается, то он не наталкивался бы на стены, а поворачивался в тот момент, когда можно пойти в "коридор". То есть он не должен поворачиваться на белые кубики. *** Буду работать над кубиком-призом. Последняя версия бомбера - прилагается! |
И еще!
Дальнейшая разработка призов-трата времени! необходимо сперва сделать 4) Нужно сделать так, что бы кубик-приз(тот, что есть уже(то есть мой)) появлялся в случайном месте внутри кубика. (разумеется пробиваемого) пока этоо не будет...не будет дальнейших призов... :bad: думаем на этим... |
Вложил текстуру приза.
Теперь все работает |
мои изменения :
переделал колозии - нах так много ? переделал управление - было глючное стало нормальное и краткое убрал лошивий глюк - было в колозиях притом там две колозии повторялись ! поставил ботам тип колозий игрока - потомучто ето тоже самое зделал более-мение тупой ai :)) правда фактор случайности там кривой :)) замечание которые я сказал fant'у, говорю и здесь первое - ненадо столько колозий , тормозит второе - updateworld тоже некидай куда попало третье - ты зделал неочень рациональное управление четвертое - ненадо условие для if писать в скобках - можно но ненадо, если после if идет конструктция if ... end if то лутче напиши if aa=0 then... end if чем ети скобки а так вроде все нормально и главное - код не оптимизирован вообщем дерзайте мона повесить на етот код надпись : jimon modification ;) |
2jimon
1) Убрал баг 2) Положил начало ИИ (смешно звучит) 2ALL 1) Нужно сделать так, что бы кубик-приз появлялся внутри кубика(пробиваемого) 2) ИИ первого типа надо добить. 5) Необходимо сделать ИИ 2 типа. ОПИСАНИЕ: 2. Странник - этот тип имеет обыновение путешествовать по игровой локации, поворачивая в случайном направлении(на 90,180,270,360 грудусов) каждые N количество секунд. Если встречает препятствие(любое), поворачивает на 90 грудусов. Вырезка из ДизДока Сложность: как сделать так, что когда ИИ2 поворачивается, то он не наталкивался бы на стены, а поворачивался в тот момент, когда можно пойти в "коридор". То есть он не должен поворачиваться на белые кубики. и объяснить мне, что значит "оптимизировать код"...и почему мой - не оптимизированый. |
говорюже - с опытом прийдет к тебе понятие оптимизация :rolleyes:
|
Это так, но можно этот процесс ускорить!
Надо только раз показать что к чему, и все... |
еще один :o
вот пример оптимизиции в жизни реактивный двигатель универсален ракета для вылета в космос неуниверсальная и дорогая оптимизированый вариант - самолет , универсален и дешов и способен летать в космос а теперь представь ето в программировании... |
Часовой пояс GMT +4, время: 12:32. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot