From: <ken...@us...> - 2009-03-07 09:13:06
|
Revision: 3152 http://planeshift.svn.sourceforge.net/planeshift/?rev=3152&view=rev Author: kennygraunke Date: 2009-03-07 09:12:57 +0000 (Sat, 07 Mar 2009) Log Message: ----------- - Ah, C++ and it's silly need for virtual destructors everywhere. Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2009-03-07 09:12:11 UTC (rev 3151) +++ trunk/src/server/scripting.cpp 2009-03-07 09:12:57 UTC (rev 3152) @@ -118,6 +118,7 @@ class AppliedOp { public: + virtual ~AppliedOp() { } virtual bool Load(iDocumentNode *node) = 0; virtual void Run(const MathEnvironment *env, gemActor *target, ActiveSpell *asp) = 0; }; @@ -345,6 +346,7 @@ { public: MsgCancel(int clientnum, const csString & undo) : clientnum(clientnum), undo(undo) { } + virtual ~MsgCancel() { } void Cancel() { @@ -399,6 +401,7 @@ { public: FxCancel(gemObject *target, uint32_t uid) : target(target), msg(uid) { } + virtual ~FxCancel() { } virtual void Cancel() { @@ -510,6 +513,7 @@ { public: OnCancel(gemActor *actor, SCRIPT_TRIGGER type, ProgressionScript *script) : actor(actor), script(script), type(type) { } + virtual ~OnCancel() { } void Cancel() { @@ -847,7 +851,7 @@ class ApplyOp : public ImperativeOp { public: - ~ApplyOp() + virtual ~ApplyOp() { if (aps) delete aps; @@ -874,7 +878,7 @@ class ApplyLinkedOp : public ImperativeOp { public: - ~ApplyLinkedOp() + virtual ~ApplyLinkedOp() { if (buff) delete buff; @@ -1019,6 +1023,8 @@ class MsgOp : public ImperativeOp { public: + virtual ~MsgOp() { } + bool Load(iDocumentNode *node) { aim = node->GetAttributeValue("aim"); @@ -1062,6 +1068,8 @@ class CancelOp : public ImperativeOp { public: + virtual ~CancelOp() { } + bool Load(iDocumentNode *cancel) { aim = cancel->GetAttributeValue("aim"); @@ -1168,6 +1176,8 @@ class FxOp : public ImperativeOp { public: + virtual ~FxOp() { } + bool Load(iDocumentNode *top) { // type should probably be optional; I'm guessing most cases will want it attached... @@ -1242,6 +1252,8 @@ class Imperative1 : public ImperativeOp { public: + virtual ~Imperative1() { } + bool Load(iDocumentNode *node) { aim = node->GetAttributeValue("aim"); @@ -1456,6 +1468,8 @@ class ActionOp : public Imperative1 { public: + virtual ~ActionOp() { } + bool Load(iDocumentNode *node) { sector = node->GetAttributeValue("sector"); @@ -1557,8 +1571,8 @@ class KeyOp : public Imperative1 { public: - KeyOp() : Imperative1() { }; - virtual ~KeyOp() {}; + KeyOp() : Imperative1() { } + virtual ~KeyOp() { } bool Load(iDocumentNode *node) { @@ -1678,6 +1692,8 @@ class ItemOp : public Imperative1 { public: + virtual ~ItemOp() { } + bool Load(iDocumentNode *node) { name = node->GetAttributeValue("name"); @@ -1784,6 +1800,8 @@ class CreateFamiliarOp : public Imperative1 { public: + virtual ~CreateFamiliarOp() { } + void Run(const MathEnvironment *env) { gemActor *actor = GetActor(env, aim); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ken...@us...> - 2009-06-23 20:11:50
|
Revision: 3860 http://planeshift.svn.sourceforge.net/planeshift/?rev=3860&view=rev Author: kennygraunke Date: 2009-06-23 20:11:49 +0000 (Tue, 23 Jun 2009) Log Message: ----------- When I said <item>'s location attribute was optional, I really meant it...fix sanity check that was too stringent. Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2009-06-23 06:53:46 UTC (rev 3859) +++ trunk/src/server/scripting.cpp 2009-06-23 20:11:49 UTC (rev 3860) @@ -1968,7 +1968,7 @@ stackCount = node->GetAttributeValueAsInt("count"); csString location = node->GetAttributeValue("location"); - if (location != "inventory" && location != "ground") + if (!location.IsEmpty() && location != "inventory" && location != "ground") { Error2("Error: Invalid location in <item location=\"%s\"/>\n", location.GetData()); return false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-09-08 17:16:05
|
Revision: 4330 http://planeshift.svn.sourceforge.net/planeshift/?rev=4330&view=rev Author: weltall2 Date: 2009-09-08 17:15:56 +0000 (Tue, 08 Sep 2009) Log Message: ----------- temporary fix for the op assigning skills Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2009-09-08 16:12:20 UTC (rev 4329) +++ trunk/src/server/scripting.cpp 2009-09-08 17:15:56 UTC (rev 4330) @@ -1603,6 +1603,7 @@ int val = (int) value->Evaluate(env); SkillRank & buffable = c->GetSkillRank(skill); buffable.SetBase(buffable.Base() + val); + c->SetSkillRank(skill,buffable.Base()); } protected: PSSKILL skill; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-03-28 10:04:07
|
Revision: 5746 http://planeshift.svn.sourceforge.net/planeshift/?rev=5746&view=rev Author: weltall2 Date: 2010-03-28 10:04:01 +0000 (Sun, 28 Mar 2010) Log Message: ----------- fixed skillop and skillaop breakage interesting this even built... Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2010-03-27 15:35:46 UTC (rev 5745) +++ trunk/src/server/scripting.cpp 2010-03-28 10:04:01 UTC (rev 5746) @@ -301,10 +301,10 @@ class SkillAOp : public Applied2 { public: - SkillAOp() : Applied2() { } + SkillAOp(CacheManager* cachemanager) : Applied2() { this->cachemanager = cachemanager; } virtual ~SkillAOp() { } - bool Load(iDocumentNode* node, CacheManager* cachemanager) + bool Load(iDocumentNode* node) { psSkillInfo* info = cachemanager->GetSkillByName(node->GetAttributeValue("name")); if (!info) @@ -327,6 +327,7 @@ protected: PSSKILL skill; + CacheManager* cachemanager; }; //---------------------------------------------------------------------------- @@ -842,7 +843,7 @@ } else if (elem == "skill") { - op = new SkillAOp; + op = new SkillAOp(cachemanager); } else if (elem == "faction") { @@ -1685,10 +1686,10 @@ class SkillOp : public Imperative3 { public: - SkillOp() : Imperative3() { } + SkillOp(CacheManager* cachemanager) : Imperative3() { this->cachemanager = cachemanager; } virtual ~SkillOp() { } - bool Load(iDocumentNode* node, CacheManager* cachemanager) + bool Load(iDocumentNode* node) { psSkillInfo* info = cachemanager->GetSkillByName(node->GetAttributeValue("name")); if (!info) @@ -1710,6 +1711,7 @@ } protected: PSSKILL skill; + CacheManager* cachemanager; }; //---------------------------------------------------------------------------- @@ -2325,7 +2327,7 @@ } else if (elem == "skill") { - op = new SkillOp; + op = new SkillOp(cachemanager); } else if (elem == "faction") { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-09-08 17:16:01
|
Revision: 6184 http://planeshift.svn.sourceforge.net/planeshift/?rev=6184&view=rev Author: rlydontknow Date: 2010-09-08 17:15:55 +0000 (Wed, 08 Sep 2010) Log Message: ----------- made count attribute of item op a math expression instead of an int Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2010-09-07 22:16:53 UTC (rev 6183) +++ trunk/src/server/scripting.cpp 2010-09-08 17:15:55 UTC (rev 6184) @@ -2052,13 +2052,20 @@ class ItemOp : public Imperative1 { public: - ItemOp(CacheManager* cachemanager) {cacheManager = cachemanager; } - virtual ~ItemOp() { } + ItemOp(CacheManager* cachemanager) + { + cacheManager = cachemanager; + } + virtual ~ItemOp() + { + delete count; + } + bool Load(iDocumentNode* node) { name = node->GetAttributeValue("name"); - stackCount = node->GetAttributeValueAsInt("count"); + count = MathExpression::Create(node->GetAttributeValue("count")); csString location = node->GetAttributeValue("location"); if (!location.IsEmpty() && location != "inventory" && location != "ground") @@ -2068,16 +2075,21 @@ } placeOnGround = location == "ground"; - return !name.IsEmpty() && stackCount > 0 && Imperative1::Load(node); + return !name.IsEmpty() && Imperative1::Load(node); } void Run(const MathEnvironment* env) { psCharacter* c = GetCharacter(env, aim); + int stackCount = count->Evaluate(env); + if (stackCount <= 0) + { + return; + } if (placeOnGround) { - psItem* iteminstance = CreateItem(true); + psItem* iteminstance = CreateItem(true, stackCount); if (!iteminstance) return; @@ -2103,7 +2115,7 @@ } else { - psItem* iteminstance = CreateItem(false); + psItem* iteminstance = CreateItem(false, stackCount); if (!iteminstance) return; @@ -2111,7 +2123,7 @@ } } - psItem* CreateItem(bool transient) + psItem* CreateItem(bool transient, int stackCount) { // Get the ItemStats based on the name provided. psItemStats* itemstats = cacheManager->GetBasicItemStatsByName(name.GetData()); @@ -2140,7 +2152,7 @@ protected: csString name; - int stackCount; + MathExpression* count; bool placeOnGround; CacheManager* cacheManager; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-09-08 18:03:57
|
Revision: 6185 http://planeshift.svn.sourceforge.net/planeshift/?rev=6185&view=rev Author: rlydontknow Date: 2010-09-08 18:03:51 +0000 (Wed, 08 Sep 2010) Log Message: ----------- added sanity check Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2010-09-08 17:15:55 UTC (rev 6184) +++ trunk/src/server/scripting.cpp 2010-09-08 18:03:51 UTC (rev 6185) @@ -2059,7 +2059,10 @@ virtual ~ItemOp() { - delete count; + if (count) + { + delete count; + } } bool Load(iDocumentNode* node) @@ -2075,7 +2078,7 @@ } placeOnGround = location == "ground"; - return !name.IsEmpty() && Imperative1::Load(node); + return !name.IsEmpty() && count && Imperative1::Load(node); } void Run(const MathEnvironment* env) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-10-11 15:16:27
|
Revision: 6268 http://planeshift.svn.sourceforge.net/planeshift/?rev=6268&view=rev Author: weltall2 Date: 2010-10-11 15:16:21 +0000 (Mon, 11 Oct 2010) Log Message: ----------- implemented factionOp Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2010-10-11 13:57:52 UTC (rev 6267) +++ trunk/src/server/scripting.cpp 2010-10-11 15:16:21 UTC (rev 6268) @@ -1659,6 +1659,43 @@ //---------------------------------------------------------------------------- /** + * FactionOp - imperative factions. + * + * <faction aim="Actor" name="Klyros" value="5"/> (adds 5 to actor's Klyros faction.) + * + * This is permanent; see FactionAOp for the temporary buffed kind. (not implemented) + */ +class FactionOp : public Imperative3 +{ +public: + FactionOp(CacheManager* cachemanager) : Imperative3() { this->cachemanager = cachemanager; } + virtual ~FactionOp() { } + + bool Load(iDocumentNode* node) + { + faction = cachemanager->GetFaction(node->GetAttributeValue("name")); + if (!faction) + { + Error2("Found <faction aim=\"...\" name=\"%s\">, but no such faction exists.", node->GetAttributeValue("name")); + return false; + } + return Imperative3::Load(node); + } + + void Run(const MathEnvironment* env) + { + psCharacter* c = GetCharacter(env, aim); + int val = (int) value->Evaluate(env); + c->UpdateFaction(faction, val); + } +protected: + Faction *faction; + CacheManager* cachemanager; +}; + +//---------------------------------------------------------------------------- + +/** * SkillOp - imperative skills. * * <skill aim="Actor" name="Sword" value="5"/> (adds 5 to actor's sword skill.) @@ -2328,7 +2365,7 @@ } else if (elem == "faction") { - printf("TODO: implement imperative factions\n"); + op = new FactionOp(cachemanager); continue; } else if (elem == "animal-affinity") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-11-19 18:01:00
|
Revision: 6412 http://planeshift.svn.sourceforge.net/planeshift/?rev=6412&view=rev Author: weltall2 Date: 2010-11-19 18:00:54 +0000 (Fri, 19 Nov 2010) Log Message: ----------- fixed loading of the factionop Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2010-11-18 14:19:31 UTC (rev 6411) +++ trunk/src/server/scripting.cpp 2010-11-19 18:00:54 UTC (rev 6412) @@ -1689,7 +1689,7 @@ faction = cachemanager->GetFaction(node->GetAttributeValue("name")); if (!faction) { - Error2("Found <faction aim=\"...\" name=\"%s\">, but no such faction exists.", node->GetAttributeValue("name")); + Error2("Found <faction aim=\"...\" name=\"%s\">, but no such faction exists.", node->GetAttributeValue("name")); return false; } return Imperative3::Load(node); @@ -2379,7 +2379,6 @@ else if (elem == "faction") { op = new FactionOp(cachemanager); - continue; } else if (elem == "animal-affinity") { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-11-19 19:03:40
|
Revision: 6413 http://planeshift.svn.sourceforge.net/planeshift/?rev=6413&view=rev Author: weltall2 Date: 2010-11-19 19:03:33 +0000 (Fri, 19 Nov 2010) Log Message: ----------- expanded factionOp to support also variable faction names Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2010-11-19 18:00:54 UTC (rev 6412) +++ trunk/src/server/scripting.cpp 2010-11-19 19:03:33 UTC (rev 6413) @@ -1687,22 +1687,39 @@ bool Load(iDocumentNode* node) { faction = cachemanager->GetFaction(node->GetAttributeValue("name")); - if (!faction) + if(!faction) //if the faction is valid we just use it else we will use the named variable during run. { - Error2("Found <faction aim=\"...\" name=\"%s\">, but no such faction exists.", node->GetAttributeValue("name")); - return false; + factionExp = MathExpression::Create(node->GetAttributeValue("name")); } return Imperative3::Load(node); } void Run(const MathEnvironment* env) { + Faction *currentFaction = faction; psCharacter* c = GetCharacter(env, aim); int val = (int) value->Evaluate(env); - c->UpdateFaction(faction, val); + //we didn't find a valid faction name during load: it means it's a variable. + if (!currentFaction) + { + //evaluate the variable so we can get it's value + csString factionName = MathScriptEngine::GetString(factionExp->Evaluate(env)); + currentFaction = cachemanager->GetFaction(factionName.GetData()); + if(!currentFaction) //we still didn't find a valid faction abort. + { + Error2("Faction Imperative Op Run with %s but no such faction exists.", factionName.GetData()); + return; + } + } + c->UpdateFaction(currentFaction, val); } protected: + ///Used to store the faction in case it's found during Load(). It's null in case it wasn't found. Faction *faction; + /** Used to store the faction name math expression in case the faction couldn't be found. + * It's uninitialized in case it's not used as the code shouldn't use it in that case. + */ + MathExpression* factionExp; CacheManager* cachemanager; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-12-12 20:15:01
|
Revision: 6521 http://planeshift.svn.sourceforge.net/planeshift/?rev=6521&view=rev Author: rlydontknow Date: 2010-12-12 20:14:55 +0000 (Sun, 12 Dec 2010) Log Message: ----------- fixed FxAOp offset calculation Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2010-12-12 19:09:57 UTC (rev 6520) +++ trunk/src/server/scripting.cpp 2010-12-12 20:14:55 UTC (rev 6521) @@ -549,7 +549,7 @@ csVector3 targetPos; anchor->GetPosition(sourcePos, sector); target->GetPosition(targetPos, sector); - offset = targetPos - sourcePos; + offset = sourcePos - targetPos; } // Get a unique identifier we can use to later cancel/stop this effect. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-12-26 09:33:39
|
Revision: 6608 http://planeshift.svn.sourceforge.net/planeshift/?rev=6608&view=rev Author: weltall2 Date: 2010-12-26 09:33:33 +0000 (Sun, 26 Dec 2010) Log Message: ----------- added some default values Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2010-12-26 08:50:01 UTC (rev 6607) +++ trunk/src/server/scripting.cpp 2010-12-26 09:33:33 UTC (rev 6608) @@ -2154,8 +2154,8 @@ //loads data about the randomization status of the item. randomize = node->GetAttributeValueAsBool("randomize"); - randomCost = node->GetAttributeValueAsInt("randomcost"); - randomLevel = node->GetAttributeValueAsInt("randomlevel"); + randomCost = node->GetAttributeValueAsInt("randomcost", 1000); + randomLevel = node->GetAttributeValueAsInt("randomlevel", 3); return !name.IsEmpty() && count && Imperative1::Load(node); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-02-02 09:52:42
|
Revision: 6851 http://planeshift.svn.sourceforge.net/planeshift/?rev=6851&view=rev Author: weltall2 Date: 2011-02-02 09:52:36 +0000 (Wed, 02 Feb 2011) Log Message: ----------- fixed style Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2011-02-02 09:26:39 UTC (rev 6850) +++ trunk/src/server/scripting.cpp 2011-02-02 09:52:36 UTC (rev 6851) @@ -1446,9 +1446,9 @@ return false; if(node->GetAttribute("delay")) - { - loadDelay = node->GetAttributeValueAsInt("delay"); - } + { + loadDelay = node->GetAttributeValueAsInt("delay"); + } if(node->GetAttribute("background")) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-02-14 09:42:03
|
Revision: 6938 http://planeshift.svn.sourceforge.net/planeshift/?rev=6938&view=rev Author: weltall2 Date: 2011-02-14 09:41:57 +0000 (Mon, 14 Feb 2011) Log Message: ----------- added support to define as mathexpressions cordinates and delay Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2011-02-13 22:44:36 UTC (rev 6937) +++ trunk/src/server/scripting.cpp 2011-02-14 09:41:57 UTC (rev 6938) @@ -1437,7 +1437,7 @@ class TeleportOp : public Imperative1 { public: - TeleportOp(EntityManager* entitymanager) : Imperative1() { entityManager = entitymanager; loadDelay = 0; background = ""; point1 = 0; point2 = 0;} + TeleportOp(EntityManager* entitymanager) : Imperative1() { entityManager = entitymanager; loadDelay = NULL; background = ""; point1X = NULL; point1X = NULL; point2X = NULL; point2Y = NULL; } virtual ~TeleportOp() { } bool Load(iDocumentNode* node) @@ -1447,7 +1447,7 @@ if(node->GetAttribute("delay")) { - loadDelay = node->GetAttributeValueAsInt("delay"); + loadDelay = MathExpression::Create(node->GetAttributeValue("delay")); } if(node->GetAttribute("background")) @@ -1457,10 +1457,10 @@ if(node->GetAttribute("x1") && node->GetAttribute("y1") && node->GetAttribute("x2") && node->GetAttribute("y2")) { - point1.x = node->GetAttributeValueAsFloat("x1"); - point1.y = node->GetAttributeValueAsFloat("y1"); - point2.x = node->GetAttributeValueAsFloat("x2"); - point2.y = node->GetAttributeValueAsFloat("y2"); + point1X = MathExpression::Create(node->GetAttributeValue("x1")); + point1Y = MathExpression::Create(node->GetAttributeValue("y1")); + point2X = MathExpression::Create(node->GetAttributeValue("x2")); + point2Y = MathExpression::Create(node->GetAttributeValue("y2")); } if (node->GetAttribute("location")) @@ -1499,12 +1499,34 @@ void Run(MathEnvironment* env) { gemActor* actor = GetActor(env, aim); + //holds the value calculated of the delay in case it's needed + int32_t loadDelayInt = 0; + //holds the value calculated of the origin point of the anim + csVector2 point1 = 0; + //holds the value calculated of the destination point of the anim + csVector2 point2 = 0; CS_ASSERT(actor); + + //calculate math expressions in case they where found + if(loadDelay) + { + loadDelayInt = loadDelay->Evaluate(env); + } + + //calculate cordinates only if all math expressions are valid + if(point1X && point1Y && point2X && point2Y) + { + point1.x = point1X->Evaluate(env); + point1.x = point1Y->Evaluate(env); + point2.x = point2X->Evaluate(env); + point2.x = point2Y->Evaluate(env); + } + if (type == NAMED) { // we only handle "spawn" for now... - actor->MoveToSpawnPos(loadDelay, background, point1, point2); + actor->MoveToSpawnPos(loadDelayInt, background, point1, point2); } else { @@ -1532,9 +1554,9 @@ } if (type & INSTANCE) - actor->Teleport(sector, destPos, 0.0, instance, loadDelay, background, point1, point2); + actor->Teleport(sector, destPos, 0.0, instance, loadDelayInt, background, point1, point2); else - actor->Teleport(sector, destPos, 0.0, loadDelay, background, point1, point2); + actor->Teleport(sector, destPos, 0.0, loadDelayInt, background, point1, point2); } } @@ -1544,10 +1566,12 @@ csString destination; csVector3 pos; InstanceID instance; - int32_t loadDelay; ///<The delay the loading screen shall have, in seconds; YOU DON'T HAVE TO DEFINE IT + MathExpression *loadDelay; ///<The delay the loading screen shall have, in seconds; YOU DON'T HAVE TO DEFINE IT csString background; ///<The background of the loading screen; YOU DON'T HAVE TO DEFINE IT - csVector2 point1;///<Defines start of animation - csVector2 point2;///<Defines start of animation + MathExpression *point1X; ///<Defines x cordinate start of animation + MathExpression *point1Y; ///<Defines y cordinate start of animation + MathExpression *point2X; ///<Defines x cordinate end of animation + MathExpression *point2Y; ///<Defines y cordinate end of animation EntityManager* entityManager; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-02-14 10:30:34
|
Revision: 6940 http://planeshift.svn.sourceforge.net/planeshift/?rev=6940&view=rev Author: weltall2 Date: 2011-02-14 10:30:28 +0000 (Mon, 14 Feb 2011) Log Message: ----------- fixed typo Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2011-02-14 10:04:09 UTC (rev 6939) +++ trunk/src/server/scripting.cpp 2011-02-14 10:30:28 UTC (rev 6940) @@ -1518,9 +1518,9 @@ if(point1X && point1Y && point2X && point2Y) { point1.x = point1X->Evaluate(env); - point1.x = point1Y->Evaluate(env); + point1.y = point1Y->Evaluate(env); point2.x = point2X->Evaluate(env); - point2.x = point2Y->Evaluate(env); + point2.y = point2Y->Evaluate(env); } if (type == NAMED) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-03-05 15:05:35
|
Revision: 7046 http://planeshift.svn.sourceforge.net/planeshift/?rev=7046&view=rev Author: weltall2 Date: 2011-03-05 15:05:29 +0000 (Sat, 05 Mar 2011) Log Message: ----------- comment fixes Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2011-03-05 15:01:45 UTC (rev 7045) +++ trunk/src/server/scripting.cpp 2011-03-05 15:05:29 UTC (rev 7046) @@ -166,7 +166,7 @@ //---------------------------------------------------------------------------- -// Applied mode vitals. +/// Applied mode vitals. class VitalAOp : public Applied1 { public: @@ -245,7 +245,7 @@ } protected: - csString attacker; //< optional MathScript var containing the attacker + csString attacker; ///< optional MathScript var containing the attacker }; //---------------------------------------------------------------------------- @@ -292,12 +292,12 @@ } protected: - PSITEMSTATS_STAT stat; //< which stat we're actually buffing + PSITEMSTATS_STAT stat; ///< which stat we're actually buffing }; //---------------------------------------------------------------------------- -// Applied mode skills. +/// Applied mode skills. class SkillAOp : public Applied2 { public: @@ -332,7 +332,7 @@ //---------------------------------------------------------------------------- -// Applied mode support for attack and defense modifiers. +/// Applied mode support for attack and defense modifiers. class CombatModAOp : public Applied1 { public: @@ -365,7 +365,7 @@ //---------------------------------------------------------------------------- -// Applied mode mesh overriding. +/// Applied mode mesh overriding. class MeshAOp : public AppliedOp { public: @@ -407,7 +407,7 @@ //---------------------------------------------------------------------------- -// A cancel action that sends the "undo" part of <msg text="..." undo="..."/>. +/// A cancel action that sends the "undo" part of <msg text="..." undo="..."/>. class MsgCancel : public iCancelAction { public: @@ -424,7 +424,7 @@ csString undo; }; -// Applied mode messages - with both text and undo. +/// Applied mode messages - with both text and undo. class MsgAOp : public AppliedOp { public: @@ -473,9 +473,9 @@ } protected: - csString text; //< message to send immediately - csString undo; //< message to send when canceled - csString type; //< message type to send + csString text; ///< message to send immediately + csString undo; ///< message to send when canceled + csString type; ///< message type to send }; //---------------------------------------------------------------------------- @@ -585,15 +585,15 @@ protected: csString name; - csString source; //< The name of the MathVar containing the entity the effect originates from (optional) - csVector3 offset; //< An offset from the target which the effect originates from + csString source; ///< The name of the MathVar containing the entity the effect originates from (optional) + csVector3 offset; ///< An offset from the target which the effect originates from CacheManager *cacheManager; }; //---------------------------------------------------------------------------- -// A cancel action that unregisters an event triggered spell. +/// A cancel action that unregisters an event triggered spell. class OnCancel : public iCancelAction { public: @@ -613,8 +613,9 @@ SCRIPT_TRIGGER type; }; -// Support for event triggered scripts. -// This really deserves quite a bit of commentary. +/** Support for event triggered scripts. + * This really deserves quite a bit of commentary. + */ class OnAOp : public AppliedOp { public: @@ -1003,8 +1004,8 @@ debuffAsp->Link(buffAsp); } protected: - ApplicativeScript* buff; //< The buff (beneficiary) script - ApplicativeScript* debuff; //< The debuff (victim) script + ApplicativeScript* buff; ///< The buff (beneficiary) script + ApplicativeScript* debuff; ///< The debuff (victim) script CacheManager* cachemanager; EntityManager* entitymanager; }; @@ -1170,9 +1171,9 @@ } protected: - csString aim; //< name of the MathScript var to aim at - csString text; //< message to send - csString type; //< message type to send + csString aim; ///< name of the MathScript var to aim at + csString text; ///< message to send + csString type; ///< message type to send }; //---------------------------------------------------------------------------- @@ -1292,8 +1293,8 @@ csString name; }; - csString aim; //< name of the MathScript var to aim at - csArray<Spell> spells; //< list of spells to cancel. + csString aim; ///< name of the MathScript var to aim at + csArray<Spell> spells; ///< list of spells to cancel. }; //---------------------------------------------------------------------------- @@ -1356,9 +1357,9 @@ protected: bool attached; - csString name; //< the name of the effect - csString sourceVar; //< name of the MathVar containing where the effect starts - csString targetVar; //< name of the MathVar containing where the effect is aimed + csString name; ///< the name of the effect + csString sourceVar; ///< name of the MathVar containing where the effect starts + csString targetVar; ///< name of the MathVar containing where the effect is aimed }; //---------------------------------------------------------------------------- @@ -1375,10 +1376,10 @@ } protected: - csString aim; //< name of the MathScript var to aim at + csString aim; ///< name of the MathScript var to aim at }; -// A base class supporting aim and a MathExpression value. +/// A base class supporting aim and a MathExpression value. class Imperative2 : public Imperative1 { public: @@ -1395,10 +1396,10 @@ } protected: - MathExpression* value; //< an embedded MathExpression + MathExpression* value; ///< an embedded MathExpression }; -// A base class supporting aim, value, and name. +/// A base class supporting aim, value, and name. class Imperative3 : public Imperative2 { public: @@ -1412,7 +1413,7 @@ } protected: - csString name; //< plain text - name of something, like a skill or faction + csString name; ///< plain text - name of something, like a skill or faction }; //---------------------------------------------------------------------------- @@ -1647,7 +1648,7 @@ } protected: - csString attacker; //< optional MathScript var containing the attacker + csString attacker; ///< optional MathScript var containing the attacker }; //---------------------------------------------------------------------------- @@ -1699,7 +1700,7 @@ } protected: - PSITEMSTATS_STAT stat; //< which stat we're actually buffing + PSITEMSTATS_STAT stat; ///< which stat we're actually buffing }; //---------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-04-22 17:29:14
|
Revision: 7169 http://planeshift.svn.sourceforge.net/planeshift/?rev=7169&view=rev Author: weltall2 Date: 2011-04-22 17:29:08 +0000 (Fri, 22 Apr 2011) Log Message: ----------- made range a mathexpression Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2011-04-22 17:17:17 UTC (rev 7168) +++ trunk/src/server/scripting.cpp 2011-04-22 17:29:08 UTC (rev 7169) @@ -1302,7 +1302,7 @@ class FxOp : public ImperativeOp { public: - virtual ~FxOp() { } + virtual ~FxOp(),effectRange(NULL) { } bool Load(iDocumentNode* top) { @@ -1313,7 +1313,10 @@ name = top->GetAttributeValue("name"); sourceVar = top->GetAttributeValue("source"); targetVar = top->GetAttributeValue("target"); - effectRange = top->GetAttributeValueAsFloat("range", 0.0); + if(top->GetAttributeValue("range")) + { + effectRange = MathExpression::Create(top->GetAttributeValue("range")); + } return !name.IsEmpty() && !targetVar.IsEmpty(); } @@ -1322,12 +1325,18 @@ { gemObject* target = GetObject(env, targetVar); gemObject* source = target; + float range = 0.0f; if (!sourceVar.IsEmpty()) source = GetObject(env, sourceVar); + if(effectRange) + { + range = effectRange->Evaluate(env); + } + if (attached) { - psEffectMessage fx(0, name, csVector3(0,0,0), source->GetEID(), target->GetEID(), 0, effectRange); + psEffectMessage fx(0, name, csVector3(0,0,0), source->GetEID(), target->GetEID(), 0, range); if (!fx.valid) { Error1("Error: <fx> could not create valid psEffectMessage\n"); @@ -1346,7 +1355,7 @@ pos.z -= DROP_DISTANCE* cosf(yrot); // Send effect message - psEffectMessage fx(0, name, pos, 0, 0, 0, effectRange); + psEffectMessage fx(0, name, pos, 0, 0, 0, range); if (!fx.valid) { Error1("Error: <fx> could not create valid psEffectMessage\n"); @@ -1358,10 +1367,10 @@ protected: bool attached; - csString name; ///< the name of the effect - csString sourceVar; ///< name of the MathVar containing where the effect starts - csString targetVar; ///< name of the MathVar containing where the effect is aimed - float effectRange; ///< the range which this effect will apply on the effect + csString name; ///< the name of the effect + csString sourceVar; ///< name of the MathVar containing where the effect starts + csString targetVar; ///< name of the MathVar containing where the effect is aimed + MathExpression* effectRange; ///< the range which this effect will apply on the effect }; //---------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-04-22 17:35:34
|
Revision: 7170 http://planeshift.svn.sourceforge.net/planeshift/?rev=7170&view=rev Author: weltall2 Date: 2011-04-22 17:35:28 +0000 (Fri, 22 Apr 2011) Log Message: ----------- wrong method Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2011-04-22 17:29:08 UTC (rev 7169) +++ trunk/src/server/scripting.cpp 2011-04-22 17:35:28 UTC (rev 7170) @@ -1302,7 +1302,8 @@ class FxOp : public ImperativeOp { public: - virtual ~FxOp(),effectRange(NULL) { } + FxOp() : ImperativeOp(), effectRange(NULL) { } + virtual ~FxOp() { } bool Load(iDocumentNode* top) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2012-02-09 18:00:49
|
Revision: 8071 http://planeshift.svn.sourceforge.net/planeshift/?rev=8071&view=rev Author: weltall2 Date: 2012-02-09 18:00:43 +0000 (Thu, 09 Feb 2012) Log Message: ----------- fixed memory leak Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2012-02-09 17:55:25 UTC (rev 8070) +++ trunk/src/server/scripting.cpp 2012-02-09 18:00:43 UTC (rev 8071) @@ -1537,7 +1537,29 @@ { public: TeleportOp(EntityManager* entitymanager) : Imperative1() { entityManager = entitymanager; loadDelay = NULL; background = ""; point1X = NULL; point1X = NULL; point2X = NULL; point2Y = NULL; } - virtual ~TeleportOp() { } + virtual ~TeleportOp() + { + if(loadDelay) + { + delete loadDelay; + } + if(point1X) + { + delete point1X; + } + if(point1Y) + { + delete point1Y; + } + if(point2X) + { + delete point2X; + } + if(point2Y) + { + delete point2Y; + } + } bool Load(iDocumentNode* node) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2012-02-09 20:44:36
|
Revision: 8073 http://planeshift.svn.sourceforge.net/planeshift/?rev=8073&view=rev Author: weltall2 Date: 2012-02-09 20:44:30 +0000 (Thu, 09 Feb 2012) Log Message: ----------- additional improvements to the scripting leaks removal Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2012-02-09 18:03:11 UTC (rev 8072) +++ trunk/src/server/scripting.cpp 2012-02-09 20:44:30 UTC (rev 8073) @@ -1536,7 +1536,7 @@ class TeleportOp : public Imperative1 { public: - TeleportOp(EntityManager* entitymanager) : Imperative1() { entityManager = entitymanager; loadDelay = NULL; background = ""; point1X = NULL; point1X = NULL; point2X = NULL; point2Y = NULL; } + TeleportOp(EntityManager* entitymanager) : Imperative1() { entityManager = entitymanager; loadDelay = NULL; background = ""; point1X = NULL; point1X = NULL; point1Y = NULL; point2X = NULL; point2Y = NULL; } virtual ~TeleportOp() { if(loadDelay) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lpa...@us...> - 2012-04-18 21:59:45
|
Revision: 8226 http://planeshift.svn.sourceforge.net/planeshift/?rev=8226&view=rev Author: lpancallo Date: 2012-04-18 21:59:39 +0000 (Wed, 18 Apr 2012) Log Message: ----------- changed the way TutorialMsgOp works, so it accepts also an expression. Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2012-04-18 20:12:19 UTC (rev 8225) +++ trunk/src/server/scripting.cpp 2012-04-18 21:59:39 UTC (rev 8226) @@ -2570,13 +2570,14 @@ bool Load(iDocumentNode* top) { - num = top->GetAttributeValueAsInt("num"); - - return num && Imperative1::Load(top); + expr = MathExpression::Create(top->GetAttributeValue("num")); + return Imperative1::Load(top) && expr!=NULL; } virtual void Run(MathEnvironment* env) { + int num = (int) expr->Evaluate(env); + gemActor* actor = GetActor(env, aim); if (!actor || !actor->GetClientID()) { @@ -2588,7 +2589,7 @@ } protected: - int num; ///< The database ID (subtracted of 1001) of the tutorial tip + MathExpression* expr; ///< The database ID (subtracted of 1001) of the tutorial tip }; //============================================================================ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2012-04-18 22:31:47
|
Revision: 8227 http://planeshift.svn.sourceforge.net/planeshift/?rev=8227&view=rev Author: weltall2 Date: 2012-04-18 22:31:41 +0000 (Wed, 18 Apr 2012) Log Message: ----------- avoid crash Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2012-04-18 21:59:39 UTC (rev 8226) +++ trunk/src/server/scripting.cpp 2012-04-18 22:31:41 UTC (rev 8227) @@ -2581,7 +2581,7 @@ gemActor* actor = GetActor(env, aim); if (!actor || !actor->GetClientID()) { - Error2("Error: <tutorialmsg/> needs a valid client for actor '%s'.\n", actor->GetName()); + Error2("Error: <tutorialmsg/> needs a valid client for actor '%s'.\n", actor? "null" : actor->GetName()); return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lpa...@us...> - 2012-04-19 07:31:59
|
Revision: 8229 http://planeshift.svn.sourceforge.net/planeshift/?rev=8229&view=rev Author: lpancallo Date: 2012-04-19 07:31:47 +0000 (Thu, 19 Apr 2012) Log Message: ----------- correct aim is "Target" for TutorialMsgOp Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2012-04-18 22:44:38 UTC (rev 8228) +++ trunk/src/server/scripting.cpp 2012-04-19 07:31:47 UTC (rev 8229) @@ -2560,7 +2560,7 @@ * The message is taken from tips table in the database. * * Syntax: - * <tutorialmsg aim="Actor" num="TutorialTipID"/> + * <tutorialmsg aim="Target" num="TutorialTipID"/> */ class TutorialMsgOp : public Imperative1 { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lpa...@us...> - 2012-04-19 11:48:49
|
Revision: 8232 http://planeshift.svn.sourceforge.net/planeshift/?rev=8232&view=rev Author: lpancallo Date: 2012-04-19 11:48:38 +0000 (Thu, 19 Apr 2012) Log Message: ----------- adjustment to have correspondance of numbering in TutorialMsgOp Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2012-04-19 10:25:29 UTC (rev 8231) +++ trunk/src/server/scripting.cpp 2012-04-19 11:48:38 UTC (rev 8232) @@ -2584,7 +2584,8 @@ Error2("Error: <tutorialmsg/> needs a valid client for actor '%s'.\n", actor? "null" : actor->GetName()); return; } - + //removing 1 to have correspondance with numbering 5 -> 1005 + num--; psserver->GetTutorialManager()->HandleScriptMessage(actor->GetClientID(), num); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2012-09-23 11:10:32
|
Revision: 8441 http://planeshift.svn.sourceforge.net/planeshift/?rev=8441&view=rev Author: weltall2 Date: 2012-09-23 11:10:26 +0000 (Sun, 23 Sep 2012) Log Message: ----------- NPCCmdOp - one-time npc command sending: <npccmd aim="Caster" cmd="spam spam spam spam...!"/> Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2012-09-22 15:36:35 UTC (rev 8440) +++ trunk/src/server/scripting.cpp 2012-09-23 11:10:26 UTC (rev 8441) @@ -47,6 +47,7 @@ #include "entitymanager.h" #include "progressionmanager.h" #include "tutorialmanager.h" +#include "npcmanager.h" #include "clients.h" #include "events.h" #include "gem.h" @@ -76,6 +77,16 @@ return actor; } +gemNPC* GetNPC(const MathEnvironment* env, const csString& varName) +{ + MathVar* var = env->Lookup(varName); + if (!var) + return NULL; + + gemNPC* npc = dynamic_cast<gemNPC*>(var->GetObject()); // cast from iScriptableVar + return npc; +} + psCharacter* GetCharacter(const MathEnvironment* env, const csString& varName) { MathVar* var = env->Lookup(varName); @@ -1303,6 +1314,43 @@ //---------------------------------------------------------------------------- /** + * NPCCmdOp - one-time npc command sending: + * + * <npccmd aim="Caster" cmd="spam spam spam spam...!"/> + */ +class NPCCmdOp : public ImperativeOp +{ +public: + virtual ~NPCCmdOp() { } + + bool Load(iDocumentNode* node) + { + aim = node->GetAttributeValue("aim"); + cmd = node->GetAttributeValue("cmd"); + return true; + } + + virtual void Run(MathEnvironment* env) + { + gemNPC* npc = GetNPC(env, aim); + + if (npc) + { + csString finalCmd(cmd); + env->InterpolateString(finalCmd); + + psserver->GetNPCManager()->QueueNPCCmdPerception(npc, finalCmd); + } + } + +protected: + csString aim; ///< name of the MathScript var to aim at + csString cmd; ///< cmd to send to the npc +}; + +//---------------------------------------------------------------------------- + +/** * CancelOp - a way to cancel active spells. * * <cancel type="all"> @@ -2708,6 +2756,10 @@ { op = new MsgOp; } + else if (elem == "npccmd") + { + op = new NPCCmdOp; + } else if (elem == "fx") { op = new FxOp; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2012-11-21 20:15:24
|
Revision: 8492 http://planeshift.svn.sourceforge.net/planeshift/?rev=8492&view=rev Author: weltall2 Date: 2012-11-21 20:15:18 +0000 (Wed, 21 Nov 2012) Log Message: ----------- added support for env vars in skillOp Modified Paths: -------------- trunk/src/server/scripting.cpp Modified: trunk/src/server/scripting.cpp =================================================================== --- trunk/src/server/scripting.cpp 2012-11-16 18:41:57 UTC (rev 8491) +++ trunk/src/server/scripting.cpp 2012-11-21 20:15:18 UTC (rev 8492) @@ -1001,7 +1001,7 @@ { // complain (shouldn't happen - script should've been validated against the schema) Error2("Unknown operation >%s< - validate against the schema!", elem.GetData()); - return false; + return NULL; } if (op->Load(node)) @@ -2087,27 +2087,39 @@ bool Load(iDocumentNode* node) { - psSkillInfo* info = cachemanager->GetSkillByName(node->GetAttributeValue("name")); - if (!info) - { - Error2("Found <skill aim=\"...\" name=\"%s\">, but no such skill exists.", node->GetAttributeValue("name")); - return false; - } - skill = info->id; + skillName = node->GetAttributeValue("name"); return Imperative3::Load(node); } void Run(MathEnvironment* env) { psCharacter* c = GetCharacter(env, aim); + + //evaluate the variables so we can get it's value + MathVar* nameVar = env->Lookup(skillName); + csString varName; + + if(nameVar) + varName = nameVar->GetString(); + else //if the variable was not found try getting the value associated directly (not in <let>) + varName = skillName; + + psSkillInfo* info = cachemanager->GetSkillByName(varName); + if (!info) + { + Error2("Found <skill aim=\"...\" name=\"%s\">, but no such skill exists.", varName.GetData()); + return; + } + + PSSKILL skill = info->id; int val = (int) value->Evaluate(env); SkillRank& buffable = c->GetSkillRank(skill); buffable.SetBase(buffable.Base() + val); - c->SetSkillRank(skill,buffable.Base()); + c->SetSkillRank(info->id,buffable.Base()); } protected: - PSSKILL skill; CacheManager* cachemanager; + csString skillName; }; //---------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |