Show
Ignore:
Timestamp:
11/22/08 00:36:22 (17 years ago)
Author:
yumileroy
Message:

Merged commit 269 (5f0e38da128a).

Original author: gvcoman
Date: 2008-11-21 14:34:05-05:00

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/bindings/scripts/ScriptMgr.cpp

    r272 r279  
    1818 
    1919//*** Global data *** 
    20 int nrscripts; 
     20int num_db_scripts; 
     21int num_sc_scripts; 
    2122Script *m_scripts[MAX_SCRIPTS]; 
    2223 
     
    4748// Text Maps 
    4849UNORDERED_MAP<int32, StringTextData> TextMap; 
    49  
    5050 
    5151//*** End Global data *** 
     
    11811181TRINITY_DLL_EXPORT 
    11821182void ScriptsFree() 
    1183 {    
     1183{ 
    11841184    // Free Spell Summary 
    11851185    delete []SpellSummary; 
    11861186 
    11871187    // Free resources before library unload 
    1188     for(int i=0;i<nrscripts;i++) 
     1188    for(int i=0;i<num_db_scripts;i++) 
    11891189        delete m_scripts[i]; 
    11901190 
    1191     nrscripts = 0; 
     1191    num_db_scripts = 0; 
     1192    num_sc_scripts = 0; 
    11921193} 
    11931194 
     
    12401241        LoadDatabase(); 
    12411242 
     1243    num_db_scripts = GetScriptNames().size(); 
     1244 
    12421245    outstring_log("TSCR: Loading C++ scripts"); 
    12431246    barGoLink bar(1); 
     
    12451248    outstring_log(""); 
    12461249 
    1247     nrscripts = 0; 
    12481250    for(int i=0;i<MAX_SCRIPTS;i++) 
    12491251        m_scripts[i]=NULL; 
     
    17761778    // ------------------- 
    17771779 
    1778     outstring_log("TSCR: Loaded %u C++ Scripts", nrscripts); 
    1779     outstring_log(""); 
     1780    outstring_log(">> Loaded %i C++ Scripts (of %i ScriptNames defined in Mangos database)", num_sc_scripts, num_db_scripts); 
    17801781} 
    17811782 
     
    18491850//*** Functions used internally *** 
    18501851 
    1851 TRINITY_DLL_EXPORT 
    1852 char const* ScriptsVersion() 
    1853 { 
    1854         return "Default Trinity scripting library"; 
    1855 } 
    1856  
    1857 Script* GetScriptByName(std::string Name) 
    1858 { 
    1859     if (Name.empty()) 
    1860         return NULL; 
    1861  
    1862     for(int i=0;i<MAX_SCRIPTS;i++) 
    1863     { 
    1864         if (m_scripts[i] && m_scripts[i]->Name == Name) 
    1865             return m_scripts[i]; 
    1866     } 
    1867     return NULL; 
     1852void Script::RegisterSelf() 
     1853{ 
     1854    int id = GetScriptId(Name.c_str()); 
     1855    if (id != 0) 
     1856    { 
     1857        m_scripts[id] = this; 
     1858        ++num_sc_scripts; 
     1859    } else 
     1860        debug_log("SD2: RegisterSelf, but script named %s does not have ScriptName assigned in database.",(this)->Name.c_str()); 
    18681861} 
    18691862 
     
    18721865 
    18731866TRINITY_DLL_EXPORT 
     1867char const* ScriptsVersion() 
     1868{ 
     1869        return "Default Trinity scripting library"; 
     1870} 
     1871TRINITY_DLL_EXPORT 
    18741872bool GossipHello ( Player * player, Creature *_Creature ) 
    18751873{ 
    1876     Script *tmpscript = GetScriptByName(_Creature->GetScriptName()); 
     1874    Script *tmpscript = m_scripts[_Creature->GetScriptId()]; 
    18771875    if (!tmpscript || !tmpscript->pGossipHello) return false; 
    18781876 
     
    18861884    debug_log("TSCR: Gossip selection, sender: %d, action: %d",sender, action); 
    18871885 
    1888     Script *tmpscript = GetScriptByName(_Creature->GetScriptName()); 
     1886    Script *tmpscript = m_scripts[_Creature->GetScriptId()]; 
    18891887    if (!tmpscript || !tmpscript->pGossipSelect) return false; 
    18901888 
     
    18981896    debug_log("TSCR: Gossip selection with code, sender: %d, action: %d",sender, action); 
    18991897 
    1900     Script *tmpscript = GetScriptByName(_Creature->GetScriptName()); 
     1898    Script *tmpscript = m_scripts[_Creature->GetScriptId()]; 
    19011899    if (!tmpscript || !tmpscript->pGossipSelectWithCode) return false; 
    19021900 
     
    19081906bool QuestAccept( Player *player, Creature *_Creature, Quest const *_Quest ) 
    19091907{ 
    1910     Script *tmpscript = GetScriptByName(_Creature->GetScriptName()); 
     1908    Script *tmpscript = m_scripts[_Creature->GetScriptId()]; 
    19111909    if (!tmpscript || !tmpscript->pQuestAccept) return false; 
    19121910 
     
    19181916bool QuestSelect( Player *player, Creature *_Creature, Quest const *_Quest ) 
    19191917{ 
    1920     Script *tmpscript = GetScriptByName(_Creature->GetScriptName()); 
     1918    Script *tmpscript = m_scripts[_Creature->GetScriptId()]; 
    19211919    if (!tmpscript || !tmpscript->pQuestSelect) return false; 
    19221920 
     
    19281926bool QuestComplete( Player *player, Creature *_Creature, Quest const *_Quest ) 
    19291927{ 
    1930     Script *tmpscript = GetScriptByName(_Creature->GetScriptName()); 
     1928    Script *tmpscript = m_scripts[_Creature->GetScriptId()]; 
    19311929    if (!tmpscript || !tmpscript->pQuestComplete) return false; 
    19321930 
     
    19381936bool ChooseReward( Player *player, Creature *_Creature, Quest const *_Quest, uint32 opt ) 
    19391937{ 
    1940     Script *tmpscript = GetScriptByName(_Creature->GetScriptName()); 
     1938    Script *tmpscript = m_scripts[_Creature->GetScriptId()]; 
    19411939    if (!tmpscript || !tmpscript->pChooseReward) return false; 
    19421940 
     
    19481946uint32 NPCDialogStatus( Player *player, Creature *_Creature ) 
    19491947{ 
    1950     Script *tmpscript = GetScriptByName(_Creature->GetScriptName()); 
     1948    Script *tmpscript = m_scripts[_Creature->GetScriptId()]; 
    19511949    if (!tmpscript || !tmpscript->pNPCDialogStatus) return 100; 
    19521950 
     
    19581956uint32 GODialogStatus( Player *player, GameObject *_GO ) 
    19591957{ 
    1960     Script *tmpscript = GetScriptByName(_GO->GetGOInfo()->ScriptName); 
    1961     if(!tmpscript || !tmpscript->pGODialogStatus) return 100; 
     1958    Script *tmpscript = m_scripts[_GO->GetGOInfo()->ScriptId]; 
     1959    if (!tmpscript || !tmpscript->pGODialogStatus) return 100; 
    19621960 
    19631961    player->PlayerTalkClass->ClearMenus(); 
     
    19681966bool ItemHello( Player *player, Item *_Item, Quest const *_Quest ) 
    19691967{ 
    1970     Script *tmpscript = GetScriptByName(_Item->GetProto()->ScriptName); 
     1968    Script *tmpscript = m_scripts[_Item->GetProto()->ScriptId]; 
    19711969    if (!tmpscript || !tmpscript->pItemHello) return false; 
    19721970 
     
    19781976bool ItemQuestAccept( Player *player, Item *_Item, Quest const *_Quest ) 
    19791977{ 
    1980     Script *tmpscript = GetScriptByName(_Item->GetProto()->ScriptName); 
     1978    Script *tmpscript = m_scripts[_Item->GetProto()->ScriptId]; 
    19811979    if (!tmpscript || !tmpscript->pItemQuestAccept) return false; 
    19821980 
     
    19881986bool GOHello( Player *player, GameObject *_GO ) 
    19891987{ 
    1990     Script *tmpscript = GetScriptByName(_GO->GetGOInfo()->ScriptName); 
     1988    Script *tmpscript = m_scripts[_GO->GetGOInfo()->ScriptId]; 
    19911989    if (!tmpscript || !tmpscript->pGOHello) return false; 
    19921990 
     
    19981996bool GOQuestAccept( Player *player, GameObject *_GO, Quest const *_Quest ) 
    19991997{ 
    2000     Script *tmpscript = GetScriptByName(_GO->GetGOInfo()->ScriptName); 
     1998    Script *tmpscript = m_scripts[_GO->GetGOInfo()->ScriptId]; 
    20011999    if (!tmpscript || !tmpscript->pGOQuestAccept) return false; 
    20022000 
     
    20082006bool GOChooseReward( Player *player, GameObject *_GO, Quest const *_Quest, uint32 opt ) 
    20092007{ 
    2010     Script *tmpscript = GetScriptByName(_GO->GetGOInfo()->ScriptName); 
     2008    Script *tmpscript = m_scripts[_GO->GetGOInfo()->ScriptId]; 
    20112009    if (!tmpscript || !tmpscript->pGOChooseReward) return false; 
    20122010 
     
    20182016bool AreaTrigger( Player *player, AreaTriggerEntry * atEntry) 
    20192017{ 
    2020     Script *tmpscript = NULL; 
    2021  
    2022     tmpscript = GetScriptByName(GetAreaTriggerScriptNameById(atEntry->id)); 
     2018    Script *tmpscript = m_scripts[GetAreaTriggerScriptId(atEntry->id)]; 
    20232019    if (!tmpscript || !tmpscript->pAreaTrigger) return false; 
    20242020 
     
    20292025CreatureAI* GetAI(Creature *_Creature) 
    20302026{ 
    2031     Script *tmpscript = GetScriptByName(_Creature->GetScriptName()); 
    2032  
     2027    Script *tmpscript = m_scripts[_Creature->GetScriptId()]; 
    20332028    if (!tmpscript || !tmpscript->GetAI) return NULL; 
     2029 
    20342030    return tmpscript->GetAI(_Creature); 
    20352031} 
     
    20382034bool ItemUse( Player *player, Item* _Item, SpellCastTargets const& targets) 
    20392035{ 
    2040     Script *tmpscript = GetScriptByName(_Item->GetProto()->ScriptName); 
     2036    Script *tmpscript = m_scripts[_Item->GetProto()->ScriptId]; 
    20412037    if (!tmpscript || !tmpscript->pItemUse) return false; 
    20422038 
     
    20472043bool ReceiveEmote( Player *player, Creature *_Creature, uint32 emote ) 
    20482044{ 
    2049     Script *tmpscript = GetScriptByName(_Creature->GetScriptName()); 
     2045    Script *tmpscript = m_scripts[_Creature->GetScriptId()]; 
    20502046    if (!tmpscript || !tmpscript->pReceiveEmote) return false; 
    20512047 
     
    20562052InstanceData* CreateInstanceData(Map *map) 
    20572053{ 
    2058     Script *tmpscript = NULL; 
    2059  
    2060     if (!map->IsDungeon()) return false; 
    2061  
    2062     tmpscript = GetScriptByName(((InstanceMap*)map)->GetScript()); 
    2063     if (!tmpscript || !tmpscript->GetInstanceData) return false; 
     2054    if (!map->IsDungeon()) return NULL; 
     2055 
     2056    Script *tmpscript = m_scripts[((InstanceMap*)map)->GetScriptId()]; 
     2057    if (!tmpscript || !tmpscript->GetInstanceData) return NULL; 
    20642058 
    20652059    return tmpscript->GetInstanceData(map);