-
Число публикаций
1 223 -
Регистрация
-
Последнее посещение
-
Дней в топе
4 -
AMKoin
1,871 [Подарить AMKoin]
Весь контент пользователя RayTwitty
-
Ну, я же кажется написал "имхо"? Это ответ на твой вопрос. З.Ы. все люди разные, кому-то действительно нужно 150 стволов, пофиг с каким качеством, лишь бы не вылетало. А лично мне было бы достаточно и 10-ти, но с: качественными моделями, качественными анимациями и качественными текстурами. Какой подход выбрать - решать разработчикам.
-
-- функция возвращает название части тела по номеру кости. Часто используется в хит-колбеках НПС. function get_body_part_by_bone_index(bone_index) if bone_index then if bone_index < 5 then return "left_foot" elseif bone_index < 9 then return "right_foot" elseif bone_index < 11 then return "torso" elseif bone_index < 18 then return "head" elseif bone_index < 31 then return "left_hand" elseif bone_index < 40 then return "right_hand" end end end -- сравнивает два угла в радианах с погрешностью второго угла function radians_cmp(angle1, angle2, range_min, range_max) range_min = angle2 - range_min range_max = angle2 + range_max if range_max > 1.57 then range_max = -4.71 + (range_max - 1.57) end if range_min < -4.71 then range_min = 1.57 - (range_min - 4.71) end return angle1 > range_min and angle1 < range_max end На счет последнего не знаю, использовал давно, возможно есть стандартный аналог или можно лучше написать. Но по крайней мере, все работало.
-
@Карлан, нет, ну написал три раза уже он продолжает... Неугомонный.
-
А труп это разве не НПС и для него колбек вызываться не может? Вот только объяснений как таковых я не увидел. Впрочем,
-
@Карлан, постреляй в труп и посмотри, что выводит в лог. Снятие колбеков на death_callback разумеется убрал. Впрочем, вопрос неактуален - сделал уже нормально в движке.
-
Никто не знает, почему колбек на хит неписей вызывается так странно? По несколько раз за один выстрел и с нулевым amount.
-
Это все нужно разработчикам, а не простым юзерам. Пользователь максимум раз в полгода обновит бинарник.
-
Кому удобнее? Пользователям удобнее нажать одну кнопку в браузере, нежели искать и скачивать сторонний софт, устанавливать его и клонировать репозиторий.
-
К чему\кому такие вопросы? 1) гуглокод был закрыт; 2) перенос на гит осуществлял не я; 3) переносить проект svn->svn только потому, что там "трафик хорошо экономит" очень сомнительно; 4) какой трафик? Проект в zip весит 500кб. 500кб, Карл!
-
А что их выкладывать? С гитхаба скачать намного проще чем с гуглокода - вон кнопочка "Download ZIP". https://github.com/KD87/xray-extensions На гуглокод можете забить уже сейчас, его окончательно дропнут после НГ. Да.
-
В официальном репозитории ревизии уже за 240-ую перевалили, почему-то бы не зарегаться там и не коммитить нормально? Вроде бы можно, но как - не могу сказать. Следует подождать авторов, они точнее ответят.
-
Да, только там не во всех местах перед дефайнами написано "detector". Надо смотреть куда ведут метки. В 269 строке надо тоже дефайн поправить. Поставить ifndef OGSE_BUILD например.
-
Мое имхо по поводу открытых прицелов - либо их делать как в GUNSLINGER mod, но для этого понадобятся хорошие, многополигональные модели, либо не делать вообще. Но, открытым прицелам есть неплохая альтернатива - закрытые. Могу отметить работы @GeeP_85 в этом направлении, лучше я пока ничего не видел.
-
@phorumer, по дефолту никак не называется, просто пиши 138.
-
@phorumer, да, 138 колбек ставится актору - http://code.google.com/p/xray-extensions/wiki/new_collbacks аргумент - машина которую юзаем.
-
Ну, судя по описанию правки, колбек должен вызываться только при юзе без посадки. Либо правка некорректна, либо неправильно применяете. Т.е. тут надо не запутаться - в оригинале есть колбек на юз для машины, а в ХЕ добавился колбек на юз машины для актора. Расстояние до дверей + замороченный алгоритм определения, что смотрим именно в зону нахождения двери. А проверять, то что актор не сел, у меня получалось путем вызова not db.actor:get_current_holder() после отработки стандартного колбека на юз для машины.
-
Считал? Никто тебя не просил дальше цитировать меня, я лишь ответил на это. И выяснять там нечего на самом деле. Ты не программист не потому, что назвал одно другим, а потому что допускаешь такие явные дыры в алгоритме.
-
@Карлан, дело не в том, как это называется по большому счету, а в том, что кто-то предпочитает простую проверку на пустую строку поиску элемента. Эти действия совершенно не соизмеримы. Удобная отговорка на все случаи жизни)) З.Ы. если я не кулинар, то я не иду на кухню и не говорю что лучше, а что хуже.
-
До алайфа грузятся?)) Суровые смарты. Lua пофигу, хоть ты в один return, хоть в if then end. Все эти рефакторинги по переписыванию функций в одну строчку (без осмысленной оптимизации или реальной доработки) бесполезны. Никаких там кстати массивов нет.
-
Рефакторинг: _g.script
RayTwitty ответил на тему форума автора Dennis_Chikin в Скрипты / конфиги / движок
Так как непонятно, к кому обращается @Dennis_Chikin (неплохо было бы использовать цитирование), но вроде как ко мне, отвечу: info_id ~= "" and alife():has_info(0, info_id)по твоему это не булевое?)) Если как ты говоришь, актор почти всегда есть и ты его не проверяешь, то зачем нужна проверка алайфа? В каких случаях есть алайф, но нет актора?)) Почему ты так уверен? А если строка генерируется не вручную, а каким-нибудь генератором? Мало ли какие сбои. Если в lua правильно сделано сравнение строк, то никаких внутренних затрат на сравнения не потребуется, функция почти сразу выйдет с результатом. -
Рефакторинг: _g.script
RayTwitty ответил на тему форума автора Dennis_Chikin в Скрипты / конфиги / движок
Это когда такие случаи были? До загрузки игры? Не имею возможности сейчас посмотреть места вызовов конктруктора и деструктора симулятора, но скорее всего, он доступен даже когда актор в оффлайне. function has_alife_info(info_id) return info_id ~= "" and alife():has_info(0, info_id) end Неявно может быть и пустая строка. Такое вполне вероятно, по крайней мере намного вероятнее, чем вызов из главного меню до загрузки игры -
Рефакторинг: _g.script
RayTwitty ответил на тему форума автора Dennis_Chikin в Скрипты / конфиги / движок
@Dennis_Chikin, function has_alife_info(info_id) local sim = alife() return info_id ~= "" and sim and sim:has_info(0, info_id) endХотя смысла лишний раз проверять наличие симулятора по большому счету и нет. -
Обнаружил два колбека с одинаковыми номерами: debug_fixes.asm 185 строка - CALL_ACTOR_CALLBACK_INT_INT 153, edx, eax по умолчанию не вызывается, используется в OGSE. stalker_fix.asm https://code.google.com/p/xray-extensions/source/diff?spec=svn152&r=152&format=side&path=/trunk/3312_shoc_10006/stalker_fix.asm вызывается, используется вроде бы в модификации Lost World. Не критично, так как первый закомментирован, но все-таки не мешало бы поменять номер у дебагового, мало ли что. З.Ы. вообще, надо было наверно с самого начала проекта в отдельный файл выписывать дефайны с номерами используемых колбеков, чтобы каждый раз не гадать, какой номер свободен.
-
Итого, примерно двое суток потребовалось для выяснения причины отсутствия солнца в ТЧ. Как выяснилось, в ЗП game_cl_GameState::net_import_GameTime вообще не вызывается, следовательно -> нет вызова GamePersistent().Environment().Invalidate() -> нет сброса текущего стейта флара. Путем отладки было также выяснено, что Invalidate() в ЗП отрабатывает ТОЛЬКО при вызове CEnvironment::SetWeather (а это именно та функция, которая экспортирована в level.set_weather), следовательно Invalidate() в ЗП вызывается только из скриптов и только вполне определенное количество раз (а не на апдейте, как в ТЧ). Таким образом, выпиливание вызова из net_import_GameTime - это правильный шаг, правка абсолютно корректна. Но для этой правки требуется скриптовая доделка, в виде установки погоды из скрипта после загрузки сейва (очевидно, в ЗП эту функцию выполняет система динамической погоды), однако у меня нормально погода устанавливается только на первом апдейте актора, на спавне почему-то не хочет. Собственно, в OGSE и не было проблем потому, что там идет полное управление погодой из скрипта. З.Ы. на счет net_import_GameTime - можно было конечно поступить как в ЗП, убрать вообще вызов этой функции (а точнее убрать экспорт), но это уже серьезные вмешательства в работу системы клиент-сервера, неизвестно к чему это приведет - в ЗП все-таки там основательно все переделали...
-
Пока и в исходниках не получается)) Убил вчера весь день, но так и не понял как исправить. Причина не появления флара ясна - при вызове GamePersistent().Environment().Invalidate() сбрасывается стейт флара в none, процесс начинается сначала и так на постоянном обновлении. В то же время, в ЧН\ЗП код такой же, однако всё работает. Так же, как колбек на юз.
УЧИМСЯ МОДДИНГУ
ИГРАЕМ В МОДЫ НА ТЧ
ИГРАЕМ В МОДЫ НА ЧН И ЗП
- [ЧН] OGSM CS 1.8 CE Fixes
- [ЧН] HARDWARMOD 3.2
- [ЗП] The Long Road
- [ЧН] New vision of War
- [ЧН] Old Good Stalker Mod - Clear Sky
- [ЗП] Unofficial Patch
- [ЗП] Смерти вопреки
- [ЗП] Контракт на хорошую жизнь
- [ЗП] Shoker Weapon Mod 2.1
- [ЗП] Hardcore pack for SGM 2.2
- [ЗП] Контракт Синдиката
- [ЗП] Клондайк 2.0
- ...и другие моды
ПОЛЕЗНОЕ И РАЗНОЕ