这篇教程C++ ENTINDEX函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中ENTINDEX函数的典型用法代码示例。如果您正苦于以下问题:C++ ENTINDEX函数的具体用法?C++ ENTINDEX怎么用?C++ ENTINDEX使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了ENTINDEX函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: UTIL_HostSayvoid UTIL_HostSay( edict_t *pEntity, char *message ){ int j; char text[128]; char *pc; edict_t *client; // make sure the text has content for ( pc = message; pc != NULL && *pc != 0; pc++ ) { if ( isprint( *pc ) && !isspace( *pc ) ) { pc = NULL; // we've found an alphanumeric character, so text is valid break; } } if ( pc != NULL ) return; // no character found, so say nothing // turn on color set 2 (color on, no sound) sprintf( text, "%c%s: ", 2, STRING( pEntity->v.netname ) ); j = sizeof(text) - 2 - strlen(text); // -2 for /n and null terminator if ( (int)strlen(message) > j ) message[j] = 0; strcat( text, message ); strcat( text, "/n" ); // loop through all players // Start with the first player. // This may return the world in single player if the client types something between levels or during spawn // so check it, or it will infinite loop if (gmsgSayText == 0) gmsgSayText = REG_USER_MSG( "SayText", -1 ); client = NULL; while ( ((client = UTIL_FindEntityByClassname( client, "player" )) != NULL) && (!FNullEnt(client)) ) { if ( client == pEntity ) // skip sender of message continue; MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, gmsgSayText, NULL, client ); WRITE_BYTE( ENTINDEX(pEntity) ); WRITE_STRING( text ); MESSAGE_END(); } // print to the sending client MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, gmsgSayText, NULL, pEntity ); WRITE_BYTE( ENTINDEX(pEntity) ); WRITE_STRING( text ); MESSAGE_END();}
开发者ID:APGRoboCop,项目名称:RicoBot,代码行数:57,
示例2: ENTINDEX// Find the next client in the game for this player to spectatevoid CBasePlayer::Observer_FindNextPlayer( bool bReverse ){ // MOD AUTHORS: Modify the logic of this function if you want to restrict the observer to watching // only a subset of the players. e.g. Make it check the target's team. int iStart; if ( m_hObserverTarget ) iStart = ENTINDEX( m_hObserverTarget->edict() ); else iStart = ENTINDEX( edict() ); int iCurrent = iStart; m_hObserverTarget = NULL; int iDir = bReverse ? -1 : 1; do { iCurrent += iDir; // Loop through the clients if (iCurrent > gpGlobals->maxClients) iCurrent = 1; if (iCurrent < 1) iCurrent = gpGlobals->maxClients; CBaseEntity *pEnt = UTIL_PlayerByIndex( iCurrent ); if ( !pEnt ) continue; if ( pEnt == this ) continue; // Don't spec observers or players who haven't picked a class yet if ( ((CBasePlayer*)pEnt)->IsObserver() || (pEnt->pev->effects & EF_NODRAW) ) continue; // MOD AUTHORS: Add checks on target here. m_hObserverTarget = pEnt; break; } while ( iCurrent != iStart ); // Did we find a target? if ( m_hObserverTarget ) { // Move to the target UTIL_SetOrigin( pev, m_hObserverTarget->pev->origin ); // ALERT( at_console, "Now Tracking %s/n", STRING( m_hObserverTarget->pev->netname ) ); // Store the target in pev so the physics DLL can get to it if (pev->iuser1 != OBS_ROAMING) pev->iuser2 = ENTINDEX( m_hObserverTarget->edict() ); }}
开发者ID:6779660,项目名称:halflife,代码行数:57,
示例3: TraceLinevoid TraceLine(const float *v1, const float *v2, int fNoMonsters, edict_t *shooter, TraceResult *ptr) { TRACE_LINE(v1, v2, fNoMonsters, shooter, ptr); if ( ptr->pHit && (ptr->pHit->v.flags& (FL_CLIENT | FL_FAKECLIENT)) && shooter && (shooter->v.flags & (FL_CLIENT | FL_FAKECLIENT)) ) { int shooterIndex = ENTINDEX(shooter); if ( !(g_bodyhits[shooterIndex][ENTINDEX(ptr->pHit)] & (1<<ptr->iHitgroup)) ) ptr->flFraction = 1.0; } RETURN_META(MRES_SUPERCEDE);}
开发者ID:9iky6,项目名称:amxmodx,代码行数:10,
示例4: PlayerKilled//=========================================================// PlayerKilled - someone/something killed this player//=========================================================void CHalfLifeMultiplay :: PlayerKilled( CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor ){ DeathNotice( pVictim, pKiller, pInflictor ); pVictim->m_iDeaths += 1; FireTargets( "game_playerdie", pVictim, pVictim, USE_TOGGLE, 0 ); CBasePlayer *peKiller = NULL; CBaseEntity *ktmp = CBaseEntity::Instance( pKiller ); if ( ktmp && (ktmp->Classify() == CLASS_PLAYER) ) peKiller = (CBasePlayer*)ktmp; if ( pVictim->pev == pKiller ) { // killed self pKiller->frags -= 1; } else if ( ktmp && ktmp->IsPlayer() ) { // if a player dies in a deathmatch game and the killer is a client, award the killer some points pKiller->frags += IPointsForKill( peKiller, pVictim ); FireTargets( "game_playerkill", ktmp, ktmp, USE_TOGGLE, 0 ); } else { // killed by the world pVictim->pev->frags -= 1; } // update the scores // killed scores MESSAGE_BEGIN( MSG_ALL, gmsgScoreInfo ); WRITE_BYTE( ENTINDEX(pVictim->edict()) ); WRITE_SHORT( pVictim->pev->frags ); WRITE_SHORT( pVictim->m_iDeaths ); WRITE_SHORT( pVictim->pev->team ); MESSAGE_END(); // killers score, if it's a player CBaseEntity *ep = CBaseEntity::Instance( pKiller ); if ( ep && ep->Classify() == CLASS_PLAYER ) { CBasePlayer *PK = (CBasePlayer*)ep; MESSAGE_BEGIN( MSG_ALL, gmsgScoreInfo ); WRITE_BYTE( ENTINDEX(PK->edict()) ); WRITE_SHORT( PK->pev->frags ); WRITE_SHORT( PK->m_iDeaths ); WRITE_SHORT( PK->pev->team ); MESSAGE_END(); // let the killer paint another decal as soon as he'd like. PK->m_flNextDecalTime = gpGlobals->time; }}
开发者ID:jpiolho,项目名称:halflife,代码行数:58,
示例5: ClientUserInfoChanged/*========================ClientUserInfoChangedcalled after the player changesuserinfo - gives dll a chance to modify it beforeit gets sent into the rest of the engine.========================*/void ClientUserInfoChanged( edict_t *pEntity, char *infobuffer ){ // Is the client spawned yet? if ( !pEntity->pvPrivateData ) return; // msg everyone if someone changes their name, and it isn't the first time (changing no name to current name) if ( pEntity->v.netname && STRING(pEntity->v.netname)[0] != 0 && !FStrEq( STRING(pEntity->v.netname), g_engfuncs.pfnInfoKeyValue( infobuffer, "name" )) ) { char sName[256]; char *pName = g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ); strncpy( sName, pName, sizeof(sName) - 1 ); sName[ sizeof(sName) - 1 ] = '/0'; // First parse the name and remove any %'s for ( char *pApersand = sName; pApersand != NULL && *pApersand != 0; pApersand++ ) { // Replace it with a space if ( *pApersand == '%' ) *pApersand = ' '; } // Set the name g_engfuncs.pfnSetClientKeyValue( ENTINDEX(pEntity), infobuffer, "name", sName ); char text[256]; sprintf( text, "* %s changed name to %s/n", STRING(pEntity->v.netname), g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ) ); MESSAGE_BEGIN( MSG_ALL, gmsgSayText, NULL ); WRITE_BYTE( ENTINDEX(pEntity) ); WRITE_STRING( text ); MESSAGE_END(); // team match? if ( g_teamplay ) { UTIL_LogPrintf( "/"%s<%i><%s><%s>/" changed name to /"%s/"/n", STRING( pEntity->v.netname ), GETPLAYERUSERID( pEntity ), GETPLAYERAUTHID( pEntity ), g_engfuncs.pfnInfoKeyValue( infobuffer, "model" ), g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ) ); } else { UTIL_LogPrintf( "/"%s<%i><%s><%i>/" changed name to /"%s/"/n", STRING( pEntity->v.netname ), GETPLAYERUSERID( pEntity ), GETPLAYERAUTHID( pEntity ), GETPLAYERUSERID( pEntity ), g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ) ); } } g_pGameRules->ClientUserInfoChanged( GetClassPtr((CBasePlayer *)&pEntity->v), infobuffer );}
开发者ID:zenithght,项目名称:xash3d,代码行数:64,
示例6: VPROF_BUDGETvoid ChasePath::RefreshPath(INextBot *nextbot, CBaseEntity *ent, const IPathCost& cost_func, Vector *vec){ VPROF_BUDGET("ChasePath::RefreshPath", "NextBot"); if (this->IsValid() && nextbot->GetLocomotionInterface()->IsUsingLadder()) { if (nextbot->IsDebugging(DEBUG_PATH)) { DevMsg("%3.2f: bot(#%d) ChasePath::RefreshPath failed. Bot is on a ladder./n", gpGlobals->curtime, ENTINDEX(nextbot->GetEntity())); } this->m_ctTimer2.Start(1.0f); return; } if (ent == nullptr) { if (nextbot->IsDebugging(DEBUG_PATH)) { /* misspelling is in original */ DevMsg("%3.2f: bot(#%d) CasePath::RefreshPath failed. No subject./n", gpGlobals->curtime, ENTINDEX(nextbot->GetEntity())); } } if (this->m_ctTimer1.IsElapsed()) { CBaseEntity *subject = this->m_hChaseSubject(); if (subject == nullptr || subject != ent) { if (nextbot->IsDebugging(DEBUG_PATH)) { DevMsg("%3.2f: bot(#%d) ChasePath::RefreshPath subject changed (from %p to %p)./n", gpGlobals->curtime, ENTINDEX(nextbot->GetEntity()), this->m_hChaseSubject(), ent); } this->Invalidate(); this->m_ctTimer1.Invalidate(); } if (!this->IsValid() || this->m_ctTimer2.IsElapsed()) { if (this->IsValid() && this->m_ctTimer3.HasStarted() && this->m_ctTimer3.IsElapsed()) { this->Invalidate(); } if (!this->IsValid() || this->IsRepathNeeded(nextbot, ent)) { // TODO // eventually: this->Compute(...) } // TODO } // TODO }}
开发者ID:Msalinas2877,项目名称:mvm-reversed,代码行数:54,
示例7: ClientUserInfoChanged/*========================ClientUserInfoChangedcalled after the player changesuserinfo - gives dll a chance to modify it beforeit gets sent into the rest of the engine.========================*/void ClientUserInfoChanged( edict_t *pEntity, char *infobuffer ){ // Is the client spawned yet? if ( !pEntity->pvPrivateData ) return; // msg everyone if someone changes their name, and it isn't the first time (changing no name to current name) if ( pEntity->v.netname && STRING(pEntity->v.netname)[0] != 0 && !FStrEq( STRING(pEntity->v.netname), g_engfuncs.pfnInfoKeyValue( infobuffer, "name" )) ) { char sName[256]; char *pName = g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ); strncpy( sName, pName, sizeof(sName) - 1 ); sName[ sizeof(sName) - 1 ] = '/0'; // First parse the name and remove any %'s for ( char *pApersand = sName; pApersand != NULL && *pApersand != 0; pApersand++ ) { // Replace it with a space if ( *pApersand == '%' ) *pApersand = ' '; } // Set the name g_engfuncs.pfnSetClientKeyValue( ENTINDEX(pEntity), infobuffer, "name", sName ); char text[256]; sprintf( text, "* %s changed name to %s/n", STRING(pEntity->v.netname), g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ) ); MESSAGE_BEGIN( MSG_ALL, gmsgSayText, NULL ); WRITE_BYTE( ENTINDEX(pEntity) ); WRITE_STRING( text ); MESSAGE_END(); UTIL_LogPrintf( "/"%s<%i><%s><%i>/" changed name to /"%s/"/n", STRING( pEntity->v.netname ), GETPLAYERUSERID( pEntity ), GETPLAYERAUTHID( pEntity ), GETPLAYERUSERID( pEntity ), g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ) ); } g_pGameRules->ClientUserInfoChanged( GetClassPtr((CBasePlayer *)&pEntity->v), infobuffer ); // Override model if ( (!strcmp( "models/player/female/female.mdl", g_engfuncs.pfnInfoKeyValue( infobuffer, "model" ) )) )//&& (!strcmp( "models/player/hgrunt/hgrunt.mdl" )) ) SET_MODEL( pEntity, "models/player/male/male.mdl" ); g_engfuncs.pfnSetClientKeyValue( ENTINDEX( pEntity ), infobuffer, "model", "male" ); // Set colors int iHue = GetHueFromRGB( g_iaDiscColors[ pEntity->v.team][0] / 255, g_iaDiscColors[pEntity->v.team][1] / 255, g_iaDiscColors[pEntity->v.team][2] / 255 ); g_engfuncs.pfnSetClientKeyValue( ENTINDEX( pEntity ), infobuffer, "topcolor", UTIL_VarArgs("%d", iHue) ); g_engfuncs.pfnSetClientKeyValue( ENTINDEX( pEntity ), infobuffer, "bottomcolor", UTIL_VarArgs("%d", iHue - 10) );}
开发者ID:devkin021,项目名称:ricochet,代码行数:61,
示例8: StartFramevoid StartFrame(){ edict_t* ent = NULL; while( !FNullEnt( ent = FIND_ENTITY_BY_STRING( ent, "classname", "player" ) ) ) { if( esfmodels[ENTINDEX(ent)-1].bSet ) { ent->v.modelindex = MODEL_INDEX( esfmodels[ENTINDEX(ent)-1].szModel ); ent->v.model = MAKE_STRING( esfmodels[ENTINDEX(ent)-1].szModel ); } } RETURN_META( MRES_HANDLED );}
开发者ID:tutyamxx,项目名称:ESFX-Module,代码行数:13,
示例9: ClientPutInServer/*===========ClientPutInServercalled when the player is first put in the server============*/void ClientPutInServer( edict_t *pEntity ){ CBasePlayer *pPlayer; entvars_t *pev = &pEntity->v; pPlayer = GetClassPtr((CBasePlayer *)pev); pPlayer->SetCustomDecalFrames(-1); // Assume none; // Allocate a CBasePlayer for pev, and call spawn pPlayer->Spawn(); pPlayer->m_bHasDisconnected = FALSE; // Reset interpolation during first frame pPlayer->pev->effects |= EF_NOINTERP; pPlayer->m_pCurrentArena = NULL; pPlayer->m_flKnownItemTime = gpGlobals->time + 0.3; pPlayer->m_iLastGameResult = GAME_DIDNTPLAY; // Add to an Arena (1 maxplayer allows mapmakers to run around their map) if ( InArenaMode() ) { AddClientToArena( pPlayer ); } else { // Put everyone on different teams pPlayer->pev->team = ENTINDEX( pEntity ); pPlayer->pev->iuser4 = pPlayer->pev->team; // Set colors int iHue = GetHueFromRGB( g_iaDiscColors[ pPlayer->pev->team][0] / 255, g_iaDiscColors[pPlayer->pev->team][1] / 255, g_iaDiscColors[pPlayer->pev->team][2] / 255 ); g_engfuncs.pfnSetClientKeyValue( ENTINDEX( pEntity ), g_engfuncs.pfnGetInfoKeyBuffer( pPlayer->edict() ), "topcolor", UTIL_VarArgs("%d", iHue) ); g_engfuncs.pfnSetClientKeyValue( ENTINDEX( pEntity ), g_engfuncs.pfnGetInfoKeyBuffer( pPlayer->edict() ), "bottomcolor", UTIL_VarArgs("%d", iHue - 10) ); } static char sName[128]; strcpy(sName,STRING(pPlayer->pev->netname)); // First parse the name and remove any %'s for ( char *pApersand = sName; pApersand != NULL && *pApersand != 0; pApersand++ ) { // Replace it with a space if ( *pApersand == '%' ) *pApersand = ' '; } // notify other clients of player joining the game UTIL_ClientPrintAll( HUD_PRINTNOTIFY, "#Game_connected", sName[0] != 0 ? sName : "<unconnected>" );}
开发者ID:devkin021,项目名称:ricochet,代码行数:58,
示例10: DrawOverlay_Ownership /* show team ownership of nav areas based on flag position and owner capture * points */ void DrawOverlay_Ownership(long frame) { if (frame % 3 != 0) return; // TODO: default ownership when there's no bomb is wrong // TODO: handle areas that have incursion value of -1.0f float flag_inc = 0.0f; CCaptureFlag *flag = TheFlagTracker.GetFrontFlag(); if (flag != nullptr) { auto area = static_cast<CTFNavArea *>(TheNavMesh->GetNearestNavArea(flag)); if (area != nullptr) { flag_inc = area->GetIncursionDistance(TF_TEAM_RED); } } for (auto area : (CUtlVector<CTFNavArea *>&)TheNavAreas) { float inc = area->GetIncursionDistance(TF_TEAM_RED); if (inc < 0.0f || area->HasTFAttributes(BLUE_SPAWN_ROOM)) { /* gray */ // area->DrawFilled(0x80, 0x80, 0x80, 0x00, 3 * gpGlobals->interval_per_tick, true, 0.0f); area->DrawFilled(0x80, 0x80, 0x80, 0x80, 3 * gpGlobals->interval_per_tick, true, 3.0f); } else { if (flag_inc > 0.0f && inc > flag_inc) { /* blue */ // area->DrawFilled(0x20, 0x20, 0xff, 0x00, 3 * gpGlobals->interval_per_tick, true, 0.0f); area->DrawFilled(0x20, 0x20, 0xff, 0x80, 3 * gpGlobals->interval_per_tick, true, 3.0f); } else { /* red */ // area->DrawFilled(0xff, 0x20, 0x20, 0x00, 3 * gpGlobals->interval_per_tick, true, 0.0f); area->DrawFilled(0xff, 0x20, 0x20, 0x80, 3 * gpGlobals->interval_per_tick, true, 3.0f); } } } #if 0 for (const auto& pair : TheFlagTracker.GetFlagInfos()) { CCaptureFlag *flag = pair.first; const FlagInfo& info = pair.second; NDebugOverlay::EntityText(ENTINDEX(flag), 0, "FLAG", 3 * gpGlobals->interval_per_tick, 0xff, 0xff, 0xff, 0xff); NDebugOverlay::EntityText(ENTINDEX(flag), 2, "Hatch path dist:", 3 * gpGlobals->interval_per_tick, 0xff, 0xff, 0xff, 0xff); NDebugOverlay::EntityText(ENTINDEX(flag), 3, CFmtStrN<256>("%.0f HU", info.hatch_path_dist), 3 * gpGlobals->interval_per_tick, 0xff, 0xff, 0xff, 0xff); }#endif // TODO: draw gates }
开发者ID:sigsegv-mvm,项目名称:sigsegv-mvm,代码行数:52,
示例11: ParaEnablevoid ParaEnable( edict_t *pEntity ){ if (ChuteState[ ENTINDEX( pEntity ) ] != 1) { ClientPrint( VARS(pEntity), HUD_PRINTTALK, "* You don't have a parachute! Go pick one up!/n"); return; } // cant use the parachute when you are on the ground if (pEntity->v.flags & FL_ONGROUND) { ClientPrint( VARS(pEntity), HUD_PRINTTALK, "* Parachutes only work in the air!/n"); return; } // turns on the parachute ChuteState[ ENTINDEX( pEntity ) ] = 2; entvars_t *pev = VARS( pEntity ); // set initial vars pev->gravity = 0.1; pev->speed = 0; pev->velocity = g_vecZero; // give them the parachute model int i = 1; edict_t *frontEnt; entvars_t *pModelPev; int mdlfound = 0; for (i; i < 1025; i++) { frontEnt = INDEXENT ( i ); if (frontEnt) { pModelPev = VARS(frontEnt); if (FStrEq((char *)STRING(pModelPev->netname), "para")) { // Touch this ent. (*other_gFunctionTable.pfnTouch)(frontEnt, pEntity); } } } // The parachute has been given to em // Now, we just wait for em to hit the ground then we take the chute again}
开发者ID:Landokane,项目名称:avc,代码行数:48,
示例12: FakespawnPlayervoid FakespawnPlayer(edict_t *pEdict){ int team = GetPlayerTeam(pEdict); if (team != TEAM_T && team != TEAM_CT) { return; } int index = ENTINDEX(pEdict); player_states *pPlayer = GET_PLAYER(index); if (pPlayer->spawning) return; pPlayer->spawning = true; if (g_PreSpawn > 0 && MF_ExecuteForward(g_PreSpawn, (cell)index, (cell)1) > 0) { pPlayer->spawning = false; return; } SpawnHandler(index, true); pPlayer->spawning = false;}
开发者ID:Arkshine,项目名称:CSDM,代码行数:27,
示例13: DispatchThinkvoid DispatchThink( edict_t *pent ){ CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pent); if (pEntity) { if ( FBitSet( pEntity->pev->flags, FL_DORMANT ) ) ALERT( at_error, "Dormant entity %s is thinking!!/n", STRING(pEntity->pev->classname) ); //LLAPb begin if (!pEntity->scripted || !ScriptsActive()) { pEntity->Think(); return; } GenericFunction *pfn = pEntity->my_script->funcs->GetFn(M_THINK); if (!pfn) { pEntity->Think(); return; } if (NoErrors()) { pfn->PreExecute(); int i = ENTINDEX(pent); double f = gpGlobals->frametime; if (pfn->argc > 0) pfn->PassArg(0, Type(&i, _INT)); if (pfn->argc > 1) pfn->PassArg(1, Type(&f, DOUBLE)); switch (pfn->specification) { case SPECIFICATION_BEFORE: pfn->Execute(); pEntity->Think(); break; case SPECIFICATION_INSTEAD: pfn->Execute(); break; default: pEntity->Think(); pfn->Execute(); break; } } else //LLAPb end pEntity->Think(); }}
开发者ID:mittorn,项目名称:hlwe_src,代码行数:60,
示例14: GetTeamint GetTeam (edict_t *ent){ // SyPB Pro P.1 // new get team off set, return player true team int client = ENTINDEX (ent) - 1, player_team; // SyPB Pro P.5 if (!IsValidPlayer (ent)) { player_team = 0; edict_t *entity = null; ITERATE_ARRAY (g_entityName, j) { while (!FNullEnt (entity = FIND_ENTITY_BY_CLASSNAME (entity, g_entityName[j]))) { if (ent == entity) { player_team = g_entityTeam[j]; break; } } } player_team--; if (GetGameMod () == 99 && g_DelayTimer > engine->GetTime ()) player_team = 2; return player_team; }
开发者ID:n1992d,项目名称:SyPB,代码行数:29,
示例15: CreateFakeClientvoid CServer::BotCreate(struct bot_profile_s *profile){ edict_t *BotEnt = CreateFakeClient(profile->name); if (!FNullEnt(BotEnt)) { char *infobuffer = GET_INFOBUFFER(BotEnt); int clientIndex = ENTINDEX(BotEnt); CBaseBot *pBot = NewBotInstance(); pBot->pev = &BotEnt->v; pBot->m_pProfile = profile; if (!IsTeamplay()) { SET_CLIENT_KEY_VALUE(clientIndex, infobuffer, "model", profile->skin); // use random colors SET_CLIENT_KEY_VALUE(clientIndex, infobuffer, "topcolor", va("%d", RandomLong(0, 255))); SET_CLIENT_KEY_VALUE(clientIndex, infobuffer, "bottomcolor", va("%d", RandomLong(0, 255))); } AddBot(pBot); pBot->m_pProfile->is_used = true; }}
开发者ID:CecilHarvey,项目名称:gina,代码行数:25,
示例16: UTIL_PlayerDecalTrace/*==============UTIL_PlayerDecalTraceA player is trying to apply his custom decal for the spray can.Tell connected clients to display it, or use the default spray can decalif the custom can't be loaded.==============*/void UTIL_PlayerDecalTrace( TraceResult *pTrace, int playernum, int decalNumber, const bool bIsCustom ){ int index; if (!bIsCustom) { if ( decalNumber < 0 ) return; index = gDecals[ decalNumber ].index; if ( index < 0 ) return; } else index = decalNumber; if (pTrace->flFraction == 1.0) return; MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_PLAYERDECAL ); WRITE_BYTE ( playernum ); WRITE_COORD( pTrace->vecEndPos.x ); WRITE_COORD( pTrace->vecEndPos.y ); WRITE_COORD( pTrace->vecEndPos.z ); WRITE_SHORT( (short)ENTINDEX(pTrace->pHit) ); WRITE_BYTE( index ); MESSAGE_END();}
开发者ID:CryoKeen,项目名称:HLEnhanced,代码行数:38,
示例17: find_ent_by_ownerstatic cell AMX_NATIVE_CALL find_ent_by_owner(AMX *amx, cell *params) // native find_ent_by_owner(start_from_ent, classname[], owner_index); = 3 params{ int iEnt = params[1]; int oEnt = params[3]; // Check index to start searching at, 0 must be possible for iEnt. CHECK_ENTITY_SIMPLE(oEnt); edict_t *pEnt = INDEXENT2(iEnt); edict_t *entOwner = INDEXENT2(oEnt); //optional fourth parameter is for jghg2 compatibility const char* sCategory = NULL; switch(params[4]){ case 1: sCategory = "target"; break; case 2: sCategory = "targetname"; break; default: sCategory = "classname"; } // No need to check if there is a real ent where entOwner points at since we don't access it anyway. int len; char* classname = MF_GetAmxString(amx, params[2], 0, &len); while (true) { pEnt = FIND_ENTITY_BY_STRING(pEnt, sCategory, classname); if (FNullEnt(pEnt)) // break and return 0 if bad break; else if (pEnt->v.owner == entOwner) // compare pointers return ENTINDEX(pEnt); } // If it comes here, the while loop ended because an ent failed (FNullEnt() == true) return 0;}
开发者ID:Chuvi-w,项目名称:amxmodx,代码行数:34,
示例18: executeForwardsvoid CPlayer::Disconnect(){ ingame = false; initialized = false; authorized = false; teamIdsInitialized = false; if (newmenu != -1) { Menu *pMenu = g_NewMenus[newmenu]; if (pMenu) { //prevent recursion newmenu = -1; menu = 0; executeForwards(pMenu->func, static_cast<cell>(ENTINDEX(pEdict)), static_cast<cell>(pMenu->thisId), static_cast<cell>(MENU_EXIT)); } } List<ClientCvarQuery_Info *>::iterator iter, end=queries.end(); for (iter=queries.begin(); iter!=end; iter++) { unregisterSPForward((*iter)->resultFwd); delete [] (*iter)->params; delete (*iter); } queries.clear(); menu = 0; newmenu = -1;}
开发者ID:9iky6,项目名称:amxmodx,代码行数:34,
示例19: ClientConnectint ClientConnect(edict_t *pPlayer, const char *pszName, const char *pszAddress, char szRejectReason[128]){ // Reset stuff: FUNUTIL_ResetPlayer(ENTINDEX(pPlayer)); RETURN_META_VALUE(MRES_IGNORED, 0);}
开发者ID:9iky6,项目名称:amxmodx,代码行数:7,
示例20: ParaGiveChutevoid ParaGiveChute( edict_t *pEntity ){ // Gives this person a parachute ChuteState[ ENTINDEX( pEntity ) ] = 1;}
开发者ID:Landokane,项目名称:avc,代码行数:7,
示例21: SENTENCEG_PlayRndSzint SENTENCEG_PlayRndSz(edict_t *entity, const char *szgroupname, float volume, soundlevel_t soundlevel, int flags, int pitch){ char name[64]; int ipick; int isentenceg; if (!fSentencesInit) return -1; name[0] = 0; isentenceg = engine->SentenceGroupIndexFromName(szgroupname); if (isentenceg < 0) { Warning( "No such sentence group %s/n", szgroupname ); return -1; } ipick = engine->SentenceGroupPick(isentenceg, name, sizeof( name )); if (ipick >= 0 && name[0]) { int sentenceIndex = SENTENCEG_Lookup( name ); CPASAttenuationFilter filter( GetContainingEntity( entity ), soundlevel ); CBaseEntity::EmitSentenceByIndex( filter, ENTINDEX(entity), CHAN_VOICE, sentenceIndex, volume, soundlevel, flags, pitch ); return sentenceIndex; } return -1;}
开发者ID:Au-heppa,项目名称:swarm-sdk,代码行数:30,
示例22: PREPARE_VECTORconst char *TraceTexture(edict_t *pTextureEntity, const float *v1, const float *v2){ PREPARE_VECTOR(v1); PREPARE_VECTOR(v2); FM_ENG_HANDLE(FM_TraceTexture, (Engine[FM_TraceTexture].at(i), (cell)ENTINDEX(pTextureEntity), p_v1, p_v2)); RETURN_META_VALUE(mswi(lastFmRes), mlStringResult);}
开发者ID:KamilBrown,项目名称:amxmodx,代码行数:7,
示例23: DETOUR_DECL_MEMBER DETOUR_DECL_MEMBER(void, CTFTankBoss_TankBossThink) { static CountdownTimer ctNodes; if (ctNodes.IsElapsed()) { ctNodes.Start(0.5f); ForEachEntityByRTTI<CPathTrack>([](CPathTrack *node){ NDebugOverlay::Box(node->GetAbsOrigin(), Vector(-10.0f, -10.0f, -10.0f), Vector(10.0f, 10.0f, 10.0f), 0xff, 0xff, 0xff, 0x80, 0.5f); NDebugOverlay::EntityTextAtPosition(node->GetAbsOrigin(), 0, CFmtStrN<16>("#%d", i), 0.5f, 0xff, 0xff, 0xff, 0xff); CPathTrack *next = node->GetNext(); if (next != nullptr) { NDebugOverlay::HorzArrow(node->GetAbsOrigin(), next->GetAbsOrigin(), 3.0f, 0xff, 0xff, 0xff, 0xff, true, 0.5f); } }); } auto tank = reinterpret_cast<CTFTankBoss *>(this); NDebugOverlay::EntityText(ENTINDEX(tank), 0, CFmtStrN<256>("%.1f%%", GetTankProgress(tank) * 100.0f), gpGlobals->interval_per_tick, 0xff, 0xff, 0xff, 0xff); // NDebugOverlay::EntityText(ENTINDEX(tank), 0, CFmtStrN<256>("m_hCurrentNode: #%d", ENTINDEX(*m_hCurrentNode)), // gpGlobals->interval_per_tick, 0xff, 0xff, 0xff, 0xff); // NDebugOverlay::EntityText(ENTINDEX(tank), 1, CFmtStrN<256>("m_iCurrentNode: %d", *m_iCurrentNode), // gpGlobals->interval_per_tick, 0xff, 0xff, 0xff, 0xff); // NDebugOverlay::EntityText(ENTINDEX(tank), 2, CFmtStrN<256>("m_flTotalDistance: %.0f", *m_flTotalDistance), // gpGlobals->interval_per_tick, 0xff, 0xff, 0xff, 0xff); // NDebugOverlay::EntityText(ENTINDEX(tank), 3, CFmtStrN<256>("m_NodeDists[i]: %.0f", (*m_NodeDists)[*m_iCurrentNode]), // gpGlobals->interval_per_tick, 0xff, 0xff, 0xff, 0xff); DETOUR_MEMBER_CALL(CTFTankBoss_TankBossThink)(); }
开发者ID:sigsegv-mvm,项目名称:sigsegv-mvm,代码行数:35,
示例24: ENTINDEXbool CSetRuntimeAttributeValue::callme(edict_t *pEnt, CAttributeList *list, CEconItemAttributeDefinition *attrib,int value){ int bret = 0; void *thefunc = m_func; int iEntityIndex = ENTINDEX(pEnt); if ( list && attrib && thefunc ) { //*(DWORD*)&CAttributeListSetValue = (DWORD)SetRuntimeAttributeValue; //(*list.*CAttributeListSetValue)(attrib,value); //void *preveax1 = 0x0; #ifdef _WIN32 __asm { mov ecx, list; push attrib; push value; call thefunc; mov bret, eax; };#else FUNC_SET_ATTRIB_VALUE func = (FUNC_SET_ATTRIB_VALUE)thefunc; bret = func(list,attrib,value);#endif }
开发者ID:knobik,项目名称:rcbot2,代码行数:28,
示例25: SENTENCEG_PlaySequentialSzint SENTENCEG_PlaySequentialSz(edict_t *entity, const char *szgroupname, float volume, soundlevel_t soundlevel, int flags, int pitch, int ipick, int freset){ char name[64]; int ipicknext; int isentenceg; if (!fSentencesInit) return -1; name[0] = 0; isentenceg = engine->SentenceGroupIndexFromName(szgroupname); if (isentenceg < 0) return -1; ipicknext = engine->SentenceGroupPickSequential(isentenceg, name, sizeof( name ), ipick, freset); if (ipicknext >= 0 && name[0]) { int sentenceIndex = SENTENCEG_Lookup( name ); CPASAttenuationFilter filter( GetContainingEntity( entity ), soundlevel ); CBaseEntity::EmitSentenceByIndex( filter, ENTINDEX(entity), CHAN_VOICE, sentenceIndex, volume, soundlevel, flags, pitch ); return sentenceIndex; } return -1;}
开发者ID:Au-heppa,项目名称:swarm-sdk,代码行数:27,
示例26: find_ent_by_modelstatic cell AMX_NATIVE_CALL find_ent_by_model(AMX *amx, cell *params) { int iStart = params[1]; int iLength, iLength2; char *szClass = MF_GetAmxString(amx, params[2], 0, &iLength); char *szModel = MF_GetAmxString(amx, params[3], 1, &iLength2); edict_t *pStart; if (iStart == -1) { pStart = NULL; } else { if (!is_ent_valid(iStart)) pStart = NULL; else pStart = INDEXENT2(iStart); } edict_t *pEdict = FIND_ENTITY_BY_STRING(pStart, "classname", szClass); const char *check; while (pEdict && !FNullEnt(pEdict)) { check = STRING(pEdict->v.model); if (!check || strcmp(check, szModel)) pEdict = FIND_ENTITY_BY_STRING(pEdict, "classname", szClass); else return ENTINDEX(pEdict); } return 0;}
开发者ID:Chuvi-w,项目名称:amxmodx,代码行数:33,
示例27: ClientDisconnect/*===========ClientDisconnectcalled when a player disconnects from a serverGLOBALS ASSUMED SET: g_fGameOver============*/void ClientDisconnect( edict_t *pEntity ){ if (g_fGameOver) return; char text[256]; sprintf( text, "- %s has left the game/n", STRING(pEntity->v.netname) ); MESSAGE_BEGIN( MSG_ALL, gmsgSayText, NULL ); WRITE_BYTE( ENTINDEX(pEntity) ); WRITE_STRING( text ); MESSAGE_END(); CSound *pSound; pSound = CSoundEnt::SoundPointerForIndex( CSoundEnt::ClientSoundIndex( pEntity ) ); { // since this client isn't around to think anymore, reset their sound. if ( pSound ) { pSound->Reset(); } }// since the edict doesn't get deleted, fix it so it doesn't interfere. pEntity->v.takedamage = DAMAGE_NO;// don't attract autoaim pEntity->v.solid = SOLID_NOT;// nonsolid UTIL_SetOrigin ( &pEntity->v, pEntity->v.origin ); g_pGameRules->ClientDisconnected( pEntity );}
开发者ID:zenithght,项目名称:xash3d,代码行数:38,
示例28: UTIL_EmitSoundSuitvoid UTIL_EmitSoundSuit(edict_t *entity, const char *sample){ float fvol; int pitch = PITCH_NORM; fvol = suitvolume.GetFloat(); if (random->RandomInt(0,1)) pitch = random->RandomInt(0,6) + 98; // If friendlies are talking, reduce the volume of the suit if ( !g_AIFriendliesTalkSemaphore.IsAvailable( GetContainingEntity( entity ) ) ) { fvol *= 0.3; } if (fvol > 0.05) { CPASAttenuationFilter filter( GetContainingEntity( entity ) ); filter.MakeReliable(); EmitSound_t ep; ep.m_nChannel = CHAN_STATIC; ep.m_pSoundName = sample; ep.m_flVolume = fvol; ep.m_SoundLevel = SNDLVL_NORM; ep.m_nPitch = pitch; CBaseEntity::EmitSound( filter, ENTINDEX(entity), ep ); }}
开发者ID:Au-heppa,项目名称:swarm-sdk,代码行数:30,
示例29: CopyToBodyQue//// make a body que entry for the given ent so the ent can be respawned elsewhere//// GLOBALS ASSUMED SET: g_eoBodyQueueHead//void CopyToBodyQue(entvars_t *pev) { // DISCWAR: No corpses return; if (pev->effects & EF_NODRAW) return; entvars_t *pevHead = VARS(g_pBodyQueueHead); pevHead->angles = pev->angles; pevHead->model = pev->model; pevHead->modelindex = pev->modelindex; pevHead->frame = pev->frame; pevHead->colormap = pev->colormap; pevHead->movetype = MOVETYPE_TOSS; pevHead->velocity = pev->velocity; pevHead->flags = 0; pevHead->deadflag = pev->deadflag; pevHead->renderfx = kRenderFxDeadPlayer; pevHead->renderamt = ENTINDEX( ENT( pev ) ); pevHead->effects = pev->effects | EF_NOINTERP; //pevHead->goalstarttime = pev->goalstarttime; //pevHead->goalframe = pev->goalframe; //pevHead->goalendtime = pev->goalendtime ; pevHead->sequence = pev->sequence; pevHead->animtime = pev->animtime; UTIL_SetOrigin(pevHead, pev->origin); UTIL_SetSize(pevHead, pev->mins, pev->maxs); g_pBodyQueueHead = pevHead->owner;}
开发者ID:ET-NiK,项目名称:amxxgroup,代码行数:39,
示例30: ENTINDEXvoid CBotVisibles::SetVisible(edict_t *pEdict, bool bVisible){ static int iIndex; static int iByte; static int iBit; static int iFlag; iIndex = ENTINDEX(pEdict) - 1; iByte = iIndex / 8; iBit = iIndex % 8; iFlag = 1 << iBit; if (bVisible) { // visible now if (((*(m_iIndicesVisible + iByte) & iFlag) != iFlag)) m_VisibleList.Push(pEdict); *(m_iIndicesVisible + iByte) |= iFlag; } else { // not visible anymore if (pEdict && ((*(m_iIndicesVisible + iByte) & iFlag) == iFlag)) m_VisibleList.Remove(pEdict); *(m_iIndicesVisible + iByte) &= ~iFlag; }}
开发者ID:Deathreus,项目名称:AFKBot,代码行数:29,
注:本文中的ENTINDEX函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ ENTNUM函数代码示例 C++ ENTER_STMT_CS函数代码示例 |