mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
[Sync] Build system and docs proj sync
This commit is contained in:
parent
6e2552ce33
commit
b6c6eaebab
20 changed files with 1131 additions and 277 deletions
27
.travis.yml
27
.travis.yml
|
|
@ -1,7 +1,7 @@
|
|||
language: cpp
|
||||
|
||||
before_install:
|
||||
- bash .travis.sh
|
||||
# use docker in travis
|
||||
sudo: false
|
||||
|
||||
# reduce clone time by only getting the latest commit and not the whole history (default for travis is 100)
|
||||
git:
|
||||
|
|
@ -10,23 +10,30 @@ git:
|
|||
# send notifications to stack as well as email
|
||||
notifications:
|
||||
slack: getmangos:yRgNBSgRQVh8WdfGEbT08Hit
|
||||
|
||||
# only run travis on the master branch
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- develop21
|
||||
|
||||
# build on both Linux and OSX (finally)
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
- osx
|
||||
|
||||
# build with both gcc and clang to ensure compatibility
|
||||
compiler:
|
||||
- gcc
|
||||
- clang
|
||||
|
||||
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- gcc-4.8
|
||||
- g++-4.8
|
||||
- clang
|
||||
|
||||
before_install:
|
||||
- bash .travis.sh
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$CC" = "gcc" ] ; then export CC=gcc-4.8 CXX=g++-4.8 ; fi
|
||||
|
||||
script:
|
||||
- test -d _build || mkdir _build
|
||||
- test -d _install || mkdir _install
|
||||
|
|
|
|||
|
|
@ -19,7 +19,8 @@
|
|||
|
||||
project(MaNGOS)
|
||||
set(MANGOS_VERSION 0.21)
|
||||
|
||||
set(MANGOS_EXP "CATA")
|
||||
add_definitions(-DCATA)
|
||||
# CMake policies
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
# Until CMake 3.0 is the standard
|
||||
|
|
@ -50,7 +51,7 @@ option(SCRIPT_LIB_ELUNA "Compile with support for Eluna scripts" OFF)
|
|||
option(SCRIPT_LIB_SD2 "Compile with support for ScriptDev2 scripts" ON)
|
||||
#option(SCRIPT_LIB_SD3 "Compile with support for ScriptDev3 scripts" OFF)
|
||||
option(PLAYERBOTS "Enable Player Bots" OFF)
|
||||
option(SOAP "Enable remote access via SOAP" ON)
|
||||
option(SOAP "Enable remote access via SOAP" OFF)
|
||||
# Hidden option to enable/disable PCH. DEV ONLY!
|
||||
set(PCH ON)
|
||||
set(USE_STORMLIB ON)
|
||||
|
|
@ -107,6 +108,9 @@ if(ACE_USE_EXTERNAL)
|
|||
endif()
|
||||
else()
|
||||
include(cmake/ImportACE.cmake)
|
||||
if(NOT(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD"))
|
||||
add_definitions(-DHAVE_ACE_STACK_TRACE_H)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(POSTGRESQL)
|
||||
|
|
@ -144,6 +148,8 @@ else()
|
|||
set(GIT_REVISION "Git not found")
|
||||
endif()
|
||||
|
||||
set(DEFINITIONS ${DEFINITIONS} CATA)
|
||||
|
||||
message(STATUS "MaNGOS-Core revision : ${GIT_REVISION}")
|
||||
message(STATUS "Install server to : ${CMAKE_INSTALL_PREFIX}")
|
||||
message(STATUS "Install configs to : ${CONF_INSTALL_DIR}")
|
||||
|
|
|
|||
|
|
@ -150,10 +150,10 @@ respects for all of the code used other than [OpenSSL][48].
|
|||
[7]: http://www.cppreference.com/ "C / C++ reference"
|
||||
|
||||
[10]: https://getmangos.eu/ "mangos · project site"
|
||||
[12]: http://github.com/mangosthree "mangos-three· github organization"
|
||||
[13]: http://github.com/mangosthree/server "mangos three · server repository"
|
||||
[15]: http://github.com/mangosthree/database "mangos three · content database repository"
|
||||
[16]: https://travis-ci.org/mangosthree/server "Travis CI · mangos-three build status"
|
||||
[12]: http://github.com/mangosthree "MaNGOS Three· github organization"
|
||||
[13]: http://github.com/mangosthree/server "MaNGOS Three · server repository"
|
||||
[15]: http://github.com/mangosthree/database "MaNGOS Three · content database repository"
|
||||
[16]: https://travis-ci.org/mangosthree/server "Travis CI · MaNGOS Three build status"
|
||||
[17]: https://scan.coverity.com/ "Coverity Scan · Static Code Analysis"
|
||||
|
||||
[19]: http://www.cmake.org/ "CMake · Cross Platform Make"
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
ROADMAP and goals for 0.21.0 release
|
||||
------------
|
||||
|
||||
* Completely synchronize fixes between mangos repositories (zero, one, two)
|
||||
* Implement void storage
|
||||
* Implement archaelogy
|
||||
* warden system
|
||||
* Implement passive anticheat (warden system is not enough to stop jockers...).
|
||||
* Phasing system port from trinitycore
|
||||
* Add missing opcodes.
|
||||
* Implement linked_spell_trigger database table implementation (this will accessible in all mangos) for simple spells implementation.
|
||||
* Implement new gossip script wrapper in scriptmgr to make code style better.
|
||||
* Implement new event in EVENTAI which would let better integrate gossips
|
||||
* Rework/retest all classes spells
|
||||
|
||||
41
appveyor.yml
Normal file
41
appveyor.yml
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
version: 0.21.{build}
|
||||
|
||||
# Branches to build
|
||||
branches:
|
||||
only:
|
||||
- develop21
|
||||
|
||||
# Specify platform for MySQL check
|
||||
platform:
|
||||
- Win32
|
||||
|
||||
# By default, AppVeyor only comes with 64bit MySQL, but 32 bit compiler.
|
||||
# Download standalone MySQL libraries for compilation.
|
||||
# Probably not the best solution, but it works for now.
|
||||
install:
|
||||
- ps: |
|
||||
if ($env:platform -eq "Win32")
|
||||
{
|
||||
Invoke-WebRequest "http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.28-win32.zip" -OutFile mysql-5.6.28-win32.zip
|
||||
7z e -y mysql-5.6.28-win32.zip mysql-5.6.28-win32/lib -o"C:\Program Files (x86)\MySql\MySQL Server 5.6\lib"
|
||||
7z e -y mysql-5.6.28-win32.zip mysql-5.6.28-win32/include -o"C:\Program Files (x86)\MySql\MySQL Server 5.6\include"
|
||||
}
|
||||
|
||||
# Clone to the specified folder below, and only clone the latest commit without history.
|
||||
clone_folder: c:\mzero\server
|
||||
|
||||
clone_depth: 1
|
||||
|
||||
# Enable parallel builds to speed up the compilation process.
|
||||
build:
|
||||
parallel: true
|
||||
|
||||
# Initialize submodules.
|
||||
before_build:
|
||||
- git submodule update --init --recursive
|
||||
|
||||
# Build core.
|
||||
build_script:
|
||||
- cd c:\mzero\server
|
||||
- cmake -DCMAKE_INSTALL_PREFIX="c:\mzero\build\bin" -DCMAKE_SIZEOF_VOID_P=8
|
||||
- msbuild /m MaNGOS.sln
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
#ifndef HAVE_CONFIG_H
|
||||
#define HAVE_CONFIG_H
|
||||
|
||||
#cmakedefine HAVE_ACE_STACK_TRACE_H
|
||||
|
||||
#cmakedefine USE_MULTI_THREAD_MAP
|
||||
|
||||
#define VERSION "${MANGOS_VERSION}"
|
||||
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
Auction house bot
|
||||
-----------------
|
||||
For testing purposes and low population home servers, *mangos-zero* provides an
|
||||
For testing purposes and low population home servers, *mangos* provides an
|
||||
auction house bot, which will provide a set of items on the auction houses based
|
||||
on various configuration settings.
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ find_package(Doxygen)
|
|||
|
||||
if(DOXYGEN_FOUND)
|
||||
set(TOP_SRCDIR ${CMAKE_SOURCE_DIR})
|
||||
set(PACKAGE "MaNGOS Two")
|
||||
set(PACKAGE "MaNGOS Three")
|
||||
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
|
||||
add_custom_target(doc
|
||||
|
|
|
|||
|
|
@ -1,4 +1,16 @@
|
|||
MaNGOS 0.18 (?? ??? 20??)
|
||||
MaNGOS Three Changelog
|
||||
======================
|
||||
This change log references the relevant changes (bug and security fixes) done
|
||||
in recent versions.
|
||||
|
||||
0.21 (2016-xx-01) - "The Battle for the Elemental Planes"
|
||||
---------------------------------------------------------
|
||||
Many Thanks to all the groups and individuals who contributed to this release.
|
||||
- xxx+ Commits since the previous release.
|
||||
|
||||
* TODO: Add full list of fixes from Rel18 to 21 for both Server, Scripts and Database
|
||||
|
||||
MaNGOS 0.18 (?? ??? 20??)
|
||||
|
||||
MaNGOS 0.18 - adds further improvements to the
|
||||
server core as well as to the majority of game classes and the game content
|
||||
149
doc/CodingStandard.md
Normal file
149
doc/CodingStandard.md
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
Coding standards
|
||||
================
|
||||
It is highly recommended to use a single *coding style* for the whole project
|
||||
source code. Exceptions are allowed for external libraries used in the project,
|
||||
but it is generally advisable all contributors to use this style.
|
||||
|
||||
Tab Size
|
||||
--------
|
||||
First of all, we use spaces. Tabs are four-character width. That is, no 8-space
|
||||
tabs, no 2-space tabs. Four. Unfortunately there's no such thing as 'standard
|
||||
tab width', and 4-space indenting looks best from our point of view, besides MSVC'
|
||||
editor has this setting by default.
|
||||
|
||||
Line length
|
||||
-----------
|
||||
Then, please use 80-character wide lines. If your line is way longer than that,
|
||||
please split it. If it's just a little longer, so be it. The continuation text,
|
||||
if you're splitting text inside the brackets, should be indented to the position
|
||||
after the opening bracket:
|
||||
|
||||
printf("This is a example of how we split lines longer than %d characters\n"
|
||||
"into several so that they won't exceed this limit.\n",
|
||||
max_sourcecode_width);
|
||||
|
||||
If you have long strings, you can split them as shown above, just remember that
|
||||
C/C++ compilers will glue together several strings that come without any special
|
||||
characters between them into one.
|
||||
|
||||
Brackets
|
||||
--------
|
||||
Now we use symmetric bracket placement, closing bracket under the opening bracket:
|
||||
|
||||
if (something)
|
||||
{
|
||||
...;
|
||||
}
|
||||
else
|
||||
{
|
||||
...;
|
||||
}
|
||||
|
||||
switch (x)
|
||||
{
|
||||
case 1:
|
||||
printf("X is one!\n");
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
printf("X is two!\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 1; i < 3; ++i)
|
||||
{
|
||||
printf("I is %i!\n", i);
|
||||
}
|
||||
|
||||
Every bracketed block moves its contents by one tab to right. Labels (but not case
|
||||
selectors or 'public:/private:/protected' C++ keywords) are placed at the leftmost
|
||||
indention position for the current block, that is, in the same position where
|
||||
enclosing brackets are.
|
||||
|
||||
Also please don't use brackets around a single statement because it clutters the
|
||||
code with unneeded stuff; use brackets only when using non-obvious constructs,
|
||||
like:
|
||||
|
||||
if (...)
|
||||
{
|
||||
if (...)
|
||||
...;
|
||||
}
|
||||
else
|
||||
...;
|
||||
|
||||
Also, please place one space before opening parenthesis. Before, but not after
|
||||
(the `if ( blah )` style is a no-no!).
|
||||
|
||||
Class declaration and constructors
|
||||
----------------------------------
|
||||
Here is an example:
|
||||
|
||||
class Class : public Parent
|
||||
{
|
||||
public:
|
||||
Class() : Parent(0),
|
||||
m_field(1)
|
||||
{
|
||||
func();
|
||||
}
|
||||
|
||||
void func() {}
|
||||
|
||||
private:
|
||||
int m_field;
|
||||
};
|
||||
|
||||
Please follow the following rules for classes:
|
||||
|
||||
* space before and after : in class parents list and constructor body
|
||||
* next line and indent for class field initialization list
|
||||
* indent for public:/private:/protected: section with additional indent
|
||||
for section content
|
||||
* empty or short function body can be at same line with declaration in
|
||||
in-class definition case
|
||||
|
||||
Code documentation with Doxygen
|
||||
-------------------------------
|
||||
Now, please use DoxyGen-type comments. This is a bit similar to JavaDoc comments
|
||||
and to other automatic code documentation generation tools. One-line documentation
|
||||
should be placed in `///` (three slashes) comments if the comment is above the
|
||||
function/member, if you want the comment on the same line you should use `///<`
|
||||
instead, multi-line comments should be put in a `/** ... */` block (slash-two-stars).
|
||||
|
||||
Here's a example that shows most useful keywords that you can use in a comment block:
|
||||
|
||||
/**
|
||||
* This function does something very useful. If used with care, this function
|
||||
* has the potential to make your programs really really useful.
|
||||
*
|
||||
* \arg \c x
|
||||
* The x argument specifies a integer that is transformed into something useful.
|
||||
* \arg \c y
|
||||
* This argument, if not NULL, is a pointer to a free memory area where this
|
||||
* function will put something really really useful.
|
||||
* \return
|
||||
* A useful value, or NULL if error.
|
||||
*
|
||||
* Here is a example that you can paste into your code so that it saves you a
|
||||
* lot of typing:
|
||||
*
|
||||
* \verb atim (Remove the space)
|
||||
* for (int x = 0; x < 100; ++x)
|
||||
* printf("DoSomethingUseful%d = %s\n", i,
|
||||
* DoSomethingUseful(i, &ScratchPad));
|
||||
* \endve rbatim (Remove the space)
|
||||
*
|
||||
* Paragraphs are split from each other by inserting a empty line. Also some HTML
|
||||
* tags are supported, like <ol> [<li>...] </ol> and <ul> [<li>...] </ul> for
|
||||
* ordered (numbered) and unordered (dotted) lists respectively.
|
||||
*/
|
||||
char *DoSomethingUseful(int x, void *y);
|
||||
|
||||
/// This is a one-line comment
|
||||
void Something();
|
||||
|
||||
Use normal comments like `//` and `/* ... */` only if you want to make a comment
|
||||
that should not go into the automatically annotated code (like:
|
||||
`/* shit ... this does not work */`).
|
||||
953
doc/Doxyfile.in
953
doc/Doxyfile.in
File diff suppressed because it is too large
Load diff
|
|
@ -2,8 +2,8 @@ mangos EventAI scripting
|
|||
========================
|
||||
**Last Updated**: September 25, 2013
|
||||
|
||||
*mangos-zero* provides a simple scripting feature through a set of event-based
|
||||
commands from with the database.
|
||||
*mangos* provides a simple scripting feature through a set of event-based
|
||||
commands from within the database.
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Database script processing
|
||||
==========================
|
||||
In addition to *EventAI*, *mangos-zero* provides script processing for various
|
||||
In addition to *EventAI*, *mangos* provides script processing for various
|
||||
types of game content. These scripts can be executed when creatures move or die,
|
||||
when events are executed, and game object spawns/templates are used, on gossip
|
||||
menu selections, when starting and completing quests, and when casting spells.
|
||||
|
|
@ -61,8 +61,10 @@ Value | Name | Notes
|
|||
-----------------
|
||||
4 multipurpose fields, storing raw data as signed integer values.
|
||||
|
||||
*Note*: currently used only for text ids for the command `SCRIPT_COMMAND_TALK`,
|
||||
and in relation with the command `SCRIPT_COMMAND_TERMINATE_SCRIPT`.
|
||||
*Note*: used for text ids SCRIPT_COMMAND_TALK (0),
|
||||
for emote ids in SCRIPT_COMMAND_EMOTE (1),
|
||||
for spell ids in SCRIPT_COMMAND_CAST_SPELL (15)
|
||||
and as waittime with SCRIPT_COMMAND_TERMINATE_SCRIPT (31)
|
||||
|
||||
`x`, `y`, `z` and `o` columns
|
||||
-----------------------------
|
||||
|
|
@ -127,45 +129,51 @@ where `A -> B` means that the command is executed from A with B as target.
|
|||
Commands and their parameters
|
||||
-----------------------------
|
||||
|
||||
ID | Name | Parameters
|
||||
-- | -------------------------------------- | -------------------------------------
|
||||
0 | SCRIPT_COMMAND_TALK | resultingSource = WorldObject, resultingTarget = Unit/none, `dataint` = text entry from db_script_string -table. `dataint2`-`dataint4` optionally, for random selection of text
|
||||
1 | SCRIPT_COMMAND_EMOTE | resultingSource = Unit, resultingTarget = Unit/none, `datalong` = emote_id, dataint1-dataint4 = optionally for random selection of emote
|
||||
2 | SCRIPT_COMMAND_FIELD_SET | source = any, `datalong` = field_id, `datalong2` = field value
|
||||
3 | SCRIPT_COMMAND_MOVE_TO | resultingSource = Creature. If position is very near to current position, or x=y=z=0, then only orientation is changed. `datalong2` = travel_speed*100 (use 0 for creature default movement). `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: teleport unit to position `x`/`y`/`z`/`o`
|
||||
4 | SCRIPT_COMMAND_FLAG_SET | source = any. `datalong` = field_id, `datalong2` = bit mask
|
||||
5 | SCRIPT_COMMAND_FLAG_REMOVE | source = any. `datalong` = field_id, `datalong2` = bit mask
|
||||
6 | SCRIPT_COMMAND_TELEPORT_TO | source or target with Player. `datalong` = map_id, x/y/z
|
||||
7 | SCRIPT_COMMAND_QUEST_EXPLORED | one from source or target must be Player, another GO/Creature. `datalong` = quest_id, `datalong2` = distance or 0
|
||||
8 | SCRIPT_COMMAND_KILL_CREDIT | source or target with Player. `datalong` = creature entry, or 0; If 0 the entry of the creature source or target is used, `datalong2` = bool (0=personal credit, 1=group credit)
|
||||
9 | SCRIPT_COMMAND_RESPAWN_GAMEOBJECT | source = any, target = any. `datalong`=db_guid (can be skipped for buddy), `datalong2` = despawn_delay
|
||||
10 | SCRIPT_COMMAND_TEMP_SUMMON_CREATURE | source = any, target = any. `datalong` = creature entry, `datalong2` = despawn_delay, `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: summon as active object
|
||||
11 | SCRIPT_COMMAND_OPEN_DOOR | source = any. `datalong` = db_guid (can be skipped for buddy), `datalong2` = reset_delay
|
||||
12 | SCRIPT_COMMAND_CLOSE_DOOR | source = any. `datalong` = db_guid (can be skipped for buddy), `datalong2` = reset_delay
|
||||
13 | SCRIPT_COMMAND_ACTIVATE_OBJECT | source = unit, target=GO.
|
||||
14 | SCRIPT_COMMAND_REMOVE_AURA | resultingSource = Unit. `datalong` = spell_id
|
||||
15 | SCRIPT_COMMAND_CAST_SPELL | resultingSource = Unit, cast spell at resultingTarget = Unit. `datalong` = spell id, `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: cast triggered
|
||||
16 | SCRIPT_COMMAND_PLAY_SOUND | source = any object, target=any/player. `datalong` = sound_id, `datalong2` (bit mask: 0/1=target-player, 0/2=with distance dependent, 0/4=map wide, 0/8=zone wide; so 1|2 = 3 is target with distance dependent)
|
||||
17 | SCRIPT_COMMAND_CREATE_ITEM | source or target must be player. `datalong` = item entry, `datalong2` = amount
|
||||
18 | SCRIPT_COMMAND_DESPAWN_SELF | resultingSource = Creature. `datalong` = despawn delay
|
||||
19 | SCRIPT_COMMAND_PLAY_MOVIE | target can only be a player. `datalong` = movie id
|
||||
20 | SCRIPT_COMMAND_MOVEMENT | resultingSource = Creature. `datalong` = MovementType (0:idle, 1:random or 2:waypoint), `datalong2` = wanderDistance (for random movement), `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: RandomMovement around current position
|
||||
21 | SCRIPT_COMMAND_SET_ACTIVEOBJECT | resultingSource = Creature. `datalong` = bool 0=off, 1=on
|
||||
22 | SCRIPT_COMMAND_SET_FACTION | resultingSource = Creature. `datalong` = factionId OR 0 to restore original faction from creature_template, `datalong2` = enum TemporaryFactionFlags
|
||||
23 | SCRIPT_COMMAND_MORPH_TO_ENTRY_OR_MODEL | resultingSource = Creature. `datalong` = creature entry/modelid (depend on data_flags) OR 0 to demorph, `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: use datalong value as modelid explicit
|
||||
24 | SCRIPT_COMMAND_MOUNT_TO_ENTRY_OR_MODEL | resultingSource = Creature. `datalong` = creature entry/modelid (depend on data_flags) OR 0 to dismount, `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: use datalong value as modelid explicit
|
||||
25 | SCRIPT_COMMAND_SET_RUN | resultingSource = Creature. `datalong` = bool 0=off, 1=on
|
||||
26 | SCRIPT_COMMAND_ATTACK_START | resultingSource = Creature, resultingTarget = Unit.
|
||||
27 | SCRIPT_COMMAND_GO_LOCK_STATE | resultingSource = GO. `datalong` = flag_go_lock = 0x01, flag_go_unlock = 0x02, flag_go_nonInteract = 0x04, flag_go_interact = 0x08
|
||||
28 | SCRIPT_COMMAND_STAND_STATE | resultingSource = Creature. `datalong` = stand state (enum UnitStandStateType)
|
||||
29 | SCRIPT_COMMAND_MODIFY_NPC_FLAGS | resultingSource = Creature. `datalong` = NPCFlags, `datalong2` = 0x00=toggle, 0x01=add, 0x02=remove
|
||||
30 | SCRIPT_COMMAND_SEND_TAXI_PATH | resultingTarget or Source must be Player. `datalong` = taxi path id
|
||||
31 | SCRIPT_COMMAND_TERMINATE_SCRIPT | `datalong` = search for npc entry if provided, `datalong2` = search distance, `!(data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL)`: if npc not alive found, terminate script, `data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL`: if npc alive found, terminate script, `dataint` = change of waittime (MILLISECONDS) of a current waypoint movement type (negative values will decrease time)
|
||||
32 | SCRIPT_COMMAND_PAUSE_WAYPOINTS | resultingSource must be Creature. `datalong` = 0/1 unpause/pause waypoint movement
|
||||
33 | SCRIPT_COMMAND_RESERVED_1 | reserved for 3.x and later. Do not use!
|
||||
34 | SCRIPT_COMMAND_TERMINATE_COND | `datalong` = condition_id, `datalong2` = fail-quest (if provided this quest will be failed for a player), `!(data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL)`: terminate when condition is true, `data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL`: terminate when condition is false
|
||||
35 | SCRIPT_COMMAND_SEND_AI_EVENT_AROUND | resultingSource = Creature, resultingTarget = Unit, datalong = AIEventType - limited only to EventAI supported events, datalong2 = radius
|
||||
36 | SCRIPT_COMMAND_TURN_TO | resultingSource = Creature, resultingTarget = Unit/none.
|
||||
<table border='1' cellspacing='1' cellpadding='3' bgcolor='#f0f0f0'>
|
||||
<tr bgcolor='#f0f0ff'>
|
||||
<th><b>ID</b></th>
|
||||
<th align='left'><b>Name</b></th>
|
||||
<th align='left'><b>Parameters</b></th>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>0</td><td align='left' valign='middle'>SCRIPT_COMMAND_TALK</td><td align='left' valign='middle'>resultingSource = WorldObject, resultingTarget = Unit/none, `dataint` = text entry from db_script_string -table. `dataint2`-`dataint4` optionally, for random selection of text</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>1</td><td align='left' valign='middle'>SCRIPT_COMMAND_EMOTE</td><td align='left' valign='middle'>resultingSource = Unit, resultingTarget = Unit/none, `datalong` = emote_id, dataint1-dataint4 = optionally for random selection of emote</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>2</td><td align='left' valign='middle'>SCRIPT_COMMAND_FIELD_SET</td><td align='left' valign='middle'>source = any, `datalong` = field_id, `datalong2` = field value</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>3</td><td align='left' valign='middle'>SCRIPT_COMMAND_MOVE_TO</td><td align='left' valign='middle'>resultingSource = Creature. If position is very near to current position, or x=y=z=0, then only orientation is changed. `datalong2` = travel_speed*100 (use 0 for creature default movement). `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: teleport unit to position `x`/`y`/`z`/`o`</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>4</td><td align='left' valign='middle'>SCRIPT_COMMAND_FLAG_SET</td><td align='left' valign='middle'>source = any. `datalong` = field_id, `datalong2` = bit mask</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>5</td><td align='left' valign='middle'>SCRIPT_COMMAND_FLAG_REMOVE</td><td align='left' valign='middle'>source = any. `datalong` = field_id, `datalong2` = bit mask</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>6</td><td align='left' valign='middle'>SCRIPT_COMMAND_TELEPORT_TO</td><td align='left' valign='middle'>source or target with Player. `datalong` = map_id, x/y/z</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>7</td><td align='left' valign='middle'>SCRIPT_COMMAND_QUEST_EXPLORED</td><td align='left' valign='middle'>one from source or target must be Player, another GO/Creature. `datalong` = quest_id, `datalong2` = distance or 0</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>8</td><td align='left' valign='middle'>SCRIPT_COMMAND_KILL_CREDIT</td><td align='left' valign='middle'>source or target with Player. `datalong` = creature entry, or 0; If 0 the entry of the creature source or target is used, `datalong2` = bool (0=personal credit, 1=group credit)</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>9</td><td align='left' valign='middle'>SCRIPT_COMMAND_RESPAWN_GAMEOBJECT</td><td align='left' valign='middle'>source = any, target = any. `datalong`=db_guid (can be skipped for buddy), `datalong2` = despawn_delay</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>10</td><td align='left' valign='middle'>SCRIPT_COMMAND_TEMP_SUMMON_CREATURE</td><td align='left' valign='middle'>source = any, target = any. `datalong` = creature entry, `datalong2` = despawn_delay, `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: summon as active object</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>11</td><td align='left' valign='middle'>SCRIPT_COMMAND_OPEN_DOOR</td><td align='left' valign='middle'>source = any. `datalong` = db_guid (can be skipped for buddy), `datalong2` = reset_delay</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>12</td><td align='left' valign='middle'>SCRIPT_COMMAND_CLOSE_DOOR</td><td align='left' valign='middle'>source = any. `datalong` = db_guid (can be skipped for buddy), `datalong2` = reset_delay</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>13</td><td align='left' valign='middle'>SCRIPT_COMMAND_ACTIVATE_OBJECT</td><td align='left' valign='middle'>source = unit, target=GO.</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>14</td><td align='left' valign='middle'>SCRIPT_COMMAND_REMOVE_AURA</td><td align='left' valign='middle'>resultingSource = Unit. `datalong` = spell_id</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>15</td><td align='left' valign='middle'>SCRIPT_COMMAND_CAST_SPELL</td><td align='left' valign='middle'>resultingSource = Unit, cast spell at resultingTarget = Unit. `datalong` = spell id, `dataint1`-`dataint4` optional. If some of these are set to a spell id, a random spell out of datalong, datint1, ..,dataintX is cast., `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: cast triggered</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>16</td><td align='left' valign='middle'>SCRIPT_COMMAND_PLAY_SOUND</td><td align='left' valign='middle'>source = any object, target=any/player. `datalong` = sound_id, `datalong2` (bit mask: 0/1=target-player, 0/2=with distance dependent, 0/4=map wide, 0/8=zone wide; so 1 + 2 = 3 is target with distance dependent)</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>17</td><td align='left' valign='middle'>SCRIPT_COMMAND_CREATE_ITEM</td><td align='left' valign='middle'>source or target must be player. `datalong` = item entry, `datalong2` = amount</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>18</td><td align='left' valign='middle'>SCRIPT_COMMAND_DESPAWN_SELF</td><td align='left' valign='middle'>resultingSource = Creature. `datalong` = despawn delay</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>19</td><td align='left' valign='middle'>SCRIPT_COMMAND_PLAY_MOVIE</td><td align='left' valign='middle'>target can only be a player. `datalong` = movie id</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>20</td><td align='left' valign='middle'>SCRIPT_COMMAND_MOVEMENT</td><td align='left' valign='middle'>resultingSource = Creature. `datalong` = MovementType (0:idle, 1:random or 2:waypoint), `datalong2` = wanderDistance (for random movement), `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: RandomMovement around current position</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>21</td><td align='left' valign='middle'>SCRIPT_COMMAND_SET_ACTIVEOBJECT</td><td align='left' valign='middle'>resultingSource = Creature. `datalong` = bool 0=off, 1=on</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>22</td><td align='left' valign='middle'>SCRIPT_COMMAND_SET_FACTION</td><td align='left' valign='middle'>resultingSource = Creature. `datalong` = factionId OR 0 to restore original faction from creature_template, `datalong2` = enum TemporaryFactionFlags</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>23</td><td align='left' valign='middle'>SCRIPT_COMMAND_MORPH_TO_ENTRY_OR_MODEL</td><td align='left' valign='middle'>resultingSource = Creature. `datalong` = creature entry/modelid (depend on data_flags) OR 0 to demorph, `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: use datalong value as modelid explicit</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>24</td><td align='left' valign='middle'>SCRIPT_COMMAND_MOUNT_TO_ENTRY_OR_MODEL</td><td align='left' valign='middle'>resultingSource = Creature. `datalong` = creature entry/modelid (depend on data_flags) OR 0 to dismount, `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL: use datalong value as modelid explicit</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>25</td><td align='left' valign='middle'>SCRIPT_COMMAND_SET_RUN</td><td align='left' valign='middle'>resultingSource = Creature. `datalong` = bool 0=off, 1=on</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>26</td><td align='left' valign='middle'>SCRIPT_COMMAND_ATTACK_START</td><td align='left' valign='middle'>resultingSource = Creature, resultingTarget = Unit.</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>27</td><td align='left' valign='middle'>SCRIPT_COMMAND_GO_LOCK_STATE</td><td align='left' valign='middle'>resultingSource = GO. `datalong` = flag_go_lock = 0x01, flag_go_unlock = 0x02, flag_go_nonInteract = 0x04, flag_go_interact = 0x08</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>28</td><td align='left' valign='middle'>SCRIPT_COMMAND_STAND_STATE</td><td align='left' valign='middle'>resultingSource = Creature. `datalong` = stand state (enum UnitStandStateType)</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>29</td><td align='left' valign='middle'>SCRIPT_COMMAND_MODIFY_NPC_FLAGS</td><td align='left' valign='middle'>resultingSource = Creature. `datalong` = NPCFlags, `datalong2` = 0x00=toggle, 0x01=add, 0x02=remove</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>30</td><td align='left' valign='middle'>SCRIPT_COMMAND_SEND_TAXI_PATH</td><td align='left' valign='middle'>resultingTarget or Source must be Player. `datalong` = taxi path id</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>31</td><td align='left' valign='middle'>SCRIPT_COMMAND_TERMINATE_SCRIPT</td><td align='left' valign='middle'>`datalong` = search for npc entry if provided, `datalong2` = search distance, `!(data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL)`: if npc not alive found, terminate script, `data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL`:if npc alive found, terminate script, `dataint` = change of waittime (MILLISECONDS) of a current waypoint movement type (negative values will decrease time)</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>32</td><td align='left' valign='middle'>SCRIPT_COMMAND_PAUSE_WAYPOINTS</td><td align='left' valign='middle'>resultingSource must be Creature. `datalong` = 0/1 unpause/pause waypoint movement</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>33</td><td align='left' valign='middle'>SCRIPT_COMMAND_RESERVED_1</td><td align='left' valign='middle'>reserved for 3.x and later. Do not use!</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>34</td><td align='left' valign='middle'>SCRIPT_COMMAND_TERMINATE_COND</td><td align='left' valign='middle'>`datalong` = condition_id, `datalong2` = fail-quest (if provided this quest will be failed for a player), `!(data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL)`: terminate when condition is true, `data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL`:terminate when condition is false</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>35</td><td align='left' valign='middle'>SCRIPT_COMMAND_SEND_AI_EVENT_AROUND</td><td align='left' valign='middle'>resultingSource = Creature, resultingTarget = Unit, datalong = AIEventType - limited only to EventAI supported events, datalong2 = radius</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>36</td><td align='left' valign='middle'>SCRIPT_COMMAND_TURN_TO</td><td align='left' valign='middle'>resultingSource = Creature, resultingTarget = Unit/none.</td></tr>
|
||||
<tr bgcolor='#FEFEFF'><td align='center' valign='middle'>37</td><td align='left' valign='middle'>SCRIPT_COMMAND_MOVE_DYNAMIC</td><td align='left' valign='middle'>Move resultingSource to a random point around resultingTarget or to resultingTarget. `resultingSource` = Creature, resultingTarget Worldobject. `datalong` = 0:Move resultingSource towards resultingTarget, `datalong` != 0: Move resultingSource to a random point between datalong2..datalong around resultingTarget. `orientation` != 0: Obtain a random point around resultingTarget in direction of orientation, `data_flags` & SCRIPT_FLAG_COMMAND_ADDITIONAL Obtain a point in direction of resTarget->GetOrientation + orientation for resTarget == resSource and orientation == 0 this will mean resSource moving forward.</td></tr>
|
||||
<tr bgcolor='#FFFFEE'><td align='center' valign='middle'>38</td><td align='left' valign='middle'>SCRIPT_COMMAND_SEND_MAIL</td><td align='left' valign='middle'>Send a mail from resSource to resTarget. `resultingSource` = Creature OR NULL, resTarget must be Player, `datalong` = mailTemplateId, `datalong2`: AlternativeSenderEntry. Use as sender-Entry of the sent mail, `dataint1`: Delay (>= 0) in Seconds</td></tr>
|
||||
</table>
|
||||
|
||||
TemporaryFactionFlags
|
||||
---------------------
|
||||
|
|
@ -174,8 +182,10 @@ TemporaryFactionFlags
|
|||
* `TEMPFACTION_RESTORE_COMBAT_STOP`: 0x02, ... at CombatStop() (happens at creature death, at evade or custom script among others)
|
||||
* `TEMPFACTION_RESTORE_REACH_HOME`: 0x04, ... at reaching home in home movement (evade), if not already done at CombatStop()
|
||||
|
||||
The next three allow to remove unit_flags combined with a faction change (also these flags will be reapplied when the faction is changed back)
|
||||
The next flags allow to remove unit_flags combined with a faction change (also these flags will be reapplied when the faction is changed back)
|
||||
|
||||
* `TEMPFACTION_TOGGLE_NON_ATTACKABLE`: 0x08, remove UNIT_FLAG_NON_ATTACKABLE(0x02) when faction is changed (reapply when temp-faction is removed)
|
||||
* `TEMPFACTION_TOGGLE_OOC_NOT_ATTACK`: 0x10, remove UNIT_FLAG_OOC_NOT_ATTACKABLE(0x100) when faction is changed (reapply when temp-faction is removed)
|
||||
* `TEMPFACTION_TOGGLE_PASSIVE`: 0x20, remove UNIT_FLAG_PASSIVE(0x200)
|
||||
* `TEMPFACTION_TOGGLE_PASSIVE` : 0x20, remove UNIT_FLAG_PASSIVE(0x200)
|
||||
* `TEMPFACTION_TOGGLE_PACIFIED` : 0x40, remove UNIT_FLAG_PACIFIED(0x20000) when faction is changed (reapply when temp-faction is removed)
|
||||
* `TEMPFACTION_TOGGLE_NOT_SELECTABLE`: 0x80, remove UNIT_FLAG_NOT_SELECTABLE(0x2000000) when faction is changed (reapply when temp-faction is removed)
|
||||
|
|
|
|||
22
doc/Spell.md
Normal file
22
doc/Spell.md
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# Spells {#spells} #
|
||||
|
||||
Spells consist of a whole lot of information, the most usual way to access them is via their ID. A good
|
||||
tool to use when examining spells and looking into what they will do is [QSW](https://bitbucket.org/sidsukana/qsw) which will show you alot of the information available about a spell.
|
||||
|
||||
A spell is made up of a lot of parts, on of these are the effects that a spell has, without them spells
|
||||
wouldn't do much at all since the effects apply different kinds of `Aura`s that do different things
|
||||
to the target or something else, in the most common scenario that would be to deal damage. If we take
|
||||
a look at the Frostbolt spell (id 116) in QSW for 1.12.x and scroll down to the Effects heading we will
|
||||
see that there are 2 effects. The maximum amount of effects on spell can have is 3, these three indexes
|
||||
are referenced via the `EFFECT_INDEX_0`, `EFFECT_INDEX_1` and `EFFECT_INDEX_2` macros.
|
||||
|
||||
Lets take a closer look at Effect 0, it has an id of 6 which QSW tells us is named `SPELL_EFFECT_APPLY_AURA` which tells us that we will apply an `Aura` with this effect, if we look a few lines down we see that
|
||||
the Aura Id is 33 which corresponds to `SPELL_AURA_MOD_DECREASE_SPEED` which is the slowing effect of
|
||||
our Frostbolt spell. If we look to the right on the same line we see that `value=-40` which would mean
|
||||
that we should decrease the speed by 40%. Knowing what this value means depends on what Aura Id we are
|
||||
applying, all of them have different meanings for the `value` and `misc` values. The `periodic` variable
|
||||
tells us whether or not this effect is periodic as in coming back over and over again, this is usual
|
||||
for some healing spells or DOTs.
|
||||
|
||||
The part in the server that handles this is mostly the `Aura` class and the `AuraModifier` struct which
|
||||
is the part we talked about most recently, the one which keeps track of the Aura Id, value, misc and if it's periodic or not.
|
||||
28
doc/Thanks.md
Normal file
28
doc/Thanks.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
THANKS
|
||||
------
|
||||
MaNGOS has originally been written by *TeamPython*, *Wow Python* and *WoWd* teams.
|
||||
Many people further contributed to MaNGOS by reporting problems, suggesting various
|
||||
improvements or submitting actual code.
|
||||
|
||||
Special thanks should also go out to the WowwoW team. We have gained help from
|
||||
them many times in the creation of this project. Keep up the good work guys.
|
||||
|
||||
Thanks should also go out to the Ludmilla team, who are also providing the
|
||||
community with a great server. We have not gained too much help from them,
|
||||
but we have received some.
|
||||
|
||||
Thanks to WCell team (especially Ralek) for research on realm reconnect sequence,
|
||||
item scaling stats algorithm, game object rotation issues.
|
||||
|
||||
We would also like to acknowledge the contributions made by the following
|
||||
teams, those input and code has from time to time been included in the MaNGOS
|
||||
code.
|
||||
|
||||
Each of the commits will have a prefix indicating the source team :
|
||||
|
||||
* **t**: TrinityCore
|
||||
* **p**: Project SilverPine
|
||||
* **r**: MangosR2
|
||||
* **s**: ScriptDev
|
||||
* **c**: cMangos
|
||||
* **m**: mangos
|
||||
|
|
@ -2,8 +2,8 @@
|
|||
###############################################################################
|
||||
# MaNGOS Build Automation Script #
|
||||
# Written By: Ryan Ashley Modified By: Antz #
|
||||
# Copyright (c) 2014 MaNGOS Project #
|
||||
# https://getmangos.eu/ #
|
||||
# Copyright (c) 2014-2016 MaNGOS Project #
|
||||
# https://getmangos.eu/ #
|
||||
# #
|
||||
# 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 #
|
||||
|
|
@ -22,10 +22,10 @@
|
|||
|
||||
# Global variables
|
||||
DLGAPP="whiptail"
|
||||
VERSION="2"
|
||||
VERSION="3"
|
||||
SRCPATH="$HOME/mangos/src"
|
||||
INSTPATH="$HOME/mangos"
|
||||
DB_PREFIX="two"
|
||||
DB_PREFIX="three"
|
||||
P_DEBUG="0"
|
||||
P_STD_MALLOC="1"
|
||||
P_ACE_EXTERNAL="1"
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@
|
|||
#ifndef MANGOS
|
||||
#define MANGOS
|
||||
#endif /* MANGOS */
|
||||
#define CATA
|
||||
|
||||
enum Gender
|
||||
{
|
||||
|
|
|
|||
|
|
@ -185,14 +185,14 @@ extern int main(int argc, char** argv)
|
|||
|
||||
sLog.outString("%s [world-daemon]", REVISION_NR);
|
||||
sLog.outString("<Ctrl-C> to stop.\n"
|
||||
" __ __ _ _ ___ ___ ___ \n"
|
||||
" | \\/ |__ _| \\| |/ __|/ _ \\/ __| \n"
|
||||
" | |\\/| / _` | .` | (_ | (_) \\__ \\ \n"
|
||||
" |_| |_\\__,_|_|\\_|\\___|\\___/|___/ \n"
|
||||
" _____ _ \n"
|
||||
" For help and support please visit: |_ _| |_ _ _ ___ ___ \n"
|
||||
" Website: https://getmangos.eu | | | ' \\| '_/ -_) -_) \n"
|
||||
" Wiki: http://github.com/mangoswiki |_| |_||_|_| \\___\\___| \n"
|
||||
" __ __ _ _ ___ ___ ___ \n"
|
||||
" | \\/ |__ _| \\| |/ __|/ _ \\/ __| \n"
|
||||
" | |\\/| / _` | .` | (_ | (_) \\__ \\ \n"
|
||||
" |_| |_\\__,_|_|\\_|\\___|\\___/|___/ \n"
|
||||
" _____ _ \n"
|
||||
" For help and support please visit: |_ _| |_ _ _ ___ ___ \n"
|
||||
" Website: https://getmangos.eu | | | ' \\| '_/ -_) -_) \n"
|
||||
" Forum / Wiki: https://getmangos.eu |_| |_||_|_| \\___\\___| \n"
|
||||
);
|
||||
sLog.outString("Using configuration file %s.", cfg_file);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue