[svn] * Removing useless data accidentally committed.

* Applying ImpConfig patch.
* Note: QUEUE_FOR_GM currently disabled as it's not compatible with the ACE patch. Anyone care to rewrite it?
* Note2: This is untested - I may have done some mistakes here and there. Will try to compile now.

--HG--
branch : trunk
This commit is contained in:
XTZGZoReX
2008-10-10 13:37:21 -05:00
parent ded2714f89
commit 479fe8b767
42 changed files with 392 additions and 660 deletions
+7 -2
View File
@@ -10,11 +10,16 @@ similar to this one:
Trinity Core is a derivation/rewrite of MaNGOS, which was originally written
by Team Python and the WoW Daemon Team. Many people further helped Trinity Core
by submitting bug reports, code patches, and suggestions.
by submitting bug reports, code patches, and suggestions. Thanks to the
community!
Special thanks should also go out to the WowwoW team. We have gained help from
Special thanks should 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 to the ImpConfig developer (dythzer) for the custom configuration patch.
Thanks to the ScriptDev2 team (http://www.scriptdev2.com) for scripts.
The easiest policy with this file is to thank everyone who contributes to the
project, without judging the value of the contribution.
-32
View File
@@ -1,32 +0,0 @@
### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
### - a single user,
### - a group of users defined in a special [groups] section,
### - an alias defined in a special [aliases] section,
### - all authenticated users, using the '$authenticated' token,
### - only anonymous users, using the '$anonymous' token,
### - anyone, using the '*' wildcard.
###
### A match can be inverted by prefixing the rule with '~'. Rules can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
-8
View File
@@ -1,8 +0,0 @@
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
# harry = harryssecret
# sally = sallyssecret
-47
View File
@@ -1,47 +0,0 @@
### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)
### Visit http://subversion.tigris.org/ for more information.
[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
# anon-access = read
# auth-access = write
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the directory containing
### this configuration file.
### If SASL is enabled (see below), this file will NOT be used.
### Uncomment the line below to use the default password file.
# password-db = passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control. Unless you specify a path
### starting with a /, the file's location is relative to the the
### directory containing this file. If you don't specify an
### authz-db, no path-based access control is done.
### Uncomment the line below to use the default authorization file.
# authz-db = authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa. The default realm
### is repository's uuid.
# realm = My First Repository
[sasl]
### This option specifies whether you want to use the Cyrus SASL
### library for authentication. Default is false.
### This section will be ignored if svnserve is not built with Cyrus
### SASL support; to check, run 'svnserve --version' and look for a line
### reading 'Cyrus SASL authentication is available.'
# use-sasl = true
### These options specify the desired strength of the security layer
### that you want SASL to provide. 0 means no encryption, 1 means
### integrity-checking only, values larger than 1 are correlated
### to the effective key length for encryption (e.g. 128 means 128-bit
### encryption). The values below are the defaults.
# min-encryption = 0
# max-encryption = 256
-1
View File
@@ -1 +0,0 @@
0
-2
View File
@@ -1,2 +0,0 @@
3
layout sharded 1000
-1
View File
@@ -1 +0,0 @@
fsfs
-5
View File
@@ -1,5 +0,0 @@
K 8
svn:date
V 27
2008-10-10T15:44:11.895625Z
END
-11
View File
@@ -1,11 +0,0 @@
PLAIN
END
ENDREP
id: 0.0.r0/17
type: dir
count: 0
text: 0 0 4 4 2d2977d1c96f487abe4a1e202dd03b4e
cpath: /
17 107
-1
View File
@@ -1 +0,0 @@
0
View File
-1
View File
@@ -1 +0,0 @@
c5170012-bc6e-d645-9e7e-183a30207ab2
View File
-1
View File
@@ -1 +0,0 @@
5
-51
View File
@@ -1,51 +0,0 @@
#!/bin/sh
# POST-COMMIT HOOK
#
# The post-commit hook is invoked after a commit. Subversion runs
# this hook by invoking a program (script, executable, binary, etc.)
# named 'post-commit' (for which this file is a template) with the
# following ordered arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] REV (the number of the revision just committed)
#
# The default working directory for the invocation is undefined, so
# the program should set one explicitly if it cares.
#
# Because the commit has already completed and cannot be undone,
# the exit code of the hook program is ignored. The hook program
# can use the 'svnlook' utility to help it examine the
# newly-committed tree.
#
# On a Unix system, the normal procedure is to have 'post-commit'
# invoke other programs to do the real work, though it may do the
# work itself too.
#
# Note that 'post-commit' must be executable by the user(s) who will
# invoke it (typically the user httpd runs as), and that user must
# have filesystem-level permission to access the repository.
#
# On a Windows system, you should name the hook program
# 'post-commit.bat' or 'post-commit.exe',
# but the basic idea is the same.
#
# The hook program typically does not inherit the environment of
# its parent process. For example, a common problem is for the
# PATH environment variable to not be set to its usual value, so
# that subprograms fail to launch unless invoked via absolute path.
# If you're having unexpected problems with a hook program, the
# culprit may be unusual (or missing) environment variables.
#
# Here is an example hook script, for a Unix /bin/sh interpreter.
# For more examples and pre-written hooks, see those in
# the Subversion repository at
# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and
# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/
REPOS="$1"
REV="$2"
commit-email.pl "$REPOS" "$REV" [email protected]
log-commit.py --repository "$REPOS" --revision "$REV"
-44
View File
@@ -1,44 +0,0 @@
#!/bin/sh
# POST-LOCK HOOK
#
# The post-lock hook is run after a path is locked. Subversion runs
# this hook by invoking a program (script, executable, binary, etc.)
# named 'post-lock' (for which this file is a template) with the
# following ordered arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] USER (the user who created the lock)
#
# The paths that were just locked are passed to the hook via STDIN (as
# of Subversion 1.2, only one path is passed per invocation, but the
# plan is to pass all locked paths at once, so the hook program
# should be written accordingly).
#
# The default working directory for the invocation is undefined, so
# the program should set one explicitly if it cares.
#
# Because the lock has already been created and cannot be undone,
# the exit code of the hook program is ignored. The hook program
# can use the 'svnlook' utility to help it examine the
# newly-created lock.
#
# On a Unix system, the normal procedure is to have 'post-lock'
# invoke other programs to do the real work, though it may do the
# work itself too.
#
# Note that 'post-lock' must be executable by the user(s) who will
# invoke it (typically the user httpd runs as), and that user must
# have filesystem-level permission to access the repository.
#
# On a Windows system, you should name the hook program
# 'post-lock.bat' or 'post-lock.exe',
# but the basic idea is the same.
#
# Here is an example hook script, for a Unix /bin/sh interpreter:
REPOS="$1"
USER="$2"
# Send email to interested parties, let them know a lock was created:
mailer.py lock "$REPOS" "$USER" /path/to/mailer.conf
-56
View File
@@ -1,56 +0,0 @@
#!/bin/sh
# POST-REVPROP-CHANGE HOOK
#
# The post-revprop-change hook is invoked after a revision property
# has been added, modified or deleted. Subversion runs this hook by
# invoking a program (script, executable, binary, etc.) named
# 'post-revprop-change' (for which this file is a template), with the
# following ordered arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] REV (the revision that was tweaked)
# [3] USER (the username of the person tweaking the property)
# [4] PROPNAME (the property that was changed)
# [5] ACTION (the property was 'A'dded, 'M'odified, or 'D'eleted)
#
# [STDIN] PROPVAL ** the old property value is passed via STDIN.
#
# Because the propchange has already completed and cannot be undone,
# the exit code of the hook program is ignored. The hook program
# can use the 'svnlook' utility to help it examine the
# new property value.
#
# On a Unix system, the normal procedure is to have 'post-revprop-change'
# invoke other programs to do the real work, though it may do the
# work itself too.
#
# Note that 'post-revprop-change' must be executable by the user(s) who will
# invoke it (typically the user httpd runs as), and that user must
# have filesystem-level permission to access the repository.
#
# On a Windows system, you should name the hook program
# 'post-revprop-change.bat' or 'post-revprop-change.exe',
# but the basic idea is the same.
#
# The hook program typically does not inherit the environment of
# its parent process. For example, a common problem is for the
# PATH environment variable to not be set to its usual value, so
# that subprograms fail to launch unless invoked via absolute path.
# If you're having unexpected problems with a hook program, the
# culprit may be unusual (or missing) environment variables.
#
# Here is an example hook script, for a Unix /bin/sh interpreter.
# For more examples and pre-written hooks, see those in
# the Subversion repository at
# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and
# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
commit-email.pl --revprop-change "$REPOS" "$REV" "$USER" "$PROPNAME" [email protected]
-42
View File
@@ -1,42 +0,0 @@
#!/bin/sh
# POST-UNLOCK HOOK
#
# The post-unlock hook runs after a path is unlocked. Subversion runs
# this hook by invoking a program (script, executable, binary, etc.)
# named 'post-unlock' (for which this file is a template) with the
# following ordered arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] USER (the user who destroyed the lock)
#
# The paths that were just unlocked are passed to the hook via STDIN
# (as of Subversion 1.2, only one path is passed per invocation, but
# the plan is to pass all unlocked paths at once, so the hook program
# should be written accordingly).
#
# The default working directory for the invocation is undefined, so
# the program should set one explicitly if it cares.
#
# Because the lock has already been destroyed and cannot be undone,
# the exit code of the hook program is ignored.
#
# On a Unix system, the normal procedure is to have 'post-unlock'
# invoke other programs to do the real work, though it may do the
# work itself too.
#
# Note that 'post-unlock' must be executable by the user(s) who will
# invoke it (typically the user httpd runs as), and that user must
# have filesystem-level permission to access the repository.
#
# On a Windows system, you should name the hook program
# 'post-unlock.bat' or 'post-unlock.exe',
# but the basic idea is the same.
#
# Here is an example hook script, for a Unix /bin/sh interpreter:
REPOS="$1"
USER="$2"
# Send email to interested parties, let them know a lock was removed:
mailer.py unlock "$REPOS" "$USER" /path/to/mailer.conf
-70
View File
@@ -1,70 +0,0 @@
#!/bin/sh
# PRE-COMMIT HOOK
#
# The pre-commit hook is invoked before a Subversion txn is
# committed. Subversion runs this hook by invoking a program
# (script, executable, binary, etc.) named 'pre-commit' (for which
# this file is a template), with the following ordered arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] TXN-NAME (the name of the txn about to be committed)
#
# The default working directory for the invocation is undefined, so
# the program should set one explicitly if it cares.
#
# If the hook program exits with success, the txn is committed; but
# if it exits with failure (non-zero), the txn is aborted, no commit
# takes place, and STDERR is returned to the client. The hook
# program can use the 'svnlook' utility to help it examine the txn.
#
# On a Unix system, the normal procedure is to have 'pre-commit'
# invoke other programs to do the real work, though it may do the
# work itself too.
#
# *** NOTE: THE HOOK PROGRAM MUST NOT MODIFY THE TXN, EXCEPT ***
# *** FOR REVISION PROPERTIES (like svn:log or svn:author). ***
#
# This is why we recommend using the read-only 'svnlook' utility.
# In the future, Subversion may enforce the rule that pre-commit
# hooks should not modify the versioned data in txns, or else come
# up with a mechanism to make it safe to do so (by informing the
# committing client of the changes). However, right now neither
# mechanism is implemented, so hook writers just have to be careful.
#
# Note that 'pre-commit' must be executable by the user(s) who will
# invoke it (typically the user httpd runs as), and that user must
# have filesystem-level permission to access the repository.
#
# On a Windows system, you should name the hook program
# 'pre-commit.bat' or 'pre-commit.exe',
# but the basic idea is the same.
#
# The hook program typically does not inherit the environment of
# its parent process. For example, a common problem is for the
# PATH environment variable to not be set to its usual value, so
# that subprograms fail to launch unless invoked via absolute path.
# If you're having unexpected problems with a hook program, the
# culprit may be unusual (or missing) environment variables.
#
# Here is an example hook script, for a Unix /bin/sh interpreter.
# For more examples and pre-written hooks, see those in
# the Subversion repository at
# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and
# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/
REPOS="$1"
TXN="$2"
# Make sure that the log message contains some text.
SVNLOOK=/usr/local/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
grep "[a-zA-Z0-9]" > /dev/null || exit 1
# Check that the author of this commit has the rights to perform
# the commit on the files and directories being modified.
commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1
# All checks passed, so allow the commit.
exit 0
-64
View File
@@ -1,64 +0,0 @@
#!/bin/sh
# PRE-LOCK HOOK
#
# The pre-lock hook is invoked before an exclusive lock is
# created. Subversion runs this hook by invoking a program
# (script, executable, binary, etc.) named 'pre-lock' (for which
# this file is a template), with the following ordered arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] PATH (the path in the repository about to be locked)
# [3] USER (the user creating the lock)
#
# The default working directory for the invocation is undefined, so
# the program should set one explicitly if it cares.
#
# If the hook program exits with success, the lock is created; but
# if it exits with failure (non-zero), the lock action is aborted
# and STDERR is returned to the client.
# On a Unix system, the normal procedure is to have 'pre-lock'
# invoke other programs to do the real work, though it may do the
# work itself too.
#
# Note that 'pre-lock' must be executable by the user(s) who will
# invoke it (typically the user httpd runs as), and that user must
# have filesystem-level permission to access the repository.
#
# On a Windows system, you should name the hook program
# 'pre-lock.bat' or 'pre-lock.exe',
# but the basic idea is the same.
#
# Here is an example hook script, for a Unix /bin/sh interpreter:
REPOS="$1"
PATH="$2"
USER="$3"
# If a lock exists and is owned by a different person, don't allow it
# to be stolen (e.g., with 'svn lock --force ...').
# (Maybe this script could send email to the lock owner?)
SVNLOOK=/usr/local/bin/svnlook
GREP=/bin/grep
SED=/bin/sed
LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \
$GREP '^Owner: ' | $SED 's/Owner: //'`
# If we get no result from svnlook, there's no lock, allow the lock to
# happen:
if [ "$LOCK_OWNER" = "" ]; then
exit 0
fi
# If the person locking matches the lock's owner, allow the lock to
# happen:
if [ "$LOCK_OWNER" = "$USER" ]; then
exit 0
fi
# Otherwise, we've got an owner mismatch, so return failure:
echo "Error: $PATH already locked by ${LOCK_OWNER}." 1>&2
exit 1
-66
View File
@@ -1,66 +0,0 @@
#!/bin/sh
# PRE-REVPROP-CHANGE HOOK
#
# The pre-revprop-change hook is invoked before a revision property
# is added, modified or deleted. Subversion runs this hook by invoking
# a program (script, executable, binary, etc.) named 'pre-revprop-change'
# (for which this file is a template), with the following ordered
# arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] REVISION (the revision being tweaked)
# [3] USER (the username of the person tweaking the property)
# [4] PROPNAME (the property being set on the revision)
# [5] ACTION (the property is being 'A'dded, 'M'odified, or 'D'eleted)
#
# [STDIN] PROPVAL ** the new property value is passed via STDIN.
#
# If the hook program exits with success, the propchange happens; but
# if it exits with failure (non-zero), the propchange doesn't happen.
# The hook program can use the 'svnlook' utility to examine the
# existing value of the revision property.
#
# WARNING: unlike other hooks, this hook MUST exist for revision
# properties to be changed. If the hook does not exist, Subversion
# will behave as if the hook were present, but failed. The reason
# for this is that revision properties are UNVERSIONED, meaning that
# a successful propchange is destructive; the old value is gone
# forever. We recommend the hook back up the old value somewhere.
#
# On a Unix system, the normal procedure is to have 'pre-revprop-change'
# invoke other programs to do the real work, though it may do the
# work itself too.
#
# Note that 'pre-revprop-change' must be executable by the user(s) who will
# invoke it (typically the user httpd runs as), and that user must
# have filesystem-level permission to access the repository.
#
# On a Windows system, you should name the hook program
# 'pre-revprop-change.bat' or 'pre-revprop-change.exe',
# but the basic idea is the same.
#
# The hook program typically does not inherit the environment of
# its parent process. For example, a common problem is for the
# PATH environment variable to not be set to its usual value, so
# that subprograms fail to launch unless invoked via absolute path.
# If you're having unexpected problems with a hook program, the
# culprit may be unusual (or missing) environment variables.
#
# Here is an example hook script, for a Unix /bin/sh interpreter.
# For more examples and pre-written hooks, see those in
# the Subversion repository at
# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and
# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1
-61
View File
@@ -1,61 +0,0 @@
#!/bin/sh
# PRE-UNLOCK HOOK
#
# The pre-unlock hook is invoked before an exclusive lock is
# destroyed. Subversion runs this hook by invoking a program
# (script, executable, binary, etc.) named 'pre-unlock' (for which
# this file is a template), with the following ordered arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] PATH (the path in the repository about to be unlocked)
# [3] USER (the user destroying the lock)
#
# The default working directory for the invocation is undefined, so
# the program should set one explicitly if it cares.
#
# If the hook program exits with success, the lock is destroyed; but
# if it exits with failure (non-zero), the unlock action is aborted
# and STDERR is returned to the client.
# On a Unix system, the normal procedure is to have 'pre-unlock'
# invoke other programs to do the real work, though it may do the
# work itself too.
#
# Note that 'pre-unlock' must be executable by the user(s) who will
# invoke it (typically the user httpd runs as), and that user must
# have filesystem-level permission to access the repository.
#
# On a Windows system, you should name the hook program
# 'pre-unlock.bat' or 'pre-unlock.exe',
# but the basic idea is the same.
#
# Here is an example hook script, for a Unix /bin/sh interpreter:
REPOS="$1"
PATH="$2"
USER="$3"
# If a lock is owned by a different person, don't allow it be broken.
# (Maybe this script could send email to the lock owner?)
SVNLOOK=/usr/local/bin/svnlook
GREP=/bin/grep
SED=/bin/sed
LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \
$GREP '^Owner: ' | $SED 's/Owner: //'`
# If we get no result from svnlook, there's no lock, return success:
if [ "$LOCK_OWNER" = "" ]; then
exit 0
fi
# If the person unlocking matches the lock's owner, return success:
if [ "$LOCK_OWNER" = "$USER" ]; then
exit 0
fi
# Otherwise, we've got an owner mismatch, so return failure:
echo "Error: $PATH locked by ${LOCK_OWNER}." 1>&2
exit 1
-65
View File
@@ -1,65 +0,0 @@
#!/bin/sh
# START-COMMIT HOOK
#
# The start-commit hook is invoked before a Subversion txn is created
# in the process of doing a commit. Subversion runs this hook
# by invoking a program (script, executable, binary, etc.) named
# 'start-commit' (for which this file is a template)
# with the following ordered arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] USER (the authenticated user attempting to commit)
# [3] CAPABILITIES (a colon-separated list of capabilities reported
# by the client; see note below)
#
# Note: The CAPABILITIES parameter is new in Subversion 1.5, and 1.5
# clients will typically report at least the "mergeinfo" capability.
# If there are other capabilities, then the list is colon-separated,
# e.g.: "mergeinfo:some-other-capability" (the order is undefined).
#
# The list is self-reported by the client. Therefore, you should not
# make security assumptions based on the capabilities list, nor should
# you assume that clients reliably report every capability they have.
#
# The working directory for this hook program's invocation is undefined,
# so the program should set one explicitly if it cares.
#
# If the hook program exits with success, the commit continues; but
# if it exits with failure (non-zero), the commit is stopped before
# a Subversion txn is created, and STDERR is returned to the client.
#
# On a Unix system, the normal procedure is to have 'start-commit'
# invoke other programs to do the real work, though it may do the
# work itself too.
#
# Note that 'start-commit' must be executable by the user(s) who will
# invoke it (typically the user httpd runs as), and that user must
# have filesystem-level permission to access the repository.
#
# On a Windows system, you should name the hook program
# 'start-commit.bat' or 'start-commit.exe',
# but the basic idea is the same.
#
# The hook program typically does not inherit the environment of
# its parent process. For example, a common problem is for the
# PATH environment variable to not be set to its usual value, so
# that subprograms fail to launch unless invoked via absolute path.
# If you're having unexpected problems with a hook program, the
# culprit may be unusual (or missing) environment variables.
#
# Here is an example hook script, for a Unix /bin/sh interpreter.
# For more examples and pre-written hooks, see those in
# the Subversion repository at
# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and
# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/
REPOS="$1"
USER="$2"
commit-allower.pl --repository "$REPOS" --user "$USER" || exit 1
special-auth-check.py --user "$USER" --auth-level 3 || exit 1
# All checks passed, so allow the commit.
exit 0
-3
View File
@@ -1,3 +0,0 @@
This file is not used by Subversion 1.3.x or later.
However, its existence is required for compatibility with
Subversion 1.2.x or earlier.
-3
View File
@@ -1,3 +0,0 @@
This file is not used by Subversion 1.3.x or later.
However, its existence is required for compatibility with
Subversion 1.2.x or earlier.
+2 -1
View File
@@ -31,7 +31,8 @@ enum BattleGroundSounds
{
SOUND_HORDE_WINS = 8454,
SOUND_ALLIANCE_WINS = 8455,
SOUND_BG_START = 3439
SOUND_BG_START = 3439,
SOUND_BG_START_L70ETC = 11803,
};
enum BattleGroundQuests
+8 -1
View File
@@ -25,6 +25,7 @@
#include "ObjectMgr.h"
#include "MapManager.h"
#include "Language.h"
#include "World.h"
#include "Util.h"
BattleGroundAB::BattleGroundAB()
@@ -107,7 +108,13 @@ void BattleGroundAB::Update(time_t diff)
DoorOpen(BG_AB_OBJECT_GATE_A);
DoorOpen(BG_AB_OBJECT_GATE_H);
PlaySoundToAll(SOUND_BG_START);
if(sWorld.getConfig(CONFIG_BG_START_MUSIC))
{
PlaySoundToAll(SOUND_BG_START);
PlaySoundToAll(SOUND_BG_START_L70ETC); //MUSIC
}
else
PlaySoundToAll(SOUND_BG_START);
SetStatus(STATUS_IN_PROGRESS);
for(BattleGroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
+8 -1
View File
@@ -25,6 +25,7 @@
#include "ObjectMgr.h"
#include "MapManager.h"
#include "Language.h"
#include "World.h"
#include "Util.h"
BattleGroundEY::BattleGroundEY()
@@ -99,7 +100,13 @@ void BattleGroundEY::Update(time_t diff)
SendMessageToAll(GetMangosString(LANG_BG_EY_BEGIN));
PlaySoundToAll(SOUND_BG_START);
if(sWorld.getConfig(CONFIG_BG_START_MUSIC))
{
PlaySoundToAll(SOUND_BG_START);
PlaySoundToAll(SOUND_BG_START_L70ETC); //MUSIC
}
else
PlaySoundToAll(SOUND_BG_START);
SetStatus(STATUS_IN_PROGRESS);
for(BattleGroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
+8 -1
View File
@@ -25,6 +25,7 @@
#include "Chat.h"
#include "MapManager.h"
#include "Language.h"
#include "World.h"
BattleGroundWS::BattleGroundWS()
{
@@ -97,7 +98,13 @@ void BattleGroundWS::Update(time_t diff)
SendMessageToAll(GetMangosString(LANG_BG_WS_BEGIN));
PlaySoundToAll(SOUND_BG_START);
if(sWorld.getConfig(CONFIG_BG_START_MUSIC))
{
PlaySoundToAll(SOUND_BG_START);
PlaySoundToAll(SOUND_BG_START_L70ETC); //MUSIC - Custom config
}
else
PlaySoundToAll(SOUND_BG_START);
SetStatus(STATUS_IN_PROGRESS);
for(BattleGroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
+58
View File
@@ -732,6 +732,64 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder)
if(sWorld.IsShutdowning())
sWorld.ShutdownMsg(true,pCurrChar);
if(sWorld.getConfig(CONFIG_ALWAYS_MAXSKILL)) // Max weapon skill when logging in
pCurrChar->UpdateSkillsToMaxSkillsForLevel();
//ImpConfig - Check if player has logged in before
QueryResult *result = CharacterDatabase.PQuery("SELECT guid FROM has_logged_in_before WHERE guid = %u",pCurrChar->GetGUIDLow());
if(!result)
{
sLog.outBasic("Character '%s' logging in for first time, applying skills and stuff",pCurrChar->GetName());
CharacterDatabase.PExecute("INSERT INTO has_logged_in_before VALUES (%u)",pCurrChar->GetGUIDLow());
//Reputations if "StartAllReputation" is enabled, -- TODO: Fix this in a better way
if(sWorld.getConfig(CONFIG_START_ALL_REP))
{
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(942),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(935),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(936),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(1011),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(970),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(967),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(989),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(932),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(934),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(1038),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(1077),42999);
// Factions depending on team, like cities and some more stuff
switch(pCurrChar->GetTeam())
{
case ALLIANCE:
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(72),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(47),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(69),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(930),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(730),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(978),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(54),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(946),42999);
break;
case HORDE:
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(76),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(68),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(81),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(911),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(729),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(941),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(530),42999);
pCurrChar->SetFactionReputation(sFactionStore.LookupEntry(947),42999);
break;
}
}
}
else
sLog.outBasic("Character '%s' has logged in before",pCurrChar->GetName());
if(sWorld.getConfig(CONFIG_START_ALL_TAXI))
pCurrChar->SetTaxiCheater(true);
if(pCurrChar->isGameMaster())
SendNotification(LANG_GM_ON);
+9 -2
View File
@@ -295,8 +295,8 @@ void WorldSession::HandleLogoutRequestOpcode( WorldPacket & /*recv_data*/ )
return;
}
//instant logout in taverns/cities or on taxi
if(GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) || GetPlayer()->isInFlight())
//instant logout in taverns/cities or on taxi or if its enabled in mangosd.conf
if(GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) || GetPlayer()->isInFlight() || sWorld.getConfig(CONFIG_INSTANT_LOGOUT))
{
LogoutPlayer(true);
return;
@@ -575,6 +575,13 @@ void WorldSession::HandleZoneUpdateOpcode( WorldPacket & recv_data )
if(newZone != _player->GetZoneId())
GetPlayer()->SendInitWorldStates(); // only if really enters to new zone, not just area change, works strange...
// AntiCheat.GMIsland
if(sWorld.getConfig(CONFIG_KICK_FROM_GMISLAND))
{
if(newZone == 876 && GetPlayer()->GetSession()->GetSecurity() == SEC_PLAYER)
_player->TeleportTo(13,0,0,0,0);
}
GetPlayer()->UpdateZone(newZone);
}
+7 -1
View File
@@ -2081,6 +2081,12 @@ void ObjectMgr::LoadPlayerInfo()
// 0 1 2 3
QueryResult *result = WorldDatabase.Query("SELECT race, class, Spell, Active FROM playercreateinfo_spell");
QueryResult *result = NULL;
if(sWorld.getConfig(CONFIG_START_ALL_SPELLS))
result = WorldDatabase.Query("SELECT race, class, Spell, Active FROM playercreateinfo_spell_custom");
else
result = WorldDatabase.Query("SELECT race, class, Spell, Active FROM playercreateinfo_spell");
uint32 count = 0;
if (!result)
@@ -2089,7 +2095,7 @@ void ObjectMgr::LoadPlayerInfo()
sLog.outString();
sLog.outString( ">> Loaded %u player create spells", count );
sLog.outErrorDb( "Error loading `playercreateinfo_spell` table or empty table.");
sLog.outErrorDb( "Error loading player starting spells or empty table.");
}
else
{
+76 -7
View File
@@ -578,7 +578,25 @@ bool Player::Create( uint32 guidlow, std::string name, uint8 race, uint8 class_,
SetUInt32Value( PLAYER_FIELD_YESTERDAY_CONTRIBUTION, 0 );
// set starting level
SetUInt32Value( UNIT_FIELD_LEVEL, sWorld.getConfig(CONFIG_START_PLAYER_LEVEL) );
if(GetSession()->GetSecurity() >= SEC_MODERATOR)
SetUInt32Value( UNIT_FIELD_LEVEL, sWorld.getConfig(CONFIG_GM_START_LEVEL) ); //ImpConfig
else
SetUInt32Value( UNIT_FIELD_LEVEL, sWorld.getConfig(CONFIG_START_PLAYER_LEVEL) );
// set starting gold
SetUInt32Value( PLAYER_FIELD_COINAGE, sWorld.PlayerStartGold()*10000 );
// set starting honor
SetUInt32Value( PLAYER_FIELD_HONOR_CURRENCY, sWorld.getConfig(CONFIG_PLAYER_START_HONOR) );
// set starting arena pts
SetUInt32Value( PLAYER_FIELD_ARENA_CURRENCY, sWorld.getConfig(CONFIG_PLAYER_START_ARENAPTS) );
// start with every map explored
if(sWorld.getConfig(CONFIG_START_ALL_EXPLORED))
{
for (uint8 i=0; i<64; i++)
SetFlag(PLAYER_EXPLORED_ZONES_1+i,0xFFFFFFFF);
}
// Played time
m_Last_tick = time(NULL);
@@ -754,8 +772,8 @@ void Player::HandleDrowning()
if(!m_isunderwater)
return;
//if have water breath , then remove bar
if(waterbreath || isGameMaster() || !isAlive())
//if players is GM, have waterbreath, dead or breathing is disabled
if(sWorld.getConfig(CONFIG_DISABLE_BREATHING) || waterbreath || isGameMaster() || !isAlive())
{
StopMirrorTimer(BREATH_TIMER);
m_isunderwater = 0;
@@ -2128,6 +2146,9 @@ void Player::GiveLevel(uint32 level)
UpdateAllStats();
if(sWorld.getConfig(CONFIG_ALWAYS_MAXSKILL)) // Max weapon skill when leveling up
UpdateSkillsToMaxSkillsForLevel();
// set current level health and mana/energy to maximum after applying all mods.
SetHealth(GetMaxHealth());
SetPower(POWER_MANA, GetMaxPower(POWER_MANA));
@@ -3601,6 +3622,7 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
CharacterDatabase.PExecute("DELETE FROM mail_items WHERE receiver = '%u'",guid);
CharacterDatabase.PExecute("DELETE FROM character_pet WHERE owner = '%u'",guid);
CharacterDatabase.PExecute("DELETE FROM character_pet_declinedname WHERE owner = '%u'",guid);
CharacterDatabase.PExecute("DELETE FROM has_logged_in_before WHERE guid = %u",guid);
CharacterDatabase.CommitTransaction();
//loginDatabase.PExecute("UPDATE realmcharacters SET numchars = numchars - 1 WHERE acctid = %d AND realmid = %d", accountId, realmID);
@@ -3725,7 +3747,7 @@ void Player::ResurrectPlayer(float restore_percent, bool updateToWorld, bool app
// some items limited to specific map
DestroyZoneLimitedItem( true, GetZoneId());
if(!applySickness || getLevel() <= 10)
if(sWorld.getConfig(CONFIG_DISABLE_RES_SICKNESS) || !applySickness || getLevel() <= 10)
return;
//Characters from level 1-10 are not affected by resurrection sickness.
@@ -5897,7 +5919,7 @@ void Player::UpdateHonorFields()
///Calculate the amount of honor gained based on the victim
///and the size of the group for which the honor is divided
///An exact honor value can also be given (overriding the calcs)
bool Player::RewardHonor(Unit *uVictim, uint32 groupsize, float honor)
bool Player::RewardHonor(Unit *uVictim, uint32 groupsize, float honor, bool pvptoken)
{
// 'Inactive' this aura prevents the player from gaining honor points and battleground tokens
if(GetDummyAura(SPELL_AURA_PLAYER_INACTIVE))
@@ -6016,6 +6038,42 @@ bool Player::RewardHonor(Unit *uVictim, uint32 groupsize, float honor)
ModifyHonorPoints(int32(honor));
ApplyModUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION, uint32(honor), true);
if( sWorld.getConfig(CONFIG_PVP_TOKEN_ENABLE) && pvptoken )
{
if(!uVictim || uVictim == this || uVictim->HasAuraType(SPELL_AURA_NO_PVP_CREDIT))
return true;
if(uVictim->GetTypeId() == TYPEID_PLAYER)
{
// Check if allowed to receive it in current map
uint8 MapType = sWorld.getConfig(CONFIG_PVP_TOKEN_MAP_TYPE);
if(MapType == 1 && !InBattleGround() && !HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_FFA_PVP) || MapType == 2 && !HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_FFA_PVP) || MapType == 3 && !InBattleGround())
return true;
uint32 noSpaceForCount = 0;
uint32 itemId = sWorld.getConfig(CONFIG_PVP_TOKEN_ID);
int32 count = sWorld.getConfig(CONFIG_PVP_TOKEN_COUNT);
// check space and find places
ItemPosCountVec dest;
uint8 msg = CanStoreNewItem( NULL_BAG, NULL_SLOT, dest, itemId, count, &noSpaceForCount );
if( msg != EQUIP_ERR_OK ) // convert to possible store amount
count = noSpaceForCount;
if( count == 0 || dest.empty()) // can't add any
{
// -- TODO: Send to mailbox if no space
ChatHandler(this).PSendSysMessage("You don't have any space in your bags for a token.");
return true;
}
Item* item = StoreNewItem( dest, itemId, true, Item::GenerateItemRandomPropertyId(itemId));
SendNewItem(item,count,true,false);
ChatHandler(this).PSendSysMessage("You have been awarded a token for slaying another player.");
}
}
return true;
}
@@ -6384,6 +6442,13 @@ void Player::DuelComplete(DuelCompleteType type)
else if(duel->opponent->GetComboTarget()==GetPetGUID())
duel->opponent->ClearComboPoints();
// Honor points after duel (the winner) - ImpConfig
if(sWorld.getConfig(CONFIG_HONOR_AFTER_DUEL > 0))
{
uint32 amount = sWorld.getConfig(CONFIG_HONOR_AFTER_DUEL);
duel->opponent->RewardHonor(NULL,1,amount);
}
//cleanups
SetUInt64Value(PLAYER_DUEL_ARBITER, 0);
SetUInt32Value(PLAYER_DUEL_TEAM, 0);
@@ -7806,6 +7871,10 @@ void Player::SendTalentWipeConfirm(uint64 guid)
WorldPacket data(MSG_TALENT_WIPE_CONFIRM, (8+4));
data << uint64(guid);
data << uint32(resetTalentsCost());
if(sWorld.getConfig(CONFIG_NO_RESET_TALENT_COST))
data << uint32(0);
else
data << uint32(resetTalentsCost());
GetSession()->SendPacket( &data );
}
@@ -17895,7 +17964,7 @@ bool Player::RewardPlayerAndGroupAtKill(Unit* pVictim)
continue; // member (alive or dead) or his corpse at req. distance
// honor can be in PvP and !PvP (racial leader) cases (for alive)
if(pGroupGuy->isAlive() && pGroupGuy->RewardHonor(pVictim,count) && pGroupGuy==this)
if(pGroupGuy->isAlive() && pGroupGuy->RewardHonor(pVictim,count, -1, true) && pGroupGuy==this)
honored_kill = true;
// xp and reputation only in !PvP case
@@ -17933,7 +18002,7 @@ bool Player::RewardPlayerAndGroupAtKill(Unit* pVictim)
xp = PvP ? 0 : MaNGOS::XP::Gain(this, pVictim);
// honor can be in PvP and !PvP (racial leader) cases
if(RewardHonor(pVictim,1))
if(RewardHonor(pVictim,1, -1, true))
honored_kill = true;
// xp and reputation only in !PvP case
+1 -1
View File
@@ -1722,7 +1722,7 @@ class MANGOS_DLL_SPEC Player : public Unit
/*********************************************************/
void UpdateArenaFields();
void UpdateHonorFields();
bool RewardHonor(Unit *pVictim, uint32 groupsize, float honor = -1);
bool RewardHonor(Unit *pVictim, uint32 groupsize, float honor = -1, bool pvptoken = false);
uint32 GetHonorPoints() { return GetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY); }
uint32 GetArenaPoints() { return GetUInt32Value(PLAYER_FIELD_ARENA_CURRENCY); }
void ModifyHonorPoints( int32 value );
+42
View File
@@ -62,6 +62,7 @@ INSTANTIATE_SINGLETON_1( World );
volatile bool World::m_stopEvent = false;
volatile uint32 World::m_worldLoopCounter = 0;
float World::m_PlayerStartGold = 0; // starting gold
float World::m_MaxVisibleDistanceForCreature = DEFAULT_VISIBILITY_DISTANCE;
float World::m_MaxVisibleDistanceForPlayer = DEFAULT_VISIBILITY_DISTANCE;
float World::m_MaxVisibleDistanceForObject = DEFAULT_VISIBILITY_DISTANCE;
@@ -768,6 +769,47 @@ void World::LoadConfigSettings(bool reload)
m_configs[CONFIG_LISTEN_RANGE_TEXTEMOTE] = sConfig.GetIntDefault("ListenRange.TextEmote", 25);
m_configs[CONFIG_LISTEN_RANGE_YELL] = sConfig.GetIntDefault("ListenRange.Yell", 300);
m_PlayerStartGold = sConfig.GetFloatDefault("PlayerStart.Gold", 0);
if(m_PlayerStartGold < 0)
m_PlayerStartGold = 0;
if(m_PlayerStartGold > MAX_MONEY_AMOUNT)
m_PlayerStartGold = MAX_MONEY_AMOUNT;
m_configs[CONFIG_PLAYER_START_HONOR] = sConfig.GetIntDefault("PlayerStart.HonorPoints", 0);
if(m_configs[CONFIG_PLAYER_START_HONOR] < 0)
m_configs[CONFIG_PLAYER_START_HONOR] = 0;
m_configs[CONFIG_PLAYER_START_ARENAPTS] = sConfig.GetIntDefault("PlayerStart.ArenaPoints", 0);
if(m_configs[CONFIG_PLAYER_START_ARENAPTS] < 0)
m_configs[CONFIG_PLAYER_START_ARENAPTS] = 0;
m_configs[CONFIG_GM_START_LEVEL] = sConfig.GetIntDefault("GamemasterStartLevel", 70);
if(m_configs[CONFIG_GM_START_LEVEL] < 1)
m_configs[CONFIG_GM_START_LEVEL] = 1;
m_configs[CONFIG_INSTANT_LOGOUT] = sConfig.GetBoolDefault("PlayerInstantLogout", false);
m_configs[CONFIG_BG_START_MUSIC] = sConfig.GetBoolDefault("MusicInBattleground", false);
m_configs[CONFIG_START_ALL_SPELLS] = sConfig.GetBoolDefault("PlayerStart.AllSpells", false);
// Leaving GM queue option out for now, it's not 100% functional with the ACE patch
//m_configs[CONFIG_QUEUE_FOR_GM] = sConfig.GetBoolDefault("EnableQueueForGMs", false);
m_configs[CONFIG_HONOR_AFTER_DUEL] = sConfig.GetIntDefault("HonorPointsAfterDuel", 0);
if(m_configs[CONFIG_HONOR_AFTER_DUEL] < 0)
m_configs[CONFIG_HONOR_AFTER_DUEL]= 0;
m_configs[CONFIG_KICK_FROM_GMISLAND] = sConfig.GetBoolDefault("AntiCheat.GMIsland", false);
m_configs[CONFIG_START_ALL_EXPLORED] = sConfig.GetBoolDefault("PlayerStart.MapsExplored", false);
m_configs[CONFIG_DISABLE_BREATHING] = sConfig.GetBoolDefault("DisableWaterBreath", false);
m_configs[CONFIG_DISABLE_RES_SICKNESS] = sConfig.GetBoolDefault("DisableResurrectSickness", false);
m_configs[CONFIG_START_ALL_REP] = sConfig.GetBoolDefault("PlayerStart.AllReputation", false);
m_configs[CONFIG_ALWAYS_MAXSKILL] = sConfig.GetBoolDefault("AlwaysMaxWeaponSkill", false);
m_configs[CONFIG_START_ALL_TAXI] = sConfig.GetBoolDefault("PlayerStart.AllFlightPaths", false);
m_configs[CONFIG_PVP_TOKEN_ENABLE] = sConfig.GetBoolDefault("PvPToken.Enable", false);
m_configs[CONFIG_PVP_TOKEN_MAP_TYPE] = sConfig.GetIntDefault("PvPToken.MapAllowType", 4);
m_configs[CONFIG_PVP_TOKEN_ID] = sConfig.GetIntDefault("PvPToken.ItemID", 29434);
m_configs[CONFIG_PVP_TOKEN_COUNT] = sConfig.GetIntDefault("PvPToken.ItemCount", 1);
if(m_configs[CONFIG_PVP_TOKEN_COUNT] < 1)
m_configs[CONFIG_PVP_TOKEN_COUNT] = 1;
m_configs[CONFIG_NO_RESET_TALENT_COST] = sConfig.GetBoolDefault("NoResetTalentsCost", false);
m_configs[CONFIG_ARENA_MAX_RATING_DIFFERENCE] = sConfig.GetIntDefault("Arena.MaxRatingDifference", 0);
m_configs[CONFIG_ARENA_RATING_DISCARD_TIMER] = sConfig.GetIntDefault("Arena.RatingDiscardTimer",300000);
+26
View File
@@ -153,6 +153,28 @@ enum WorldConfigs
CONFIG_DEATH_SICKNESS_LEVEL,
CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVP,
CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVE,
CONFIG_PLAYER_START_HONOR,
CONFIG_PLAYER_START_ARENAPTS,
CONFIG_GM_START_LEVEL,
CONFIG_INSTANT_LOGOUT,
CONFIG_BG_START_MUSIC,
CONFIG_START_ALL_SPELLS,
CONFIG_QUEUE_FOR_GM,
CONFIG_HONOR_AFTER_DUEL,
CONFIG_KICK_FROM_GMISLAND,
CONFIG_START_ALL_EXPLORED,
CONFIG_DISABLE_BREATHING,
CONFIG_DISABLE_RES_SICKNESS,
CONFIG_START_ALL_REP,
CONFIG_ALWAYS_MAXSKILL,
CONFIG_START_ALL_TAXI,
CONFIG_PVP_TOKEN_ENABLE,
CONFIG_PVP_TOKEN_MAP_TYPE,
CONFIG_PVP_TOKEN_ID,
CONFIG_PVP_TOKEN_COUNT,
CONFIG_NO_RESET_TALENT_COST,
CONFIG_THREAT_RADIUS,
CONFIG_DECLINED_NAMES_USED,
CONFIG_LISTEN_RANGE_SAY,
@@ -457,6 +479,8 @@ class World
void ScriptCommandStart(ScriptInfo const& script, uint32 delay, Object* source, Object* target);
bool IsScriptScheduled() const { return !m_scriptSchedule.empty(); }
static float PlayerStartGold() { return m_PlayerStartGold; }
// for max speed access
static float GetMaxVisibleDistanceForCreature() { return m_MaxVisibleDistanceForCreature; }
static float GetMaxVisibleDistanceForPlayer() { return m_MaxVisibleDistanceForPlayer; }
@@ -512,6 +536,8 @@ class World
uint32 m_ShutdownTimer;
uint32 m_ShutdownMask;
static float m_PlayerStartGold;
// for max speed access
static float m_MaxVisibleDistanceForCreature;
static float m_MaxVisibleDistanceForPlayer;
+1 -1
View File
@@ -279,7 +279,7 @@ void WorldSession::LogoutPlayer(bool Save)
// give honor to all attackers from set like group case
for(std::set<Player*>::const_iterator itr = aset.begin(); itr != aset.end(); ++itr)
(*itr)->RewardHonor(_player,aset.size());
(*itr)->RewardHonor(_player, aset.size(), -1, true);
// give bg rewards and update counters like kill by first from attackers
// this can't be called for all attackers.
+5
View File
@@ -239,6 +239,11 @@ int Master::Run()
// set server online
loginDatabase.PExecute("UPDATE realmlist SET color = 0, population = 0 WHERE id = '%d'",realmID);
// Create table: has_logged_in_before - used for certain custom options
sLog.outBasic("ImpConfig: Creating/Checking table 'has_logged_in_before'...");
CharacterDatabase.PExecute("CREATE TABLE IF NOT EXISTS `has_logged_in_before` (`guid` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`guid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='ImpConfig check';");
sLog.outBasic("ImpConfig: Done...");
#ifdef WIN32
if (sConfig.GetBoolDefault("Console.Enable", true) && (m_ServiceStatus == -1)/* need disable console in service mode*/)
#else
+109
View File
@@ -1074,4 +1074,113 @@ Network.OutKBuff = -1
Network.OutUBuff = 65536
Network.TcpNodelay = 1
###################################################################################################################
# CUSTOM SERVER OPTIONS
#
# PlayerStart.Gold
# Amount of gold that new players will start with.
# If you want to start with silver, use for example 0.1 (for 10s)
# Default: 0
#
# PlayerStart.HonorPoints
# Amount of honor that new players will start with
# Default: 0
#
# PlayerStart.ArenaPoints
# Amount of arena points that new players will start with
# Default: 0
#
# PlayerStart.AllReputation
# Players will start with most of the high level reputations that are needed for items, mounts etc.
# If there are any reputation faction you want to be added, just tell me.
#
# PlayerStart.AllSpells
# If enabled, players will start with all their class spells (not talents). Useful for instant 70 servers.
# You must import playercreateinfo_spell_custom.sql, it's included in the SQL folder.
# Default: 0 - off
# 1 - on
#
# PlayerStart.MapsExplored
# Players will start with all maps explored if enabled
#
# PlayerStart.AllFlightPaths
# Players will start with all flight paths (Note: ALL flight paths, not only player's team)
#
# AntiCheat.GMIsland
# If a player enters GM island, he will get teleported away. This will prevent cheaters from buying GM stuff
# on servers with a GM mall. GM's will not get teleported away.
#
# GamemasterStartLevel
# GM starting level
# Default: 70 Min,max: 1 - 255
#
# PlayerInstantLogout
# Enable or disable instant logout for all players (NOT in combat/while dueling/while falling)
# Default: 0 - off
# 1 - on
#
# MusicInBattleground
# If enabled, "L70ETC - Power of the horde" will be played when BG starts ;)
#
# EnableQueueForGMs
# NOTE: This option currently does not work due to ACE patch
# GMs will also be added to the login queue (not gmlvl 3+) if enabled. Useful for GM servers.
# Default: 0 - off
# 1 - on
#
# HonorPointsAfterDuel
# The amount of honor points the duel winner will get after a duel.
# Default: 0 - disable
#
# DisableWaterBreath
# Disable/enable waterbreathing for players
#
# DisableResurrectSickness
# Players wont get any resurrect sickness when speaking with a spirit healer if this is enabled+
#
# AlwaysMaxWeaponSkill
# Players will automatically gain max weapon/defense skill when logging in, leveling up etc.
#
# PvPToken.Enable
# Enable/disable PvP Token System. Players will get a token after slaying another player that gives honor.
#
# PvPToken.MapAllowType
# Where players can receive the pvp token
# 4 - In all maps
# 3 - In battlegrounds only
# 2 - In FFA areas only (gurubashi arena etc)
# 1 - In battlegrounds AND FFA areas only
#
# PvPToken.ItemID
# The item players will get after killing someone if PvP Token system is enabled.
# Default: 29434 - Badge of justice
#
# PvPToken.ItemCount
# Modify the item ID count - Default: 1
#
# NoResetTalentsCost
# Enable or disable no cost when reseting talents
#
###################################################################################################################
PlayerStart.Gold = 0
PlayerStart.HonorPoints = 0
PlayerStart.ArenaPoints = 0
PlayerStart.AllReputation = 0
PlayerStart.AllSpells = 0
PlayerStart.MapsExplored = 0
PlayerStart.AllFlightPaths = 0
AntiCheat.GMIsland = 0
GamemasterStartLevel = 70
PlayerInstantLogout = 0
MusicInBattleground = 0
EnableQueueForGMs = 0
HonorPointsAfterDuel = 0
DisableWaterBreath = 0
DisableResurrectSickness = 0
AlwaysMaxWeaponSkill = 0
PvPToken.Enable = 0
PvPToken.MapAllowType = 4
PvPToken.ItemID = 29434
PvPToken.ItemCount = 1
NoResetTalentsCost = 0
+1 -1
View File
@@ -68,6 +68,6 @@ enum LoginResult
// others will not and opposite
// will only support WoW and WoW:TBC 2.4.3 client build 8606...
#define EXPECTED_MANGOS_CLIENT_BUILD {8606, 0}
//#define EXPECTED_MANGOS_CLIENT_BUILD {8606, 0} // - commented as builds are set in config
#endif
+6 -4
View File
@@ -369,13 +369,15 @@ bool AuthSocket::_HandleLogonChallenge()
///- Check if the client has one of the expected version numbers
bool valid_version=false;
int accepted_versions[]=EXPECTED_MANGOS_CLIENT_BUILD;
for(int i=0;accepted_versions[i];i++)
if(ch->build==accepted_versions[i])
{
int MinBuild = sConfig.GetIntDefault("MinBuild", 8606);
int MaxBuild = sConfig.GetIntDefault("MaxBuild", 8606);
if(ch->build >= MinBuild && ch->build <= MaxBuild)
valid_version=true;
break;
}
else
valid_version=false;
/// <ul><li> if this is a valid version
if(valid_version)
+16
View File
@@ -114,3 +114,19 @@ RealmsStateUpdateDelay = 20
WrongPass.MaxCount = 0
WrongPass.BanTime = 600
WrongPass.BanType = 0
###################################################################################################################
# CLIENT BUILD OPTIONS
#
# Client Builds:
#
# MinBuild
# The minium client build allowed to connect
#
# MaxBuild
# The maximum client build allowed to connect
#
###################################################################################################################
MinBuild = 8606
MaxBuild = 8606