elunaluaengine / eluna Goto Github PK
View Code? Open in Web Editor NEWEluna Lua Engine © for WoW Emulators
Home Page: https://elunaluaengine.github.io
License: GNU General Public License v3.0
Eluna Lua Engine © for WoW Emulators
Home Page: https://elunaluaengine.github.io
License: GNU General Public License v3.0
SetEquipmentSlots is used for Mr.Smite and others boss.
Expansion: Classic to WoTLK (atleast, I think cata and mop use it too, need to be confirmed tho)
http://www.trinitycore.net/db/dc8/structScriptedAI.html#a3576525c6a84c0110304496b935929eb
Implement CastCustomSpell method
Move check rewrite changes from MaNGOS to TC
See:
https://github.com/eluna-dev-mangos/ElunaCoreWotlk/tree/RewriteCheck
https://github.com/eluna-dev-mangos/ElunaCoreWotlk/commit/3c606a75ea2c5975557a5c28ca0068bed8252004
Fixes arg reporting invalid index.
Also enhances error reporting and checks overall.
got an error: on TC-Wotlk (bce564b2007ec427808a41a466faa27dc377a85e) after doing
~/dev/Eluna-TC-Wotlk/build$ make clean
~/dev/Eluna-TC-Wotlk/build$ cmake ../ -DPREFIX=/home//server -DCONF_DIR=/home//server/conf -DTOOLS=1 -DSCRIPTS=1 -DSERVERS=1 -DLIBSDIR=/home//server/lib
[...]
CMake Error at src/CMakeLists.txt:19 (add_subdirectory):
The source directory
/home/<doesnotmatter>/dev/Eluna-TC-Wotlk/src/LuaEngine
does not contain a CMakeLists.txt file.
-- Configuring incomplete, errors occurred!
As discussed, possibly change method to not add item if player does not have the specific item in his inventory, maybe add bool argument? Ideas? Suggestions?
Remove lua_pushnil from code and replace with Push.
Add a method to get all in range units
Would be great if the scripts folder can be set from the config.
Example: Eluna.Scripts.Directory = "lua_scripts"
I will look tomorrow in the core so if I find out how I will do a pull request :)
Because I'm sure is something to edit around here :) https://github.com/ElunaLuaEngine/Eluna/blob/c6e9683c55061ff8bd1e5674b2d559fd1a55d421/TrinityCore/WotLK/src/LuaEngine/LuaEngine.cpp
I found a issue at:
void WorldSession::HandleLootOpcode(WorldPacket& recvData)
{
TC_LOG_DEBUG("network", "WORLD: CMSG_LOOT");
uint64 guid;
recvData >> guid;
// Check possible cheat
if (!_player->IsAlive())
return;
GetPlayer()->SendLoot(guid, LOOT_CORPSE);
// interrupt cast
if (GetPlayer()->IsNonMeleeSpellCasted(false))
GetPlayer()->InterruptNonMeleeSpells(false);
}
"IsNonMeleeSpellCasted(false)" should be "IsNonMeleeSpellCast(false)"
Fix travis build.
Travis has old stuff installed that doesnt match TC requirements.
https://github.com/ElunaLuaEngine/Eluna-TC-Cata/pull/1
The file has been removed, but the changes / the file should be added to:
https://github.com/ElunaLuaEngine/Scripts
Also possibly implement methods to get expansion as these definitions vary, so you can write cross exp scripts and or libraries like this
Option not to trigger XP change hook for the player when using GiveXP method.
Otherwise results to infinite loop when using it on XP gaining events, which many seem to try.
Can you implement this function?
Hello. I'm having a small problem when merging Trinity and Eluna... Before the merge, My locals_gossip_menu_option works correctly. After, the menus still come up, but no longer do anything when you click on them for interaction. I have no errors or conflicts when merging.
Everything else seems working just fine... Just locals_gossip_menu_options not working after merging with Eluna.
I have a problem with using PeformIngameSpawn.
function CreateNPC(EntryID, SpawnMap, SpawnX, SpawnY, SpawnZ, SpawnO)
local ID = nil;
for NPCID,NPCTable in pairs(NPC) do
ID = NPCID;
if(NPC[ID] == nil or not(NPC[ID]["IsCreated"])) then
ID = ID - 1;
break;
end
end
if(ID == nil) then
ID = 0;
else
ID = ID + 1;
end
NPC[ID] = {
["IsCreated"] = true,
["GameID"] = nil,
["EntryID"] = EntryID,
["Name"] = nil,
["Level"] = nil,
["SpawnMap"] = SpawnMap,
["SpawnX"] = SpawnX,
["SpawnY"] = SpawnY,
["SpawnZ"] = SpawnZ,
["SpawnO"] = SpawnO
};
NPC[ID]["GameID"] = PerformIngameSpawn(1, NPC[ID]["EntryID"], NPC[ID]["SpawnMap"], NPC[ID]["SpawnX"], NPC[ID]["SpawnY"], NPC[ID]["SpawnZ"], NPC[ID]["SpawnO"], 0, 0, 1);
if(NPC[ID]["GameID"] == nil) then
print("NPC ID: " .. ID .. " has failed to spawn.");
NPC[ID]["IsCreated"] = false;
return false;
end
print("NPC ID: " .. ID .. " has successfully spawned.");
NPC[ID]["Name"] = NPC[ID]["GameID"]:GetName();
NPC[ID]["Level"] = NPC[ID]["GameID"]:GetLevel();
return ID;
end
CreateNPC(29611, Player[PlayerID]["GameID"]:GetMapId(), Player[PlayerID]["GameID"]:GetX(), Player[PlayerID]["GameID"]:GetY(), Player[PlayerID]["GameID"]:GetZ(), Player[PlayerID]["GameID"]:GetO());
.reload eluna
Eluna Nova Lua Engine loaded.
Eluna Nova::Loaded 1 Lua scripts
Reloaded Eluna Nova Engine
TC> Kreatyve [Human <Alliance>][Warrior][Level: 80] has connected.
NPC ID: 0 has failed to spawn.
Kreatyve [Human <Alliance>][Warrior][Level: 80] has disconnected.
So I don't know why it's not working.
Meybe you can look for the problem or provide an example. of how to use PerformIngameSpawn.
We should implement all for example map methods that you can use to get players and creatures by low guid on a map. and all similar methods.
Add ElunaGuard
See ElunaLuaEngine/ElunaTrinityWotlk@6cc6ba2
Updating local source with trinity after commit 1a5c0ad
seems to break PerformIngameSpawn. Haven't had a lot of time to go over trinity's recent commits to find out why, but I figured you all might want to know.
Reimplement AI initialization for creatures on TC on reload eluna.
Cant be done on mangos without a little stupid core modifications : |
FIRST TO SAY: Sorry for my english, i try to do my best.
Hi, recently i compile this server. My first compile.
I use github, etc. so i got updated, and i see a "npc_tax.cpp" i supose is a Taxi NPC.
But cant see the ID to spawn.
Same happens with npc_special , npc_inkeeper , npc_proffesion
TrinityCore/TrinityCore@8bcde41
virtual uint32 GetDialogStatus(Player* /*player*/, Creature* /*creature*/) { return 100; }
virtual uint32 GetDialogStatus(Player* /*player*/, Creature* /*creature*/) { return DIALOG_STATUS_SCRIPTED_NO_STATUS; }
and ...
virtual uint32 GetDialogStatus(Player* /*player*/, GameObject* /*go*/) { return 100; }
virtual uint32 GetDialogStatus(Player* /*player*/, GameObject* /*go*/) { return DIALOG_STATUS_SCRIPTED_NO_STATUS; }
It will compile still, but causes a client crash from mem access.
Add command hook to mangos
See:
ElunaLuaEngine/ElunaTrinityWotlk@6cc6ba2
ElunaLuaEngine/ElunaTrinityWotlk@6324c8a
Need better documentation for taxi methods:
http://emudevs.com/showthread.php/851-LUA-C-Custom-Fly-Taxi-without-Gossip?p=6114#post6114
MountID is actually NPC entry.
Example extension:
http://pastebin.com/shpPP9yK
Must check if on TC the same issue:
https://github.com/eluna-dev-mangos/ElunaCoreWotlk/issues/14
Trinity replaced CastedCreatureOrGO method with KillCreditGO
commit # 7776016
OnEquip hook is still not working properly.
Mangos functions that dont work on TC or need a solution.
6d08b93
Possible implementation of SWIG and a completely modular script engine system. To be considered.
So I just copy and paste the files for cataclysm in the source folder, I re-cmaked. Build and I get those errors:
1>------ Build started: Project: ZERO_CHECK, Configuration: Release x64 ------
2>------ Build started: Project: revision.h, Configuration: Release x64 ------
3>------ Build started: Project: game, Configuration: Release x64 ------
3> ChatHandler.cpp
3> LootHandler.cpp
3>........\TrinityCore\src\server\game\Handlers\LootHandler.cpp(242): error C2039: 'IsNonMeleeSpellCasted' : is not a member of 'Player'
3> E:/server/cata/TrinityCore/src/server/game/Entities/Player\Player.h(1213) : see declaration of 'Player'
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(382): error C2039: 'FillMessageData' : is not a member of 'ChatHandler'
3> E:/server/cata/TrinityCore/src/server/game/Chat\Chat.h(50) : see declaration of 'ChatHandler'
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(382): error C3861: 'FillMessageData': identifier not found
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(440): error C2039: 'FillMessageData' : is not a member of 'ChatHandler'
3> E:/server/cata/TrinityCore/src/server/game/Chat\Chat.h(50) : see declaration of 'ChatHandler'
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(440): error C3861: 'FillMessageData': identifier not found
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(458): error C2039: 'FillMessageData' : is not a member of 'ChatHandler'
3> E:/server/cata/TrinityCore/src/server/game/Chat\Chat.h(50) : see declaration of 'ChatHandler'
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(458): error C3861: 'FillMessageData': identifier not found
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(480): error C2039: 'FillMessageData' : is not a member of 'ChatHandler'
3> E:/server/cata/TrinityCore/src/server/game/Chat\Chat.h(50) : see declaration of 'ChatHandler'
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(480): error C3861: 'FillMessageData': identifier not found
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(662): error C2039: 'FillMessageData' : is not a member of 'ChatHandler'
3> E:/server/cata/TrinityCore/src/server/game/Chat\Chat.h(50) : see declaration of 'ChatHandler'
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(662): error C3861: 'FillMessageData': identifier not found
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(695): error C2039: 'FillMessageData' : is not a member of 'ChatHandler'
3> E:/server/cata/TrinityCore/src/server/game/Chat\Chat.h(50) : see declaration of 'ChatHandler'
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(695): error C3861: 'FillMessageData': identifier not found
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(842): error C2039: 'FillMessageData' : is not a member of 'ChatHandler'
3> E:/server/cata/TrinityCore/src/server/game/Chat\Chat.h(50) : see declaration of 'ChatHandler'
3>........\TrinityCore\src\server\game\Handlers\ChatHandler.cpp(842): error C3861: 'FillMessageData': identifier not found
4>------ Build started: Project: LuaEngine, Configuration: Release x64 ------
4> LuaFunctions.cpp
4>e:\server\cata\trinitycore\src\luaengine\UnitMethods.h(1086): error C2664: 'void WorldObject::MonsterWhisper(const char *,const Player *,bool)' : cannot convert parameter 2 from 'uint64' to 'const Player *'
4> Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
4>e:\server\cata\trinitycore\src\luaengine\UnitMethods.h(1096): error C2664: 'void WorldObject::MonsterTextEmote(const char *,const WorldObject *,bool)' : cannot convert parameter 2 from 'uint64' to 'const WorldObject *'
4> Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
4>e:\server\cata\trinitycore\src\luaengine\UnitMethods.h(1105): error C2664: 'void WorldObject::MonsterSay(const char *,uint32,const WorldObject *)' : cannot convert parameter 3 from 'uint64' to 'const WorldObject *'
4> Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
4>e:\server\cata\trinitycore\src\luaengine\UnitMethods.h(1114): error C2664: 'void WorldObject::MonsterYell(const char *,uint32,const WorldObject *)' : cannot convert parameter 3 from 'uint64' to 'const WorldObject *'
4> Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
4>e:\server\cata\trinitycore\src\luaengine\CreatureMethods.h(509): error C2664: 'CreatureAI::Talk' : cannot convert parameter 2 from 'uint64' to 'const WorldObject *'
4> Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
5>------ Build started: Project: worldserver, Configuration: Release x64 ------
5>LINK : fatal error LNK1181: cannot open input file '..\game\Release\game.lib'
6>------ Build started: Project: ALL_BUILD, Configuration: Release x64 ------
6> Build all projects
7>------ Skipped Build: Project: INSTALL, Configuration: Release x64 ------
7>Project not selected to build for this solution configuration
========== Build: 3 succeeded, 3 failed, 17 up-to-date, 1 skipped ==========
// break if we don't find dir
if (!hFile)
{
TC_LOG_ERROR(LOG_FILTER_SERVER_LOADING, "Eluna::No `scripts` directory found!");
return;
}
Instead of breaking, create directory and re-initialize engine, kgo!
PLAYER_EVENT_ON_CHANNEL_CHAT = 22, / / (event, player, msg, Type, lang, channel)
does not respond to the channels registered player.
https://github.com/Corbi/Source/commit/3e276724e1560c616d5e5a1614c1177f20df60a5
These methods were not added yet from Corbi's pull request.
Hey, I don't see any method for retrieving the name of an area in a string format(eg. creature:GetAreaName()), there's only :GetAreaId().
Is there any workaround I can do to retrieve the name as a string?
http://emudevs.com/showthread.php/3142-Getting-the-area-name-as-a-string
PushLong doesnt handle negative values correctly.
-1 for example produces the same as uint32(-1) while it should produce -0x1
Remove deprecate "Nova" from i.e. line 38 LuaEngine.cpp etc.
Add methods to move items around inventory.
Could also revisit other item methods the same time.
Change DBC editing function to directly edit the loaded DBC data on mangos and TC.
See mangos for an example.
Currently this is handled by loading the modified DBC to a map and inserting custom data to it then. (like spell DBC is handled)
Make the method global and make it return nil on invalid coords or if no height.
We could add a config option for enabling and disabling the engine.
Arc has has it too
Compilation seem to be broken on Debian 64bits, with gcc 4.4, rev eb3655b
Code:
src/server/LuaEngine/LuaEngine.cpp: In member function 'void Eluna::LuaEventMap::ScriptEventCancel(int)':
src/server/LuaEngine/LuaEngine.cpp:736: error: no matching function for call to 'std::multimap<unsigned int, Eluna::LuaEventMap::eventData, std::less<unsigned int>, std::allocator<std::pair<const unsigned int, Eluna::LuaEventMap::eventData> > >::erase(std::_Rb_tree_const_iterator<std::pair<const unsigned int, Eluna::LuaEventMap::eventData> >)'
/usr/include/c++/4.4/bits/stl_multimap.h:502: note: candidates are: void std::multimap<_Key, _Tp, _Compare, _Alloc>::erase(typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename _Alloc::rebind<std::pair<const _Key, _Tp> >::other>::iterator) [with _Key = unsigned int, _Tp = Eluna::LuaEventMap::eventData, _Compare = std::less<unsigned int>, _Alloc = std::allocator<std::pair<const unsigned int, Eluna::LuaEventMap::eventData> >]
/usr/include/c++/4.4/bits/stl_multimap.h:517: note: typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename _Alloc::rebind<std::pair<const _Key, _Tp> >::other>::size_type std::multimap<_Key, _Tp, _Compare, _Alloc>::erase(const _Key&) [with _Key = unsigned int, _Tp = Eluna::LuaEventMap::eventData, _Compare = std::less<unsigned int>, _Alloc = std::allocator<std::pair<const unsigned int, Eluna::LuaEventMap::eventData> >]
/usr/include/c++/4.4/bits/stl_multimap.h:532: note: void std::multimap<_Key, _Tp, _Compare, _Alloc>::erase(typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename _Alloc::rebind<std::pair<const _Key, _Tp> >::other>::iterator, typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename _Alloc::rebind<std::pair<const _Key, _Tp> >::other>::iterator) [with _Key = unsigned int, _Tp = Eluna::LuaEventMap::eventData, _Compare = std::less<unsigned int>, _Alloc = std::allocator<std::pair<const unsigned int, Eluna::LuaEventMap::eventData> >]
Here is the diff file to correct it :
+++ b/src/server/LuaEngine/LuaEngine.cpp
@@ -728,7 +728,7 @@ void Eluna::LuaEventMap::ScriptEventCancel(int funcRef)
if (ScriptEventsEmpty())
return;
- for (EventStore::const_iterator itr = _eventMap.begin(); itr != _eventMap.end();)
+ for (EventStore::iterator itr = _eventMap.begin(); itr != _eventMap.end();)
{
if (funcRef == itr->second.funcRef)
{
Old events stay when you use a reload command.
At least for players.
The problem does not occur in normal use as RemoveEvents works as intended and everything works fine after a restart too.
Just a bug with .reload eluna as well as with method to delete all events possibly
http://emudevs.com/showthread.php/3430-object-crash
Possibly related logs
Object::~Object - guid=4611686018431374650, typeid=1, entry=49426 deleted but still in world!!
Item slot 255
/home/desktop/fireball/src/server/game/Entities/Object/Object.cpp:119 in ~Object ASSERTION FAILED:
false
./worldserver(_ZN4ItemD1Ev+0x5b9) [0xfaba79]
./worldserver(_ZN4ItemD0Ev+0x9) [0xfabaa9]
./worldserver() [0xba3d09]
./worldserver(_ZN6Player16DestroyItemCountEjjbb+0x194) [0xba4134]
./worldserver(_ZN9LuaPlayer10RemoveItemEP9lua_StateP6Player+0x6f) [0x185a36f]
./worldserver(_ZN13ElunaTemplateI6PlayerE5thunkEP9lua_State+0x4f) [0x186bcbf]
./worldserver() [0x18807dd]
./worldserver() [0x188d7c4]
./worldserver() [0x1880f69]
./worldserver() [0x187fe89]
./worldserver() [0x1881291]
./worldserver(lua_pcallk+0x58) [0x1886898]
./worldserver(_ZN5Eluna11ExecuteCallEP9lua_Stateii+0x37) [0x1840367]
./worldserver(_ZN5Eluna6OnChatEP6PlayerjjRSs+0x1f9) [0x18325a9]
./worldserver(_ZN12WorldSession23HandleMessagechatOpcodeER11WorldPacket+0x30ce) [0x102dc9e]
./worldserver(_ZN12WorldSession6UpdateEjR12PacketFilter+0x55f) [0xe02d8f]
./worldserver(_ZN5World14UpdateSessionsEj+0xe1) [0xebbf81]
./worldserver(_ZN5World6UpdateEj+0x1ad) [0xebc2fd]
./worldserver(_ZN13WorldRunnable3runEv+0xe9) [0x9e6949]
./worldserver(_ZN9ACE_Based6Thread10ThreadTaskEPv+0xa) [0x10e4c3a]
/usr/local/lib/libACE-6.0.3.so(_ZN21ACE_OS_Thread_Adapter6invokeEv+0x86) [0x7f0e6ff371a6]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x8182) [0x7f0e6f0f1182]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f0e6e5fe30d]
Invalid read of size 4
==10330== at 0x183ED30: Eluna::RemoveRef(void const*) (in /home/desktop/server/bin/worldserver)
==10330== by 0xF13076: AuctionHouseMgr::~AuctionHouseMgr() (in /home/desktop/server/bin/worldserver)
==10330== by 0xCDA173: ACE_Singleton<AuctionHouseMgr, ACE_Null_Mutex>::~ACE_Singleton() (in /home/desktop/server/bin/worldserver)
==10330== by 0xCDA1B1: ACE_Singleton<AuctionHouseMgr, ACE_Null_Mutex>::cleanup(void*) (in /home/desktop/server/bin/worldserver)
==10330== by 0x51436A4: ACE_OS_Exit_Info::call_hooks() (Cleanup.cpp:162)
==10330== by 0x5185947: ACE_Object_Manager::fini() (Object_Manager.cpp:723)
==10330== by 0x5186309: ACE_OS_Object_Manager::fini() (Object_Manager_Base.cpp:296)
==10330== by 0x518645F: ACE_OS_Object_Manager::~ACE_OS_Object_Manager() (Object_Manager_Base.cpp:107)
==10330== by 0x51864A8: ACE_OS_Object_Manager::~ACE_OS_Object_Manager() (Object_Manager_Base.cpp:108)
==10330== by 0x5185EB4: ACE_OS_Object_Manager_Manager::~ACE_OS_Object_Manager_Manager() (Object_Manager_Base.cpp:489)
==10330== by 0x69CE899: __cxa_finalize (cxa_finalize.c:56)
==10330== by 0x512BBE2: ??? (in /usr/local/lib/libACE-6.0.3.so)
==10330== Address 0x8 is not stack'd, malloc'd or (recently) free'd
==10330==
==10330==
==10330== Process terminating with default action of signal 11 (SIGSEGV)
==10330== Access not within mapped region at address 0x8
==10330== at 0x183ED30: Eluna::RemoveRef(void const*) (in /home/desktop/server/bin/worldserver)
==10330== by 0xF13076: AuctionHouseMgr::~AuctionHouseMgr() (in /home/desktop/server/bin/worldserver)
==10330== by 0xCDA173: ACE_Singleton<AuctionHouseMgr, ACE_Null_Mutex>::~ACE_Singleton() (in /home/desktop/server/bin/worldserver)
==10330== by 0xCDA1B1: ACE_Singleton<AuctionHouseMgr, ACE_Null_Mutex>::cleanup(void*) (in /home/desktop/server/bin/worldserver)
==10330== by 0x51436A4: ACE_OS_Exit_Info::call_hooks() (Cleanup.cpp:162)
==10330== by 0x5185947: ACE_Object_Manager::fini() (Object_Manager.cpp:723)
==10330== by 0x5186309: ACE_OS_Object_Manager::fini() (Object_Manager_Base.cpp:296)
==10330== by 0x518645F: ACE_OS_Object_Manager::~ACE_OS_Object_Manager() (Object_Manager_Base.cpp:107)
==10330== by 0x51864A8: ACE_OS_Object_Manager::~ACE_OS_Object_Manager() (Object_Manager_Base.cpp:108)
==10330== by 0x5185EB4: ACE_OS_Object_Manager_Manager::~ACE_OS_Object_Manager_Manager() (Object_Manager_Base.cpp:489)
==10330== by 0x69CE899: __cxa_finalize (cxa_finalize.c:56)
==10330== by 0x512BBE2: ??? (in /usr/local/lib/libACE-6.0.3.so)
I hope this one could be implemented
pPlayer:CreateGuardian(entry, duration, angle)
pUnit:CreateGuardian(entry, duration, angle)
Check that cmake doesnt autocreate scripts folder to release
Also fix that its created to the build folder, not automatically to release.
Creating a setting to change the script folder is now needed.
Hey there,
I found an error (latest build) where the server will crash when you try to use player:RemoveItem() before the player got saved to the DB.
Hackfix in Lua atm:
player:SaveToDB()
player:RemoveItem()
On GossipHello, for example item gossip hook, if you have a script triggered on the hearthstone you will keep casting this spell 8690
, should not cast any spell.
Thank you
Make cmake to create scripts folder and add cmake option to disable Eluna on compile. (also config option?)
Would be better to take in radians than degrees for unit method GetRelativePoint
Dont forget to check gameobject method too.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.