TimaS Опубликовано 3 апреля, 2020 Поделиться Опубликовано 3 апреля, 2020 (изменено) Игра выдаёт краш при убийстве турелей с аимом Что можно сделать? Спойлер void CreateHits() { core::initialize(); if (core::pGameFramework) { if (core::mActorSystem = core::pGameFramework->GetActorSystem()) { if (core::pGameFramework->GetClientActor(&core::mActor)) { if (core::pEntityIterator = core::gEnv->GetEntitySystem()->GetEntityIterator()) { for (; core::pEntity = core::pEntityIterator->EntityNext();) { if (core::pActor = core::pGameFramework->GetActorSystem()->GetActor(core::pEntity->GetEntityId())) { if (core::mActor != core::pActor) { if (elimination_team(core::mActor, core::pActor)) { AABB aabb; core::pEntity->GetWorldBounds(aabb); Vec3 vBone = aabb.GetCenter(); ICharacterInstance* pCharacter = core::pEntity->GetCharacter(0); ISkeletonPose* pSkeleton = pCharacter->GetSkeleton(); const char* cName = core::pEntity->GetName(); const char* cClassName = core::pEntity->GetEntityClass()->GetIClassName(); int boneId = GetBonePositionByName(core::pEntity, pSkeleton, cClassName, cName); if (KillingEntity(core::pEntity, vBone, boneId, cName, cClassName)) { int material = GetMaterialEnemy(core::pEntity, cName, cClassName); KillEnemy(core::mActor, core::pActor, vBone, 0, material); } } } } } } } } } } Изменено 3 апреля, 2020 пользователем TimaS Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 5 апреля, 2020 Поделиться Опубликовано 5 апреля, 2020 для начала, я бы избавился от этой кучи вложенностей для улучшения читаемости кода. Примерно так (правильность кода не гарантирую, он демонстриует только идею): Спойлер void CreateHits() { core::initialize(); if (!core::pGameFramework) return; if (!(core::mActorSystem = core::pGameFramework->GetActorSystem())) return; if (!core::pGameFramework->GetClientActor(&core::mActor)) return; if (!(core::pEntityIterator = core::gEnv->GetEntitySystem()->GetEntityIterator())) return; for (; core::pEntity = core::pEntityIterator->EntityNext();) { if (!(core::pActor = core::pGameFramework->GetActorSystem()->GetActor(core::pEntity->GetEntityId()))) continue; if (core::mActor == core::pActor) continue; if (!elimination_team(core::mActor, core::pActor)) continue; AABB aabb; core::pEntity->GetWorldBounds(aabb); Vec3 vBone = aabb.GetCenter(); ICharacterInstance* pCharacter = core::pEntity->GetCharacter(0); ISkeletonPose* pSkeleton = pCharacter->GetSkeleton(); const char* cName = core::pEntity->GetName(); const char* cClassName = core::pEntity->GetEntityClass()->GetIClassName(); int boneId = GetBonePositionByName(core::pEntity, pSkeleton, cClassName, cName); if (KillingEntity(core::pEntity, vBone, boneId, cName, cClassName)) { int material = GetMaterialEnemy(core::pEntity, cName, cClassName); KillEnemy(core::mActor, core::pActor, vBone, 0, material); } } } То есть, инвертировать условие, и делать выход вместо выполнения. Ссылка на комментарий Поделиться на другие сайты Поделиться
TimaS Опубликовано 7 апреля, 2020 Автор Поделиться Опубликовано 7 апреля, 2020 В 05.04.2020 в 15:11, Xipho сказал: То есть, инвертировать условие, и делать выход вместо выполнения. Спасибо большое, но это не как не помогло Я решил данную проблему, переписав код для получения костей врагов В прочем всё работает прекрасно Ну в прочем за помощь всё равно спасибо Можете закрывать топик Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 7 апреля, 2020 Поделиться Опубликовано 7 апреля, 2020 5 минут назад, TimaS сказал: Спасибо большое, но это не как не помогло А я и не говорил, что это поможет. Я говорил, что это для улучшения читаемости кода. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения