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

kleuser

Участник
Сообщения
1,838
Реакции
732
Помогите пожалуйста поправить плагин перчаток.
Проблема в меню, если добавить больше 4 пунктов перчаток, то кнопка "Выход" пропадает.
 

Вложения

  • ac_gloves8.sp
    35.6 КБ · Просмотры: 8
F

FBI

Люди поделитесь плагином Неон под скином для всех игроков нужен, чтобы делились только цветом синим и красным, нужен такой плагин, не модуль и не для шопа!
 

alexmy

Участник
Сообщения
284
Реакции
13
Всем привет, интересует как юзать bool [MAXPLAYERS + 1] чтоб например максимум 4 игрока могли воспользоваться командой.

PHP:
#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required

bool MAX_PLAYERS[MAXPLAYERS + 1] = false;


public void OnPluginStart()
{
    RegConsoleCmd("sm_1", sm_revival);
    
    HookEvent("round_start",    Event_RoundEnd);
    HookEvent("round_end",      Event_RoundEnd);
}

public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
    for(int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i)) MAX_PLAYERS[i] = false;
    }
}

public Action sm_revival(int client, int args)
{
    if((client > 0) && GetClientTeam(client) == 2)
    {
        if(!MAX_PLAYERS[client])
        {
            int userflags = GetUserFlagBits(client);
            SetUserFlagBits(client, ADMFLAG_ROOT);
            int iflags=GetCommandFlags("give");
            SetCommandFlags("give", iflags & ~FCVAR_CHEAT);
            FakeClientCommand(client,"give health");
            SetCommandFlags("give", iflags);
            SetUserFlagBits(client, userflags);
            PrintToChat(client, "Вы иcцелиле себя.");
            MAX_PLAYERS[client] = true;
        }
        else
        {
            PrintToChat(client, "Лимит исчерпан исцеления.");
        }
    }
    return Plugin_Handled;
}
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
Всем привет, интересует как юзать bool [MAXPLAYERS + 1] чтоб например максимум 4 игрока могли воспользоваться командой.

PHP:
#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required

bool MAX_PLAYERS[MAXPLAYERS + 1] = false;


public void OnPluginStart()
{
    RegConsoleCmd("sm_1", sm_revival);
   
    HookEvent("round_start",    Event_RoundEnd);
    HookEvent("round_end",      Event_RoundEnd);
}

public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
    for(int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i)) MAX_PLAYERS[i] = false;
    }
}

public Action sm_revival(int client, int args)
{
    if((client > 0) && GetClientTeam(client) == 2)
    {
        if(!MAX_PLAYERS[client])
        {
            int userflags = GetUserFlagBits(client);
            SetUserFlagBits(client, ADMFLAG_ROOT);
            int iflags=GetCommandFlags("give");
            SetCommandFlags("give", iflags & ~FCVAR_CHEAT);
            FakeClientCommand(client,"give health");
            SetCommandFlags("give", iflags);
            SetUserFlagBits(client, userflags);
            PrintToChat(client, "Вы иcцелиле себя.");
            MAX_PLAYERS[client] = true;
        }
        else
        {
            PrintToChat(client, "Лимит исчерпан исцеления.");
        }
    }
    return Plugin_Handled;
}
PHP:
int count = 0
for(int i = 0;i<=MAXPLAYERS;i++)
{
 if(MAX_PLAYERS[i])
  count++
 if(count == 4)
  return
}
Вставь перед функцией команды
 

rokfestr

Участник
Сообщения
340
Реакции
63
PHP:
#include <sdktools_functions>

#define TIMER 3.0 // Время через которое телепортирует игрока
#define LIMIT 3 // Лимит использования телепорта

float g_fPos[MAXPLAYERS +1][3];
Handle g_hTimer[MAXPLAYERS +1];
int g_iLimit[MAXPLAYERS +1];

public void OnPluginStart()
{
    HookEvent("player_spawn", PlayerSpawn);
    RegConsoleCmd("sm_teleport", TeleportCmd);
}

public void PlayerSpawn(Event event, const char[] name, bool dbc)
{
    int iClient = GetClientOfUserId(event.GetInt("userid"));
 
    g_iLimit[iClient] = LIMIT;
    GetClientAbsOrigin(iClient, g_fPos[iClient]);
}

public Action TeleportCmd(int iClient, int iArgs)
{
    if(iClient && IsPlayerAlive(iClient) && g_iLimit[iClient] > 0)
    {
        if(g_hTimer[iClient] == null) g_hTimer[iClient] = CreateTimer(TIMER, TimerTeleport, GetClientUserId(iClient));
    }
 
    return Plugin_Handled;
}

public Action TimerTeleport(Handle hTimer, any iUserId)
{
    int iClient = GetClientOfUserId(iUserId);
    if(IsClientInGame(iClient) && IsPlayerAlive(iClient))
    {
        TeleportEntity(iClient, g_fPos[iClient], NULL_VECTOR, NULL_VECTOR);
        g_iLimit[iClient]--;
    }
 
    g_hTimer[iClient] = null;
    return Plugin_Stop;
}

public void OnClientDisconnect(int iClient)
{
    if(g_hTimer[iClient] != null)
    {
        KillTimer(g_hTimer[iClient]);
        g_hTimer[iClient] = null;
    }
}
teleport.sp(29) : error 017: undefined symbol "TimerTeleport"
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
undefined symbol "TimerTeleport"
C-подобный:
//// 123.sp

//
// Code size:             4024 bytes
// Data size:             3844 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   24252 bytes
//
// Compilation Time: 0,64 sec
// ----------------------------------------
--- Добавлено позже ---
но правильнее было бы вот так:
PHP:
#include <sdktools_functions>

#define TIMER 3.0 // Время через которое телепортирует игрока
#define LIMIT 3 // Лимит использования телепорта

