void CMultiAlias :: KeyValue( KeyValueData *pkvd ) { if (FStrEq(pkvd->szKeyName, "m_iMode")) { m_iMode = atoi( pkvd->szValue ); pkvd->fHandled = TRUE; } // this assumes that additional fields are targetnames and their values are probability values. else if ( m_cTargets < MAX_MULTI_TARGETS ) { char tmp[128]; UTIL_StripToken( pkvd->szKeyName, tmp ); m_iszTargets [ m_cTargets ] = ALLOC_STRING( tmp ); m_iValues [ m_cTargets ] = atoi( pkvd->szValue ); m_iTotalValue += m_iValues [ m_cTargets ]; m_cTargets++; pkvd->fHandled = TRUE; } else { ALERT(at_error,"Too many targets for multi_alias %s (limit is %d)\n",STRING(pev->targetname), MAX_MULTI_TARGETS); } }
void CInfoAlias :: KeyValue( KeyValueData *pkvd ) //AJH { if (FStrEq(pkvd->szKeyName, "mode")) { m_iMode = atoi( pkvd->szValue ); pkvd->fHandled = TRUE; } else if (FStrEq(pkvd->szKeyName, "targetname")) { pev->targetname = ALLOC_STRING( pkvd->szValue ); pkvd->fHandled = TRUE; } else if (FStrEq(pkvd->szKeyName, "target")) { pev->target = ALLOC_STRING( pkvd->szValue ); pkvd->fHandled = TRUE; }else if (FStrEq(pkvd->szKeyName, "netname")) { pev->netname = ALLOC_STRING( pkvd->szValue ); pkvd->fHandled = TRUE; } else // add this field to the target list { // this assumes that additional fields are targetnames, and there values are the order. if ( m_cTargets < MAX_ALIAS_TARGETS ) { char tmp[128]; UTIL_StripToken( pkvd->szKeyName, tmp ); int iValue = atoi(pkvd->szValue); if(iValue<=MAX_ALIAS_TARGETS&&iValue>0){ if (m_iTargetName[iValue-1]==NULL){ m_iTargetName [ iValue-1 ] = ALLOC_STRING( tmp ); m_cTargets++; }else{ ALERT(at_debug,"ERROR: INFO_ALIAS target \"%s\" has a value \"%i\" that has already been used by target \"%s\"\n",ALLOC_STRING(tmp),iValue,STRING(m_iTargetName[iValue-1])); } }else{ ALERT(at_debug,"ERROR: INFO_ALIAS target \"%s\" has an illegal value \"%i\".\nIt must be within the range 1-%i.\n",ALLOC_STRING(tmp),iValue,MAX_ALIAS_TARGETS); } pkvd->fHandled = TRUE; } //We can't actually have this or we will get array out of bounds exceptions when +using the alias at MAX_ALIAS_TARGETS /*else // keep a count of how many targets, for the error message { m_cTargets++; }*/ } }
bool CGamePlayerEquip::KeyValue( const char *szKeyName, const char *szValue ) { if ( !BaseClass::KeyValue( szKeyName, szValue ) ) { for ( int i = 0; i < MAX_EQUIP; i++ ) { if ( !m_weaponNames[i] ) { char tmp[128]; UTIL_StripToken( szKeyName, tmp ); m_weaponNames[i] = AllocPooledString(tmp); m_weaponCount[i] = atoi(szValue); m_weaponCount[i] = MAX(1,m_weaponCount[i]); return true; } } } return false; }
void CInfoGroup :: KeyValue( KeyValueData *pkvd ) { if (FStrEq(pkvd->szKeyName, "defaultmember")) { m_iszDefaultMember = ALLOC_STRING(pkvd->szValue); pkvd->fHandled = TRUE; } // this assumes that additional fields are targetnames and their values are delay values. else if ( m_cMembers < MAX_MULTI_TARGETS ) { char tmp[128]; UTIL_StripToken( pkvd->szKeyName, tmp ); m_iszMemberName [ m_cMembers ] = ALLOC_STRING( tmp ); m_iszMemberValue [ m_cMembers ] = ALLOC_STRING (pkvd->szValue); m_cMembers++; pkvd->fHandled = TRUE; } else { ALERT(at_error,"Too many members for info_group %s (limit is %d)\n",STRING(pev->targetname),MAX_MULTI_TARGETS); } }
void CGamePlayerEquip::KeyValue(KeyValueData *pkvd) { CRulePointEntity::KeyValue(pkvd); if (!pkvd->fHandled) { for (int i = 0; i < MAX_EQUIP; i++) { if (!m_weaponNames[i]) { char tmp[128]; UTIL_StripToken(pkvd->szKeyName, tmp); m_weaponNames[i] = ALLOC_STRING(tmp); m_weaponCount[i] = atoi(pkvd->szValue); m_weaponCount[i] = max(1, m_weaponCount[i]); pkvd->fHandled = TRUE; break; } } } }