diff --git a/source/basecode.cpp b/source/basecode.cpp index 353ea55..9f3b00d 100644 --- a/source/basecode.cpp +++ b/source/basecode.cpp @@ -18,6 +18,7 @@ ConVar yb_jasonmode ("yb_jasonmode", "0"); ConVar yb_communication_type ("yb_communication_type", "2"); ConVar yb_economics_rounds ("yb_economics_rounds", "1"); ConVar yb_walking_allowed ("yb_walking_allowed", "1"); +ConVar yb_camping_allowed ("yb_camping_allowed", "1"); ConVar yb_tkpunish ("yb_tkpunish", "1"); ConVar yb_freeze_bots ("yb_freeze_bots", "0"); @@ -3051,7 +3052,7 @@ void Bot::RunTask_Normal (void) PushTask (TASK_SPRAY, TASKPRI_SPRAYLOGO, -1, GetWorldTime () + 1.0f, false); // reached waypoint is a camp waypoint - if ((m_currentPath->flags & FLAG_CAMP) && !yb_csdm_mode.GetBool ()) + if ((m_currentPath->flags & FLAG_CAMP) && !yb_csdm_mode.GetBool () && yb_camping_allowed.GetBool ()) { // check if bot has got a primary weapon and hasn't camped before if (HasPrimaryWeapon () && m_timeCamping + 10.0f < GetWorldTime () && !HasHostage ()) @@ -3497,11 +3498,17 @@ void Bot::RunTask_Blinded (void) void Bot::RunTask_Camp (void) { + if (!yb_camping_allowed.GetBool ()) + { + TaskComplete (); + return; + } + m_aimFlags |= AIM_CAMP; m_checkTerrain = false; m_moveToGoal = false; - if (g_bombPlanted && m_defendedBomb && !IsBombDefusing (waypoints.GetBombPosition ()) && !OutOfBombTimer () && m_team == TEAM_CF) + if (m_team == TEAM_CF && g_bombPlanted && m_defendedBomb && !IsBombDefusing (waypoints.GetBombPosition ()) && !OutOfBombTimer ()) { m_defendedBomb = false; TaskComplete (); diff --git a/source/combat.cpp b/source/combat.cpp index ee3f790..3ea3bf2 100644 --- a/source/combat.cpp +++ b/source/combat.cpp @@ -906,17 +906,6 @@ WeaponSelectEnd: m_zoomCheckTime = GetWorldTime (); } - if (selectId != WEAPON_KNIFE && HasPrimaryWeapon () && GetAmmoInClip () <= 0) - { - if (GetAmmo () <= 0 && !(m_states &= ~(STATE_THROW_HE | STATE_THROW_FB | STATE_THROW_SG))) - SelectPistol(); - - pev->button |= IN_RELOAD; - pev->button &= ~IN_ATTACK; - - return; - } - // need to care for burst fire? if (distance < 256.0f || m_blindTime > GetWorldTime ()) { @@ -934,7 +923,7 @@ WeaponSelectEnd: { LookupEnemy (); - if (selectTab[chosenWeaponIndex].primaryFireHold && m_ammo[g_weaponDefs[selectTab[selectIndex].id].ammo1] >= selectTab[selectIndex].minPrimaryAmmo) // if automatic weapon, just press attack + if (selectTab[chosenWeaponIndex].primaryFireHold && m_ammo[g_weaponDefs[selectTab[selectIndex].id].ammo1] > selectTab[selectIndex].minPrimaryAmmo) // if automatic weapon, just press attack pev->button |= IN_ATTACK; else // if not, toggle buttons { diff --git a/source/interface.cpp b/source/interface.cpp index 904440d..e7b327a 100644 --- a/source/interface.cpp +++ b/source/interface.cpp @@ -170,6 +170,21 @@ int BotCommandHandler (edict_t *ent, const char *arg0, const char *arg1, const c } } + else if (stricmp (arg0, "bot_takedamage") == 0 && !IsNullString (arg1)) + { + bool isOn = !!(atoi (arg1) == 1); + + for (int i = 0; i < GetMaxClients (); i++) + { + Bot *bot = bots.GetBot (i); + + if (bot != NULL) + { + bot->pev->takedamage = isOn ? 0.0f : 1.0f; + } + } + } + // displays main bot menu else if (stricmp (arg0, "botmenu") == 0 || stricmp (arg0, "menu") == 0) DisplayMenuToClient (ent, &g_menus[0]); @@ -1410,7 +1425,7 @@ void ClientCommand (edict_t *ent) case 7: if (waypoints.NodesValid ()) - CenterPrint ("Nodes work Find"); + CenterPrint ("Nodes works fine"); else CenterPrint ("There are errors, see console"); break; @@ -3018,20 +3033,6 @@ DLL_GIVEFNPTRSTODLL GiveFnptrsToDll (enginefuncs_t *functionTable, globalvars_t convars.PushRegisteredConVarsToEngine (); #ifdef PLATFORM_ANDROID - // ensure data & learned directory are created (as we can download waypoints from the net), do this - // only under the android platform, in case user forget to install bot extras into the mod directory - - const char *path = GetWaypointDir (); - - // ensure data path exists - CreatePath (const_cast (path)); - - char learnedPath[256]; - snprintf (learnedPath, SIZEOF_CHAR (learnedPath), "%s/learned", path); - - // ensure data/learned path exists - CreatePath (learnedPath); - g_gameVersion = CSV_OLD; // temporary, until opensource client dll get BotVoice message if (g_isMetamod) diff --git a/source/manager.cpp b/source/manager.cpp index e65333a..5dcdd90 100644 --- a/source/manager.cpp +++ b/source/manager.cpp @@ -75,6 +75,7 @@ void BotManager::TouchWithKillerEntity (Bot *bot) MDLL_ClientKill (bot->GetEntity ()); return; } + m_killerEntity->v.classname = MAKE_STRING (g_weaponDefs[bot->m_currentWeapon].className); m_killerEntity->v.dmg_inflictor = bot->GetEntity (); diff --git a/source/support.cpp b/source/support.cpp index 28f4a24..999cb20 100644 --- a/source/support.cpp +++ b/source/support.cpp @@ -959,7 +959,7 @@ extern bool OpenConfig(const char *fileName, const char *errorIfNotExists, File } const char *GetWaypointDir (void) -{ +{ return FormatBuffer ("%s/addons/yapb/data/", GetModName ()); }