new PlVers:__version = 5;
new Float:NULL_VECTOR[3];
new String:NULL_STRING[1];
new Extension:__ext_core = 68;
new MaxClients;
new Extension:__ext_sdktools = 580;
new TANKSA;
new TANKSB;
new player_num;
new player_number;
new tanktype[65];
new KickLookOnPlayer[65];
new Handle:sm_tank_health_max;
new Handle:sm_tank_health_second;
new Handle:sm_tank_health_third;
new Handle:sm_tank_health_fourth;
new Handle:sm_tank_health_fifth;
new SuperTank_Health[5];
new Handle:cvar_TANK_GPS;
new Handle:cvar_TANK_HPDD;
new Float:DeathPos[3];
new Float:TankPos[3];
new HEIBAI;
new Plugin:myinfo = 1236;
public __ext_core_SetNTVOptional()
{
MarkNativeAsOptional("GetFeatureStatus");
MarkNativeAsOptional("RequireFeature");
MarkNativeAsOptional("AddCommandListener");
MarkNativeAsOptional("RemoveCommandListener");
VerifyCoreVersion();
return 0;
}
bool:StrEqual(String:str1[], String:str2[], bool:caseSensitive)
{
return strcmp(str1, str2, caseSensitive) == 0;
}
PrintToChatAll(String:format[])
{
decl String:buffer[192];
new i = 1;
while (i <= MaxClients) {
if (IsClientInGame(i))
{
SetGlobalTransTarget(i);
VFormat(buffer, 192, format, 2);
PrintToChat(i, "%s", buffer);
i++;
}
i++;
}
return 0;
}
GetEntSendPropOffs(ent, String:prop[], bool:actual)
{
decl String:cls[64];
if (!GetEntityNetClass(ent, cls, 64))
{
return -1;
}
if (actual)
{
return FindSendPropInfo(cls, prop, 0, 0, 0);
}
return FindSendPropOffs(cls, prop);
}
SetEntityRenderMode(entity, RenderMode:mode)
{
static bool:gotconfig;
static String:prop[8];
if (!gotconfig)
{
new Handle:gc = LoadGameConfigFile("core.games");
new bool:exists = GameConfGetKeyValue(gc, "m_nRenderMode", "", 32);
CloseHandle(gc);
if (!exists)
{
strcopy("", 32, "m_nRenderMode");
}
__unk = 1;
}
SetEntProp(entity, PropType:0, "", mode, 1);
return 0;
}
SetEntityRenderColor(entity, r, g, b, a)
{
static bool:gotconfig;
static String:prop[8];
if (!gotconfig)
{
new Handle:gc = LoadGameConfigFile("core.games");
new bool:exists = GameConfGetKeyValue(gc, "m_clrRender", "", 32);
CloseHandle(gc);
if (!exists)
{
strcopy("", 32, "m_clrRender");
}
__unk = 1;
}
new offset = GetEntSendPropOffs(entity, "", false);
if (0 >= offset)
{
ThrowError("SetEntityRenderColor not supported by this mod");
}
SetEntData(entity, offset, r, 1, true);
SetEntData(entity, offset + 1, g, 1, true);
SetEntData(entity, offset + 2, b, 1, true);
SetEntData(entity, offset + 3, a, 1, true);
return 0;
}
SetEntityHealth(entity, amount)
{
static bool:gotconfig;
static String:prop[8];
if (!gotconfig)
{
new Handle:gc = LoadGameConfigFile("core.games");
new bool:exists = GameConfGetKeyValue(gc, "m_iHealth", "", 32);
CloseHandle(gc);
if (!exists)
{
strcopy("", 32, "m_iHealth");
}
__unk = 1;
}
decl String:cls[64];
new PropFieldType:type = 0;
new offset = 0;
if (!GetEntityNetClass(entity, cls, 64))
{
ThrowError("SetEntityHealth not supported by this mod: Could not get serverclass name");
return 0;
}
offset = FindSendPropInfo(cls, "", type, 0, 0);
if (0 >= offset)
{
ThrowError("SetEntityHealth not supported by this mod");
return 0;
}
if (type == PropFieldType:2)
{
SetEntDataFloat(entity, offset, float(amount), false);
}
else
{
SetEntProp(entity, PropType:0, "", amount, 4);
}
return 0;
}
EmitSoundToClient(client, String:sample[], entity, channel, level, flags, Float:volume, pitch, speakerentity, Float:origin[3], Float:dir[3], bool:updatePos, Float:soundtime)
{
decl clients[1];
clients[0] = client;
new var1;
if (entity == -2)
{
var1 = client;
}
else
{
var1 = entity;
}
entity = var1;
EmitSound(clients, 1, sample, entity, channel, level, flags, volume, pitch, speakerentity, origin, dir, updatePos, soundtime);
return 0;
}
public OnPluginStart()
{
sm_tank_health_max = CreateConVar("sm_supertank_health_max", "30000", "主坦克生命值", 262144, false, 0, false, 0);
sm_tank_health_second = CreateConVar("sm_supertank_health_second", "3500", "黄坦克生命值(tank复活)", 262400, false, 0, false, 0);
sm_tank_health_third = CreateConVar("sm_supertank_health_third", "12000", "紫坦克生命值(死于tank)", 262400, false, 0, false, 0);
sm_tank_health_fourth = CreateConVar("sm_supertank_health_fourth", "22000", "绿坦克生命值(死于witch)", 262400, false, 0, false, 0);
sm_tank_health_fifth = CreateConVar("sm_supertank_health_fifth", "18000", "蓝坦克生命值(惊扰witch)", 262400, false, 0, false, 0);
cvar_TANK_GPS = CreateConVar("sm_tank_GPS", "1231", "每增加一个人 副TANK血量增加多少", 262400, false, 0, false, 0);
cvar_TANK_HPDD = CreateConVar("sm_tank_hpK", "2313", "每增加一个人 主TANK血量增加多少", 262400, false, 0, false, 0);
HookConVarChange(FindConVar("z_hunter_limit"), ConVarChanged:3);
HookConVarChange(FindConVar("z_gas_limit"), ConVarChanged:3);
HookConVarChange(FindConVar("z_exploding_limit"), ConVarChanged:3);
HookEvent("player_death", EventHook:15, EventHookMode:1);
HookEvent("player_spawn", EventHook:17, EventHookMode:1);
HookEvent("round_start", EventHook:21, EventHookMode:1);
HookEvent("player_team", EventHook:19, EventHookMode:1);
HookEvent("revive_success", EventHook:13, EventHookMode:1);
HookEvent("heal_begin", EventHook:9, EventHookMode:1);
HookEvent("heal_success", EventHook:11, EventHookMode:1);
HookEvent("witch_killed", EventHook:27, EventHookMode:1);
HookEvent("witch_harasser_set", EventHook:67, EventHookMode:1);
HookEvent("tank_spawn", EventHook:25, EventHookMode:1);
HookEvent("tank_killed", EventHook:23, EventHookMode:1);
HookEvent("player_death", EventHook:63, EventHookMode:1);
HookEvent("player_death", EventHook:61, EventHookMode:1);
HookEvent("rescue_door_open", EventHook:65, EventHookMode:1);
CreateTimer(5, StartAds, any:0, 0);
CreateTimer(25, DifficultShow, any:0, 0);
RegAdminCmd("sm_fsms", Menu_TDSADWQDQW, 4, "", "", 0);
return 0;
}
GetConVar()
{
SuperTank_Health[4] = GetConVarInt(sm_tank_health_max);
SuperTank_Health[8] = GetConVarInt(sm_tank_health_second);
SuperTank_Health[12] = GetConVarInt(sm_tank_health_third);
SuperTank_Health[16] = GetConVarInt(sm_tank_health_fourth);
SuperTank_Health[0] = GetConVarInt(sm_tank_health_fifth);
return 0;
}
public ConVarChange(Handle:convar, String:oldValue[], String:newValue[])
{
GetConVar();
return 0;
}
public Action:StartAds(Handle:timer, client)
{
CountAlivePlayers();
CreateTimer(5, StartAds, any:0, 0);
return Action:0;
}
public Action:Event_Tank_Spawn(Handle:event, String:name[], bool:dontBroadcast)
{
new Client = GetClientOfUserId(GetEventInt(event, "userid"));
SetGameDifficulty();
CreateTimer(0.01, TANK_z_spawnA, Client, 0);
CreateTimer(1, TANK_Fire, Client, 0);
return Action:0;
}
public Action:TANK_Fire(Handle:timer, Client)
{
if (GetEntProp(Client, PropType:1, "m_fFlags", 4) & 134217728)
{
SetEntPropFloat(Client, PropType:1, "m_flLaggedMovementValue", 0.95);
PrintToChatAll("[无邪提示]坦克被点燃,速度加快了,大家小心!", Client);
new j = 1;
while (j <= MaxClients) {
if (IsClientInGame(j))
{
EmitSoundToClient(j, "items/suitchargeok1.wav", -2, 0, 75, 0, 1, 100, -1, NULL_VECTOR, NULL_VECTOR, true, 0);
j++;
}
j++;
}
CreateTimer(60, Extinguish, Client, 0);
}
else
{
CreateTimer(1, TANK_Fire, Client, 0);
}
return Action:0;
}
public Action:Extinguish(Handle:timer, Client)
{
if (GetEntProp(Client, PropType:1, "m_fFlags", 4) & 134217728)
{
ExtinguishEntity(Client);
PrintToChatAll("[无邪提示]坦克经过1分钟的摸爬滚打后,身上的火已经熄灭!", Client);
new j = 1;
while (j <= MaxClients) {
if (IsClientInGame(j))
{
EmitSoundToClient(j, "UI/Pickup_Misc42.wav", -2, 0, 75, 0, 1, 100, -1, NULL_VECTOR, NULL_VECTOR, true, 0);
j++;
}
j++;
}
CreateTimer(1, TANK_Fire, Client, 0);
}
else
{
CreateTimer(1, TANK_Fire, Client, 0);
}
return Action:0;
}
public Action:TANK_z_spawnA(Handle:timer, Client)
{
if (0 >= TANKSA)
{
tanktype[Client] = 1;
new healthC = SuperTank_Health[4][0];
SetEntProp(Client, PropType:1, "m_iMaxHealth", healthC, 4);
SetEntProp(Client, PropType:1, "m_iHealth", healthC, 4);
if (TANKSB == 1)
{
CreateTimer(10, TANK_Fenlie, Client, 0);
}
}
else
{
if (TANKSA == 1)
{
TeleportEntity(Client, DeathPos, NULL_VECTOR, NULL_VECTOR);
tanktype[Client] = 2;
new healthC = SuperTank_Health[8][0];
SetEntProp(Client, PropType:1, "m_iMaxHealth", healthC, 4);
SetEntProp(Client, PropType:1, "m_iHealth", healthC, 4);
SetEntityRenderMode(Client, RenderMode:3);
SetEntityRenderColor(Client, 255, 255, 0, 255);
PrintToChatAll("[无邪提示]黄色tank出现,血量仅 %d ,大家尽快围剿!", healthC);
if (TANKSA == 1)
{
TANKSA = 0;
}
}
if (TANKSA == 11)
{
TeleportEntity(Client, TankPos, NULL_VECTOR, NULL_VECTOR);
tanktype[Client] = 2;
new healthC = SuperTank_Health[8][0];
SetEntProp(Client, PropType:1, "m_iMaxHealth", healthC, 4);
SetEntProp(Client, PropType:1, "m_iHealth", healthC, 4);
SetEntityRenderMode(Client, RenderMode:3);
SetEntityRenderColor(Client, 255, 255, 0, 255);
PrintToChatAll("[无邪提示]坦克分裂出黄色小弟!血量仅 %d ,你懂得!", healthC);
TANKSA = 22;
CheatCommand(Client, "z_spawn", "tank");
TeleportEntity(Client, TankPos, NULL_VECTOR, NULL_VECTOR);
new var1;
if (TANKSA == 11)
{
TANKSA = 0;
}
}
if (TANKSA == 2)
{
TeleportEntity(Client, DeathPos, NULL_VECTOR, NULL_VECTOR);
tanktype[Client] = 3;
new healthC = SuperTank_Health[12][0];
SetEntProp(Client, PropType:1, "m_iMaxHealth", healthC, 4);
SetEntProp(Client, PropType:1, "m_iHealth", healthC, 4);
SetEntityRenderMode(Client, RenderMode:3);
SetEntityRenderColor(Client, 255, 0, 255, 255);
PrintToChatAll("[无邪提示]紫色tank出现,血量仅 %d ,大家尽快围剿!", healthC);
if (TANKSA == 2)
{
TANKSA = 0;
}
}
if (TANKSA == 22)
{
TeleportEntity(Client, TankPos, NULL_VECTOR, NULL_VECTOR);
tanktype[Client] = 3;
new healthC = SuperTank_Health[12][0];
SetEntProp(Client, PropType:1, "m_iMaxHealth", healthC, 4);
SetEntProp(Client, PropType:1, "m_iHealth", healthC, 4);
SetEntityRenderMode(Client, RenderMode:3);
SetEntityRenderColor(Client, 255, 0, 255, 255);
PrintToChatAll("[无邪提示]坦克分裂出紫色小弟!血量为 %d ,大家小心!", healthC);
if (TANKSA == 22)
{
TANKSA = 0;
}
}
if (TANKSA == 3)
{
TeleportEntity(Client, DeathPos, NULL_VECTOR, NULL_VECTOR);
tanktype[Client] = 4;
new healthC = SuperTank_Health[16][0];
SetEntProp(Client, PropType:1, "m_iMaxHealth", healthC, 4);
SetEntProp(Client, PropType:1, "m_iHealth", healthC, 4);
SetEntityRenderMode(Client, RenderMode:3);
SetEntityRenderColor(Client, 0, 255, 0, 255);
PrintToChatAll("[无邪提示]绿色tank出现,血量为 %d ,大家尽快围剿!", healthC);
if (TANKSA == 3)
{
TANKSA = 0;
}
}
if (TANKSA == 4)
{
tanktype[Client] = 0;
new healthC = SuperTank_Health[0][0];
SetEntProp(Client, PropType:1, "m_iMaxHealth", healthC, 4);
SetEntProp(Client, PropType:1, "m_iHealth", healthC, 4);
SetEntityRenderMode(Client, RenderMode:3);
SetEntityRenderColor(Client, 0, 0, 255, 255);
PrintToChatAll("[无邪提示]蓝色tank出现,血量为 %d ,大家尽快围剿!", healthC);
if (TANKSA == 4)
{
TANKSA = 0;
}
}
}
return Action:0;
}
public Action:TANK_Fenlie(Handle:timer, Client)
{
new hardhp = GetClientHealth(Client);
new var1;
if (hardhp > 15000)
{
GetClientAbsOrigin(Client, TankPos);
new rnditemNum = GetRandomInt(0, 2);
switch (rnditemNum) {
case 0: {
TANKSA = 22;
CheatCommand(Client, "z_spawn", "tank");
new j = 1;
while (j <= MaxClients) {
if (IsClientInGame(j))
{
EmitSoundToClient(j, "npc/witch/voice/attack/Female_DistantScream1.wav", -2, 0, 75, 0, 1, 100, -1, NULL_VECTOR, NULL_VECTOR, true, 0);
j++;
}
j++;
}
return Action:0;
}
case 1: {
TANKSA = 11;
CheatCommand(Client, "z_spawn", "tank");
new j = 1;
while (j <= MaxClients) {
if (IsClientInGame(j))
{
EmitSoundToClient(j, "npc/witch/voice/attack/Female_DistantScream1.wav", -2, 0, 75, 0, 1, 100, -1, NULL_VECTOR, NULL_VECTOR, true, 0);
j++;
}
j++;
}
return Action:0;
}
case 2: {
TANKSA = 22;
CheatCommand(Client, "z_spawn", "tank");
new j = 1;
while (j <= MaxClients) {
if (IsClientInGame(j))
{
EmitSoundToClient(j, "npc/witch/voice/attack/Female_DistantScream1.wav", -2, 0, 75, 0, 1, 100, -1, NULL_VECTOR, NULL_VECTOR, true, 0);
j++;
}
j++;
}
return Action:0;
}
default: {
}
}
}
else
{
if (hardhp > 28000)
{
CreateTimer(0.5, TANK_Fenlie, Client, 0);
}
new var2;
if (hardhp < 15000)
{
PrintToChatAll("[无邪提示]由于你们火力太猛,疼的tank嗷嗷叫,它已无暇进行分裂!", Client);
}
}
return Action:0;
}
public Action:Boome_z_spawn(Handle:timer, Client)
{
CheatCommand(Client, "z_spawn", "boome");
return Action:0;
}
CountAlivePlayers()
{
new alive = 0;
new index = 1;
while (index <= MaxClients) {
new var1;
if (IsClientInGame(index))
{
alive++;
index++;
}
index++;
}
if (player_num > alive)
{
player_num = alive;
}
else
{
if (player_num < alive)
{
player_num = alive;
}
}
new number = 0;
new index = 1;
while (index <= MaxClients) {
new var2;
if (IsClientInGame(index))
{
number++;
index++;
}
index++;
}
if (player_number > number)
{
player_number = number;
}
else
{
if (player_number < number)
{
player_number = number;
}
}
return 0;
}
public Action:Event_PlayerTeam(Handle:event, String:name[], bool:dontBroadcast)
{
new Client_id = GetEventInt(event, "userid");
new Client = GetClientOfUserId(Client_id);
new oldteam = GetEventInt(event, "oldteam");
new newteam = GetEventInt(event, "team");
new bool:disconnect = GetEventBool(event, "disconnect");
new var1;
if (IsClientInGame(Client))
{
if (!IsFakeClient(Client))
{
if (newteam == 1)
{
KickLookOnPlayer[Client] = 0;
CreateTimer(1, Timer_KickLookOnPlayer, Client, 1);
}
if (oldteam == 1)
{
if (newteam == 2)
{
PrintToChatAll("[无邪提示]玩家 %N 加入到幸存者队伍", Client);
}
}
if (oldteam == 2)
{
if (newteam == 1)
{
PrintToChatAll("[无邪提示]玩家 %N 患有老年痴呆,已进入空闲状态", Client);
CreateTimer(15, Kickbot, Client, 0);
}
}
}
}
return Action:0;
}
public Action:Timer_KickLookOnPlayer(Handle:timer, Client)
{
new kicktime = 600;
new var1;
if (IsClientInGame(Client))
{
KickLookOnPlayer[Client]++;
if (KickLookOnPlayer[Client][0][0] >= kicktime)
{
KickClient(Client, "由于你旁观过久,被系统踢出,无邪深表遗憾");
PrintToChatAll("[无邪提示]由于 %N 旁观时间超过10分钟,已被系统踢出!", Client);
KickLookOnPlayer[Client] = 0;
KillTimer(timer, false);
}
}
else
{
KickLookOnPlayer[Client] = 0;
KillTimer(timer, false);
}
return Action:0;
}
public EventReviveSuccess(Handle:event, String:name[], bool:dontBroadcast)
{
new player = GetClientOfUserId(GetEventInt(event, "userid"));
new target = GetClientOfUserId(GetEventInt(event, "subject"));
new var1;
if (player)
{
return 0;
}
decl String:targetName[64];
decl String:palyerName[64];
GetClientName(target, targetName, 64);
GetClientName(player, palyerName, 64);
if (target != player)
{
if (!GetEventBool(event, "ledge_hang"))
{
new hardhp = GetClientHealth(player) + 2;
SetEntityHealth(player, hardhp + 2);
PrintToChatAll("%s 救起了 %s ,获得奖励 [hp+4]", palyerName, targetName);
PrintHintText(player, "帮助队友将会得到奖励");
}
if (GetEventBool(event, "ledge_hang"))
{
new hardhp = GetClientHealth(player) + 1;
SetEntityHealth(player, hardhp + 1);
PrintToChatAll("%s 拉起了 热衷悬挂的菜鸟 %s ,获得奖励 [hp+2]", palyerName, targetName);
PrintHintText(player, "帮助队友将会得到奖励");
}
}
if (GetEventBool(event, "lastlife"))
{
PrintHintText(player, "%s 进入黑白状态", targetName);
PrintToChatAll("[无邪提示] %s 进入黑白状态,急需治疗!", targetName);
PrintToChatAll("[无邪提示] %s 进入黑白状态,急需治疗!", targetName);
HEIBAI = 1;
}
return 0;
}
public EventHealBegin(Handle:event, String:name[], bool:dontBroadcast)
{
new player = GetClientOfUserId(GetEventInt(event, "userid"));
new target = GetClientOfUserId(GetEventInt(event, "subject"));
new hardhp = GetClientHealth(target);
new var1;
if (player)
{
return 0;
}
decl String:targetName[64];
decl String:palyerName[64];
GetClientName(target, targetName, 64);
GetClientName(player, palyerName, 64);
if (target != player)
{
if (hardhp >= 50)
{
FakeClientCommand(player, "sm_g");
PrintHintText(target, "无邪提示:血量高于50不能被治疗");
PrintToChat(player, "[无邪提示]目标血量高于50,不能被治疗,留给需要的队友吧!");
}
}
else
{
if (hardhp >= 50)
{
FakeClientCommand(target, "sm_g");
PrintHintText(target, "无邪提示:血量高于50不能治疗");
PrintToChat(target, "[无邪提示]血量高于50不能治疗,把包留给有需要的队友吧!");
}
}
return 0;
}
public EventHealSuccess(Handle:event, String:name[], bool:dontBroadcast)
{
new player = GetClientOfUserId(GetEventInt(event, "userid"));
new target = GetClientOfUserId(GetEventInt(event, "subject"));
new var1;
if (player)
{
return 0;
}
decl String:targetName[64];
decl String:palyerName[64];
GetClientName(target, targetName, 64);
GetClientName(player, palyerName, 64);
if (target != player)
{
if (HEIBAI == 1)
{
new playerhp = GetClientHealth(player) + 6;
SetEntityHealth(player, playerhp + 6);
PrintToChatAll("%s 基友情深,治愈了黑白状态下的 %s ,获得奖励 [hp+12]", palyerName, targetName);
HEIBAI = 0;
}
else
{
new playerhp = GetClientHealth(player) + 4;
SetEntityHealth(player, playerhp + 4);
PrintToChatAll("%s 治愈了 %s ,获得奖励 [hp+8]", palyerName, targetName);
}
}
else
{
if (HEIBAI == 1)
{
PrintToChatAll("黑白状态下的%s 治愈了自己,拣回一条小命!", palyerName, targetName);
HEIBAI = 0;
}
}
return 0;
}
public Action:Event_PlayerDeath(Handle:event, String:name[], bool:dontBroadcast)
{
new victim = GetClientOfUserId(GetEventInt(event, "userid"));
new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
new var1;
if (GetClientTeam(victim) == 3)
{
decl String:name1[32];
GetClientName(attacker, name1, 32);
decl String:name2[32];
GetClientName(victim, name2, 32);
PrintToChatAll("%s ---击杀了---> %s", name1, name2);
}
new var2;
if (victim)
{
CreateTimer(15, Kickbot, victim, 0);
}
return Action:0;
}
public Action:Event_PlayerSpawn(Handle:event, String:event_name[], bool:dontBroadcast)
{
new Client = GetClientOfUserId(GetEventInt(event, "userid"));
new var1;
if (Client)
{
CountAlivePlayers();
CreateTimer(10, Difficult, Client, 0);
}
return Action:0;
}
public Action:rescue_door_open(Handle:event, String:event_name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
new var1;
if (client)
{
PrintToChatAll("玩家 %N 打开了复活门!注意:复活门应满3人时开启!", client);
}
return Action:0;
}
public OnClientDisconnect(client)
{
if (IsFakeClient(client))
{
return 0;
}
CreateTimer(10, Difficult, client, 0);
if (player_number <= 1)
{
if (TANKSB == 1)
{
TANKSB = 0;
}
}
return 0;
}
public Action:Kickbot(Handle:timer, client)
{
new var1;
if (IsClientInGame(client))
{
new var2;
if (IsFakeClient(client))
{
KickClient(client, "");
PrintToChatAll("[无邪提示]系统已踢出死亡或闲置 15秒 以上的电脑bot", client);
}
}
return Action:0;
}
public Action:Event_RoundStart(Handle:event, String:event_name[], bool:dontBroadcast)
{
new i = 1;
while (i <= MaxClients) {
new var1;
if (i)
{
CountAlivePlayers();
i++;
}
i++;
}
TANKSA = 0;
return Action:0;
}
public Action:Difficult(Handle:timer, client)
{
new var1;
if (player_number >= 0)
{
ServerCommand("z_difficulty Normal");
SetConVarInt(FindConVar("z_gas_limit"), 1, false, false);
SetConVarInt(FindConVar("z_exploding_limit"), 1, false, false);
SetConVarInt(FindConVar("z_hunter_limit"), 1, false, false);
}
new var2;
if (player_number > 3)
{
ServerCommand("z_difficulty Hard");
SetConVarInt(FindConVar("z_gas_limit"), 2, false, false);
SetConVarInt(FindConVar("z_exploding_limit"), 2, false, false);
SetConVarInt(FindConVar("z_hunter_limit"), 2, false, false);
}
new var3;
if (player_number > 5)
{
ServerCommand("z_difficulty Impossible");
SetConVarInt(FindConVar("z_gas_limit"), 3, false, false);
SetConVarInt(FindConVar("z_exploding_limit"), 4, false, false);
SetConVarInt(FindConVar("z_hunter_limit"), 4, false, false);
}
if (player_number > 9)
{
ServerCommand("z_difficulty Impossible");
SetConVarInt(FindConVar("z_gas_limit"), 5, false, false);
SetConVarInt(FindConVar("z_exploding_limit"), 5, false, false);
SetConVarInt(FindConVar("z_hunter_limit"), 5, false, false);
}
return Action:0;
}
public Action:DifficultShow(Handle:timer, client)
{
new var1;
if (player_number >= 0)
{
PrintToChatAll("[无邪提示]当前玩家总数为 %d人 服务器难度为 ☆普通模式☆", 636);
CreateTimer(240, DifficultShow, client, 0);
}
new var2;
if (player_number > 3)
{
PrintToChatAll("[无邪提示]当前玩家总数为 %d人 服务器难度为 ☆高级模式☆", 636);
CreateTimer(240, DifficultShow, client, 0);
}
new var3;
if (player_number > 5)
{
PrintToChatAll("[无邪提示]当前玩家总数为 %d人 服务器难度为 ☆专家模式☆", 636);
CreateTimer(240, DifficultShow, client, 0);
}
if (player_number > 9)
{
PrintToChatAll("[无邪提示]当前玩家总数为 %d人 服务器难度为 ☆炼狱模式☆", 636);
CreateTimer(240, DifficultShow, client, 0);
}
return Action:0;
}
StripAndExecuteClientCommand(client, String:command[], String:param1[], String:param2[], String:param3[])
{
new flags = GetCommandFlags(command);
SetCommandFlags(command, flags & -16385);
FakeClientCommand(client, "%s %s %s %s", command, param1, param2, param3);
SetCommandFlags(command, flags);
return 0;
}
CheatCommand(Client, String:command[], String:arguments[])
{
if (!Client)
{
return 0;
}
new admindata = GetUserFlagBits(Client);
SetUserFlagBits(Client, 16384);
new flags = GetCommandFlags(command);
SetCommandFlags(command, flags & -16385);
FakeClientCommand(Client, "%s %s", command, arguments);
SetCommandFlags(command, flags);
SetUserFlagBits(Client, admindata);
return 0;
}
public SetGameDifficulty()
{
SuperTank_Health[4] = GetConVarInt(cvar_TANK_HPDD) * player_num + GetConVarInt(sm_tank_health_max);
SuperTank_Health[8] = GetConVarInt(cvar_TANK_GPS) * player_num + GetConVarInt(sm_tank_health_second);
SuperTank_Health[12] = GetConVarInt(cvar_TANK_GPS) * player_num + GetConVarInt(sm_tank_health_third);
SuperTank_Health[16] = GetConVarInt(cvar_TANK_GPS) * player_num + GetConVarInt(sm_tank_health_fourth);
SuperTank_Health[0] = GetConVarInt(cvar_TANK_GPS) * player_num + GetConVarInt(sm_tank_health_fifth);
return 0;
}
public Action:Menu_TDSADWQDQW(Client, args)
{
MenuFunc_TANKHP(Client);
return Action:3;
}
public Action:MenuFunc_TANKHP(Client)
{
new Handle:menu = CreatePanel(Handle:0);
decl String:line[1024];
Format(line, 1024, "");
SetPanelTitle(menu, line, false);
Format(line, 1024, "☆☆☆开启TANK分裂模式☆☆☆");
DrawPanelItem(menu, line, 0);
Format(line, 1024, "☆☆☆关闭TANK分裂模式☆☆☆");
DrawPanelItem(menu, line, 0);
DrawPanelItem(menu, "离开", 1);
SendPanelToClient(menu, Client, MenuHandler:35, 0);
return Action:3;
}
public TANKA(Client)
{
if (TANKSB)
{
if (TANKSB == 1)
{
TANKSB = 1;
PrintToChat(Client, "[无邪提示]TANK分裂模式运行中,无需重复开启!");
}
}
else
{
TANKSB = 1;
PrintToChatAll("[管理员] %N 开启了TANK分裂模式难度加强!", Client);
}
return 0;
}
public TANKB(Client)
{
if (TANKSB == 1)
{
TANKSB = 0;
PrintToChatAll("[管理员] %N 关闭了TANK分裂模式难度还原!", Client);
}
else
{
if (TANKSB)
{
}
else
{
TANKSB = 0;
PrintToChat(Client, "[无邪提示]TANK分裂模式关闭中,无需重复操作!");
}
}
return 0;
}
public Action:witch_harasser(Handle:event, String:name[], bool:dontBroadcast)
{
new Client = GetClientOfUserId(GetEventInt(event, "userid"));
new var1;
if (IsClientInGame(Client))
{
new rnditemNum = GetRandomInt(0, 2);
switch (rnditemNum) {
case 0: {
PrintToChatAll("%N这货强奸witch未遂,妹子正在满世界追杀主角!", Client);
return Action:0;
}
case 1: {
PrintToChatAll("%N惊扰了witch,处境不妙!求支援求掩护!", Client);
return Action:0;
}
case 2: {
PrintToChatAll("%N爱装逼,一枪打在witch的脚上,目前这货已落荒而逃!", Client);
return Action:0;
}
default: {
}
}
}
return Action:0;
}
public Action:Event_Witch_Death(Handle:event, String:name[], bool:dontBroadcast)
{
new killer = GetClientOfUserId(GetEventInt(event, "userid"));
new var1;
if (IsClientInGame(killer))
{
new rnditemNum = GetRandomInt(0, 8);
switch (rnditemNum) {
case 0: {
new hardhp = GetClientHealth(killer) + 6;
SetEntityHealth(killer, hardhp + 6);
PrintToChatAll("%N一枪秒掉了witch,太帅了![hp+12]", killer);
return Action:0;
}
case 1: {
decl String:command[8];
StripAndExecuteClientCommand(killer, command, "pipe_bomb", "", "");
PrintToChatAll("%N一枪秒掉了witch缴获 [土质炸弹]", killer);
return Action:0;
}
case 2: {
decl String:command[8];
StripAndExecuteClientCommand(killer, command, "molotov", "", "");
PrintToChatAll("%N一枪秒掉了witch缴获 [燃烧瓶]", killer);
return Action:0;
}
case 3: {
decl String:command[8];
StripAndExecuteClientCommand(killer, command, "pain_pills", "", "");
PrintToChatAll("%N一枪秒掉了witch缴获 [止痛药]", killer);
return Action:0;
}
case 4: {
new hardhp = GetClientHealth(killer) + 2;
SetEntityHealth(killer, hardhp + 2);
PrintToChatAll("%N一枪秒掉了witch,还好没打偏![hp+4]", killer);
return Action:0;
}
case 5: {
new hardhp = GetClientHealth(killer) + 4;
SetEntityHealth(killer, hardhp + 4);
PrintToChatAll("%N一枪秒掉了witch,潇洒的很![hp+8]", killer);
return Action:0;
}
case 6: {
new hardhp = GetClientHealth(killer) + 10;
SetEntityHealth(killer, hardhp + 10);
PrintToChatAll("%N处决了witch,手法干净利落,当属神级秒杀![hp+20]", killer);
return Action:0;
}
case 7: {
new hardhp = GetClientHealth(killer) + 2;
SetEntityHealth(killer, hardhp + 2);
PrintToChatAll("%N一枪秒掉了witch,还好没打偏![hp+4]", killer);
return Action:0;
}
case 8: {
new hardhp = GetClientHealth(killer) + 4;
SetEntityHealth(killer, hardhp + 4);
PrintToChatAll("%N一枪秒掉了witch,潇洒的很![hp+8]", killer);
return Action:0;
}
default: {
}
}
}
new var2;
if (IsClientInGame(killer))
{
new rnditemNum = GetRandomInt(0, 13);
switch (rnditemNum) {
case 0: {
decl String:command[28];
StripAndExecuteClientCommand(killer, command, "", "", "");
PrintToChatAll("%N补上一枪杀死了witch,尖叫声引来大量僵尸围观!", killer);
return Action:0;
}
case 1: {
PrintToChatAll("%N补上一枪杀死了witch,好样的!", killer);
return Action:0;
}
case 2: {
decl String:command[8];
StripAndExecuteClientCommand(killer, command, "hunter", "auto", "");
StripAndExecuteClientCommand(killer, command, "hunter", "auto", "");
StripAndExecuteClientCommand(killer, command, "smoker", "auto", "");
StripAndExecuteClientCommand(killer, command, "smoker", "auto", "");
StripAndExecuteClientCommand(killer, command, "boomer", "auto", "");
StripAndExecuteClientCommand(killer, command, "boomer", "auto", "");
PrintToChatAll("%N补上一枪杀死了witch,尖叫声引来附近的一群特感!", killer);
return Action:0;
}
case 3: {
PrintToChatAll("%N补上一枪杀死了witch,好样的!", killer);
return Action:0;
}
case 4: {
decl String:command[28];
StripAndExecuteClientCommand(killer, command, "", "", "");
PrintToChatAll("%N补上一枪杀死了witch,尖叫声引来大量僵尸围观!", killer);
return Action:0;
}
case 5: {
PrintToChatAll("%N补上一枪杀死了witch,好样的!", killer);
return Action:0;
}
case 6: {
decl String:command[28];
StripAndExecuteClientCommand(killer, command, "", "", "");
PrintToChatAll("%N补上一枪杀死了Witch,尖叫声引来大量僵尸和一只Tank!", killer);
TANKSA = 4;
StripAndExecuteClientCommand(killer, command, "tank", "auto", "");
new j = 1;
while (j <= MaxClients) {
if (IsClientInGame(j))
{
EmitSoundToClient(j, "npc/witch/voice/attack/Female_DistantScream1.wav", -2, 0, 75, 0, 1, 100, -1, NULL_VECTOR, NULL_VECTOR, true, 0);
j++;
}
j++;
}
return Action:0;
}
case 7: {
PrintToChatAll("%N补上一枪杀死了witch,好样的!", killer);
return Action:0;
}
case 8: {
decl String:command[28];
StripAndExecuteClientCommand(killer, command, "", "", "");
PrintToChatAll("%N补上一枪杀死了witch,尖叫声引来大量僵尸围观!", killer);
return Action:0;
}
case 9: {
PrintToChatAll("%N补上一枪杀死了witch,好样的!", killer);
return Action:0;
}
case 10: {
PrintToChatAll("%N补上一枪杀死了witch,尖叫声引来附近一只Tank!", killer);
TANKSA = 4;
decl String:command[8];
StripAndExecuteClientCommand(killer, command, "tank", "auto", "");
new j = 1;
while (j <= MaxClients) {
if (IsClientInGame(j))
{
EmitSoundToClient(j, "npc/witch/voice/attack/Female_DistantScream1.wav", -2, 0, 75, 0, 1, 100, -1, NULL_VECTOR, NULL_VECTOR, true, 0);
j++;
}
j++;
}
return Action:0;
}
case 11: {
PrintToChatAll("%N补上一枪杀死了witch,好样的!", killer);
return Action:0;
}
case 12: {
PrintToChatAll("%N补上一枪杀死了witch,好样的!", killer);
return Action:0;
}
case 13: {
PrintToChatAll("%N补上一枪杀死了witch,好样的!", killer);
return Action:0;
}
default: {
}
}
}
new var3;
if (killer)
{
PrintToChatAll("哈哈!witch被tank拍死了,原来僵尸也爱家暴!", killer);
return Action:0;
}
return Action:0;
}
public Action:Event_Tank_Death(Handle:event, String:name[], bool:dontBroadcast)
{
new victim = GetClientOfUserId(GetEventInt(event, "userid"));
new iClass = GetEntProp(victim, PropType:0, "m_zombieClass", 4);
new killer = GetClientOfUserId(GetEventInt(event, "attacker"));
new var1;
if (iClass == 5)
{
GetClientAbsOrigin(victim, DeathPos);
new rnditemNum = GetRandomInt(0, 9);
switch (rnditemNum) {
case 0: {
PrintToChatAll("由于坦克信耶稣,所以果断复活了,吓的%N差点尿裤子!", killer);
TANKSA = 1;
CheatCommand(killer, "z_spawn", "tank");
new j = 1;
while (j <= MaxClients) {
if (IsClientInGame(j))
{
EmitSoundToClient(j, "npc/witch/voice/attack/Female_DistantScream1.wav", -2, 0, 75, 0, 1, 100, -1, NULL_VECTOR, NULL_VECTOR, true, 0);
j++;
}
j++;
}
return Action:0;
}
case 1: {
new hardhp = GetClientHealth(killer) + 5;
SetEntityHealth(killer, hardhp + 5);
PrintToChatAll("%N凭借风骚的脚步累死了tank,牛人啊![hp+10]", killer);
return Action:0;
}
case 2: {
decl String:command[8];
StripAndExecuteClientCommand(killer, command, "autoshotgun", "", "");
PrintToChatAll("%N最终击毙tank,缴获 [连发散弹枪]", killer);
return Action:0;
}
case 3: {
new hardhp = GetClientHealth(killer) + 10;
SetEntityHealth(killer, hardhp + 10);
PrintToChatAll("%N大显神威,凭借凶猛的火力干掉了tank,赞一个![hp+20]", killer);
return Action:0;
}
case 4: {
decl String:command[8];
StripAndExecuteClientCommand(killer, command, "first_aid_kit", "", "");
PrintToChatAll("%N补上最后一枪,杀死了tank,缴获 [药包]", killer);
return Action:0;
}
case 5: {
PrintToChatAll("由于坦克信耶稣,所以果断复活了,吓的%N差点尿裤子!", killer);
TANKSA = 1;
CheatCommand(killer, "z_spawn", "tank");
new j = 1;
while (j <= MaxClients) {
if (IsClientInGame(j))
{
EmitSoundToClient(j, "npc/witch/voice/attack/Female_DistantScream1.wav", -2, 0, 75, 0, 1, 100, -1, NULL_VECTOR, NULL_VECTOR, true, 0);
j++;
}
j++;
}
return Action:0;
}
case 6: {
decl String:command[8];
StripAndExecuteClientCommand(killer, command, "pain_pills", "", "");
PrintToChatAll("%N补上最后一枪,杀死了tank,缴获 [止痛药]", killer);
return Action:0;
}
case 7: {
new hardhp = GetClientHealth(killer) + 5;
SetEntityHealth(killer, hardhp + 5);
PrintToChatAll("%N凭借风骚的脚步累死了tank,牛人啊![hp+10]", killer);
return Action:0;
}
case 8: {
new hardhp = GetClientHealth(killer) + 5;
SetEntityHealth(killer, hardhp + 5);
PrintToChatAll("%N凭借风骚的脚步累死了tank,牛人啊![hp+10]", killer);
return Action:0;
}
case 9: {
decl String:command[8];
StripAndExecuteClientCommand(killer, command, "autoshotgun", "", "");
PrintToChatAll("%N最终击毙tank,缴获 [连发散弹枪]", killer);
return Action:0;
}
default: {
}
}
}
return Action:0;
}
public Action:player_death_witch(Handle:event, String:name[], bool:dontBroadcast)
{
new victim = GetClientOfUserId(GetEventInt(event, "userid"));
new witch = GetEventInt(event, "attackerentid");
new var1;
if (victim > 0)
{
new var2;
if (IsClientInGame(victim))
{
GetClientAbsOrigin(victim, DeathPos);
new rnditemNum = GetRandomInt(0, 2);
switch (rnditemNum) {
case 0: {
PrintToChatAll("%N因为腿短跑的慢,被witch抓死了,变成一只小僵尸!", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return Action:0;
}
case 1: {
PrintToChatAll("哦买噶!%N被witch抓死了,变成了一只tank", victim);
TANKSA = 3;
decl String:command[8];
StripAndExecuteClientCommand(victim, command, "tank", "", "");
new j = 1;
while (j <= MaxClients) {
if (IsClientInGame(j))
{
EmitSoundToClient(j, "npc/witch/voice/attack/Female_DistantScream1.wav", -2, 0, 75, 0, 1, 100, -1, NULL_VECTOR, NULL_VECTOR, true, 0);
j++;
}
j++;
}
return Action:0;
}
case 2: {
PrintToChatAll("%N被witch抓死了,变成一只小僵尸,让你再乱惹妹子!", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return Action:0;
}
default: {
}
}
}
}
return Action:0;
}
IsValidWitch(witch)
{
new var1;
if (IsValidEdict(witch))
{
decl String:classname[32];
GetEdictClassname(witch, classname, 32);
if (StrEqual(classname, "witch", true))
{
return 1;
}
}
return 0;
}
public player_death_tank(Handle:event, String:name[], bool:dontBroadcast)
{
new victim = GetClientOfUserId(GetEventInt(event, "userid"));
new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
new var1;
if (attacker)
{
GetClientAbsOrigin(victim, DeathPos);
new rnditemNum = GetRandomInt(0, 13);
switch (rnditemNum) {
case 0: {
new hardhp = GetClientHealth(attacker) + 750;
SetEntityHealth(attacker, hardhp + 750);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量1500点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 1: {
new hardhp = GetClientHealth(attacker) + 1000;
SetEntityHealth(attacker, hardhp + 1000);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量2000点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 2: {
new hardhp = GetClientHealth(attacker) + 500;
SetEntityHealth(attacker, hardhp + 500);
PrintToChatAll("%N被Tank杀死了,变成一只坦克,tank吸取血量1000点", victim);
TANKSA = 2;
CheatCommand(victim, "z_spawn", "tank");
new j = 1;
while (j <= MaxClients) {
if (IsClientInGame(j))
{
EmitSoundToClient(j, "npc/witch/voice/attack/Female_DistantScream1.wav", -2, 0, 75, 0, 1, 100, -1, NULL_VECTOR, NULL_VECTOR, true, 0);
j++;
}
j++;
}
return 0;
}
case 3: {
new hardhp = GetClientHealth(attacker) + 1250;
SetEntityHealth(attacker, hardhp + 1250);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量2500点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 4: {
new hardhp = GetClientHealth(attacker) + 1500;
SetEntityHealth(attacker, hardhp + 1500);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量3000点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 5: {
new hardhp = GetClientHealth(attacker) + 1750;
SetEntityHealth(attacker, hardhp + 1750);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量3500点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 6: {
new hardhp = GetClientHealth(attacker) + 750;
SetEntityHealth(attacker, hardhp + 750);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量1500点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 7: {
new hardhp = GetClientHealth(attacker) + 1000;
SetEntityHealth(attacker, hardhp + 1000);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量2000点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 8: {
new hardhp = GetClientHealth(attacker) + 1250;
SetEntityHealth(attacker, hardhp + 1250);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量2500点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 9: {
new hardhp = GetClientHealth(attacker) + 1500;
SetEntityHealth(attacker, hardhp + 1500);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量3000点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 10: {
new hardhp = GetClientHealth(attacker) + 1750;
SetEntityHealth(attacker, hardhp + 1750);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量3500点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 11: {
new hardhp = GetClientHealth(attacker) + 750;
SetEntityHealth(attacker, hardhp + 750);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量1500点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 12: {
new hardhp = GetClientHealth(attacker) + 750;
SetEntityHealth(attacker, hardhp + 750);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量1500点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
case 13: {
new hardhp = GetClientHealth(attacker) + 1000;
SetEntityHealth(attacker, hardhp + 1000);
PrintToChatAll("%N被Tank杀死了,变成一只小僵尸,tank吸取血量2000点", victim);
CreateTimer(0.8, Boome_z_spawn, victim, 0);
return 0;
}
default: {
}
}
}
return 0;
}
我只能帮你们到这了,如编译有错误自行修复!