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

Анатолий))))))))

Участник
Сообщения
63
Реакции
4
всем привет!!!ребят нужно поправить плагин рекламы,суть рекламы такова что когда ты умираешь или сидишь в наблюдателях тебе печатается текст,но вот печатается только первое сообщение,другие нет(((
 

Вложения

  • adv (1).sp
    1.4 КБ · Просмотры: 11

Rostu

Добрая душа
Сообщения
986
Реакции
622
@Анатолий)))))))), Может так?
PHP:
#pragma semicolon 1

#include <sourcemod>
#include <easy_hudmessage>

new Handle:TimerPlayer[MAXPLAYERS+1];
new g_iAdvert[MAXPLAYERS + 1];

public OnPluginStart()
{
    HookEvent("player_death", Event_PlayerDeath);
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    TimerPlayer[client] = CreateTimer(7.0, Adverts, client, TIMER_REPEAT);
}

public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    if (TimerPlayer[client] != INVALID_HANDLE)
    {
        KillTimer(TimerPlayer[client]);
        TimerPlayer[client] = INVALID_HANDLE;      
    }
}

public OnClientDisconnect(client)
{
    if (TimerPlayer[client] != INVALID_HANDLE)
    {
        KillTimer(TimerPlayer[client]);
        TimerPlayer[client] = INVALID_HANDLE;      
    }
}

public Action:Adverts(Handle:timer, any:client)
{
    decl String:buffer[128];

    switch (g_iAdvert[client])
    {
        case 0:    FormatEx(buffer, sizeof(buffer), "сообщение1");
        case 1:    FormatEx(buffer, sizeof(buffer), "сообщение2");
        case 2:    FormatEx(buffer, sizeof(buffer), "сообщение3");
        case 3:    FormatEx(buffer, sizeof(buffer), "сообщение4");
    }
   
    SendHudMessage(client, 1, -0.007998, -0.879999, 0x00F2FFFF, 0xF2FF00FF, 2, 0.1, 5.1,1.0, 5.0, buffer);

    if (++g_iAdvert[client] > 3)
        g_iAdvert[client] = 0;
}
 
Последнее редактирование:

Анатолий))))))))

Участник
Сообщения
63
Реакции
4
//SourceMod Batch Compiler
// by the SourceMod Dev Team


//// adv (1).sp
//
// C:\Users\└эрЄюышщ\Desktop\sm\addons\sourcemod\scripting\adv (1).sp(44) : error 017: undefined symbol "advert"
//
// 1 Error.
//
// Compilation Time: 0,44 sec
// ----------------------------------------

Press enter to exit ...
@Анатолий)))))))), Может так?
PHP:
#pragma semicolon 1

#include <sourcemod>
#include <easy_hudmessage>

new Handle:TimerPlayer[MAXPLAYERS+1];
new g_iAdvert[MAXPLAYERS + 1];

public OnPluginStart()
{
    HookEvent("player_death", Event_PlayerDeath);
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    TimerPlayer[client] = CreateTimer(7.0, Adverts, client, TIMER_REPEAT);
}

public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    if (TimerPlayer[client] != INVALID_HANDLE)
    {
        KillTimer(TimerPlayer[client]);
        TimerPlayer[client] = INVALID_HANDLE;     
    }
}

public OnClientDisconnect(client)
{
    if (TimerPlayer[client] != INVALID_HANDLE)
    {
        KillTimer(TimerPlayer[client]);
        TimerPlayer[client] = INVALID_HANDLE;     
    }
}

public Action:Adverts(Handle:timer, any:client)
{
    decl String:buffer[128];

    switch (advert)
    {
        case 0:    FormatEx(buffer, sizeof(buffer), "сообщение1");
        case 1:    FormatEx(buffer, sizeof(buffer), "сообщение2");
        case 2:    FormatEx(buffer, sizeof(buffer), "сообщение3");
        case 3:    FormatEx(buffer, sizeof(buffer), "сообщение4");
    }
  
    SendHudMessage(client, 1, -0.007998, -0.879999, 0x00F2FFFF, 0xF2FF00FF, 2, 0.1, 5.1,1.0, 5.0, buffer);

    if (++g_iAdvert[client] > 3)
        g_iAdvert[client] = 0;
}
не компилируется
 

Анатолий))))))))

Участник
Сообщения
63
Реакции
4
а еще я добавил пятое сообщение,соответственно чтоб можно было и 10 сообщений туда воткнутьно выводит только 4,и как сделать чтоб каждый текст писался в разных местах и разным цветом,в этом можешь помощь оказать?
 

Rostu

Добрая душа
Сообщения
986
Реакции
622
а еще я добавил пятое сообщение,соответственно чтоб можно было и 10 сообщений туда воткнутьно выводит только 4,
PHP:
if (++g_iAdvert[client] > 3)
        g_iAdvert[client] = 0;
если g_iAdvert[client] будет больше 3 - он станет = 0 т.е нужно изменить "3" на количество твоих сообщений.

