CW_DLL_EXPORT void OnPVPKill(Player* killer, Player* killed) { Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->pOnPVPKill) return; tmpscript->pOnPVPKill(killer,killed); }
CW_DLL_EXPORT bool OnSpellCast (Unit *pUnitTarget, Item *pItemTarget, GameObject *pGoTarget, uint32 i, SpellEntry const *spell) { Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->pOnSpellCast) return true; return tmpscript->pOnSpellCast(pUnitTarget,pItemTarget,pGoTarget,i,spell); }
void StepController::Activate(StepType stepType, InterpreterHaltState* haltState) { this->stepType = stepType; this->byteOffset = haltState->GetCurrentOffset(); this->pActivatedContext = haltState->framePointers->Peek()->GetScriptContext(); Assert(this->pActivatedContext); Js::FunctionBody* functionBody = haltState->GetFunction(); this->body.Root(functionBody, this->pActivatedContext->GetRecycler()); this->statementMap = body->GetMatchingStatementMapFromByteCode(byteOffset, false); this->frameCountWhenSet = haltState->framePointers->Count(); if (stepType != STEP_DOCUMENT) { this->frameAddrWhenSet = (size_t)haltState->framePointers->Peek(0)->GetStackAddress(); } else { // for doc mode, do not bail out automatically on frame changes this->frameAddrWhenSet = (size_t)-1; } this->scriptIdWhenSet = GetScriptId(functionBody); if (this->returnedValueList == nullptr) { this->returnedValueList = JsUtil::List<ReturnedValue*>::New(this->pActivatedContext->GetRecycler()); this->pActivatedContext->GetThreadContext()->SetReturnedValueList(this->returnedValueList); } }
CW_DLL_EXPORT void OnLogout(Player* pPlayer) { Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->pOnLogout) return; tmpscript->pOnLogout(pPlayer); }
CW_DLL_EXPORT bool OnGoClick (Player *pPlayer, GameObject *pGameObject) { Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->pOnGoClick) return true; return tmpscript->pOnGoClick(pPlayer,pGameObject); }
CW_DLL_EXPORT void OnCreatureKill (Player *pPlayer, Creature *pCreature) { Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->pOnCreatureKill) return; tmpscript->pOnCreatureKill(pPlayer,pCreature); }
CW_DLL_EXPORT void OnAreaChange(Player *pPlayer, AreaTableEntry const *pArea) { Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->pOnAreaChange) return; tmpscript->pOnAreaChange(pPlayer, pArea); }
Cw_DLL_EXPORT bool OnItemOpen (Player *pPlayer, Item *pItem) { Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->pOnItemOpen) return true; return tmpscript->pOnItemOpen(pPlayer,pItem); }
CW_DLL_EXPORT void OnServerShutdown() { Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->pOnServerShutdown) return; tmpscript->pOnServerShutdown(); }
CW_DLL_EXPORT bool OnPlayerChat(Player *pPlayer, const char *text) { Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->pOnPlayerChat) return true; return tmpscript->pOnPlayerChat(pPlayer,text); }
CW_DLL_EXPORT uint32 OnGetMoney(Player *pPlayer, int32 amount) { Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->pOnGetMoney) return amount; return tmpscript->pOnGetMoney(pPlayer,amount); }
void InitializeAI() { if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(FoSScriptName)) me->IsAIEnabled = false; else if (!me->isDead()) Reset(); }
void Script::RegisterSelf() { int id = GetScriptId(Name.c_str()); if(id) { m_scripts[id] = this; ++num_sc_scripts; } }
void Script::RegisterSelf() { // try to find scripts which try to use another script's allocated memory // that means didn't allocate memory for script for (uint16 i = 0; i < MAX_SCRIPTS; ++i) { // somebody forgot to allocate memory for a script by a method like this: newscript = new Script if (m_scripts[i] == this) { sLog->outError("ScriptName: '%s' - Forgot to allocate memory, so this script and/or the script before that can't work.", Name.c_str()); // don't register it // and don't delete it because its memory is used for another script return; } } int id = GetScriptId(Name.c_str()); if (id) { // try to find the script in assigned scripts bool IsExist = false; for (uint16 i = 0; i < MAX_SCRIPTS; ++i) { if (m_scripts[i]) { // if the assigned script's name and the new script's name is the same if (m_scripts[i]->Name == Name) { IsExist = true; break; } } } // if the script doesn't assigned -> assign it! if (!IsExist) { m_scripts[id] = this; ++num_sc_scripts; } // if the script is already assigned -> delete it! else { // TODO: write a better error message than this one :) sLog->outError("ScriptName: '%s' already assigned with the same ScriptName, so the script can't work.", Name.c_str()); delete this; } } else { if (Name.find("example") == std::string::npos) sLog->outErrorDb("TSCR: RegisterSelf, but script named %s does not have ScriptName assigned in database.", (this)->Name.c_str()); delete this; } }
void Script::RegisterSelf() { int id = GetScriptId(Name.c_str()); if (id != 0) { m_scripts[id] = this; ++num_sc_scripts; } else { debug_log("SD2: RegisterSelf, but script named %s does not have ScriptName assigned in database.",(this)->Name.c_str()); delete this; } }
void Script::RegisterSelf() { int id = GetScriptId(Name.c_str()); if(id) { m_scripts[id] = this; ++num_sc_scripts; } else if(Name.find("example") == std::string::npos) { error_db_log("CRASH ALERT! RibonScript: RegisterSelf, but script named %s does not have ScriptName assigned in database.",(this)->Name.c_str()); delete this; } }
void Script::RegisterSelf(bool bReportError) { if (uint32 id = GetScriptId(Name)) { m_scripts->at(id) = this; ++num_sc_scripts; } else { if (bReportError) script_error_log("Script registering but ScriptName %s is not assigned in database. Script will not be used.", Name); m_scriptStorage->insert(std::make_pair(Name, this)); } }
void Script::RegisterSelf(bool bReportError) { if (uint32 id = GetScriptId(Name.c_str())) { m_scripts[id] = this; ++num_sc_scripts; } else { if (bReportError) script_error_log("Script registering but ScriptName %s is not assigned in database. Script will not be used.", Name.c_str()); delete this; } }
void Script::RegisterSelf(bool bReportError) { if (uint32 id = GetScriptId(Name.c_str())) { m_scripts[id] = this; ++num_sc_scripts; } else { if (bReportError) error_log("SD2: Script registering but ScriptName %s is not assigned in database. Script will not be used.", Name.c_str()); m_scriptStorage.insert(std::make_pair(Name.c_str(), this)); } }
bool StepController::IsStepComplete_AllowingFalsePositives(InterpreterStackFrame * stackFrame) { Assert(stackFrame); if (stepType == STEP_IN) { return true; } else if (stepType == STEP_DOCUMENT) { Assert(stackFrame->GetFunctionBody()); return GetScriptId(stackFrame->GetFunctionBody()) != this->scriptIdWhenSet; } // A STEP_OUT or a STEP_OVER has not completed if we are currently deeper on the callstack. return this->frameAddrWhenSet <= stackFrame->GetStackAddress(); }
void Script::RegisterSelf(bool bReportError) { int id = GetScriptId(Name.c_str()); if (id != 0) { m_scripts[id] = this; ++num_sc_scripts; } else { if (bReportError) error_log("SD2: Script registering but ScriptName %s is not assigned in database. Script will not be used.", (this)->Name.c_str()); delete this; } }
void Script::RegisterSelf(bool bReportError) { int id = GetScriptId(Name.c_str()); if (id != 0) { m_scripts[id] = this; ++num_sc_scripts; } else { if (bReportError) error_db_log("脚本库: Script registering but ScriptName %s is not assigned in database.", (this)->Name.c_str()); m_scriptStorage.insert(std::make_pair(Name.c_str(), this)); } }
void ScriptMgr::LoadAreaTriggerScripts() { m_AreaTriggerScripts.clear(); // need for reload case QueryResult *result = WorldDatabase.Query("SELECT entry, ScriptName FROM scripted_areatrigger"); uint32 count = 0; if (!result) { barGoLink bar(1); bar.step(); sLog.outString(); sLog.outString(">> Loaded %u scripted areatrigger", count); return; } barGoLink bar((int)result->GetRowCount()); do { ++count; bar.step(); Field *fields = result->Fetch(); uint32 triggerId = fields[0].GetUInt32(); const char *scriptName = fields[1].GetString(); if (!sAreaTriggerStore.LookupEntry(triggerId)) { sLog.outErrorDb("Table `scripted_areatrigger` has area trigger (ID: %u) not listed in `AreaTrigger.dbc`.", triggerId); continue; } m_AreaTriggerScripts[triggerId] = GetScriptId(scriptName); } while(result->NextRow()); delete result; sLog.outString(); sLog.outString(">> Loaded %u areatrigger scripts", count); }
void ScriptMgr::OnLogout(Player* player) { Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->pOnLogout) return; tmpscript->pOnLogout(player); }
void ScriptMgr::OnGroupDisbanded(Group* pGroup, Player* pLeader) { Script* tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->OnGroupDisbanded) return; tmpscript->OnGroupDisbanded(pGroup, pLeader); }
void ScriptMgr::OnGroupLeaderChanged(Group* pGroup, Player* pOldLeader, Player* pNewLeader) { Script* tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->OnGroupLeaderChanged) return; tmpscript->OnGroupLeaderChanged(pGroup, pOldLeader, pNewLeader); }
void ScriptMgr::OnGroupPlayerRemoved(Group* pGroup, Player* pPlayer, uint8 method, uint64 kicker, const char* reason) { Script* tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->OnGroupPlayerRemoved) return; tmpscript->OnGroupPlayerRemoved(pGroup, pPlayer, method, kicker, reason); }
void ScriptMgr::OnPlayerTalentsReset(Player* player, bool no_cost) { Script* tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->OnTalentsReset) return; tmpscript->OnTalentsReset(player, no_cost); }
void ScriptMgr::OnPlayerLevelChanged(Player* player, uint8 newLevel) { Script* tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->OnLevelChanged) return; tmpscript->OnLevelChanged(player, newLevel); }
void ScriptMgr::OnPlayerKilledByCreature(Creature* killer, Player* killed) { Script* tmpscript = m_scripts[GetScriptId("scripted_on_events")]; if (!tmpscript || !tmpscript->OnPlayerKilledByCreature) return; tmpscript->OnPlayerKilledByCreature(killer, killed); }