All pastes #1225007 Raw Edit

patch for 1472

public diff v1 · immutable
#1225007 ·published 2008-10-10 23:17 UTC
rendered paste body
Index: src/server/adminmanager.h===================================================================--- src/server/adminmanager.h	(revision 2239)+++ src/server/adminmanager.h	(working copy)@@ -359,8 +359,8 @@     /// Change quality of items     void HandleSetQuality(psAdminCmdMessage& msg, AdminCmdData& data, Client *client, gemObject* object ); -    /// Make an item unstackable-    void Unstackable(MsgEntry* me, AdminCmdData& data, Client *client, gemObject* target );+    /// Decide whether an item is stackable or not, bypassing the flag for this type of item+    void ItemStackable(MsgEntry* me, AdminCmdData& data, Client *client, gemObject* target );      /// Set trait of a char     void HandleSetTrait(psAdminCmdMessage& msg, AdminCmdData& data, Client *client, gemObject* object );Index: src/server/adminmanager.cpp===================================================================--- src/server/adminmanager.cpp	(revision 2239)+++ src/server/adminmanager.cpp	(working copy)@@ -300,7 +300,7 @@         }         return true;     }-    else if (command == "/unstackable")+    else if (command == "/setstackable")     {         setting = words.Get(1);         return true;@@ -1424,9 +1424,9 @@     {         HandleSetQuality(msg, data, client, targetobject);     }-    else if (data.command == "/unstackable")+    else if (data.command == "/setstackable")     {-        Unstackable(me, data, client, targetobject);+        ItemStackable(me, data, client, targetobject);     }     else if (data.command == "/settrait")     {@@ -7450,7 +7450,7 @@     } } -void AdminManager::Unstackable(MsgEntry* me, AdminCmdData& data, Client *client, gemObject* object )+void AdminManager::ItemStackable(MsgEntry* me, AdminCmdData& data, Client *client, gemObject* object ) {     if (!object)     {@@ -7476,20 +7476,27 @@     }     else if (data.setting == "on")     {-        item->SetIsUnstackable(true);+        item->SetIsItemStackable(true);         item->Save(false);-        psserver->SendSystemOK(client->GetClientNum(), "Unstackable flag ON");+        psserver->SendSystemInfo(client->GetClientNum(), "ItemStackable flag ON");         return;     }     else if (data.setting == "off")     {-        item->SetIsUnstackable(false);+        item->SetIsItemStackable(false);         item->Save(false);-        psserver->SendSystemOK(client->GetClientNum(), "Unstackable flag OFF");+        psserver->SendSystemInfo(client->GetClientNum(), "ItemStackable flag OFF");         return;     }+    else if (data.setting == "reset")+    {+        item->ResetItemStackable();+        item->Save(false);+        psserver->SendSystemInfo(client->GetClientNum(), "ItemStackable flag removed");+        return;+    }     psserver->SendSystemError(client->GetClientNum(), "%s is not a valid option", data.setting.GetData());-    psserver->SendSystemError(client->GetClientNum(), "Syntax : /unstackable on|off|info");+    psserver->SendSystemError(client->GetClientNum(), "Syntax : /setstackable on|off|reset|info"); }  void AdminManager::HandleSetQuality(psAdminCmdMessage& msg, AdminCmdData& data, Client *client, gemObject* object )Index: src/server/database/mysql/command_access.sql===================================================================--- src/server/database/mysql/command_access.sql	(revision 2239)+++ src/server/database/mysql/command_access.sql	(working copy)@@ -113,9 +113,9 @@ INSERT INTO command_group_assignment VALUES( "/setquality", 30 ); INSERT INTO command_group_assignment VALUES( "/setquality", 25 ); INSERT INTO command_group_assignment VALUES( "/setquality", 24 );-INSERT INTO command_group_assignment VALUES( "/unstackable", 30 );-INSERT INTO command_group_assignment VALUES( "/unstackable", 25 );-INSERT INTO command_group_assignment VALUES( "/unstackable", 24 );+INSERT INTO command_group_assignment VALUES( "/setstackable", 30 );+INSERT INTO command_group_assignment VALUES( "/setstackable", 25 );+INSERT INTO command_group_assignment VALUES( "/setstackable", 24 ); INSERT INTO command_group_assignment VALUES( "morph others", 30 ); INSERT INTO command_group_assignment VALUES( "morph others", 25 ); INSERT INTO command_group_assignment VALUES( "morph others", 24 );Index: src/server/database/mysql/upgrade_schema.sql===================================================================--- src/server/database/mysql/upgrade_schema.sql	(revision 2239)+++ src/server/database/mysql/upgrade_schema.sql	(working copy)@@ -985,6 +985,13 @@ INSERT INTO command_group_assignment VALUES( "/unstackable", 24 ); UPDATE `server_options` SET `option_value`='1197' WHERE `option_name`='db_version'; +#### 1198 - Tristan Cragnolini - changing /unstackable to /setstackable+INSERT INTO command_group_assignment VALUES( "/setstackable", 30 );+INSERT INTO command_group_assignment VALUES( "/setstackable", 25 );+INSERT INTO command_group_assignment VALUES( "/setstackable", 24 );+DELETE FROM command_group_assignment WHERE command_name="/unstackable";+UPDATE `server_options` SET `option_value`='1198' WHERE `option_name`='db_version';+ # Insert your upgrade before this line. Remember when you set a new db_version # to update the server_options.sql file and update psserver.cpp as well. # This to ensure that everything is working if you use the create_all.sql toIndex: src/server/database/mysql/server_options.sql===================================================================--- src/server/database/mysql/server_options.sql	(revision 2239)+++ src/server/database/mysql/server_options.sql	(working copy)@@ -28,7 +28,7 @@ # Dumping data for table server_options # -INSERT INTO `server_options` VALUES ('db_version','1197');+INSERT INTO `server_options` VALUES ('db_version','1198'); INSERT INTO `server_options` VALUES ('game_time','15:00'); INSERT INTO `server_options` VALUES ('game_date','100-1-1'); INSERT INTO `server_options` VALUES ('standard_motd','This is the message of the day from server_options table.');Index: src/server/psserver.cpp===================================================================--- src/server/psserver.cpp	(revision 2239)+++ src/server/psserver.cpp	(working copy)@@ -89,7 +89,7 @@ #include "introductionmanager.h"  // Remember to bump this in server_options.sql and add to upgrade_schema.sql!-#define DATABASE_VERSION_STR "1197"+#define DATABASE_VERSION_STR "1198"   psCharacterLoader psServer::CharacterLoader;Index: src/server/bulkobjects/psitem.cpp===================================================================--- src/server/bulkobjects/psitem.cpp	(revision 2239)+++ src/server/bulkobjects/psitem.cpp	(working copy)@@ -320,7 +320,13 @@     if (flagstr.FindSubString("UNSTACKABLE", 0, true) != -1)     {         flags |= PSITEM_FLAG_UNSTACKABLE;+        flags &= ~PSITEM_FLAG_STACKABLE;     }+    if (flagstr.FindSubString("STACKABLE", 0, true) != -1)+    {+        flags |= PSITEM_FLAG_STACKABLE;+        flags &= ~PSITEM_FLAG_UNSTACKABLE;+    }      // Lockpick stuff     SetLockStrength(row.GetInt("lock_str"));@@ -592,6 +598,11 @@         if (!flagString.IsEmpty()) flagString.Append(",");         flagString.Append("UNSTACKABLE");     }+    if (flags & PSITEM_FLAG_STACKABLE)+    {+        if (!flagString.IsEmpty()) flagString.Append(",");+        flagString.Append("STACKABLE");+    }          targetQuery->AddField("flags",flagString);     @@ -1441,11 +1452,15 @@  bool psItem::GetIsStackable() const {-    if(!(flags & PSITEM_FLAG_UNSTACKABLE))+    if(flags & PSITEM_FLAG_UNSTACKABLE)     {-        return current_stats->GetIsStackable();+        return false;     }-    return false;+    if(flags & PSITEM_FLAG_STACKABLE)+    {+        return true;+    }+    return current_stats->GetIsStackable(); }  bool psItem::GetIsEquipStackable() const@@ -1957,14 +1972,23 @@ }  /// this only change the stackability for this instance, not all items (itemStats)-void psItem::SetIsUnstackable(bool v)+void psItem::SetIsItemStackable(bool v) {     if (v)+        flags |= PSITEM_FLAG_STACKABLE;+        flags &= ~PSITEM_FLAG_UNSTACKABLE;+    else         flags |= PSITEM_FLAG_UNSTACKABLE;-    else-        flags &= ~PSITEM_FLAG_UNSTACKABLE;+        flags &= ~PSITEM_FLAG_STACKABLE; } +///remove the STACKABLE and UNSTACKABLE flag, the items stackability is depending on his type+void psItem::ResetItemStackable()+{+    flags &= ~PSITEM_FLAG_STACKABLE;+    flags &= ~PSITEM_FLAG_UNSTACKABLE;+}+ void psItem::SetIsKey(bool v) {     if (v)Index: src/server/bulkobjects/psitem.h===================================================================--- src/server/bulkobjects/psitem.h	(revision 2239)+++ src/server/bulkobjects/psitem.h	(working copy)@@ -124,6 +124,9 @@ /// Flag defines if item can *not* be stacked #define PSITEM_FLAG_UNSTACKABLE         0x00020000 +/// Flag defines if item can be stacked+#define PSITEM_FLAG_STACKABLE           0x00040000+ #define KEY_SKELETON      ((unsigned int)-2)  #define MAX_STACK_COUNT        65  // This is the most items a player can have in a stack@@ -799,8 +802,8 @@     void SetIsPickupable(bool v);      void SetIsUnstackable(bool v);+    void ResetItemStackable(); -     PSSKILL GetLockpickSkill() { return lockpickSkill; }     void SetLockpickSkill(PSSKILL v);