rendered paste bodyIndex: 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);