mirror of
https://github.com/azerothcore/mod-ale
synced 2025-11-29 15:38:17 +08:00
feat: move mod-eluna-lua-engine to Eluna fork
feat: move mod-eluna-lua-engine to Eluna fork
This commit is contained in:
@@ -5,3 +5,4 @@ indent_size = 4
|
|||||||
tab_width = 4
|
tab_width = 4
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
|
max_line_length = 80
|
||||||
|
|||||||
49
.git_commit_template.txt
Normal file
49
.git_commit_template.txt
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
### TITLE
|
||||||
|
## Type(Scope/Subscope): Commit ultra short explanation
|
||||||
|
## |---- Write below the examples with a maximum of 50 characters ----|
|
||||||
|
## Example 1: fix(DB/SAI): Missing spell to NPC Hogger
|
||||||
|
## Example 2: fix(CORE/Raid): Phase 2 of Ragnaros
|
||||||
|
## Example 3: feat(CORE/Commands): New GM command to do something
|
||||||
|
|
||||||
|
|
||||||
|
### DESCRIPTION
|
||||||
|
## Explain why this change is being made, what does it fix etc...
|
||||||
|
## |---- Write below the examples with a maximum of 72 characters per lines ----|
|
||||||
|
## Example: Hogger (id: 492) was not charging player when being engaged.
|
||||||
|
|
||||||
|
|
||||||
|
## Provide links to any issue, commit, pull request or other resource
|
||||||
|
## Example 1: Closes issue #23
|
||||||
|
## Example 2: Ported from other project's commit (link)
|
||||||
|
## Example 3: References taken from wowpedia / wowhead / wowwiki / https://wowgaming.altervista.org/aowow/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## =======================================================
|
||||||
|
## EXTRA INFOS
|
||||||
|
## =======================================================
|
||||||
|
## "Type" can be:
|
||||||
|
## feat (new feature)
|
||||||
|
## fix (bug fix)
|
||||||
|
## refactor (refactoring production code)
|
||||||
|
## style (formatting, missing semi colons, etc; no code change)
|
||||||
|
## docs (changes to documentation)
|
||||||
|
## test (adding or refactoring tests; no production code change)
|
||||||
|
## chore (updating bash scripts, git files etc; no production code change)
|
||||||
|
## --------------------
|
||||||
|
## Remember to
|
||||||
|
## Capitalize the subject line
|
||||||
|
## Use the imperative mood in the subject line
|
||||||
|
## Do not end the subject line with a period
|
||||||
|
## Separate subject from body with a blank line
|
||||||
|
## Use the body to explain what and why rather than how
|
||||||
|
## Can use multiple lines with "-" for bullet points in body
|
||||||
|
## --------------------
|
||||||
|
## More info here https://www.conventionalcommits.org/en/v1.0.0-beta.2/
|
||||||
|
## =======================================================
|
||||||
|
## "Scope" can be:
|
||||||
|
## CORE (core related, c++)
|
||||||
|
## DB (database related, sql)
|
||||||
|
## =======================================================
|
||||||
|
## "Subscope" is optional and depends on the nature of the commit.
|
||||||
|
## =======================================================
|
||||||
105
.gitattributes
vendored
Normal file
105
.gitattributes
vendored
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
## AUTO-DETECT
|
||||||
|
## Handle line endings automatically for files detected as
|
||||||
|
## text and leave all files detected as binary untouched.
|
||||||
|
## This will handle all files NOT defined below.
|
||||||
|
* text=auto eol=lf
|
||||||
|
|
||||||
|
# Text
|
||||||
|
*.conf text
|
||||||
|
*.conf.dist text
|
||||||
|
*.cmake text
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
*.sh text
|
||||||
|
*.fish text
|
||||||
|
*.lua text
|
||||||
|
|
||||||
|
## SQL
|
||||||
|
*.sql text
|
||||||
|
|
||||||
|
## C++
|
||||||
|
*.c text
|
||||||
|
*.cc text
|
||||||
|
*.cxx text
|
||||||
|
*.cpp text
|
||||||
|
*.c++ text
|
||||||
|
*.hpp text
|
||||||
|
*.h text
|
||||||
|
*.h++ text
|
||||||
|
*.hh text
|
||||||
|
|
||||||
|
|
||||||
|
## For documentation
|
||||||
|
|
||||||
|
# Documents
|
||||||
|
*.doc diff=astextplain
|
||||||
|
*.DOC diff=astextplain
|
||||||
|
*.docx diff=astextplain
|
||||||
|
*.DOCX diff=astextplain
|
||||||
|
*.dot diff=astextplain
|
||||||
|
*.DOT diff=astextplain
|
||||||
|
*.pdf diff=astextplain
|
||||||
|
*.PDF diff=astextplain
|
||||||
|
*.rtf diff=astextplain
|
||||||
|
*.RTF diff=astextplain
|
||||||
|
|
||||||
|
## DOCUMENTATION
|
||||||
|
*.markdown text
|
||||||
|
*.md text
|
||||||
|
*.mdwn text
|
||||||
|
*.mdown text
|
||||||
|
*.mkd text
|
||||||
|
*.mkdn text
|
||||||
|
*.mdtxt text
|
||||||
|
*.mdtext text
|
||||||
|
*.txt text
|
||||||
|
AUTHORS text
|
||||||
|
CHANGELOG text
|
||||||
|
CHANGES text
|
||||||
|
CONTRIBUTING text
|
||||||
|
COPYING text
|
||||||
|
copyright text
|
||||||
|
*COPYRIGHT* text
|
||||||
|
INSTALL text
|
||||||
|
license text
|
||||||
|
LICENSE text
|
||||||
|
NEWS text
|
||||||
|
readme text
|
||||||
|
*README* text
|
||||||
|
TODO text
|
||||||
|
|
||||||
|
## GRAPHICS
|
||||||
|
*.ai binary
|
||||||
|
*.bmp binary
|
||||||
|
*.eps binary
|
||||||
|
*.gif binary
|
||||||
|
*.ico binary
|
||||||
|
*.jng binary
|
||||||
|
*.jp2 binary
|
||||||
|
*.jpg binary
|
||||||
|
*.jpeg binary
|
||||||
|
*.jpx binary
|
||||||
|
*.jxr binary
|
||||||
|
*.pdf binary
|
||||||
|
*.png binary
|
||||||
|
*.psb binary
|
||||||
|
*.psd binary
|
||||||
|
*.svg text
|
||||||
|
*.svgz binary
|
||||||
|
*.tif binary
|
||||||
|
*.tiff binary
|
||||||
|
*.wbmp binary
|
||||||
|
*.webp binary
|
||||||
|
|
||||||
|
|
||||||
|
## ARCHIVES
|
||||||
|
*.7z binary
|
||||||
|
*.gz binary
|
||||||
|
*.jar binary
|
||||||
|
*.rar binary
|
||||||
|
*.tar binary
|
||||||
|
*.zip binary
|
||||||
|
|
||||||
|
## EXECUTABLES
|
||||||
|
*.exe binary
|
||||||
|
*.pyc binary
|
||||||
44
.github/workflows/core_build.yml
vendored
Normal file
44
.github/workflows/core_build.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
name: core-build
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
compiler: [clang]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: ${{ matrix.compiler }}
|
||||||
|
env:
|
||||||
|
COMPILER: ${{ matrix.compiler }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
repository: 'azerothcore/azerothcore-wotlk'
|
||||||
|
ref: 'master'
|
||||||
|
submodules: 'recursive'
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
path: 'modules/mod-eluna'
|
||||||
|
- name: Cache
|
||||||
|
uses: actions/cache@v1.1.2
|
||||||
|
with:
|
||||||
|
path: /home/runner/.ccache
|
||||||
|
key: ccache:${{ matrix.compiler }}:${{ github.ref }}:${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
ccache:${{ matrix.compiler }}:${{ github.ref }}
|
||||||
|
ccache:${{ matrix.compiler }}
|
||||||
|
- name: Configure OS
|
||||||
|
run: source ./apps/ci/ci-install.sh
|
||||||
|
env:
|
||||||
|
CONTINUOUS_INTEGRATION: true
|
||||||
|
- name: Import db
|
||||||
|
run: source ./apps/ci/ci-import-db.sh
|
||||||
|
- name: Build
|
||||||
|
run: source ./apps/ci/ci-compile.sh
|
||||||
|
- name: Dry run
|
||||||
|
run: source ./apps/ci/ci-worldserver-dry-run.sh
|
||||||
|
- name: Check startup errors
|
||||||
|
run: source ./apps/ci/ci-error-check.sh
|
||||||
43
.gitignore
vendored
43
.gitignore
vendored
@@ -1,5 +1,48 @@
|
|||||||
|
!.gitignore
|
||||||
|
|
||||||
|
#
|
||||||
|
#Generic
|
||||||
|
#
|
||||||
|
|
||||||
|
.directory
|
||||||
|
.mailmap
|
||||||
*.orig
|
*.orig
|
||||||
*.rej
|
*.rej
|
||||||
|
*.*~
|
||||||
|
.hg/
|
||||||
|
*.kdev*
|
||||||
|
.DS_Store
|
||||||
|
CMakeLists.txt.user
|
||||||
*.bak
|
*.bak
|
||||||
*.patch
|
*.patch
|
||||||
*.diff
|
*.diff
|
||||||
|
*.REMOTE.*
|
||||||
|
*.BACKUP.*
|
||||||
|
*.BASE.*
|
||||||
|
*.LOCAL.*
|
||||||
|
|
||||||
|
#
|
||||||
|
# IDE & other softwares
|
||||||
|
#
|
||||||
|
/.settings/
|
||||||
|
/.externalToolBuilders/*
|
||||||
|
# exclude in all levels
|
||||||
|
nbproject/
|
||||||
|
.sync.ffs_db
|
||||||
|
*.kate-swp
|
||||||
|
|
||||||
|
#
|
||||||
|
# Eclipse
|
||||||
|
#
|
||||||
|
*.pydevproject
|
||||||
|
.metadata
|
||||||
|
.gradle
|
||||||
|
tmp/
|
||||||
|
*.tmp
|
||||||
|
*.swp
|
||||||
|
*~.nib
|
||||||
|
local.properties
|
||||||
|
.settings/
|
||||||
|
.loadpath
|
||||||
|
.project
|
||||||
|
.cproject
|
||||||
|
|||||||
92
README.md
92
README.md
@@ -1,4 +1,4 @@
|
|||||||
### [](https://github.com/ElunaLuaEngine/Eluna)
|
### [](https://github.com/ElunaLuaEngine/Eluna)
|
||||||
|
|
||||||
## About
|
## About
|
||||||
|
|
||||||
@@ -6,47 +6,63 @@ Eluna Lua Engine © is a lua engine embedded to World of Warcraft emulators.
|
|||||||
We are currently working hard to make Eluna better from inside and outside.
|
We are currently working hard to make Eluna better from inside and outside.
|
||||||
|
|
||||||
If you are having trouble with installation or scripts, please feel free to open an issue.
|
If you are having trouble with installation or scripts, please feel free to open an issue.
|
||||||
For documentation and reference see [Eluna API](http://elunaluaengine.github.io/) and [Lua reference manual](http://www.lua.org/manual/5.2/).
|
For documentation and reference see [Eluna API (AC version)](https://www.azerothcore.org/pages/eluna/index.html) and [Lua reference manual](http://www.lua.org/manual/5.2/).
|
||||||
|
|
||||||
Special thanks to [MaNGOS](http://getmangos.eu/) for their continued support and use of Eluna. Please head over to their forums and show them some love!
|
|
||||||
|
|
||||||
## Community
|
## Community
|
||||||
|
|
||||||
You can join the official Eluna Discord server, where you'll be able to find resources, releases and support provided by the community.
|
You can join the official Eluna Discord server, where you'll be able to find resources, releases and support provided by the community:
|
||||||
|
|
||||||
<a href="https://discord.gg/bjkCVWqqfX">
|
<a href="https://discord.gg/bjkCVWqqfX">
|
||||||
<img src="https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat" />
|
<img src="https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat" />
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
The official Azerothcore Discord server offers a channel dedicated to lua development as well:
|
||||||
|
<a href="https://discord.gg/gkt4y2x">
|
||||||
|
<img src="https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
#  mod-eluna for AzerothCore
|
||||||
|
- Latest build status with azerothcore: [](https://github.com/azerothcore/mod-eluna-lua-engine)
|
||||||
|
|
||||||
|
[english](README.md) | [中文说明](README_CN.md) | [Español](README_ES.md)
|
||||||
|
|
||||||
|
An [Eluna](https://github.com/ElunaLuaEngine/Eluna) module for AzerothCore.
|
||||||
|
|
||||||
|
|
||||||
|
## How to install:
|
||||||
|
|
||||||
|
### 1) Download the sources
|
||||||
|
|
||||||
|
You can get the sources using git.
|
||||||
|
|
||||||
|
#### download with git
|
||||||
|
|
||||||
|
1. open a terminal inside your `azerothcore-wotlk` folder
|
||||||
|
2. go inside the **modules** folder: `cd modules`
|
||||||
|
3. download the module sources using:
|
||||||
|
```
|
||||||
|
git clone https://github.com/azerothcore/Eluna.git mod-eluna
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2) Build
|
||||||
|
|
||||||
|
You need to run the cmake again and rebuild the project.
|
||||||
|
|
||||||
|
Eluna API for AC:
|
||||||
|
[https://www.azerothcore.org/pages/eluna/index.html](https://www.azerothcore.org/pages/eluna/index.html)
|
||||||
|
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
* [__Installation__](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/INSTALL.md)
|
|
||||||
* [Getting started](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/USAGE.md)
|
* [Getting started](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/USAGE.md)
|
||||||
* [Eluna features](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/IMPL_DETAILS.md)
|
* [Eluna features](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/IMPL_DETAILS.md)
|
||||||
* [Function documentation](http://elunaluaengine.github.io/)
|
* [Function documentation (AC version)](https://www.azerothcore.org/pages/eluna/index.html)
|
||||||
* [Hook documentation](https://github.com/ElunaLuaEngine/Eluna/blob/master/Hooks.h)
|
* [Hook documentation](https://github.com/ElunaLuaEngine/Eluna/blob/master/Hooks.h)
|
||||||
* [Lua reference manual](http://www.lua.org/manual/5.2/)
|
* [Lua reference manual](http://www.lua.org/manual/5.2/)
|
||||||
* [Forum - support, releases, guides](https://www.getmangos.eu/forums/forum/119-eluna-central/)
|
* [Forum - support, releases, guides](https://www.getmangos.eu/forums/forum/119-eluna-central/)
|
||||||
* [Example scripts](https://github.com/ElunaLuaEngine/Scripts)
|
* [Example scripts](https://github.com/ElunaLuaEngine/Scripts)
|
||||||
* [Contributing](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/CONTRIBUTING.md)
|
* [Contributing](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/CONTRIBUTING.md)
|
||||||
|
|
||||||
## Source
|
|
||||||
Eluna source code: [Source](https://github.com/ElunaLuaEngine/Eluna)
|
|
||||||
Core forks with required modifications for Eluna:
|
|
||||||
|
|
||||||
[](https://travis-ci.org/mangoszero/server) [Official MaNGOS Zero with Eluna](https://github.com/mangoszero/server)
|
|
||||||
[](https://travis-ci.org/mangosone/server) [Official MaNGOS One with Eluna](https://github.com/mangosone/server)
|
|
||||||
[](https://travis-ci.org/mangostwo/server) [Official MaNGOS Two with Eluna](https://github.com/mangostwo/server)
|
|
||||||
|
|
||||||
[](https://travis-ci.org/ElunaLuaEngine/ElunaTrinityWotlk) [Eluna TrinityCore WotLK](https://github.com/ElunaLuaEngine/ElunaTrinityWotlk)
|
|
||||||
|
|
||||||
[](https://travis-ci.org/ElunaLuaEngine/ElunaMangosClassic) [Eluna cMaNGOS Classic](https://github.com/ElunaLuaEngine/ElunaMangosClassic)
|
|
||||||
[](https://travis-ci.org/ElunaLuaEngine/ElunaMangosTbc) [Eluna cMaNGOS TBC](https://github.com/ElunaLuaEngine/ElunaMangosTbc)
|
|
||||||
[](https://travis-ci.org/ElunaLuaEngine/ElunaMangosWotlk) [Eluna cMaNGOS WotLK](https://github.com/ElunaLuaEngine/ElunaMangosWotlk)
|
|
||||||
|
|
||||||
Core plugin modules for Eluna:
|
|
||||||
|
|
||||||
- [AzerothCore Eluna Module](https://github.com/azerothcore/mod-eluna-lua-engine)
|
|
||||||
|
|
||||||
## Links
|
## Links
|
||||||
|
|
||||||
@@ -57,10 +73,26 @@ Core plugin modules for Eluna:
|
|||||||
* [Lua.org](http://www.lua.org/)
|
* [Lua.org](http://www.lua.org/)
|
||||||
* [License](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/LICENSE.md)
|
* [License](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/LICENSE.md)
|
||||||
|
|
||||||
## Team
|
|
||||||
|
|
||||||
* [Tommy (Easelm)](https://github.com/Easelm)
|
## Additions from Eluna/master
|
||||||
* [Foereaper](https://github.com/Foereaper)
|
|
||||||
* [Rochet2](https://github.com/Rochet2)
|
- Added HttpRequest method. https://github.com/azerothcore/Eluna/pull/2
|
||||||
* [Salja](https://github.com/Salja)
|
- Added RegisterPlayerEvent 43: `OnBeforePetAddedToWorld()` fires for pets and summoned creatures. https://github.com/azerothcore/Eluna/pull/3
|
||||||
* [Patman64](https://github.com/Patman64)
|
- Added Chat-Handler methods to player events. https://github.com/azerothcore/Eluna/pull/23
|
||||||
|
- Exposed `ModifyThreatPct()`. https://github.com/azerothcore/Eluna/pull/25
|
||||||
|
|
||||||
|
|
||||||
|
## How to update the Eluna version (for project mainteners)
|
||||||
|
|
||||||
|
1) `cd` into `mod-eluna-lua-engine`
|
||||||
|
2) `git checkout master`
|
||||||
|
3) cd `LuaEngine`
|
||||||
|
4) `git checkout master`
|
||||||
|
5) `git pull`
|
||||||
|
6) `cd ..` so you get back to `mod-eluna-lua-engine`
|
||||||
|
7) `git checkout -b some-new-unique-branch-name`
|
||||||
|
8) `git add LuaEngine`
|
||||||
|
9) `git commit -m "feat: update Eluna version"`
|
||||||
|
10) `git push`
|
||||||
|
11) The terminal will tell you something like `fatal: The current branch some-new-unique-branch-name has no upstream branch.` and suggest the command to use, for example: `git push --set-upstream origin some-new-unique-branch-name`
|
||||||
|
12) Open [the repo on Github](https://github.com/azerothcore/mod-eluna-lua-engine) and create a new PR
|
||||||
|
|||||||
50
README_CN.md
Normal file
50
README_CN.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# 本译文源于一个过期的版本。
|
||||||
|
##
|
||||||
|
##
|
||||||
|
##
|
||||||
|
##
|
||||||
|
|
||||||
|
#  mod-eluna-lua-engine for AzerothCore
|
||||||
|
- 最新版本在Azerothcore的构建状态: [](https://github.com/azerothcore/mod-eluna-lua-engine)
|
||||||
|
|
||||||
|
[english](README.md) | [中文说明](README_CN.md) | [Español](README_ES.md)
|
||||||
|
|
||||||
|
一个用于Azerothcore的[Eluna](https://github.com/ElunaLuaEngine/Eluna)模块.
|
||||||
|
|
||||||
|
## 如何安装:
|
||||||
|
|
||||||
|
### 1) 下载源码
|
||||||
|
|
||||||
|
你可以使用git(推荐)或手动下载源代码的方法安装。
|
||||||
|
|
||||||
|
#### 使用git(推荐)下载
|
||||||
|
|
||||||
|
1. 在你的`azerothcore-wotlk`源码文件夹中打开命令行(win的用户进入目录后shift+鼠标右键可以通过右键菜单打开)
|
||||||
|
2. 进入 **modules** 文件夹,命令行中输入: `cd modules`
|
||||||
|
3. 下载模块源码:
|
||||||
|
```
|
||||||
|
git clone https://github.com/azerothcore/mod-eluna-lua-engine.git
|
||||||
|
```
|
||||||
|
4. 下载模块源码后进入文件夹 **mod-eluna-lua-engine**,命令行中输入: `cd mod-eluna-lua-engine`
|
||||||
|
5. 下载Eluna源码,命令行中输入: `git submodule update --init`
|
||||||
|
|
||||||
|
可选: 模块中集成的Eluna是稳定版本,如果你要更新Eluna到最新版本,你可以进入目录**LuaEngine**(命令行输入:`cd LuaEngine`),进入后输入`git pull`获取即可更新最新版本.
|
||||||
|
请注意,最新版本可能和稳定版的源码不匹配.视情况可能需要自行修正.
|
||||||
|
|
||||||
|
#### 手动下载
|
||||||
|
|
||||||
|
1. 下载 [mod-eluna-lua-engine](https://github.com/azerothcore/mod-eluna-lua-engine/archive/master.zip)
|
||||||
|
2. 解压到你的`azerothcore-wotlk`源码中的**modules**文件夹中,请确保路径看起来是这样的`azerothcore-wotlk/modules/mod-eluna-lua-engine`
|
||||||
|
3. 下载 [Eluna](https://github.com/azerothcore/Eluna/archive/master.zip)
|
||||||
|
4. 把文件解压到 `mod-eluna-lua-engine/LuaEngine`. `LuaEngine.h`这个文件的路径看起来应该是这样的`mod-eluna-lua-engine/LuaEngine/LuaEngine.h`.
|
||||||
|
|
||||||
|
### 2) 生成
|
||||||
|
|
||||||
|
你需要重新CMake并重新生成你的项目.
|
||||||
|
|
||||||
|
|
||||||
|
Eluna API :
|
||||||
|
[http://elunaluaengine.github.io/](http://elunaluaengine.github.io/)
|
||||||
|
Eluna 中文文档(重构):
|
||||||
|
[http://wiki.uiwow.com/doku.php/eluna:start](http://wiki.uiwow.com/doku.php/eluna:start)
|
||||||
|
|
||||||
26
README_ES.md
Normal file
26
README_ES.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# Esta traducción proviene de una versión desactualizada.
|
||||||
|
##
|
||||||
|
##
|
||||||
|
##
|
||||||
|
##
|
||||||
|
|
||||||
|
# mod-LuaEngine
|
||||||
|
[English](README.md) | [中文说明](README_CN.md) | [Español](README_ES.md)
|
||||||
|
|
||||||
|
Un módulo de Eluna para AzerothCore.
|
||||||
|
|
||||||
|
Cómo instalar:
|
||||||
|
|
||||||
|
1. Descargar o clonar este módulo:
|
||||||
|
> [Descargar archivo zip](https://github.com/azerothcore/mod-eluna-lua-engine/archive/master.zip)
|
||||||
|
> o clonar `git clone https://github.com/azerothcore/mod-eluna-lua-engine.git`
|
||||||
|
2. Póngalo en la carpeta de módulos del Azerothcore.
|
||||||
|
> $HOME/azerothcore/modules/
|
||||||
|
3. Descargar o clonar el archivo central de ELUNA:
|
||||||
|
> [Descargar archivo zip](https://github.com/ElunaLuaEngine/Eluna/archive/master.zip)
|
||||||
|
> o clonar `git clone https://github.com/ElunaLuaEngine/Eluna.git .`
|
||||||
|
4. Dentro de la carpeta del módulo de Eluna de Azeroth, se encuentra una carpeta / directorio llamado: `LuaEngine` (mod-eluna-lua-engine/LuaEngine). Debe depositar los ficheros de lua, directamente dentro de esa carpeta. Los archivos directamente, no un directorio y luego los ficheros dentro. Por eso te utiliza el “.” cuando se está clonando, para que no genere un directorio nuevo.
|
||||||
|
5. Una vez copiado los ficheros y descargado el modulo, debes volver a compilar. Si seguiste la guía de instalación, debiste haber generado un directorio build, dentro de azerothcore. Dirígete a él y realiza la compilación como lo menciona en la guía.
|
||||||
|
|
||||||
|
Eluna API :
|
||||||
|
[http://elunaluaengine.github.io/](http://elunaluaengine.github.io/)
|
||||||
1
_config.yml
Normal file
1
_config.yml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
theme: jekyll-theme-architect
|
||||||
114
conf/mod_LuaEngine.conf.dist
Normal file
114
conf/mod_LuaEngine.conf.dist
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
[worldserver]
|
||||||
|
|
||||||
|
###################################################################################################
|
||||||
|
# ELUNA SETTINGS
|
||||||
|
#
|
||||||
|
# Eluna.Enabled
|
||||||
|
# Description: Enable or disable Eluna LuaEngine
|
||||||
|
# Default: true - (enabled)
|
||||||
|
# false - (disabled)
|
||||||
|
#
|
||||||
|
# Eluna.TraceBack
|
||||||
|
# Description: Sets whether to use debug.traceback function on a lua error or not.
|
||||||
|
# Notice that you can redefine the function.
|
||||||
|
# Default: false - (use default error output)
|
||||||
|
# true - (use debug.traceback function)
|
||||||
|
#
|
||||||
|
# Eluna.ScriptPath
|
||||||
|
# Description: Sets the location of the script folder to load scripts from
|
||||||
|
# The path can be relative or absolute.
|
||||||
|
# Default: "lua_scripts"
|
||||||
|
#
|
||||||
|
|
||||||
|
Eluna.Enabled = true
|
||||||
|
Eluna.TraceBack = false
|
||||||
|
Eluna.ScriptPath = "lua_scripts"
|
||||||
|
|
||||||
|
|
||||||
|
###################################################################################################
|
||||||
|
# LOGGING SYSTEM SETTINGS
|
||||||
|
#
|
||||||
|
# Appender config values: Given an appender "name"
|
||||||
|
# Appender.name
|
||||||
|
# Description: Defines 'where to log'.
|
||||||
|
# Format: Type,LogLevel,Flags,optional1,optional2,optional3
|
||||||
|
#
|
||||||
|
# Type
|
||||||
|
# 0 - (None)
|
||||||
|
# 1 - (Console)
|
||||||
|
# 2 - (File)
|
||||||
|
# 3 - (DB)
|
||||||
|
#
|
||||||
|
# LogLevel
|
||||||
|
# 0 - (Disabled)
|
||||||
|
# 1 - (Fatal)
|
||||||
|
# 2 - (Error)
|
||||||
|
# 3 - (Warning)
|
||||||
|
# 4 - (Info)
|
||||||
|
# 5 - (Debug)
|
||||||
|
# 6 - (Trace)
|
||||||
|
#
|
||||||
|
# Flags:
|
||||||
|
# 0 - None
|
||||||
|
# 1 - Prefix Timestamp to the text
|
||||||
|
# 2 - Prefix Log Level to the text
|
||||||
|
# 4 - Prefix Log Filter type to the text
|
||||||
|
# 8 - Append timestamp to the log file name. Format: YYYY-MM-DD_HH-MM-SS
|
||||||
|
# (Only used with Type = 2)
|
||||||
|
# 16 - Make a backup of existing file before overwrite
|
||||||
|
# (Only used with Mode = w)
|
||||||
|
#
|
||||||
|
# Colors (read as optional1 if Type = Console)
|
||||||
|
# Format: "fatal error warn info debug trace"
|
||||||
|
# 0 - BLACK
|
||||||
|
# 1 - RED
|
||||||
|
# 2 - GREEN
|
||||||
|
# 3 - BROWN
|
||||||
|
# 4 - BLUE
|
||||||
|
# 5 - MAGENTA
|
||||||
|
# 6 - CYAN
|
||||||
|
# 7 - GREY
|
||||||
|
# 8 - YELLOW
|
||||||
|
# 9 - LRED
|
||||||
|
# 10 - LGREEN
|
||||||
|
# 11 - LBLUE
|
||||||
|
# 12 - LMAGENTA
|
||||||
|
# 13 - LCYAN
|
||||||
|
# 14 - WHITE
|
||||||
|
# Example: "1 9 3 6 5 8"
|
||||||
|
#
|
||||||
|
# File: Name of the file (read as optional1 if Type = File)
|
||||||
|
# Allows to use one "%s" to create dynamic files
|
||||||
|
#
|
||||||
|
# Mode: Mode to open the file (read as optional2 if Type = File)
|
||||||
|
# a - (Append)
|
||||||
|
# w - (Overwrite)
|
||||||
|
#
|
||||||
|
# MaxFileSize: Maximum file size of the log file before creating a new log file
|
||||||
|
# (read as optional3 if Type = File)
|
||||||
|
# Size is measured in bytes expressed in a 64-bit unsigned integer.
|
||||||
|
# Maximum value is 4294967295 (4 GB). Leave blank for no limit.
|
||||||
|
# NOTE: Does not work with dynamic filenames.
|
||||||
|
# Example: 536870912 (512 MB)
|
||||||
|
#
|
||||||
|
Appender.ElunaLog=2,5,0,eluna.log,w
|
||||||
|
Appender.ElunaConsole=1,4,0,"0 9 0 3 5 0"
|
||||||
|
|
||||||
|
# Logger config values: Given a logger "name"
|
||||||
|
# Logger.name
|
||||||
|
# Description: Defines 'What to log'
|
||||||
|
# Format: LogLevel,AppenderList
|
||||||
|
#
|
||||||
|
# LogLevel
|
||||||
|
# 0 - (Disabled)
|
||||||
|
# 1 - (Fatal)
|
||||||
|
# 2 - (Error)
|
||||||
|
# 3 - (Warning)
|
||||||
|
# 4 - (Info)
|
||||||
|
# 5 - (Debug)
|
||||||
|
# 6 - (Trace)
|
||||||
|
#
|
||||||
|
# AppenderList: List of appenders linked to logger
|
||||||
|
# (Using spaces as separator).
|
||||||
|
#
|
||||||
|
Logger.eluna=6,ElunaLog ElunaConsole
|
||||||
24
sql/README.md
Normal file
24
sql/README.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# BEST PRACTICES
|
||||||
|
|
||||||
|
## Create a new table
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
```
|
||||||
|
CREATE TABLE IF NOT EXISTS `table`(
|
||||||
|
`id` int(11) unsigned NOT NULL,
|
||||||
|
`active` BOOLEAN DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
```
|
||||||
|
|
||||||
|
**Boolean datatype in mysql:**
|
||||||
|
Use "TinyInt(1)"" or "Boolean" (this is the same thing)
|
||||||
|
|
||||||
|
"bit(1)" can also work, but it may require a syntax like b'(0) and b'(1) when inserting (not sure).
|
||||||
|
|
||||||
|
If there are multiple booleans in the same table, bit(1) is better, otherwise it's the same result.
|
||||||
|
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
https://www.w3schools.com/sql/sql_datatypes.asp
|
||||||
0
sql/auth/.gitkeep
Normal file
0
sql/auth/.gitkeep
Normal file
0
sql/characters/.gitkeep
Normal file
0
sql/characters/.gitkeep
Normal file
0
sql/world/.gitkeep
Normal file
0
sql/world/.gitkeep
Normal file
947
src/ElunaLuaEngine_SC.cpp
Normal file
947
src/ElunaLuaEngine_SC.cpp
Normal file
@@ -0,0 +1,947 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
* option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
* more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along
|
||||||
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Chat.h"
|
||||||
|
#include "ElunaEventMgr.h"
|
||||||
|
#include "Log.h"
|
||||||
|
#include "LuaEngine.h"
|
||||||
|
#include "Pet.h"
|
||||||
|
#include "Player.h"
|
||||||
|
#include "ScriptMgr.h"
|
||||||
|
#include "ScriptedGossip.h"
|
||||||
|
|
||||||
|
class Eluna_AllCreatureScript : public AllCreatureScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_AllCreatureScript() : AllCreatureScript("Eluna_AllCreatureScript") { }
|
||||||
|
|
||||||
|
// Creature
|
||||||
|
bool CanCreatureGossipHello(Player* player, Creature* creature) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnGossipHello(player, creature))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanCreatureGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnGossipSelect(player, creature, sender, action))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanCreatureGossipSelectCode(Player* player, Creature* creature, uint32 sender, uint32 action, const char* code) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnGossipSelectCode(player, creature, sender, action, code))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnCreatureAddWorld(Creature* creature) override
|
||||||
|
{
|
||||||
|
sEluna->OnAddToWorld(creature);
|
||||||
|
|
||||||
|
if (creature->IsGuardian() && creature->ToTempSummon() && creature->ToTempSummon()->GetSummonerGUID().IsPlayer())
|
||||||
|
sEluna->OnPetAddedToWorld(creature->ToTempSummon()->GetSummonerUnit()->ToPlayer(), creature);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnCreatureRemoveWorld(Creature* creature) override
|
||||||
|
{
|
||||||
|
sEluna->OnRemoveFromWorld(creature);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanCreatureQuestAccept(Player* player, Creature* creature, Quest const* quest) override
|
||||||
|
{
|
||||||
|
sEluna->OnQuestAccept(player, creature, quest);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanCreatureQuestReward(Player* player, Creature* creature, Quest const* quest, uint32 opt) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnQuestReward(player, creature, quest, opt))
|
||||||
|
{
|
||||||
|
ClearGossipMenuFor(player);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
CreatureAI* GetCreatureAI(Creature* creature) const override
|
||||||
|
{
|
||||||
|
if (CreatureAI* luaAI = sEluna->GetAI(creature))
|
||||||
|
return luaAI;
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_AllGameObjectScript : public AllGameObjectScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_AllGameObjectScript() : AllGameObjectScript("Eluna_AllGameObjectScript") { }
|
||||||
|
|
||||||
|
void OnGameObjectAddWorld(GameObject* go) override
|
||||||
|
{
|
||||||
|
sEluna->OnAddToWorld(go);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnGameObjectRemoveWorld(GameObject* go) override
|
||||||
|
{
|
||||||
|
sEluna->OnRemoveFromWorld(go);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnGameObjectUpdate(GameObject* go, uint32 diff) override
|
||||||
|
{
|
||||||
|
sEluna->UpdateAI(go, diff);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanGameObjectGossipHello(Player* player, GameObject* go) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnGossipHello(player, go))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (sEluna->OnGameObjectUse(player, go))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnGameObjectDamaged(GameObject* go, Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnDamaged(go, player);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnGameObjectDestroyed(GameObject* go, Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnDestroyed(go, player);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnGameObjectLootStateChanged(GameObject* go, uint32 state, Unit* /*unit*/) override
|
||||||
|
{
|
||||||
|
sEluna->OnLootStateChanged(go, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnGameObjectStateChanged(GameObject* go, uint32 state) override
|
||||||
|
{
|
||||||
|
sEluna->OnGameObjectStateChanged(go, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanGameObjectQuestAccept(Player* player, GameObject* go, Quest const* quest) override
|
||||||
|
{
|
||||||
|
sEluna->OnQuestAccept(player, go, quest);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanGameObjectGossipSelect(Player* player, GameObject* go, uint32 sender, uint32 action) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnGossipSelect(player, go, sender, action))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanGameObjectGossipSelectCode(Player* player, GameObject* go, uint32 sender, uint32 action, const char* code) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnGossipSelectCode(player, go, sender, action, code))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanGameObjectQuestReward(Player* player, GameObject* go, Quest const* quest, uint32 opt) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnQuestAccept(player, go, quest))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (sEluna->OnQuestReward(player, go, quest, opt))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
GameObjectAI* GetGameObjectAI(GameObject* go) const override
|
||||||
|
{
|
||||||
|
sEluna->OnSpawn(go);
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_AllItemScript : public AllItemScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_AllItemScript() : AllItemScript("Eluna_AllItemScript") { }
|
||||||
|
|
||||||
|
bool CanItemQuestAccept(Player* player, Item* item, Quest const* quest) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnQuestAccept(player, item, quest))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanItemUse(Player* player, Item* item, SpellCastTargets const& targets) override
|
||||||
|
{
|
||||||
|
if (!sEluna->OnUse(player, item, targets))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanItemExpire(Player* player, ItemTemplate const* proto) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnExpire(player, proto))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanItemRemove(Player* player, Item* item) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnRemove(player, item))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnItemGossipSelect(Player* player, Item* item, uint32 sender, uint32 action) override
|
||||||
|
{
|
||||||
|
sEluna->HandleGossipSelectOption(player, item, sender, action, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnItemGossipSelectCode(Player* player, Item* item, uint32 sender, uint32 action, const char* code) override
|
||||||
|
{
|
||||||
|
sEluna->HandleGossipSelectOption(player, item, sender, action, code);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_AllMapScript : public AllMapScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_AllMapScript() : AllMapScript("Eluna_AllMapScript") { }
|
||||||
|
|
||||||
|
void OnBeforeCreateInstanceScript(InstanceMap* instanceMap, InstanceScript* instanceData, bool /*load*/, std::string /*data*/, uint32 /*completedEncounterMask*/) override
|
||||||
|
{
|
||||||
|
instanceData = sEluna->GetInstanceData(instanceMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDestroyInstance(MapInstanced* /*mapInstanced*/, Map* map) override
|
||||||
|
{
|
||||||
|
sEluna->FreeInstanceId(map->GetInstanceId());
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnCreateMap(Map* map) override
|
||||||
|
{
|
||||||
|
sEluna->OnCreate(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDestroyMap(Map* map) override
|
||||||
|
{
|
||||||
|
sEluna->OnDestroy(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnPlayerEnterAll(Map* map, Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnPlayerEnter(map, player);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnPlayerLeaveAll(Map* map, Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnPlayerLeave(map, player);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnMapUpdate(Map* map, uint32 diff) override
|
||||||
|
{
|
||||||
|
sEluna->OnUpdate(map, diff);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_AuctionHouseScript : public AuctionHouseScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_AuctionHouseScript() : AuctionHouseScript("Eluna_AuctionHouseScript") { }
|
||||||
|
|
||||||
|
void OnAuctionAdd(AuctionHouseObject* ah, AuctionEntry* entry) override
|
||||||
|
{
|
||||||
|
sEluna->OnAdd(ah, entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnAuctionRemove(AuctionHouseObject* ah, AuctionEntry* entry) override
|
||||||
|
{
|
||||||
|
sEluna->OnRemove(ah, entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnAuctionSuccessful(AuctionHouseObject* ah, AuctionEntry* entry) override
|
||||||
|
{
|
||||||
|
sEluna->OnSuccessful(ah, entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnAuctionExpire(AuctionHouseObject* ah, AuctionEntry* entry) override
|
||||||
|
{
|
||||||
|
sEluna->OnExpire(ah, entry);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_BGScript : public BGScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_BGScript() : BGScript("Eluna_BGScript") { }
|
||||||
|
|
||||||
|
void OnBattlegroundStart(Battleground* bg) override
|
||||||
|
{
|
||||||
|
sEluna->OnBGStart(bg, bg->GetBgTypeID(), bg->GetInstanceID());
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnBattlegroundEnd(Battleground* bg, TeamId winnerTeam) override
|
||||||
|
{
|
||||||
|
sEluna->OnBGEnd(bg, bg->GetBgTypeID(), bg->GetInstanceID(), winnerTeam);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnBattlegroundDestroy(Battleground* bg) override
|
||||||
|
{
|
||||||
|
sEluna->OnBGDestroy(bg, bg->GetBgTypeID(), bg->GetInstanceID());
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnBattlegroundCreate(Battleground* bg) override
|
||||||
|
{
|
||||||
|
sEluna->OnBGCreate(bg, bg->GetBgTypeID(), bg->GetInstanceID());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_CommandSC : public CommandSC
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_CommandSC() : CommandSC("Eluna_CommandSC") { }
|
||||||
|
|
||||||
|
bool CanExecuteCommand(ChatHandler& handler, std::string_view cmdStr) override
|
||||||
|
{
|
||||||
|
if (!sEluna->OnCommand(handler, std::string(cmdStr).c_str()))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_ElunaScript : public ElunaScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_ElunaScript() : ElunaScript("Eluna_ElunaScript") { }
|
||||||
|
|
||||||
|
// Weather
|
||||||
|
void OnWeatherChange(Weather* weather, WeatherState state, float grade) override
|
||||||
|
{
|
||||||
|
sEluna->OnChange(weather, weather->GetZone(), state, grade);
|
||||||
|
}
|
||||||
|
|
||||||
|
// AreaTriger
|
||||||
|
bool CanAreaTrigger(Player* player, AreaTrigger const* trigger) override
|
||||||
|
{
|
||||||
|
if (sEluna->OnAreaTrigger(player, trigger))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_GameEventScript : public GameEventScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_GameEventScript() : GameEventScript("Eluna_GameEventScript") { }
|
||||||
|
|
||||||
|
void OnEventStart(uint16 eventID)
|
||||||
|
{
|
||||||
|
sEluna->OnGameEventStart(eventID);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnEventStop(uint16 eventID)
|
||||||
|
{
|
||||||
|
sEluna->OnGameEventStop(eventID);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_GroupScript : public GroupScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_GroupScript() : GroupScript("Eluna_GroupScript") { }
|
||||||
|
|
||||||
|
void OnAddMember(Group* group, ObjectGuid guid) override
|
||||||
|
{
|
||||||
|
sEluna->OnAddMember(group, guid);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnInviteMember(Group* group, ObjectGuid guid) override
|
||||||
|
{
|
||||||
|
sEluna->OnInviteMember(group, guid);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnRemoveMember(Group* group, ObjectGuid guid, RemoveMethod method, ObjectGuid /* kicker */, const char* /* reason */) override
|
||||||
|
{
|
||||||
|
sEluna->OnRemoveMember(group, guid, method);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnChangeLeader(Group* group, ObjectGuid newLeaderGuid, ObjectGuid oldLeaderGuid) override
|
||||||
|
{
|
||||||
|
sEluna->OnChangeLeader(group, newLeaderGuid, oldLeaderGuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDisband(Group* group) override
|
||||||
|
{
|
||||||
|
sEluna->OnDisband(group);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_GuildScript : public GuildScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_GuildScript() : GuildScript("Eluna_GuildScript") { }
|
||||||
|
|
||||||
|
void OnAddMember(Guild* guild, Player* player, uint8& plRank) override
|
||||||
|
{
|
||||||
|
sEluna->OnAddMember(guild, player, plRank);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnRemoveMember(Guild* guild, Player* player, bool isDisbanding, bool /*isKicked*/) override
|
||||||
|
{
|
||||||
|
sEluna->OnRemoveMember(guild, player, isDisbanding);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnMOTDChanged(Guild* guild, const std::string& newMotd) override
|
||||||
|
{
|
||||||
|
sEluna->OnMOTDChanged(guild, newMotd);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnInfoChanged(Guild* guild, const std::string& newInfo) override
|
||||||
|
{
|
||||||
|
sEluna->OnInfoChanged(guild, newInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnCreate(Guild* guild, Player* leader, const std::string& name) override
|
||||||
|
{
|
||||||
|
sEluna->OnCreate(guild, leader, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDisband(Guild* guild) override
|
||||||
|
{
|
||||||
|
sEluna->OnDisband(guild);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnMemberWitdrawMoney(Guild* guild, Player* player, uint32& amount, bool isRepair) override
|
||||||
|
{
|
||||||
|
sEluna->OnMemberWitdrawMoney(guild, player, amount, isRepair);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnMemberDepositMoney(Guild* guild, Player* player, uint32& amount) override
|
||||||
|
{
|
||||||
|
sEluna->OnMemberDepositMoney(guild, player, amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnItemMove(Guild* guild, Player* player, Item* pItem, bool isSrcBank, uint8 srcContainer, uint8 srcSlotId,
|
||||||
|
bool isDestBank, uint8 destContainer, uint8 destSlotId) override
|
||||||
|
{
|
||||||
|
sEluna->OnItemMove(guild, player, pItem, isSrcBank, srcContainer, srcSlotId, isDestBank, destContainer, destSlotId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnEvent(Guild* guild, uint8 eventType, ObjectGuid::LowType playerGuid1, ObjectGuid::LowType playerGuid2, uint8 newRank) override
|
||||||
|
{
|
||||||
|
sEluna->OnEvent(guild, eventType, playerGuid1, playerGuid2, newRank);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnBankEvent(Guild* guild, uint8 eventType, uint8 tabId, ObjectGuid::LowType playerGuid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId) override
|
||||||
|
{
|
||||||
|
sEluna->OnBankEvent(guild, eventType, tabId, playerGuid, itemOrMoney, itemStackCount, destTabId);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_LootScript : public LootScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_LootScript() : LootScript("Eluna_LootScript") { }
|
||||||
|
|
||||||
|
void OnLootMoney(Player* player, uint32 gold) override
|
||||||
|
{
|
||||||
|
sEluna->OnLootMoney(player, gold);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_MiscScript : public MiscScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_MiscScript() : MiscScript("Eluna_MiscScript") { }
|
||||||
|
|
||||||
|
void GetDialogStatus(Player* player, Object* questgiver) override
|
||||||
|
{
|
||||||
|
if (questgiver->GetTypeId() == TYPEID_GAMEOBJECT)
|
||||||
|
sEluna->GetDialogStatus(player, questgiver->ToGameObject());
|
||||||
|
else if (questgiver->GetTypeId() == TYPEID_UNIT)
|
||||||
|
sEluna->GetDialogStatus(player, questgiver->ToCreature());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_PetScript : public PetScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_PetScript() : PetScript("Eluna_PetScript") { }
|
||||||
|
|
||||||
|
void OnPetAddToWorld(Pet* pet) override
|
||||||
|
{
|
||||||
|
sEluna->OnPetAddedToWorld(pet->GetOwner(), pet);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_PlayerScript : public PlayerScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_PlayerScript() : PlayerScript("Eluna_PlayerScript") { }
|
||||||
|
|
||||||
|
void OnPlayerResurrect(Player* player, float /*restore_percent*/, bool /*applySickness*/) override
|
||||||
|
{
|
||||||
|
sEluna->OnResurrect(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanPlayerUseChat(Player* player, uint32 type, uint32 lang, std::string& msg) override
|
||||||
|
{
|
||||||
|
if (type != CHAT_MSG_SAY && type != CHAT_MSG_YELL && type != CHAT_MSG_EMOTE)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (!sEluna->OnChat(player, type, lang, msg))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanPlayerUseChat(Player* player, uint32 type, uint32 lang, std::string& msg, Player* target) override
|
||||||
|
{
|
||||||
|
if (!sEluna->OnChat(player, type, lang, msg, target))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanPlayerUseChat(Player* player, uint32 type, uint32 lang, std::string& msg, Group* group) override
|
||||||
|
{
|
||||||
|
if (!sEluna->OnChat(player, type, lang, msg, group))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanPlayerUseChat(Player* player, uint32 type, uint32 lang, std::string& msg, Guild* guild) override
|
||||||
|
{
|
||||||
|
if (!sEluna->OnChat(player, type, lang, msg, guild))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanPlayerUseChat(Player* player, uint32 type, uint32 lang, std::string& msg, Channel* channel) override
|
||||||
|
{
|
||||||
|
if (!sEluna->OnChat(player, type, lang, msg, channel))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnLootItem(Player* player, Item* item, uint32 count, ObjectGuid lootguid) override
|
||||||
|
{
|
||||||
|
sEluna->OnLootItem(player, item, count, lootguid);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnPlayerLearnTalents(Player* player, uint32 talentId, uint32 talentRank, uint32 spellid) override
|
||||||
|
{
|
||||||
|
sEluna->OnLearnTalents(player, talentId, talentRank, spellid);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanUseItem(Player* player, ItemTemplate const* proto, InventoryResult& result) override
|
||||||
|
{
|
||||||
|
result = sEluna->OnCanUseItem(player, proto->ItemId);
|
||||||
|
return result != EQUIP_ERR_OK ? false : true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnEquip(Player* player, Item* it, uint8 bag, uint8 slot, bool /*update*/) override
|
||||||
|
{
|
||||||
|
sEluna->OnEquip(player, it, bag, slot);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnPlayerEnterCombat(Player* player, Unit* enemy) override
|
||||||
|
{
|
||||||
|
sEluna->OnPlayerEnterCombat(player, enemy);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnPlayerLeaveCombat(Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnPlayerLeaveCombat(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanRepopAtGraveyard(Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnRepop(player);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnQuestAbandon(Player* player, uint32 questId) override
|
||||||
|
{
|
||||||
|
sEluna->OnQuestAbandon(player, questId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnMapChanged(Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnMapChanged(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnGossipSelect(Player* player, uint32 menu_id, uint32 sender, uint32 action) override
|
||||||
|
{
|
||||||
|
sEluna->HandleGossipSelectOption(player, menu_id, sender, action, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnGossipSelectCode(Player* player, uint32 menu_id, uint32 sender, uint32 action, const char* code) override
|
||||||
|
{
|
||||||
|
sEluna->HandleGossipSelectOption(player, menu_id, sender, action, code);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnPVPKill(Player* killer, Player* killed) override
|
||||||
|
{
|
||||||
|
sEluna->OnPVPKill(killer, killed);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnCreatureKill(Player* killer, Creature* killed) override
|
||||||
|
{
|
||||||
|
sEluna->OnCreatureKill(killer, killed);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnPlayerKilledByCreature(Creature* killer, Player* killed) override
|
||||||
|
{
|
||||||
|
sEluna->OnPlayerKilledByCreature(killer, killed);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnLevelChanged(Player* player, uint8 oldLevel) override
|
||||||
|
{
|
||||||
|
sEluna->OnLevelChanged(player, oldLevel);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnFreeTalentPointsChanged(Player* player, uint32 points) override
|
||||||
|
{
|
||||||
|
sEluna->OnFreeTalentPointsChanged(player, points);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnTalentsReset(Player* player, bool noCost) override
|
||||||
|
{
|
||||||
|
sEluna->OnTalentsReset(player, noCost);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnMoneyChanged(Player* player, int32& amount) override
|
||||||
|
{
|
||||||
|
sEluna->OnMoneyChanged(player, amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnGiveXP(Player* player, uint32& amount, Unit* victim) override
|
||||||
|
{
|
||||||
|
sEluna->OnGiveXP(player, amount, victim);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnReputationChange(Player* player, uint32 factionID, int32& standing, bool incremental) override
|
||||||
|
{
|
||||||
|
return sEluna->OnReputationChange(player, factionID, standing, incremental);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDuelRequest(Player* target, Player* challenger) override
|
||||||
|
{
|
||||||
|
sEluna->OnDuelRequest(target, challenger);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDuelStart(Player* player1, Player* player2) override
|
||||||
|
{
|
||||||
|
sEluna->OnDuelStart(player1, player2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDuelEnd(Player* winner, Player* loser, DuelCompleteType type) override
|
||||||
|
{
|
||||||
|
sEluna->OnDuelEnd(winner, loser, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnEmote(Player* player, uint32 emote) override
|
||||||
|
{
|
||||||
|
sEluna->OnEmote(player, emote);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnTextEmote(Player* player, uint32 textEmote, uint32 emoteNum, ObjectGuid guid) override
|
||||||
|
{
|
||||||
|
sEluna->OnTextEmote(player, textEmote, emoteNum, guid);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnSpellCast(Player* player, Spell* spell, bool skipCheck) override
|
||||||
|
{
|
||||||
|
sEluna->OnSpellCast(player, spell, skipCheck);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnLogin(Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnLogin(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnLogout(Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnLogout(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnCreate(Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnCreate(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnSave(Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnSave(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDelete(ObjectGuid guid, uint32 /*accountId*/) override
|
||||||
|
{
|
||||||
|
sEluna->OnDelete(guid.GetCounter());
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnBindToInstance(Player* player, Difficulty difficulty, uint32 mapid, bool permanent) override
|
||||||
|
{
|
||||||
|
sEluna->OnBindToInstance(player, difficulty, mapid, permanent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnUpdateZone(Player* player, uint32 newZone, uint32 newArea) override
|
||||||
|
{
|
||||||
|
sEluna->OnUpdateZone(player, newZone, newArea);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnFirstLogin(Player* player) override
|
||||||
|
{
|
||||||
|
sEluna->OnFirstLogin(player);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_ServerScript : public ServerScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_ServerScript() : ServerScript("Eluna_ServerScript") { }
|
||||||
|
|
||||||
|
bool CanPacketSend(WorldSession* session, WorldPacket& packet) override
|
||||||
|
{
|
||||||
|
if (!sEluna->OnPacketSend(session, packet))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanPacketReceive(WorldSession* session, WorldPacket& packet) override
|
||||||
|
{
|
||||||
|
if (!sEluna->OnPacketReceive(session, packet))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_SpellSC : public SpellSC
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_SpellSC() : SpellSC("Eluna_SpellSC") { }
|
||||||
|
|
||||||
|
void OnDummyEffect(WorldObject* caster, uint32 spellID, SpellEffIndex effIndex, GameObject* gameObjTarget) override
|
||||||
|
{
|
||||||
|
sEluna->OnDummyEffect(caster, spellID, effIndex, gameObjTarget);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDummyEffect(WorldObject* caster, uint32 spellID, SpellEffIndex effIndex, Creature* creatureTarget) override
|
||||||
|
{
|
||||||
|
sEluna->OnDummyEffect(caster, spellID, effIndex, creatureTarget);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDummyEffect(WorldObject* caster, uint32 spellID, SpellEffIndex effIndex, Item* itemTarget) override
|
||||||
|
{
|
||||||
|
sEluna->OnDummyEffect(caster, spellID, effIndex, itemTarget);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_UnitScript : public UnitScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_UnitScript() : UnitScript("Eluna_UnitScript") { }
|
||||||
|
|
||||||
|
void OnUnitUpdate(Unit* unit, uint32 diff) override
|
||||||
|
{
|
||||||
|
unit->elunaEvents->Update(diff);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_VehicleScript : public VehicleScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_VehicleScript() : VehicleScript("Eluna_VehicleScript") { }
|
||||||
|
|
||||||
|
void OnInstall(Vehicle* veh) override
|
||||||
|
{
|
||||||
|
sEluna->OnInstall(veh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnUninstall(Vehicle* veh) override
|
||||||
|
{
|
||||||
|
sEluna->OnUninstall(veh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnInstallAccessory(Vehicle* veh, Creature* accessory) override
|
||||||
|
{
|
||||||
|
sEluna->OnInstallAccessory(veh, accessory);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnAddPassenger(Vehicle* veh, Unit* passenger, int8 seatId) override
|
||||||
|
{
|
||||||
|
sEluna->OnAddPassenger(veh, passenger, seatId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnRemovePassenger(Vehicle* veh, Unit* passenger) override
|
||||||
|
{
|
||||||
|
sEluna->OnRemovePassenger(veh, passenger);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_WorldObjectScript : public WorldObjectScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_WorldObjectScript() : WorldObjectScript("Eluna_WorldObjectScript") { }
|
||||||
|
|
||||||
|
void OnWorldObjectDestroy(WorldObject* object) override
|
||||||
|
{
|
||||||
|
delete object->elunaEvents;
|
||||||
|
object->elunaEvents = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnWorldObjectCreate(WorldObject* object) override
|
||||||
|
{
|
||||||
|
object->elunaEvents = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnWorldObjectSetMap(WorldObject* object, Map* /*map*/) override
|
||||||
|
{
|
||||||
|
delete object->elunaEvents;
|
||||||
|
|
||||||
|
// On multithread replace this with a pointer to map's Eluna pointer stored in a map
|
||||||
|
object->elunaEvents = new ElunaEventProcessor(&Eluna::GEluna, object);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnWorldObjectResetMap(WorldObject* object) override
|
||||||
|
{
|
||||||
|
delete object->elunaEvents;
|
||||||
|
object->elunaEvents = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnWorldObjectUpdate(WorldObject* object, uint32 diff) override
|
||||||
|
{
|
||||||
|
object->elunaEvents->Update(diff);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Eluna_WorldScript : public WorldScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Eluna_WorldScript() : WorldScript("Eluna_WorldScript") { }
|
||||||
|
|
||||||
|
void OnOpenStateChange(bool open) override
|
||||||
|
{
|
||||||
|
sEluna->OnOpenStateChange(open);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnBeforeConfigLoad(bool reload) override
|
||||||
|
{
|
||||||
|
if (!reload)
|
||||||
|
{
|
||||||
|
///- Initialize Lua Engine
|
||||||
|
LOG_INFO("eluna", "Initialize Eluna Lua Engine...");
|
||||||
|
Eluna::Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
sEluna->OnConfigLoad(reload, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnAfterConfigLoad(bool reload) override
|
||||||
|
{
|
||||||
|
sEluna->OnConfigLoad(reload, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnShutdownInitiate(ShutdownExitCode code, ShutdownMask mask) override
|
||||||
|
{
|
||||||
|
sEluna->OnShutdownInitiate(code, mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnShutdownCancel() override
|
||||||
|
{
|
||||||
|
sEluna->OnShutdownCancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnUpdate(uint32 diff) override
|
||||||
|
{
|
||||||
|
sEluna->OnWorldUpdate(diff);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnStartup() override
|
||||||
|
{
|
||||||
|
sEluna->OnStartup();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnShutdown() override
|
||||||
|
{
|
||||||
|
sEluna->OnShutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnAfterUnloadAllMaps() override
|
||||||
|
{
|
||||||
|
Eluna::Uninitialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnBeforeWorldInitialized() override
|
||||||
|
{
|
||||||
|
///- Run eluna scripts.
|
||||||
|
// in multithread foreach: run scripts
|
||||||
|
sEluna->RunScripts();
|
||||||
|
sEluna->OnConfigLoad(false, false); // Must be done after Eluna is initialized and scripts have run.
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Group all custom scripts
|
||||||
|
void AddSC_ElunaLuaEngine()
|
||||||
|
{
|
||||||
|
new Eluna_AllCreatureScript();
|
||||||
|
new Eluna_AllGameObjectScript();
|
||||||
|
new Eluna_AllItemScript();
|
||||||
|
new Eluna_AllMapScript();
|
||||||
|
new Eluna_AuctionHouseScript();
|
||||||
|
new Eluna_BGScript();
|
||||||
|
new Eluna_CommandSC();
|
||||||
|
new Eluna_ElunaScript();
|
||||||
|
new Eluna_GameEventScript();
|
||||||
|
new Eluna_GroupScript();
|
||||||
|
new Eluna_GuildScript();
|
||||||
|
new Eluna_LootScript();
|
||||||
|
new Eluna_MiscScript();
|
||||||
|
new Eluna_PetScript();
|
||||||
|
new Eluna_PlayerScript();
|
||||||
|
new Eluna_ServerScript();
|
||||||
|
new Eluna_SpellSC();
|
||||||
|
new Eluna_UnitScript();
|
||||||
|
new Eluna_VehicleScript();
|
||||||
|
new Eluna_WorldObjectScript();
|
||||||
|
new Eluna_WorldScript();
|
||||||
|
}
|
||||||
7
src/LuaEngine/.editorconfig
Normal file
7
src/LuaEngine/.editorconfig
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
tab_width = 4
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
0
src/LuaEngine/docs/ElunaDoc/__init__.py
Normal file
0
src/LuaEngine/docs/ElunaDoc/__init__.py
Normal file
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user