本文整理汇总了C++中FStrEq函数的典型用法代码示例。如果您正苦于以下问题:C++ FStrEq函数的具体用法?C++ FStrEq怎么用?C++ FStrEq使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了FStrEq函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FStrEq
bool CNewRecharge::KeyValue( const char *szKeyName, const char *szValue )
{
if ( FStrEq(szKeyName, "style") ||
FStrEq(szKeyName, "height") ||
FStrEq(szKeyName, "value1") ||
FStrEq(szKeyName, "value2") ||
FStrEq(szKeyName, "value3"))
{
}
else if (FStrEq(szKeyName, "dmdelay"))
{
m_iReactivate = atoi(szValue);
}
else
{
return BaseClass::KeyValue( szKeyName, szValue );
}
return true;
}
示例2: strtol
void CElectrifiedWire::KeyValue( KeyValueData* pkvd )
{
if( FStrEq( pkvd->szKeyName, "sparkfrequency" ) )
{
m_iTipSparkFrequency = strtol( pkvd->szValue, nullptr, 10 );
pkvd->fHandled = true;
}
else if( FStrEq( pkvd->szKeyName, "bodysparkfrequency" ) )
{
m_iBodySparkFrequency = strtol( pkvd->szValue, nullptr, 10 );
pkvd->fHandled = true;
}
else if( FStrEq( pkvd->szKeyName, "lightningfrequency" ) )
{
m_iLightningFrequency = strtol( pkvd->szValue, nullptr, 10 );
pkvd->fHandled = true;
}
else if( FStrEq( pkvd->szKeyName, "xforce" ) )
{
m_iXJoltForce = strtol( pkvd->szValue, nullptr, 10 );
pkvd->fHandled = true;
}
else if( FStrEq( pkvd->szKeyName, "yforce" ) )
{
m_iYJoltForce = strtol( pkvd->szValue, nullptr, 10 );
pkvd->fHandled = true;
}
else if( FStrEq( pkvd->szKeyName, "zforce" ) )
{
m_iZJoltForce = strtol( pkvd->szValue, nullptr, 10 );
pkvd->fHandled = true;
}
else
BaseClass::KeyValue( pkvd );
}
示例3: if
int CSqueakGrenade::IRelationship( CBaseEntity *pTarget ) {
if ( gameplayMods::snarkFriendlyToPlayer.isActive() ) {
if ( FStrEq( "player", STRING( pTarget->pev->classname ) ) ) {
return R_AL;
} else if (
FStrEq( "monster_bullchicken", STRING( pTarget->pev->classname ) ) ||
FStrEq( "monster_alien_grunt", STRING( pTarget->pev->classname ) ) ||
FStrEq( "monster_alien_slave", STRING( pTarget->pev->classname ) )
) {
return R_DL;
}
}
if ( gameplayMods::snarkFriendlyToAllies.isActive() &&
FStrEq( "monster_scientist", STRING( pTarget->pev->classname ) ) ||
FStrEq( "monster_barney", STRING( pTarget->pev->classname ) )
) {
return R_AL;
}
return CGrenade::IRelationship( pTarget );
}
示例4: InitIcons
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CHudControlPointIcons::FireGameEvent( IGameEvent *event )
{
const char *eventname = event->GetName();
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
if ( FStrEq( "controlpoint_initialized", eventname ) )
{
// Create our control points
InitIcons();
return;
}
if ( FStrEq( "controlpoint_updateimages", eventname ) )
{
// Update the images of our control point icons
int iIndex = event->GetInt( "index" );
if ( iIndex == -1 )
{
for (int i = 0; i < m_Icons.Count(); i++)
{
m_Icons[i]->UpdateImage();
}
}
else
{
// Only invalidate the specified cap point
for (int i = 0; i < m_Icons.Count(); i++)
{
if ( m_Icons[i]->GetCapIndex() == iIndex )
{
m_Icons[i]->UpdateImage();
}
}
}
UpdateProgressBarFor( iIndex );
return;
}
if ( FStrEq( "controlpoint_updatelayout", eventname ) )
{
// Update the layout of our control point icons
int iIndex = event->GetInt( "index" );
if ( iIndex == -1 )
{
InvalidateLayout();
}
else
{
// Only invalidate the specified cap point
for (int i = 0; i < m_Icons.Count(); i++)
{
if ( m_Icons[i]->GetCapIndex() == iIndex )
{
m_Icons[i]->InvalidateLayout();
}
}
}
UpdateProgressBarFor( iIndex );
return;
}
if ( FStrEq( "controlpoint_updatecapping", eventname ) )
{
// Update the capping status of our control point icons
int iIndex = event->GetInt( "index" );
if ( iIndex == -1 )
{
for (int i = 0; i < m_Icons.Count(); i++)
{
m_Icons[i]->UpdateCapImage();
}
}
else
{
// Only invalidate the specified cap point
for (int i = 0; i < m_Icons.Count(); i++)
{
if ( m_Icons[i]->GetCapIndex() == iIndex )
{
m_Icons[i]->UpdateCapImage();
}
}
}
UpdateProgressBarFor( iIndex );
return;
}
if ( FStrEq( "controlpoint_starttouch", eventname ) )
{
int iPlayer = event->GetInt( "player" );
if ( pPlayer && iPlayer == pPlayer->entindex() )
{
m_iCurrentCP = event->GetInt( "area" );
UpdateProgressBarFor( m_iCurrentCP );
}
}
//.........这里部分代码省略.........
示例5: ParseKeyValue
virtual void ParseKeyValue( void *pData, const char *pKey, const char *pValue )
{
breakmodel_t *pModel = (breakmodel_t *)pData;
if ( !strcmpi( pKey, "model" ) )
{
ParseModelName( pModel, pValue );
}
else if (!strcmpi( pKey, "ragdoll" ) )
{
ParseModelName( pModel, pValue );
pModel->isRagdoll = true;
}
else if (!strcmpi( pKey, "motiondisabled" ) )
{
pModel->isMotionDisabled = true;
}
else if ( !strcmpi( pKey, "offset" ) )
{
UTIL_StringToVector( pModel->offset.Base(), pValue );
}
else if ( !strcmpi( pKey, "health" ) )
{
pModel->health = atof(pValue);
}
else if ( !strcmpi( pKey, "fadetime" ) )
{
pModel->fadeTime = atof(pValue);
if ( !m_wroteCollisionGroup )
{
pModel->collisionGroup = COLLISION_GROUP_DEBRIS;
}
}
else if ( !strcmpi( pKey, "fademindist" ) )
{
pModel->fadeMinDist = atof(pValue);
}
else if ( !strcmpi( pKey, "fademaxdist" ) )
{
pModel->fadeMaxDist = atof(pValue);
}
else if ( !strcmpi( pKey, "debris" ) )
{
pModel->collisionGroup = atoi(pValue) > 0 ? COLLISION_GROUP_DEBRIS : COLLISION_GROUP_INTERACTIVE;
m_wroteCollisionGroup = true;
}
else if ( !strcmpi( pKey, "burst" ) )
{
pModel->burstScale = atof( pValue );
}
else if ( !strcmpi( pKey, "placementbone" ) )
{
Q_strncpy( pModel->placementName, pValue, sizeof(pModel->placementName) );
pModel->placementIsBone = true;
}
else if ( !strcmpi( pKey, "placementattachment" ) )
{
Q_strncpy( pModel->placementName, pValue, sizeof(pModel->placementName) );
pModel->placementIsBone = false;
}
else if ( !strcmpi( pKey, "multiplayer_break" ) )
{
if ( FStrEq( pValue, "server" ) )
{
pModel->mpBreakMode = MULTIPLAYER_BREAK_SERVERSIDE;
}
else if ( FStrEq( pValue, "client" ) )
{
pModel->mpBreakMode = MULTIPLAYER_BREAK_CLIENTSIDE;
}
}
else if ( !strcmpi( pKey, "velocity" ) )
{
UTIL_StringToVector( pModel->velocity.Base(), pValue );
}
}
示例6: SquadRecruit
//=========================================================
//
// SquadRecruit(), get some monsters of my classification and
// link them as a group. returns the group size
//
//=========================================================
int CSquadMonster :: SquadRecruit( int searchRadius, int maxMembers )
{
int squadCount;
int iMyClass = Classify();// cache this monster's class
// Don't recruit if I'm already in a group
if ( InSquad() )
return 0;
if ( maxMembers < 2 )
return 0;
// I am my own leader
m_hSquadLeader = this;
squadCount = 1;
CBaseEntity *pEntity = NULL;
if ( !FStringNull( pev->netname ) )
{
// I have a netname, so unconditionally recruit everyone else with that name.
pEntity = UTIL_FindEntityByString( pEntity, "netname", STRING( pev->netname ) );
while ( pEntity )
{
CSquadMonster *pRecruit = pEntity->MySquadMonsterPointer();
if ( pRecruit )
{
if ( !pRecruit->InSquad() && pRecruit->Classify() == iMyClass && pRecruit != this )
{
// minimum protection here against user error.in worldcraft.
if (!SquadAdd( pRecruit ))
break;
squadCount++;
}
}
pEntity = UTIL_FindEntityByString( pEntity, "netname", STRING( pev->netname ) );
}
}
else
{
while ((pEntity = UTIL_FindEntityInSphere( pEntity, pev->origin, searchRadius )) != NULL)
{
CSquadMonster *pRecruit = pEntity->MySquadMonsterPointer( );
if ( pRecruit && pRecruit != this && pRecruit->IsAlive() && !pRecruit->m_pCine )
{
// Can we recruit this guy?
if ( !pRecruit->InSquad() && pRecruit->Classify() == iMyClass &&
( (iMyClass != CLASS_ALIEN_MONSTER) || FStrEq(STRING(pev->classname), STRING(pRecruit->pev->classname))) &&
FStringNull( pRecruit->pev->netname ) )
{
TraceResult tr;
UTIL_TraceLine( pev->origin + pev->view_ofs, pRecruit->pev->origin + pev->view_ofs, ignore_monsters, pRecruit->edict(), &tr );// try to hit recruit with a traceline.
if ( tr.flFraction == 1.0 )
{
if (!SquadAdd( pRecruit ))
break;
squadCount++;
}
}
}
}
}
// no single member squads
if (squadCount == 1)
{
m_hSquadLeader = NULL;
}
return squadCount;
}
示例7: RadioCreate
bool RadioCreate( edict_t *pEntity )
{
// Create the radio and stick to the wall
entvars_t *pPev = VARS( pEntity );
if (pPev->iuser1 > 0) return 0;
// make sure we dont already have a radio
int radiocount = 0;
int i = 1;
char *pClassname;
edict_t *frontEnt;
for (i; i < 1025; i++) {
frontEnt = INDEXENT ( i );
if (frontEnt) {
pClassname = (char *)STRING(frontEnt->v.classname);
if (FStrEq("building_radio", pClassname)) {
if (frontEnt->v.euser4 == pEntity)
{
radiocount++;
}
}
}
}
if (AdminLoggedIn[ENTINDEX(pEntity)] == 0)
{
if (radiocount >= 2) {
ClientPrint( pPev, HUD_PRINTTALK, "* Cant have more than 2 radios!\n");
return 0;
}
}
UTIL_MakeVectors( pPev->v_angle + pPev->punchangle );
Vector vecSrc = GetGunPosition( pEntity );
Vector vecAiming = gpGlobals->v_forward;
TraceResult tr;
UTIL_TraceLine( vecSrc, vecSrc + vecAiming * 128, dont_ignore_monsters, pEntity , &tr );
if (tr.flFraction < 1.0 || AdminLoggedIn[ENTINDEX(pEntity)])
{
if (tr.pHit && !(tr.pHit->v.flags & FL_CONVEYOR) && (FStrEq((char *)STRING(tr.pHit->v.classname), "worldspawn") || FStrEq((char *)STRING(tr.pHit->v.classname), "func_wall") || AdminLoggedIn[ENTINDEX(pEntity)] || FStrEq((char *)STRING(tr.pHit->v.classname), "building_dancemachine"))) // Make sure it isnt a conveyor!
{
Vector angles = UTIL_VecToAngles( tr.vecPlaneNormal );
if ((angles.x > 30 || angles.x < -30) && AdminLoggedIn[ENTINDEX(pEntity)] == 0)
{
ClientPrint( pPev, HUD_PRINTTALK, "* Can't place radios on floors or cielings!\n");
return 0;
}
// Create the camera here!
Vector vecOri = tr.vecEndPos + tr.vecPlaneNormal * 14;
//Vector vecOri = tr.vecEndPos + tr.vecPlaneNormal * 15;
int maxdist = (int)CVAR_GET_FLOAT("sa_radiospread");
// make sure we arent placing it within 400 units of another radio
for (i=1; i < 1025; i++) {
frontEnt = INDEXENT ( i );
if (frontEnt) {
pClassname = (char *)STRING(frontEnt->v.classname);
if (FStrEq("building_radio", pClassname)) {
if ((frontEnt->v.origin - vecOri).Length() < maxdist && AdminLoggedIn[ENTINDEX(pEntity)] == 0)
{
ClientPrint( pPev, HUD_PRINTTALK, "* Can't place a radio so close to another radio!\n");
return 0;
}
}
}
}
KeyValueData kvd;
//edict_t *pent = CREATE_ENTITY();
//edict_t *pent = CREATE_NAMED_ENTITY(MAKE_STRING("info_target"));
edict_t *tEntity;
tEntity = CREATE_NAMED_ENTITY(MAKE_STRING("info_target"));
entvars_t *pRunOnPev;
pRunOnPev = VARS(tEntity);
char buf[80];
sprintf( buf, "%s", "building_radio");
// Set the KEYVALUES here!
kvd.fHandled = FALSE;
//.........这里部分代码省略.........
示例8: ALERT
// make the entity enter a scripted sequence
void CCineMonster::PossessEntity(void)
{
CBaseEntity * pEntity = m_hTargetEnt;
CBaseMonster *pTarget = NULL;
if(pEntity)
pTarget = pEntity->MyMonsterPointer();
if(pTarget)
{
// FindEntity() just checked this!
#if 0
if ( !pTarget->CanPlaySequence( FCanOverrideState() ) )
{
ALERT( at_aiconsole, "Can't possess entity %s\n", STRING(pTarget->pev->classname) );
return;
}
#endif
pTarget->m_pGoalEnt = this;
pTarget->m_pCine = this;
pTarget->m_hTargetEnt = this;
m_saved_movetype = pTarget->pev->movetype;
m_saved_solid = pTarget->pev->solid;
m_saved_effects = pTarget->pev->effects;
pTarget->pev->effects |= pev->effects;
switch(m_fMoveTo)
{
case 0:
pTarget->m_scriptState = SCRIPT_WAIT;
break;
case 1:
pTarget->m_scriptState = SCRIPT_WALK_TO_MARK;
DelayStart(1);
break;
case 2:
pTarget->m_scriptState = SCRIPT_RUN_TO_MARK;
DelayStart(1);
break;
case 4:
UTIL_SetOrigin(pTarget->pev, pev->origin);
pTarget->pev->ideal_yaw = pev->angles.y;
pTarget->pev->avelocity = Vector(0, 0, 0);
pTarget->pev->velocity = Vector(0, 0, 0);
pTarget->pev->effects |= EF_NOINTERP;
pTarget->pev->angles.y = pev->angles.y;
pTarget->m_scriptState = SCRIPT_WAIT;
m_startTime = gpGlobals->time + 1E6;
// UNDONE: Add a flag to do this so people can fixup physics after teleporting monsters
// pTarget->pev->flags &= ~FL_ONGROUND;
break;
}
// ALERT( at_aiconsole, "\"%s\" found and used (INT: %s)\n", STRING( pTarget->pev->targetname ), FBitSet(pev->spawnflags, SF_SCRIPT_NOINTERRUPT)?"No":"Yes" );
pTarget->m_IdealMonsterState = MONSTERSTATE_SCRIPT;
if(m_iszIdle)
{
StartSequence(pTarget, m_iszIdle, FALSE);
if(FStrEq(STRING(m_iszIdle), STRING(m_iszPlay)))
{
pTarget->pev->framerate = 0;
}
}
}
}
示例9: ClientCommand
// Use CMD_ARGV, CMD_ARGV, and CMD_ARGC to get pointers the character string command.
void ClientCommand( edict_t *pEntity )
{
const char *pcmd = CMD_ARGV(0);
const char *pstr;
// Is the client spawned yet?
if ( !pEntity->pvPrivateData )
return;
entvars_t *pev = &pEntity->v;
if ( FStrEq(pcmd, "say" ) )
{
Host_Say( pEntity, 0 );
}
else if ( FStrEq(pcmd, "say_team" ) )
{
Host_Say( pEntity, 1 );
}
else if ( FStrEq(pcmd, "fullupdate" ) )
{
GetClassPtr((CBasePlayer *)pev)->ForceClientDllUpdate();
}
else if ( FStrEq(pcmd, "give" ) )
{
if ( g_flWeaponCheat != 0.0)
{
int iszItem = ALLOC_STRING( CMD_ARGV(1) ); // Make a copy of the classname
GetClassPtr((CBasePlayer *)pev)->GiveNamedItem( STRING(iszItem) );
}
}
else if ( FStrEq(pcmd, "fire") )
{
if ( g_flWeaponCheat != 0.0)
{
CBaseEntity *pPlayer = CBaseEntity::Instance(pEntity);
if (CMD_ARGC() > 1)
{
FireTargets(CMD_ARGV(1), pPlayer, pPlayer, USE_TOGGLE, 0);
}
else
{
TraceResult tr;
UTIL_MakeVectors(pev->v_angle);
UTIL_TraceLine(
pev->origin + pev->view_ofs,
pev->origin + pev->view_ofs + gpGlobals->v_forward * 1000,
dont_ignore_monsters, pEntity, &tr
);
if (tr.pHit)
{
CBaseEntity *pHitEnt = CBaseEntity::Instance(tr.pHit);
if (pHitEnt)
{
pHitEnt->Use(pPlayer, pPlayer, USE_TOGGLE, 0);
ClientPrint( &pEntity->v, HUD_PRINTCONSOLE, UTIL_VarArgs( "Fired %s \"%s\"\n", STRING(pHitEnt->pev->classname), STRING(pHitEnt->pev->targetname) ) );
}
}
}
}
}
else if ( FStrEq(pcmd, "drop" ) )
{
// player is dropping an item.
GetClassPtr((CBasePlayer *)pev)->DropPlayerItem((char *)CMD_ARGV(1));
}
else if ( FStrEq(pcmd, "fov" ) )
{
if ( g_flWeaponCheat && CMD_ARGC() > 1)
{
GetClassPtr((CBasePlayer *)pev)->m_iFOV = atoi( CMD_ARGV(1) );
}
else
{
CLIENT_PRINTF( pEntity, print_console, UTIL_VarArgs( "\"fov\" is \"%d\"\n", (int)GetClassPtr((CBasePlayer *)pev)->m_iFOV ) );
}
}
else if ( FStrEq(pcmd, "use" ) )
{
GetClassPtr((CBasePlayer *)pev)->SelectItem((char *)CMD_ARGV(1));
}
else if (((pstr = strstr(pcmd, "weapon_")) != NULL) && (pstr == pcmd))
{
GetClassPtr((CBasePlayer *)pev)->SelectItem(pcmd);
}
else if (FStrEq(pcmd, "lastinv" ))
{
GetClassPtr((CBasePlayer *)pev)->SelectLastItem();
}
else if ( FStrEq( pcmd, "spectate" ) && (pev->flags & FL_PROXY) ) // added for proxy support
{
CBasePlayer * pPlayer = GetClassPtr((CBasePlayer *)pev);
edict_t *pentSpawnSpot = g_pGameRules->GetPlayerSpawnSpot( pPlayer );
pPlayer->StartObserver( pev->origin, VARS(pentSpawnSpot)->angles);
}
else if ( g_pGameRules->ClientCommand( GetClassPtr((CBasePlayer *)pev), pcmd ) )
{
//.........这里部分代码省略.........
示例10: Q_SplitString
//--------------------------------------------------------------------------------------------------------------
void BuyState::OnUpdate( CCSBot *me )
{
char cmdBuffer[256];
// wait for a Navigation Mesh
if (!TheNavMesh->IsLoaded())
return;
// apparently we cant buy things in the first few seconds, so wait a bit
if (m_isInitialDelay)
{
const float waitToBuyTime = 0.25f;
if (gpGlobals->curtime - me->GetStateTimestamp() < waitToBuyTime)
return;
m_isInitialDelay = false;
}
// if we're done buying and still in the freeze period, wait
if (m_doneBuying)
{
if (CSGameRules()->IsMultiplayer() && CSGameRules()->IsFreezePeriod())
{
// make sure we're locked and loaded
me->EquipBestWeapon( MUST_EQUIP );
me->Reload();
me->ResetStuckMonitor();
return;
}
me->Idle();
return;
}
// If we're supposed to buy a specific weapon for debugging, do so and then bail
const char *cheatWeaponString = bot_loadout.GetString();
if ( cheatWeaponString && *cheatWeaponString )
{
CUtlVector<char*, CUtlMemory<char*> > loadout;
Q_SplitString( cheatWeaponString, " ", loadout );
for ( int i=0; i<loadout.Count(); ++i )
{
const char *item = loadout[i];
if ( FStrEq( item, "vest" ) )
{
me->GiveNamedItem( "item_kevlar" );
}
else if ( FStrEq( item, "vesthelm" ) )
{
me->GiveNamedItem( "item_assaultsuit" );
}
else if ( FStrEq( item, "defuser" ) )
{
if ( me->GetTeamNumber() == TEAM_CT )
{
me->GiveDefuser();
}
}
else if ( FStrEq( item, "nvgs" ) )
{
me->m_bHasNightVision = true;
}
else if ( FStrEq( item, "primammo" ) )
{
me->AttemptToBuyAmmo( 0 );
}
else if ( FStrEq( item, "secammo" ) )
{
me->AttemptToBuyAmmo( 1 );
}
else
{
me->GiveWeapon( item );
}
}
m_doneBuying = true;
return;
}
if (!me->IsInBuyZone())
{
m_doneBuying = true;
CONSOLE_ECHO( "%s bot spawned outside of a buy zone (%d, %d, %d)\n",
(me->GetTeamNumber() == TEAM_CT) ? "CT" : "Terrorist",
(int)me->GetAbsOrigin().x,
(int)me->GetAbsOrigin().y,
(int)me->GetAbsOrigin().z );
return;
}
// try to buy some weapons
const float buyInterval = 0.02f;
if (gpGlobals->curtime - me->GetStateTimestamp() > buyInterval)
{
me->m_stateTimestamp = gpGlobals->curtime;
bool isPreferredAllDisallowed = true;
//.........这里部分代码省略.........
示例11: LoadMaps
//---------------------------------------------------------------------------------
// Purpose: Load maps into memory
//---------------------------------------------------------------------------------
void LoadMaps(const char *map_being_loaded)
{
FileHandle_t file_handle;
char base_filename[512];
char map_name[128];
bool map_is_in_map_cycle;
bool found_match;
// Don't call FreeMaps() !!!!
FreeList((void **) &map_list, &map_list_size);
FreeList((void **) &votemap_list, &votemap_list_size);
FreeList((void **) &map_in_cycle_list, &map_in_cycle_list_size);
FreeList((void **) &map_not_in_cycle_list, &map_not_in_cycle_list_size);
FindMapCVars();
// MMsg("************ LOADING MAP LISTS *************\n");
override_changelevel = 0;
// MMsg("Loading Map [%s]\n", map_being_loaded);
Q_strcpy(current_map, map_being_loaded);
// Update last maps list
last_map_index ++;
if (last_map_index == MAX_LAST_MAPS)
{
last_map_index = 0;
}
Q_strcpy(last_map_list[last_map_index].map_name, current_map);
time_t current_time;
time(¤t_time);
last_map_list[last_map_index].start_time = current_time;
SetChangeLevelReason("");
Q_strcpy(last_map_list[last_map_index].end_reason, "");
// Reset force map stuff, mani_map_cycle_mode will set these if necessary
// when server.cfg is run
Q_strcpy(forced_nextmap,"");
override_changelevel = 0;
override_setnextmap = false;
// Get nextmap on level change
file_handle = filesystem->Open (mapcyclefile->GetString(),"rt",NULL);
if (file_handle == NULL)
{
// MMsg("Failed to load %s\n", mapcyclefile->GetString());
Q_strcpy(next_map, map_being_loaded);
mani_nextmap.SetValue(next_map);
AddToList((void **) &map_in_cycle_list, sizeof(map_t), &map_in_cycle_list_size);
Q_strcpy(map_in_cycle_list[map_in_cycle_list_size - 1].map_name, map_being_loaded);
}
else
{
// MMsg("Mapcycle list [%s]\n", mapcyclefile->GetString());
while (filesystem->ReadLine (map_name, sizeof(map_name), file_handle) != NULL)
{
if (!ParseLine(map_name, true, false))
{
continue;
}
if (engine->IsMapValid(map_name) == 0)
{
// MMsg("\n*** Map [%s] is not a valid map !!! *****\n", map_name);
continue;
}
AddToList((void **) &map_in_cycle_list, sizeof(map_t), &map_in_cycle_list_size);
Q_strcpy(map_in_cycle_list[map_in_cycle_list_size - 1].map_name, map_name);
map_in_cycle_list[map_in_cycle_list_size - 1].selected_for_vote = false;
// MMsg("[%s] ", map_name);
}
// MMsg("\n");
filesystem->Close(file_handle);
}
// Check if this map is in the map cycle
map_is_in_map_cycle = false;
for (int i = 0; i < map_in_cycle_list_size; i ++)
{
if (FStrEq(map_in_cycle_list[i].map_name, current_map))
{
map_is_in_map_cycle = true;
break;
}
}
if (!map_is_in_map_cycle)
{
//.........这里部分代码省略.........
示例12: ASSERT
// Create a custom particle system. Create a new template instead of reading
// one off disk.
void
AvHCustomParticleSystemEntity::KeyValue( KeyValueData* inPkvd )
{
// Read tag with ps name and create a new template using it
if(FStrEq(inPkvd->szKeyName, kpscSystemName))
{
// Custom particle systems shouldn't be specifying a system in the .ps to use
ASSERT(false);
}
else if(FStrEq(inPkvd->szKeyName, kpscGenSource) || FStrEq(inPkvd->szKeyName, "particleGenerationSource"))
{
char* theEntityName = inPkvd->szValue;
this->GetCustomTemplate()->SetGenerationEntityName(theEntityName);
inPkvd->fHandled = TRUE;
}
else if(FStrEq(inPkvd->szKeyName, kpscGenShape) || FStrEq(inPkvd->szKeyName, "particleGenerationShape"))
{
int theGenerationShape = 0;
if(sscanf(inPkvd->szValue, "%d", &theGenerationShape))
{
ShapeType theShape = PS_Point;
switch(theGenerationShape)
{
case 4:
theShape = PS_Box;
break;
case 5:
theShape = PS_Sphere;
break;
case 8:
theShape = PS_Blob;
break;
}
this->GetCustomTemplate()->SetGenerationShape(theShape);
inPkvd->fHandled = TRUE;
}
}
else if(FStrEq(inPkvd->szKeyName, kpscSprite) || FStrEq(inPkvd->szKeyName, "particleSprite"))
{
// relative path to sprite
string theSpriteName(inPkvd->szValue);
this->GetCustomTemplate()->SetSprite(theSpriteName);
inPkvd->fHandled = TRUE;
}
else if(FStrEq(inPkvd->szKeyName, kpscSpriteNumFrames) || FStrEq(inPkvd->szKeyName, "particleSpriteNumFrames"))
{
// int number of frames
int theNumFrames = 0;
if(sscanf(inPkvd->szValue, "%d", &theNumFrames) == 1)
{
this->GetCustomTemplate()->SetNumSpriteFrames(theNumFrames);
inPkvd->fHandled = TRUE;
}
}
else if(FStrEq(inPkvd->szKeyName, kpscGenShapeParams) || FStrEq(inPkvd->szKeyName, "particleGenerationShapeParams"))
{
float theParameter = 0;
if(sscanf(inPkvd->szValue, "%f", &theParameter) == 1)
{
this->GetCustomTemplate()->SetGenerationEntityParameter(theParameter);
inPkvd->fHandled = TRUE;
}
}
else if(FStrEq(inPkvd->szKeyName, kpscNumParticles) || FStrEq(inPkvd->szKeyName, "particleNumParticles"))
{
// max particles, or density
int theNumParticles = 0;
if(sscanf(inPkvd->szValue, "%d", &theNumParticles) == 1)
{
this->GetCustomTemplate()->SetMaxParticles(theNumParticles);
inPkvd->fHandled = TRUE;
}
}
else if(FStrEq(inPkvd->szKeyName, kpscGenRate) || FStrEq(inPkvd->szKeyName, "particleGenerationRate"))
{
// num particles per second
int theNumParticles = 0;
if(sscanf(inPkvd->szValue, "%d", &theNumParticles) == 1)
{
this->GetCustomTemplate()->SetGenerationRate(theNumParticles);
inPkvd->fHandled = TRUE;
}
}
else if(FStrEq(inPkvd->szKeyName, kpscSize) || FStrEq(inPkvd->szKeyName, "particleSize"))
{
// float particle size
float theParticleSize = 0;
if(sscanf(inPkvd->szValue, "%f", &theParticleSize) == 1)
{
this->GetCustomTemplate()->SetParticleSize(theParticleSize);
inPkvd->fHandled = TRUE;
}
}
else if(FStrEq(inPkvd->szKeyName, kpscSystemLifetime) || FStrEq(inPkvd->szKeyName, "particleSystemLifetime"))
{
// string system lifetime
float theLifetime = -1;
if(sscanf(inPkvd->szValue, "%f", &theLifetime) == 1)
//.........这里部分代码省略.........
示例13: CMD_ARGV
/* <36ace2> ../cstrike/dlls/bot/cs_bot_manager.cpp:484 */
void CCSBotManager::__MAKE_VHOOK(ServerCommand)(const char *pcmd)
{
if (!m_bServerActive || !UTIL_IsGame("czero"))
return;
char buffer[400];
const char *msg = CMD_ARGV(1);
if (FStrEq(pcmd, "bot_about"))
{
Q_sprintf(buffer, "\n--------------------------------------------------------------------------\nThe Official Counter-Strike Bot V%d.%02d\nCreated by Michael S. Booth\nWeb: www.turtlerockstudios.com\\csbot\nE-mail: [email protected]\n--------------------------------------------------------------------------\n\n", CSBOT_VERSION_MAJOR, CSBOT_VERSION_MINOR);
CONSOLE_ECHO(buffer);
HintMessageToAllPlayers(buffer);
}
else if (FStrEq(pcmd, "bot_add"))
{
BotAddCommand(BOT_TEAM_ANY);
}
else if (FStrEq(pcmd, "bot_add_t"))
{
BotAddCommand(BOT_TEAM_T);
}
else if (FStrEq(pcmd, "bot_add_ct"))
{
BotAddCommand(BOT_TEAM_CT);
}
else if (FStrEq(pcmd, "bot_kill"))
{
bool killThemAll;
if (CMD_ARGC() == 1 || FStrEq(msg, "all"))
killThemAll = true;
else
killThemAll = false;
for (int iIndex = 1; iIndex <= gpGlobals->maxClients; iIndex++)
{
CBasePlayer *pPlayer = (CBasePlayer *)UTIL_PlayerByIndex(iIndex);
if (pPlayer == NULL)
continue;
if (FNullEnt(pPlayer->pev))
continue;
const char *name = STRING(pPlayer->pev->netname);
if (FStrEq(name, ""))
continue;
if (pPlayer->IsBot())
{
if (killThemAll || FStrEq(name, msg))
{
pPlayer->TakeDamage(pPlayer->pev, pPlayer->pev, 9999.9f, DMG_CRUSH);
}
}
}
}
else if (FStrEq(pcmd, "bot_kick"))
{
bool kickThemAll;
if (CMD_ARGC() == 1 || FStrEq(msg, "all"))
kickThemAll = true;
else
kickThemAll = false;
for (int iIndex = 1; iIndex <= gpGlobals->maxClients; iIndex++)
{
CBasePlayer *pPlayer = (CBasePlayer *)UTIL_PlayerByIndex(iIndex);
if (pPlayer == NULL)
continue;
if (FNullEnt(pPlayer->pev))
continue;
const char *name = STRING(pPlayer->pev->netname);
if (FStrEq(name, ""))
continue;
if (pPlayer->IsBot())
{
if (kickThemAll || FStrEq(name, msg))
{
SERVER_COMMAND(UTIL_VarArgs("kick \"%s\"\n", name));
CVAR_SET_FLOAT("bot_quota", cv_bot_quota.value - 1);
}
}
}
if (kickThemAll || cv_bot_quota.value < 0.0f)
{
CVAR_SET_FLOAT("bot_quota", 0);
}
}
else if (FStrEq(pcmd, "bot_knives_only"))
{
CVAR_SET_FLOAT("bot_allow_pistols", 0);
//.........这里部分代码省略.........
示例14: ALLOC_STRING
void CLightning::KeyValue( KeyValueData *pkvd )
{
if (FStrEq(pkvd->szKeyName, "LightningStart"))
{
m_iszStartEntity = ALLOC_STRING( pkvd->szValue );
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "LightningEnd"))
{
m_iszEndEntity = ALLOC_STRING( pkvd->szValue );
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "life"))
{
m_life = atof(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "BoltWidth"))
{
m_boltWidth = atoi(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "NoiseAmplitude"))
{
m_noiseAmplitude = atoi(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "TextureScroll"))
{
m_speed = atoi(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "StrikeTime"))
{
m_restrike = atof(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "texture"))
{
m_iszSpriteName = ALLOC_STRING(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "framestart"))
{
m_frameStart = atoi(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "Radius"))
{
m_radius = atof( pkvd->szValue );
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "damage"))
{
pev->dmg = atof(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else
CBeam::KeyValue( pkvd );
}
示例15: RadioUseCheck
void RadioUseCheck( edict_t *pEntity )
{
// Elaborate and stupid function to see if the player is pressing USE,
// cause if we dont do this we cant catch it cause its really handled by the TFC DLL
int MyNumber = ENTINDEX( pEntity );
entvars_t *pev = VARS( pEntity );
int buttonsChanged = (lastButtons[MyNumber] ^ pev->button); // These buttons have changed this frame
int m_afButtonPressed = buttonsChanged & pev->button; // The changed ones still down are "pressed"
int m_afButtonReleased = buttonsChanged & (~pev->button); // The ones not down are "released"
lastButtons[MyNumber] = pev->button;
// Was use pressed or released?
if ( !(buttonsChanged & IN_USE))
return;
CBaseEntity *pObject = NULL;
CBaseEntity *pClosest = NULL;
Vector vecLOS;
float flMaxDot = VIEW_FIELD_NARROW;
float flDot;
UTIL_MakeVectors ( pev->v_angle );// so we know which way we are facing
while ((pObject = UTIL_FindEntityInSphere( pObject, pev->origin, PLAYER_SEARCH_RADIUS )) != NULL)
{
char *pClassname = (char *)STRING(pObject->pev->classname);
if (FStrEq(pClassname, "building_radio"))
{
vecLOS = ((pObject->pev->absmin + ( pObject->pev->size * 0.5 )) - (pev->origin + pev->view_ofs));
vecLOS = UTIL_ClampVectorToBox( vecLOS, pObject->pev->size * 0.5 );
flDot = DotProduct (vecLOS , gpGlobals->v_forward);
if (flDot > flMaxDot )
{
pClosest = pObject;
flMaxDot = flDot;
}
}
}
pObject = pClosest;
// Found an object
if (pObject )
{
if (m_afButtonPressed & IN_USE)
{
char *pClassname = (char *)STRING(pObject->pev->classname);
if (FStrEq(pClassname, "building_radio"))
{
// It's a radio. Do the RADIO USE thingummy, letting the radio decide what use does.
RadioUse( pObject->edict(), pEntity );
}
}
}
}