Где вместо iAmmo может быть: m_iShells, m_iBullets, m_iRockets, m_iGrenades, m_iNapalm, m_iSniperBullets, m_iElectricity, m_iIronBalls Которые объявлены, очевидно, в PlayerWeapons
Перечитал свой вопрос... Теперь надо конкретный вид iAmmo связать с текущим оружием. Пример TFE - подсвечивается иконка боеприпасов в ряде общего боезапаса, которое использует текущее оружие.
То есть узнать текущий тип патронов игрока
Сообщение отредактировалart-serious - Среда, 08.02.2017, 17:06
По какой-то неведомой мне причине в моём моде не работает ЛОД у моделей. Если открыть эту же модель в оригинальной игре или другом моде, то всё работает как надо. Возможно я где-то испоганил код, но если заменить в другой мод мои EntitiesMP, то там всё работает. Пробовал убрать все длл из мода вообще - всё равно ЛОД не работает. В чём может быть проблема? В моде я дополнял ModelHolder2, но я не изменял ничего, только добавлял новые функции
Спасибо, получилось, но не до конца. Пули всё равно летят не туда, где прицел: например, если упереться в стену или смотреть вниз, то Сэм стреляет ниже.
Приближаемся к абстрактному пределу. Хочу привязать движение (поворот от точки опоры) оружия (и интерфейса. Они привязаны) от направления движения мыши. Где можно глянуть примеры в сорсах или откуда начать копать? PlayerView.es ?
Jack_Stone, ищешь функцию CalcWeaponPosition в PlayerWeapons, копируешь ее и называешь как-нибудь типа CalcWeaponPositionFixed и далее в ней под строкой // weapon handle заменяешь
Добавлено (06.03.2017, 07:27) --------------------------------------------- Хочу прописать переменную для Nukeballs, но не выходит. Подскажите, пожалуйста, чего не хватает.
Помогите, пожалуйста с кодом. Я хочу сделать так, что биомех при ходьбе мог ранить других монстов и Сэма (как бык или бензопильщик при беге), прописал по аналогии, объявил все нужные переменные, но все равно не работает. Что может быть не так?
/************************************************************ * ATTACK FUNCTIONS * ************************************************************/ // touched another live entity void LiveEntityTouched(ETouch etouch) { if (m_penLastTouched!=etouch.penOther || _pTimer->CurrentTick()>=m_fLastTouchedTime+0.25f) { // hit angle FLOAT3D vDirection = en_vCurrentTranslationAbsolute; vDirection.Normalize(); ANGLE aHitAngle = FLOAT3D(etouch.plCollision)%vDirection; // only hit target in front of you if (aHitAngle < 0.0f) { // increase mass - only if not another bull if (!IsOfSameClass(this, etouch.penOther)) { IncreaseKickedMass(etouch.penOther); }
Сложно сказать с первого взгляда. Попробуй проставить CPrintF'ы где-нибудь в месте, где должен наноситься урон. Если в консоли не будет сообщения, то в самом начале процедуры и так далее. Проверь, соблюдаются ли все условия.
Сообщение отредактировалHeming_Hitrowski - Понедельник, 13.03.2017, 23:00
Поменяй родительский класс биомеханоида на CEnemyRunInto, иначе LiveEntityTouched не будет вызван.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Ждать можно только в процедурах. Возможно несколько вариантов, в зависимости от ситуации. Если от игрового объекта ничего не требуется делать в течении этой секунды, можно использовать autowait. Если в это время могут обрабатываться другие события, то нужно написать wait с заданным временем ожидания:
Код
wait(1.0f) { on (EBegin) : { resume; } // тут обрабатываешь остальные события on (ETimer) : { // тут меняешь свою переменную stop; } }
А если в период ожидания объект может перейти в другое состояние (процедуру), нужно использовать CReminder (поищи функцию SpawnReminder). Он через заданное время пришлёт ивент EReminder.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
wait(1.0f) { on (EBegin) : { resume; } // тут обрабатываешь остальные события on (ETimer) : { // тут меняешь свою переменную stop; } }
SpawnReminder я нашел, но никак не пойму как он работает.
В конечном итоге функция уменьшения батарейки фонаря идет в PlayerWeapons (не знаю глупо это или нет, но это пока единственный рабочий способ, и то наполовину), и если прописывать ее как Event наряду со стрельбой и тд, то она, понятное дело, заглушает и стрельбу и всё остальное, пока фонарь включен.
Есть ли еще способ сделать уменьшение переменной не в PlayerWeapons, а в Player? Например, если менять что то стандартное - можно ли сделать так, чтобы Супер Бомба после нажатия на клавишу тратилась не один раз, а пока не нажмешь на клавишу снова? То же самое с фонарем - вкл/выкл, другими словами. Я спрашиваю это, потому что прописал батарейку по аналогии с Бомбой.
Сообщение отредактировалJack_Stone - Среда, 22.03.2017, 00:50
Налицо явное непонимание разницы между functions и procedures. Советую прочитать мою статью в последнем выпуске Serious Time ( http://www.serioussite.ru/load/raznoe/serious_time_1_5/10-1-0-2283 ), там я долго и подробно всё это объясняю. Уменьшать переменную раз в секунду ты можешь из любой процедуры.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
SLAwww, я в программировании ноль, потому наверное и вопросы глупые. Так что спасибо за помощь, обязательно прочту Что касается моего вопроса про фонарь, то я сделал что хотел, правда каким-то идиотским и совершенно случайным способом, но зато нужный результат получил.
Народ, скажите плиз, а можно поставить звуки от ударов ножа по поверхности? Я посмотрел что там с Bullet, много всего. С ножом, я так понял, то же самое? Или как то проще можно? Например сделать отсылку на Bullet.
Сообщение отредактировалJack_Stone - Воскресенье, 26.03.2017, 21:44
Думаю тебе прежде всего стоит разобраться, как работает луч. (мне тут придется много расписывать, и возможно не самым точным образом, поэтому я этого делать не буду. Но ты обязательно поэкспериментируй с CastRay) Подскажу:
Там есть условие, когда то, на что ударил луч, является брашем: