#454
08 января 2012 в 18:15
Вобщем стукнуло мне полазать в исходниках game.dll....<br />Эммм... Я дебил, потому что практически нефига не понимаю ;D<br />Но потихоньку стараюсь)<br />Прошу разъяснить мне пару вещей (хотя чувствую отправят в гугл)<br />-------<br />1. m_flash.c <br />тут я так понимаю хранится координата откуда собственно полетит выстрел из девайса противника, а циферка коммента показывает на номер кадра текущего диапазона анимации? Это коордната относительно координаты противника, так?<br />-------<br />2. Мну для сэбэ хочу монстров по мощнее... Отсюда:<br />а) Я в упор не нашёл где прописывается скорость передвижения монстров?<br />б)Объясните структуру сего чуда:<br />
mframe_t makron_frames_attack4[]=<br />{<br /> ai_charge, 0, NULL,<br /> ai_charge, 0, NULL,<br /> ai_charge, 0, NULL,<br /> ai_charge, 0, NULL,<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, MakronHyperblaster, // fire<br /> ai_move, 0, NULL,<br /> ai_move, 0, NULL,<br /> ai_move, 0, NULL,<br /> ai_move, 0, NULL,<br /> ai_move, 0, NULL<br />};<br />mmove_t makron_move_attack4 = {MAKRON_FRAME_attak401, MAKRON_FRAME_attak426, makron_frames_attack4, makron_run};
<br />Я так понял что в фигурный скобки заперт некий массив соответствующий диапазону фреймов текущей анимации. Так же я понял что третий столбец вызывает процедуру чего в этот момент будет происходить, а первый столбец вызывает процедуру интеллекта класса "противник".... Или как то так)<br />Поподробней можно что за циферка во втором столбце, да и нюансы какие плюс строка ниже фигурной скобки?<br />------<br />3. <br />void MakronHyperblaster (edict_t *self)<br />{<br /> vec3_t dir;<br /> vec3_t vec;<br /> vec3_t start;<br /> vec3_t forward, right;<br /> int flash_number;<br /><br /> flash_number = MZ2_MAKRON_BLASTER_1 + (self->s.frame - MAKRON_FRAME_attak405);<br /><br /> AngleVectors (self->s.angles, forward, right, NULL);<br /> G_ProjectSource (self->s.origin, &monster_flash_offset[flash_number*3], forward, right, start);<br /><br /> if (self->enemy)<br /> {<br /> VectorCopy (self->enemy->s.origin, vec);<br /> vec[2] += self->enemy->viewheight;<br /> VectorSubtract (vec, start, vec);<br /> vectoangles (vec, vec);<br /> dir[0] = vec[0];<br /> }<br /> else<br /> {<br /> dir[0] = 0;<br /> }<br /> if (self->s.frame <= MAKRON_FRAME_attak413)<br /> dir[1] = self->s.angles[1] - 10 * (self->s.frame - MAKRON_FRAME_attak413);<br /> else<br /> dir[1] = self->s.angles[1] + 10 * (self->s.frame - MAKRON_FRAME_attak421);<br /> dir[2] = 0;<br /><br /> AngleVectors (dir, forward, NULL, NULL);<br /><br /> monster_fire_blaster (self, start, forward, 15, 1000, MZ2_MAKRON_BLASTER_1, EF_BLASTER);<br />}
<br />Я так понял цэ, например, процедура шмаляния с бластера нашего общего "друга" Макрона. Что то я не пойму, где здесь переменная хранящая координату куда он шмаляет?( по хорошему я только малую часть сей процедуры понимаю)<br />------------------------------------------------<br />Объясню чего я хочу добиться)<br />Хочу чтоб енеми бегали пошустрее, и стреляли по чаще, да и со здоровьем и мощностью поиграться(с этим тьфу-тьфу проблем нету). Т.е. не так что увидел, пострелял и как дебил бежит в рукопашку. А чтоб если уж начал стрелять так чтоб порядком осадил плеера) Ну а для более менее выравнивания шансов выживания плеером, снизить меткость монстров.<br />Например при встрече с инфентри, тот не щемился в рукопашку имея в руках нехилый миниган, а задал плееру некислый геморой поливая его свинцом из этого самого минигана порядочное время.<br />Или танк например, не тупо расхаживал кругами (что меня очень сильно раздражает, потенциал у него огромный, но аи бестолковый как китайский калькулятор на 4 действия), а обнаружив плеера принялся закидывать его из всех стволов и ракетами по 10 стук в придачу (с хорошим разбросом разумеется)... А то этот танк даже имея в руках всего лишь машинган завалить дело не хитрое....<br />Раз уж интеллектом не блещет, пусть хоть огневой мощью подавляет..<br />А берсерк со скоростью выше скорости игрока - это вобще жестокая вещь, оставляющая совсем малый шанс на выживание)<br />--------<br />Хочу посложнее и позрелещнее сделать, для себя хотя бы) Чтоб хоть немножко тактика игрока разнообразилась... А то сплошная шакалья тактика, выскочил из-за угла, укусил и опять за угол, или бега покругу медленного танка, с целью опять же укусить так чтоб рокетой в лоб не хапнуть(( Не вдохновляет.<br /><br />Вот)<br />
#455
09 января 2012 в 07:05
1. m_flash.c <br />тут я так понимаю хранится координата откуда собственно полетит выстрел из девайса противника, а циферка коммента показывает на номер кадра текущего диапазона анимации? Это коордната относительно координаты противника, так?<br />таблица monster_flash_offset - это список координат вспышек в системе координат стрелка.<br />Стрелки и их номера анимаций разные, нумерация сквозная, номера эти запечены в другие структуры внутри dll.<br />Если не планируешь переделывать модели и/или анимацию, сюда лучше не соваться.<br /><br />2. очень помогает описание структур mmove_t и mframe_t<br /><br />3. куда шмаляет Макрон: self->s.angles т.е. куда он смотрит.<br />Прочие параметры стрельбы тоже раскручиваются на раз, просто стоит просмотреть описания функций, тут - monster_fire_blaster .<br />Расстояние докуда летит заряд задаётся не тут, а в процедуре fire_blaster:<br /> bolt->touch = blaster_touch; <- при прикосновении вызывается это.<br /> bolt->nextthink = level.time + 2; <- время жизни заряда бластера 2 секунды (т.е. тут запланирован вызов "думающей" процедуры через 2 секунды от текущего времени)<br /> bolt->think = G_FreeEdict; <- а это и есть "думающая" процедура, в данном случае - просто удаление заряда.<br /><br />
Раз уж интеллектом не блещет, пусть хоть огневой мощью подавляет..<br />может стоит поставить найтмар-скилл, включить предатор-эффекты монстрам и включить автореспавн? :)<br /><br />Помог чем мог, сам то я не силён в game-code. ???<br /><br />
#456
09 января 2012 в 07:48
Пасиб) Покопаю)<br />[quote author=Берсеркер link=topic=196.msg16108#msg16108 date=1326092712]<br />может стоит поставить найтмар-скилл, включить предатор-эффекты монстрам и включить автореспавн? :)<br />[/quote]<br />Не, это не то)... Нету зрелищности... Да и тупо увеличение мощности противника не очень складывается)<br />а респавнящий за спиной противник - это вобще плохой тон ^^ (хотя у мну не респавняться, и мну научный и после себя оставляет только шматки)<br />Пусть меньше кругами ходят, да больше атакуют)
#457
22 января 2012 в 15:16
Вобщем потихоньку лапаю и методом научного тыка исследую исходники)<br />Удалось наделить солдеров нереальной огневой мощью)<br />А именно, теперь они у меня поливают свинцом почём зря, а встреча с солдером вооружённым картечным пулемётом (процедура от автомата с выстрелами дробовика) практически гарантирует смерть)<br />Но вот проблема - например если прифигарить рельсу или рокетницу солдеру, он всегда "стреляет не туда", а по простому тупо мажет, такое впечатление что не передаётся вектор стрельбы( Хотя все переменные вроде те же самые. не понимаю( Как управлять вектором стрельбы? Берс, подскажи?) Моих хилых знаний маловато)<br />---------<br />И вот попутно идея для СП<br />А можно сделать трассеры для выстрелов? Так сейчас модно делать)<br />Например как в халфлайфе) Красиво бы перестрелка смотрелась) Особо при пулемётном обстреле) Ну и вспышку выстрела заодно подвесить) Вобще красота была бы)<br /><br />
#458
22 января 2012 в 16:09
[quote author=D_R_ link=topic=196.msg16400#msg16400 date=1327245403]А можно сделать трассеры для выстрелов? Так сейчас модно делать)[/quote]<br />посмотри мои сурсы
#459
22 января 2012 в 18:06
Кстати, давненько твою конверсию не поглядывал (грешен)<br />Пасиба за совет)<br />Если чего не пойму, буду тебе писать)
#460
31 января 2012 в 15:24
а релайта для dm карт нет? (q2dm1... ) больно уже сильно темно. (стандартными командами все равно как-то темно в соместимости)<br />и еще вопрос, модельки как нибудь подсветить можно?<br />раскрасить только в 3dмаксе?