filipok
Участник
- Сообщения
- 72
- Реакции
- 28
Доброго времени суток, друзья.
Чего хочу добиться: получаем зону карты, в которой находится игрок, если она совпадает с любой из зон, указанной в массиве de_dust2[] ---> поджигаем игрока.
Но не получается ничего. Цикл не срабатывает. Код выполняется только в отношении первой ячейки массива de_dust2[] ("OutsideTunnel"). Т.е. при нахождении игрока на зонах карты кроме "OutsideTunnel" ничего не происходит. Игрок горит только находясь в зоне "OutsideTunnel".
Где я ошибся?
Чего хочу добиться: получаем зону карты, в которой находится игрок, если она совпадает с любой из зон, указанной в массиве de_dust2[] ---> поджигаем игрока.
Но не получается ничего. Цикл не срабатывает. Код выполняется только в отношении первой ячейки массива de_dust2[] ("OutsideTunnel"). Т.е. при нахождении игрока на зонах карты кроме "OutsideTunnel" ничего не происходит. Игрок горит только находясь в зоне "OutsideTunnel".
PHP:
static String:de_dust2[] = {
"OutsideTunnel",
"UpperTunnel",
"LowerTunnel",
"Middle",
"MidDoors",
"BDoors"
};
public void OnClientPostAdminCheck(int client){
if(IsCorrectMap && !IsFakeClient(client)){
SDKHook(client, SDKHook_PostThinkPost, OnPostThinkPost);
CountPlayers = GetClientCount();
}
}
public void OnPostThinkPost(int client){
static String:location[16];
GetEntPropString(client, Prop_Send, "m_szLastPlaceName", location, sizeof(location));
if( CountPlayers < MAX_PLAYERS_WHITHOUT_MIDDLE ){
for (new i = 0; i < sizeof(de_dust2); i++){
if (StrEqual(location, de_dust2[i])){
PrintToChat(client, "Не ходи на Б!!!");
if(IsPlayerAlive(client)) IgniteEntity(client, 3.8);
}
}
}
}
PHP:
public void OnClientPostAdminCheck(int client){
if(IsCorrectMap && !IsFakeClient(client)){
SDKHook(client, SDKHook_PostThinkPost, OnPostThinkPost);
CountPlayers = GetClientCount();
}
}
public void OnPostThinkPost(int client){
static String:location[16];
GetEntPropString(client, Prop_Send, "m_szLastPlaceName", location, sizeof(location));
if( CountPlayers < MAX_PLAYERS_WHITHOUT_MIDDLE ){
if((StrEqual(location, "OutsideTunnel")) || (StrEqual(location, "MidDoors")) || (StrEqual(location, "BDoors")) || (StrEqual(location, "LowerTunnel")) || (StrEqual(location, "UpperTunnel")) || (StrEqual(location, "BombsiteB"))){
PrintToChat(client, "Не ходи на Б!!!");
if(IsPlayerAlive(client)) IgniteEntity(client, 10.8);
}
}
}
PHP:
#pragma semicolon 1
#include <sourcemod>
#include <sdkhooks>
#include <sdktools>
#define PLUGIN_MAINNAME "MapLimit"
#define PLUGIN_NAME "MapLimit"
#define PLUGIN_AUTHOR "filip fixed by AlmazON"
#define PLUGIN_VERSION "0.0.9"
#define MAX_PLAYERS_WHITHOUT_MIDDLE 10
static String:de_dust2[] = {
"OutsideTunnel",
"UpperTunnel",
"LowerTunnel",
"Middle",
"MidDoors",
"BDoors"
};
new bool:OneTimeNotify;
new bool:IsCorrectMap;
new CountPlayers;
public Plugin myinfo = {name = PLUGIN_MAINNAME, author = PLUGIN_AUTHOR, version = PLUGIN_VERSION}
public OnPluginStart()
{
HookEvent("round_freeze_end", Event_RoundFreezeEnd, EventHookMode_PostNoCopy);
RegAdminCmd("sm_place", WhereAmI, ADMFLAG_BAN);
}
public OnConfigsExecuted(){
decl String:mapname[32];
GetCurrentMap(mapname, sizeof(mapname));
IsCorrectMap = StrEqual(mapname, "de_dust2");
}
//////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////CheckZoneNameComand (for test)/////////////////////////////////////////////////////
public Action:WhereAmI(int client, args){
decl String:location[32];
GetEntPropString(client, Prop_Send, "m_szLastPlaceName", location, sizeof(location));
ReplyToCommand(client, "%N is in %s", client, location);
LogMessage("client %N is in %s", client, location);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
public void OnClientPostAdminCheck(int client){
if(IsCorrectMap && !IsFakeClient(client)){
SDKHook(client, SDKHook_PostThinkPost, OnPostThinkPost);
CountPlayers = GetClientCount();
}
}
public void OnPostThinkPost(int client){
static String:location[16];
GetEntPropString(client, Prop_Send, "m_szLastPlaceName", location, sizeof(location));
if( CountPlayers < MAX_PLAYERS_WHITHOUT_MIDDLE ){
for (new i = 0; i < sizeof(de_dust2); i++){
if (StrEqual(location, de_dust2[i])){
PrintToChat(client, "Не ходи на Б!!!");
if(IsPlayerAlive(client)) IgniteEntity(client, 3.8);
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////оповещения вначале раунда///////////////////////////////////////////////
public Event_RoundFreezeEnd(Handle:event, const String:name[], bool:dontBroadcast) {
if ( IsCorrectMap ) {
if (GetClientCount() < MAX_PLAYERS_WHITHOUT_MIDDLE){
PrintHintTextToAll("Проходы на Б и мидл запрещены, на сервере менее %d игроков", MAX_PLAYERS_WHITHOUT_MIDDLE);
OneTimeNotify = true;
}
else if (OneTimeNotify){
PrintHintTextToAll("Играет полная карта");
OneTimeNotify = false;
}
}
}
Где я ошибся?