From 47fdbfde6d47b19cc13b8b808e77ec3a5e7d9758 Mon Sep 17 00:00:00 2001 From: Franc1sco Franug Date: Sun, 20 Dec 2015 00:07:10 +0100 Subject: [PATCH] Added noentry zones --- DevZones_NoEntry/devzones_noentry.smx | Bin 0 -> 4372 bytes DevZones_NoEntry/devzones_noentry.sp | 80 ++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 DevZones_NoEntry/devzones_noentry.smx create mode 100644 DevZones_NoEntry/devzones_noentry.sp diff --git a/DevZones_NoEntry/devzones_noentry.smx b/DevZones_NoEntry/devzones_noentry.smx new file mode 100644 index 0000000000000000000000000000000000000000..d3da19e910566ed8b4053f994af90434b95fe032 GIT binary patch literal 4372 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 literal 0 HcmV?d00001 diff --git a/DevZones_NoEntry/devzones_noentry.sp b/DevZones_NoEntry/devzones_noentry.sp new file mode 100644 index 0000000..9e72b6c --- /dev/null +++ b/DevZones_NoEntry/devzones_noentry.sp @@ -0,0 +1,80 @@ +#pragma semicolon 1 +#include +#include +#include + +// configuration +#define ZONE_PREFIX "noentry" +//End + + +new Float:zone_pos[MAXPLAYERS+1][3]; +new Handle:g_hClientTimers[MAXPLAYERS + 1] = {INVALID_HANDLE, ...}; + +public Plugin:myinfo = +{ + name = "SM DEV Zones - NoEntry", + author = "Franc1sco franug", + description = "", + version = "1.0", + url = "http://steamcommunity.com/id/franug" +}; + +public OnClientDisconnect(client) +{ + if (g_hClientTimers[client] != INVALID_HANDLE) + KillTimer(g_hClientTimers[client]); + g_hClientTimers[client] = INVALID_HANDLE; +} + +public Zone_OnClientEntry(client, String:zone[]) +{ + if(StrContains(zone, ZONE_PREFIX, false) == 0) + { + Zone_GetZonePosition(zone, false, zone_pos[client]); + g_hClientTimers[client] = CreateTimer(0.1, Timer_Repeat, client, TIMER_REPEAT); + PrintHintText(client, "You can't enter here!"); + } +} + +public Zone_OnClientLeave(client, String:zone[]) +{ + if(StrContains(zone, ZONE_PREFIX, false) == 0) + { + if (g_hClientTimers[client] != INVALID_HANDLE) + KillTimer(g_hClientTimers[client]); + g_hClientTimers[client] = INVALID_HANDLE; + } +} + +public Action:Timer_Repeat(Handle:timer, any:client) +{ + if(!IsClientInGame(client) || !IsPlayerAlive(client)) + { + if (g_hClientTimers[client] != INVALID_HANDLE) + KillTimer(g_hClientTimers[client]); + g_hClientTimers[client] = INVALID_HANDLE; + return Plugin_Stop; + } + new Float:clientloc[3]; + GetClientAbsOrigin(client, clientloc); + + KnockbackSetVelocity(client, zone_pos[client], clientloc, 300.0); + return Plugin_Continue; +} + +KnockbackSetVelocity(client, const Float:startpoint[3], const Float:endpoint[3], Float:magnitude) +{ + // Create vector from the given starting and ending points. + new Float:vector[3]; + MakeVectorFromPoints(startpoint, endpoint, vector); + + // Normalize the vector (equal magnitude at varying distances). + NormalizeVector(vector, vector); + + // Apply the magnitude by scaling the vector (multiplying each of its components). + ScaleVector(vector, magnitude); + + + TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, vector); +}