void CInstructor::CallOutput(const tstring& sOutput) { if (!GetCurrentLesson()) return; for (size_t i = 0; i < GetCurrentLesson()->m_aOutputs.size(); i++) { CLessonOutput* pOutput = &GetCurrentLesson()->m_aOutputs[i]; if (pOutput->m_sOutput == sOutput) { for (size_t i = 0; i < GameServer()->GetMaxEntities(); i++) { CBaseEntity* pEntity = CBaseEntity::GetEntity(i); if (!pEntity) continue; if (pEntity->IsDeleted()) continue; if (pOutput->m_sTarget.length() == 0) continue; if (pOutput->m_sTarget.length() == 0) continue; if (pOutput->m_sTarget[0] == '*') { if (tstring(pEntity->GetClassName()) != pOutput->m_sTarget.c_str()+1) continue; } else { if (pEntity->GetName() != pOutput->m_sTarget) continue; } pEntity->CallInput(pOutput->m_sInput, convertstring<char, tchar>(pOutput->m_sArgs)); } } } }
void FireInput(class CCommand* pCommand, tvector<tstring>& asTokens, const tstring& sCommand) { if (!CVar::GetCVarBool("cheats")) return; if (asTokens.size() < 3) { TMsg("Format: ent_input entityname input [optional args]\n"); return; } tvector<CBaseEntity*> apEntities; CBaseEntity::FindEntitiesByName(asTokens[1], apEntities); if (!apEntities.size()) { if (CVar::GetCVarBool("debug_entity_outputs")) TMsg("Console -> none\n"); else TError("No entities found that match name \"" + asTokens[1] + "\".\n"); return; } tstring sArgs; for (size_t i = 3; i < asTokens.size(); i++) sArgs += asTokens[i] + " "; for (size_t i = 0; i < apEntities.size(); i++) { CBaseEntity* pTargetEntity = apEntities[i]; if (CVar::GetCVarBool("debug_entity_outputs")) TMsg("Console -> " + tstring(pTargetEntity->GetClassName()) + "(\"" + pTargetEntity->GetName() + "\")." + asTokens[2] + "(\"" + sArgs + "\")\n"); pTargetEntity->CallInput(asTokens[2], sArgs); } }