Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Anti Resp Camper
Vadim0890 Дата: Суббота, 11.12.2021, 15:42:36 | Сообщение # 1
Сообщений: 29
Репутация: 0 [ +/- ]
Доброго времени суток, кто сможет переписать данный плагин под карту $2000$ ? Знаю, плагин старый и писал его wS, но вдруг кто то перепишет или подскаже где что изменить в исходнике.

Гости не могут скачивать файлы
 
_wS_ Дата: Суббота, 11.12.2021, 17:05:51 | Сообщение # 2
Я подскажу, что нужно сделать, но и ты приложи усилия, чтобы сделать это, т.к. несложно =)

Строка 51, делаем:
Код
g_DeDust2 = strcmp(map, "$2000$", false) == 0;


Строка 81, цифры 287.213989, 2379.562988, -62.471825 это центр кемпер-зоны CT.
Тебе нужно встать в центр этой зоны и прописать в консоль getpos.
Увидим что-то вроде:

Код
setpos 448.000000 2464.000000 -50.009918;setang 0.000000 -105.001831 0.000000


Нужные координаты это 448.0, 2464.0, -50.0
Так же и со строкой 87 (-438.841675, -825.200195, 179.639648), это центр кемпер-зоны T.

Ну и компилируем (инструкций в сети хватает, например, здесь, в первом уроке).
 
Vadim0890 Дата: Суббота, 11.12.2021, 17:26:23 | Сообщение # 3
Сообщений: 29
Репутация: 0 [ +/- ]
Цитата _wS_ ()
Я подскажу, что нужно сделать, но и ты приложи усилия, чтобы сделать это, т.к. несложно =)

Строка 51, делаем:
g_DeDust2 = strcmp(map, "$2000$", false) == 0;

Строка 81, цифры 287.213989, 2379.562988, -62.471825 это центр кемпер-зоны CT.
Тебе нужно встать в центр этой зоны и прописать в консоль getpos.
Увидим что-то вроде:

setpos 448.000000 2464.000000 -50.009918;setang 0.000000 -105.001831 0.000000

Нужные координаты это 448.0, 2464.0, -50.0
Так же и со строкой 87 (-438.841675, -825.200195, 179.639648), это центр кемпер-зоны T.

Ну и компилируем (инструкций в сети хватает, например, здесь, в первом уроке).


Спасибо, координаты настроил, всё работает, подскажи ещё как можно сделать проверку таймера, например: игрок вышел с респы и когда возвращается на неё снова, то отсчёт времени был заново 30 сек. А так всё работает.
 
_wS_ Дата: Суббота, 11.12.2021, 17:55:59 | Сообщение # 4
Цитата Vadim0890 ()
игрок вышел с респы и когда возвращается на неё снова, то отсчёт времени был заново 30 сек


Код
wS_TrySlap(client, const Float:client_pos[3], Float:dist, Float:radius, bool:ct)
{
    if (dist <= radius && !(ct && 90.0 < client_pos[2] < 100.0))
    {
        if (++g_InZoneSec[client] > g_Sec)
        {
            SlapPlayer(client, g_Hp, true);
            PrintToChat(client, "\x04%N, покиньте респ", client);
        }
    }
    else{
        g_InZoneSec[client] = 0;
    }
}


Но тут проверка высоты есть "!(ct && 90.0 < client_pos[2] < 100.0)", не помню для чего делал, думаю тебе её удалить нужно, т.е. оставить только:
Код
if (dist <= radius)
 
Vadim0890 Дата: Суббота, 11.12.2021, 18:04:44 | Сообщение # 5
Сообщений: 29
Репутация: 0 [ +/- ]
Цитата _wS_ ()
wS_TrySlap(client, const Float:client_pos[3], Float:dist, Float:radius, bool:ct)
{
    if (dist <= radius && !(ct && 90.0 < client_pos[2] < 100.0))
    {
        if (++g_InZoneSec[client] > g_Sec)
        {
            SlapPlayer(client, g_Hp, true);
            PrintToChat(client, "\x04%N, покиньте респ", client);
        }
    }
    else{
        g_InZoneSec[client] = 0;
    }
}

Но тут проверка высоты есть "!(ct && 90.0 < client_pos[2] < 100.0)", не помню для чего делал, думаю тебе её удалить нужно, т.е. оставить только:
if (dist <= radius)


Спасибо огромное, всё работает.

Добавлено (29.12.2021, 10:52:47)
---------------------------------------------
_wS_, Можно ещё попросить помочь сделать проверку когда 1 игрок на сервере, плагин его не трогает, то есть начинает работать если на сервере более 1 игрока. И если раунд завершился, то наказание не применяется к игрокам которые на респе.

 
_wS_ Дата: Суббота, 01.01.2022, 02:33:40 | Сообщение # 6
Цитата Vadim0890 ()
_wS_, Можно ещё попросить помочь сделать проверку когда 1 игрок на сервере, плагин его не трогает, то есть начинает работать если на сервере более 1 игрока. И если раунд завершился, то наказание не применяется к игрокам которые на респе.


1. Создать глобальную переменную:

Код
new bool:g_bRoundEnded = false;


2. В round_start добавить:

Код
g_bRoundEnded = false;


3. В OnPluginStart() добавить:

Код
HookEvent("round_end", Event_round_end, EventHookMode_PostNoCopy);


4. Добавить:

Код
public Event_round_end(Handle:event, const String:name[], bool:dontBroadcast)
{
    g_bRoundEnded = true;
}

bool:IsAlone(client)
{
    for (new i = 1; i <= MaxClients; i++) {
        if (i != client && IsClientInGame(i) && IsPlayerAlive(i)) {
            return false;
        }
    }
    return true;
}


5. Найти и заменить:

Код
// Это
if (++g_InZoneSec[client] > g_Sec)

// На это
if (++g_InZoneSec[client] > g_Sec && !g_bRoundEnded && !IsAlone(client))
 
  • Страница 1 из 1
  • 1
Поиск: