AndreySol 215 Опубликовано 30 Августа 2017 Поделиться Опубликовано 30 Августа 2017 @alexus95 Желание*желание + изучение С++, WinAPI ну и собственно самих исходников движка... Ссылка на комментарий
AndreySol 215 Опубликовано 4 Сентября 2017 Поделиться Опубликовано 4 Сентября 2017 (изменено) Пару вопросов по движковой структуре SHit. Hit.h: SHit (float Power, Fvector &dir, CObject *who, u16 element, Fvector p_in_object_space, float impulse, ALife::EHitType hit_type, float ap = 0.0f, bool AimBullet=false); Hit.cpp: SHit::SHit(float aPower, Fvector &adir, CObject *awho, u16 aelement, Fvector ap_in_bone_space, float aimpulse, ALife::EHitType ahit_type, float aAP, bool AimBullet) Названия аргументов в объявлении не совпадают с названиями в реализации. Я всегда думал, что должно совпадать ? u16 element - косточка, по которой пришелся хит ? Не могу найти, где перечислены все возможные косточки, подскажите. Класс CEntityCondition как я понимаю используется и для актера и для мобов. А как в этом классе определиться - "кто мы сейчас". Т.е., к примеру в ф-ции этого класса ConditionHit определить, для кого она сработала - для актера или не актера ? Изменено 4 Сентября 2017 пользователем AndreySol Ссылка на комментарий
!SkIF! 1 Опубликовано 4 Сентября 2017 Поделиться Опубликовано 4 Сентября 2017 У меня вопрос по компиляции исходников СДК: делаю все по этому тутору. Когда подключаю package SDK\components\AlexMX\editor.bpl builder вылетает. Вот как подключаю Скрытый текст http://f22.i-fotki.info/org/909d13b4644708d4ed5bb29c5a982a18a5e396287183379.png Потом выбираю SDK\components\AlexMX\editor.bpl Сначала ругалось на отсутствие rtl60.bpl, vcl60.bpl и т.д. Все нужные bpl нашел, и теперь вот вылетает. Из-за чего может вылетать? Или я неправильно подключаю новые package? Заранее спасибо! 1 Ссылка на комментарий
AndreySol 215 Опубликовано 4 Сентября 2017 Поделиться Опубликовано 4 Сентября 2017 (изменено) Тут вот нашел такое в движке - в CEntityCondition::ConditionHit обработка хита: float hit_power_org = pHDS->damage(); float hit_power = hit_power_org; hit_power = HitOutfitEffect(hit_power, pHDS->hit_type, pHDS->boneID, pHDS->ap); далее: float CEntityCondition::HitOutfitEffect(float hit_power, ALife::EHitType hit_type, s16 element, float AP) { .... pOutfit->Hit(hit_power, hit_type); .... } далее в: CCustomOutfit::Hit(float hit_power, ALife::EHitType hit_type) { hit_power *= m_HitTypeK[hit_type]; ChangeCondition(-hit_power); } Если я ничего не проглядел, то получается, что при получении к примеру телепатического(ну и радиационного до кучи) хита, происходит износ броника ? Изменено 4 Сентября 2017 пользователем AndreySol Ссылка на комментарий
WinCap 316 Опубликовано 7 Сентября 2017 Поделиться Опубликовано 7 Сентября 2017 Здравствуйте. Мне нужно выделить и удалить часть строки заключенную в круглые скобки. Например, строку "abc(def)" разделить на "abc" и "def". У меня получился следующий код: Скрытый текст xr_string str = array_str[i].c_str(); xr_string part; xr_string::size_type bb = str.find( "(" ); xr_string::size_type eb = str.find( ")" ); if ( bb != xr_string::npos && eb != xr_string::npos ) { part = str.substr( bb + 1, eb - bb - 1 ); str.resize ( bb ); } Всё работает, но подскажите, пожалуйста, может, есть более правильный способ или более простой? S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
AndreySol 215 Опубликовано 10 Сентября 2017 Поделиться Опубликовано 10 Сентября 2017 (изменено) ТЧ 1.0007rc1. Такая вот задачка: при установке\смене броника в слот снимать предмет из другого слота. Сейчас сделал так: Скрытый текст в CCustomOutfit::OnMoveToSlot() добавил PIItem pRemItem = pActor->inventory().ItemFromSlot(NEWITEM_SLOT); if (pRemItem) { CUIGameSP* pGameSP = NULL; CUI* ui = HUD().GetUI(); if (ui && ui->UIGame()) { pGameSP = smart_cast<CUIGameSP*>(HUD().GetUI()->UIGame()); if (pGameSP) { if (pGameSP->MainInputReceiver() == pGameSP->InventoryMenu) { pGameSP->InventoryMenu->RemToBag(pRemItem); <- если окно инвентаря открыто } else { pActor->inventory().Ruck(pRemItem); <- все остальные случаи } } } } в UIInventoryWnd.h: bool RemToBag(PIItem pItem); CUIDragDropListEx* m_pUINewItemList; в UIInventoryWnd.cpp: m_pUINewItemList инициализируем аналогично m_pUIOutfitList например. в CUIInventoryWnd::RemToBag(PIItem pItem) { if (GetInventory()->CanPutInRuck(pItem)) { CUICellItem* itm = m_pUINewItemList->ItemsCount() ? m_pUINewItemList->GetItemIdx(0) : NULL; CUIDragDropListEx* new_owner = m_pUIBagList; bool result = GetInventory()->Ruck(pItem); VERIFY(result); CUICellItem* i = m_pUINewItemList->RemoveItem(itm, false); new_owner->SetItem(i); SendEvent_Item2Ruck(pItem); return true; } return false; } Ни чего лучше не придумалось, но вроде работает. Собственно хочу спросить: кто нить решал подобную задачу и может ли предложить более лучший вариант ? А то сдается мне, что мой вариант - гадкий и кривой костыль... Изменено 10 Сентября 2017 пользователем AndreySol Ссылка на комментарий
Shkiper2012 35 Опубликовано 15 Сентября 2017 Поделиться Опубликовано 15 Сентября 2017 [ТЧ 1.0007rc1] Приветствую. Думал в теме про C++ задать этот вопрос, но он (имхо) ближе к движку и поэтому здесь. Итак... Начал разбираться в движке, и возник такой нубский вопрос по типах переменных (и не только по ним): Скрытый текст Flags8, Flags16, Flags32 <--- Что это за флаги? Для чего используются? u8, u16, u32 <--- Это 'unsigned _int8', 'unsigned _int16', 'unsigned _int32' или что то другое? s16, s32 <--- Это тип 'string' 16ти и 32х битные или нет? f32, <--- Это тип 'float' 32х-битный? Если да, то чем отличается от стандартного 'float' ? BOOL, TRUE / FALSE <--- Почему типы 'boolean' в верхнем регистре? Есть ли отличие от просто 'bool', 'true', 'false' ? LPSTR <--- Что это за строка, чем отличается, например, от 's16', 'string16', 'char' ? IC, ICF <--- Что это за тип / класс / структура / шаблон...? string16, string32, string64, string128, string256, string1024 <--- Чем эти строки отличаются от других? Цифры означают битность или размер чего-либо? (CParticlesObject*& pParticles) <--- Это ссылка и указатель одновременно? До сих пор, путаю указатели и ссылки, а тут всё в одном флаконе =) Что это за типы? Чем отличаются от стандарта C++? Скрытый текст Так же, буду благодарен за объяснения "авторских" типов из движка, которые здесь не указаны. Кроме стандартных, разумеется. А может и стандартные у GSC перегружены / переписаны. Если это, уже где-то "разжёвано", то, пожалуйста, покажите направление куда смотреть. Заранее, признателен за ответы. Адаптация мода "AtmosFear" для мода "Боевая Подготовка" v.2.0.2. Адаптация мода "Магазинное питание" для мода "Боевая Подготовка" v.2.0.2. Ссылка на комментарий
krop 11 Опубликовано 15 Сентября 2017 Поделиться Опубликовано 15 Сентября 2017 3 часа назад, Shkiper2012 сказал: нубский вопрос по типах переменных Перейти к объявлению/определению не судьба? Ссылка на комментарий
DDamian724 18 Опубликовано 17 Сентября 2017 Поделиться Опубликовано 17 Сентября 2017 How i can fix this bug with weapon strafe feature (LA)? Russian: Скрытый текст Как я могу исправить эту ошибку c weapon strafe (LA) https://www.youtube.com/watch?v=f2pbL4jNy08 Ссылка на комментарий
Space.Marine 466 Опубликовано 17 Сентября 2017 Поделиться Опубликовано 17 Сентября 2017 5 часов назад, DDamian724 сказал: strafe feature А причём тут движок ? Это же анимация. Вот нормальная анимация strafe: https://yadi.sk/d/3vxsfGnR3My6NV правда для CoP. Не знаю подойдёт ли для LA. Ссылка на комментарий
DDamian724 18 Опубликовано 18 Сентября 2017 Поделиться Опубликовано 18 Сентября 2017 22 часа назад, Space.Marine сказал: A gdzie jest silnik? To ta sama animacja. Oto normalna animacja strafeów: https://yadi.sk/d/3vxsfGnR3My6NV prawda dla CoP. Nie wiem, czy nadaje się do LA. I ported weapon strafe from LA. To my own revision of engine Ссылка на комментарий
aka_sektor 1 476 Опубликовано 18 Сентября 2017 Поделиться Опубликовано 18 Сентября 2017 (изменено) Вопрос по восприятию кода движка. Необходимо понять условия для воспроизведения звука NPC: Подсказали, что нужно смотреть условия в исходном коде:https://www.gameru.net/forum/index.php?s=&showtopic=69272&view=findpost&p=1623127 Ок. Вот и он: eStalkerSoundDie и eStalkerSoundDieInAnomaly if (is_special_killer(who)) sound().play (eStalkerSoundDieInAnomaly); else sound().play (eStalkerSoundDie); eStalkerSoundInjuring if (entity_alive && !wounded()) { if (is_relation_enemy(entity_alive)) sound().play (eStalkerSoundInjuring); // else // sound().play (eStalkerSoundInjuringByFriend); } if (object().memory().enemy().selected()) { u32 min_queue_size, max_queue_size, min_queue_interval, max_queue_interval; float distance = object().memory().enemy().selected()->Position().distance_to(object().Position()); select_queue_params (distance,min_queue_size, max_queue_size, min_queue_interval, max_queue_interval); object().CObjectHandler::set_goal (eObjectActionIdle,object().best_weapon(),min_queue_size, max_queue_size, min_queue_interval, max_queue_interval); } else object().CObjectHandler::set_goal (eObjectActionIdle,object().best_weapon()); object().sight().setup (CSightAction(SightManager::eSightTypeCurrentDirection,true,true)); object().sound().play (eStalkerSoundInjuring); } eStalkerSoundHumming void CStalkerActionSmartTerrain::execute () { inherited::execute (); if (completed()) object().CObjectHandler::set_goal (eObjectActionStrapped,object().best_weapon()); object().sound().play (eStalkerSoundHumming,60000,10000); CSE_ALifeHumanAbstract *stalker = smart_cast<CSE_ALifeHumanAbstract*>(ai().alife().objects().object(m_object->ID())); VERIFY (stalker); VERIFY (stalker->m_smart_terrain_id != 0xffff); CALifeSmartTerrainTask *task = stalker->brain().smart_terrain().task(stalker); THROW2 (task,"Smart terrain is assigned but returns no task"); if (completed()) object().CObjectHandler::set_goal (eObjectActionStrapped,object().best_weapon()); object().sound().play (eStalkerSoundHumming,60000,10000); eStalkerSoundBackup if (object().memory().visual().visible_now(object().memory().enemy().selected()) && object().agent_manager().member().group_behaviour()) object().sound().play (eStalkerSoundBackup,0,0,6000,4000); } eStalkerSoundDetour и eStalkerSoundNeedBackup if (object().agent_manager().member().cover_detouring() && fire_make_sense()) { // object().sound().play (eStalkerSoundDetour,3000,3000,10000,10000); object().sound().play (eStalkerSoundNeedBackup,3000,3000,10000,10000); fire (); } if (object().memory().enemy().selected()->human_being() && object().agent_manager().member().group_behaviour()) // object().sound().play (eStalkerSoundNeedBackup); object().sound().play (eStalkerSoundDetour); //#endif } eStalkerSoundInjuringByFriend if (entity_alive && !wounded()) { if (is_relation_enemy(entity_alive)) sound().play (eStalkerSoundInjuring); // else // sound().play (eStalkerSoundInjuringByFriend); } eStalkerSoundPanicHuman и eStalkerSoundPanicMonster void CStalkerActionCombatBase::play_panic_sound (u32 max_start_time, u32 min_start_time, u32 max_stop_time, u32 min_stop_time, u32 id) { object().sound().play ( object().memory().enemy().selected()->human_being() ? eStalkerSoundPanicHuman : eStalkerSoundPanicMonster, max_start_time, min_start_time, max_stop_time, min_stop_time, id ); } eStalkerSoundTolls if (agent_manager().member().group_behaviour()) sound().play (StalkerSpace::eStalkerSoundTolls); reaction.clear (); } eStalkerSoundGrenadeAlarm if (is_relation_enemy(initiator)) sound().play (StalkerSpace::eStalkerSoundGrenadeAlarm); eStalkerSoundFriendlyGrenadeAlarm if (missile->Position().distance_to(Position()) < FRIENDLY_GRENADE_ALARM_DIST) sound().play (StalkerSpace::eStalkerSoundFriendlyGrenadeAlarm); } eStalkerSoundRunningInDanger и eStalkerSoundWalkingInDanger if ( (eBodyStateStand == movement().body_state()) && (eMovementTypeRun == movement().movement_type()) ) { sound().play (eStalkerSoundRunningInDanger); } else { // sound().play (eStalkerSoundWalkingInDanger); } eStalkerSoundKillWounded void CStalkerActionPrepareWounded::initialize () { inherited::initialize (); object().movement().set_desired_direction (0); object().movement().set_path_type (MovementManager::ePathTypeLevelPath); object().movement().set_detail_path_type (DetailPathManager::eDetailPathTypeSmooth); object().movement().set_mental_state (eMentalStateDanger); object().movement().set_body_state (eBodyStateStand); object().movement().set_movement_type (eMovementTypeStand); object().sound().play (eStalkerSoundKillWounded); object().CObjectHandler::set_goal (eObjectActionAimReady1,weapon_to_kill(&object()),MIN_QUEUE,MAX_QUEUE,MIN_INTERVAL,MAX_INTERVAL); } eStalkerSoundEnemyCriticallyWounded if (!can_cry_enemy_is_wounded()) return; sound().play (eStalkerSoundEnemyCriticallyWounded); } eStalkerSoundEnemyKilledOrWounded void CAI_Stalker::on_enemy_wounded_or_killed (const CAI_Stalker *wounded_or_killed) { if (!can_cry_enemy_is_wounded()) return; sound().play (eStalkerSoundEnemyKilledOrWounded); } eStalkerSoundAttackNoAllies и eStalkerSoundAttackAlliesSingleEnemy и eStalkerSoundAttackAlliesSeveralEnemies void CStalkerActionCombatBase::play_attack_sound (u32 max_start_time, u32 min_start_time, u32 max_stop_time, u32 min_stop_time, u32 id) { if (!object().memory().enemy().selected()->human_being()) return; if (!object().agent_manager().member().can_cry_noninfo_phrase()) return; u32 sound_type = eStalkerSoundAttackNoAllies; #ifdef DEBUG if (object().agent_manager().member().combat_members().empty()) Msg ( "! I am in combat, but there is no combat members at all (including me), npc[%s],team[%d],squad[%d],group[%d]", *object().cName(), object().g_Team(), object().g_Squad(), object().g_Group() ); #endif // DEBUG if (object().agent_manager().member().combat_members().size() > 1) { if (object().agent_manager().enemy().enemies().size() > 1) sound_type = eStalkerSoundAttackAlliesSeveralEnemies; else sound_type = eStalkerSoundAttackAlliesSingleEnemy; } else sound_type = eStalkerSoundAttackNoAllies; object().sound().play ( sound_type, max_start_time, min_start_time, max_stop_time, min_stop_time, id ); } eStalkerSoundSearch1NoAllies и eStalkerSoundSearch1WithAllies void CStalkerActionCombatBase::play_start_search_sound (u32 max_start_time, u32 min_start_time, u32 max_stop_time, u32 min_stop_time, u32 id) { if (!object().agent_manager().member().can_cry_noninfo_phrase()) return; #ifdef DEBUG if (object().agent_manager().member().combat_members().empty()) Msg ("! I am in combat, but there is no combat members at all (including me), npc[%s],team[%d],squad[%d],group[%d]", *object().cName(), object().g_Team(), object().g_Squad(), object().g_Group() ); #endif // DEBUG bool search_with_allies = object().agent_manager().member().combat_members().size() > 1; object().sound().play ( search_with_allies ? eStalkerSoundSearch1WithAllies : eStalkerSoundSearch1NoAllies, max_start_time, min_start_time, max_stop_time, min_stop_time, id ); } eStalkerSoundThrowGrenade void CStalkerCombatActionThrowGrenade::initialize () { inherited::initialize (); object().movement().set_mental_state (eMentalStateDanger); const CInventoryItem *grenade = object().inventory().ItemFromSlot(GRENADE_SLOT); VERIFY (grenade); m_grenade_id = grenade->object().ID(); object().movement().set_movement_type (eMovementTypeStand); object().movement().set_body_state (eBodyStateStand); object().sound().play (eStalkerSoundThrowGrenade); m_storage->set_property (eWorldPropertyStartedToThrowGrenade, true); } eStalkerSoundWounded if (agent_manager().member().group_behaviour()) { if (!reaction.m_member->g_Alive()) sound().play ( StalkerSpace::eStalkerSoundTolls, 3000, 2000 ); eStalkerSoundEnemyLostNoAllies и eStalkerSoundEnemyLostWithAllies void CStalkerActionCombatBase::play_enemy_lost_sound (u32 max_start_time, u32 min_start_time, u32 max_stop_time, u32 min_stop_time, u32 id) { if (!object().agent_manager().member().can_cry_noninfo_phrase()) return; #ifdef DEBUG if (object().agent_manager().member().combat_members().empty()) Msg ("! I am in combat, but there is no combat members at all (including me), npc[%s],team[%d],squad[%d],group[%d]", *object().cName(), object().g_Team(), object().g_Squad(), object().g_Group() ); #endif // DEBUG bool search_with_allies = object().agent_manager().member().combat_members().size() > 1; object().sound().play ( search_with_allies ? eStalkerSoundEnemyLostWithAllies : eStalkerSoundEnemyLostNoAllies, max_start_time, min_start_time, max_stop_time, min_stop_time, id ); } Не нашел вообще: sound_attack sound_search Изменено 18 Сентября 2017 пользователем aka_sektor 1 Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB Ссылка на комментарий
aka_sektor 1 476 Опубликовано 19 Сентября 2017 Поделиться Опубликовано 19 Сентября 2017 (изменено) sound_death и sound_anomaly_death - тут в общем-то понятно, что звук воспроизводится при смерти NPC. Вопрос ток в том, как он понимает, что умер в аномалии. Думаю оператор "else", зависит от "(who)". Скрытый текст notify_on_wounded_or_killed (who); sound_hit - тут говорится, если жив и ранен. Или "wounded" следует понимать как получил ранение? (второй код не ясен) Судя по звуку, именно так. sound_humming - тут чет про смарт-террейн, и то что объект привязан. В скобках некие цифры, наверное задержка. Во втором коде, если что-то выполнено, и опять же привязан. Судя по звуку, эт бездействие. Что вроде как сходится, сидит у костра говорит, сразу после боя, точнее после фразы "ну что передохнём маленько..." начинает стоять рассказывать "про сапоги хреновые". sound_alarm - вроде разобрали уже, эт когда обнаружил врага. sound_backup - тут что-то похожее на предыдущий. Тоже, если видит врага, поведение в группе. Судя по звукам, там говорится "На получи! или Ты труп мужик!" Даже не знаю, как-то непонятно что тут служит условием. Видимо тоже обнаружение врага, но без проверки человек ли это. Видать и на монстров чтобы кричали. Что странно, учитывая фразу про мужика... хотя... вроде наблюдал такое, когда на монстра так кричали. sound_detour - если враг человек, поведение в группе. Судя по звуку, "просит прикрыть", а также как у предыдущего, кричит "На получи!" или Ты труп мужик!". sound_need_backup - если cover_detouring и fire_make_sense. Типа если "можно обойти" и "стрельба имеет смысл". Судя по звуку, кричит "Рви! Я его прижал!". sound_friendly_fire - это похоже то же что и sound_hit, но закомментировано. Плюс проверка (условие) какое-то насчет отношения (наверное типа друг/враг). sound_panic_human и sound_panic_monster - тут не очень понятно. Похоже они оба завязаны на боёвку, с тем условием что если враг человек. По звукам, то что говорит NPC убегая от врага NPC или монстра. Уже не знаю, делает ли игра разницу, кто враг. Думается что нет... sound_tolls - тут просто, поведение в группе. А по звуку, говорит "Тут нашего убили". Эт явно не случайно. Но условий для этого чет не вижу в коде. Хотя... тут наверное следует смотреть полный код: Скрытый текст void CAI_Stalker::react_on_member_death () { CMemberOrder::CMemberDeathReaction &reaction = agent_manager().member().member(this).member_death_reaction(); if (!reaction.m_processing) return; if (Device.dwTimeGlobal < reaction.m_time + TOLLS_INTERVAL) return; if (agent_manager().member().group_behaviour()) sound().play (StalkerSpace::eStalkerSoundTolls); reaction.clear (); } Реакция на смерть союзника. Ток не пойму, как NPC это определяет? По коду? Или сам видел как убили? Или нашёл тело? Здесь некий интервал, задержка времени видимо. Думаю, тут по коду, данные из боя приходят, через некоторое время NPC воспроизводит звук.sound_grenade_alarm - тоже непонятное, просто: если отношение враг. Также надо полный код: Скрытый текст void CAI_Stalker::react_on_grenades () { CMemberOrder::CGrenadeReaction &reaction = agent_manager().member().member(this).grenade_reaction(); if (!reaction.m_processing) return; if (Device.dwTimeGlobal < reaction.m_time + GRENADE_INTERVAL) return; // u32 interval = AFTER_GRENADE_DESTROYED_INTERVAL; const CMissile *missile = smart_cast<const CMissile*>(reaction.m_grenade); // if (missile && (missile->destroy_time() > Device.dwTimeGlobal)) // interval = missile->destroy_time() - Device.dwTimeGlobal + AFTER_GRENADE_DESTROYED_INTERVAL; // m_object->agent_manager().add_danger_location(reaction.m_game_object->Position(),Device.dwTimeGlobal,interval,GRENADE_RADIUS); if (missile && agent_manager().member().group_behaviour()) { // Msg ("%6d : Stalker %s : grenade reaction",Device.dwTimeGlobal,*m_object->cName()); CEntityAlive *initiator = smart_cast<CEntityAlive*>(Level().Objects.net_Find(reaction.m_grenade->CurrentParentID())); if (is_relation_enemy(initiator)) sound().play (StalkerSpace::eStalkerSoundGrenadeAlarm); else if (missile->Position().distance_to(Position()) < FRIENDLY_GRENADE_ALARM_DIST) sound().play (StalkerSpace::eStalkerSoundFriendlyGrenadeAlarm); } reaction.clear (); } Реакция на гранату, missile (ракета? снаряд? Наверное имеется ввиду полет гранаты), поведение в группе. Судя по звуку, сообщает NPC, что рядом с ним граната упала. sound_friendly_grenade_alarm - а тут как у предыдущего, с поправкой на дистанцию. Видимо, NPC бросил гранату, слишком близко к союзникам. P.S. Не помню таких фраз в игре. Может очень редки.sound_running_in_danger и sound_walking_in_danger - тут что-то про тип передвижения, если стоит на месте или бежит. Второй, который walking, закомментирован. Как-то непонятно, надо снова полный код: Скрытый текст void CAI_Stalker::UpdateCL() { START_PROFILE("stalker") START_PROFILE("stalker/client_update") VERIFY2 (PPhysicsShell()||getEnabled(), *cName()); if (g_Alive()) { if (g_mt_config.test(mtObjectHandler) && CObjectHandler::planner().initialized()) { fastdelegate::FastDelegate0<> f = fastdelegate::FastDelegate0<>(this,&CAI_Stalker::update_object_handler); #ifdef DEBUG xr_vector<fastdelegate::FastDelegate0<> >::const_iterator I; I = std::find(Device.seqParallel.begin(),Device.seqParallel.end(),f); VERIFY (I == Device.seqParallel.end()); #endif Device.seqParallel.push_back (fastdelegate::FastDelegate0<>(this,&CAI_Stalker::update_object_handler)); } else { START_PROFILE("stalker/client_update/object_handler") update_object_handler (); STOP_PROFILE } if ( (movement().speed(character_physics_support()->movement()) > EPS_L) && (eMovementTypeStand != movement().movement_type()) && (eMentalStateDanger == movement().mental_state()) ) { if ( (eBodyStateStand == movement().body_state()) && (eMovementTypeRun == movement().movement_type()) ) { sound().play (eStalkerSoundRunningInDanger); } else { // sound().play (eStalkerSoundWalkingInDanger); } } } Тут ещё говорится про eMentalStateDanger. Мол в состоянии опасности. Судя по звуку, эт сильная отдышка. Наверное и правда, когда NPC на сильном шухере, носится туда сюда. [sound_kill_wounded - тут с условиями не очень понятно. Судя по звуку, NPC говорит его, перед тем, как добить раненного. sound_enemy_critically_wounded - если враг мог получить ранение. Судя по звуку, NPC кричит что попал во врага. sound_enemy_killed_or_wounded - похоже тоже, что и предыдущий, только с поправкой на то, что добил. И звук сходится. sound_attack_no_allies - если враг человек, если может говорить, ну и вторая часть, что-то про кол-во участников боя. По звуку, кричит "Получи гад!" или "От меня не уйдешь!" sound_attack_allies_single_enemy - код соответствует второй части предыдущего. По звуку, кричит "Размолотим!" или "Мочи его!" или снова "Получи гад!". sound_attack_allies_several_enemies - код аналогично предыдущему, с той разницей, что звук "Мочи его!" заменен на "Мочи всех!". sound_search1_no_allies - если может говорить, что-то про кол-во участников боя. По звуку, как у sound_attack_no_allies, "От меня не уйдешь!". sound_search1_with_allies - как и предыдущий, но звуки уже другие: "Вылезай, не прячься..." , "Куда ж он спрятался, а?". ЧН и ЗП параметр:sound_throw_grenade - что-то про состояние опасности, слот инвентаря, и состояние eWorldPropertyStartedToThrowGrenade. Очевидно, что воспроизводит звук NPC, когда готовится кинуть гранату. Звук подтверждает: "Получи гранату!" ЗП параметры:sound_wounded - поведение в бою, реакция на союзника если выжил. По звуку, "Нашего зацепило!". sound_enemy_lost_no_allies - по коду, это копия sound_search1_no_allies . Звук не указан. sound_enemy_lost_with_allies - по коду, это копия sound_search1_with_allies. Звук один из тех же двух, т.е.: "Куда ж он спрятался, а?". Изменено 19 Сентября 2017 пользователем aka_sektor Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB Ссылка на комментарий
Shkiper2012 35 Опубликовано 4 Октября 2017 Поделиться Опубликовано 4 Октября 2017 Приветствую. Собираю исходники ТЧ 1.0007rc1 от xp-dev (ревизии 188 и 201). Всё собирается и запускается. Но, есть небольшая проблема: в игре при окончании разговора с НПС (кликаю в диалоге "До свидания.") - вылет. Вылетает только(!) с тем НПС, которые в конце диалога что-нибудь выдают актору. С другими всё в порядке. Например, в начале игры: Сидор - выдает нож в начале игры; Волк - выдает пистолет, патроны, аптечку; Шустрый - выдает флэшку для Сидора. Каждый диалог заканчивается таким вылетом:(лог разбил на две части, для удобства восприятия текста) Скрытый текст [10/03/17 21:09:05] * Detected CPU: GenuineIntel Intel(R) Celeron(R) CPU 925 @ 2.30GHz, F6/M23/S10 [10/03/17 21:09:05] * CPU Features: RDTSC, MMX, SSE, SSE2, SSE3 [10/03/17 21:09:05] [10/03/17 21:09:05] Initializing File System... [10/03/17 21:09:05] !WARNING: CLocatorAPI::check_for_file not found file fsgame.ltx in files list (size = 26) [10/03/17 21:09:05] !WARNING: CLocatorAPI::check_for_file not found file d:\games\s.t.a.l.k.e.r\bin\fsgame.ltx in files list (size = 26) [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.db0 [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.db1 [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.db2 [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.db3 [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.db4 [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.db5 [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.db6 [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.db7 [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.db8 [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.db9 [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.dba [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.dbb [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.dbc [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\gamedata.dbd [10/03/17 21:09:05] using fs-ltx fsgame.ltx [10/03/17 21:09:05] --found external arch mp_military_2.xdb0 [10/03/17 21:09:05] CLocatorAPI::ProcessArchive, path = d:\games\s.t.a.l.k.e.r\mods\mp_military_2.xdb0 [10/03/17 21:09:05] FS: 28833 files cached, 4271Kb memory used. [10/03/17 21:09:05] Init FileSystem 2.171648 sec [03.10.17 21:09:05.223] 'xrCore' build 6815, Oct 3 2017 [03.10.17 21:09:05.223] [03.10.17 21:09:05.738] Initializing Engine... [03.10.17 21:09:05.738] Loading config for renderer [03.10.17 21:09:05.738] Executing config-script "user.ltx"... [03.10.17 21:09:05.769] [d:\games\s.t.a.l.k.e.r\stalker-shoc\user.ltx] successfully loaded. [03.10.17 21:09:05.769] Starting INPUT device... [03.10.17 21:09:06.081] Loading DLL: xrRender_R1.dll [03.10.17 21:09:06.581] Loading DLL: xrGame.dll [03.10.17 21:09:06.986] * [win32]: free[2012212 K], reserved[18520 K], committed[66356 K] [03.10.17 21:09:06.986] * [ D3D ]: textures[0 K] [03.10.17 21:09:06.986] * [x-ray]: crt heap[5991 K], process heap[647 K], game lua[0 K], engine lua[0 K], render[0 K] [03.10.17 21:09:06.986] * [x-ray]: economy: strings[1032 K], smem[0 K] [03.10.17 21:09:07.017] Executing config-script "d:\games\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx"... [03.10.17 21:09:07.080] cant convert dik_name for dik[144], prop=[ [03.10.17 21:09:07.111] [d:\games\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx] successfully loaded. [03.10.17 21:09:07.111] Executing config-script "user.ltx"... [03.10.17 21:09:07.127] Executing config-script "d:\games\s.t.a.l.k.e.r\gamedata\config\rspec_minimum.ltx"... [03.10.17 21:09:07.142] Unknown command: r__dtex_range [03.10.17 21:09:07.142] Unknown command: r__ssa_glod_end [03.10.17 21:09:07.142] Unknown command: r__ssa_glod_start [03.10.17 21:09:07.142] Unknown command: rs_detail [03.10.17 21:09:07.142] Unknown command: rs_skeleton_update [03.10.17 21:09:07.142] Unknown command: vid_bpp [03.10.17 21:09:07.142] [d:\games\s.t.a.l.k.e.r\gamedata\config\rspec_minimum.ltx] successfully loaded. [03.10.17 21:09:07.142] Executing config-script "d:\games\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx"... [03.10.17 21:09:07.142] [d:\games\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx] successfully loaded. [03.10.17 21:09:07.173] [d:\games\s.t.a.l.k.e.r\stalker-shoc\user.ltx] successfully loaded. [03.10.17 21:09:07.236] SOUND: OpenAL: enumerate devices... [03.10.17 21:09:07.236] SOUND: OpenAL: EnumerationExtension Present [03.10.17 21:09:07.345] devices Generic Hardware [03.10.17 21:09:07.361] SOUND: OpenAL: system default SndDevice name is Generic Hardware [03.10.17 21:09:07.361] SOUND: OpenAL: default SndDevice name set to Generic Software [03.10.17 21:09:07.860] SOUND: OpenAL: All available devices: [03.10.17 21:09:07.860] 1. Generic Software, Spec Version 1.1 (default) [03.10.17 21:09:07.860] 2. Generic Software, Spec Version 1.1 (default) [03.10.17 21:09:07.860] SOUND: OpenAL: SelectBestDevice is Generic Software 1.1 [03.10.17 21:09:07.910] SOUND: OpenAL: Required device: Generic Software. Created device: Generic Software. [03.10.17 21:09:07.910] * sound: EAX 2.0 extension: absent [03.10.17 21:09:07.910] * sound: EAX 2.0 deferred: absent [03.10.17 21:09:07.938] * sound : cache: 49155 kb, 5707 lines, 8820 bpl [03.10.17 21:09:07.942] Starting RENDER device... [03.10.17 21:09:08.248] * GPU [vendor:8086]-[device:2A42]: Mobile Intel(R) 4 Series Express Chipset Family [03.10.17 21:09:08.248] * GPU driver: 8.15.10.2869 [03.10.17 21:09:11.867] * CREATE: DeviceREF: 1 [03.10.17 21:09:11.867] * Vertex Processor: PURE HARDWARE [03.10.17 21:09:11.947] * Texture memory: 817 M [03.10.17 21:09:11.947] * DDI-level: 9.0 [03.10.17 21:09:13.137] * GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30) [03.10.17 21:09:13.152] * GPU vertex cache: recognized, 32 [03.10.17 21:09:13.243] * DVB created: 4096K [03.10.17 21:09:13.243] * DIB created: 512K [03.10.17 21:09:15.618] count of .thm files=4 [03.10.17 21:09:15.835] load time=826 ms [03.10.17 21:09:15.882] * distortion: used, dev(30),need(14) [03.10.17 21:09:15.882] * SSample: 1280x768 [03.10.17 21:09:16.569] * SSample: enabled [03.10.17 21:09:16.916] Script debugger succesfully restarted. [03.10.17 21:09:17.448] Starting engine... [03.10.17 21:09:19.629] Loading DLL: xrGameSpy.dll [03.10.17 21:09:26.248] * DVB created: 4096K [03.10.17 21:09:26.248] * DIB created: 512K [03.10.17 21:09:26.248] * SSample: 1280x768 [03.10.17 21:09:26.260] * SSample: enabled [03.10.17 21:09:26.260] * GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30) [03.10.17 21:09:26.260] * GPU vertex cache: recognized, 32 [03.10.17 21:09:26.260] *** RESET [119 ms] [03.10.17 21:09:26.305] "d:\games\s.t.a.l.k.e.r\bin\xr_3da.exe" -nointro [03.10.17 21:09:26.307] * phase time: 0 ms [03.10.17 21:09:26.309] * phase cmem: 84278 K [03.10.17 21:09:26.309] Кэширование объектов... [03.10.17 21:09:26.359] Loading objects... [03.10.17 21:09:26.359] Loading models... [03.10.17 21:09:43.513] * [prefetch] time: 17146 ms [03.10.17 21:09:43.513] * [prefetch] memory: 82621Kb [03.10.17 21:09:43.636] * phase time: 17328 ms [03.10.17 21:09:43.645] * phase cmem: 163007 K [03.10.17 21:09:43.645] Сервер: Старт... [03.10.17 21:09:43.996] * phase time: 359 ms [03.10.17 21:09:44.005] * phase cmem: 158431 K [03.10.17 21:09:44.005] Сервер: Загрузка симуляции жизни... [03.10.17 21:09:44.052] * phase time: 56 ms [03.10.17 21:09:44.062] * phase cmem: 158431 K [03.10.17 21:09:44.062] Загрузка игры "day_01_time_07_00_l01_escape.sav"... [03.10.17 21:09:44.109] SE_DBG: CALifeSimulatorBase 'alife' ->m_objects = 0x0C79A680 [03.10.17 21:09:44.155] * Loading spawn registry... [03.10.17 21:09:45.616] * 8641 spawn points are successfully loaded [03.10.17 21:09:45.616] * Loading objects... [03.10.17 21:09:46.260] * 17209 objects are successfully loaded [03.10.17 21:09:48.588] * Game day_01_time_07_00_l01_escape is successfully loaded from file 'd:\games\s.t.a.l.k.e.r\stalker-shoc\savedgames\day_01_time_07_00_l01_escape.sav' (4.583s) [03.10.17 21:09:48.588] * phase time: 4536 ms [03.10.17 21:09:48.599] * phase cmem: 190379 K [03.10.17 21:09:48.599] Сервер: Соединяемся... [03.10.17 21:09:48.629] MaxPlayers = 32 [03.10.17 21:09:48.700] * phase time: 111 ms [03.10.17 21:09:48.715] * phase cmem: 190411 K [03.10.17 21:09:48.715] Клиент: Соединение с localhost... [03.10.17 21:09:48.716] Player not found. New player created. [03.10.17 21:09:48.746] * client : connection accepted - <> [03.10.17 21:09:48.770] * phase time: 70 ms [03.10.17 21:09:48.780] * phase cmem: 190459 K [03.10.17 21:09:48.780] Открытие потока... [03.10.17 21:09:48.823] * phase time: 53 ms [03.10.17 21:09:48.833] * phase cmem: 190459 K [03.10.17 21:09:48.833] Загрузка формы объектов... [03.10.17 21:09:54.522] * phase time: 5699 ms [03.10.17 21:09:54.535] * phase cmem: 263128 K [03.10.17 21:09:54.535] Загрузка шейдеров... [03.10.17 21:09:56.749] * phase time: 2226 ms [03.10.17 21:09:56.759] * phase cmem: 264610 K [03.10.17 21:09:56.759] Загрузка геометрии... [03.10.17 21:09:56.992] * [Loading VB] 65532 verts, 2047 Kb [03.10.17 21:10:00.203] * [Loading VB] 65525 verts, 2047 Kb [03.10.17 21:10:00.237] * [Loading VB] 65535 verts, 2047 Kb [03.10.17 21:10:00.272] * [Loading VB] 65466 verts, 2045 Kb ... Скрытый текст ... [03.10.17 21:10:01.592] * [Loading IB] 1048575 indices, 2047 Kb [03.10.17 21:10:01.632] * [Loading IB] 228285 indices, 445 Kb [03.10.17 21:10:01.694] * phase time: 4944 ms [03.10.17 21:10:01.704] * phase cmem: 264965 K [03.10.17 21:10:01.704] Загрузка базы пространств... [03.10.17 21:10:05.610] * phase time: 3916 ms [03.10.17 21:10:05.621] * phase cmem: 269003 K [03.10.17 21:10:05.621] Загрузка детальных объектов... [03.10.17 21:10:05.756] * [DETAILS] VertexConsts(256), Batch(61) [03.10.17 21:10:05.757] * [DETAILS] 40687 v(20), 26352 p [03.10.17 21:10:05.757] * [DETAILS] Batch(61), VB(794K), IB(154K) [03.10.17 21:10:05.760] * phase time: 150 ms [03.10.17 21:10:05.771] * phase cmem: 269062 K [03.10.17 21:10:05.771] Загрузка секторов и порталов... [03.10.17 21:10:05.826] * Loading HOM: d:\games\s.t.a.l.k.e.r\gamedata\levels\l01_escape\level.hom [03.10.17 21:10:05.865] * phase time: 104 ms [03.10.17 21:10:05.875] * phase cmem: 269203 K [03.10.17 21:10:05.875] Загрузка ИИ объектов... [03.10.17 21:10:06.094] - Loading music tracks from 'l01_escape_musics'... [03.10.17 21:10:06.211] * phase time: 346 ms [03.10.17 21:10:06.222] * phase cmem: 269258 K [03.10.17 21:10:06.222] Клиент: Создание... [03.10.17 21:10:06.373] - Game configuring : Started [03.10.17 21:10:06.419] - Game configuring : Finished [03.10.17 21:10:07.305] * phase time: 1094 ms [03.10.17 21:10:07.318] * phase cmem: 284949 K [03.10.17 21:10:07.318] Загрузка текстур... [03.10.17 21:10:13.352] * t-report - base: 864, 47944 K [03.10.17 21:10:13.352] * t-report - lmap: 10, 10241 K [03.10.17 21:10:13.352] ***FATAL***: Too many lmap-textures (limit: 8 textures or 32M). [03.10.17 21:10:13.381] Reduce pixel density (worse) or use more vertex lighting (better). [03.10.17 21:10:13.382] * phase time: 6076 ms [03.10.17 21:10:13.394] * phase cmem: 284950 K [03.10.17 21:10:13.394] Клиент: Синхронизация... [03.10.17 21:10:13.459] * phase time: 76 ms [03.10.17 21:10:13.471] * phase cmem: 284950 K [03.10.17 21:10:13.536] * [win32]: free[1362276 K], reserved[58760 K], committed[676052 K] [03.10.17 21:10:13.536] * [ D3D ]: textures[58185 K] [03.10.17 21:10:13.536] * [x-ray]: crt heap[284950 K], process heap[6470 K], game lua[22400 K], engine lua[168 K], render[0 K] [03.10.17 21:10:13.536] * [x-ray]: economy: strings[3729 K], smem[28221 K] [03.10.17 21:10:13.814] * phase time: 432 ms [03.10.17 21:10:13.825] * phase cmem: 284973 K [03.10.17 21:10:13.826] st_actor_netspawn... [03.10.17 21:10:14.076] * phase time: 231 ms [03.10.17 21:10:14.088] * phase cmem: 285019 K [03.10.17 21:10:14.151] * [win32]: free[1361380 K], reserved[58688 K], committed[677020 K] [03.10.17 21:10:14.151] * [ D3D ]: textures[58191 K] [03.10.17 21:10:14.151] * [x-ray]: crt heap[285019 K], process heap[6470 K], game lua[23294 K], engine lua[168 K], render[0 K] [03.10.17 21:10:14.151] * [x-ray]: economy: strings[3818 K], smem[28221 K] [03.10.17 21:10:30.069] * MEMORY USAGE: 303628 K [03.10.17 21:11:06.961] *** break by StackWalk *** [03.10.17 21:11:06.961] DEBUG CONTEXT DUMP: [03.10.17 21:11:06.961] [21:10:50.766]. $#CONTEXT: cl remove [641][28064790] esc_zone_witches_galantine_0006, from v = 0C9D7B24, v.size = 335 [03.10.17 21:11:06.961] [21:10:48.614]. $#CONTEXT: cl remove [155][1AFED0F8] vodka0155, from v = 0C9D7B34, v.size = 637 [03.10.17 21:11:06.961] [21:10:44.626]. $#CONTEXT: cl remove [635][280631A0] esc_zone_witches_galantine_0000, from v = 0C9D7B24, v.size = 335 [03.10.17 21:11:06.961] [21:10:42.260]. $#CONTEXT: cl remove [850][24C0B510] esc_trup_bratka, from v = 0C9D7B24, v.size = 336 [03.10.17 21:11:06.961] [21:10:38.184]. $#CONTEXT: cl remove [850][24C0B510] esc_trup_bratka, from v = 0C9D7B34, v.size = 636 [03.10.17 21:11:06.961] [21:10:33.465]. $#CONTEXT: cl remove [472][17B56910] wpn_ak74u0472, from v = 0C9D7B34, v.size = 637 [03.10.17 21:11:06.961] [21:10:33.465]. $#CONTEXT: cl remove [472][17B56910] wpn_ak74u0472, from v = 0C9D7B24, v.size = 335 [03.10.17 21:11:06.961] [21:10:33.414]. $#CONTEXT: cl remove [497][17B582A0] wpn_ak74u0497, from v = 0C9D7B34, v.size = 637 [03.10.17 21:11:06.961] [21:10:33.414]. $#CONTEXT: cl remove [497][17B582A0] wpn_ak74u0497, from v = 0C9D7B24, v.size = 335 [03.10.17 21:11:06.961] [21:10:33.259]. $#CONTEXT: cl remove [639][28064040] esc_zone_witches_galantine_0004, from v = 0C9D7B24, v.size = 336 [03.10.17 21:11:06.961] [21:10:33.044]. $#CONTEXT: cl remove [429][17B53E60] wpn_ak74u0429, from v = 0C9D7B34, v.size = 636 [03.10.17 21:11:06.961] [21:10:33.044]. $#CONTEXT: cl remove [429][17B53E60] wpn_ak74u0429, from v = 0C9D7B24, v.size = 336 [03.10.17 21:11:06.961] [21:10:32.741]. $#CONTEXT: cl remove [480][17B57190] wpn_ak74u0480, from v = 0C9D7B34, v.size = 636 [03.10.17 21:11:06.961] [21:10:32.741]. $#CONTEXT: cl remove [480][17B57190] wpn_ak74u0480, from v = 0C9D7B24, v.size = 336 [03.10.17 21:11:06.961] [21:10:32.389]. $#CONTEXT: cl remove [439][17B546F0] wpn_ak74u0439, from v = 0C9D7B34, v.size = 636 [03.10.17 21:11:06.961] Unhandled exception stack trace: [03.10.17 21:11:06.961] [03.10.17 21:11:06.998] 001B:522A3260 (0x0018C300 0x2896B6BC 0x2896B748 0x0018C328) xrGame.dll, CVertex<CPhrase *,shared_str,CGraphAbstract<CPhrase *,float,shared_str> >::add_edge, x:\trunk\xray\xr_3da\xrgame\graph_vertex_inline.h, 68 [03.10.17 21:11:06.998] 001B:522A302A (0x280A5C60 0x0018C300 0x24E2AF90 0x52D6A1E0) xrGame.dll, CGraphAbstract<CPhrase *,float,shared_str>::add_edge(), x:\trunk\xray\xr_3da\xrgame\graph_abstract_inline.h, 59 [03.10.17 21:11:06.998] 001B:524C6B9B (0x24E2AF90 0x00000000 0x2896B740 0x0018C318) xrGame.dll, CPhraseDialog::AddPhrase(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.cpp, 271 [03.10.17 21:11:06.998] 001B:522A39FA (0x03BF23D0 0x03D72B18 0x00D183F0 0xFFFFD8F0) xrGame.dll, CPhraseDialog::AddPhrase_script(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.h, 132 [03.10.17 21:11:06.998] 001B:522A4075 (0x522A3980 0x00000000 0x6E192A4D 0x0A905100) xrGame.dll, luabind::detail::returns<CPhrase *>::call<CPhraseDialog,CPhraseDialog,luabind::detail::null_type,char const *,char const *,char const *,int>(), x:\trunk\xray\luabind\luabind\detail\call.hpp, 161 [03.10.17 21:11:06.998] 001B:522A3EED (0x0A905100 0x04420018 0x0A901CC8 0x6E1D74DD) xrGame.dll, boost::detail::function::function_obj_invoker1<luabind::detail::mem_fn_callback<CPhrase * (__thiscall CPhraseDialog::*)(char const *,char const *,char const *,int),CPhraseDialog,luabind::detail::null_type>,int,lua_State *>::invoke(), x:\trunk\3rd party\boost\boost\function\function_template.hpp, 117 [03.10.17 21:11:06.998] 001B:6E192A4D (0x04420018 0x00000000 0x0E7DD8B0 0x04420018) luabind.dll, luabind::detail::overload_rep::call(), x:\trunk\xray\luabind\luabind\detail\overload_rep_impl.hpp, 35 [03.10.17 21:11:06.998] 001B:6E19A91F (0x04420018 0x0BC304F0 0xFFFFFFFF 0x04420018) luabind.dll, luabind::detail::class_rep::function_dispatcher(), x:\trunk\xray\luabind\src\class_rep.cpp, 694 [03.10.17 21:11:06.998] 001B:6E1C62D3 (0xFFFFFFFF 0x0E7DD850 0x04420018 0x00000070) lua5.1.dll, luaJIT_run(), x:\trunk\xray\luajit\src\ljit_core.c, 223 [03.10.17 21:11:06.998] 001B:6E1CFE29 (0x04420018 0x0E7DD7F0 0x00000000 0x04420018) lua5.1.dll, luaD_precall(), x:\trunk\xray\luajit\src\ldo.c, 282 [03.10.17 21:11:06.998] 001B:6E1D00A4 (0x04420018 0x0E7DD7F0 0x00000000 0x6E1CF8AA) lua5.1.dll, luaD_call(), x:\trunk\xray\luajit\src\ldo.c, 384 [03.10.17 21:11:06.998] 001B:6E1D7E55 (0x04420018 0x0018C598 0x04420018 0x00000001) lua5.1.dll, f_call(), x:\trunk\xray\luajit\src\lapi.c, 795 [03.10.17 21:11:06.998] 001B:6E1CF8AA (0x04420018 0x6E1D7E40 0x0018C598 0x00000000) lua5.1.dll, luaD_rawrunprotected(), x:\trunk\xray\luajit\src\ldo.c, 120 [03.10.17 21:11:06.998] 001B:6E1D0258 (0x6E1D7E40 0x0018C598 0x00000050 0x04420018) lua5.1.dll, luaD_pcall(), x:\trunk\xray\luajit\src\ldo.c, 465 [03.10.17 21:11:06.998] 001B:6E1D81D1 (0x04420018 0x00000001 0x00000000 0x00000000) lua5.1.dll, lua_pcall(), x:\trunk\xray\luajit\src\lapi.c, 816 [03.10.17 21:11:06.998] 001B:6E199736 (0x04420018 0x00000001 0x00000000 0x0AB8DB40) luabind.dll, luabind::detail::pcall(), x:\trunk\xray\luabind\src\pcall.cpp, 40 [03.10.17 21:11:06.998] 001B:522A2BF8 (0x14B11120 0x24E2AF90 0x0018C61C 0x52D5A3B0) xrGame.dll, luabind::detail::proxy_functor_void_caller<boost::tuples::tuple<CPhraseDialog * const *,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type> >::~proxy_functor_void_caller<boost::tuples::tuple<CPhraseDialog * const *,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type(), x:\trunk\xray\luabind\luabind\functor.hpp, 284 [03.10.17 21:11:06.998] 001B:524C7220 (0x00000000 0x524C6A58 0x0AB71FC0 0x24E2AF90) xrGame.dll, CPhraseDialog::load_shared(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.cpp, 223 [03.10.17 21:11:06.998] 001B:522A2B99 (0x0AB71FC0 0x24E2AF90 0x524C6335 0x0AB71FC0) xrGame.dll, CSharedClass<SPhraseDialogData,shared_str,0>::load_shared(), x:\trunk\xray\xr_3da\xrgame\shared_data.h, 101 [03.10.17 21:11:06.998] 001B:524C6A58 (0x0AB71FC0 0x00000002 0x24BDDC00 0x14B1111C) xrGame.dll, CPhraseDialog::Load(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.cpp, 185 [03.10.17 21:11:06.998] 001B:524C6335 (0x0AB71FC0 0x0C7BCE38 0x1B0DC4DC 0x0C4F6100) xrGame.dll, CPhraseDialogManager::AddAvailableDialog(), x:\trunk\xray\xr_3da\xrgame\phrasedialogmanager.cpp, 110 [03.10.17 21:11:06.998] 001B:524EEF47 (0x0C7BCE38 0x1B0DC4DC 0x24B85EA0 0x0018C6B4) xrGame.dll, CActor::UpdateAvailableDialogs(), x:\trunk\xray\xr_3da\xrgame\actor_communication.cpp, 195 [03.10.17 21:11:06.998] 001B:523D5B6D (0x280AA930 0x523E260F 0x00000006 0x01036400) xrGame.dll, CUITalkWnd::UpdateQuestions(), x:\trunk\xray\xr_3da\xrgame\ui\uitalkwnd.cpp, 130 [03.10.17 21:11:06.998] 001B:523D624F (0x00000006 0x01036400 0x00F70BDE 0x01036240) xrGame.dll, CUITalkWnd::Update(), x:\trunk\xray\xr_3da\xrgame\ui\uitalkwnd.cpp, 229 [03.10.17 21:11:06.998] 001B:523E260F (0x01036240 0x00FB303C 0x01036534 0x01036414) xrGame.dll, CDialogHolder::OnFrame(), x:\trunk\xray\xr_3da\xrgame\uidialogholder.cpp, 213 [03.10.17 21:11:06.998] 001B:00F70BDE (0x01036534 0x01036414 0x00000000 0x01036240) XR_3DA.exe, CRegistrator<pureRender>::Process(), x:\trunk\xray\xr_3da\pure.h, 77 [03.10.17 21:11:06.998] 001B:00FB303C (0x69402AD0 0x0018E804 0x0018C730 0x00000000) XR_3DA.exe, CRenderDevice::FrameMove(), x:\trunk\xray\xr_3da\device.cpp, 426 [03.10.17 21:11:06.998] 001B:00FB35C1 (0x01041048 0x0018E804 0x0018C748 0x00000000) XR_3DA.exe, CRenderDevice::Run(), x:\trunk\xray\xr_3da\device.cpp, 275 [03.10.17 21:11:06.998] 001B:00FDCDD9 (0x01041048 0x002124F0 0x00000000 0x00000000) XR_3DA.exe, Startup(), x:\trunk\xray\xr_3da\x_ray.cpp, 300 [03.10.17 21:11:06.998] 001B:00FDD5C4 (0x00F30000 0x00000000 0x002124F0 0x00000001) XR_3DA.exe, WinMain_impl(), x:\trunk\xray\xr_3da\x_ray.cpp, 745 [03.10.17 21:11:06.998] 001B:00FDD7A3 (0x00F30000 0x00000000 0x002124F0 0x00000001) XR_3DA.exe, WinMain(), x:\trunk\xray\xr_3da\x_ray.cpp, 805 [03.10.17 21:11:06.998] 001B:00F8BEF7 (0x7FFDB000 0x0018FB8C 0x770337EB 0x7FFDB000) XR_3DA.exe, __tmainCRTStartup(), f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c, 547 [03.10.17 21:11:06.998] 001B:7628ED6C (0x7FFDB000 0x7752B0AB 0x00000000 0x00000000) kernel32.dll, BaseThreadInitThunk() [03.10.17 21:11:06.999] 001B:770337EB (0x00F8C03A 0x7FFDB000 0x00000000 0x00000000) ntdll.dll, RtlInitializeExceptionChain() [03.10.17 21:11:06.999] 001B:770337BE (0x00F8C03A 0x7FFDB000 0x00000000 0x00000000) ntdll.dll, RtlInitializeExceptionChain() Что делал: Скрытый текст Отслеживал работу скриптов - ставил лог-сообщения. Скрипты отрабатываю нормально: выдают, определяют кто есть кто. С этим вроде все нормально. Хотя, до конца не уверен. Сравнивал файлы, которые указаны в логе (типа: ...\xrgame\graph_vertex_inline.h, 68 и т.д.) с другими исходниками (не от xp-dev) Изменений нет. Сам ничего не правил в этих файлах. Число в конце строки (например: 68) - это, наверное строка в файле (например: xrgame\graph_vertex_inline.h,) ??? Если так, то номер строки обычно ничего не проясняет (для меня) - он, обычно, указывает на пустую строку, либо на закрывающую фигурную скобку, либо на что-либо ещё мало информативное (для меня). Уже раз 8 пере-собирал исходники с нуля с разными дэфайнами из build_config_defines.h - результат тот же. Исходные данные: Win7 x86 Ultimate, VS2010_sp1, WinSDK_7.1, DX_SDK_Aug_2007, DX_SDK_June_2010 - инклуды и либы прописаны. Исходники: X-Ray 1.0007rc1 от репо XP-DEV (by alpet, KD) - собирал ревизии 188 и 201. Если нужно выложу логи сборки движка. Буду рад любой инфе по этой теме. У кого-либо было что-то подобное, если да, как "лечили эту болезнь"? И ещё вопрос: так как я сам не-программист, то очень интересует, как грамотно разбирать такие логи с адресами памяти, когда нет привычного сообщения в стиле "FATAL ERROR: bla_bla_bla"? Адаптация мода "AtmosFear" для мода "Боевая Подготовка" v.2.0.2. Адаптация мода "Магазинное питание" для мода "Боевая Подготовка" v.2.0.2. Ссылка на комментарий
abramcumner 1 152 Опубликовано 4 Октября 2017 Поделиться Опубликовано 4 Октября 2017 (изменено) 2 часа назад, Shkiper2012 сказал: xray\xr_3da\xrgame graph_vertex_inline.h, 68 Так что у тебя в этой строке? Цитата [03.10.17 21:11:06.998] 001B:522A3260 (0x0018C300 0x2896B6BC 0x2896B748 0x0018C328) xrGame.dll, CVertex<CPhrase *,shared_str,CGraphAbstract<CPhrase *,float,shared_str> >::add_edge, x:\trunk\xray\xr_3da\xrgame\graph_vertex_inline.h, 68 [03.10.17 21:11:06.998] 001B:522A302A (0x280A5C60 0x0018C300 0x24E2AF90 0x52D6A1E0) xrGame.dll, CGraphAbstract<CPhrase *,float,shared_str>::add_edge(), x:\trunk\xray\xr_3da\xrgame\graph_abstract_inline.h, 59 [03.10.17 21:11:06.998] 001B:524C6B9B (0x24E2AF90 0x00000000 0x2896B740 0x0018C318) xrGame.dll, CPhraseDialog::AddPhrase(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.cpp, 271 [03.10.17 21:11:06.998] 001B:522A39FA (0x03BF23D0 0x03D72B18 0x00D183F0 0xFFFFD8F0) xrGame.dll, CPhraseDialog::AddPhrase_script(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.h, 132 Здесь из скрипта вызвали функцию создания скриптового диалога, вернулись в движок. И что-то пошло не так. ... Здесь ушли в скрипты. В phrasedialog.cpp, 223 можно посмотреть какая скриптовая функция вызвалась. Дальше изучаешь скрипты. [03.10.17 21:11:06.998] 001B:524C7220 (0x00000000 0x524C6A58 0x0AB71FC0 0x24E2AF90) xrGame.dll, CPhraseDialog::load_shared(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.cpp, 223 [03.10.17 21:11:06.998] 001B:522A2B99 (0x0AB71FC0 0x24E2AF90 0x524C6335 0x0AB71FC0) xrGame.dll, CSharedClass<SPhraseDialogData,shared_str,0>::load_shared(), x:\trunk\xray\xr_3da\xrgame\shared_data.h, 101 [03.10.17 21:11:06.998] 001B:524C6A58 (0x0AB71FC0 0x00000002 0x24BDDC00 0x14B1111C) xrGame.dll, CPhraseDialog::Load(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.cpp, 185 [03.10.17 21:11:06.998] 001B:524C6335 (0x0AB71FC0 0x0C7BCE38 0x1B0DC4DC 0x0C4F6100) xrGame.dll, CPhraseDialogManager::AddAvailableDialog(), x:\trunk\xray\xr_3da\xrgame\phrasedialogmanager.cpp, 110 [03.10.17 21:11:06.998] 001B:524EEF47 (0x0C7BCE38 0x1B0DC4DC 0x24B85EA0 0x0018C6B4) xrGame.dll, CActor::UpdateAvailableDialogs(), x:\trunk\xray\xr_3da\xrgame\actor_communication.cpp, 195 [03.10.17 21:11:06.998] 001B:523D5B6D (0x280AA930 0x523E260F 0x00000006 0x01036400) xrGame.dll, CUITalkWnd::UpdateQuestions(), x:\trunk\xray\xr_3da\xrgame\ui\uitalkwnd.cpp, 130 [03.10.17 21:11:06.998] 001B:523D624F (0x00000006 0x01036400 0x00F70BDE 0x01036240) xrGame.dll, CUITalkWnd::Update(), x:\trunk\xray\xr_3da\xrgame\ui\uitalkwnd.cpp, 229 А геймдата у тебя кстати от шестого патча? Изменено 4 Октября 2017 пользователем abramcumner 1 Ссылка на комментарий
Shkiper2012 35 Опубликовано 4 Октября 2017 Поделиться Опубликовано 4 Октября 2017 @abramcumner 5 часов назад, abramcumner сказал: в этой строке? В этой строчке '{' Скрытый текст http:// 5 часов назад, abramcumner сказал: геймдата Да от 6-го, но добавлены файлы из папки 'resources' (те, что в репо xp-dev). Адаптация мода "AtmosFear" для мода "Боевая Подготовка" v.2.0.2. Адаптация мода "Магазинное питание" для мода "Боевая Подготовка" v.2.0.2. Ссылка на комментарий
abramcumner 1 152 Опубликовано 4 Октября 2017 Поделиться Опубликовано 4 Октября 2017 1 час назад, Shkiper2012 сказал: В этой строчке '{' Попробуй пересобрать xrGame. Ссылка на комментарий
Zagolski 74 Опубликовано 5 Октября 2017 Поделиться Опубликовано 5 Октября 2017 Shkiper2012 Попробуй удали у непися с которым разговариваешь скриптовые диалоги из его профиля (что-то вроде tm_job и тп) и еще раз проверь. Похоже, что спотыкается при инициализации скриптовых диалогов (а они как раз после основной фазы активируются), да и дело скорее всего в скриптах, а не движке (копай в dialogs.script или task_manager.script). 1 Ссылка на комментарий
Demosfen 142 Опубликовано 5 Октября 2017 Поделиться Опубликовано 5 Октября 2017 Начали биться сейвы с чем это может быть связанно? в логе ищут строки в виде Can't open section 'ZJRЄЄЄЄяя' и они постоянно меняются, можно ли как то вылечить это? Ссылка на комментарий
Marafon6540 757 Опубликовано 5 Октября 2017 Поделиться Опубликовано 5 Октября 2017 Скорее всего, на мой взгляд, вылет связан с моделями. Смотри у оружия - не менялся ли класс. Трилогия Апокалипсис. Упавшая звезда. Честь наемника. v. 1.2 УЗЧН v.1.3 + ОГСРх64 Последний сталкер v. 1.2 ПС v. 1.3 + ОГСРх64 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти