converted newlines to unix
This commit is contained in:
parent
a0186f4a49
commit
459815ce0e
@ -1,31 +1,31 @@
|
|||||||
#pragma semicolon 1
|
#pragma semicolon 1
|
||||||
|
|
||||||
#include <sourcemod>
|
#include <sourcemod>
|
||||||
#include <geoip>
|
#include <geoip>
|
||||||
|
|
||||||
#pragma newdecls required
|
#pragma newdecls required
|
||||||
|
|
||||||
public Plugin myinfo = {
|
public Plugin myinfo = {
|
||||||
name = "Connect Announce",
|
name = "Connect Announce",
|
||||||
author = "BotoX",
|
author = "BotoX",
|
||||||
description = "Simple connect announcer",
|
description = "Simple connect announcer",
|
||||||
version = "1.0",
|
version = "1.0",
|
||||||
url = ""
|
url = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnClientPostAdminCheck(int client)
|
public void OnClientPostAdminCheck(int client)
|
||||||
{
|
{
|
||||||
if(IsFakeClient(client))
|
if(IsFakeClient(client))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
static char sAuth[32];
|
static char sAuth[32];
|
||||||
static char sIP[16];
|
static char sIP[16];
|
||||||
static char sCountry[32];
|
static char sCountry[32];
|
||||||
|
|
||||||
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
|
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
|
||||||
|
|
||||||
if(GetClientIP(client, sIP, sizeof(sIP)) && GeoipCountry(sIP, sCountry, sizeof(sCountry)))
|
if(GetClientIP(client, sIP, sizeof(sIP)) && GeoipCountry(sIP, sCountry, sizeof(sCountry)))
|
||||||
PrintToChatAll("\x04%L [\x03%s\x04] connected from %s", client, sAuth, sCountry);
|
PrintToChatAll("\x04%L [\x03%s\x04] connected from %s", client, sAuth, sCountry);
|
||||||
else
|
else
|
||||||
PrintToChatAll("\x04%L [\x03%s\x04] connected", client, sAuth);
|
PrintToChatAll("\x04%L [\x03%s\x04] connected", client, sAuth);
|
||||||
}
|
}
|
||||||
|
@ -1,118 +1,118 @@
|
|||||||
#pragma semicolon 1
|
#pragma semicolon 1
|
||||||
|
|
||||||
#include <sourcemod>
|
#include <sourcemod>
|
||||||
#include <dhooks>
|
#include <dhooks>
|
||||||
#undef REQUIRE_PLUGIN
|
#undef REQUIRE_PLUGIN
|
||||||
#include <updater>
|
#include <updater>
|
||||||
|
|
||||||
#define PLUGIN_NAME "Napalm Lag Fix"
|
#define PLUGIN_NAME "Napalm Lag Fix"
|
||||||
#define PLUGIN_VERSION "1.0.3"
|
#define PLUGIN_VERSION "1.0.3"
|
||||||
|
|
||||||
#define UPDATE_URL "http://godtony.mooo.com/napalmlagfix/napalmlagfix.txt"
|
#define UPDATE_URL "http://godtony.mooo.com/napalmlagfix/napalmlagfix.txt"
|
||||||
|
|
||||||
#define DMG_BURN (1 << 3)
|
#define DMG_BURN (1 << 3)
|
||||||
|
|
||||||
new Handle:g_hRadiusDamage = INVALID_HANDLE;
|
new Handle:g_hRadiusDamage = INVALID_HANDLE;
|
||||||
new bool:g_bCheckNullPtr = false;
|
new bool:g_bCheckNullPtr = false;
|
||||||
|
|
||||||
public Plugin:myinfo =
|
public Plugin:myinfo =
|
||||||
{
|
{
|
||||||
name = PLUGIN_NAME,
|
name = PLUGIN_NAME,
|
||||||
author = "GoD-Tony + BotoX",
|
author = "GoD-Tony + BotoX",
|
||||||
description = "Prevents lag when napalm is used on players",
|
description = "Prevents lag when napalm is used on players",
|
||||||
version = PLUGIN_VERSION,
|
version = PLUGIN_VERSION,
|
||||||
url = "https://forums.alliedmods.net/showthread.php?t=188093" // Demo: http://youtu.be/YdhAu5IEVVM
|
url = "https://forums.alliedmods.net/showthread.php?t=188093" // Demo: http://youtu.be/YdhAu5IEVVM
|
||||||
};
|
};
|
||||||
|
|
||||||
public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
|
public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
|
||||||
{
|
{
|
||||||
MarkNativeAsOptional("DHookIsNullParam");
|
MarkNativeAsOptional("DHookIsNullParam");
|
||||||
|
|
||||||
return APLRes_Success;
|
return APLRes_Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnPluginStart()
|
public OnPluginStart()
|
||||||
{
|
{
|
||||||
// Convars.
|
// Convars.
|
||||||
new Handle:hCvar = CreateConVar("sm_napalmlagfix_version", PLUGIN_VERSION, PLUGIN_NAME, FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_DONTRECORD);
|
new Handle:hCvar = CreateConVar("sm_napalmlagfix_version", PLUGIN_VERSION, PLUGIN_NAME, FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_DONTRECORD);
|
||||||
SetConVarString(hCvar, PLUGIN_VERSION);
|
SetConVarString(hCvar, PLUGIN_VERSION);
|
||||||
|
|
||||||
// Gamedata.
|
// Gamedata.
|
||||||
new Handle:hConfig = LoadGameConfigFile("napalmlagfix.games");
|
new Handle:hConfig = LoadGameConfigFile("napalmlagfix.games");
|
||||||
|
|
||||||
if (hConfig == INVALID_HANDLE)
|
if (hConfig == INVALID_HANDLE)
|
||||||
{
|
{
|
||||||
SetFailState("Could not find gamedata file: napalmlagfix.games.txt");
|
SetFailState("Could not find gamedata file: napalmlagfix.games.txt");
|
||||||
}
|
}
|
||||||
|
|
||||||
new offset = GameConfGetOffset(hConfig, "RadiusDamage");
|
new offset = GameConfGetOffset(hConfig, "RadiusDamage");
|
||||||
|
|
||||||
if (offset == -1)
|
if (offset == -1)
|
||||||
{
|
{
|
||||||
SetFailState("Failed to find RadiusDamage offset");
|
SetFailState("Failed to find RadiusDamage offset");
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseHandle(hConfig);
|
CloseHandle(hConfig);
|
||||||
|
|
||||||
// DHooks.
|
// DHooks.
|
||||||
g_bCheckNullPtr = (GetFeatureStatus(FeatureType_Native, "DHookIsNullParam") == FeatureStatus_Available);
|
g_bCheckNullPtr = (GetFeatureStatus(FeatureType_Native, "DHookIsNullParam") == FeatureStatus_Available);
|
||||||
|
|
||||||
g_hRadiusDamage = DHookCreate(offset, HookType_GameRules, ReturnType_Void, ThisPointer_Ignore, Hook_RadiusDamage);
|
g_hRadiusDamage = DHookCreate(offset, HookType_GameRules, ReturnType_Void, ThisPointer_Ignore, Hook_RadiusDamage);
|
||||||
DHookAddParam(g_hRadiusDamage, HookParamType_ObjectPtr); // 1 - CTakeDamageInfo &info
|
DHookAddParam(g_hRadiusDamage, HookParamType_ObjectPtr); // 1 - CTakeDamageInfo &info
|
||||||
DHookAddParam(g_hRadiusDamage, HookParamType_VectorPtr); // 2 - Vector &vecSrc
|
DHookAddParam(g_hRadiusDamage, HookParamType_VectorPtr); // 2 - Vector &vecSrc
|
||||||
DHookAddParam(g_hRadiusDamage, HookParamType_Float); // 3 - float flRadius
|
DHookAddParam(g_hRadiusDamage, HookParamType_Float); // 3 - float flRadius
|
||||||
DHookAddParam(g_hRadiusDamage, HookParamType_Int); // 4 - int iClassIgnore
|
DHookAddParam(g_hRadiusDamage, HookParamType_Int); // 4 - int iClassIgnore
|
||||||
DHookAddParam(g_hRadiusDamage, HookParamType_CBaseEntity); // 5 - CBaseEntity *pEntityIgnore
|
DHookAddParam(g_hRadiusDamage, HookParamType_CBaseEntity); // 5 - CBaseEntity *pEntityIgnore
|
||||||
|
|
||||||
// Updater.
|
// Updater.
|
||||||
if (LibraryExists("updater"))
|
if (LibraryExists("updater"))
|
||||||
{
|
{
|
||||||
Updater_AddPlugin(UPDATE_URL);
|
Updater_AddPlugin(UPDATE_URL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnLibraryAdded(const String:name[])
|
public OnLibraryAdded(const String:name[])
|
||||||
{
|
{
|
||||||
if (StrEqual(name, "updater"))
|
if (StrEqual(name, "updater"))
|
||||||
{
|
{
|
||||||
Updater_AddPlugin(UPDATE_URL);
|
Updater_AddPlugin(UPDATE_URL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Updater_OnPluginUpdated()
|
public Updater_OnPluginUpdated()
|
||||||
{
|
{
|
||||||
// There could be new gamedata in this update.
|
// There could be new gamedata in this update.
|
||||||
ReloadPlugin();
|
ReloadPlugin();
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnMapStart()
|
public OnMapStart()
|
||||||
{
|
{
|
||||||
DHookGamerules(g_hRadiusDamage, false);
|
DHookGamerules(g_hRadiusDamage, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MRESReturn:Hook_RadiusDamage(Handle:hParams)
|
public MRESReturn:Hook_RadiusDamage(Handle:hParams)
|
||||||
{
|
{
|
||||||
// As of DHooks 1.0.12 we must check for a null param.
|
// As of DHooks 1.0.12 we must check for a null param.
|
||||||
if (g_bCheckNullPtr && DHookIsNullParam(hParams, 5))
|
if (g_bCheckNullPtr && DHookIsNullParam(hParams, 5))
|
||||||
return MRES_Ignored;
|
return MRES_Ignored;
|
||||||
|
|
||||||
new iDmgBits = DHookGetParamObjectPtrVar(hParams, 1, 60, ObjectValueType_Int);
|
new iDmgBits = DHookGetParamObjectPtrVar(hParams, 1, 60, ObjectValueType_Int);
|
||||||
new iEntIgnore = DHookGetParam(hParams, 5);
|
new iEntIgnore = DHookGetParam(hParams, 5);
|
||||||
|
|
||||||
if(!(iDmgBits & DMG_BURN))
|
if(!(iDmgBits & DMG_BURN))
|
||||||
return MRES_Ignored;
|
return MRES_Ignored;
|
||||||
|
|
||||||
// Block napalm damage if it's coming from another client.
|
// Block napalm damage if it's coming from another client.
|
||||||
if (1 <= iEntIgnore <= MaxClients)
|
if (1 <= iEntIgnore <= MaxClients)
|
||||||
return MRES_Supercede;
|
return MRES_Supercede;
|
||||||
|
|
||||||
// Block napalm that comes from grenades
|
// Block napalm that comes from grenades
|
||||||
new String:sEntClassName[64];
|
new String:sEntClassName[64];
|
||||||
if(GetEntityClassname(iEntIgnore, sEntClassName, sizeof(sEntClassName)))
|
if(GetEntityClassname(iEntIgnore, sEntClassName, sizeof(sEntClassName)))
|
||||||
{
|
{
|
||||||
if(!strcmp(sEntClassName, "hegrenade_projectile"))
|
if(!strcmp(sEntClassName, "hegrenade_projectile"))
|
||||||
return MRES_Supercede;
|
return MRES_Supercede;
|
||||||
}
|
}
|
||||||
|
|
||||||
return MRES_Ignored;
|
return MRES_Ignored;
|
||||||
}
|
}
|
||||||
|
@ -1,42 +1,42 @@
|
|||||||
#pragma semicolon 1
|
#pragma semicolon 1
|
||||||
#include <sourcemod>
|
#include <sourcemod>
|
||||||
#include <sdktools>
|
#include <sdktools>
|
||||||
#include <dhooks>
|
#include <dhooks>
|
||||||
|
|
||||||
//int CCSPlayer::OnDamagedByExplosion(CTakeDamageInfo const&)
|
//int CCSPlayer::OnDamagedByExplosion(CTakeDamageInfo const&)
|
||||||
Handle g_hDamagedByExplosion;
|
Handle g_hDamagedByExplosion;
|
||||||
|
|
||||||
public Plugin myinfo =
|
public Plugin myinfo =
|
||||||
{
|
{
|
||||||
name = "NoGrenadeRinging",
|
name = "NoGrenadeRinging",
|
||||||
author = "BotoX",
|
author = "BotoX",
|
||||||
description = "Block the annoying ringing noise when a grenade explodes next to you",
|
description = "Block the annoying ringing noise when a grenade explodes next to you",
|
||||||
version = "1.0",
|
version = "1.0",
|
||||||
url = ""
|
url = ""
|
||||||
};
|
};
|
||||||
|
|
||||||
public void OnPluginStart()
|
public void OnPluginStart()
|
||||||
{
|
{
|
||||||
Handle hTemp = LoadGameConfigFile("NoGrenadeRinging.games");
|
Handle hTemp = LoadGameConfigFile("NoGrenadeRinging.games");
|
||||||
if(hTemp == INVALID_HANDLE)
|
if(hTemp == INVALID_HANDLE)
|
||||||
SetFailState("Why you no has gamedata?");
|
SetFailState("Why you no has gamedata?");
|
||||||
|
|
||||||
int Offset = GameConfGetOffset(hTemp, "OnDamagedByExplosion");
|
int Offset = GameConfGetOffset(hTemp, "OnDamagedByExplosion");
|
||||||
g_hDamagedByExplosion = DHookCreate(Offset, HookType_Entity, ReturnType_Int, ThisPointer_CBaseEntity, OnDamagedByExplosion);
|
g_hDamagedByExplosion = DHookCreate(Offset, HookType_Entity, ReturnType_Int, ThisPointer_CBaseEntity, OnDamagedByExplosion);
|
||||||
DHookAddParam(g_hDamagedByExplosion, HookParamType_ObjectPtr);
|
DHookAddParam(g_hDamagedByExplosion, HookParamType_ObjectPtr);
|
||||||
|
|
||||||
CloseHandle(hTemp);
|
CloseHandle(hTemp);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnClientPutInServer(int client)
|
public void OnClientPutInServer(int client)
|
||||||
{
|
{
|
||||||
//Dont add removal callback for this one
|
//Dont add removal callback for this one
|
||||||
DHookEntity(g_hDamagedByExplosion, false, client);
|
DHookEntity(g_hDamagedByExplosion, false, client);
|
||||||
}
|
}
|
||||||
|
|
||||||
//int CCSPlayer::OnDamagedByExplosion(CTakeDamageInfo const&)
|
//int CCSPlayer::OnDamagedByExplosion(CTakeDamageInfo const&)
|
||||||
public MRESReturn:OnDamagedByExplosion(int pThis, Handle hReturn, Handle hParams)
|
public MRESReturn:OnDamagedByExplosion(int pThis, Handle hReturn, Handle hParams)
|
||||||
{
|
{
|
||||||
// Block call
|
// Block call
|
||||||
return MRES_Supercede;
|
return MRES_Supercede;
|
||||||
}
|
}
|
||||||
|
@ -1,333 +1,333 @@
|
|||||||
#pragma semicolon 1
|
#pragma semicolon 1
|
||||||
|
|
||||||
#include <sourcemod>
|
#include <sourcemod>
|
||||||
#include <sdktools>
|
#include <sdktools>
|
||||||
#include <morecolors>
|
#include <morecolors>
|
||||||
|
|
||||||
#define PLUGIN_NAME "Toggle Weapon Sounds"
|
#define PLUGIN_NAME "Toggle Weapon Sounds"
|
||||||
#define PLUGIN_VERSION "1.2.0"
|
#define PLUGIN_VERSION "1.2.0"
|
||||||
|
|
||||||
#define UPDATE_URL "http://godtony.mooo.com/stopsound/stopsound.txt"
|
#define UPDATE_URL "http://godtony.mooo.com/stopsound/stopsound.txt"
|
||||||
|
|
||||||
new bool:g_bStopSound[MAXPLAYERS+1], bool:g_bHooked;
|
new bool:g_bStopSound[MAXPLAYERS+1], bool:g_bHooked;
|
||||||
static String:g_sKVPATH[PLATFORM_MAX_PATH];
|
static String:g_sKVPATH[PLATFORM_MAX_PATH];
|
||||||
new Handle:g_hWepSounds;
|
new Handle:g_hWepSounds;
|
||||||
|
|
||||||
public Plugin:myinfo =
|
public Plugin:myinfo =
|
||||||
{
|
{
|
||||||
name = PLUGIN_NAME,
|
name = PLUGIN_NAME,
|
||||||
author = "GoD-Tony, edit by id/Obus",
|
author = "GoD-Tony, edit by id/Obus",
|
||||||
description = "Allows clients to stop hearing weapon sounds",
|
description = "Allows clients to stop hearing weapon sounds",
|
||||||
version = PLUGIN_VERSION,
|
version = PLUGIN_VERSION,
|
||||||
url = "http://www.sourcemod.net/"
|
url = "http://www.sourcemod.net/"
|
||||||
};
|
};
|
||||||
|
|
||||||
public OnPluginStart()
|
public OnPluginStart()
|
||||||
{
|
{
|
||||||
// Detect game and hook appropriate tempent.
|
// Detect game and hook appropriate tempent.
|
||||||
decl String:sGame[32];
|
decl String:sGame[32];
|
||||||
GetGameFolderName(sGame, sizeof(sGame));
|
GetGameFolderName(sGame, sizeof(sGame));
|
||||||
|
|
||||||
if (StrEqual(sGame, "cstrike"))
|
if (StrEqual(sGame, "cstrike"))
|
||||||
{
|
{
|
||||||
AddTempEntHook("Shotgun Shot", CSS_Hook_ShotgunShot);
|
AddTempEntHook("Shotgun Shot", CSS_Hook_ShotgunShot);
|
||||||
}
|
}
|
||||||
else if (StrEqual(sGame, "dod"))
|
else if (StrEqual(sGame, "dod"))
|
||||||
{
|
{
|
||||||
AddTempEntHook("FireBullets", DODS_Hook_FireBullets);
|
AddTempEntHook("FireBullets", DODS_Hook_FireBullets);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TF2/HL2:DM and misc weapon sounds will be caught here.
|
// TF2/HL2:DM and misc weapon sounds will be caught here.
|
||||||
AddNormalSoundHook(Hook_NormalSound);
|
AddNormalSoundHook(Hook_NormalSound);
|
||||||
|
|
||||||
CreateConVar("sm_stopsound_version", PLUGIN_VERSION, "Toggle Weapon Sounds", FCVAR_NOTIFY|FCVAR_DONTRECORD|FCVAR_REPLICATED);
|
CreateConVar("sm_stopsound_version", PLUGIN_VERSION, "Toggle Weapon Sounds", FCVAR_NOTIFY|FCVAR_DONTRECORD|FCVAR_REPLICATED);
|
||||||
RegConsoleCmd("sm_stopsound", Command_StopSound, "Toggle hearing weapon sounds");
|
RegConsoleCmd("sm_stopsound", Command_StopSound, "Toggle hearing weapon sounds");
|
||||||
|
|
||||||
if (g_hWepSounds != INVALID_HANDLE)
|
if (g_hWepSounds != INVALID_HANDLE)
|
||||||
{
|
{
|
||||||
CloseHandle(g_hWepSounds);
|
CloseHandle(g_hWepSounds);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_hWepSounds = CreateKeyValues("WeaponSounds");
|
g_hWepSounds = CreateKeyValues("WeaponSounds");
|
||||||
BuildPath(Path_SM, g_sKVPATH, sizeof(g_sKVPATH), "data/playerprefs.WepSounds.txt");
|
BuildPath(Path_SM, g_sKVPATH, sizeof(g_sKVPATH), "data/playerprefs.WepSounds.txt");
|
||||||
|
|
||||||
FileToKeyValues(g_hWepSounds, g_sKVPATH);
|
FileToKeyValues(g_hWepSounds, g_sKVPATH);
|
||||||
|
|
||||||
// Updater.
|
// Updater.
|
||||||
//if (LibraryExists("updater"))
|
//if (LibraryExists("updater"))
|
||||||
//{
|
//{
|
||||||
// Updater_AddPlugin(UPDATE_URL);
|
// Updater_AddPlugin(UPDATE_URL);
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*public OnLibraryAdded(const String:name[])
|
/*public OnLibraryAdded(const String:name[])
|
||||||
{
|
{
|
||||||
if (StrEqual(name, "updater"))
|
if (StrEqual(name, "updater"))
|
||||||
{
|
{
|
||||||
Updater_AddPlugin(UPDATE_URL);
|
Updater_AddPlugin(UPDATE_URL);
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
public Action:Command_StopSound(client, args)
|
public Action:Command_StopSound(client, args)
|
||||||
{
|
{
|
||||||
if (client == 0)
|
if (client == 0)
|
||||||
{
|
{
|
||||||
PrintToServer("[SM] Cannot use command from server console.");
|
PrintToServer("[SM] Cannot use command from server console.");
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args > 0)
|
if (args > 0)
|
||||||
{
|
{
|
||||||
decl String:Arguments[32];
|
decl String:Arguments[32];
|
||||||
GetCmdArg(1, Arguments, sizeof(Arguments));
|
GetCmdArg(1, Arguments, sizeof(Arguments));
|
||||||
|
|
||||||
if (StrEqual(Arguments, "save"))
|
if (StrEqual(Arguments, "save"))
|
||||||
{
|
{
|
||||||
KvRewind(g_hWepSounds);
|
KvRewind(g_hWepSounds);
|
||||||
|
|
||||||
decl String:SID[32];
|
decl String:SID[32];
|
||||||
GetClientAuthId(client, AuthId_Steam2, SID, sizeof(SID));
|
GetClientAuthId(client, AuthId_Steam2, SID, sizeof(SID));
|
||||||
|
|
||||||
if (KvJumpToKey(g_hWepSounds, SID, true))
|
if (KvJumpToKey(g_hWepSounds, SID, true))
|
||||||
{
|
{
|
||||||
new disabled;
|
new disabled;
|
||||||
disabled = KvGetNum(g_hWepSounds, "disabled", 0);
|
disabled = KvGetNum(g_hWepSounds, "disabled", 0);
|
||||||
|
|
||||||
if (!disabled)
|
if (!disabled)
|
||||||
{
|
{
|
||||||
//CPrintToChat(client, "[StopSound] Saved entry for STEAMID({green}%s{default}) {green}successfully{default}.", SID);
|
//CPrintToChat(client, "[StopSound] Saved entry for STEAMID({green}%s{default}) {green}successfully{default}.", SID);
|
||||||
KvSetNum(g_hWepSounds, "disabled", 1);
|
KvSetNum(g_hWepSounds, "disabled", 1);
|
||||||
KvRewind(g_hWepSounds);
|
KvRewind(g_hWepSounds);
|
||||||
KeyValuesToFile(g_hWepSounds, g_sKVPATH);
|
KeyValuesToFile(g_hWepSounds, g_sKVPATH);
|
||||||
|
|
||||||
g_bStopSound[client] = true;
|
g_bStopSound[client] = true;
|
||||||
CReplyToCommand(client, "{green}[StopSound]{default} Weapon sounds {red}disabled{default} - {green}entry saved{default}.");
|
CReplyToCommand(client, "{green}[StopSound]{default} Weapon sounds {red}disabled{default} - {green}entry saved{default}.");
|
||||||
CheckHooks();
|
CheckHooks();
|
||||||
|
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//CPrintToChat(client, "[StopSound] Entry for STEAMID({green}%s{default}) {green}successfully deleted{default}.", SID);
|
//CPrintToChat(client, "[StopSound] Entry for STEAMID({green}%s{default}) {green}successfully deleted{default}.", SID);
|
||||||
KvDeleteThis(g_hWepSounds);
|
KvDeleteThis(g_hWepSounds);
|
||||||
KvRewind(g_hWepSounds);
|
KvRewind(g_hWepSounds);
|
||||||
KeyValuesToFile(g_hWepSounds, g_sKVPATH);
|
KeyValuesToFile(g_hWepSounds, g_sKVPATH);
|
||||||
|
|
||||||
g_bStopSound[client] = false;
|
g_bStopSound[client] = false;
|
||||||
CReplyToCommand(client, "{green}[StopSound]{default} Weapon sounds {green}enabled{default} - {red}entry deleted{default}.");
|
CReplyToCommand(client, "{green}[StopSound]{default} Weapon sounds {green}enabled{default} - {red}entry deleted{default}.");
|
||||||
CheckHooks();
|
CheckHooks();
|
||||||
|
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KvRewind(g_hWepSounds);
|
KvRewind(g_hWepSounds);
|
||||||
}
|
}
|
||||||
else if (StrEqual(Arguments, "delete"))
|
else if (StrEqual(Arguments, "delete"))
|
||||||
{
|
{
|
||||||
KvRewind(g_hWepSounds);
|
KvRewind(g_hWepSounds);
|
||||||
|
|
||||||
decl String:SID[32];
|
decl String:SID[32];
|
||||||
GetClientAuthId(client, AuthId_Steam2, SID, sizeof(SID));
|
GetClientAuthId(client, AuthId_Steam2, SID, sizeof(SID));
|
||||||
|
|
||||||
if (KvJumpToKey(g_hWepSounds, SID, false))
|
if (KvJumpToKey(g_hWepSounds, SID, false))
|
||||||
{
|
{
|
||||||
g_bStopSound[client] = false;
|
g_bStopSound[client] = false;
|
||||||
CReplyToCommand(client, "{green}[StopSound]{default} Weapon sounds {green}enabled{default} - {red}entry deleted{default}.");
|
CReplyToCommand(client, "{green}[StopSound]{default} Weapon sounds {green}enabled{default} - {red}entry deleted{default}.");
|
||||||
CheckHooks();
|
CheckHooks();
|
||||||
|
|
||||||
KvDeleteThis(g_hWepSounds);
|
KvDeleteThis(g_hWepSounds);
|
||||||
KvRewind(g_hWepSounds);
|
KvRewind(g_hWepSounds);
|
||||||
KeyValuesToFile(g_hWepSounds, g_sKVPATH);
|
KeyValuesToFile(g_hWepSounds, g_sKVPATH);
|
||||||
|
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CPrintToChat(client, "{green}[StopSound]{default} Entry {red}not found{default}.");
|
CPrintToChat(client, "{green}[StopSound]{default} Entry {red}not found{default}.");
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PrintToChat(client, "[SM] Usage sm_stopsound <save|delete>");
|
PrintToChat(client, "[SM] Usage sm_stopsound <save|delete>");
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_bStopSound[client] = !g_bStopSound[client];
|
g_bStopSound[client] = !g_bStopSound[client];
|
||||||
CReplyToCommand(client, "{green}[StopSound]{default} Weapon sounds %s.", g_bStopSound[client] ? "{red}disabled{default}" : "{green}enabled{default}");
|
CReplyToCommand(client, "{green}[StopSound]{default} Weapon sounds %s.", g_bStopSound[client] ? "{red}disabled{default}" : "{green}enabled{default}");
|
||||||
CheckHooks();
|
CheckHooks();
|
||||||
|
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnClientPutInServer(client)
|
public OnClientPutInServer(client)
|
||||||
{
|
{
|
||||||
KvRewind(g_hWepSounds);
|
KvRewind(g_hWepSounds);
|
||||||
|
|
||||||
decl String:SID[32];
|
decl String:SID[32];
|
||||||
GetClientAuthId(client, AuthId_Steam2, SID, sizeof(SID));
|
GetClientAuthId(client, AuthId_Steam2, SID, sizeof(SID));
|
||||||
|
|
||||||
if (KvJumpToKey(g_hWepSounds, SID, false))
|
if (KvJumpToKey(g_hWepSounds, SID, false))
|
||||||
{
|
{
|
||||||
new disabled;
|
new disabled;
|
||||||
disabled = KvGetNum(g_hWepSounds, "disabled", 0);
|
disabled = KvGetNum(g_hWepSounds, "disabled", 0);
|
||||||
|
|
||||||
if (disabled)
|
if (disabled)
|
||||||
{
|
{
|
||||||
g_bStopSound[client] = true;
|
g_bStopSound[client] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckHooks();
|
CheckHooks();
|
||||||
KvRewind(g_hWepSounds);
|
KvRewind(g_hWepSounds);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnClientDisconnect_Post(client)
|
public OnClientDisconnect_Post(client)
|
||||||
{
|
{
|
||||||
g_bStopSound[client] = false;
|
g_bStopSound[client] = false;
|
||||||
CheckHooks();
|
CheckHooks();
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckHooks()
|
CheckHooks()
|
||||||
{
|
{
|
||||||
new bool:bShouldHook = false;
|
new bool:bShouldHook = false;
|
||||||
|
|
||||||
for (new i = 1; i <= MaxClients; i++)
|
for (new i = 1; i <= MaxClients; i++)
|
||||||
{
|
{
|
||||||
if (g_bStopSound[i])
|
if (g_bStopSound[i])
|
||||||
{
|
{
|
||||||
bShouldHook = true;
|
bShouldHook = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fake (un)hook because toggling actual hooks will cause server instability.
|
// Fake (un)hook because toggling actual hooks will cause server instability.
|
||||||
g_bHooked = bShouldHook;
|
g_bHooked = bShouldHook;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action:Hook_NormalSound(clients[64], &numClients, String:sample[PLATFORM_MAX_PATH], &entity, &channel, &Float:volume, &level, &pitch, &flags)
|
public Action:Hook_NormalSound(clients[64], &numClients, String:sample[PLATFORM_MAX_PATH], &entity, &channel, &Float:volume, &level, &pitch, &flags)
|
||||||
{
|
{
|
||||||
// Ignore non-weapon sounds.
|
// Ignore non-weapon sounds.
|
||||||
if (!g_bHooked || !(strncmp(sample, "weapons", 7) == 0 || strncmp(sample[1], "weapons", 7) == 0))
|
if (!g_bHooked || !(strncmp(sample, "weapons", 7) == 0 || strncmp(sample[1], "weapons", 7) == 0))
|
||||||
{
|
{
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
decl i, j;
|
decl i, j;
|
||||||
|
|
||||||
for (i = 0; i < numClients; i++)
|
for (i = 0; i < numClients; i++)
|
||||||
{
|
{
|
||||||
if (g_bStopSound[clients[i]])
|
if (g_bStopSound[clients[i]])
|
||||||
{
|
{
|
||||||
// Remove the client from the array.
|
// Remove the client from the array.
|
||||||
for (j = i; j < numClients - 1; j++)
|
for (j = i; j < numClients - 1; j++)
|
||||||
{
|
{
|
||||||
clients[j] = clients[j + 1];
|
clients[j] = clients[j + 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
numClients--;
|
numClients--;
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (numClients > 0) ? Plugin_Changed : Plugin_Stop;
|
return (numClients > 0) ? Plugin_Changed : Plugin_Stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action:CSS_Hook_ShotgunShot(const String:te_name[], const Players[], numClients, Float:delay)
|
public Action:CSS_Hook_ShotgunShot(const String:te_name[], const Players[], numClients, Float:delay)
|
||||||
{
|
{
|
||||||
if (!g_bHooked)
|
if (!g_bHooked)
|
||||||
{
|
{
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check which clients need to be excluded.
|
// Check which clients need to be excluded.
|
||||||
decl newClients[MaxClients], client, i;
|
decl newClients[MaxClients], client, i;
|
||||||
new newTotal = 0;
|
new newTotal = 0;
|
||||||
|
|
||||||
for (i = 0; i < numClients; i++)
|
for (i = 0; i < numClients; i++)
|
||||||
{
|
{
|
||||||
client = Players[i];
|
client = Players[i];
|
||||||
|
|
||||||
if (!g_bStopSound[client])
|
if (!g_bStopSound[client])
|
||||||
{
|
{
|
||||||
newClients[newTotal++] = client;
|
newClients[newTotal++] = client;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// No clients were excluded.
|
// No clients were excluded.
|
||||||
if (newTotal == numClients)
|
if (newTotal == numClients)
|
||||||
{
|
{
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
else if (newTotal == 0) // All clients were excluded and there is no need to broadcast.
|
else if (newTotal == 0) // All clients were excluded and there is no need to broadcast.
|
||||||
{
|
{
|
||||||
return Plugin_Stop;
|
return Plugin_Stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Re-broadcast to clients that still need it.
|
// Re-broadcast to clients that still need it.
|
||||||
decl Float:vTemp[3];
|
decl Float:vTemp[3];
|
||||||
TE_Start("Shotgun Shot");
|
TE_Start("Shotgun Shot");
|
||||||
TE_ReadVector("m_vecOrigin", vTemp);
|
TE_ReadVector("m_vecOrigin", vTemp);
|
||||||
TE_WriteVector("m_vecOrigin", vTemp);
|
TE_WriteVector("m_vecOrigin", vTemp);
|
||||||
TE_WriteFloat("m_vecAngles[0]", TE_ReadFloat("m_vecAngles[0]"));
|
TE_WriteFloat("m_vecAngles[0]", TE_ReadFloat("m_vecAngles[0]"));
|
||||||
TE_WriteFloat("m_vecAngles[1]", TE_ReadFloat("m_vecAngles[1]"));
|
TE_WriteFloat("m_vecAngles[1]", TE_ReadFloat("m_vecAngles[1]"));
|
||||||
TE_WriteNum("m_iWeaponID", TE_ReadNum("m_iWeaponID"));
|
TE_WriteNum("m_iWeaponID", TE_ReadNum("m_iWeaponID"));
|
||||||
TE_WriteNum("m_iMode", TE_ReadNum("m_iMode"));
|
TE_WriteNum("m_iMode", TE_ReadNum("m_iMode"));
|
||||||
TE_WriteNum("m_iSeed", TE_ReadNum("m_iSeed"));
|
TE_WriteNum("m_iSeed", TE_ReadNum("m_iSeed"));
|
||||||
TE_WriteNum("m_iPlayer", TE_ReadNum("m_iPlayer"));
|
TE_WriteNum("m_iPlayer", TE_ReadNum("m_iPlayer"));
|
||||||
TE_WriteFloat("m_fInaccuracy", TE_ReadFloat("m_fInaccuracy"));
|
TE_WriteFloat("m_fInaccuracy", TE_ReadFloat("m_fInaccuracy"));
|
||||||
TE_WriteFloat("m_fSpread", TE_ReadFloat("m_fSpread"));
|
TE_WriteFloat("m_fSpread", TE_ReadFloat("m_fSpread"));
|
||||||
TE_Send(newClients, newTotal, delay);
|
TE_Send(newClients, newTotal, delay);
|
||||||
|
|
||||||
return Plugin_Stop;
|
return Plugin_Stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action:DODS_Hook_FireBullets(const String:te_name[], const Players[], numClients, Float:delay)
|
public Action:DODS_Hook_FireBullets(const String:te_name[], const Players[], numClients, Float:delay)
|
||||||
{
|
{
|
||||||
if (!g_bHooked)
|
if (!g_bHooked)
|
||||||
{
|
{
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check which clients need to be excluded.
|
// Check which clients need to be excluded.
|
||||||
decl newClients[MaxClients], client, i;
|
decl newClients[MaxClients], client, i;
|
||||||
new newTotal = 0;
|
new newTotal = 0;
|
||||||
|
|
||||||
for (i = 0; i < numClients; i++)
|
for (i = 0; i < numClients; i++)
|
||||||
{
|
{
|
||||||
client = Players[i];
|
client = Players[i];
|
||||||
|
|
||||||
if (!g_bStopSound[client])
|
if (!g_bStopSound[client])
|
||||||
{
|
{
|
||||||
newClients[newTotal++] = client;
|
newClients[newTotal++] = client;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// No clients were excluded.
|
// No clients were excluded.
|
||||||
if (newTotal == numClients)
|
if (newTotal == numClients)
|
||||||
{
|
{
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
else if (newTotal == 0)// All clients were excluded and there is no need to broadcast.
|
else if (newTotal == 0)// All clients were excluded and there is no need to broadcast.
|
||||||
{
|
{
|
||||||
return Plugin_Stop;
|
return Plugin_Stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Re-broadcast to clients that still need it.
|
// Re-broadcast to clients that still need it.
|
||||||
decl Float:vTemp[3];
|
decl Float:vTemp[3];
|
||||||
TE_Start("FireBullets");
|
TE_Start("FireBullets");
|
||||||
TE_ReadVector("m_vecOrigin", vTemp);
|
TE_ReadVector("m_vecOrigin", vTemp);
|
||||||
TE_WriteVector("m_vecOrigin", vTemp);
|
TE_WriteVector("m_vecOrigin", vTemp);
|
||||||
TE_WriteFloat("m_vecAngles[0]", TE_ReadFloat("m_vecAngles[0]"));
|
TE_WriteFloat("m_vecAngles[0]", TE_ReadFloat("m_vecAngles[0]"));
|
||||||
TE_WriteFloat("m_vecAngles[1]", TE_ReadFloat("m_vecAngles[1]"));
|
TE_WriteFloat("m_vecAngles[1]", TE_ReadFloat("m_vecAngles[1]"));
|
||||||
TE_WriteNum("m_iWeaponID", TE_ReadNum("m_iWeaponID"));
|
TE_WriteNum("m_iWeaponID", TE_ReadNum("m_iWeaponID"));
|
||||||
TE_WriteNum("m_iMode", TE_ReadNum("m_iMode"));
|
TE_WriteNum("m_iMode", TE_ReadNum("m_iMode"));
|
||||||
TE_WriteNum("m_iSeed", TE_ReadNum("m_iSeed"));
|
TE_WriteNum("m_iSeed", TE_ReadNum("m_iSeed"));
|
||||||
TE_WriteNum("m_iPlayer", TE_ReadNum("m_iPlayer"));
|
TE_WriteNum("m_iPlayer", TE_ReadNum("m_iPlayer"));
|
||||||
TE_WriteFloat("m_flSpread", TE_ReadFloat("m_flSpread"));
|
TE_WriteFloat("m_flSpread", TE_ReadFloat("m_flSpread"));
|
||||||
TE_Send(newClients, newTotal, delay);
|
TE_Send(newClients, newTotal, delay);
|
||||||
|
|
||||||
return Plugin_Stop;
|
return Plugin_Stop;
|
||||||
}
|
}
|
@ -1,274 +1,274 @@
|
|||||||
#pragma semicolon 1
|
#pragma semicolon 1
|
||||||
|
|
||||||
#include <sourcemod>
|
#include <sourcemod>
|
||||||
#include <sdkhooks>
|
#include <sdkhooks>
|
||||||
#include <sdktools>
|
#include <sdktools>
|
||||||
|
|
||||||
#define TIMER_INTERVAL 1.0
|
#define TIMER_INTERVAL 1.0
|
||||||
Handle g_hTimer = INVALID_HANDLE;
|
Handle g_hTimer = INVALID_HANDLE;
|
||||||
|
|
||||||
ConVar g_CVar_MaxWeapons;
|
ConVar g_CVar_MaxWeapons;
|
||||||
ConVar g_CVar_WeaponLifetime;
|
ConVar g_CVar_WeaponLifetime;
|
||||||
|
|
||||||
new g_RealRoundStartedTime;
|
new g_RealRoundStartedTime;
|
||||||
new g_MaxWeapons;
|
new g_MaxWeapons;
|
||||||
new g_MaxWeaponLifetime;
|
new g_MaxWeaponLifetime;
|
||||||
|
|
||||||
#define MAX_WEAPONS MAXPLAYERS
|
#define MAX_WEAPONS MAXPLAYERS
|
||||||
new G_WeaponArray[MAX_WEAPONS][2];
|
new G_WeaponArray[MAX_WEAPONS][2];
|
||||||
|
|
||||||
|
|
||||||
public Plugin myinfo =
|
public Plugin myinfo =
|
||||||
{
|
{
|
||||||
name = "WeaponCleaner",
|
name = "WeaponCleaner",
|
||||||
author = "BotoX",
|
author = "BotoX",
|
||||||
description = "Clean unneeded weapons",
|
description = "Clean unneeded weapons",
|
||||||
version = "2.0",
|
version = "2.0",
|
||||||
url = ""
|
url = ""
|
||||||
};
|
};
|
||||||
|
|
||||||
public void OnPluginStart()
|
public void OnPluginStart()
|
||||||
{
|
{
|
||||||
RegAdminCmd("sm_sweep", Command_CleanupWeapons, ADMFLAG_GENERIC, "Cleans up all the weapons on the map unless they have a HammerID attached to them.");
|
RegAdminCmd("sm_sweep", Command_CleanupWeapons, ADMFLAG_GENERIC, "Cleans up all the weapons on the map unless they have a HammerID attached to them.");
|
||||||
|
|
||||||
g_CVar_MaxWeapons = CreateConVar("sm_weaponcleaner_max", "5", "The maximum amount of weapons allowed in the game.", 0, true, 0.0, true, MAX_WEAPONS - 1.0);
|
g_CVar_MaxWeapons = CreateConVar("sm_weaponcleaner_max", "5", "The maximum amount of weapons allowed in the game.", 0, true, 0.0, true, MAX_WEAPONS - 1.0);
|
||||||
g_MaxWeapons = g_CVar_MaxWeapons.IntValue;
|
g_MaxWeapons = g_CVar_MaxWeapons.IntValue;
|
||||||
g_CVar_MaxWeapons.AddChangeHook(OnConVarChanged);
|
g_CVar_MaxWeapons.AddChangeHook(OnConVarChanged);
|
||||||
|
|
||||||
g_CVar_WeaponLifetime = CreateConVar("sm_weaponcleaner_lifetime", "15", "The maximum amount of time in seconds a weapon is allowed in the game.", 0, true, 0.0);
|
g_CVar_WeaponLifetime = CreateConVar("sm_weaponcleaner_lifetime", "15", "The maximum amount of time in seconds a weapon is allowed in the game.", 0, true, 0.0);
|
||||||
g_MaxWeaponLifetime = g_CVar_WeaponLifetime.IntValue;
|
g_MaxWeaponLifetime = g_CVar_WeaponLifetime.IntValue;
|
||||||
g_CVar_WeaponLifetime.AddChangeHook(OnConVarChanged);
|
g_CVar_WeaponLifetime.AddChangeHook(OnConVarChanged);
|
||||||
|
|
||||||
HookEvent("round_start", Event_RoundStart);
|
HookEvent("round_start", Event_RoundStart);
|
||||||
|
|
||||||
AutoExecConfig(true, "plugin.WeaponCleaner");
|
AutoExecConfig(true, "plugin.WeaponCleaner");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnConVarChanged(ConVar convar, const char[] oldValue, const char[] newValue)
|
public void OnConVarChanged(ConVar convar, const char[] oldValue, const char[] newValue)
|
||||||
{
|
{
|
||||||
if(convar == g_CVar_MaxWeapons)
|
if(convar == g_CVar_MaxWeapons)
|
||||||
{
|
{
|
||||||
if(StringToInt(newValue) < StringToInt(oldValue))
|
if(StringToInt(newValue) < StringToInt(oldValue))
|
||||||
{
|
{
|
||||||
// Need to shrink list and kill items
|
// Need to shrink list and kill items
|
||||||
new d = StringToInt(oldValue) - StringToInt(newValue);
|
new d = StringToInt(oldValue) - StringToInt(newValue);
|
||||||
|
|
||||||
// Kill items that don't have space anymore
|
// Kill items that don't have space anymore
|
||||||
for(new i = 0; d && i < g_MaxWeapons; i++)
|
for(new i = 0; d && i < g_MaxWeapons; i++)
|
||||||
{
|
{
|
||||||
if(!G_WeaponArray[i][0])
|
if(!G_WeaponArray[i][0])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Kill it
|
// Kill it
|
||||||
AcceptEntityInput(G_WeaponArray[0][0], "Kill");
|
AcceptEntityInput(G_WeaponArray[0][0], "Kill");
|
||||||
// This implicitly calls OnEntityDestroyed() which calls RemoveWeapon()
|
// This implicitly calls OnEntityDestroyed() which calls RemoveWeapon()
|
||||||
|
|
||||||
// Move index backwards (since the list was modified by removing it)
|
// Move index backwards (since the list was modified by removing it)
|
||||||
i--;
|
i--;
|
||||||
d--;
|
d--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_MaxWeapons = StringToInt(newValue);
|
g_MaxWeapons = StringToInt(newValue);
|
||||||
}
|
}
|
||||||
else if(convar == g_CVar_WeaponLifetime)
|
else if(convar == g_CVar_WeaponLifetime)
|
||||||
{
|
{
|
||||||
g_MaxWeaponLifetime = StringToInt(newValue);
|
g_MaxWeaponLifetime = StringToInt(newValue);
|
||||||
CheckWeapons();
|
CheckWeapons();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnMapStart()
|
public void OnMapStart()
|
||||||
{
|
{
|
||||||
if(g_hTimer != INVALID_HANDLE && CloseHandle(g_hTimer))
|
if(g_hTimer != INVALID_HANDLE && CloseHandle(g_hTimer))
|
||||||
g_hTimer = INVALID_HANDLE;
|
g_hTimer = INVALID_HANDLE;
|
||||||
|
|
||||||
g_hTimer = CreateTimer(TIMER_INTERVAL, Timer_CleanupWeapons, INVALID_HANDLE, TIMER_REPEAT);
|
g_hTimer = CreateTimer(TIMER_INTERVAL, Timer_CleanupWeapons, INVALID_HANDLE, TIMER_REPEAT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnMapEnd()
|
public void OnMapEnd()
|
||||||
{
|
{
|
||||||
if(g_hTimer != INVALID_HANDLE && CloseHandle(g_hTimer))
|
if(g_hTimer != INVALID_HANDLE && CloseHandle(g_hTimer))
|
||||||
g_hTimer = INVALID_HANDLE;
|
g_hTimer = INVALID_HANDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnClientPutInServer(int client)
|
public void OnClientPutInServer(int client)
|
||||||
{
|
{
|
||||||
SDKHook(client, SDKHook_WeaponDropPost, OnWeaponDrop);
|
SDKHook(client, SDKHook_WeaponDropPost, OnWeaponDrop);
|
||||||
SDKHook(client, SDKHook_WeaponEquipPost, OnWeaponEquip);
|
SDKHook(client, SDKHook_WeaponEquipPost, OnWeaponEquip);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnClientDisconnect(int client)
|
public void OnClientDisconnect(int client)
|
||||||
{
|
{
|
||||||
SDKUnhook(client, SDKHook_WeaponDropPost, OnWeaponDrop);
|
SDKUnhook(client, SDKHook_WeaponDropPost, OnWeaponDrop);
|
||||||
SDKUnhook(client, SDKHook_WeaponEquipPost, OnWeaponEquip);
|
SDKUnhook(client, SDKHook_WeaponEquipPost, OnWeaponEquip);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnEntityCreated(int entity, const char[] classname)
|
public void OnEntityCreated(int entity, const char[] classname)
|
||||||
{
|
{
|
||||||
if(IsValidEntity(entity) && strncmp(classname, "weapon_", 7) == 0)
|
if(IsValidEntity(entity) && strncmp(classname, "weapon_", 7) == 0)
|
||||||
{
|
{
|
||||||
SDKHook(entity, SDKHook_Spawn, OnWeaponSpawned);
|
SDKHook(entity, SDKHook_Spawn, OnWeaponSpawned);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnEntityDestroyed(int entity)
|
public void OnEntityDestroyed(int entity)
|
||||||
{
|
{
|
||||||
RemoveWeapon(entity);
|
RemoveWeapon(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnWeaponSpawned(int entity)
|
public void OnWeaponSpawned(int entity)
|
||||||
{
|
{
|
||||||
new HammerID = GetEntProp(entity, Prop_Data, "m_iHammerID");
|
new HammerID = GetEntProp(entity, Prop_Data, "m_iHammerID");
|
||||||
// Should not be cleaned since it's a map spawned weapon
|
// Should not be cleaned since it's a map spawned weapon
|
||||||
if(HammerID)
|
if(HammerID)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Weapon doesn't belong to any player
|
// Weapon doesn't belong to any player
|
||||||
if(GetEntPropEnt(entity, Prop_Data, "m_hOwnerEntity") == -1)
|
if(GetEntPropEnt(entity, Prop_Data, "m_hOwnerEntity") == -1)
|
||||||
InsertWeapon(entity);
|
InsertWeapon(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action OnWeaponEquip(int client, int entity)
|
public Action OnWeaponEquip(int client, int entity)
|
||||||
{
|
{
|
||||||
if(!IsValidEntity(entity))
|
if(!IsValidEntity(entity))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
new HammerID = GetEntProp(entity, Prop_Data, "m_iHammerID");
|
new HammerID = GetEntProp(entity, Prop_Data, "m_iHammerID");
|
||||||
// Should not be cleaned since it's a map spawned weapon
|
// Should not be cleaned since it's a map spawned weapon
|
||||||
if(HammerID)
|
if(HammerID)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Weapon should not be cleaned anymore
|
// Weapon should not be cleaned anymore
|
||||||
RemoveWeapon(entity);
|
RemoveWeapon(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action OnWeaponDrop(int client, int entity)
|
public Action OnWeaponDrop(int client, int entity)
|
||||||
{
|
{
|
||||||
if(!IsValidEntity(entity))
|
if(!IsValidEntity(entity))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
new HammerID = GetEntProp(entity, Prop_Data, "m_iHammerID");
|
new HammerID = GetEntProp(entity, Prop_Data, "m_iHammerID");
|
||||||
// Should not be cleaned since it's a map spawned weapon
|
// Should not be cleaned since it's a map spawned weapon
|
||||||
if(HammerID)
|
if(HammerID)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Kill all dropped weapons during mp_freezetime
|
// Kill all dropped weapons during mp_freezetime
|
||||||
if(GetTime() < g_RealRoundStartedTime)
|
if(GetTime() < g_RealRoundStartedTime)
|
||||||
{
|
{
|
||||||
// Kill it
|
// Kill it
|
||||||
AcceptEntityInput(entity, "Kill");
|
AcceptEntityInput(entity, "Kill");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Weapon should be cleaned again
|
// Weapon should be cleaned again
|
||||||
InsertWeapon(entity);
|
InsertWeapon(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InsertWeapon(int entity)
|
bool InsertWeapon(int entity)
|
||||||
{
|
{
|
||||||
// Try to find a free slot
|
// Try to find a free slot
|
||||||
for(new i = 0; i < g_MaxWeapons; i++)
|
for(new i = 0; i < g_MaxWeapons; i++)
|
||||||
{
|
{
|
||||||
if(G_WeaponArray[i][0])
|
if(G_WeaponArray[i][0])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Found a free slot, add it here
|
// Found a free slot, add it here
|
||||||
G_WeaponArray[i][0] = entity;
|
G_WeaponArray[i][0] = entity;
|
||||||
G_WeaponArray[i][1] = GetTime();
|
G_WeaponArray[i][1] = GetTime();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// No free slot found
|
// No free slot found
|
||||||
// Kill the first (oldest) item in the list
|
// Kill the first (oldest) item in the list
|
||||||
AcceptEntityInput(G_WeaponArray[0][0], "Kill");
|
AcceptEntityInput(G_WeaponArray[0][0], "Kill");
|
||||||
// This implicitly calls OnEntityDestroyed() which calls RemoveWeapon()
|
// This implicitly calls OnEntityDestroyed() which calls RemoveWeapon()
|
||||||
|
|
||||||
// Add new weapon to the end of the list
|
// Add new weapon to the end of the list
|
||||||
G_WeaponArray[g_MaxWeapons - 1][0] = entity;
|
G_WeaponArray[g_MaxWeapons - 1][0] = entity;
|
||||||
G_WeaponArray[g_MaxWeapons - 1][1] = GetTime();
|
G_WeaponArray[g_MaxWeapons - 1][1] = GetTime();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RemoveWeapon(int entity)
|
bool RemoveWeapon(int entity)
|
||||||
{
|
{
|
||||||
// Find the Weapon
|
// Find the Weapon
|
||||||
for(new i = 0; i < g_MaxWeapons; i++)
|
for(new i = 0; i < g_MaxWeapons; i++)
|
||||||
{
|
{
|
||||||
if(G_WeaponArray[i][0] == entity)
|
if(G_WeaponArray[i][0] == entity)
|
||||||
{
|
{
|
||||||
G_WeaponArray[i][0] = 0; G_WeaponArray[i][1] = 0;
|
G_WeaponArray[i][0] = 0; G_WeaponArray[i][1] = 0;
|
||||||
|
|
||||||
// Move list items in front of this index back by one
|
// Move list items in front of this index back by one
|
||||||
for(new j = i + 1; j < g_MaxWeapons; j++)
|
for(new j = i + 1; j < g_MaxWeapons; j++)
|
||||||
{
|
{
|
||||||
G_WeaponArray[j - 1][0] = G_WeaponArray[j][0];
|
G_WeaponArray[j - 1][0] = G_WeaponArray[j][0];
|
||||||
G_WeaponArray[j - 1][1] = G_WeaponArray[j][1];
|
G_WeaponArray[j - 1][1] = G_WeaponArray[j][1];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset last list item
|
// Reset last list item
|
||||||
G_WeaponArray[g_MaxWeapons - 1][0] = 0;
|
G_WeaponArray[g_MaxWeapons - 1][0] = 0;
|
||||||
G_WeaponArray[g_MaxWeapons - 1][1] = 0;
|
G_WeaponArray[g_MaxWeapons - 1][1] = 0;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheckWeapons()
|
bool CheckWeapons()
|
||||||
{
|
{
|
||||||
for(new i = 0; i < g_MaxWeapons; i++)
|
for(new i = 0; i < g_MaxWeapons; i++)
|
||||||
{
|
{
|
||||||
if(!G_WeaponArray[i][0])
|
if(!G_WeaponArray[i][0])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(GetTime() - G_WeaponArray[i][1] >= g_MaxWeaponLifetime)
|
if(GetTime() - G_WeaponArray[i][1] >= g_MaxWeaponLifetime)
|
||||||
{
|
{
|
||||||
// Kill it
|
// Kill it
|
||||||
AcceptEntityInput(G_WeaponArray[i][0], "Kill");
|
AcceptEntityInput(G_WeaponArray[i][0], "Kill");
|
||||||
// This implicitly calls OnEntityDestroyed() which calls RemoveWeapon()
|
// This implicitly calls OnEntityDestroyed() which calls RemoveWeapon()
|
||||||
|
|
||||||
// Move index backwards (since the list was modified by removing it)
|
// Move index backwards (since the list was modified by removing it)
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CleanupWeapons()
|
void CleanupWeapons()
|
||||||
{
|
{
|
||||||
for(new i = 0; i < g_MaxWeapons; i++)
|
for(new i = 0; i < g_MaxWeapons; i++)
|
||||||
{
|
{
|
||||||
if(!G_WeaponArray[i][0])
|
if(!G_WeaponArray[i][0])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Kill it
|
// Kill it
|
||||||
AcceptEntityInput(G_WeaponArray[i][0], "Kill");
|
AcceptEntityInput(G_WeaponArray[i][0], "Kill");
|
||||||
// This implicitly calls OnEntityDestroyed() which calls RemoveWeapon()
|
// This implicitly calls OnEntityDestroyed() which calls RemoveWeapon()
|
||||||
|
|
||||||
// Move index backwards (since the list was modified by removing it)
|
// Move index backwards (since the list was modified by removing it)
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action Event_RoundStart(Handle:event, const char[] name, bool:dontBroadcast)
|
public Action Event_RoundStart(Handle:event, const char[] name, bool:dontBroadcast)
|
||||||
{
|
{
|
||||||
for(new i = 0; i < MAX_WEAPONS; i++)
|
for(new i = 0; i < MAX_WEAPONS; i++)
|
||||||
{
|
{
|
||||||
G_WeaponArray[i][0] = 0; G_WeaponArray[i][1] = 0;
|
G_WeaponArray[i][0] = 0; G_WeaponArray[i][1] = 0;
|
||||||
}
|
}
|
||||||
g_RealRoundStartedTime = GetTime() + GetConVarInt(FindConVar("mp_freezetime"));
|
g_RealRoundStartedTime = GetTime() + GetConVarInt(FindConVar("mp_freezetime"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action Timer_CleanupWeapons(Handle:timer)
|
public Action Timer_CleanupWeapons(Handle:timer)
|
||||||
{
|
{
|
||||||
CheckWeapons();
|
CheckWeapons();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action Command_CleanupWeapons(client, args)
|
public Action Command_CleanupWeapons(client, args)
|
||||||
{
|
{
|
||||||
CleanupWeapons();
|
CleanupWeapons();
|
||||||
|
|
||||||
LogAction(client, -1, "%L performed a weapons cleanup", client);
|
LogAction(client, -1, "%L performed a weapons cleanup", client);
|
||||||
PrintToChat(client, "[SM] Weapons cleaned successfully!");
|
PrintToChat(client, "[SM] Weapons cleaned successfully!");
|
||||||
}
|
}
|
||||||
|
@ -1,190 +1,190 @@
|
|||||||
/**
|
/**
|
||||||
* This is the include file for Custom Chat Colors
|
* This is the include file for Custom Chat Colors
|
||||||
* https://forums.alliedmods.net/showthread.php?t=186695
|
* https://forums.alliedmods.net/showthread.php?t=186695
|
||||||
* To check that Custom Chat Colors is installed and running, verify that the "ccc" library exists
|
* To check that Custom Chat Colors is installed and running, verify that the "ccc" library exists
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined _ccc_included
|
#if defined _ccc_included
|
||||||
#endinput
|
#endinput
|
||||||
#endif
|
#endif
|
||||||
#define _ccc_included
|
#define _ccc_included
|
||||||
|
|
||||||
enum CCC_ColorType {
|
enum CCC_ColorType {
|
||||||
CCC_TagColor,
|
CCC_TagColor,
|
||||||
CCC_NameColor,
|
CCC_NameColor,
|
||||||
CCC_ChatColor
|
CCC_ChatColor
|
||||||
};
|
};
|
||||||
|
|
||||||
#define COLOR_NULL -1
|
#define COLOR_NULL -1
|
||||||
#define COLOR_NONE -2
|
#define COLOR_NONE -2
|
||||||
#define COLOR_CGREEN -3 //0x40FF40
|
#define COLOR_CGREEN -3 //0x40FF40
|
||||||
#define COLOR_OLIVE -4 //0x99FF99
|
#define COLOR_OLIVE -4 //0x99FF99
|
||||||
#define COLOR_TEAM -5
|
#define COLOR_TEAM -5
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a client's color as a hexadecimal integer.
|
* Gets a client's color as a hexadecimal integer.
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @param type Color type to retreive
|
* @param type Color type to retreive
|
||||||
* @param alpha Pass a boolean variable by reference here and it will be true if the color has alpha specified or false if it doesn't (or is a stock color)
|
* @param alpha Pass a boolean variable by reference here and it will be true if the color has alpha specified or false if it doesn't (or is a stock color)
|
||||||
* @return Color as a hexadecimal integer (use %X in formatting to get a hexadecimal string)
|
* @return Color as a hexadecimal integer (use %X in formatting to get a hexadecimal string)
|
||||||
*
|
*
|
||||||
* On error/errors: Invalid client index or client is not in game
|
* On error/errors: Invalid client index or client is not in game
|
||||||
*/
|
*/
|
||||||
native CCC_GetColor(client, CCC_ColorType:type, &bool:alpha = false);
|
native CCC_GetColor(client, CCC_ColorType:type, &bool:alpha = false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a client's color as a hexadecimal integer.
|
* Sets a client's color as a hexadecimal integer.
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @param type Color type to set
|
* @param type Color type to set
|
||||||
* @param color Integer representation of the color (use StringToInt(input, 16) to convert a hexadecimal string) or one of the color defines
|
* @param color Integer representation of the color (use StringToInt(input, 16) to convert a hexadecimal string) or one of the color defines
|
||||||
* @param alpha Are you specifying a color with alpha?
|
* @param alpha Are you specifying a color with alpha?
|
||||||
* @return True if the color is updated successfully, false otherwise
|
* @return True if the color is updated successfully, false otherwise
|
||||||
*
|
*
|
||||||
* On error/errors: Invalid client index or client is not in game
|
* On error/errors: Invalid client index or client is not in game
|
||||||
*/
|
*/
|
||||||
native bool:CCC_SetColor(client, CCC_ColorType:type, color, bool:alpha);
|
native bool:CCC_SetColor(client, CCC_ColorType:type, color, bool:alpha);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a client's tag
|
* Gets a client's tag
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @param buffer Buffer to store the tag in
|
* @param buffer Buffer to store the tag in
|
||||||
* @param maxlen Maximum buffer length
|
* @param maxlen Maximum buffer length
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*
|
*
|
||||||
* On error/errors: Invalid client index or client is not in game
|
* On error/errors: Invalid client index or client is not in game
|
||||||
*/
|
*/
|
||||||
native CCC_GetTag(client, String:buffer[], maxlen);
|
native CCC_GetTag(client, String:buffer[], maxlen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a client's tag
|
* Sets a client's tag
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @param tag String containing the new tag
|
* @param tag String containing the new tag
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*
|
*
|
||||||
* On error/errors: Invalid client index or client is not in game
|
* On error/errors: Invalid client index or client is not in game
|
||||||
*/
|
*/
|
||||||
native CCC_SetTag(client, const String:tag[]);
|
native CCC_SetTag(client, const String:tag[]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets a client's color to the value in the config file.
|
* Resets a client's color to the value in the config file.
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @param type Color type to restore
|
* @param type Color type to restore
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*
|
*
|
||||||
* On error/errors: Invalid client index or client is not in game
|
* On error/errors: Invalid client index or client is not in game
|
||||||
*/
|
*/
|
||||||
native CCC_ResetColor(client, CCC_ColorType:type);
|
native CCC_ResetColor(client, CCC_ColorType:type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets a client's tag to the value in the config file.
|
* Resets a client's tag to the value in the config file.
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*
|
*
|
||||||
* On error/errors: Invalid client index or client is not in game
|
* On error/errors: Invalid client index or client is not in game
|
||||||
*/
|
*/
|
||||||
native CCC_ResetTag(client);
|
native CCC_ResetTag(client);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a cilent's name is about to be colored
|
* Called when a cilent's name is about to be colored
|
||||||
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
|
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @return Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring
|
* @return Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring
|
||||||
*/
|
*/
|
||||||
#pragma deprecated Use CCC_OnColor instead
|
#pragma deprecated Use CCC_OnColor instead
|
||||||
forward Action:CCC_OnNameColor(client);
|
forward Action:CCC_OnNameColor(client);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a client's chat is about to be colored
|
* Called when a client's chat is about to be colored
|
||||||
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
|
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @return Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring
|
* @return Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring
|
||||||
*/
|
*/
|
||||||
#pragma deprecated Use CCC_OnColor instead
|
#pragma deprecated Use CCC_OnColor instead
|
||||||
forward Action:CCC_OnChatColor(client);
|
forward Action:CCC_OnChatColor(client);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a client's name is about to be tagged
|
* Called when a client's name is about to be tagged
|
||||||
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
|
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @return Plugin_Handled to prevent tagging, Plugin_Continue to allow tagging
|
* @return Plugin_Handled to prevent tagging, Plugin_Continue to allow tagging
|
||||||
*/
|
*/
|
||||||
#pragma deprecated Use CCC_OnColor instead
|
#pragma deprecated Use CCC_OnColor instead
|
||||||
forward Action:CCC_OnTagApplied(client);
|
forward Action:CCC_OnTagApplied(client);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a client's name is about to be tagged
|
* Called when a client's name is about to be tagged
|
||||||
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
|
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @param message Chat message that will be printed
|
* @param message Chat message that will be printed
|
||||||
* @param type What type of color will be applied. If this is CCC_TagColor, it controls whether the tag will be applied at all, not whether the tag will be colored.
|
* @param type What type of color will be applied. If this is CCC_TagColor, it controls whether the tag will be applied at all, not whether the tag will be colored.
|
||||||
* @return Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring
|
* @return Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring
|
||||||
*/
|
*/
|
||||||
forward Action:CCC_OnColor(client, const String:message[], CCC_ColorType:type);
|
forward Action:CCC_OnColor(client, const String:message[], CCC_ColorType:type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a message has been fully colored and will be sent, unless further plugins modify it through Simple Chat Processor
|
* Called when a message has been fully colored and will be sent, unless further plugins modify it through Simple Chat Processor
|
||||||
*
|
*
|
||||||
* @param author Author client index
|
* @param author Author client index
|
||||||
* @param message Message
|
* @param message Message
|
||||||
* @param maxlen Maximum length of message buffer
|
* @param maxlen Maximum length of message buffer
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
forward CCC_OnChatMessage(author, String:message[], maxlen);
|
forward CCC_OnChatMessage(author, String:message[], maxlen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a client's colors and tag are about to be loaded from the config file
|
* Called when a client's colors and tag are about to be loaded from the config file
|
||||||
* At this point, the client has NO COLORS
|
* At this point, the client has NO COLORS
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @return Plugin_Handled or Plugin_Stop to prevent loading, Plugin_Continue or Plugin_Changed to allow
|
* @return Plugin_Handled or Plugin_Stop to prevent loading, Plugin_Continue or Plugin_Changed to allow
|
||||||
*/
|
*/
|
||||||
forward Action:CCC_OnUserConfigPreLoaded(client);
|
forward Action:CCC_OnUserConfigPreLoaded(client);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a client's colors and tag have been loaded from the config file
|
* Called when a client's colors and tag have been loaded from the config file
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
forward CCC_OnUserConfigLoaded(client);
|
forward CCC_OnUserConfigLoaded(client);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the configuration file is reloaded with the sm_reloadccc command
|
* Called when the configuration file is reloaded with the sm_reloadccc command
|
||||||
*
|
*
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
forward CCC_OnConfigReloaded();
|
forward CCC_OnConfigReloaded();
|
||||||
|
|
||||||
native void CCC_UpdateIgnoredArray(bool IgnoredArray[(MAXPLAYERS + 1) * (MAXPLAYERS + 1)]);
|
native void CCC_UpdateIgnoredArray(bool IgnoredArray[(MAXPLAYERS + 1) * (MAXPLAYERS + 1)]);
|
||||||
|
|
||||||
public SharedPlugin:__pl_ccc = {
|
public SharedPlugin:__pl_ccc = {
|
||||||
name = "ccc",
|
name = "ccc",
|
||||||
file = "custom-chatcolors.smx",
|
file = "custom-chatcolors.smx",
|
||||||
#if defined REQUIRE_PLUGIN
|
#if defined REQUIRE_PLUGIN
|
||||||
required = 1
|
required = 1
|
||||||
#else
|
#else
|
||||||
required = 0
|
required = 0
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#if !defined REQUIRE_PLUGIN
|
#if !defined REQUIRE_PLUGIN
|
||||||
public __pl_ccc_SetNTVOptional() {
|
public __pl_ccc_SetNTVOptional() {
|
||||||
MarkNativeAsOptional("CCC_GetColor");
|
MarkNativeAsOptional("CCC_GetColor");
|
||||||
MarkNativeAsOptional("CCC_SetColor");
|
MarkNativeAsOptional("CCC_SetColor");
|
||||||
MarkNativeAsOptional("CCC_GetTag");
|
MarkNativeAsOptional("CCC_GetTag");
|
||||||
MarkNativeAsOptional("CCC_ResetTag");
|
MarkNativeAsOptional("CCC_ResetTag");
|
||||||
MarkNativeAsOptional("CCC_ResetColor");
|
MarkNativeAsOptional("CCC_ResetColor");
|
||||||
MarkNativeAsOptional("CCC_ResetTag");
|
MarkNativeAsOptional("CCC_ResetTag");
|
||||||
MarkNativeAsOptional("CCC_UpdateIgnoredArray");
|
MarkNativeAsOptional("CCC_UpdateIgnoredArray");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
1076
includes/colors.inc
1076
includes/colors.inc
File diff suppressed because it is too large
Load Diff
@ -1,482 +1,482 @@
|
|||||||
#if defined _dhooks_included
|
#if defined _dhooks_included
|
||||||
#endinput
|
#endinput
|
||||||
#endif
|
#endif
|
||||||
#define _dhooks_included
|
#define _dhooks_included
|
||||||
|
|
||||||
enum ObjectValueType
|
enum ObjectValueType
|
||||||
{
|
{
|
||||||
ObjectValueType_Int = 0,
|
ObjectValueType_Int = 0,
|
||||||
ObjectValueType_Bool,
|
ObjectValueType_Bool,
|
||||||
ObjectValueType_Ehandle,
|
ObjectValueType_Ehandle,
|
||||||
ObjectValueType_Float,
|
ObjectValueType_Float,
|
||||||
ObjectValueType_CBaseEntityPtr,
|
ObjectValueType_CBaseEntityPtr,
|
||||||
ObjectValueType_IntPtr,
|
ObjectValueType_IntPtr,
|
||||||
ObjectValueType_BoolPtr,
|
ObjectValueType_BoolPtr,
|
||||||
ObjectValueType_EhandlePtr,
|
ObjectValueType_EhandlePtr,
|
||||||
ObjectValueType_FloatPtr,
|
ObjectValueType_FloatPtr,
|
||||||
ObjectValueType_Vector,
|
ObjectValueType_Vector,
|
||||||
ObjectValueType_VectorPtr,
|
ObjectValueType_VectorPtr,
|
||||||
ObjectValueType_CharPtr,
|
ObjectValueType_CharPtr,
|
||||||
ObjectValueType_String
|
ObjectValueType_String
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ListenType
|
enum ListenType
|
||||||
{
|
{
|
||||||
ListenType_Created,
|
ListenType_Created,
|
||||||
ListenType_Deleted
|
ListenType_Deleted
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ReturnType
|
enum ReturnType
|
||||||
{
|
{
|
||||||
ReturnType_Unknown,
|
ReturnType_Unknown,
|
||||||
ReturnType_Void,
|
ReturnType_Void,
|
||||||
ReturnType_Int,
|
ReturnType_Int,
|
||||||
ReturnType_Bool,
|
ReturnType_Bool,
|
||||||
ReturnType_Float,
|
ReturnType_Float,
|
||||||
ReturnType_String, //Note this is a string_t
|
ReturnType_String, //Note this is a string_t
|
||||||
ReturnType_StringPtr, //Note this is a string_t *
|
ReturnType_StringPtr, //Note this is a string_t *
|
||||||
ReturnType_CharPtr,
|
ReturnType_CharPtr,
|
||||||
ReturnType_Vector,
|
ReturnType_Vector,
|
||||||
ReturnType_VectorPtr,
|
ReturnType_VectorPtr,
|
||||||
ReturnType_CBaseEntity,
|
ReturnType_CBaseEntity,
|
||||||
ReturnType_Edict
|
ReturnType_Edict
|
||||||
};
|
};
|
||||||
|
|
||||||
enum HookParamType
|
enum HookParamType
|
||||||
{
|
{
|
||||||
HookParamType_Unknown,
|
HookParamType_Unknown,
|
||||||
HookParamType_Int,
|
HookParamType_Int,
|
||||||
HookParamType_Bool,
|
HookParamType_Bool,
|
||||||
HookParamType_Float,
|
HookParamType_Float,
|
||||||
HookParamType_String, //Note this is a string_t
|
HookParamType_String, //Note this is a string_t
|
||||||
HookParamType_StringPtr, //Note this is a string_t *
|
HookParamType_StringPtr, //Note this is a string_t *
|
||||||
HookParamType_CharPtr,
|
HookParamType_CharPtr,
|
||||||
HookParamType_VectorPtr,
|
HookParamType_VectorPtr,
|
||||||
HookParamType_CBaseEntity,
|
HookParamType_CBaseEntity,
|
||||||
HookParamType_ObjectPtr,
|
HookParamType_ObjectPtr,
|
||||||
HookParamType_Edict,
|
HookParamType_Edict,
|
||||||
HookParamType_Object
|
HookParamType_Object
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ThisPointerType
|
enum ThisPointerType
|
||||||
{
|
{
|
||||||
ThisPointer_Ignore,
|
ThisPointer_Ignore,
|
||||||
ThisPointer_CBaseEntity,
|
ThisPointer_CBaseEntity,
|
||||||
ThisPointer_Address
|
ThisPointer_Address
|
||||||
};
|
};
|
||||||
|
|
||||||
enum HookType
|
enum HookType
|
||||||
{
|
{
|
||||||
HookType_Entity,
|
HookType_Entity,
|
||||||
HookType_GameRules,
|
HookType_GameRules,
|
||||||
HookType_Raw
|
HookType_Raw
|
||||||
};
|
};
|
||||||
|
|
||||||
enum MRESReturn
|
enum MRESReturn
|
||||||
{
|
{
|
||||||
MRES_ChangedHandled = -2, // Use changed values and return MRES_Handled
|
MRES_ChangedHandled = -2, // Use changed values and return MRES_Handled
|
||||||
MRES_ChangedOverride, // Use changed values and return MRES_Override
|
MRES_ChangedOverride, // Use changed values and return MRES_Override
|
||||||
MRES_Ignored, // plugin didn't take any action
|
MRES_Ignored, // plugin didn't take any action
|
||||||
MRES_Handled, // plugin did something, but real function should still be called
|
MRES_Handled, // plugin did something, but real function should still be called
|
||||||
MRES_Override, // call real function, but use my return value
|
MRES_Override, // call real function, but use my return value
|
||||||
MRES_Supercede // skip real function; use my return value
|
MRES_Supercede // skip real function; use my return value
|
||||||
};
|
};
|
||||||
|
|
||||||
enum DHookPassFlag
|
enum DHookPassFlag
|
||||||
{
|
{
|
||||||
DHookPass_ByVal = (1<<0),
|
DHookPass_ByVal = (1<<0),
|
||||||
DHookPass_ByRef = (1<<1)
|
DHookPass_ByRef = (1<<1)
|
||||||
};
|
};
|
||||||
|
|
||||||
typeset ListenCB
|
typeset ListenCB
|
||||||
{
|
{
|
||||||
//Deleted
|
//Deleted
|
||||||
function void (int entity);
|
function void (int entity);
|
||||||
|
|
||||||
//Created
|
//Created
|
||||||
function void (int entity, const char[] classname);
|
function void (int entity, const char[] classname);
|
||||||
};
|
};
|
||||||
|
|
||||||
typeset DHookRemovalCB
|
typeset DHookRemovalCB
|
||||||
{
|
{
|
||||||
function void (int hookid);
|
function void (int hookid);
|
||||||
};
|
};
|
||||||
typeset DHookCallback
|
typeset DHookCallback
|
||||||
{
|
{
|
||||||
//Function Example: void Ham::Test() with this pointer ignore
|
//Function Example: void Ham::Test() with this pointer ignore
|
||||||
function MRESReturn ();
|
function MRESReturn ();
|
||||||
|
|
||||||
//Function Example: void Ham::Test() with this pointer passed
|
//Function Example: void Ham::Test() with this pointer passed
|
||||||
function MRESReturn (int pThis);
|
function MRESReturn (int pThis);
|
||||||
|
|
||||||
//Function Example: void Ham::Test(int cake) with this pointer ignore
|
//Function Example: void Ham::Test(int cake) with this pointer ignore
|
||||||
function MRESReturn (Handle hParams);
|
function MRESReturn (Handle hParams);
|
||||||
|
|
||||||
//Function Example: void Ham::Test(int cake) with this pointer passed
|
//Function Example: void Ham::Test(int cake) with this pointer passed
|
||||||
function MRESReturn (int pThis, Handle hParams);
|
function MRESReturn (int pThis, Handle hParams);
|
||||||
|
|
||||||
//Function Example: int Ham::Test() with this pointer ignore
|
//Function Example: int Ham::Test() with this pointer ignore
|
||||||
function MRESReturn (Handle hReturn);
|
function MRESReturn (Handle hReturn);
|
||||||
|
|
||||||
//Function Example: int Ham::Test() with this pointer passed
|
//Function Example: int Ham::Test() with this pointer passed
|
||||||
function MRESReturn (int pThis, Handle hReturn);
|
function MRESReturn (int pThis, Handle hReturn);
|
||||||
|
|
||||||
//Function Example: int Ham::Test(int cake) with this pointer ignore
|
//Function Example: int Ham::Test(int cake) with this pointer ignore
|
||||||
function MRESReturn (Handle hReturn, Handle hParams);
|
function MRESReturn (Handle hReturn, Handle hParams);
|
||||||
|
|
||||||
//Function Example: int Ham::Test(int cake) with this pointer passed
|
//Function Example: int Ham::Test(int cake) with this pointer passed
|
||||||
function MRESReturn (int pThis, Handle hReturn, Handle hParams);
|
function MRESReturn (int pThis, Handle hReturn, Handle hParams);
|
||||||
|
|
||||||
//Address NOW
|
//Address NOW
|
||||||
|
|
||||||
//Function Example: void Ham::Test() with this pointer passed
|
//Function Example: void Ham::Test() with this pointer passed
|
||||||
function MRESReturn (Address pThis);
|
function MRESReturn (Address pThis);
|
||||||
|
|
||||||
//Function Example: void Ham::Test(int cake) with this pointer passed
|
//Function Example: void Ham::Test(int cake) with this pointer passed
|
||||||
function MRESReturn (Address pThis, Handle hParams);
|
function MRESReturn (Address pThis, Handle hParams);
|
||||||
|
|
||||||
//Function Example: int Ham::Test() with this pointer passed
|
//Function Example: int Ham::Test() with this pointer passed
|
||||||
function MRESReturn (Address pThis, Handle hReturn);
|
function MRESReturn (Address pThis, Handle hReturn);
|
||||||
|
|
||||||
//Function Example: int Ham::Test(int cake) with this pointer passed
|
//Function Example: int Ham::Test(int cake) with this pointer passed
|
||||||
function MRESReturn (Address pThis, Handle hReturn, Handle hParams);
|
function MRESReturn (Address pThis, Handle hReturn, Handle hParams);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Adds an entity listener hook
|
/* Adds an entity listener hook
|
||||||
*
|
*
|
||||||
* @param type Type of listener to add
|
* @param type Type of listener to add
|
||||||
* @param callback Callback to use
|
* @param callback Callback to use
|
||||||
*
|
*
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookAddEntityListener(ListenType type, ListenCB callback);
|
native void DHookAddEntityListener(ListenType type, ListenCB callback);
|
||||||
|
|
||||||
/* Removes an entity listener hook
|
/* Removes an entity listener hook
|
||||||
*
|
*
|
||||||
* @param type Type of listener to remove
|
* @param type Type of listener to remove
|
||||||
* @param callback Callback this listener was using
|
* @param callback Callback this listener was using
|
||||||
*
|
*
|
||||||
* @return True if one was removed false otherwise.
|
* @return True if one was removed false otherwise.
|
||||||
*/
|
*/
|
||||||
native bool DHookRemoveEntityListener(ListenType type, ListenCB callback);
|
native bool DHookRemoveEntityListener(ListenType type, ListenCB callback);
|
||||||
|
|
||||||
/* Creates a hook
|
/* Creates a hook
|
||||||
*
|
*
|
||||||
* @param offset vtable offset for function to hook
|
* @param offset vtable offset for function to hook
|
||||||
* @param hooktype Type of hook
|
* @param hooktype Type of hook
|
||||||
* @param returntype Type type of return
|
* @param returntype Type type of return
|
||||||
* @param thistype Type of this pointer or ignore (ignore can be used if not needed)
|
* @param thistype Type of this pointer or ignore (ignore can be used if not needed)
|
||||||
* @param callback Callback function
|
* @param callback Callback function
|
||||||
*
|
*
|
||||||
* @return Returns setup handle for the hook or INVALID_HANDLE.
|
* @return Returns setup handle for the hook or INVALID_HANDLE.
|
||||||
*/
|
*/
|
||||||
native Handle DHookCreate(int offset, HookType hooktype, ReturnType returntype, ThisPointerType thistype, DHookCallback callback);
|
native Handle DHookCreate(int offset, HookType hooktype, ReturnType returntype, ThisPointerType thistype, DHookCallback callback);
|
||||||
|
|
||||||
/* Adds param to a hook setup
|
/* Adds param to a hook setup
|
||||||
*
|
*
|
||||||
* @param setup Setup handle to add the param to.
|
* @param setup Setup handle to add the param to.
|
||||||
* @param type Param type
|
* @param type Param type
|
||||||
* @param size Used for Objects (not Object ptr) to define the size of the object.
|
* @param size Used for Objects (not Object ptr) to define the size of the object.
|
||||||
* @param flag Used to change the pass type.
|
* @param flag Used to change the pass type.
|
||||||
*
|
*
|
||||||
* @error Invalid setup handle or too many params added (request upping the max in thread)
|
* @error Invalid setup handle or too many params added (request upping the max in thread)
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookAddParam(Handle setup, HookParamType type, int size=-1, DHookPassFlag flag=DHookPass_ByVal);
|
native void DHookAddParam(Handle setup, HookParamType type, int size=-1, DHookPassFlag flag=DHookPass_ByVal);
|
||||||
//native DHookAddParam(Handle:setup, HookParamType:type);
|
//native DHookAddParam(Handle:setup, HookParamType:type);
|
||||||
|
|
||||||
/* Hook entity
|
/* Hook entity
|
||||||
*
|
*
|
||||||
* @param setup Setup handle to use to add the hook.
|
* @param setup Setup handle to use to add the hook.
|
||||||
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
|
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
|
||||||
* @param entity Entity index to hook on.
|
* @param entity Entity index to hook on.
|
||||||
* @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback)
|
* @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback)
|
||||||
*
|
*
|
||||||
* @error Invalid setup handle, invalid entity or invalid hook type.
|
* @error Invalid setup handle, invalid entity or invalid hook type.
|
||||||
* @return -1 on fail a hookid on success
|
* @return -1 on fail a hookid on success
|
||||||
*/
|
*/
|
||||||
native int DHookEntity(Handle setup, bool post, int entity, DHookRemovalCB removalcb=INVALID_FUNCTION);
|
native int DHookEntity(Handle setup, bool post, int entity, DHookRemovalCB removalcb=INVALID_FUNCTION);
|
||||||
|
|
||||||
/* Hook gamerules
|
/* Hook gamerules
|
||||||
*
|
*
|
||||||
* @param setup Setup handle to use to add the hook.
|
* @param setup Setup handle to use to add the hook.
|
||||||
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
|
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
|
||||||
* @param removalcb Callback for when the hook is removed (Game rules hooks are auto-removed on map end and will call this callback)
|
* @param removalcb Callback for when the hook is removed (Game rules hooks are auto-removed on map end and will call this callback)
|
||||||
*
|
*
|
||||||
* @error Invalid setup handle, failing to get gamerules pointer or invalid hook type.
|
* @error Invalid setup handle, failing to get gamerules pointer or invalid hook type.
|
||||||
* @return -1 on fail a hookid on success
|
* @return -1 on fail a hookid on success
|
||||||
*/
|
*/
|
||||||
native int DHookGamerules(Handle setup, bool post, DHookRemovalCB removalcb=INVALID_FUNCTION);
|
native int DHookGamerules(Handle setup, bool post, DHookRemovalCB removalcb=INVALID_FUNCTION);
|
||||||
|
|
||||||
/* Hook a raw pointer
|
/* Hook a raw pointer
|
||||||
*
|
*
|
||||||
* @param setup Setup handle to use to add the hook.
|
* @param setup Setup handle to use to add the hook.
|
||||||
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
|
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
|
||||||
* @param addr This pointer address.
|
* @param addr This pointer address.
|
||||||
* @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback)
|
* @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback)
|
||||||
*
|
*
|
||||||
* @error Invalid setup handle, invalid address or invalid hook type.
|
* @error Invalid setup handle, invalid address or invalid hook type.
|
||||||
* @return -1 on fail a hookid on success
|
* @return -1 on fail a hookid on success
|
||||||
*/
|
*/
|
||||||
native int DHookRaw(Handle setup, bool post, Address addr, DHookRemovalCB removalcb=INVALID_FUNCTION);
|
native int DHookRaw(Handle setup, bool post, Address addr, DHookRemovalCB removalcb=INVALID_FUNCTION);
|
||||||
|
|
||||||
/* Remove hook by hook id
|
/* Remove hook by hook id
|
||||||
*
|
*
|
||||||
* @param hookid Hook id to remove
|
* @param hookid Hook id to remove
|
||||||
*
|
*
|
||||||
* @return true on success false otherwise
|
* @return true on success false otherwise
|
||||||
* @note This will not fire the removal callback!
|
* @note This will not fire the removal callback!
|
||||||
*/
|
*/
|
||||||
native bool DHookRemoveHookID(int hookid);
|
native bool DHookRemoveHookID(int hookid);
|
||||||
|
|
||||||
/* Get param value (Only use for: int, entity, bool or float param types)
|
/* Get param value (Only use for: int, entity, bool or float param types)
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1. 0 Will return the number of params stored)
|
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1. 0 Will return the number of params stored)
|
||||||
*
|
*
|
||||||
* @error Invalid handle. Invalid param number. Invalid param type.
|
* @error Invalid handle. Invalid param number. Invalid param type.
|
||||||
* @return value if num greater than 0. If 0 returns paramcount.
|
* @return value if num greater than 0. If 0 returns paramcount.
|
||||||
*/
|
*/
|
||||||
native any DHookGetParam(Handle hParams, int num);
|
native any DHookGetParam(Handle hParams, int num);
|
||||||
|
|
||||||
/* Get vector param value
|
/* Get vector param value
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.)
|
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.)
|
||||||
* @param vec Vector buffer to store result.
|
* @param vec Vector buffer to store result.
|
||||||
*
|
*
|
||||||
* @error Invalid handle. Invalid param number. Invalid param type.
|
* @error Invalid handle. Invalid param number. Invalid param type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookGetParamVector(Handle hParams, int num, float vec[3]);
|
native void DHookGetParamVector(Handle hParams, int num, float vec[3]);
|
||||||
|
|
||||||
/* Get string param value
|
/* Get string param value
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.)
|
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.)
|
||||||
* @param buffer String buffer to store result
|
* @param buffer String buffer to store result
|
||||||
* @param size Buffer size
|
* @param size Buffer size
|
||||||
*
|
*
|
||||||
* @error Invalid handle. Invalid param number. Invalid param type.
|
* @error Invalid handle. Invalid param number. Invalid param type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookGetParamString(Handle hParams, int num, char[] buffer, int size);
|
native void DHookGetParamString(Handle hParams, int num, char[] buffer, int size);
|
||||||
|
|
||||||
/* Set param value (Only use for: int, entity, bool or float param types)
|
/* Set param value (Only use for: int, entity, bool or float param types)
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
|
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
|
||||||
* @param value Value to set it as (only pass int, bool, float or entity index)
|
* @param value Value to set it as (only pass int, bool, float or entity index)
|
||||||
*
|
*
|
||||||
* @error Invalid handle. Invalid param number. Invalid param type.
|
* @error Invalid handle. Invalid param number. Invalid param type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookSetParam(Handle hParams, int num, any value);
|
native void DHookSetParam(Handle hParams, int num, any value);
|
||||||
|
|
||||||
/* Set vector param value
|
/* Set vector param value
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
|
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
|
||||||
* @param vec Value to set vector as.
|
* @param vec Value to set vector as.
|
||||||
*
|
*
|
||||||
* @error Invalid handle. Invalid param number. Invalid param type.
|
* @error Invalid handle. Invalid param number. Invalid param type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookSetParamVector(Handle hParams, int num, float vec[3]);
|
native void DHookSetParamVector(Handle hParams, int num, float vec[3]);
|
||||||
|
|
||||||
/* Set string param value
|
/* Set string param value
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
|
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
|
||||||
* @param value Value to set string as.
|
* @param value Value to set string as.
|
||||||
*
|
*
|
||||||
* @error Invalid handle. Invalid param number. Invalid param type.
|
* @error Invalid handle. Invalid param number. Invalid param type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookSetParamString(Handle hParams, int num, char[] value);
|
native void DHookSetParamString(Handle hParams, int num, char[] value);
|
||||||
|
|
||||||
/* Get return value (Only use for: int, entity, bool or float return types)
|
/* Get return value (Only use for: int, entity, bool or float return types)
|
||||||
*
|
*
|
||||||
* @param hReturn Handle to return structure
|
* @param hReturn Handle to return structure
|
||||||
*
|
*
|
||||||
* @error Invalid Handle, invalid type.
|
* @error Invalid Handle, invalid type.
|
||||||
* @return Returns default value if prehook returns actual value if post hook.
|
* @return Returns default value if prehook returns actual value if post hook.
|
||||||
*/
|
*/
|
||||||
native any DHookGetReturn(Handle hReturn);
|
native any DHookGetReturn(Handle hReturn);
|
||||||
|
|
||||||
/* Get return vector value
|
/* Get return vector value
|
||||||
*
|
*
|
||||||
* @param hReturn Handle to return structure
|
* @param hReturn Handle to return structure
|
||||||
* @param vec Vector buffer to store result in. (In pre hooks will be default value (0.0,0.0,0.0))
|
* @param vec Vector buffer to store result in. (In pre hooks will be default value (0.0,0.0,0.0))
|
||||||
*
|
*
|
||||||
* @error Invalid Handle, invalid type.
|
* @error Invalid Handle, invalid type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookGetReturnVector(Handle hReturn, float vec[3]);
|
native void DHookGetReturnVector(Handle hReturn, float vec[3]);
|
||||||
|
|
||||||
/* Get return string value
|
/* Get return string value
|
||||||
*
|
*
|
||||||
* @param hReturn Handle to return structure
|
* @param hReturn Handle to return structure
|
||||||
* @param buffer String buffer to store result in. (In pre hooks will be default value "")
|
* @param buffer String buffer to store result in. (In pre hooks will be default value "")
|
||||||
* @param size String buffer size
|
* @param size String buffer size
|
||||||
*
|
*
|
||||||
* @error Invalid Handle, invalid type.
|
* @error Invalid Handle, invalid type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookGetReturnString(Handle hReturn, char[] buffer, int size);
|
native void DHookGetReturnString(Handle hReturn, char[] buffer, int size);
|
||||||
|
|
||||||
/* Set return value (Only use for: int, entity, bool or float return types)
|
/* Set return value (Only use for: int, entity, bool or float return types)
|
||||||
*
|
*
|
||||||
* @param hReturn Handle to return structure
|
* @param hReturn Handle to return structure
|
||||||
* @param value Value to set return as
|
* @param value Value to set return as
|
||||||
*
|
*
|
||||||
* @error Invalid Handle, invalid type.
|
* @error Invalid Handle, invalid type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookSetReturn(Handle hReturn, any value);
|
native void DHookSetReturn(Handle hReturn, any value);
|
||||||
|
|
||||||
/* Set return vector value
|
/* Set return vector value
|
||||||
*
|
*
|
||||||
* @param hReturn Handle to return structure
|
* @param hReturn Handle to return structure
|
||||||
* @param vec Value to set return vector as
|
* @param vec Value to set return vector as
|
||||||
*
|
*
|
||||||
* @error Invalid Handle, invalid type.
|
* @error Invalid Handle, invalid type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookSetReturnVector(Handle hReturn, float vec[3]);
|
native void DHookSetReturnVector(Handle hReturn, float vec[3]);
|
||||||
|
|
||||||
/* Set return string value
|
/* Set return string value
|
||||||
*
|
*
|
||||||
* @param hReturn Handle to return structure
|
* @param hReturn Handle to return structure
|
||||||
* @param value Value to set return string as
|
* @param value Value to set return string as
|
||||||
*
|
*
|
||||||
* @error Invalid Handle, invalid type.
|
* @error Invalid Handle, invalid type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookSetReturnString(Handle hReturn, char[] value);
|
native void DHookSetReturnString(Handle hReturn, char[] value);
|
||||||
|
|
||||||
//WE SHOULD WRAP THESE AROUND STOCKS FOR NON PTR AS WE SUPPORT BOTH WITH THESE NATIVE'S
|
//WE SHOULD WRAP THESE AROUND STOCKS FOR NON PTR AS WE SUPPORT BOTH WITH THESE NATIVE'S
|
||||||
|
|
||||||
/* Gets an objects variable value
|
/* Gets an objects variable value
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @param num Param number to get.
|
* @param num Param number to get.
|
||||||
* @param offset Offset within the object to the var to get.
|
* @param offset Offset within the object to the var to get.
|
||||||
* @param type Type of var it is
|
* @param type Type of var it is
|
||||||
*
|
*
|
||||||
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
|
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
|
||||||
* @return Value of the objects var. If EHANDLE type or entity returns entity index.
|
* @return Value of the objects var. If EHANDLE type or entity returns entity index.
|
||||||
*/
|
*/
|
||||||
native any DHookGetParamObjectPtrVar(Handle hParams, int num, int offset, ObjectValueType type);
|
native any DHookGetParamObjectPtrVar(Handle hParams, int num, int offset, ObjectValueType type);
|
||||||
|
|
||||||
/* Sets an objects variable value
|
/* Sets an objects variable value
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @param num Param number to set.
|
* @param num Param number to set.
|
||||||
* @param offset Offset within the object to the var to set.
|
* @param offset Offset within the object to the var to set.
|
||||||
* @param type Type of var it is
|
* @param type Type of var it is
|
||||||
* @param value The value to set the var to.
|
* @param value The value to set the var to.
|
||||||
*
|
*
|
||||||
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
|
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookSetParamObjectPtrVar(Handle hParams, int num, int offset, ObjectValueType type, any value);
|
native void DHookSetParamObjectPtrVar(Handle hParams, int num, int offset, ObjectValueType type, any value);
|
||||||
|
|
||||||
/* Gets an objects vector variable value
|
/* Gets an objects vector variable value
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @param num Param number to get.
|
* @param num Param number to get.
|
||||||
* @param offset Offset within the object to the var to get.
|
* @param offset Offset within the object to the var to get.
|
||||||
* @param type Type of var it is
|
* @param type Type of var it is
|
||||||
* @param buffer Buffer to store the result vector
|
* @param buffer Buffer to store the result vector
|
||||||
*
|
*
|
||||||
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
|
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookGetParamObjectPtrVarVector(Handle hParams, int num, int offset, ObjectValueType type, float buffer[3]);
|
native void DHookGetParamObjectPtrVarVector(Handle hParams, int num, int offset, ObjectValueType type, float buffer[3]);
|
||||||
|
|
||||||
/* Sets an objects vector variable value
|
/* Sets an objects vector variable value
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @param num Param number to set.
|
* @param num Param number to set.
|
||||||
* @param offset Offset within the object to the var to set.
|
* @param offset Offset within the object to the var to set.
|
||||||
* @param type Type of var it is
|
* @param type Type of var it is
|
||||||
* @param value The value to set the vector var to.
|
* @param value The value to set the vector var to.
|
||||||
*
|
*
|
||||||
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
|
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookSetParamObjectPtrVarVector(Handle hParams, int num, int offset, ObjectValueType type, float value[3]);
|
native void DHookSetParamObjectPtrVarVector(Handle hParams, int num, int offset, ObjectValueType type, float value[3]);
|
||||||
|
|
||||||
/* Gets an objects string variable value
|
/* Gets an objects string variable value
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @param num Param number to get.
|
* @param num Param number to get.
|
||||||
* @param offset Offset within the object to the var to get.
|
* @param offset Offset within the object to the var to get.
|
||||||
* @param type Type of var it is
|
* @param type Type of var it is
|
||||||
* @param buffer Buffer to store the result vector
|
* @param buffer Buffer to store the result vector
|
||||||
* @param size Size of the buffer
|
* @param size Size of the buffer
|
||||||
*
|
*
|
||||||
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
|
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void DHookGetParamObjectPtrString(Handle hParams, int num, int offset, ObjectValueType type, char[] buffer, int size);
|
native void DHookGetParamObjectPtrString(Handle hParams, int num, int offset, ObjectValueType type, char[] buffer, int size);
|
||||||
|
|
||||||
/* Checks if a pointer param is null
|
/* Checks if a pointer param is null
|
||||||
*
|
*
|
||||||
* @param hParams Handle to params structure
|
* @param hParams Handle to params structure
|
||||||
* @param num Param number to check.
|
* @param num Param number to check.
|
||||||
*
|
*
|
||||||
* @error Non pointer param
|
* @error Non pointer param
|
||||||
* @return True if null false otherwise.
|
* @return True if null false otherwise.
|
||||||
*/
|
*/
|
||||||
native bool DHookIsNullParam(Handle hParams, int num);
|
native bool DHookIsNullParam(Handle hParams, int num);
|
||||||
|
|
||||||
public Extension __ext_dhooks =
|
public Extension __ext_dhooks =
|
||||||
{
|
{
|
||||||
name = "dhooks",
|
name = "dhooks",
|
||||||
file = "dhooks.ext",
|
file = "dhooks.ext",
|
||||||
#if defined AUTOLOAD_EXTENSIONS
|
#if defined AUTOLOAD_EXTENSIONS
|
||||||
autoload = 1,
|
autoload = 1,
|
||||||
#else
|
#else
|
||||||
autoload = 0,
|
autoload = 0,
|
||||||
#endif
|
#endif
|
||||||
#if defined REQUIRE_EXTENSIONS
|
#if defined REQUIRE_EXTENSIONS
|
||||||
required = 1,
|
required = 1,
|
||||||
#else
|
#else
|
||||||
required = 0,
|
required = 0,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#if !defined REQUIRE_EXTENSIONS
|
#if !defined REQUIRE_EXTENSIONS
|
||||||
public __ext_dhooks_SetNTVOptional()
|
public __ext_dhooks_SetNTVOptional()
|
||||||
{
|
{
|
||||||
MarkNativeAsOptional("DHookAddEntityListener");
|
MarkNativeAsOptional("DHookAddEntityListener");
|
||||||
MarkNativeAsOptional("DHookRemoveEntityListener");
|
MarkNativeAsOptional("DHookRemoveEntityListener");
|
||||||
MarkNativeAsOptional("DHookCreate");
|
MarkNativeAsOptional("DHookCreate");
|
||||||
MarkNativeAsOptional("DHookAddParam");
|
MarkNativeAsOptional("DHookAddParam");
|
||||||
MarkNativeAsOptional("DHookEntity");
|
MarkNativeAsOptional("DHookEntity");
|
||||||
MarkNativeAsOptional("DHookGamerules");
|
MarkNativeAsOptional("DHookGamerules");
|
||||||
MarkNativeAsOptional("DHookRaw");
|
MarkNativeAsOptional("DHookRaw");
|
||||||
MarkNativeAsOptional("DHookRemoveHookID");
|
MarkNativeAsOptional("DHookRemoveHookID");
|
||||||
MarkNativeAsOptional("DHookGetParam");
|
MarkNativeAsOptional("DHookGetParam");
|
||||||
MarkNativeAsOptional("DHookGetParamVector");
|
MarkNativeAsOptional("DHookGetParamVector");
|
||||||
MarkNativeAsOptional("DHookGetParamString");
|
MarkNativeAsOptional("DHookGetParamString");
|
||||||
MarkNativeAsOptional("DHookSetParam");
|
MarkNativeAsOptional("DHookSetParam");
|
||||||
MarkNativeAsOptional("DHookSetParamVector");
|
MarkNativeAsOptional("DHookSetParamVector");
|
||||||
MarkNativeAsOptional("DHookSetParamString");
|
MarkNativeAsOptional("DHookSetParamString");
|
||||||
MarkNativeAsOptional("DHookGetReturn");
|
MarkNativeAsOptional("DHookGetReturn");
|
||||||
MarkNativeAsOptional("DHookGetReturnVector");
|
MarkNativeAsOptional("DHookGetReturnVector");
|
||||||
MarkNativeAsOptional("DHookGetReturnString");
|
MarkNativeAsOptional("DHookGetReturnString");
|
||||||
MarkNativeAsOptional("DHookSetReturn");
|
MarkNativeAsOptional("DHookSetReturn");
|
||||||
MarkNativeAsOptional("DHookSetReturnVector");
|
MarkNativeAsOptional("DHookSetReturnVector");
|
||||||
MarkNativeAsOptional("DHookSetReturnString");
|
MarkNativeAsOptional("DHookSetReturnString");
|
||||||
MarkNativeAsOptional("DHookGetParamObjectPtrVar");
|
MarkNativeAsOptional("DHookGetParamObjectPtrVar");
|
||||||
MarkNativeAsOptional("DHookSetParamObjectPtrVar");
|
MarkNativeAsOptional("DHookSetParamObjectPtrVar");
|
||||||
MarkNativeAsOptional("DHookGetParamObjectPtrVarVector");
|
MarkNativeAsOptional("DHookGetParamObjectPtrVarVector");
|
||||||
MarkNativeAsOptional("DHookSetParamObjectPtrVarVector");
|
MarkNativeAsOptional("DHookSetParamObjectPtrVarVector");
|
||||||
MarkNativeAsOptional("DHookIsNullParam");
|
MarkNativeAsOptional("DHookIsNullParam");
|
||||||
MarkNativeAsOptional("DHookGetParamObjectPtrString");
|
MarkNativeAsOptional("DHookGetParamObjectPtrString");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
File diff suppressed because it is too large
Load Diff
@ -1,21 +1,21 @@
|
|||||||
ar_baggage
|
ar_baggage
|
||||||
ar_monastery
|
ar_monastery
|
||||||
ar_shoots
|
ar_shoots
|
||||||
cs_assault
|
cs_assault
|
||||||
cs_italy
|
cs_italy
|
||||||
cs_militia
|
cs_militia
|
||||||
cs_office
|
cs_office
|
||||||
de_aztec
|
de_aztec
|
||||||
de_bank
|
de_bank
|
||||||
de_dust
|
de_dust
|
||||||
de_dust2
|
de_dust2
|
||||||
de_inferno
|
de_inferno
|
||||||
de_lake
|
de_lake
|
||||||
de_mirage
|
de_mirage
|
||||||
de_nuke
|
de_nuke
|
||||||
de_safehouse
|
de_safehouse
|
||||||
de_shorttrain
|
de_shorttrain
|
||||||
de_stmarc
|
de_stmarc
|
||||||
de_sugarcane
|
de_sugarcane
|
||||||
de_train
|
de_train
|
||||||
de_vertigo
|
de_vertigo
|
||||||
|
@ -1,28 +1,28 @@
|
|||||||
as_oilrig
|
as_oilrig
|
||||||
cs_747
|
cs_747
|
||||||
cs_assault
|
cs_assault
|
||||||
cs_backalley
|
cs_backalley
|
||||||
cs_compound
|
cs_compound
|
||||||
cs_estate
|
cs_estate
|
||||||
cs_havana
|
cs_havana
|
||||||
cs_italy
|
cs_italy
|
||||||
cs_militia
|
cs_militia
|
||||||
cs_office
|
cs_office
|
||||||
cs_siege
|
cs_siege
|
||||||
de_airstrip
|
de_airstrip
|
||||||
de_aztec
|
de_aztec
|
||||||
de_cbble
|
de_cbble
|
||||||
de_chateau
|
de_chateau
|
||||||
de_dust2
|
de_dust2
|
||||||
de_dust
|
de_dust
|
||||||
de_inferno
|
de_inferno
|
||||||
de_nuke
|
de_nuke
|
||||||
de_piranesi
|
de_piranesi
|
||||||
de_port
|
de_port
|
||||||
de_prodigy
|
de_prodigy
|
||||||
de_storm
|
de_storm
|
||||||
de_survivor
|
de_survivor
|
||||||
de_tides
|
de_tides
|
||||||
de_torn
|
de_torn
|
||||||
de_train
|
de_train
|
||||||
de_vertigo
|
de_vertigo
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
dod_anzio
|
dod_anzio
|
||||||
dod_argentan
|
dod_argentan
|
||||||
dod_avalanche
|
dod_avalanche
|
||||||
dod_colmar
|
dod_colmar
|
||||||
dod_donner
|
dod_donner
|
||||||
dod_flash
|
dod_flash
|
||||||
dod_jagd
|
dod_jagd
|
||||||
dod_kalt
|
dod_kalt
|
||||||
dod_palermo
|
dod_palermo
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
dm_lockdown
|
dm_lockdown
|
||||||
dm_overwatch
|
dm_overwatch
|
||||||
dm_runoff
|
dm_runoff
|
||||||
dm_steamlab
|
dm_steamlab
|
||||||
dm_underpass
|
dm_underpass
|
||||||
dm_resistance
|
dm_resistance
|
||||||
dm_powerhouse
|
dm_powerhouse
|
||||||
|
@ -1,65 +1,65 @@
|
|||||||
tc_hydro
|
tc_hydro
|
||||||
cp_well
|
cp_well
|
||||||
cp_granary
|
cp_granary
|
||||||
cp_dustbowl
|
cp_dustbowl
|
||||||
cp_gravelpit
|
cp_gravelpit
|
||||||
ctf_2fort
|
ctf_2fort
|
||||||
ctf_well
|
ctf_well
|
||||||
cp_badlands
|
cp_badlands
|
||||||
pl_goldrush
|
pl_goldrush
|
||||||
cp_fastlane
|
cp_fastlane
|
||||||
ctf_turbine
|
ctf_turbine
|
||||||
pl_badwater
|
pl_badwater
|
||||||
cp_steel
|
cp_steel
|
||||||
arena_badlands
|
arena_badlands
|
||||||
arena_granary
|
arena_granary
|
||||||
arena_lumberyard
|
arena_lumberyard
|
||||||
arena_ravine
|
arena_ravine
|
||||||
arena_well
|
arena_well
|
||||||
cp_egypt_final
|
cp_egypt_final
|
||||||
cp_junction_final
|
cp_junction_final
|
||||||
arena_watchtower
|
arena_watchtower
|
||||||
plr_pipeline
|
plr_pipeline
|
||||||
arena_sawmill
|
arena_sawmill
|
||||||
arena_nucleus
|
arena_nucleus
|
||||||
pl_hoodoo_final
|
pl_hoodoo_final
|
||||||
koth_sawmill
|
koth_sawmill
|
||||||
koth_nucleus
|
koth_nucleus
|
||||||
koth_viaduct
|
koth_viaduct
|
||||||
ctf_sawmill
|
ctf_sawmill
|
||||||
arena_offblast_final
|
arena_offblast_final
|
||||||
cp_yukon_final
|
cp_yukon_final
|
||||||
koth_harvest_final
|
koth_harvest_final
|
||||||
koth_harvest_event
|
koth_harvest_event
|
||||||
ctf_doublecross
|
ctf_doublecross
|
||||||
cp_gorge
|
cp_gorge
|
||||||
cp_freight_final1
|
cp_freight_final1
|
||||||
pl_upward
|
pl_upward
|
||||||
plr_hightower
|
plr_hightower
|
||||||
pl_thundermountain
|
pl_thundermountain
|
||||||
cp_coldfront
|
cp_coldfront
|
||||||
cp_mountainlab
|
cp_mountainlab
|
||||||
cp_manor_event
|
cp_manor_event
|
||||||
cp_degrootkeep
|
cp_degrootkeep
|
||||||
cp_5gorge
|
cp_5gorge
|
||||||
pl_frontier_final
|
pl_frontier_final
|
||||||
plr_nightfall_final
|
plr_nightfall_final
|
||||||
koth_lakeside_final
|
koth_lakeside_final
|
||||||
koth_badlands
|
koth_badlands
|
||||||
pl_barnblitz
|
pl_barnblitz
|
||||||
cp_gullywash_final1
|
cp_gullywash_final1
|
||||||
koth_viaduct_event
|
koth_viaduct_event
|
||||||
cp_foundry
|
cp_foundry
|
||||||
sd_doomsday
|
sd_doomsday
|
||||||
koth_king
|
koth_king
|
||||||
mvm_mannworks
|
mvm_mannworks
|
||||||
mvm_coaltown
|
mvm_coaltown
|
||||||
mvm_decoy
|
mvm_decoy
|
||||||
koth_lakeside_event
|
koth_lakeside_event
|
||||||
mvm_bigrock
|
mvm_bigrock
|
||||||
cp_process_final
|
cp_process_final
|
||||||
cp_standin_final
|
cp_standin_final
|
||||||
plr_hightower_event
|
plr_hightower_event
|
||||||
cp_snakewater_final1
|
cp_snakewater_final1
|
||||||
mvm_mannhattan
|
mvm_mannhattan
|
||||||
mvm_rottenburg
|
mvm_rottenburg
|
||||||
|
@ -1,77 +1,77 @@
|
|||||||
"MapchooserSoundsList"
|
"MapchooserSoundsList"
|
||||||
{
|
{
|
||||||
"tf"
|
"tf"
|
||||||
{
|
{
|
||||||
"counter"
|
"counter"
|
||||||
{
|
{
|
||||||
"1"
|
"1"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/announcer_begins_1sec.mp3"
|
"sound" "sourcemod/mapchooser/tf2/announcer_begins_1sec.mp3"
|
||||||
"builtin" "vo/announcer_begins_1sec.wav"
|
"builtin" "vo/announcer_begins_1sec.wav"
|
||||||
"event" "Announcer.RoundBegins1Seconds"
|
"event" "Announcer.RoundBegins1Seconds"
|
||||||
}
|
}
|
||||||
"2"
|
"2"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/announcer_begins_2sec.mp3"
|
"sound" "sourcemod/mapchooser/tf2/announcer_begins_2sec.mp3"
|
||||||
"builtin" "vo/announcer_begins_2sec.wav"
|
"builtin" "vo/announcer_begins_2sec.wav"
|
||||||
"event" "Announcer.RoundBegins2Seconds"
|
"event" "Announcer.RoundBegins2Seconds"
|
||||||
}
|
}
|
||||||
"3"
|
"3"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/announcer_begins_3sec.mp3"
|
"sound" "sourcemod/mapchooser/tf2/announcer_begins_3sec.mp3"
|
||||||
"builtin" "vo/announcer_begins_3sec.wav"
|
"builtin" "vo/announcer_begins_3sec.wav"
|
||||||
"event" "Announcer.RoundBegins3Seconds"
|
"event" "Announcer.RoundBegins3Seconds"
|
||||||
}
|
}
|
||||||
"4"
|
"4"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/announcer_begins_4sec.mp3"
|
"sound" "sourcemod/mapchooser/tf2/announcer_begins_4sec.mp3"
|
||||||
"builtin" "vo/announcer_begins_4sec.wav"
|
"builtin" "vo/announcer_begins_4sec.wav"
|
||||||
"event" "Announcer.RoundBegins4Seconds"
|
"event" "Announcer.RoundBegins4Seconds"
|
||||||
}
|
}
|
||||||
"5"
|
"5"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/announcer_begins_5sec.mp3"
|
"sound" "sourcemod/mapchooser/tf2/announcer_begins_5sec.mp3"
|
||||||
"builtin" "vo/announcer_begins_5sec.wav"
|
"builtin" "vo/announcer_begins_5sec.wav"
|
||||||
"event" "Announcer.RoundBegins5Seconds"
|
"event" "Announcer.RoundBegins5Seconds"
|
||||||
}
|
}
|
||||||
"10"
|
"10"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/announcer_dec_missionbegins10s01.mp3"
|
"sound" "sourcemod/mapchooser/tf2/announcer_dec_missionbegins10s01.mp3"
|
||||||
"builtin" "vo/announcer_dec_missionbegins10s01.wav"
|
"builtin" "vo/announcer_dec_missionbegins10s01.wav"
|
||||||
}
|
}
|
||||||
"30"
|
"30"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/announcer_dec_missionbegins30s01.mp3"
|
"sound" "sourcemod/mapchooser/tf2/announcer_dec_missionbegins30s01.mp3"
|
||||||
"builtin" "vo/announcer_dec_missionbegins30s01.wav"
|
"builtin" "vo/announcer_dec_missionbegins30s01.wav"
|
||||||
}
|
}
|
||||||
"60"
|
"60"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/announcer_dec_missionbegins60s06.mp3"
|
"sound" "sourcemod/mapchooser/tf2/announcer_dec_missionbegins60s06.mp3"
|
||||||
"builtin" "vo/announcer_dec_missionbegins60s06.wav"
|
"builtin" "vo/announcer_dec_missionbegins60s06.wav"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"vote start"
|
"vote start"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/vote_started.mp3"
|
"sound" "sourcemod/mapchooser/tf2/vote_started.mp3"
|
||||||
"event" "Vote.Created"
|
"event" "Vote.Created"
|
||||||
"builtin" "ui/vote_started.wav"
|
"builtin" "ui/vote_started.wav"
|
||||||
}
|
}
|
||||||
"vote end"
|
"vote end"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/vote_success.mp3"
|
"sound" "sourcemod/mapchooser/tf2/vote_success.mp3"
|
||||||
"event" "Vote.Passed"
|
"event" "Vote.Passed"
|
||||||
"builtin" "ui/vote_success.wav"
|
"builtin" "ui/vote_success.wav"
|
||||||
}
|
}
|
||||||
"vote warning"
|
"vote warning"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/announcer_dec_missionbegins60s03.mp3"
|
"sound" "sourcemod/mapchooser/tf2/announcer_dec_missionbegins60s03.mp3"
|
||||||
"builtin" "vo/announcer_dec_missionbegins60s03.wav"
|
"builtin" "vo/announcer_dec_missionbegins60s03.wav"
|
||||||
}
|
}
|
||||||
"runoff warning"
|
"runoff warning"
|
||||||
{
|
{
|
||||||
"sound" "sourcemod/mapchooser/tf2/vote_failure.mp3"
|
"sound" "sourcemod/mapchooser/tf2/vote_failure.mp3"
|
||||||
"event" "Vote.Failed"
|
"event" "Vote.Failed"
|
||||||
"builtin" "ui/vote_failure.wav"
|
"builtin" "ui/vote_failure.wav"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,108 +1,108 @@
|
|||||||
/**
|
/**
|
||||||
* vim: set ts=4 :
|
* vim: set ts=4 :
|
||||||
* =============================================================================
|
* =============================================================================
|
||||||
* MapChooser Extended
|
* MapChooser Extended
|
||||||
* Creates a map vote at appropriate times, setting sm_nextmap to the winning
|
* Creates a map vote at appropriate times, setting sm_nextmap to the winning
|
||||||
* vote
|
* vote
|
||||||
*
|
*
|
||||||
* MapChooser Extended (C)2011-2013 Powerlord (Ross Bemrose)
|
* MapChooser Extended (C)2011-2013 Powerlord (Ross Bemrose)
|
||||||
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved.
|
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved.
|
||||||
* =============================================================================
|
* =============================================================================
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it under
|
* This program is free software; you can redistribute it and/or modify it under
|
||||||
* the terms of the GNU General Public License, version 3.0, as published by the
|
* the terms of the GNU General Public License, version 3.0, as published by the
|
||||||
* Free Software Foundation.
|
* Free Software Foundation.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
* details.
|
* details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License along with
|
* You should have received a copy of the GNU General Public License along with
|
||||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* As a special exception, AlliedModders LLC gives you permission to link the
|
* As a special exception, AlliedModders LLC gives you permission to link the
|
||||||
* code of this program (as well as its derivative works) to "Half-Life 2," the
|
* code of this program (as well as its derivative works) to "Half-Life 2," the
|
||||||
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
|
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
|
||||||
* by the Valve Corporation. You must obey the GNU General Public License in
|
* by the Valve Corporation. You must obey the GNU General Public License in
|
||||||
* all respects for all other code used. Additionally, AlliedModders LLC grants
|
* all respects for all other code used. Additionally, AlliedModders LLC grants
|
||||||
* this exception to all derivative works. AlliedModders LLC defines further
|
* this exception to all derivative works. AlliedModders LLC defines further
|
||||||
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
|
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
|
||||||
* or <http://www.sourcemod.net/license.php>.
|
* or <http://www.sourcemod.net/license.php>.
|
||||||
*
|
*
|
||||||
* Version: $Id$
|
* Version: $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined _mapchooser_extended_included_
|
#if defined _mapchooser_extended_included_
|
||||||
#endinput
|
#endinput
|
||||||
#endif
|
#endif
|
||||||
#define _mapchooser_extended_included_
|
#define _mapchooser_extended_included_
|
||||||
#include <mapchooser>
|
#include <mapchooser>
|
||||||
|
|
||||||
// MCE 1.9 series
|
// MCE 1.9 series
|
||||||
|
|
||||||
enum CanNominateResult
|
enum CanNominateResult
|
||||||
{
|
{
|
||||||
CanNominate_No_VoteFull, /** No, nominations list is full */
|
CanNominate_No_VoteFull, /** No, nominations list is full */
|
||||||
CanNominate_No_VoteInProgress, /** No, map vote is in progress */
|
CanNominate_No_VoteInProgress, /** No, map vote is in progress */
|
||||||
CanNominate_No_VoteComplete, /** No, map vote is completed */
|
CanNominate_No_VoteComplete, /** No, map vote is completed */
|
||||||
CanNominate_Yes, /** Yes, you can nominate */
|
CanNominate_Yes, /** Yes, you can nominate */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called whenever warning timer starts
|
* Called whenever warning timer starts
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
forward OnMapVoteWarningStart();
|
forward OnMapVoteWarningStart();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called whenever runoff warning timer starts
|
* Called whenever runoff warning timer starts
|
||||||
*/
|
*/
|
||||||
forward OnMapVoteRunnoffWarningStart();
|
forward OnMapVoteRunnoffWarningStart();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called whenever the timer ticks
|
* Called whenever the timer ticks
|
||||||
*/
|
*/
|
||||||
forward OnMapVoteWarningTick(time);
|
forward OnMapVoteWarningTick(time);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called whenever vote starts
|
* Called whenever vote starts
|
||||||
*
|
*
|
||||||
* @deprecated Will be removed in MapChooser 1.8. Use OnMapVoteStarted instead.
|
* @deprecated Will be removed in MapChooser 1.8. Use OnMapVoteStarted instead.
|
||||||
*/
|
*/
|
||||||
forward OnMapVoteStart();
|
forward OnMapVoteStart();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called whenever vote ends
|
* Called whenever vote ends
|
||||||
*/
|
*/
|
||||||
forward OnMapVoteEnd(const String:map[]);
|
forward OnMapVoteEnd(const String:map[]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is a map on the current game's official list?
|
* Is a map on the current game's official list?
|
||||||
* This should be treated as informative only.
|
* This should be treated as informative only.
|
||||||
*
|
*
|
||||||
* @param map Name of map to check
|
* @param map Name of map to check
|
||||||
* @return true if it's on the list of official maps for this game
|
* @return true if it's on the list of official maps for this game
|
||||||
*/
|
*/
|
||||||
native bool:IsMapOfficial(const String:map[]);
|
native bool:IsMapOfficial(const String:map[]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is nominate allowed?
|
* Is nominate allowed?
|
||||||
*
|
*
|
||||||
* @return A CanNominateResult corresponding to whether a vote is allowed or not
|
* @return A CanNominateResult corresponding to whether a vote is allowed or not
|
||||||
*/
|
*/
|
||||||
native CanNominateResult:CanNominate();
|
native CanNominateResult:CanNominate();
|
||||||
|
|
||||||
native bool:ExcludeMap(const String:map[]);
|
native bool:ExcludeMap(const String:map[]);
|
||||||
|
|
||||||
public SharedPlugin:__pl_mapchooser_extended =
|
public SharedPlugin:__pl_mapchooser_extended =
|
||||||
{
|
{
|
||||||
name = "mapchooser",
|
name = "mapchooser",
|
||||||
file = "mapchooser_extended.smx",
|
file = "mapchooser_extended.smx",
|
||||||
#if defined REQUIRE_PLUGIN
|
#if defined REQUIRE_PLUGIN
|
||||||
required = 1,
|
required = 1,
|
||||||
#else
|
#else
|
||||||
required = 0,
|
required = 0,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,378 +1,378 @@
|
|||||||
/**
|
/**
|
||||||
* vim: set ts=4 :
|
* vim: set ts=4 :
|
||||||
* =============================================================================
|
* =============================================================================
|
||||||
* Rock The Vote Extended
|
* Rock The Vote Extended
|
||||||
* Creates a map vote when the required number of players have requested one.
|
* Creates a map vote when the required number of players have requested one.
|
||||||
*
|
*
|
||||||
* Rock The Vote Extended (C)2012-2013 Powerlord (Ross Bemrose)
|
* Rock The Vote Extended (C)2012-2013 Powerlord (Ross Bemrose)
|
||||||
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved.
|
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved.
|
||||||
* =============================================================================
|
* =============================================================================
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it under
|
* This program is free software; you can redistribute it and/or modify it under
|
||||||
* the terms of the GNU General Public License, version 3.0, as published by the
|
* the terms of the GNU General Public License, version 3.0, as published by the
|
||||||
* Free Software Foundation.
|
* Free Software Foundation.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
* details.
|
* details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License along with
|
* You should have received a copy of the GNU General Public License along with
|
||||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* As a special exception, AlliedModders LLC gives you permission to link the
|
* As a special exception, AlliedModders LLC gives you permission to link the
|
||||||
* code of this program (as well as its derivative works) to "Half-Life 2," the
|
* code of this program (as well as its derivative works) to "Half-Life 2," the
|
||||||
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
|
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
|
||||||
* by the Valve Corporation. You must obey the GNU General Public License in
|
* by the Valve Corporation. You must obey the GNU General Public License in
|
||||||
* all respects for all other code used. Additionally, AlliedModders LLC grants
|
* all respects for all other code used. Additionally, AlliedModders LLC grants
|
||||||
* this exception to all derivative works. AlliedModders LLC defines further
|
* this exception to all derivative works. AlliedModders LLC defines further
|
||||||
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
|
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
|
||||||
* or <http://www.sourcemod.net/license.php>.
|
* or <http://www.sourcemod.net/license.php>.
|
||||||
*
|
*
|
||||||
* Version: $Id$
|
* Version: $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sourcemod>
|
#include <sourcemod>
|
||||||
#include <sdktools>
|
#include <sdktools>
|
||||||
#include <sdkhooks>
|
#include <sdkhooks>
|
||||||
#include <mapchooser>
|
#include <mapchooser>
|
||||||
#include "include/mapchooser_extended"
|
#include "include/mapchooser_extended"
|
||||||
#include <nextmap>
|
#include <nextmap>
|
||||||
#include <colors>
|
#include <colors>
|
||||||
|
|
||||||
#pragma semicolon 1
|
#pragma semicolon 1
|
||||||
|
|
||||||
#define MCE_VERSION "1.10.0"
|
#define MCE_VERSION "1.10.0"
|
||||||
|
|
||||||
public Plugin:myinfo =
|
public Plugin:myinfo =
|
||||||
{
|
{
|
||||||
name = "Rock The Vote Extended",
|
name = "Rock The Vote Extended",
|
||||||
author = "Powerlord and AlliedModders LLC",
|
author = "Powerlord and AlliedModders LLC",
|
||||||
description = "Provides RTV Map Voting",
|
description = "Provides RTV Map Voting",
|
||||||
version = MCE_VERSION,
|
version = MCE_VERSION,
|
||||||
url = "https://forums.alliedmods.net/showthread.php?t=156974"
|
url = "https://forums.alliedmods.net/showthread.php?t=156974"
|
||||||
};
|
};
|
||||||
|
|
||||||
new Handle:g_Cvar_Needed = INVALID_HANDLE;
|
new Handle:g_Cvar_Needed = INVALID_HANDLE;
|
||||||
new Handle:g_Cvar_MinPlayers = INVALID_HANDLE;
|
new Handle:g_Cvar_MinPlayers = INVALID_HANDLE;
|
||||||
new Handle:g_Cvar_InitialDelay = INVALID_HANDLE;
|
new Handle:g_Cvar_InitialDelay = INVALID_HANDLE;
|
||||||
new Handle:g_Cvar_Interval = INVALID_HANDLE;
|
new Handle:g_Cvar_Interval = INVALID_HANDLE;
|
||||||
new Handle:g_Cvar_ChangeTime = INVALID_HANDLE;
|
new Handle:g_Cvar_ChangeTime = INVALID_HANDLE;
|
||||||
new Handle:g_Cvar_RTVPostVoteAction = INVALID_HANDLE;
|
new Handle:g_Cvar_RTVPostVoteAction = INVALID_HANDLE;
|
||||||
|
|
||||||
new bool:g_CanRTV = false; // True if RTV loaded maps and is active.
|
new bool:g_CanRTV = false; // True if RTV loaded maps and is active.
|
||||||
new bool:g_RTVAllowed = false; // True if RTV is available to players. Used to delay rtv votes.
|
new bool:g_RTVAllowed = false; // True if RTV is available to players. Used to delay rtv votes.
|
||||||
new g_Voters = 0; // Total voters connected. Doesn't include fake clients.
|
new g_Voters = 0; // Total voters connected. Doesn't include fake clients.
|
||||||
new g_Votes = 0; // Total number of "say rtv" votes
|
new g_Votes = 0; // Total number of "say rtv" votes
|
||||||
new g_VotesNeeded = 0; // Necessary votes before map vote begins. (voters * percent_needed)
|
new g_VotesNeeded = 0; // Necessary votes before map vote begins. (voters * percent_needed)
|
||||||
new bool:g_Voted[MAXPLAYERS+1] = {false, ...};
|
new bool:g_Voted[MAXPLAYERS+1] = {false, ...};
|
||||||
|
|
||||||
new bool:g_InChange = false;
|
new bool:g_InChange = false;
|
||||||
|
|
||||||
public OnPluginStart()
|
public OnPluginStart()
|
||||||
{
|
{
|
||||||
LoadTranslations("common.phrases");
|
LoadTranslations("common.phrases");
|
||||||
LoadTranslations("rockthevote.phrases");
|
LoadTranslations("rockthevote.phrases");
|
||||||
LoadTranslations("basevotes.phrases");
|
LoadTranslations("basevotes.phrases");
|
||||||
|
|
||||||
g_Cvar_Needed = CreateConVar("sm_rtv_needed", "0.60", "Percentage of players needed to rockthevote (Def 60%)", 0, true, 0.05, true, 1.0);
|
g_Cvar_Needed = CreateConVar("sm_rtv_needed", "0.60", "Percentage of players needed to rockthevote (Def 60%)", 0, true, 0.05, true, 1.0);
|
||||||
g_Cvar_MinPlayers = CreateConVar("sm_rtv_minplayers", "0", "Number of players required before RTV will be enabled.", 0, true, 0.0, true, float(MAXPLAYERS));
|
g_Cvar_MinPlayers = CreateConVar("sm_rtv_minplayers", "0", "Number of players required before RTV will be enabled.", 0, true, 0.0, true, float(MAXPLAYERS));
|
||||||
g_Cvar_InitialDelay = CreateConVar("sm_rtv_initialdelay", "30.0", "Time (in seconds) before first RTV can be held", 0, true, 0.00);
|
g_Cvar_InitialDelay = CreateConVar("sm_rtv_initialdelay", "30.0", "Time (in seconds) before first RTV can be held", 0, true, 0.00);
|
||||||
g_Cvar_Interval = CreateConVar("sm_rtv_interval", "240.0", "Time (in seconds) after a failed RTV before another can be held", 0, true, 0.00);
|
g_Cvar_Interval = CreateConVar("sm_rtv_interval", "240.0", "Time (in seconds) after a failed RTV before another can be held", 0, true, 0.00);
|
||||||
g_Cvar_ChangeTime = CreateConVar("sm_rtv_changetime", "0", "When to change the map after a succesful RTV: 0 - Instant, 1 - RoundEnd, 2 - MapEnd", _, true, 0.0, true, 2.0);
|
g_Cvar_ChangeTime = CreateConVar("sm_rtv_changetime", "0", "When to change the map after a succesful RTV: 0 - Instant, 1 - RoundEnd, 2 - MapEnd", _, true, 0.0, true, 2.0);
|
||||||
g_Cvar_RTVPostVoteAction = CreateConVar("sm_rtv_postvoteaction", "0", "What to do with RTV's after a mapvote has completed. 0 - Allow, success = instant change, 1 - Deny", _, true, 0.0, true, 1.0);
|
g_Cvar_RTVPostVoteAction = CreateConVar("sm_rtv_postvoteaction", "0", "What to do with RTV's after a mapvote has completed. 0 - Allow, success = instant change, 1 - Deny", _, true, 0.0, true, 1.0);
|
||||||
|
|
||||||
HookEvent("player_team", OnPlayerChangedTeam);
|
HookEvent("player_team", OnPlayerChangedTeam);
|
||||||
|
|
||||||
RegConsoleCmd("say", Command_Say);
|
RegConsoleCmd("say", Command_Say);
|
||||||
RegConsoleCmd("say_team", Command_Say);
|
RegConsoleCmd("say_team", Command_Say);
|
||||||
|
|
||||||
RegConsoleCmd("sm_rtv", Command_RTV);
|
RegConsoleCmd("sm_rtv", Command_RTV);
|
||||||
|
|
||||||
RegAdminCmd("sm_forcertv", Command_ForceRTV, ADMFLAG_CHANGEMAP, "Force an RTV vote");
|
RegAdminCmd("sm_forcertv", Command_ForceRTV, ADMFLAG_CHANGEMAP, "Force an RTV vote");
|
||||||
RegAdminCmd("mce_forcertv", Command_ForceRTV, ADMFLAG_CHANGEMAP, "Force an RTV vote");
|
RegAdminCmd("mce_forcertv", Command_ForceRTV, ADMFLAG_CHANGEMAP, "Force an RTV vote");
|
||||||
|
|
||||||
// Rock The Vote Extended cvars
|
// Rock The Vote Extended cvars
|
||||||
CreateConVar("rtve_version", MCE_VERSION, "Rock The Vote Extended Version", FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD);
|
CreateConVar("rtve_version", MCE_VERSION, "Rock The Vote Extended Version", FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD);
|
||||||
|
|
||||||
AutoExecConfig(true, "rtv");
|
AutoExecConfig(true, "rtv");
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnMapStart()
|
public OnMapStart()
|
||||||
{
|
{
|
||||||
g_Voters = 0;
|
g_Voters = 0;
|
||||||
g_Votes = 0;
|
g_Votes = 0;
|
||||||
g_VotesNeeded = 0;
|
g_VotesNeeded = 0;
|
||||||
g_InChange = false;
|
g_InChange = false;
|
||||||
|
|
||||||
/* Handle late load */
|
/* Handle late load */
|
||||||
for (new i=1; i<=MaxClients; i++)
|
for (new i=1; i<=MaxClients; i++)
|
||||||
{
|
{
|
||||||
if (IsClientConnected(i))
|
if (IsClientConnected(i))
|
||||||
{
|
{
|
||||||
OnClientConnected(i);
|
OnClientConnected(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnMapEnd()
|
public OnMapEnd()
|
||||||
{
|
{
|
||||||
g_CanRTV = false;
|
g_CanRTV = false;
|
||||||
g_RTVAllowed = false;
|
g_RTVAllowed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnConfigsExecuted()
|
public OnConfigsExecuted()
|
||||||
{
|
{
|
||||||
g_CanRTV = true;
|
g_CanRTV = true;
|
||||||
g_RTVAllowed = false;
|
g_RTVAllowed = false;
|
||||||
CreateTimer(GetConVarFloat(g_Cvar_InitialDelay), Timer_DelayRTV, _, TIMER_FLAG_NO_MAPCHANGE);
|
CreateTimer(GetConVarFloat(g_Cvar_InitialDelay), Timer_DelayRTV, _, TIMER_FLAG_NO_MAPCHANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnClientConnected(client)
|
public OnClientConnected(client)
|
||||||
{
|
{
|
||||||
if(IsFakeClient(client))
|
if(IsFakeClient(client))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
g_Voted[client] = false;
|
g_Voted[client] = false;
|
||||||
|
|
||||||
g_Voters = GetTeamClientCount(2) + GetTeamClientCount(3);
|
g_Voters = GetTeamClientCount(2) + GetTeamClientCount(3);
|
||||||
g_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
|
g_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnClientDisconnect(client)
|
public OnClientDisconnect(client)
|
||||||
{
|
{
|
||||||
if(IsFakeClient(client))
|
if(IsFakeClient(client))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(g_Voted[client])
|
if(g_Voted[client])
|
||||||
{
|
{
|
||||||
g_Votes--;
|
g_Votes--;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_Voters = GetTeamClientCount(2) + GetTeamClientCount(3);
|
g_Voters = GetTeamClientCount(2) + GetTeamClientCount(3);
|
||||||
|
|
||||||
g_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
|
g_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
|
||||||
|
|
||||||
if (!g_CanRTV)
|
if (!g_CanRTV)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_Votes &&
|
if (g_Votes &&
|
||||||
g_Voters &&
|
g_Voters &&
|
||||||
g_Votes >= g_VotesNeeded &&
|
g_Votes >= g_VotesNeeded &&
|
||||||
g_RTVAllowed )
|
g_RTVAllowed )
|
||||||
{
|
{
|
||||||
if (GetConVarInt(g_Cvar_RTVPostVoteAction) == 1 && HasEndOfMapVoteFinished())
|
if (GetConVarInt(g_Cvar_RTVPostVoteAction) == 1 && HasEndOfMapVoteFinished())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
StartRTV();
|
StartRTV();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnPlayerChangedTeam(Handle:event, const String:name[], bool:dontBroadcast)
|
public OnPlayerChangedTeam(Handle:event, const String:name[], bool:dontBroadcast)
|
||||||
{
|
{
|
||||||
new Client = GetClientOfUserId(GetEventInt(event, "userid"));
|
new Client = GetClientOfUserId(GetEventInt(event, "userid"));
|
||||||
|
|
||||||
if(IsFakeClient(Client))
|
if(IsFakeClient(Client))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(Client == 0)
|
if(Client == 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsClientInGame(Client) && IsClientConnected(Client))
|
if (IsClientInGame(Client) && IsClientConnected(Client))
|
||||||
{
|
{
|
||||||
if (GetClientTeam(Client) == 1)
|
if (GetClientTeam(Client) == 1)
|
||||||
{
|
{
|
||||||
g_Voters = GetTeamClientCount(2) + GetTeamClientCount(3);
|
g_Voters = GetTeamClientCount(2) + GetTeamClientCount(3);
|
||||||
g_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
|
g_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
|
||||||
|
|
||||||
if (g_Votes &&
|
if (g_Votes &&
|
||||||
g_Voters &&
|
g_Voters &&
|
||||||
g_Votes >= g_VotesNeeded &&
|
g_Votes >= g_VotesNeeded &&
|
||||||
g_RTVAllowed )
|
g_RTVAllowed )
|
||||||
{
|
{
|
||||||
if (GetConVarInt(g_Cvar_RTVPostVoteAction) == 1 && HasEndOfMapVoteFinished())
|
if (GetConVarInt(g_Cvar_RTVPostVoteAction) == 1 && HasEndOfMapVoteFinished())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
StartRTV();
|
StartRTV();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action:Command_RTV(client, args)
|
public Action:Command_RTV(client, args)
|
||||||
{
|
{
|
||||||
if (!g_CanRTV || !client)
|
if (!g_CanRTV || !client)
|
||||||
{
|
{
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
AttemptRTV(client);
|
AttemptRTV(client);
|
||||||
|
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action:Command_Say(client, args)
|
public Action:Command_Say(client, args)
|
||||||
{
|
{
|
||||||
if (!g_CanRTV || !client)
|
if (!g_CanRTV || !client)
|
||||||
{
|
{
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
decl String:text[192];
|
decl String:text[192];
|
||||||
if (!GetCmdArgString(text, sizeof(text)))
|
if (!GetCmdArgString(text, sizeof(text)))
|
||||||
{
|
{
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
new startidx = 0;
|
new startidx = 0;
|
||||||
if(text[strlen(text)-1] == '"')
|
if(text[strlen(text)-1] == '"')
|
||||||
{
|
{
|
||||||
text[strlen(text)-1] = '\0';
|
text[strlen(text)-1] = '\0';
|
||||||
startidx = 1;
|
startidx = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
new ReplySource:old = SetCmdReplySource(SM_REPLY_TO_CHAT);
|
new ReplySource:old = SetCmdReplySource(SM_REPLY_TO_CHAT);
|
||||||
|
|
||||||
if (strcmp(text[startidx], "rtv", false) == 0 || strcmp(text[startidx], "rockthevote", false) == 0)
|
if (strcmp(text[startidx], "rtv", false) == 0 || strcmp(text[startidx], "rockthevote", false) == 0)
|
||||||
{
|
{
|
||||||
AttemptRTV(client);
|
AttemptRTV(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetCmdReplySource(old);
|
SetCmdReplySource(old);
|
||||||
|
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
AttemptRTV(client)
|
AttemptRTV(client)
|
||||||
{
|
{
|
||||||
if (!g_RTVAllowed || (GetConVarInt(g_Cvar_RTVPostVoteAction) == 1 && HasEndOfMapVoteFinished()))
|
if (!g_RTVAllowed || (GetConVarInt(g_Cvar_RTVPostVoteAction) == 1 && HasEndOfMapVoteFinished()))
|
||||||
{
|
{
|
||||||
CReplyToCommand(client, "[SM] %t", "RTV Not Allowed");
|
CReplyToCommand(client, "[SM] %t", "RTV Not Allowed");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!CanMapChooserStartVote())
|
if (!CanMapChooserStartVote())
|
||||||
{
|
{
|
||||||
CReplyToCommand(client, "[SM] %t", "RTV Started");
|
CReplyToCommand(client, "[SM] %t", "RTV Started");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetClientCount(true) < GetConVarInt(g_Cvar_MinPlayers))
|
if (GetClientCount(true) < GetConVarInt(g_Cvar_MinPlayers))
|
||||||
{
|
{
|
||||||
CReplyToCommand(client, "[SM] %t", "Minimal Players Not Met");
|
CReplyToCommand(client, "[SM] %t", "Minimal Players Not Met");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_Voted[client])
|
if (g_Voted[client])
|
||||||
{
|
{
|
||||||
CReplyToCommand(client, "[SM] %t", "Already Voted", g_Votes, g_VotesNeeded);
|
CReplyToCommand(client, "[SM] %t", "Already Voted", g_Votes, g_VotesNeeded);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
new String:name[MAX_NAME_LENGTH];
|
new String:name[MAX_NAME_LENGTH];
|
||||||
GetClientName(client, name, sizeof(name));
|
GetClientName(client, name, sizeof(name));
|
||||||
|
|
||||||
g_Votes++;
|
g_Votes++;
|
||||||
g_Voted[client] = true;
|
g_Voted[client] = true;
|
||||||
|
|
||||||
CPrintToChatAll("[SM] %t", "RTV Requested", name, g_Votes, g_VotesNeeded);
|
CPrintToChatAll("[SM] %t", "RTV Requested", name, g_Votes, g_VotesNeeded);
|
||||||
|
|
||||||
if (g_Votes >= g_VotesNeeded)
|
if (g_Votes >= g_VotesNeeded)
|
||||||
{
|
{
|
||||||
StartRTV();
|
StartRTV();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action:Timer_DelayRTV(Handle:timer)
|
public Action:Timer_DelayRTV(Handle:timer)
|
||||||
{
|
{
|
||||||
g_RTVAllowed = true;
|
g_RTVAllowed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
StartRTV()
|
StartRTV()
|
||||||
{
|
{
|
||||||
if (g_InChange)
|
if (g_InChange)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EndOfMapVoteEnabled() && HasEndOfMapVoteFinished())
|
if (EndOfMapVoteEnabled() && HasEndOfMapVoteFinished())
|
||||||
{
|
{
|
||||||
/* Change right now then */
|
/* Change right now then */
|
||||||
new String:map[PLATFORM_MAX_PATH];
|
new String:map[PLATFORM_MAX_PATH];
|
||||||
if (GetNextMap(map, sizeof(map)))
|
if (GetNextMap(map, sizeof(map)))
|
||||||
{
|
{
|
||||||
CPrintToChatAll("[SM] %t", "Changing Maps", map);
|
CPrintToChatAll("[SM] %t", "Changing Maps", map);
|
||||||
CreateTimer(5.0, Timer_ChangeMap, _, TIMER_FLAG_NO_MAPCHANGE);
|
CreateTimer(5.0, Timer_ChangeMap, _, TIMER_FLAG_NO_MAPCHANGE);
|
||||||
g_InChange = true;
|
g_InChange = true;
|
||||||
|
|
||||||
ResetRTV();
|
ResetRTV();
|
||||||
|
|
||||||
g_RTVAllowed = false;
|
g_RTVAllowed = false;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CanMapChooserStartVote())
|
if (CanMapChooserStartVote())
|
||||||
{
|
{
|
||||||
new MapChange:when = MapChange:GetConVarInt(g_Cvar_ChangeTime);
|
new MapChange:when = MapChange:GetConVarInt(g_Cvar_ChangeTime);
|
||||||
InitiateMapChooserVote(when);
|
InitiateMapChooserVote(when);
|
||||||
|
|
||||||
ResetRTV();
|
ResetRTV();
|
||||||
|
|
||||||
g_RTVAllowed = false;
|
g_RTVAllowed = false;
|
||||||
CreateTimer(GetConVarFloat(g_Cvar_Interval), Timer_DelayRTV, _, TIMER_FLAG_NO_MAPCHANGE);
|
CreateTimer(GetConVarFloat(g_Cvar_Interval), Timer_DelayRTV, _, TIMER_FLAG_NO_MAPCHANGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetRTV()
|
ResetRTV()
|
||||||
{
|
{
|
||||||
g_Votes = 0;
|
g_Votes = 0;
|
||||||
|
|
||||||
for (new i=1; i<=MAXPLAYERS; i++)
|
for (new i=1; i<=MAXPLAYERS; i++)
|
||||||
{
|
{
|
||||||
g_Voted[i] = false;
|
g_Voted[i] = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action:Timer_ChangeMap(Handle:hTimer)
|
public Action:Timer_ChangeMap(Handle:hTimer)
|
||||||
{
|
{
|
||||||
g_InChange = false;
|
g_InChange = false;
|
||||||
|
|
||||||
LogMessage("RTV changing map manually");
|
LogMessage("RTV changing map manually");
|
||||||
|
|
||||||
new String:map[PLATFORM_MAX_PATH];
|
new String:map[PLATFORM_MAX_PATH];
|
||||||
if (GetNextMap(map, sizeof(map)))
|
if (GetNextMap(map, sizeof(map)))
|
||||||
{
|
{
|
||||||
ForceChangeLevel(map, "RTV after mapvote");
|
ForceChangeLevel(map, "RTV after mapvote");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Plugin_Stop;
|
return Plugin_Stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rock The Vote Extended functions
|
// Rock The Vote Extended functions
|
||||||
|
|
||||||
public Action:Command_ForceRTV(client, args)
|
public Action:Command_ForceRTV(client, args)
|
||||||
{
|
{
|
||||||
if (!g_CanRTV || !client)
|
if (!g_CanRTV || !client)
|
||||||
{
|
{
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowActivity2(client, "[RTVE] ", "%t", "Initiated Vote Map");
|
ShowActivity2(client, "[RTVE] ", "%t", "Initiated Vote Map");
|
||||||
|
|
||||||
StartRTV();
|
StartRTV();
|
||||||
|
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
||||||
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
@ -1,43 +1,43 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"chi" "下一幅地图投票了!"
|
"chi" "下一幅地图投票了!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"chi" "下一幅地图投选已开始."
|
"chi" "下一幅地图投选已开始."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"chi" " 地图投票已结束. 下一幅地图将为 {1}. ( 得票{2}%% , {3}票)"
|
"chi" " 地图投票已结束. 下一幅地图将为 {1}. ( 得票{2}%% , {3}票)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"chi" "当前地图已被延长."
|
"chi" "当前地图已被延长."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"chi" "延长当前地图"
|
"chi" "延长当前地图"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"chi" "请勿更换"
|
"chi" "请勿更换"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"chi" "当前地图已被延长! 投票显示! (得票 {1}%% 共 {2} 票)"
|
"chi" "当前地图已被延长! 投票显示! (得票 {1}%% 共 {2} 票)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"chi" "更换下一幅地图为 \"{1}\"."
|
"chi" "更换下一幅地图为 \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
||||||
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
@ -1,43 +1,43 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"cze" "Hlasujte o příští mapě!"
|
"cze" "Hlasujte o příští mapě!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"cze" "Hlasování o příští mapě začalo."
|
"cze" "Hlasování o příští mapě začalo."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"cze" "Hlasování o mapě skončilo. Příští mapou bude {1}. (Obdržela {2}%% z {3} hlasů)"
|
"cze" "Hlasování o mapě skončilo. Příští mapou bude {1}. (Obdržela {2}%% z {3} hlasů)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"cze" "Současná mapa byla prodloužena. (Obdržela {1}%% z {2} hlasů)"
|
"cze" "Současná mapa byla prodloužena. (Obdržela {1}%% z {2} hlasů)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"cze" "Prodloužit současnou mapu"
|
"cze" "Prodloužit současnou mapu"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"cze" "Neměnit"
|
"cze" "Neměnit"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"cze" "Současná mapa pokračuje! Hlasování rozhodlo! (Obdržela {1}%% z {2} hlasů)"
|
"cze" "Současná mapa pokračuje! Hlasování rozhodlo! (Obdržela {1}%% z {2} hlasů)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"cze" "Změnil příští mapu na \"{1}\"."
|
"cze" "Změnil příští mapu na \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
||||||
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
@ -1,43 +1,43 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"da" "Stem om næste bane!"
|
"da" "Stem om næste bane!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"da" "Afstemning for næste bane er begyndt."
|
"da" "Afstemning for næste bane er begyndt."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"da" "Bane afstemning er fuldført. Den næste bane vil være {1}. (Modtog {2}%% af {3} stemmer) "
|
"da" "Bane afstemning er fuldført. Den næste bane vil være {1}. (Modtog {2}%% af {3} stemmer) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"da" "Den nuværende bane er blevet forlænget. (Modtog {1}%% af {2} stemmer) "
|
"da" "Den nuværende bane er blevet forlænget. (Modtog {1}%% af {2} stemmer) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"da" "Forlæng bane"
|
"da" "Forlæng bane"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"da" "Skift ikke!"
|
"da" "Skift ikke!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"da" "Den aktuelle bane fortsætter! Afstemningen har talt! (Modtog {1}%% af {2} stemmer)"
|
"da" "Den aktuelle bane fortsætter! Afstemningen har talt! (Modtog {1}%% af {2} stemmer)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"da" "Skiftede næste bane til \"{1}'."
|
"da" "Skiftede næste bane til \"{1}'."
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,98 +1,98 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"de" "Stimme für die nächste Karte!"
|
"de" "Stimme für die nächste Karte!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"de" "Abstimmung für die nächste Karte wurde gestartet."
|
"de" "Abstimmung für die nächste Karte wurde gestartet."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"de" "Karten-Abstimmung wurde abgeschlossen. Nächste Karte wird {1} sein. ({2}%% von {3} Stimmen erhalten) "
|
"de" "Karten-Abstimmung wurde abgeschlossen. Nächste Karte wird {1} sein. ({2}%% von {3} Stimmen erhalten) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"de" "Die aktuelle Karte wurde verlängert. ({1}%% von {2} Stimmen erhalten) "
|
"de" "Die aktuelle Karte wurde verlängert. ({1}%% von {2} Stimmen erhalten) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"de" "Verlängere aktuelle Karte"
|
"de" "Verlängere aktuelle Karte"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"de" "Nicht wechseln"
|
"de" "Nicht wechseln"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"de" "Aktuelle Karte geht weiter! Die Abstimmung hat entschieden! ({1}%% von {2} Stimmen erhalten) "
|
"de" "Aktuelle Karte geht weiter! Die Abstimmung hat entschieden! ({1}%% von {2} Stimmen erhalten) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"de" "Nächste Karte wurde auf \"{1}\" geändert. "
|
"de" "Nächste Karte wurde auf \"{1}\" geändert. "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Runoff Vote Nextmap"
|
"Runoff Vote Nextmap"
|
||||||
{
|
{
|
||||||
"de" "Stichwahl für die nächste Karte!"
|
"de" "Stichwahl für die nächste Karte!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Number Of Votes"
|
"Number Of Votes"
|
||||||
{
|
{
|
||||||
"de" "Anzahl der Stimmen"
|
"de" "Anzahl der Stimmen"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom"
|
"Custom"
|
||||||
{
|
{
|
||||||
"de" "{1} (nicht vorhanden)"
|
"de" "{1} (nicht vorhanden)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Is Needed"
|
"Revote Is Needed"
|
||||||
{
|
{
|
||||||
"de" "Keine Karte hat mehr als {1}%% der Stimmen.\nEine neue Abstimmung ist erforderlich!"
|
"de" "Keine Karte hat mehr als {1}%% der Stimmen.\nEine neue Abstimmung ist erforderlich!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Warning"
|
"Revote Warning"
|
||||||
{
|
{
|
||||||
"de" "Stichwahl startet in: {1} Sekunden"
|
"de" "Stichwahl startet in: {1} Sekunden"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Vote Warning"
|
"Vote Warning"
|
||||||
{
|
{
|
||||||
"de" "Achtung! Die Abstimmung für die nächste Karte startet in: {1} Sekunden"
|
"de" "Achtung! Die Abstimmung für die nächste Karte startet in: {1} Sekunden"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line One"
|
"Line One"
|
||||||
{
|
{
|
||||||
"de" "Überlegen Sie, welche Karte Sie spielen möchten ..."
|
"de" "Überlegen Sie, welche Karte Sie spielen möchten ..."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line Two"
|
"Line Two"
|
||||||
{
|
{
|
||||||
"de" "... und nicht unüberlegt wählen!"
|
"de" "... und nicht unüberlegt wählen!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Cannot Start Vote"
|
"Cannot Start Vote"
|
||||||
{
|
{
|
||||||
"de" "Abstimmung ist bereits im Gange. Versuch Sie es erneut in {1} Sekunden"
|
"de" "Abstimmung ist bereits im Gange. Versuch Sie es erneut in {1} Sekunden"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Tie Vote"
|
"Tie Vote"
|
||||||
{
|
{
|
||||||
"de" "Die Top-{1} Karten haben gleich viele Stimmen!.\nEine neue Abstimmung ist erforderlich!"
|
"de" "Die Top-{1} Karten haben gleich viele Stimmen!.\nEine neue Abstimmung ist erforderlich!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom Marked"
|
"Custom Marked"
|
||||||
{
|
{
|
||||||
"de" "*{1}"
|
"de" "*{1}"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,92 +1,92 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"es" "Vota para el siguiente mapa!"
|
"es" "Vota para el siguiente mapa!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"es" "La votacion para el siguiente mapa ha comenzado."
|
"es" "La votacion para el siguiente mapa ha comenzado."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"es" "Votacion de Mapa finalizado. El siguiente mapa sera {1}. (Recibidos {2}%% de {3} votos)"
|
"es" "Votacion de Mapa finalizado. El siguiente mapa sera {1}. (Recibidos {2}%% de {3} votos)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"es" "El mapa actual ha sido extendido. (Recibidos {1}%% de {2} votos)"
|
"es" "El mapa actual ha sido extendido. (Recibidos {1}%% de {2} votos)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"es" "Extender mapa actual"
|
"es" "Extender mapa actual"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"es" "No cambiar"
|
"es" "No cambiar"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"es" "El mapa actual continua! La votacion ha hablado! (Recibidos {1}%% de {2} votos)"
|
"es" "El mapa actual continua! La votacion ha hablado! (Recibidos {1}%% de {2} votos)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"es" "El siguiente mapa ha cambiado a \"{1}\"."
|
"es" "El siguiente mapa ha cambiado a \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Runoff Vote Nextmap"
|
"Runoff Vote Nextmap"
|
||||||
{
|
{
|
||||||
"es" "Hacer votacion para el siguiente mapa!"
|
"es" "Hacer votacion para el siguiente mapa!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Number Of Votes"
|
"Number Of Votes"
|
||||||
{
|
{
|
||||||
"es" "Numero de Votaciones"
|
"es" "Numero de Votaciones"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom"
|
"Custom"
|
||||||
{
|
{
|
||||||
"es" "{1} (Custom)"
|
"es" "{1} (Custom)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Is Needed"
|
"Revote Is Needed"
|
||||||
{
|
{
|
||||||
"es" "No hay ningun mapa que haya recibido el {1}%% de votaciones.\nEntonces, que mapa ganara? Es necesario otra votacion!"
|
"es" "No hay ningun mapa que haya recibido el {1}%% de votaciones.\nEntonces, que mapa ganara? Es necesario otra votacion!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Warning"
|
"Revote Warning"
|
||||||
{
|
{
|
||||||
"es" "La votacion empezara en: {1}s"
|
"es" "La votacion empezara en: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Vote Warning"
|
"Vote Warning"
|
||||||
{
|
{
|
||||||
"es" "Atencion! La votacion para el siguiente mapa se iniciara en: {1}s"
|
"es" "Atencion! La votacion para el siguiente mapa se iniciara en: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line One"
|
"Line One"
|
||||||
{
|
{
|
||||||
"es" "Considera que mapa quieres jugar..."
|
"es" "Considera que mapa quieres jugar..."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line Two"
|
"Line Two"
|
||||||
{
|
{
|
||||||
"es" "...y no pulse los botones sin pensar ;-)"
|
"es" "...y no pulse los botones sin pensar ;-)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Cannot Start Vote"
|
"Cannot Start Vote"
|
||||||
{
|
{
|
||||||
"es" "Votacion ya iniciada. Intentando de nuevo en {1}s."
|
"es" "Votacion ya iniciada. Intentando de nuevo en {1}s."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Tie Vote"
|
"Tie Vote"
|
||||||
{
|
{
|
||||||
"es" "El top {1} de mapas tienen el mismo numero de votaciones.\nSe necesita una nueva votacion!"
|
"es" "El top {1} de mapas tienen el mismo numero de votaciones.\nSe necesita una nueva votacion!"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,87 +1,87 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"fr" "Voter pour la prochaine map!"
|
"fr" "Voter pour la prochaine map!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"fr" "Voter pour la prochaine map est lancer."
|
"fr" "Voter pour la prochaine map est lancer."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"fr" "Le VoteMap est terminer. La prochaine map sera {1}. (Reçu {2}%% sur {3} votes)"
|
"fr" "Le VoteMap est terminer. La prochaine map sera {1}. (Reçu {2}%% sur {3} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"fr" "La map actuelle a été prolonger. (Reçu {1}%% sur {2} votes)"
|
"fr" "La map actuelle a été prolonger. (Reçu {1}%% sur {2} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"fr" "Prolonger la map"
|
"fr" "Prolonger la map"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"fr" "Ne pas changer"
|
"fr" "Ne pas changer"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"fr" "La map continue! Le vote a tranché! (Reçu {1}%% sur {2} votes)"
|
"fr" "La map continue! Le vote a tranché! (Reçu {1}%% sur {2} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"fr" "La map suivante sera \"{1}\"."
|
"fr" "La map suivante sera \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Runoff Vote Nextmap"
|
"Runoff Vote Nextmap"
|
||||||
{
|
{
|
||||||
"fr" "Votez a nouveau pour la prochaine Map!"
|
"fr" "Votez a nouveau pour la prochaine Map!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Number Of Votes"
|
"Number Of Votes"
|
||||||
{
|
{
|
||||||
"fr" "Nombres de votes"
|
"fr" "Nombres de votes"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom"
|
"Custom"
|
||||||
{
|
{
|
||||||
"fr" "{1} (Custom)"
|
"fr" "{1} (Custom)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Is Needed"
|
"Revote Is Needed"
|
||||||
{
|
{
|
||||||
"fr" "Aucune map n'a reçu plus de {1}%% du vote.\nAlors, quels maps va gagner? Un nouveau vote va être lancé!"
|
"fr" "Aucune map n'a reçu plus de {1}%% du vote.\nAlors, quels maps va gagner? Un nouveau vote va être lancé!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Warning"
|
"Revote Warning"
|
||||||
{
|
{
|
||||||
"fr" "Un nouveau vote commence dans: {1}s"
|
"fr" "Un nouveau vote commence dans: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Vote Warning"
|
"Vote Warning"
|
||||||
{
|
{
|
||||||
"fr" "Attention! Le vote pour la prochaine map commence dans: {1}s"
|
"fr" "Attention! Le vote pour la prochaine map commence dans: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line One"
|
"Line One"
|
||||||
{
|
{
|
||||||
"fr" "Voter pour la map que vous voulez jouer..."
|
"fr" "Voter pour la map que vous voulez jouer..."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line Two"
|
"Line Two"
|
||||||
{
|
{
|
||||||
"fr" "...et ne pas cliquez sur une touche comme un con ;-)"
|
"fr" "...et ne pas cliquez sur une touche comme un con ;-)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Cannot Start Vote"
|
"Cannot Start Vote"
|
||||||
{
|
{
|
||||||
"fr" "Vote déjà en cours. Reassayer dans {1}s."
|
"fr" "Vote déjà en cours. Reassayer dans {1}s."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,92 +1,92 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"fr" "Votez pour la prochaine map!"
|
"fr" "Votez pour la prochaine map!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"fr" "Le vote pour la prochaine map est lancé."
|
"fr" "Le vote pour la prochaine map est lancé."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"fr" "Le VoteMap est terminé. La prochaine map sera {1}. (Reçu {2}%% sur {3} votes)"
|
"fr" "Le VoteMap est terminé. La prochaine map sera {1}. (Reçu {2}%% sur {3} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"fr" "La map actuelle a été prolongée. (Reçu {1}%% sur {2} votes)"
|
"fr" "La map actuelle a été prolongée. (Reçu {1}%% sur {2} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"fr" "Prolonger la map"
|
"fr" "Prolonger la map"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"fr" "Ne pas changer"
|
"fr" "Ne pas changer"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"fr" "La map continue! Le vote a tranché! (Reçu {1}%% sur {2} votes)"
|
"fr" "La map continue! Le vote a tranché! (Reçu {1}%% sur {2} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"fr" "La map suivante sera \"{1}\"."
|
"fr" "La map suivante sera \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Runoff Vote Nextmap"
|
"Runoff Vote Nextmap"
|
||||||
{
|
{
|
||||||
"fr" "Votez à nouveau pour la prochaine Map!"
|
"fr" "Votez à nouveau pour la prochaine Map!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Number Of Votes"
|
"Number Of Votes"
|
||||||
{
|
{
|
||||||
"fr" "Nombres de votes"
|
"fr" "Nombres de votes"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom"
|
"Custom"
|
||||||
{
|
{
|
||||||
"fr" "{1} (Custom)"
|
"fr" "{1} (Custom)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Is Needed"
|
"Revote Is Needed"
|
||||||
{
|
{
|
||||||
"fr" "Aucune map n'a reçu plus de {1}%% du vote.\nAlors, quelle map va gagner? Un nouveau vote va être lancé!"
|
"fr" "Aucune map n'a reçu plus de {1}%% du vote.\nAlors, quelle map va gagner? Un nouveau vote va être lancé!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Warning"
|
"Revote Warning"
|
||||||
{
|
{
|
||||||
"fr" "Un nouveau vote commence dans: {1}s"
|
"fr" "Un nouveau vote commence dans: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Vote Warning"
|
"Vote Warning"
|
||||||
{
|
{
|
||||||
"fr" "Attention! Le vote pour la prochaine map commence dans: {1}s"
|
"fr" "Attention! Le vote pour la prochaine map commence dans: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line One"
|
"Line One"
|
||||||
{
|
{
|
||||||
"fr" "Votez pour la map que vous voulez jouer..."
|
"fr" "Votez pour la map que vous voulez jouer..."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line Two"
|
"Line Two"
|
||||||
{
|
{
|
||||||
"fr" "...et n'appuyez pas sur une touche comme un con ;-)"
|
"fr" "...et n'appuyez pas sur une touche comme un con ;-)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Cannot Start Vote"
|
"Cannot Start Vote"
|
||||||
{
|
{
|
||||||
"fr" "Vote déjà en cours. Reassayez dans {1}s."
|
"fr" "Vote déjà en cours. Reassayez dans {1}s."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Tie Vote"
|
"Tie Vote"
|
||||||
{
|
{
|
||||||
"fr" "{1} maps ont eu un même nombre de voix.\nUn nouveau vote est nécessaire!"
|
"fr" "{1} maps ont eu un même nombre de voix.\nUn nouveau vote est nécessaire!"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,2 +1,2 @@
|
|||||||
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
||||||
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
@ -1,43 +1,43 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"hu" "Mi legyen a következő pálya?"
|
"hu" "Mi legyen a következő pálya?"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"hu" "Palyavalaszto szavazas elindult!"
|
"hu" "Palyavalaszto szavazas elindult!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"hu" "A szavazás lezárult. A következő pálya a {1} lesz"
|
"hu" "A szavazás lezárult. A következő pálya a {1} lesz"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"hu" "Az aktualis palya meghosszabitva."
|
"hu" "Az aktualis palya meghosszabitva."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"hu" "Palya meghosszabitasa"
|
"hu" "Palya meghosszabitasa"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"hu" "Ne valtsunk!"
|
"hu" "Ne valtsunk!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"hu" "Jelenlegi palya folytatodik."
|
"hu" "Jelenlegi palya folytatodik."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"hu" "\"{1}\" lesz a kovetkezo palya"
|
"hu" "\"{1}\" lesz a kovetkezo palya"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,92 +1,92 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"it" "Vota per la prossima mappa!"
|
"it" "Vota per la prossima mappa!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"it" "Le votazione per scegliere la prossima mappa sono iniziate."
|
"it" "Le votazione per scegliere la prossima mappa sono iniziate."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"it" "Le votazioni sono terminate. La prossima mappa sarà {1}. (Con {2}%% su {3} votes)"
|
"it" "Le votazioni sono terminate. La prossima mappa sarà {1}. (Con {2}%% su {3} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"it" "La mappa attuale è stata estesa. (Con {1}%% su {2} votes)"
|
"it" "La mappa attuale è stata estesa. (Con {1}%% su {2} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"it" "Estendi la mappa corrente"
|
"it" "Estendi la mappa corrente"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"it" "Non cambiare"
|
"it" "Non cambiare"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"it" "La mappa continua! Il voto ha parlato! (Con {1}%% su {2} votes)"
|
"it" "La mappa continua! Il voto ha parlato! (Con {1}%% su {2} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"it" "La mappa successiva sarà \"{1}\"."
|
"it" "La mappa successiva sarà \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Runoff Vote Nextmap"
|
"Runoff Vote Nextmap"
|
||||||
{
|
{
|
||||||
"it" "Vota nuovamente per scegliere la prossima mappa!"
|
"it" "Vota nuovamente per scegliere la prossima mappa!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Number Of Votes"
|
"Number Of Votes"
|
||||||
{
|
{
|
||||||
"it" "Numero di voti"
|
"it" "Numero di voti"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom"
|
"Custom"
|
||||||
{
|
{
|
||||||
"it" "{1} (Custom)"
|
"it" "{1} (Custom)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Is Needed"
|
"Revote Is Needed"
|
||||||
{
|
{
|
||||||
"it" "Nessuna mappa ha ricevuto più del {1}%% di voti.\nAllora, quale mappa vincerà? Si inizia un' altra votazione!"
|
"it" "Nessuna mappa ha ricevuto più del {1}%% di voti.\nAllora, quale mappa vincerà? Si inizia un' altra votazione!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Warning"
|
"Revote Warning"
|
||||||
{
|
{
|
||||||
"it" "Una nuova votazione inizierà tra: {1}s"
|
"it" "Una nuova votazione inizierà tra: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Vote Warning"
|
"Vote Warning"
|
||||||
{
|
{
|
||||||
"it" "Attenzione! Le votazione per la prossima mappa cominceranno tra: {1}s"
|
"it" "Attenzione! Le votazione per la prossima mappa cominceranno tra: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line One"
|
"Line One"
|
||||||
{
|
{
|
||||||
"it" "Vota la mappa chevorresti giocare..."
|
"it" "Vota la mappa chevorresti giocare..."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line Two"
|
"Line Two"
|
||||||
{
|
{
|
||||||
"it" "...e non cliccare i tasti sconsideratamente :D"
|
"it" "...e non cliccare i tasti sconsideratamente :D"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Cannot Start Vote"
|
"Cannot Start Vote"
|
||||||
{
|
{
|
||||||
"it" "Il voto è in corso. Riprova tra {1}s."
|
"it" "Il voto è in corso. Riprova tra {1}s."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Tie Vote"
|
"Tie Vote"
|
||||||
{
|
{
|
||||||
"it" "Le mappe hanno raggiunto il pareggio dei voti.\nBisogna nuovamente votare!"
|
"it" "Le mappe hanno raggiunto il pareggio dei voti.\nBisogna nuovamente votare!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
||||||
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
@ -1,43 +1,43 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"jp" "次のマップを投票してください!"
|
"jp" "次のマップを投票してください!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"jp" "次のマップ投票をスタートしました。"
|
"jp" "次のマップ投票をスタートしました。"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"jp" "マップ投票が完了しました。次はマップは{1}です。({3}中{2}%%)"
|
"jp" "マップ投票が完了しました。次はマップは{1}です。({3}中{2}%%)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"jp" "現在のマップを延長します。({3}中{2}%%)"
|
"jp" "現在のマップを延長します。({3}中{2}%%)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"jp" "現在のマップを延長"
|
"jp" "現在のマップを延長"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"jp" "変更しない"
|
"jp" "変更しない"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"jp" "現在のマップを延長します。({3}中{2}%%)"
|
"jp" "現在のマップを延長します。({3}中{2}%%)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"jp" "次のマップを\"{1}\"に変更しました。"
|
"jp" "次のマップを\"{1}\"に変更しました。"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,98 +1,98 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"ko" "다음 맵을 결정하기 위한 투표!"
|
"ko" "다음 맵을 결정하기 위한 투표!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"ko" "다음 맵을 결정하기 위한 투표가 시작되었습니다."
|
"ko" "다음 맵을 결정하기 위한 투표가 시작되었습니다."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"ko" "맵 투표가 끝났습니다. 다음 맵은 {1} 이 될 것입니다. (전체 인원 {2}명 중 {1}%%의 표를 받았습니다.)"
|
"ko" "맵 투표가 끝났습니다. 다음 맵은 {1} 이 될 것입니다. (전체 인원 {2}명 중 {1}%%의 표를 받았습니다.)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"ko" "현재 맵을 더하기로 결정했습니다. (전체 인원 {2}명 중 {1}%%의 표를 받았습니다.)"
|
"ko" "현재 맵을 더하기로 결정했습니다. (전체 인원 {2}명 중 {1}%%의 표를 받았습니다.)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"ko" "지금 맵을 더 하자"
|
"ko" "지금 맵을 더 하자"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"ko" "바꾸지 말자"
|
"ko" "바꾸지 말자"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"ko" "현재 맵을 계속 합니다!(전체 인원 {2} 명의 {1}%% 의 표를 받았습니다)"
|
"ko" "현재 맵을 계속 합니다!(전체 인원 {2} 명의 {1}%% 의 표를 받았습니다)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"ko" "다음 맵을 \"{1}\" 로 바꾸었습니다."
|
"ko" "다음 맵을 \"{1}\" 로 바꾸었습니다."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Runoff Vote Nextmap"
|
"Runoff Vote Nextmap"
|
||||||
{
|
{
|
||||||
"ko" "다음 맵을 결정하기 위한 재투표!"
|
"ko" "다음 맵을 결정하기 위한 재투표!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Number Of Votes"
|
"Number Of Votes"
|
||||||
{
|
{
|
||||||
"ko" "투표수"
|
"ko" "투표수"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom"
|
"Custom"
|
||||||
{
|
{
|
||||||
"ko" "{1} (커스텀 맵)"
|
"ko" "{1} (커스텀 맵)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Is Needed"
|
"Revote Is Needed"
|
||||||
{
|
{
|
||||||
"ko" "{1}%% 이상 투표를 받은 맵이 없습니다.\n다음 맵을 결정하기 위해 재투표를 합니다!"
|
"ko" "{1}%% 이상 투표를 받은 맵이 없습니다.\n다음 맵을 결정하기 위해 재투표를 합니다!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Warning"
|
"Revote Warning"
|
||||||
{
|
{
|
||||||
"ko" "재투표까지: {1}초"
|
"ko" "재투표까지: {1}초"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Vote Warning"
|
"Vote Warning"
|
||||||
{
|
{
|
||||||
"ko" "알립니다! 다음 맵을 결정하는 투표까지: {1}초"
|
"ko" "알립니다! 다음 맵을 결정하는 투표까지: {1}초"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line One"
|
"Line One"
|
||||||
{
|
{
|
||||||
"ko" "원하는 맵을 선택하세요..."
|
"ko" "원하는 맵을 선택하세요..."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line Two"
|
"Line Two"
|
||||||
{
|
{
|
||||||
"ko" "...그리고 아무거나 막 찍지 말고요 -_-"
|
"ko" "...그리고 아무거나 막 찍지 말고요 -_-"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Cannot Start Vote"
|
"Cannot Start Vote"
|
||||||
{
|
{
|
||||||
"ko" "투표가 진행 중에 있습니다. {1}초 후 다시 시도합니다."
|
"ko" "투표가 진행 중에 있습니다. {1}초 후 다시 시도합니다."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Tie Vote"
|
"Tie Vote"
|
||||||
{
|
{
|
||||||
"ko" "{1}개 맵이 같은 투표수를 얻었습니다.\n재투표를 합니다!"
|
"ko" "{1}개 맵이 같은 투표수를 얻었습니다.\n재투표를 합니다!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom Marked"
|
"Custom Marked"
|
||||||
{
|
{
|
||||||
"ko" "*{1}"
|
"ko" "*{1}"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
||||||
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
@ -1,43 +1,43 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"lv" "Balso par nākamo karti!"
|
"lv" "Balso par nākamo karti!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"lv" "Balsošana par nākamo karti ir sākusies."
|
"lv" "Balsošana par nākamo karti ir sākusies."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"lv" "Balsošana par karti ir beigusies. Nākamā karte būs {1}. (Saņēma {2}%% no {3} balsīm) "
|
"lv" "Balsošana par karti ir beigusies. Nākamā karte būs {1}. (Saņēma {2}%% no {3} balsīm) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"lv" "Patreizējās kartes laiks ir pagarināts. (Saņēma {1}%% no {2} balsīm) "
|
"lv" "Patreizējās kartes laiks ir pagarināts. (Saņēma {1}%% no {2} balsīm) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"lv" "Pagarināt laiku patreizējā kartē"
|
"lv" "Pagarināt laiku patreizējā kartē"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"lv" "Nemainīt"
|
"lv" "Nemainīt"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"lv" "Patreizējā karte turpinās! Aptauja ir beigusies! (Saņēma {1}%% no {2} balsīm)"
|
"lv" "Patreizējā karte turpinās! Aptauja ir beigusies! (Saņēma {1}%% no {2} balsīm)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"lv" "Nomainīja nākamo karti uz \"{1}\"."
|
"lv" "Nomainīja nākamo karti uz \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,109 +1,109 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"en" "Vote for the next map!"
|
"en" "Vote for the next map!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"en" "Voting for next map has started."
|
"en" "Voting for next map has started."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"#format" "{1:s},{2:i},{3:i}"
|
"#format" "{1:s},{2:i},{3:i}"
|
||||||
"en" "Map voting has finished. The next map will be {1}. (Received {2}%% of {3} votes)"
|
"en" "Map voting has finished. The next map will be {1}. (Received {2}%% of {3} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"#format" "{1:i},{2:i}"
|
"#format" "{1:i},{2:i}"
|
||||||
"en" "The current map has been extended. (Received {1}%% of {2} votes)"
|
"en" "The current map has been extended. (Received {1}%% of {2} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"en" "Extend Current Map"
|
"en" "Extend Current Map"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"en" "Don't Change"
|
"en" "Don't Change"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"#format" "{1:i},{2:i}"
|
"#format" "{1:i},{2:i}"
|
||||||
"en" "Current map continues! The Vote has spoken! (Received {1}%% of {2} votes)"
|
"en" "Current map continues! The Vote has spoken! (Received {1}%% of {2} votes)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"#format" "{1:s}"
|
"#format" "{1:s}"
|
||||||
"en" "Changed nextmap to \"{1}\"."
|
"en" "Changed nextmap to \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Runoff Vote Nextmap"
|
"Runoff Vote Nextmap"
|
||||||
{
|
{
|
||||||
"en" "Runoff Vote for the next map!"
|
"en" "Runoff Vote for the next map!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Number Of Votes"
|
"Number Of Votes"
|
||||||
{
|
{
|
||||||
"en" "Number of votes"
|
"en" "Number of votes"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom"
|
"Custom"
|
||||||
{
|
{
|
||||||
"#format" "{1:s}"
|
"#format" "{1:s}"
|
||||||
"en" "{1} (Custom)"
|
"en" "{1} (Custom)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Is Needed"
|
"Revote Is Needed"
|
||||||
{
|
{
|
||||||
"#format" "{1:i}"
|
"#format" "{1:i}"
|
||||||
"en" "No map has received more than {1}%% of the vote.\nSo, which map will win? A revote is needed!"
|
"en" "No map has received more than {1}%% of the vote.\nSo, which map will win? A revote is needed!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Warning"
|
"Revote Warning"
|
||||||
{
|
{
|
||||||
"#format" "{1:i}"
|
"#format" "{1:i}"
|
||||||
"en" "Runoff vote will start in: {1}s"
|
"en" "Runoff vote will start in: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Vote Warning"
|
"Vote Warning"
|
||||||
{
|
{
|
||||||
"#format" "{1:i}"
|
"#format" "{1:i}"
|
||||||
"en" "Warning! Voting for the next map will begin in: {1}s"
|
"en" "Warning! Voting for the next map will begin in: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line One"
|
"Line One"
|
||||||
{
|
{
|
||||||
"en" "Consider which map you want to play..."
|
"en" "Consider which map you want to play..."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line Two"
|
"Line Two"
|
||||||
{
|
{
|
||||||
"en" "...and don't hit buttons thoughtlessly ;-)"
|
"en" "...and don't hit buttons thoughtlessly ;-)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Cannot Start Vote"
|
"Cannot Start Vote"
|
||||||
{
|
{
|
||||||
"#format" "{1:i}"
|
"#format" "{1:i}"
|
||||||
"en" "Vote already in progress. Retrying in {1}s."
|
"en" "Vote already in progress. Retrying in {1}s."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Tie Vote"
|
"Tie Vote"
|
||||||
{
|
{
|
||||||
"#format" "{1:i}"
|
"#format" "{1:i}"
|
||||||
"en" "The top {1} maps had the same number of votes.\nA revote is needed!"
|
"en" "The top {1} maps had the same number of votes.\nA revote is needed!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom Marked"
|
"Custom Marked"
|
||||||
{
|
{
|
||||||
"#format" "{1:s}"
|
"#format" "{1:s}"
|
||||||
"en" "*{1}"
|
"en" "*{1}"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,2 +1,2 @@
|
|||||||
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
||||||
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
@ -1,43 +1,43 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"nl" "Stem voor de volgende map!"
|
"nl" "Stem voor de volgende map!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"nl" "Stemmen voor de volgende map is gestart."
|
"nl" "Stemmen voor de volgende map is gestart."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"nl" "Map stemmen gestopt. De volgende map wordt {1}."
|
"nl" "Map stemmen gestopt. De volgende map wordt {1}."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"nl" "De huidige map is verlengd."
|
"nl" "De huidige map is verlengd."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"nl" "Verleng huidige map"
|
"nl" "Verleng huidige map"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"nl" "Niet veranderen"
|
"nl" "Niet veranderen"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"nl" "Huidige map gaat verder! De Stem heeft gesproken! (Ontvangen {1}%% van de {2} stemmen)"
|
"nl" "Huidige map gaat verder! De Stem heeft gesproken! (Ontvangen {1}%% van de {2} stemmen)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"nl" "Volgende map verandert naar \"{1}\"."
|
"nl" "Volgende map verandert naar \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
||||||
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
@ -1,43 +1,43 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"no" "Stem for det neste kartet!"
|
"no" "Stem for det neste kartet!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"no" "Avstemning for det neste kartet har startet."
|
"no" "Avstemning for det neste kartet har startet."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"no" "Kart-avstemningen er avsluttet. Det neste kartet vil være {1}. (Mottok {2}%% av {3} stemmer)."
|
"no" "Kart-avstemningen er avsluttet. Det neste kartet vil være {1}. (Mottok {2}%% av {3} stemmer)."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"no" "Gjeldende kart videreføres! (Mottok {1}%% av {2} stemmer)."
|
"no" "Gjeldende kart videreføres! (Mottok {1}%% av {2} stemmer)."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"no" "Forleng gjeldende kart."
|
"no" "Forleng gjeldende kart."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"no" "Ikke bytt!"
|
"no" "Ikke bytt!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"no" "Gjeldende kart videreføres! Avstemningen har talt! (Mottok {1}%% av {2} stemmer)."
|
"no" "Gjeldende kart videreføres! Avstemningen har talt! (Mottok {1}%% av {2} stemmer)."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"no" "Byttet neste kart til \"{1}\""
|
"no" "Byttet neste kart til \"{1}\""
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,92 +1,92 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"pl" "Głosuj na następną mapę!"
|
"pl" "Głosuj na następną mapę!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"pl" "Rozpoczęto głosowanie na następną mapę."
|
"pl" "Rozpoczęto głosowanie na następną mapę."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"pl" "Głosowanie na mapę zostało zakończone. Następną mapą będzie {1}. (Otrzymała {2} procent z {3} głosów) "
|
"pl" "Głosowanie na mapę zostało zakończone. Następną mapą będzie {1}. (Otrzymała {2} procent z {3} głosów) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"pl" "Aktualna mapa została przedłużona. (Otrzymała {1} procent z {2} głosów)"
|
"pl" "Aktualna mapa została przedłużona. (Otrzymała {1} procent z {2} głosów)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"pl" "Przedłuż bieżącą mapę"
|
"pl" "Przedłuż bieżącą mapę"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"pl" "Nie Zmieniaj"
|
"pl" "Nie Zmieniaj"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"pl" "Aktualna mapa będzie kontynuowana! (Otrzymano {1} procent z {2} głosów)"
|
"pl" "Aktualna mapa będzie kontynuowana! (Otrzymano {1} procent z {2} głosów)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"pl" "Zmieniono następną mapę na: \"{1}\"."
|
"pl" "Zmieniono następną mapę na: \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Runoff Vote Nextmap"
|
"Runoff Vote Nextmap"
|
||||||
{
|
{
|
||||||
"pl" "Wybierz ponownie!"
|
"pl" "Wybierz ponownie!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Number Of Votes"
|
"Number Of Votes"
|
||||||
{
|
{
|
||||||
"pl" "Otrzymane głosy"
|
"pl" "Otrzymane głosy"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom"
|
"Custom"
|
||||||
{
|
{
|
||||||
"pl" "{1} (Niestandardowa)"
|
"pl" "{1} (Niestandardowa)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Is Needed"
|
"Revote Is Needed"
|
||||||
{
|
{
|
||||||
"pl" "Żadna mapa nie otrzymała przynajmniej {1}%% głosów.\nWięc która mapa jest zwycięzcą? Trzeba zagłosować ponownie!"
|
"pl" "Żadna mapa nie otrzymała przynajmniej {1}%% głosów.\nWięc która mapa jest zwycięzcą? Trzeba zagłosować ponownie!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Warning"
|
"Revote Warning"
|
||||||
{
|
{
|
||||||
"pl" "Ponowne głosowanie rozpocznie się za: {1}s\nTym razem się już zdecydujcie ;-)"
|
"pl" "Ponowne głosowanie rozpocznie się za: {1}s\nTym razem się już zdecydujcie ;-)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Vote Warning"
|
"Vote Warning"
|
||||||
{
|
{
|
||||||
"pl" "UWAGA!!! Głosowanie na następną mapę rozpocznie się za: {1}s"
|
"pl" "UWAGA!!! Głosowanie na następną mapę rozpocznie się za: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line One"
|
"Line One"
|
||||||
{
|
{
|
||||||
"pl" "Zastanów się na której mapie chcesz grać..."
|
"pl" "Zastanów się na której mapie chcesz grać..."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line Two"
|
"Line Two"
|
||||||
{
|
{
|
||||||
"pl" "...wpisując !revote możesz zmienić swój głos."
|
"pl" "...wpisując !revote możesz zmienić swój głos."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Cannot Start Vote"
|
"Cannot Start Vote"
|
||||||
{
|
{
|
||||||
"pl" "Głosowanie w toku. Ponawiam za {1}s."
|
"pl" "Głosowanie w toku. Ponawiam za {1}s."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Tie Vote"
|
"Tie Vote"
|
||||||
{
|
{
|
||||||
"pl" "{1} najlepsze mapy otrzymały tę samą ilość głosów.\nPotrzeba ponownego głosowania!"
|
"pl" "{1} najlepsze mapy otrzymały tę samą ilość głosów.\nPotrzeba ponownego głosowania!"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,98 +1,98 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"pt" "Vote para o próximo mapa!"
|
"pt" "Vote para o próximo mapa!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"pt" "Votação para o próximo mapa começou."
|
"pt" "Votação para o próximo mapa começou."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"pt" "A votação para o próximo mapa terminou. O próximo mapa será {1}. (Recebidos {2}%% de {3} votos)"
|
"pt" "A votação para o próximo mapa terminou. O próximo mapa será {1}. (Recebidos {2}%% de {3} votos)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"pt" "A mapa atual foi estendido. (Recebidos {1}%% de {2} votos)"
|
"pt" "A mapa atual foi estendido. (Recebidos {1}%% de {2} votos)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"pt" "Estender tempo do mapa atual"
|
"pt" "Estender tempo do mapa atual"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"pt" "Não Mudar"
|
"pt" "Não Mudar"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"pt" "O mapa atual continua! O Voto foi dado! (Recebidos {1}%% de {2} votos)"
|
"pt" "O mapa atual continua! O Voto foi dado! (Recebidos {1}%% de {2} votos)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"pt" "Mudado o próximo mapa para \"{1}\"."
|
"pt" "Mudado o próximo mapa para \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Runoff Vote Nextmap"
|
"Runoff Vote Nextmap"
|
||||||
{
|
{
|
||||||
"pt" "Segundo turno de votos para o próximo mapa!"
|
"pt" "Segundo turno de votos para o próximo mapa!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Number Of Votes"
|
"Number Of Votes"
|
||||||
{
|
{
|
||||||
"pt" "Número de votos"
|
"pt" "Número de votos"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom"
|
"Custom"
|
||||||
{
|
{
|
||||||
"pt" "{1} (Custom)"
|
"pt" "{1} (Custom)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Is Needed"
|
"Revote Is Needed"
|
||||||
{
|
{
|
||||||
"pt" "Nenhum mapa recebeu mais que {1}%% de votos.\nEntão, qual mapa ganhará? Precisa de uma nova votação!"
|
"pt" "Nenhum mapa recebeu mais que {1}%% de votos.\nEntão, qual mapa ganhará? Precisa de uma nova votação!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Warning"
|
"Revote Warning"
|
||||||
{
|
{
|
||||||
"pt" "Segundo turno começa em: {1}s"
|
"pt" "Segundo turno começa em: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Vote Warning"
|
"Vote Warning"
|
||||||
{
|
{
|
||||||
"pt" "Atenção! Votação para o próximo mapa começará em: {1}s"
|
"pt" "Atenção! Votação para o próximo mapa começará em: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line One"
|
"Line One"
|
||||||
{
|
{
|
||||||
"pt" "Considere que mapa você quer jogar..."
|
"pt" "Considere que mapa você quer jogar..."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line Two"
|
"Line Two"
|
||||||
{
|
{
|
||||||
"pt" "...e não aperte os botões sem pensar ;-)"
|
"pt" "...e não aperte os botões sem pensar ;-)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Cannot Start Vote"
|
"Cannot Start Vote"
|
||||||
{
|
{
|
||||||
"pt" "Votação em progresso. Tentando novamente em {1}s."
|
"pt" "Votação em progresso. Tentando novamente em {1}s."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Tie Vote"
|
"Tie Vote"
|
||||||
{
|
{
|
||||||
"pt" "Os {1} mapas tiveram o mesmo número de votos.\nUma nova votação é necessária!"
|
"pt" "Os {1} mapas tiveram o mesmo número de votos.\nUma nova votação é necessária!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom Marked"
|
"Custom Marked"
|
||||||
{
|
{
|
||||||
"pt" "*{1}"
|
"pt" "*{1}"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,83 +1,83 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"ru" "Голосование за следующую карту."
|
"ru" "Голосование за следующую карту."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Runoff Vote Nextmap"
|
"Runoff Vote Nextmap"
|
||||||
{
|
{
|
||||||
"ru" "Повторное голосование за карту."
|
"ru" "Повторное голосование за карту."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"ru" "Голосование за следующую карту запущено."
|
"ru" "Голосование за следующую карту запущено."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"ru" "Голосование за карту завершено. Следующей картой будет: {1}. (Получено {2}%% из {3} голосов(а))"
|
"ru" "Голосование за карту завершено. Следующей картой будет: {1}. (Получено {2}%% из {3} голосов(а))"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"ru" "Текущая карта была продлена. (Получено {1}%% из {2} голосов(а))"
|
"ru" "Текущая карта была продлена. (Получено {1}%% из {2} голосов(а))"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"ru" "Продлить текущую карту."
|
"ru" "Продлить текущую карту."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"ru" "Не менять карту."
|
"ru" "Не менять карту."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"ru" "Текущая карта не сменится! (Получено {1}%% из {2} голосов(а))"
|
"ru" "Текущая карта не сменится! (Получено {1}%% из {2} голосов(а))"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"ru" "Следующая карта изменена на \"{1}\"."
|
"ru" "Следующая карта изменена на \"{1}\"."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Number Of Votes"
|
"Number Of Votes"
|
||||||
{
|
{
|
||||||
"ru" "Количество голосов"
|
"ru" "Количество голосов"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Custom"
|
"Custom"
|
||||||
{
|
{
|
||||||
"ru" "{1} (Случайная)"
|
"ru" "{1} (Случайная)"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Is Needed"
|
"Revote Is Needed"
|
||||||
{
|
{
|
||||||
"ru" "Ни одна карта не получила более, чем {1}%% голосов(а).\nИтак, какая карта будет следующей? Приготовьтесь к повторному голосованию!"
|
"ru" "Ни одна карта не получила более, чем {1}%% голосов(а).\nИтак, какая карта будет следующей? Приготовьтесь к повторному голосованию!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Revote Warning"
|
"Revote Warning"
|
||||||
{
|
{
|
||||||
"ru" "Повторное голосование начнётся через: {1}s"
|
"ru" "Повторное голосование начнётся через: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Vote Warning"
|
"Vote Warning"
|
||||||
{
|
{
|
||||||
"ru" "Внимание! Голосование за следующую карту начнётся через: {1}s"
|
"ru" "Внимание! Голосование за следующую карту начнётся через: {1}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line One"
|
"Line One"
|
||||||
{
|
{
|
||||||
"ru" "Выбери, какая карта будет следующей..."
|
"ru" "Выбери, какая карта будет следующей..."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Line Two"
|
"Line Two"
|
||||||
{
|
{
|
||||||
"ru" "...и не клацай кнопки,не подумав ;-)"
|
"ru" "...и не клацай кнопки,не подумав ;-)"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,2 +1,2 @@
|
|||||||
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
||||||
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
@ -1,43 +1,43 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"sv" "Rösta för nästa bana!"
|
"sv" "Rösta för nästa bana!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"sv" "Röstning om nästa bana har börjat."
|
"sv" "Röstning om nästa bana har börjat."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"sv" "Röstningen om banan har avslutats. Nästa bana kommer att bli {1}. (Fick {2}%% av {3} röster) "
|
"sv" "Röstningen om banan har avslutats. Nästa bana kommer att bli {1}. (Fick {2}%% av {3} röster) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"sv" "Den nuvarande banan har förlängts. (Fick {1}%% av {2} röster) "
|
"sv" "Den nuvarande banan har förlängts. (Fick {1}%% av {2} röster) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"sv" "Förläng nuvarande bana"
|
"sv" "Förläng nuvarande bana"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"sv" "Byt inte"
|
"sv" "Byt inte"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"sv" "Nuvarande banan fortsätter! Röstningen har talat! (Fick {1}%% av {2} röster) "
|
"sv" "Nuvarande banan fortsätter! Röstningen har talat! (Fick {1}%% av {2} röster) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"sv" "Bytta nästa bana till \"{1}\". "
|
"sv" "Bytta nästa bana till \"{1}\". "
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
Missing "Runoff Vote Nextmap", "Number Of Votes", "Custom", "Revote Is Needed", "Revote Warning", "Vote Warning",
|
||||||
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
"Line One", "Line Two", "Cannot Start Vote", and "Tie Vote"
|
@ -1,43 +1,43 @@
|
|||||||
"Phrases"
|
"Phrases"
|
||||||
{
|
{
|
||||||
"Vote Nextmap"
|
"Vote Nextmap"
|
||||||
{
|
{
|
||||||
"tr" "Sonraki harita için oy ver!"
|
"tr" "Sonraki harita için oy ver!"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Started"
|
"Nextmap Voting Started"
|
||||||
{
|
{
|
||||||
"tr" "Sonraki harita için oylama başladı."
|
"tr" "Sonraki harita için oylama başladı."
|
||||||
}
|
}
|
||||||
|
|
||||||
"Nextmap Voting Finished"
|
"Nextmap Voting Finished"
|
||||||
{
|
{
|
||||||
"tr" "Harita oylaması sona erdi. Sıradaki harita {1} olacak. ({3} oyun %%{2}'i alındı) "
|
"tr" "Harita oylaması sona erdi. Sıradaki harita {1} olacak. ({3} oyun %%{2}'i alındı) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Extended"
|
"Current Map Extended"
|
||||||
{
|
{
|
||||||
"tr" "Geçerli harita uzatıldı. ({2} oyun %%{1}'i alındı) "
|
"tr" "Geçerli harita uzatıldı. ({2} oyun %%{1}'i alındı) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Extend Map"
|
"Extend Map"
|
||||||
{
|
{
|
||||||
"tr" "Geçerli Haritayı Uzat"
|
"tr" "Geçerli Haritayı Uzat"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dont Change"
|
"Dont Change"
|
||||||
{
|
{
|
||||||
"tr" "Değiştirme"
|
"tr" "Değiştirme"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Current Map Stays"
|
"Current Map Stays"
|
||||||
{
|
{
|
||||||
"tr" "Geçerli harita devam ediyor! Oylama konuştu! ({2} oyun %%{1}'i alındı) "
|
"tr" "Geçerli harita devam ediyor! Oylama konuştu! ({2} oyun %%{1}'i alındı) "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Changed Next Map"
|
"Changed Next Map"
|
||||||
{
|
{
|
||||||
"tr" "Sıradaki harita \"{1}\" olarak değiştirildi."
|
"tr" "Sıradaki harita \"{1}\" olarak değiştirildi."
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user