-
Автор темы
- #1
Видел тему -> https://yougame.biz/threads/337663/
Помогите в мой код добавить, чтобы при первом громе не кикало
Помогите в мой код добавить, чтобы при первом громе не кикало
Код:
void function() {
auto Game = SSystemGlobalEnvironment::Singleton()->GetIGame();
if (!Game) return;
auto pPhysicalWorld = SSystemGlobalEnvironment::Singleton()->GetIPhysicalWorld();
if (!pPhysicalWorld) return;
auto sGameFramework = Game->GetIGameFramework();
if (!sGameFramework) return;
auto pEntitySystem = sGameFramework->GetIEntitySystem();
if (!pEntitySystem) return;
auto pEntityIt = pEntitySystem->GetEntityIterator();
if (!pEntityIt) return;
auto nActor = sGameFramework->GetClientActor(); if (!nActor) return;
auto pRenderer = SSystemGlobalEnvironment::Singleton()->GetIRenderer();
if (!pRenderer) return;
auto sVar = Game->GetCVars();
if (!sVar) return;
auto pRules = sGameFramework->GetGameRules();
if (!pRules) return;
auto pActorSystem = sGameFramework->GetActorSystem();
if (!pActorSystem) return;
auto nItem = nActor->GetCurrentItem();
if (!nItem) return;
auto pWeapon = nItem->GetWeapon();
if (!pWeapon) return;
auto pWeaponGeneral = pWeapon->GetWeaponGeneral();
if (!pWeaponGeneral) return;
auto pWeaponParameters = pWeaponGeneral->GetParameters();
if (!pWeaponParameters) return;
auto pTimer = SSystemGlobalEnvironment::Singleton()->GetTimer();
if (!pTimer) return;
auto pInput = SSystemGlobalEnvironment::Singleton()->GetInput();
if (!pInput) return;
auto pKey = new UIKeyState(pInput);
Timer.Upd(pTimer->GetFrameTime());
Timer.Hz(8.f);
// Game->GetCPlayerStatus()->SetAfkTime(0); //анти-афк
Vec3 ShootPos = pRenderer->GetViewCamera();
update(ShootPos, nActor);
vector<SvRequestShootHit::RequestHit> hit;
while (auto pEntity = pEntityIt->Next()) {
if (pEntity->IsHidden()) continue;
const char* pName = pEntity->GetName();
IEntityClass* pEntityClass = pEntity->GetEntityClass(); if (!pEntityClass) continue;
cchar pClassName = pEntityClass->GetIClassName();
AABB aabb;
pEntity->GetWorldBounds(aabb);
float GetDistance = pDistance(ShootPos, aabb.GetCenter());
static int hits = 13;
if (ObjectsMultihit(pEntity, pClassName, pName, pKey, GetDistance, hits, sMultiHit)) {
hit.push_back(SvRequestShootHit::RequestHit(nActor->GetEntityId(), 0, 6, 12, ShootPos, 0.0f, nActor->HitGett()));
for (size_t i = 0; i < hits; ++i) hit.push_back(SvRequestShootHit::RequestHit(pEntity->GetEntityId(), 0, 1, 0, aabb.GetCenter(), 0.0f, 0));
continue;
}
}
pEntityIt->Release();
IActorSystem::IActorIterator* ActorIterator = nullptr;
pActorSystem->CreateActorIterator(&ActorIterator); if (!ActorIterator) return;
for (; auto pActor = ActorIterator->Next();)
{
Vec3 BonePos = { 0, 0, 0 };
int idbone = 0;
int MaterialId = 0;
if (sMultiHit && pSuicide)
{
}
else if (sMultiHit && team_Kill)
{
if (check_actor(nActor, pActor)) continue;
}
else
{
if (check_actor(nActor, pActor)) continue;
if (!GetTeam(nActor, pActor)) continue;
}
auto pEntityActor = pActor->GetEntity(); if (!pEntityActor) continue;
cchar pActorName = pEntityActor->GetName();
cchar sAnim = pActor->GetAnimationGraphState()->GetCurrentStateName();
if (pActor->IsDead()) continue;
if (NumerationEntity(pRules, pActorName, sAnim, pEntityActor, idbone, BonePos, MaterialId) && nItem->IsWeapon()) {
if (team_Wallshoot || pPhysicalWorld->isVisible(pEntitySystem, pEntityActor, ShootPos, BonePos)) {
if (sMultiHit ) {
hit.push_back(SvRequestShootHit::RequestHit(nActor->GetEntityId(), 12, 6, 12, ShootPos, 0.0f, nActor->HitGett()));
for (int i = 0; i < 1; ++i) hit.push_back(SvRequestShootHit::RequestHit(pEntityActor->GetEntityId(), MaterialId, 1, idbone, BonePos, 0.0f, pActor->HitGett()));
}
}
}
}
ActorIterator->Release();
if (sMultiHit ) {
if (Timer.Hav()) {
if (!hit.empty()) {
if (nItem->IsWeapon()) {
AddProjectile(hit);
RequestShootHit(nItem);
clear();
}
}
Timer.Res();
}
}
}
}