Написание плагинов

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@₮αй₮оβый, поправил код и добавил исходник со скомпилированными плагинами для SM1.8 и SM1.10
 

acrobite

Участник
Сообщения
182
Реакции
33
Прошу помочь подредактировать плагин. Делов на пару мин.
Нужно убрать проверку на freeze(заморозку). Из-за квара mp_freezetime 1< плагин багается и некоторые предметы пропадают. Разраб плагина не хочет фиксить баг) При кваре mp_freezetime 0 предметы не багаются. Но мне нужна замарозка в начале раунда.
Заранее благодарен.
 

Вложения

  • BlockingZones.sp
    29.3 КБ · Просмотры: 16

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@acrobite, что-то посмотрел код и не увидел ничего такого, из-за чего мог бы быть такой баг.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@acrobite, ты про это?
Добавил 17 сеток. Каждый раунд одна из 17 сеток пропадает, может 1, 7 или 10(рандомно). csgo
эта проблема возникает при 15 и более игроках.
UsePlayersBZ "0"

Попробуй эту версию (при создании пропов через конфиг в консоли сервера будет писаться "Items created: %число%"):
 

Вложения

  • BlockingZones 1.3_debug.sp
    27 КБ · Просмотры: 14

acrobite

Участник
Сообщения
182
Реакции
33
@acrobite, ты про это?

Попробуй эту версию (при создании пропов через конфиг в консоли сервера будет писаться "Items created: %число%"):
Не работает. Items created: 0
Хотя есть в файле уже созданные и сохраненные предметы. + не создается предмет через админку.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@acrobite, в строке 753 замени if(iEntity != -1) return false; на if(iEntity == -1) return false;
Потому и 0.

Перезалил файл с исправлением.
 

acrobite

Участник
Сообщения
182
Реакции
33
@acrobite, в строке 753 замени if(iEntity != -1) return false; на if(iEntity == -1) return false;
Потому и 0.

Перезалил файл с исправлением.
И что должно измениться? В консольке пишет Items created: 15 , да, всего их 15. Но заспавлено 14 из 15, 1 рандомная сетка пропадает.
 

acrobite

Участник
Сообщения
182
Реакции
33
Может просто с квотой проблема?
Подсчет игроков выключен.
--- Добавлено позже ---
HookEvent("round_freeze_end", RoundFreezeEnd, EventHookMode_PostNoCopy);
заменил на
HookEvent("round_start", RoundStart, EventHookMode_PostNoCopy);

И все пашет, я не знаю, насколько это правильно, но теперь работает без багов. Жалко, что поздно додумался это сделать.
 

Вложения

  • BlockingZones 1.3.sp
    26.9 КБ · Просмотры: 12
Последнее редактирование:

Mr.Black

Участник
Сообщения
145
Реакции
61
Доброго времени суток!
Помогите, пожалуйста, пофиксить плагин. Выдёт в error_log такие строчки
L 04/07/2019 - 18:26:12: [SM] Exception reported: Client index 281 is invalid
L 04/07/2019 - 18:26:12: [SM] Blaming: noffknife.smx
L 04/07/2019 - 18:26:12: [SM] Call stack trace:
L 04/07/2019 - 18:26:12: [SM] [0] GetClientTeam
L 04/07/2019 - 18:26:12: [SM] [1] Line 21, C:\Users\Admin\Desktop\sourcemod\scripting\noffknife.sp::TraceAttack
L 04/07/2019 - 18:26:12: [SM] Exception reported: Client index 281 is invalid
L 04/07/2019 - 18:26:12: [SM] Blaming: noffknife.smx
L 04/07/2019 - 18:26:12: [SM] Call stack trace:
L 04/07/2019 - 18:26:12: [SM] [0] GetClientTeam
L 04/07/2019 - 18:26:12: [SM] [1] Line 21, C:\Users\Admin\Desktop\sourcemod\scripting\noffknife.sp::TraceAttack
L 04/07/2019 - 18:26:12: [SM] Exception reported: Client index 281 is invalid
L 04/07/2019 - 18:26:12: [SM] Blaming: noffknife.smx
L 04/07/2019 - 18:26:12: [SM] Call stack trace:
L 04/07/2019 - 18:26:12: [SM] [0] GetClientTeam
L 04/07/2019 - 18:26:12: [SM] [1] Line 21, C:\Users\Admin\Desktop\sourcemod\scripting\noffknife.sp::TraceAttack
При этом сам плагин работает отлично! Но хотелось бы, чтобы не ср*л в лог.
C-подобный:
public void OnClientPutInServer(int iClient)
{
    SDKHook(iClient, SDKHook_TraceAttack, TraceAttack);
}

public Action TraceAttack(int iVictim, int &iAttacker, int &iInflictor, float &damage, int &damagetype, int &ammotype, int hitbox, int hitgroup)
{
    return (iAttacker > 0 && GetClientTeam(iVictim) == GetClientTeam(iAttacker) && damagetype != DMG_BLAST) ? Plugin_Stop:Plugin_Continue;
}
 

kleuser

Участник
Сообщения
1,838
Реакции
733
Помогите пожалуйста. Отыскал некий плагин для блокировки +left +right и немного его подредачил чтобы убивало.
Так вот, помогите сделать проверку чтобы убивало только КТ, а Т не убивало.

PHP:
#include <sourcemod>
#include <profiler>
#include <sdktools>
#include <csgo_colors>

public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon)
{
    if ((buttons & IN_LEFT) || (buttons & IN_RIGHT))
    {
        if(IsClientInGame(client) && !IsFakeClient(client) && IsPlayerAlive(client))
        {
            ForcePlayerSuicide(client);
            CGOPrintToChat(client, "{GRAY}[{LIGHTBLUE}CONSOLE{GRAY}]{LIGHTRED} Запрещено использовать {RED}+left +right. {LIGHTRED}Играйте честно!");
        }
    }
    return Plugin_Continue;
}
 

Kruzya

Участник
Сообщения
12,974
Реакции
10,938
@kleuser,
PHP:
#include <sourcemod>
#include <sdktools>
#include <csgo_colors>

public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon)
{
    if ((buttons & IN_LEFT) || (buttons & IN_RIGHT))
    {
        if(IsClientInGame(client) && !IsFakeClient(client) && IsPlayerAlive(client) && GetClientTeam(client) == 3)
        {
            ForcePlayerSuicide(client);
            CGOPrintToChat(client, "{GRAY}[{LIGHTBLUE}CONSOLE{GRAY}]{LIGHTRED} Запрещено использовать {RED}+left +right. {LIGHTRED}Играйте честно!");
        }
    }
    return Plugin_Continue;
}

Оффтоп
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@Mr.Black, пробуй
PHP:
public void OnClientPostAdminCheck(int iClient)
{
    SDKHook(iClient, SDKHook_TraceAttack, TraceAttack);
}

public Action TraceAttack(int iVictim, int &iAttacker, int &iInflictor, float &damage, int &damagetype, int &ammotype, int hitbox, int hitgroup)
{
    return iAttacker > 0 && iAttacker <= MaxClients && damagetype != DMG_BLAST && GetClientTeam(iVictim) == GetClientTeam(iAttacker) ? Plugin_Handled : Plugin_Continue;
}
--- Добавлено позже ---
@Крузяра, тогда уж лучше так:
PHP:
#include <sdktools_hooks>
#include <sdktools_functions>
#include <csgo_colors>

public void OnPlayerRunCmdPost(int client, int buttons)
{
    if(buttons & (IN_LEFT|IN_RIGHT) && !IsFakeClient(client) && IsPlayerAlive(client) && GetClientTeam(client) == 3)
    {
        ForcePlayerSuicide(client);
        CGOPrintToChat(client, "{GRAY}[{LIGHTBLUE}CONSOLE{GRAY}]{LIGHTRED} Запрещено использовать {RED}+left +right{LIGHTRED}. Играйте честно!");
    }
}
 
Последнее редактирование:

Kruzya

Участник
Сообщения
12,974
Реакции
10,938
@Grey83, я тогда же исправил (см. оригинальный пост, на который я сослался), но у того человека, который тестил, всё равно не работало. Мы уже тогда в ЛС общались.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
Вообще основные изменения в том, что убрана проверка на нахождение игрока в игре (как можно отловить нажатия игрока, который ещё не подключился? :biggrin: ), все проверки в одну строку сделал и сделал обработку в void OnPlayerRunCmdPost (т.к. кнопки не блокируются, то и возвращать ничего не нужно).
Ну и уменьшил количество инклюдов (так скомпиленный плагин меньше получится)
 

Kruzya

Участник
Сообщения
12,974
Реакции
10,938
как можно отловить нажатия игрока, который ещё не подключился? :biggrin:
Пффф, запросто. Клиент шлёт иногда пинги во время коннекта (например, когда файлы загружает, чтобы сервер не отключал его), от которых срабатывает OnPlayerRunCmd()...

Ну и уменьшил количество инклюдов (так скомпиленный плагин меньше получится)
Размер всё равно никак не влияет на работоспособность.
 

Туник

Участник
Сообщения
1,281
Реакции
264
Может кто написать легкий плагин на выдачу на карте 35хп, хочу сделать 1 карту ножевую но там 100хп дается!
 
Сверху Снизу