diff options
| -rw-r--r-- | sourcemod/scripting/setpos_setang.sp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/sourcemod/scripting/setpos_setang.sp b/sourcemod/scripting/setpos_setang.sp new file mode 100644 index 0000000..1dc8dbb --- /dev/null +++ b/sourcemod/scripting/setpos_setang.sp @@ -0,0 +1,70 @@ +#include <sourcemod> +#include <cstrike> +#include <smlib> + +new const String:PLUGIN_NAME[] = "setpos/setang for player" +new const String:PLUGIN_AUTHOR[] = "cristeigabriel" +new const String:PLUGIN_DESCRIPTION[] = "setpos_player, setang_player" +new const String:PLUGIN_VERSION[] = "0" + +public Plugin:myinfo = { + name = PLUGIN_NAME, + author = PLUGIN_AUTHOR, + description = PLUGIN_DESCRIPTION, + version = PLUGIN_VERSION, +} + +public void OnPluginStart() { + RegAdminCmd("setposang_player", SetPosAngPlayer, ADMFLAG_GENERIC); +} + +public Action SetPosAngPlayer(int client, int args) { + if (args != 7) { + PrintToConsole(client, "setposang_player: not enough arguments"); + return Plugin_Continue; + } + + char name[32]; + int target = -1, i, j = 0; + float pos[3]; + float ang[3]; + + GetCmdArg(1, name, sizeof(name)); + for (i = 1; i <= MaxClients; i++) { + if (!IsClientConnected(i)) { + continue; + } + + char curname[32]; + + GetClientName(i, curname, sizeof(curname)); + if (StrEqual(name, curname)) { + target = i; + break; + } + } + + if (target == -1) { + PrintToConsole(client, "setpos_exact: no such target \"%s\"", name); + return Plugin_Continue; + } + + for (i = 2; i < 5; i++) { + char arg[128]; + + GetCmdArg(i, arg, sizeof(arg)); + pos[j++] = StringToFloat(arg); + } + + for (j = 0, i = 5; i <= 7; i++) { + char arg[128]; + + GetCmdArg(i, arg, sizeof(arg)); + ang[j++] = StringToFloat(arg); + } + + TeleportEntity(target, pos, ang, NULL_VECTOR); + + return Plugin_Handled; +} + |
