From 783012efa87dede8539662f7489fcdb7518a80de Mon Sep 17 00:00:00 2001 From: RusJJ Date: Sat, 1 Jan 2022 18:11:51 +0300 Subject: [PATCH 1/4] Update shop.sp Bump version --- addons/sourcemod/scripting/shop.sp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/sourcemod/scripting/shop.sp b/addons/sourcemod/scripting/shop.sp index 13c2fa4..f03458b 100644 --- a/addons/sourcemod/scripting/shop.sp +++ b/addons/sourcemod/scripting/shop.sp @@ -6,7 +6,7 @@ #tryinclude #define REQUIRE_EXTENSIONS -#define SHOP_VERSION "3.0E2" // 12.01.2021 +#define SHOP_VERSION "3.0F1" // 01.01.2021 #define SHOP_MYSQL_CHARSET "utf8mb4" #pragma newdecls required @@ -45,7 +45,7 @@ ConVar g_hHideCategoriesItemsCount; #include "shop/item_manager.sp" #include "shop/player_manager.sp" #if defined _SteamWorks_Included -#include "shop/stats.sp" + #include "shop/stats.sp" #endif public Plugin myinfo = From 03497daebaa47ccde2f7282f0ad55bee28533e90 Mon Sep 17 00:00:00 2001 From: RusJJ Date: Sat, 1 Jan 2022 18:15:59 +0300 Subject: [PATCH 2/4] Update stats.sp Fixed for the latest version of SteamWorks --- addons/sourcemod/scripting/shop/stats.sp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/sourcemod/scripting/shop/stats.sp b/addons/sourcemod/scripting/shop/stats.sp index c70b45c..fff5395 100644 --- a/addons/sourcemod/scripting/shop/stats.sp +++ b/addons/sourcemod/scripting/shop/stats.sp @@ -2,9 +2,9 @@ stock const char API_KEY[] = "e34fa2f3adb922bf76fb7b06807caa3c"; stock const char URL[] = "http://stats.tibari.ru/api/v1/add_server"; /* Stats pusher */ -public int SteamWorks_SteamServersConnected() +public void SteamWorks_SteamServersConnected() { - int iIp[4]; + char iIp[4]; // Get ip if (SteamWorks_GetPublicIP(iIp)) From f84c4a42f9630da5039080c003565e1ef112418b Mon Sep 17 00:00:00 2001 From: RusJJ Date: Sat, 1 Jan 2022 18:45:37 +0300 Subject: [PATCH 3/4] Shop_GiveClientItem update PROBABLY unfinished Fixes Shop_GiveClientItem by handling third param named "count" --- addons/sourcemod/scripting/shop.sp | 14 +++--- .../scripting/shop/player_manager.sp | 50 +++++-------------- 2 files changed, 20 insertions(+), 44 deletions(-) diff --git a/addons/sourcemod/scripting/shop.sp b/addons/sourcemod/scripting/shop.sp index f03458b..27855c2 100644 --- a/addons/sourcemod/scripting/shop.sp +++ b/addons/sourcemod/scripting/shop.sp @@ -6,7 +6,7 @@ #tryinclude #define REQUIRE_EXTENSIONS -#define SHOP_VERSION "3.0F1" // 01.01.2021 +#define SHOP_VERSION "3.0F1" // 01.01.2022 #define SHOP_MYSQL_CHARSET "utf8mb4" #pragma newdecls required @@ -1511,15 +1511,15 @@ bool RemoveItemEx(int client, const char[] sItemId, int count = 1) return PlayerManager_RemoveItemEx(client, sItemId, count); } -bool GiveItem(int client, int item_id) +bool GiveItem(int client, int item_id, int giveCount = 1) { char sItemId[16]; IntToString(item_id, sItemId, sizeof(sItemId)); - return GiveItemEx(client, sItemId); + return GiveItemEx(client, sItemId, giveCount); } -bool GiveItemEx(int client, const char[] sItemId) +bool GiveItemEx(int client, const char[] sItemId, int giveCount = 1) { int category_id, price, sell_price, count, duration; ItemType type; @@ -1536,7 +1536,7 @@ bool GiveItemEx(int client, const char[] sItemId) { char category[SHOP_MAX_STRING_LENGTH]; ItemManager_GetCategoryById(category_id, category, sizeof(category)); - if (!ItemManager_OnItemBuyEx(client, category_id, category, StringToInt(sItemId), item, type, price, sell_price, (type == Item_Finite) ? count : duration)) + if (!ItemManager_OnItemBuyEx(client, category_id, category, StringToInt(sItemId), item, type, price, sell_price, (type == Item_Finite) ? giveCount : duration)) { return false; } @@ -1546,7 +1546,9 @@ bool GiveItemEx(int client, const char[] sItemId) { if (ClientHasItemEx(client, sItemId)) { - return false; + int timeleft = PlayerManager_GetItemTimeleftEx(client, sItemId); + if(timeleft <= 0) return true; // Do not change a time of an infinite item + return PlayerManager_SetItemTimeleftEx(client, sItemId, timeleft + duration * giveCount); } } } diff --git a/addons/sourcemod/scripting/shop/player_manager.sp b/addons/sourcemod/scripting/shop/player_manager.sp index 717a613..32f5df4 100644 --- a/addons/sourcemod/scripting/shop/player_manager.sp +++ b/addons/sourcemod/scripting/shop/player_manager.sp @@ -128,9 +128,7 @@ public int PlayerManager_GiveClientItem(Handle plugin, int numParams) ThrowNativeError(SP_ERROR_NATIVE, error); } - int item_id = GetNativeCell(2); - - return GiveItem(client, item_id); + return GiveItem(client, GetNativeCell(2), GetNativeCell(3)); } public int PlayerManager_BuyClientItem(Handle plugin, int numParams) @@ -141,9 +139,7 @@ public int PlayerManager_BuyClientItem(Handle plugin, int numParams) if (!CheckClient(client, error, sizeof(error))) ThrowNativeError(SP_ERROR_NATIVE, error); - int item_id = GetNativeCell(2); - - return BuyItem(client, item_id, true); + return BuyItem(client, GetNativeCell(2), true); } public int PlayerManager_SellClientItem(Handle plugin, int numParams) @@ -156,9 +152,7 @@ public int PlayerManager_SellClientItem(Handle plugin, int numParams) ThrowNativeError(SP_ERROR_NATIVE, error); } - int item_id = GetNativeCell(2); - - return SellItem(client, item_id); + return SellItem(client, GetNativeCell(2)); } public int PlayerManager_UseClientItem(Handle plugin, int numParams) @@ -169,9 +163,7 @@ public int PlayerManager_UseClientItem(Handle plugin, int numParams) if (!CheckClient(client, error, sizeof(error))) ThrowNativeError(SP_ERROR_NATIVE, error); - int item_id = GetNativeCell(2); - - return UseItem(client, item_id, true); + return UseItem(client, GetNativeCell(2), true); } public int PlayerManager_RemoveClientItem(Handle plugin, int numParams) @@ -182,10 +174,7 @@ public int PlayerManager_RemoveClientItem(Handle plugin, int numParams) if (!CheckClient(client, error, sizeof(error))) ThrowNativeError(SP_ERROR_NATIVE, error); - int item_id = GetNativeCell(2); - int count = GetNativeCell(3); - - return PlayerManager_RemoveItem(client, item_id, count); + return PlayerManager_RemoveItem(client, GetNativeCell(2), GetNativeCell(3)); } public int PlayerManager_GetClientItemCount(Handle plugin, int numParams) @@ -196,9 +185,7 @@ public int PlayerManager_GetClientItemCount(Handle plugin, int numParams) if (!CheckClient(client, error, sizeof(error))) ThrowNativeError(SP_ERROR_NATIVE, error); - int item_id = GetNativeCell(2); - - return PlayerManager_GetItemCount(client, item_id); + return PlayerManager_GetItemCount(client, GetNativeCell(2)); } public int PlayerManager_SetClientItemCount(Handle plugin, int numParams) @@ -209,9 +196,7 @@ public int PlayerManager_SetClientItemCount(Handle plugin, int numParams) if (!CheckClient(client, error, sizeof(error))) ThrowNativeError(SP_ERROR_NATIVE, error); - int item_id = GetNativeCell(2); - - PlayerManager_SetItemCount(client, item_id, GetNativeCell(3)); + PlayerManager_SetItemCount(client, GetNativeCell(2), GetNativeCell(3)); } public int PlayerManager_GetClientItemSellPrice(Handle plugin, int numParams) @@ -222,9 +207,7 @@ public int PlayerManager_GetClientItemSellPrice(Handle plugin, int numParams) if (!CheckClient(client, error, sizeof(error))) ThrowNativeError(SP_ERROR_NATIVE, error); - int item_id = GetNativeCell(2); - - return PlayerManager_GetItemSellPrice(client, item_id); + return PlayerManager_GetItemSellPrice(client, GetNativeCell(2)); } public int PlayerManager_SetClientItemTimeleft(Handle plugin, int numParams) @@ -261,9 +244,7 @@ public int PlayerManager_IsClientItemToggled(Handle plugin, int numParams) if (!CheckClient(client, error, sizeof(error))) ThrowNativeError(SP_ERROR_NATIVE, error); - int item_id = GetNativeCell(2); - - return PlayerManager_IsItemToggled(client, item_id); + return PlayerManager_IsItemToggled(client, GetNativeCell(2)); } public int PlayerManager_IsClientHasItem(Handle plugin, int numParams) @@ -274,9 +255,7 @@ public int PlayerManager_IsClientHasItem(Handle plugin, int numParams) if (!CheckClient(client, error, sizeof(error))) ThrowNativeError(SP_ERROR_NATIVE, error); - int item_id = GetNativeCell(2); - - return PlayerManager_ClientHasItem(client, item_id); + return PlayerManager_ClientHasItem(client, GetNativeCell(2)); } public int PlayerManager_ToggleClientItem(Handle plugin, int numParams) @@ -287,10 +266,7 @@ public int PlayerManager_ToggleClientItem(Handle plugin, int numParams) if (!CheckClient(client, error, sizeof(error))) ThrowNativeError(SP_ERROR_NATIVE, error); - int item_id = GetNativeCell(2); - ToggleState toggle = GetNativeCell(3); - - return ToggleItem(client, item_id, toggle, true); + return ToggleItem(client, GetNativeCell(2), GetNativeCell(3), true); } void PlayerManager_OnPluginStart() @@ -587,8 +563,6 @@ public int PlayerManager_ToggleClientCategoryOff(Handle plugin, int numParams) if (!CheckClient(client, error, sizeof(error))) ThrowNativeError(SP_ERROR_NATIVE, error); - int category_id = GetNativeCell(2); - h_KvClientItems[client].Rewind(); if (!h_KvClientItems[client].GotoFirstSubKey()) return; @@ -596,7 +570,7 @@ public int PlayerManager_ToggleClientCategoryOff(Handle plugin, int numParams) char sItemId[16]; do { - if (h_KvClientItems[client].GetNum("category_id", -1) != category_id || !KvGetSectionName(h_KvClientItems[client], sItemId, sizeof(sItemId))) + if (h_KvClientItems[client].GetNum("category_id", -1) != GetNativeCell(2) || !KvGetSectionName(h_KvClientItems[client], sItemId, sizeof(sItemId))) continue; int duration = h_KvClientItems[client].GetNum("duration"); From 6565adec8a1cb69dab552b1e51488dc687489a73 Mon Sep 17 00:00:00 2001 From: RusJJ Date: Sat, 1 Jan 2022 18:51:02 +0300 Subject: [PATCH 4/4] Update player_manager.sp Revert one change in a code --- addons/sourcemod/scripting/shop/player_manager.sp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/sourcemod/scripting/shop/player_manager.sp b/addons/sourcemod/scripting/shop/player_manager.sp index 32f5df4..bee6646 100644 --- a/addons/sourcemod/scripting/shop/player_manager.sp +++ b/addons/sourcemod/scripting/shop/player_manager.sp @@ -567,10 +567,12 @@ public int PlayerManager_ToggleClientCategoryOff(Handle plugin, int numParams) if (!h_KvClientItems[client].GotoFirstSubKey()) return; + int category_id = GetNativeCell(2); + char sItemId[16]; do { - if (h_KvClientItems[client].GetNum("category_id", -1) != GetNativeCell(2) || !KvGetSectionName(h_KvClientItems[client], sItemId, sizeof(sItemId))) + if (h_KvClientItems[client].GetNum("category_id", -1) != category_id || !KvGetSectionName(h_KvClientItems[client], sItemId, sizeof(sItemId))) continue; int duration = h_KvClientItems[client].GetNum("duration");