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

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Скорее всего так
C++:
enum iList
{
    char iName[64],                   // Имя
    bool iThis[MAXPLAYERS+1],         // Кто в ней
    float posA[3],                    // Координата А
    float posB[3],                    // Координата B
    float posM[3],                    // Координата центра
    int iVis,                         // Кому видна
    int iTeam                         // Какую команду триггерит
};

int g_iZones[MAX_ZONES][iList];
C-подобный:
Не удается найти указанный файл.

C:\Users\admin\Desktop\scripting>spcomp.exe C:\Users\admin\Desktop\scripting\devzones.sp
SourcePawn Compiler 1.10.0.6428
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2018 AlliedModders LLC

C:\Users\admin\Desktop\scripting\devzones.sp(53) : error 001: expected token: "-identifier-", but fo
und "char"
C:\Users\admin\Desktop\scripting\devzones.sp(55) : error 010: invalid function or declaration
devzones\api.sp(67) : error 033: array must be indexed (variable "liName")
devzones\api.sp(70) : error 033: array must be indexed (variable "liName")
devzones\api.sp(83) : error 033: array must be indexed (variable "liName")
C:\Users\admin\Desktop\scripting\devzones.sp(205) : error 033: array must be indexed (variable "liNa
me")
C:\Users\admin\Desktop\scripting\devzones.sp(230) : error 033: array must be indexed (variable "liNa
me")
C:\Users\admin\Desktop\scripting\devzones.sp(54) : warning 203: symbol is never used: "bool"

7 Errors.

C:\Users\admin\Desktop\scripting>pause
Для продолжения нажмите любую клавишу . . .
C++:
enum g_eList
{
    char liName[64],
    bool liThis
};

int g_iZones[MAXPLAYERS+1][MAX_ZONES][g_eList];
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Как будет данный код на новом синтксисе?
Смотря какой СМ имеется в виду.
Вообще практически без изменения такой инум можно в 1.10 сделать, а в 1.9 и 1.11 - нет, насколько мне известно.
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Смотря какой СМ имеется в виду.
Вообще практически без изменения такой инум можно в 1.10 сделать, а в 1.9 и 1.11 - нет, насколько мне известно.
То-есть без разницы в каком он виде, работает, та и х*й с ним?)
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Как SM читает строку с флагами?
RegAdminCmd("sm_test", Command_Test, ADMFLAG_CUSTOM6|ADMFLAG_CUSTOM5);

Допустим у админа есть ADMFLAG_CUSTOM6, и нету ADMFLAG_CUSTOM5 флагов доступа, ему будет доступна команда?
Команда требует наличия всех флагов у админа, или только частичное совпадение (если хоть один есть)?
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Команда требует наличия всех флагов у админа, или только частичное совпадение (если хоть один есть)?

Насколько помнится - наличие всех. Поройся в admincache в SMских исходах, вроде, там нужный тебе участок кода.
 

s777

Участник
Сообщения
449
Реакции
74
Помогите пожалуйста, возможно ли добавить проверку игрока на наличие админ флага. Если он администратор (любой флаг), то тег ему не выдается. Проблема в том что этот плагин админ-тег перезаписывает
Сам плагин

UPD: Либо, сделать так, чтобы по дефолту тег был выключен
 
Последнее редактирование:

Harsh USSR ☭

Участник
Сообщения
104
Реакции
2
Всем Привет кто может помогите исправить плагин все работает в нем нормально кроме одной вещи когда игрок заходит на сервер в чате вступает в игру пишет два раза сначала цветное сообщение а потом стандартное от игры желтое вот как сделать что бы было только цветное одно а стандартное не показывалось error логов нет

C-подобный:
public OnPluginStart()
{
    HookEvent("player_team", OnTeam, EventHookMode_Pre);
    HookEvent("player_disconnect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_connect", event_PlayerConn, EventHookMode_Pre);
}

public Action:OnTeam(Handle:event, String:name[], bool:dontBroadcast)
{
    if (!dontBroadcast && !GetEventBool(event,"disconnect") && !GetEventBool(event,"silent"))
    {
        SetEventBroadcast(event, true);
        switch (GetEventInt(event, "team"))
        {
            case 1:PrintToChatAll("\x0700FF00%N \x07FFA500зашел за команду \x07D3D3D3[Спектров]", GetClientOfUserId(GetEventInt(event, "userid")));
            case 2:PrintToChatAll("\x0700FF00%N \x07FFA500зашел за команду \x07FF0000[Бандитов]", GetClientOfUserId(GetEventInt(event, "userid")));
            case 3:PrintToChatAll("\x0700FF00%N \x07FFA500зашел за команду \x070080FF[Ментов]", GetClientOfUserId(GetEventInt(event, "userid")));
        }
    }
    return Plugin_Continue;
}
public Action:event_PlayerConn(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (!dontBroadcast)
        SetEventBroadcast(event, true);
    decl String:rawmsg[255];
    decl String:rawadmmsg[255];
    decl String:steam[24];
    decl String:nick[48];
    decl String:ip[16];
    decl String:reason[192];
    GetEventString(event, "networkid", steam, sizeof(steam));
    GetEventString(event, "name", nick, sizeof(nick));
    if (strcmp(name,"player_connect"))
   
    {
        new client=GetClientOfUserId(GetEventInt(event,"userid"))
        if(client<1) return;
        GetEventString(event, "reason", reason, sizeof(reason));
        GetClientIP(client, ip, sizeof(ip)); // В player_disconnect нет address
        ReplaceString(reason, sizeof(reason), "\n", " ");
        Format(rawadmmsg,sizeof(rawadmmsg),"\x0700FF00Игрок \x01%s  \x07FF0000Отключился", nick);
        Format(rawmsg,sizeof(rawmsg),"\x0700FF00Игрок \x01%s  \x07FF0000Отключился", nick);
    }
    else
    {  
        GetEventString(event, "address", ip, sizeof(ip));
        SplitString(ip,":",ip,sizeof(ip));
        Format(rawadmmsg,sizeof(rawadmmsg), "\x07FFF329Игрок \x0700F5D7%s  \x0713F000Вступает в игру", nick);
        Format(rawmsg,sizeof(rawmsg), "\x07FFF329Игрок \x0700F5D7%s  \x0713F000Вступает в игру", nick);
    }
   
    {
        for (new i = 1; i <= MaxClients; i++) if(IsClientInGame(i))
        PrintToChat(i, "%s", !GetUserFlagBits(i) ? rawmsg : rawadmmsg);
    }
   
}
 
Последнее редактирование:

FokS

Участник
Сообщения
422
Реакции
52
как сделать что бы было только цветное одно а стандартное не показывалось
Если установлен mf_connect_info, то в нём есть настройка "Скрыть стандартное сообщение о подключении" можно отключить так.
 

Harsh USSR ☭

Участник
Сообщения
104
Реакции
2
Если установлен mf_connect_info, то в нём есть настройка "Скрыть стандартное сообщение о подключении" можно отключить так.
нет не стоит вот главное когда игрок отключился все работает и disconnect не выходит а вот вступает не заменяется что то не так в скрипте толи чего то не хватает
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Как хукать использование натива IsClientInGame и отправлять ложные данные?
Нужно это для плагина AdminHide, что бы в менюшках его тоже не было видно. Меню по типу shop_games и тд.
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Рендерит ли игрок ентити, если она была ему скрыта через SDKHook_SetTransmit?
 

Черная вдова

Участник
Сообщения
2,795
Реакции
670
Рендерит ли игрок ентити, если она была ему скрыта через SDKHook_SetTransmit?
Если когда то была отправлена то может потом застыть в воздухе, лучше сам проверь, смотря какая ентити может еще зависит
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323

lesha

Участник
Сообщения
84
Реакции
7
Помогите убрать дым, а саму модель в противогазе крутящуюся оставить и еще что бы зомби она маленько тормозила. ( а так сейчас просто ХП снимает и все ) SM 1.10

L 02/08/2020 - 20:24:18: SourceMod error session started
L 02/08/2020 - 20:24:18: Info (map "de_dust2") (file "/home/server4642/game/cstrike/addons/sourcemod/logs/errors_20200208.log")
L 02/08/2020 - 20:24:18: [SM] Exception reported: Client index -1 is invalid
L 02/08/2020 - 20:24:18: [SM] Blaming: GrenadeEffects2.smx
L 02/08/2020 - 20:24:18: [SM] Call stack trace:
L 02/08/2020 - 20:24:18: [SM] [0] GetClientUserId
L 02/08/2020 - 20:24:18: [SM] [1] Line 416, GrenadeEffects2.sp::SmokeCreateEvent

( еще вот ошибки в логах )
 

Вложения

  • Яg.jpg
    Яg.jpg
    126.8 КБ · Просмотры: 62
  • GrenadeEffects2.sp
    16.4 КБ · Просмотры: 16
Последнее редактирование:

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Как установить игроку невидимость, что бы на оружие не применялось?

Пробовал через это, но на оружие тоже применяет, если через цикл задать альфу аружию, то оружие проигнорит это. Требуется сделать игрока прозрачным не затрагивая оружие, если через SDKHook_SetTransmit скрывать его, то пропадает ВСЁ что связано с игроком.

C++:
    SetEntityRenderMode(client, RENDER_TRANSCOLOR);
    SetEntityRenderColor(client, 255, 255, 255, 0);
 

WodiX

Участник
Сообщения
202
Реакции
29
Подскажите как сохранять нанесенный дамаг на протяжении карты и под конец выводить Топ 5
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Подскажите как сохранять нанесенный дамаг на протяжении карты и под конец выводить Топ 5
Сохраняй его в глобальном значение, которое вынесено из функций.
В начале карты очищайте этот список.

1581246728627.png
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
сохранять нанесенный дамаг на протяжении карты и под конец выводить Топ 5
Тебе дамаг учитовать вообще всех, кто заходил на эту карту, или только тех, кто находился на сервере в момент завершения карты?
 
Сверху Снизу