gui update and navbot path optimize
This commit is contained in:
parent
b666375e4c
commit
13b680dee4
@ -67,7 +67,7 @@
|
||||
<AutoVariable width="fill" target="navbot.enable" label="Enable Navbot"/>
|
||||
<AutoVariable width="fill" target="navbot.scout-mode" label="Enable Scout Mode"/>
|
||||
<AutoVariable width="fill" target="navbot.spy-mode" label="Enable Spy Mode"/>
|
||||
<AutoVariable width="fill" target="navbot.heavy-mode" label="General Mode (only use if your class is not listed)"/>
|
||||
<AutoVariable width="fill" target="navbot.heavy-mode" label="General Mode"/>
|
||||
<AutoVariable width="fill" target="navbot.primary-only" label="Best Weapon only"/>
|
||||
<AutoVariable width="fill" target="navbot.jump-distance" label="Jump Distance"/>
|
||||
<AutoVariable width="fill" target="navbot.target-sentry" label="Try to target sentries"/>
|
||||
|
@ -453,14 +453,16 @@ int GetClosestTeleporter()
|
||||
}
|
||||
return BestBuilding;
|
||||
}
|
||||
|
||||
bool NavToSentry(int priority)
|
||||
{
|
||||
static CNavArea *last_area = nullptr;
|
||||
CachedEntity *Sentry = nearestSentry();
|
||||
if (CE_BAD(Sentry))
|
||||
return false;
|
||||
CNavArea *area = FindNearestValidByDist(GetBuildingPosition(Sentry),
|
||||
1100.0f, 2000.0f, false);
|
||||
if (!area)
|
||||
if (!area || (area == last_area && !nav::ReadyForCommands))
|
||||
return false;
|
||||
if (nav::navTo(area->m_center, priority, true, false))
|
||||
return true;
|
||||
@ -471,6 +473,7 @@ int lastent = -1;
|
||||
|
||||
bool NavToEnemy()
|
||||
{
|
||||
static CNavArea *last_area = nullptr;
|
||||
if (*stay_near)
|
||||
{
|
||||
if (lastent != -1)
|
||||
@ -495,10 +498,11 @@ bool NavToEnemy()
|
||||
else
|
||||
area = FindNearestValidByDist(ent->m_vecOrigin(), 200, 1000,
|
||||
true);
|
||||
if (area)
|
||||
if (area && (area == last_area && nav::ReadyForCommands))
|
||||
{
|
||||
nav::navTo(area->m_center, 1337, true, false);
|
||||
lastgoal = area->m_center;
|
||||
last_area = area;
|
||||
lastent = ent->m_IDX;
|
||||
return true;
|
||||
}
|
||||
@ -527,11 +531,12 @@ bool NavToEnemy()
|
||||
else
|
||||
area =
|
||||
FindNearestValidByDist(ent->m_vecOrigin(), 200, 1000, true);
|
||||
if (area)
|
||||
if (area && (area == last_area && nav::ReadyForCommands))
|
||||
{
|
||||
nav::navTo(area->m_center, 1337, true, false);
|
||||
lastgoal = area->m_center;
|
||||
lastent = ent->m_IDX;
|
||||
last_area = area;
|
||||
return true;
|
||||
}
|
||||
else if ((lastgoal.x > 1.0f || lastgoal.x < -1.0f) &&
|
||||
@ -799,7 +804,7 @@ static HookedFunction
|
||||
});
|
||||
|
||||
if (!sorted_ticks[5].tickcount ||
|
||||
nav::navTo(sorted_ticks[5].entorigin, false,
|
||||
!nav::navTo(sorted_ticks[5].entorigin, false,
|
||||
false))
|
||||
if (!nav::navTo(tar->m_vecOrigin(), 5, true,
|
||||
false))
|
||||
|
@ -877,7 +877,7 @@ float DistToSqr(CachedEntity *entity)
|
||||
|
||||
void Patch(void *address, void *patch, size_t length)
|
||||
{
|
||||
void *page = (void *) ((uintptr_t) address & ~0xFFF);
|
||||
void *page = (void *) ((uint64_t) address & ~0xFFF);
|
||||
logging::Info("mprotect: %d",
|
||||
mprotect(page, 0xFFF, PROT_READ | PROT_WRITE | PROT_EXEC));
|
||||
memcpy(address, patch, length);
|
||||
@ -932,11 +932,18 @@ bool GetProjectileData(CachedEntity *weapon, float &speed, float &gravity)
|
||||
rspeed = 1980.0f;
|
||||
break;
|
||||
}
|
||||
case CL_CLASS(CTFParticleCannon):
|
||||
case CL_CLASS(CTFRocketLauncher_AirStrike):
|
||||
case CL_CLASS(CTFRocketLauncher):
|
||||
{
|
||||
rspeed = 1100.0f;
|
||||
break;
|
||||
}
|
||||
case CL_CLASS(CTFCannon):
|
||||
{
|
||||
rspeed = 1400.0f;
|
||||
break;
|
||||
}
|
||||
case CL_CLASS(CTFGrenadeLauncher):
|
||||
{
|
||||
IF_GAME(IsTF2())
|
||||
@ -953,7 +960,7 @@ bool GetProjectileData(CachedEntity *weapon, float &speed, float &gravity)
|
||||
}
|
||||
case CL_CLASS(CTFPipebombLauncher):
|
||||
{
|
||||
float chargebegin = *((float *) ((unsigned) RAW_ENT(LOCAL_W) + 3152));
|
||||
float chargebegin = *((float *) ((uint64_t) RAW_ENT(LOCAL_W) + 3152));
|
||||
float chargetime = g_GlobalVars->curtime - chargebegin;
|
||||
rspeed =
|
||||
(fminf(fmaxf(chargetime / 4.0f, 0.0f), 1.0f) * 1500.0f) + 900.0f;
|
||||
@ -972,6 +979,7 @@ bool GetProjectileData(CachedEntity *weapon, float &speed, float &gravity)
|
||||
0.5);
|
||||
break;
|
||||
}
|
||||
case CL_CLASS(CTFBat_Giftwrap):
|
||||
case CL_CLASS(CTFBat_Wood):
|
||||
{
|
||||
rspeed = 3000.0f;
|
||||
|
@ -223,23 +223,41 @@ DEFINE_HOOKED_METHOD(CreateMove, bool, void *this_, float input_sample_time,
|
||||
}
|
||||
hooked_methods::CreateMove();
|
||||
|
||||
static bool firstcall = false;
|
||||
static float interp_f = 0.0f;
|
||||
static int min_interp = 0;
|
||||
static float ratio = 0;
|
||||
if (nolerp)
|
||||
{
|
||||
// current_user_cmd->tick_count += 1;
|
||||
if (!firstcall)
|
||||
min_interp = sv_client_min_interp_ratio->GetInt();
|
||||
if (sv_client_min_interp_ratio->GetInt() != -1)
|
||||
{
|
||||
// sv_client_min_interp_ratio->m_nFlags = 0;
|
||||
sv_client_min_interp_ratio->SetValue(-1);
|
||||
}
|
||||
if (!firstcall)
|
||||
interp_f = cl_interp->m_fValue;
|
||||
if (cl_interp->m_fValue != 0)
|
||||
{
|
||||
cl_interp->SetValue(0);
|
||||
cl_interp->m_fValue = 0.0f;
|
||||
cl_interp->m_nValue = 0;
|
||||
}
|
||||
if (!firstcall)
|
||||
ratio = cl_interp_ratio->GetInt();
|
||||
if (cl_interp_ratio->GetInt() != 0)
|
||||
cl_interp_ratio->SetValue(0);
|
||||
// if (cl_interpolate->GetInt() != 0) cl_interpolate->SetValue(0);
|
||||
firstcall = true;
|
||||
}
|
||||
else if (!firstcall && !*nolerp)
|
||||
{
|
||||
sv_client_min_interp_ratio->SetValue(min_interp);
|
||||
cl_interp->SetValue(interp_f);
|
||||
cl_interp_ratio->SetValue(ratio);
|
||||
firstcall = true;
|
||||
}
|
||||
|
||||
if (!g_Settings.bInvalid && CE_GOOD(g_pLocalPlayer->entity))
|
||||
|
Reference in New Issue
Block a user