diff --git a/_entWatch4/scripting/entWatch-tools.sp b/_entWatch4/scripting/entWatch-tools.sp new file mode 100644 index 00000000..f3fd5172 --- /dev/null +++ b/_entWatch4/scripting/entWatch-tools.sp @@ -0,0 +1,103 @@ +//==================================================================================================== +// +// Name: [entWatch] Tools +// Author: zaCade & Prometheum +// Description: Handle the tools of [entWatch] +// +//==================================================================================================== +#include + +#pragma newdecls required + +#include +#include +#include +#include +#include + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Plugin myinfo = +{ + name = "[entWatch] Tools", + author = "zaCade & Prometheum", + description = "Handle the tools of [entWatch]", + version = "4.0.0" +}; + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnPluginStart() +{ + LoadTranslations("common.phrases"); + LoadTranslations("entWatch.tools.phrases"); + + RegAdminCmd("sm_etransfer", Command_TransferItem, ADMFLAG_BAN); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action Command_TransferItem(int client, int args) +{ + if (GetCmdArgs() < 2) + { + CReplyToCommand(client, "\x07%s[entWatch] \x07%sUsage: sm_etransfer <#userid/name> <#userid/name>", "E01B5D", "F16767"); + return Plugin_Handled; + } + + char sTarget1[32]; + char sTarget2[32]; + GetCmdArg(1, sTarget1, sizeof(sTarget1)); + GetCmdArg(2, sTarget2, sizeof(sTarget2)); + + int target1; + if ((target1 = FindTarget(client, sTarget1, true)) == -1) + return Plugin_Handled; + + int target2; + if ((target2 = FindTarget(client, sTarget2, true)) == -1) + return Plugin_Handled; + + if (GetClientTeam(target1) != GetClientTeam(target2)) + { + CReplyToCommand(client, "\x07[entWatch] \x07%sError: client teams dont match!", "E01B5D", "F16767"); + return Plugin_Handled; + } + + bool bTransfered; + for (int index; index < EW_GetItemCount(); index++) + { + CItem item = EW_GetItemData(index); + + if (item.bClient && item.iClient == target1) + { + if (item.bWeapon && !(item.dConfig.iSlot == SLOT_NONE || item.dConfig.iSlot == SLOT_KNIFE)) + { + SDKHooks_DropWeapon(item.iClient, item.iWeapon, NULL_VECTOR, NULL_VECTOR); + + char sWeaponClass[32]; + GetEntityClassname(item.iWeapon, sWeaponClass, sizeof(sWeaponClass)); + GivePlayerItem(item.iClient, sWeaponClass); + + int iDisplay = item.dConfig.iDisplay; + item.dConfig.iDisplay &= ~(1<<0); + + EquipPlayerWeapon(target2, item.iWeapon); + + item.dConfig.iDisplay &= iDisplay; + bTransfered = true; + } + } + } + + if (bTransfered) + { + CPrintToChatAll("\x07%s[entWatch] \x07%s%N\x07%s transfered all items from \x07%s%N\x07%s to \x07%s%N\x07%s.", "E01B5D", "EDEDED", client, "F16767", "EDEDED", target1, "F16767", "EDEDED", target2, "F16767"); + LogAction(client, target1, "%L transfered all items from %L to %L.", client, target1, target2); + } + + return Plugin_Handled; +} \ No newline at end of file diff --git a/_entWatch4/translations/entWatch.tools.phrases.txt b/_entWatch4/translations/entWatch.tools.phrases.txt new file mode 100644 index 00000000..7062c23b --- /dev/null +++ b/_entWatch4/translations/entWatch.tools.phrases.txt @@ -0,0 +1,3 @@ +"Phrases" +{ +} \ No newline at end of file