summaryrefslogtreecommitdiff
path: root/src/game-server
diff options
context:
space:
mode:
authorErik Schilling <ablu.erikschilling@googlemail.com>2012-07-08 17:20:34 +0200
committerErik Schilling <ablu.erikschilling@googlemail.com>2012-07-08 17:55:13 +0200
commitccf23200e0331f7d3638f4de3d3f646bbaef6262 (patch)
tree5f2efcf960423247855a87cb1367b6b6a2261380 /src/game-server
parentcd6063abe8cbad7b9a484e9261f19c8ef1791423 (diff)
downloadmanaserv-ccf23200e0331f7d3638f4de3d3f646bbaef6262.tar.gz
manaserv-ccf23200e0331f7d3638f4de3d3f646bbaef6262.tar.bz2
manaserv-ccf23200e0331f7d3638f4de3d3f646bbaef6262.tar.xz
manaserv-ccf23200e0331f7d3638f4de3d3f646bbaef6262.zip
Added bind for setting login callback
Reviewed-by: bjorn.
Diffstat (limited to 'src/game-server')
-rw-r--r--src/game-server/character.cpp6
-rw-r--r--src/game-server/character.h6
-rw-r--r--src/game-server/gamehandler.cpp2
3 files changed, 14 insertions, 0 deletions
diff --git a/src/game-server/character.cpp b/src/game-server/character.cpp
index bf7c1909..b0993afa 100644
--- a/src/game-server/character.cpp
+++ b/src/game-server/character.cpp
@@ -55,6 +55,7 @@ const float Character::EXP_LEVEL_FLEXIBILITY = 1.0f;
Script::Ref Character::mDeathCallback;
Script::Ref Character::mDeathAcceptedCallback;
+Script::Ref Character::mLoginCallback;
static bool executeCallback(Script::Ref function, Character *character)
{
@@ -822,3 +823,8 @@ void Character::clearSpecials()
{
mSpecials.clear();
}
+
+void Character::triggerLoginCallback()
+{
+ executeCallback(mLoginCallback, this);
+}
diff --git a/src/game-server/character.h b/src/game-server/character.h
index 48c18324..4dc077e8 100644
--- a/src/game-server/character.h
+++ b/src/game-server/character.h
@@ -419,6 +419,11 @@ class Character : public Being
static void setDeathAcceptedCallback(Script *script)
{ script->assignCallback(mDeathAcceptedCallback); }
+ static void setLoginCallback(Script *script)
+ { script->assignCallback(mLoginCallback); }
+
+ void triggerLoginCallback();
+
virtual void addAttack(AttackInfo *attackInfo);
virtual void removeAttack(AttackInfo *attackInfo);
@@ -531,6 +536,7 @@ class Character : public Being
static Script::Ref mDeathCallback;
static Script::Ref mDeathAcceptedCallback;
+ static Script::Ref mLoginCallback;
// Set as a friend, but still a lot of redundant accessors. FIXME.
template< class T >
diff --git a/src/game-server/gamehandler.cpp b/src/game-server/gamehandler.cpp
index f7ee6af4..8b8c67a3 100644
--- a/src/game-server/gamehandler.cpp
+++ b/src/game-server/gamehandler.cpp
@@ -371,6 +371,8 @@ void GameHandler::tokenMatched(GameClient *computer, Character *character)
computer->disconnect(result);
return;
}
+ // Trigger login script bind
+ character->triggerLoginCallback();
result.writeInt8(ERRMSG_OK);
computer->send(result);