[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:
@@ -10,11 +10,16 @@ similar to this one:
|
|||||||
|
|
||||||
Trinity Core is a derivation/rewrite of MaNGOS, which was originally written
|
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 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.
|
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
|
The easiest policy with this file is to thank everyone who contributes to the
|
||||||
project, without judging the value of the contribution.
|
project, without judging the value of the contribution.
|
||||||
|
|
||||||
|
|||||||
-32
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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 +0,0 @@
|
|||||||
0
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
fsfs
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
K 8
|
|
||||||
svn:date
|
|
||||||
V 27
|
|
||||||
2008-10-10T15:44:11.895625Z
|
|
||||||
END
|
|
||||||
-11
@@ -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 +0,0 @@
|
|||||||
0
|
|
||||||
@@ -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"
|
|
||||||
@@ -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
|
|
||||||
@@ -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]
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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.
|
|
||||||
@@ -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.
|
|
||||||
@@ -31,7 +31,8 @@ enum BattleGroundSounds
|
|||||||
{
|
{
|
||||||
SOUND_HORDE_WINS = 8454,
|
SOUND_HORDE_WINS = 8454,
|
||||||
SOUND_ALLIANCE_WINS = 8455,
|
SOUND_ALLIANCE_WINS = 8455,
|
||||||
SOUND_BG_START = 3439
|
SOUND_BG_START = 3439,
|
||||||
|
SOUND_BG_START_L70ETC = 11803,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum BattleGroundQuests
|
enum BattleGroundQuests
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#include "ObjectMgr.h"
|
#include "ObjectMgr.h"
|
||||||
#include "MapManager.h"
|
#include "MapManager.h"
|
||||||
#include "Language.h"
|
#include "Language.h"
|
||||||
|
#include "World.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
|
|
||||||
BattleGroundAB::BattleGroundAB()
|
BattleGroundAB::BattleGroundAB()
|
||||||
@@ -107,6 +108,12 @@ void BattleGroundAB::Update(time_t diff)
|
|||||||
DoorOpen(BG_AB_OBJECT_GATE_A);
|
DoorOpen(BG_AB_OBJECT_GATE_A);
|
||||||
DoorOpen(BG_AB_OBJECT_GATE_H);
|
DoorOpen(BG_AB_OBJECT_GATE_H);
|
||||||
|
|
||||||
|
if(sWorld.getConfig(CONFIG_BG_START_MUSIC))
|
||||||
|
{
|
||||||
|
PlaySoundToAll(SOUND_BG_START);
|
||||||
|
PlaySoundToAll(SOUND_BG_START_L70ETC); //MUSIC
|
||||||
|
}
|
||||||
|
else
|
||||||
PlaySoundToAll(SOUND_BG_START);
|
PlaySoundToAll(SOUND_BG_START);
|
||||||
SetStatus(STATUS_IN_PROGRESS);
|
SetStatus(STATUS_IN_PROGRESS);
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#include "ObjectMgr.h"
|
#include "ObjectMgr.h"
|
||||||
#include "MapManager.h"
|
#include "MapManager.h"
|
||||||
#include "Language.h"
|
#include "Language.h"
|
||||||
|
#include "World.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
|
|
||||||
BattleGroundEY::BattleGroundEY()
|
BattleGroundEY::BattleGroundEY()
|
||||||
@@ -99,6 +100,12 @@ void BattleGroundEY::Update(time_t diff)
|
|||||||
|
|
||||||
SendMessageToAll(GetMangosString(LANG_BG_EY_BEGIN));
|
SendMessageToAll(GetMangosString(LANG_BG_EY_BEGIN));
|
||||||
|
|
||||||
|
if(sWorld.getConfig(CONFIG_BG_START_MUSIC))
|
||||||
|
{
|
||||||
|
PlaySoundToAll(SOUND_BG_START);
|
||||||
|
PlaySoundToAll(SOUND_BG_START_L70ETC); //MUSIC
|
||||||
|
}
|
||||||
|
else
|
||||||
PlaySoundToAll(SOUND_BG_START);
|
PlaySoundToAll(SOUND_BG_START);
|
||||||
SetStatus(STATUS_IN_PROGRESS);
|
SetStatus(STATUS_IN_PROGRESS);
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#include "Chat.h"
|
#include "Chat.h"
|
||||||
#include "MapManager.h"
|
#include "MapManager.h"
|
||||||
#include "Language.h"
|
#include "Language.h"
|
||||||
|
#include "World.h"
|
||||||
|
|
||||||
BattleGroundWS::BattleGroundWS()
|
BattleGroundWS::BattleGroundWS()
|
||||||
{
|
{
|
||||||
@@ -97,6 +98,12 @@ void BattleGroundWS::Update(time_t diff)
|
|||||||
|
|
||||||
SendMessageToAll(GetMangosString(LANG_BG_WS_BEGIN));
|
SendMessageToAll(GetMangosString(LANG_BG_WS_BEGIN));
|
||||||
|
|
||||||
|
if(sWorld.getConfig(CONFIG_BG_START_MUSIC))
|
||||||
|
{
|
||||||
|
PlaySoundToAll(SOUND_BG_START);
|
||||||
|
PlaySoundToAll(SOUND_BG_START_L70ETC); //MUSIC - Custom config
|
||||||
|
}
|
||||||
|
else
|
||||||
PlaySoundToAll(SOUND_BG_START);
|
PlaySoundToAll(SOUND_BG_START);
|
||||||
SetStatus(STATUS_IN_PROGRESS);
|
SetStatus(STATUS_IN_PROGRESS);
|
||||||
|
|
||||||
|
|||||||
@@ -732,6 +732,64 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder)
|
|||||||
if(sWorld.IsShutdowning())
|
if(sWorld.IsShutdowning())
|
||||||
sWorld.ShutdownMsg(true,pCurrChar);
|
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())
|
if(pCurrChar->isGameMaster())
|
||||||
SendNotification(LANG_GM_ON);
|
SendNotification(LANG_GM_ON);
|
||||||
|
|
||||||
|
|||||||
@@ -295,8 +295,8 @@ void WorldSession::HandleLogoutRequestOpcode( WorldPacket & /*recv_data*/ )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//instant logout in taverns/cities or on taxi
|
//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())
|
if(GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) || GetPlayer()->isInFlight() || sWorld.getConfig(CONFIG_INSTANT_LOGOUT))
|
||||||
{
|
{
|
||||||
LogoutPlayer(true);
|
LogoutPlayer(true);
|
||||||
return;
|
return;
|
||||||
@@ -575,6 +575,13 @@ void WorldSession::HandleZoneUpdateOpcode( WorldPacket & recv_data )
|
|||||||
if(newZone != _player->GetZoneId())
|
if(newZone != _player->GetZoneId())
|
||||||
GetPlayer()->SendInitWorldStates(); // only if really enters to new zone, not just area change, works strange...
|
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);
|
GetPlayer()->UpdateZone(newZone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2081,6 +2081,12 @@ void ObjectMgr::LoadPlayerInfo()
|
|||||||
// 0 1 2 3
|
// 0 1 2 3
|
||||||
QueryResult *result = WorldDatabase.Query("SELECT race, class, Spell, Active FROM playercreateinfo_spell");
|
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;
|
uint32 count = 0;
|
||||||
|
|
||||||
if (!result)
|
if (!result)
|
||||||
@@ -2089,7 +2095,7 @@ void ObjectMgr::LoadPlayerInfo()
|
|||||||
|
|
||||||
sLog.outString();
|
sLog.outString();
|
||||||
sLog.outString( ">> Loaded %u player create spells", count );
|
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
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+75
-6
@@ -578,7 +578,25 @@ bool Player::Create( uint32 guidlow, std::string name, uint8 race, uint8 class_,
|
|||||||
SetUInt32Value( PLAYER_FIELD_YESTERDAY_CONTRIBUTION, 0 );
|
SetUInt32Value( PLAYER_FIELD_YESTERDAY_CONTRIBUTION, 0 );
|
||||||
|
|
||||||
// set starting level
|
// set starting 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) );
|
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
|
// Played time
|
||||||
m_Last_tick = time(NULL);
|
m_Last_tick = time(NULL);
|
||||||
@@ -754,8 +772,8 @@ void Player::HandleDrowning()
|
|||||||
if(!m_isunderwater)
|
if(!m_isunderwater)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//if have water breath , then remove bar
|
//if players is GM, have waterbreath, dead or breathing is disabled
|
||||||
if(waterbreath || isGameMaster() || !isAlive())
|
if(sWorld.getConfig(CONFIG_DISABLE_BREATHING) || waterbreath || isGameMaster() || !isAlive())
|
||||||
{
|
{
|
||||||
StopMirrorTimer(BREATH_TIMER);
|
StopMirrorTimer(BREATH_TIMER);
|
||||||
m_isunderwater = 0;
|
m_isunderwater = 0;
|
||||||
@@ -2128,6 +2146,9 @@ void Player::GiveLevel(uint32 level)
|
|||||||
|
|
||||||
UpdateAllStats();
|
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.
|
// set current level health and mana/energy to maximum after applying all mods.
|
||||||
SetHealth(GetMaxHealth());
|
SetHealth(GetMaxHealth());
|
||||||
SetPower(POWER_MANA, GetMaxPower(POWER_MANA));
|
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 mail_items WHERE receiver = '%u'",guid);
|
||||||
CharacterDatabase.PExecute("DELETE FROM character_pet WHERE owner = '%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 character_pet_declinedname WHERE owner = '%u'",guid);
|
||||||
|
CharacterDatabase.PExecute("DELETE FROM has_logged_in_before WHERE guid = %u",guid);
|
||||||
CharacterDatabase.CommitTransaction();
|
CharacterDatabase.CommitTransaction();
|
||||||
|
|
||||||
//loginDatabase.PExecute("UPDATE realmcharacters SET numchars = numchars - 1 WHERE acctid = %d AND realmid = %d", accountId, realmID);
|
//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
|
// some items limited to specific map
|
||||||
DestroyZoneLimitedItem( true, GetZoneId());
|
DestroyZoneLimitedItem( true, GetZoneId());
|
||||||
|
|
||||||
if(!applySickness || getLevel() <= 10)
|
if(sWorld.getConfig(CONFIG_DISABLE_RES_SICKNESS) || !applySickness || getLevel() <= 10)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Characters from level 1-10 are not affected by resurrection sickness.
|
//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
|
///Calculate the amount of honor gained based on the victim
|
||||||
///and the size of the group for which the honor is divided
|
///and the size of the group for which the honor is divided
|
||||||
///An exact honor value can also be given (overriding the calcs)
|
///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
|
// 'Inactive' this aura prevents the player from gaining honor points and battleground tokens
|
||||||
if(GetDummyAura(SPELL_AURA_PLAYER_INACTIVE))
|
if(GetDummyAura(SPELL_AURA_PLAYER_INACTIVE))
|
||||||
@@ -6016,6 +6038,42 @@ bool Player::RewardHonor(Unit *uVictim, uint32 groupsize, float honor)
|
|||||||
ModifyHonorPoints(int32(honor));
|
ModifyHonorPoints(int32(honor));
|
||||||
|
|
||||||
ApplyModUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION, uint32(honor), true);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6384,6 +6442,13 @@ void Player::DuelComplete(DuelCompleteType type)
|
|||||||
else if(duel->opponent->GetComboTarget()==GetPetGUID())
|
else if(duel->opponent->GetComboTarget()==GetPetGUID())
|
||||||
duel->opponent->ClearComboPoints();
|
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
|
//cleanups
|
||||||
SetUInt64Value(PLAYER_DUEL_ARBITER, 0);
|
SetUInt64Value(PLAYER_DUEL_ARBITER, 0);
|
||||||
SetUInt32Value(PLAYER_DUEL_TEAM, 0);
|
SetUInt32Value(PLAYER_DUEL_TEAM, 0);
|
||||||
@@ -7806,6 +7871,10 @@ void Player::SendTalentWipeConfirm(uint64 guid)
|
|||||||
WorldPacket data(MSG_TALENT_WIPE_CONFIRM, (8+4));
|
WorldPacket data(MSG_TALENT_WIPE_CONFIRM, (8+4));
|
||||||
data << uint64(guid);
|
data << uint64(guid);
|
||||||
data << uint32(resetTalentsCost());
|
data << uint32(resetTalentsCost());
|
||||||
|
if(sWorld.getConfig(CONFIG_NO_RESET_TALENT_COST))
|
||||||
|
data << uint32(0);
|
||||||
|
else
|
||||||
|
data << uint32(resetTalentsCost());
|
||||||
GetSession()->SendPacket( &data );
|
GetSession()->SendPacket( &data );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -17895,7 +17964,7 @@ bool Player::RewardPlayerAndGroupAtKill(Unit* pVictim)
|
|||||||
continue; // member (alive or dead) or his corpse at req. distance
|
continue; // member (alive or dead) or his corpse at req. distance
|
||||||
|
|
||||||
// honor can be in PvP and !PvP (racial leader) cases (for alive)
|
// 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;
|
honored_kill = true;
|
||||||
|
|
||||||
// xp and reputation only in !PvP case
|
// xp and reputation only in !PvP case
|
||||||
@@ -17933,7 +18002,7 @@ bool Player::RewardPlayerAndGroupAtKill(Unit* pVictim)
|
|||||||
xp = PvP ? 0 : MaNGOS::XP::Gain(this, pVictim);
|
xp = PvP ? 0 : MaNGOS::XP::Gain(this, pVictim);
|
||||||
|
|
||||||
// honor can be in PvP and !PvP (racial leader) cases
|
// honor can be in PvP and !PvP (racial leader) cases
|
||||||
if(RewardHonor(pVictim,1))
|
if(RewardHonor(pVictim,1, -1, true))
|
||||||
honored_kill = true;
|
honored_kill = true;
|
||||||
|
|
||||||
// xp and reputation only in !PvP case
|
// xp and reputation only in !PvP case
|
||||||
|
|||||||
+1
-1
@@ -1722,7 +1722,7 @@ class MANGOS_DLL_SPEC Player : public Unit
|
|||||||
/*********************************************************/
|
/*********************************************************/
|
||||||
void UpdateArenaFields();
|
void UpdateArenaFields();
|
||||||
void UpdateHonorFields();
|
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 GetHonorPoints() { return GetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY); }
|
||||||
uint32 GetArenaPoints() { return GetUInt32Value(PLAYER_FIELD_ARENA_CURRENCY); }
|
uint32 GetArenaPoints() { return GetUInt32Value(PLAYER_FIELD_ARENA_CURRENCY); }
|
||||||
void ModifyHonorPoints( int32 value );
|
void ModifyHonorPoints( int32 value );
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ INSTANTIATE_SINGLETON_1( World );
|
|||||||
volatile bool World::m_stopEvent = false;
|
volatile bool World::m_stopEvent = false;
|
||||||
volatile uint32 World::m_worldLoopCounter = 0;
|
volatile uint32 World::m_worldLoopCounter = 0;
|
||||||
|
|
||||||
|
float World::m_PlayerStartGold = 0; // starting gold
|
||||||
float World::m_MaxVisibleDistanceForCreature = DEFAULT_VISIBILITY_DISTANCE;
|
float World::m_MaxVisibleDistanceForCreature = DEFAULT_VISIBILITY_DISTANCE;
|
||||||
float World::m_MaxVisibleDistanceForPlayer = DEFAULT_VISIBILITY_DISTANCE;
|
float World::m_MaxVisibleDistanceForPlayer = DEFAULT_VISIBILITY_DISTANCE;
|
||||||
float World::m_MaxVisibleDistanceForObject = 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_TEXTEMOTE] = sConfig.GetIntDefault("ListenRange.TextEmote", 25);
|
||||||
m_configs[CONFIG_LISTEN_RANGE_YELL] = sConfig.GetIntDefault("ListenRange.Yell", 300);
|
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_MAX_RATING_DIFFERENCE] = sConfig.GetIntDefault("Arena.MaxRatingDifference", 0);
|
||||||
m_configs[CONFIG_ARENA_RATING_DISCARD_TIMER] = sConfig.GetIntDefault("Arena.RatingDiscardTimer",300000);
|
m_configs[CONFIG_ARENA_RATING_DISCARD_TIMER] = sConfig.GetIntDefault("Arena.RatingDiscardTimer",300000);
|
||||||
|
|||||||
@@ -153,6 +153,28 @@ enum WorldConfigs
|
|||||||
CONFIG_DEATH_SICKNESS_LEVEL,
|
CONFIG_DEATH_SICKNESS_LEVEL,
|
||||||
CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVP,
|
CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVP,
|
||||||
CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVE,
|
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_THREAT_RADIUS,
|
||||||
CONFIG_DECLINED_NAMES_USED,
|
CONFIG_DECLINED_NAMES_USED,
|
||||||
CONFIG_LISTEN_RANGE_SAY,
|
CONFIG_LISTEN_RANGE_SAY,
|
||||||
@@ -457,6 +479,8 @@ class World
|
|||||||
void ScriptCommandStart(ScriptInfo const& script, uint32 delay, Object* source, Object* target);
|
void ScriptCommandStart(ScriptInfo const& script, uint32 delay, Object* source, Object* target);
|
||||||
bool IsScriptScheduled() const { return !m_scriptSchedule.empty(); }
|
bool IsScriptScheduled() const { return !m_scriptSchedule.empty(); }
|
||||||
|
|
||||||
|
static float PlayerStartGold() { return m_PlayerStartGold; }
|
||||||
|
|
||||||
// for max speed access
|
// for max speed access
|
||||||
static float GetMaxVisibleDistanceForCreature() { return m_MaxVisibleDistanceForCreature; }
|
static float GetMaxVisibleDistanceForCreature() { return m_MaxVisibleDistanceForCreature; }
|
||||||
static float GetMaxVisibleDistanceForPlayer() { return m_MaxVisibleDistanceForPlayer; }
|
static float GetMaxVisibleDistanceForPlayer() { return m_MaxVisibleDistanceForPlayer; }
|
||||||
@@ -512,6 +536,8 @@ class World
|
|||||||
uint32 m_ShutdownTimer;
|
uint32 m_ShutdownTimer;
|
||||||
uint32 m_ShutdownMask;
|
uint32 m_ShutdownMask;
|
||||||
|
|
||||||
|
static float m_PlayerStartGold;
|
||||||
|
|
||||||
// for max speed access
|
// for max speed access
|
||||||
static float m_MaxVisibleDistanceForCreature;
|
static float m_MaxVisibleDistanceForCreature;
|
||||||
static float m_MaxVisibleDistanceForPlayer;
|
static float m_MaxVisibleDistanceForPlayer;
|
||||||
|
|||||||
@@ -279,7 +279,7 @@ void WorldSession::LogoutPlayer(bool Save)
|
|||||||
|
|
||||||
// give honor to all attackers from set like group case
|
// give honor to all attackers from set like group case
|
||||||
for(std::set<Player*>::const_iterator itr = aset.begin(); itr != aset.end(); ++itr)
|
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
|
// give bg rewards and update counters like kill by first from attackers
|
||||||
// this can't be called for all attackers.
|
// this can't be called for all attackers.
|
||||||
|
|||||||
@@ -239,6 +239,11 @@ int Master::Run()
|
|||||||
// set server online
|
// set server online
|
||||||
loginDatabase.PExecute("UPDATE realmlist SET color = 0, population = 0 WHERE id = '%d'",realmID);
|
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
|
#ifdef WIN32
|
||||||
if (sConfig.GetBoolDefault("Console.Enable", true) && (m_ServiceStatus == -1)/* need disable console in service mode*/)
|
if (sConfig.GetBoolDefault("Console.Enable", true) && (m_ServiceStatus == -1)/* need disable console in service mode*/)
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -1074,4 +1074,113 @@ Network.OutKBuff = -1
|
|||||||
Network.OutUBuff = 65536
|
Network.OutUBuff = 65536
|
||||||
Network.TcpNodelay = 1
|
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
|
||||||
|
|||||||
@@ -68,6 +68,6 @@ enum LoginResult
|
|||||||
// others will not and opposite
|
// others will not and opposite
|
||||||
// will only support WoW and WoW:TBC 2.4.3 client build 8606...
|
// 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
|
#endif
|
||||||
|
|||||||
@@ -369,13 +369,15 @@ bool AuthSocket::_HandleLogonChallenge()
|
|||||||
|
|
||||||
///- Check if the client has one of the expected version numbers
|
///- Check if the client has one of the expected version numbers
|
||||||
bool valid_version=false;
|
bool valid_version=false;
|
||||||
int accepted_versions[]=EXPECTED_MANGOS_CLIENT_BUILD;
|
int MinBuild = sConfig.GetIntDefault("MinBuild", 8606);
|
||||||
for(int i=0;accepted_versions[i];i++)
|
int MaxBuild = sConfig.GetIntDefault("MaxBuild", 8606);
|
||||||
if(ch->build==accepted_versions[i])
|
|
||||||
{
|
if(ch->build >= MinBuild && ch->build <= MaxBuild)
|
||||||
valid_version=true;
|
valid_version=true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
valid_version=false;
|
||||||
|
|
||||||
/// <ul><li> if this is a valid version
|
/// <ul><li> if this is a valid version
|
||||||
if(valid_version)
|
if(valid_version)
|
||||||
|
|||||||
@@ -114,3 +114,19 @@ RealmsStateUpdateDelay = 20
|
|||||||
WrongPass.MaxCount = 0
|
WrongPass.MaxCount = 0
|
||||||
WrongPass.BanTime = 600
|
WrongPass.BanTime = 600
|
||||||
WrongPass.BanType = 0
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user