и как сделать чтоб каждый текст писался в разных местах и разным цветом,в этом можешь помощь оказать?
Придется как-то так делать. После каждого сообщения свой худ
PHP:
switch (g_iAdvert[client])
    {
        case 0:  SendHudMessage(client, 1, -0.007998, -0.879999, 0x00F2FFFF, 0xF2FF00FF, 2,              0.1, 5.1,1.0, 5.0, "сообщение1");
        case 1:SendHudMessage(client, 1, -0.007998, -0.879999, 0x00F2FFFF, 0xF2FF00FF, 2, 0.1, 5.1,1.0, 5.0, "сообщение2");
        case 2:    SendHudMessage(client, 1, -0.007998, -0.879999, 0x00F2FFFF, 0xF2FF00FF, 2, 0.1, 5.1,1.0, 5.0, "сообщение3");
        case 3:    SendHudMessage(client, 1, -0.007998, -0.879999, 0x00F2FFFF, 0xF2FF00FF, 2, 0.1, 5.1,1.0, 5.0, "сообщение4");
    }
 
Последнее редактирование:

Анатолий))))))))

Участник
Сообщения
63
Реакции
4
PHP:
if (++g_iAdvert[client] > 3)
        g_iAdvert[client] = 0;
если g_iAdvert[client] будет больше 3 - он станет = 0 т.е нужно изменить "3" на количество твоих сообщений.


Придется как-то так делать. После каждого сообщения свой худ
PHP:
switch (g_iAdvert[client])
    {
        case 0:  FormatEx(buffer, sizeof(buffer), "сообщение1");
        case 1:
        {
            FormatEx(buffer, sizeof(buffer), "сообщение2");
            SendHudMessage(client, 1, -0.007998, -0.879999, 0x00F2FFFF, 0xF2FF00FF, 2, 0.1, 5.1,1.0, 5.0, buffer);
        }
        case 2:    FormatEx(buffer, sizeof(buffer), "сообщение3");
        case 3:    FormatEx(buffer, sizeof(buffer), "сообщение4");
    }
про разное место каждого сообщения не понял чет
 

Fox1qqq

Крякнем, плюнем и надежно склеим скотчем!
Сообщения
247
Реакции
145
Вот решил дополнить плагин блокировки сообщений в чате, но так как я Алёша, это не получилось.
Помогите обернуть всё в рабочий код.
Игра: CS:GO
 

Вложения

  • RemoveMessages.sp
    5.7 КБ · Просмотры: 6
Последнее редактирование:

Someone

Участник
Сообщения
1,933
Реакции
1,653

Вложения

  • RemoveMessages.sp
    5.5 КБ · Просмотры: 6

Fox1qqq

Крякнем, плюнем и надежно склеим скотчем!
Сообщения
247
Реакции
145
Всё ровно осталось: (Там где: "Заложник со мной." "Спецназ получает дополнительное время" "Изменение имени")
fab81ac2c5a7.png
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
Всё ровно осталось: (Там где: "Заложник со мной." "Спецназ получает дополнительное время" "Изменение имени")
fab81ac2c5a7.png
Должно убрать показ изменения имени, может еще и про заложника первую фразу уберет.
 

Вложения

  • RemoveMessages.sp
    5.6 КБ · Просмотры: 5

Fox1qqq

Крякнем, плюнем и надежно склеим скотчем!
Сообщения
247
Реакции
145
Должно убрать показ изменения имени, может еще и про заложника первую фразу уберет.
Не компилится (
//// RemoveMessages.sp
//
// E:\Important\sourcemod-1.8.0-git5998-windows\addons\sourcemod\scripting\RemoveMessages.sp(29) : error 017: undefined symbol "sBuffer"
//
// 1 Error.
//
// Compilation Time: 0,12 sec
// ----------------------------------------

Press enter to exit ...
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
Не компилится (
//// RemoveMessages.sp
//
// E:\Important\sourcemod-1.8.0-git5998-windows\addons\sourcemod\scripting\RemoveMessages.sp(29) : error 017: undefined symbol "sBuffer"
//
// 1 Error.
//
// Compilation Time: 0,12 sec
// ----------------------------------------

Press enter to exit ...
sBuffer на buffer поменяй.
 

makentosh

Участник
Сообщения
109
Реакции
6
@Черная вдова,
Привет сможеш опять поправить код! Суть в том что только один раз можно возродить человека и все больше не кто не можеш я хочу чтоб все могли возрождать людей из своей команди постояно!
 

Вложения

  • resp_s1.sp
    9.5 КБ · Просмотры: 6

alexmy

Участник
Сообщения
284
Реакции
13
Ребят всем привет почему если юзать так:
PHP:
bool g_bPlayerLoaded[MAXPLAYERS + 1], g_iPlayers;

public void OnMapEnd()
{
    g_iPlayers = 0;
}
компилятор выдает предупреждение 213 на массив, а если юзать так всё норм:
PHP:
bool g_bPlayerLoaded[MAXPLAYERS + 1], g_iPlayers;

public void OnMapEnd()
{
    g_iPlayers = false;
}
Хотя у автора так:
PHP:
new bool:g_bPlayerLoaded[MAXPLAYERS + 1], g_iPlayers;

public OnMapEnd() g_iPlayers = 0;
хотел перевести на новый синтаксис.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@alexmy, потому что.
Теперь подобным образом Вы объявляете массив boolean переменных и одну простую boolean переменную.
На новом синтаксисе, правильно будет записать вместо этого:
PHP:
new bool:g_bPlayerLoaded[MAXPLAYERS + 1], g_iPlayers;
Это:
PHP:
bool g_bPlayerLoaded[MAXPLAYERS + 1];
int g_iPlayers;
 
Сверху Снизу