float g_fPos[MAXPLAYERS +1][3];
Handle g_hTimer[MAXPLAYERS +1];
int g_iLimit[MAXPLAYERS +1];

public void OnPluginStart()
{
    HookEvent("player_spawn", PlayerSpawn);
    RegConsoleCmd("sm_teleport", TeleportCmd);
}

public void PlayerSpawn(Event event, const char[] name, bool dbc)
{
    int client = GetClientOfUserId(event.GetInt("userid"));

    g_iLimit[client] = LIMIT;
    GetClientAbsOrigin(client, g_fPos[client]);
}

public Action TeleportCmd(int client, int args)
{
    if(client && IsPlayerAlive(client) && g_iLimit[client] > 0 && g_hTimer[client] == null)
        g_hTimer[client] = CreateTimer(TIMER, TimerTeleport, GetClientUserId(client));

    return Plugin_Handled;
}

public Action TimerTeleport(Handle hTimer, any iUserId)
{
    int client = GetClientOfUserId(iUserId);
    if(client && IsPlayerAlive(client))
    {
        TeleportEntity(client, g_fPos[client], NULL_VECTOR, NULL_VECTOR);
        g_iLimit[client]--;
    }

    g_hTimer[client] = null;
    return Plugin_Stop;
}

public void OnClientDisconnect(int client)
{
    if(g_hTimer[client] != null)
    {
        KillTimer(g_hTimer[client]);
        g_hTimer[client] = null;
    }
}
C-подобный:
//// 123_fix.sp
//
// Code size:             4008 bytes
// Data size:             3844 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   24236 bytes
//
// Compilation Time: 0,19 sec
// ----------------------------------------
 

Вложения

  • 123.sp
    1.4 КБ · Просмотры: 3
  • 123.smx
    4.6 КБ · Просмотры: 3
  • 123_fix.sp
    1.3 КБ · Просмотры: 8
  • 123_fix.smx
    4.6 КБ · Просмотры: 4
Последнее редактирование:

Nova

Simple Project
Сообщения
262
Реакции
28
Флуд/Оффтоп
Оффтоп
 

Черная вдова

Участник
Сообщения
2,795
Реакции
670
Переделываю плагин rockthevote.smx под себя. Всё задуманное осуществил, только это осталось.
когда спрашивают обычные люди надо отвечать первостепенную причину а не ряд конечных
если тебя спросили почему ты в магазине а ты ответишь "потому что я пришел в магазин" это не корректный ответ
 

Nova

Simple Project
Сообщения
262
Реакции
28
когда спрашивают обычные люди надо отвечать первостепенную причину а не ряд конечных
если тебя спросили почему ты в магазине а ты ответишь "потому что я пришел в магазин" это не корректный ответ
Чо? Какая вообще разница зачем мне это? Я просто спросил как это осуществить.
 

Nova

Simple Project
Сообщения
262
Реакции
28
Последнее редактирование:
F

FBI

Ребята помогите маленько переделать плагин Last Man - CSGO

Суть такова данный плагин работает только на последнего игрока звук играет только для него, но в чате пишет и никто не видит из противоположной команды что у них 1 игрок!
хотелось бы сделать так, чтобы в чат не писалось ничего а показывалась в HUD окошко где писалось - пример который должна видеть противоположная команда - Остался последний игрок, запрещено рашить толпой!
Ну а последнему игроку проигрывается звук. Если можно собрать все 1 плагином, путь к звуку оставить прежним, если что можно будет сменить звук в исходнике самому, собрать плагин без лишнего!
 

Вложения

  • lastman.sp
    6.5 КБ · Просмотры: 5
Последнее редактирование модератором:

StormX

Участник
Сообщения
891
Реакции
302
Наваляйте пожалуйста простенький плагинок, который будет фиксировать падения сервера в лог файлы.
Нужно, что бы при каждом падении сервера создавался отдельный лог файл.
Плагин под 34-ку.
 

StormX

Участник
Сообщения
891
Реакции
302
@niko7d, Конечно есть =) В батнике сервера в строку запуска влупите -debug -condebug

Это для нормальных хостингов такое есть, а вот для ненормальных нету.
Где просишь включить подобное у тех. поддержки и тебя просто и образно посылают куда дальше.
Поэтому нужен просто плагин, который будет создавать каждый раз при краше сервера лог файл пускай даже и пустой. :ab:
 

baasssa

Участник
Сообщения
48
Реакции
1
Приветик всем. Может кто сделать постоянную проверку по переменным? Сейчас работает проверка только когда зайдешь в меню плагина (!banv) и тогда выбрасывает игроков с сервера.
 

Вложения

  • banv34.sp
    3.6 КБ · Просмотры: 12
F

FBI

Нужно было вырезать весь текст лишний с плагина, да и кстати проверил не работает, нас было много за 1 команду в противоположной последний игрок сообщения нет(( что очень печально, зато спамит от текстовика перевода, типо отключить звук итд, хотелось бы от этого избавиться!
 

Boeing 767

заскамили мамонта ни за что, ни про что
Сообщения
524
Реакции
913
Приветик всем. Может кто сделать постоянную проверку по переменным? Сейчас работает проверка только когда зайдешь в меню плагина (!banv) и тогда выбрасывает игроков с сервера.
Каждые 5 секунд будет проверятся переменная.
 

Вложения

  • banv34.sp
    3.8 КБ · Просмотры: 17
  • banv34.smx
    5.3 КБ · Просмотры: 7

StormX

Участник
Сообщения
891
Реакции
302
Кто подправит плагин под souremod 1.9 к сожалению исходника нет.
 

Вложения

  • HD_SkyText.smx
    47.7 КБ · Просмотры: 8
Сверху Снизу