Ошибка при компиляции error 100, что делать не fatal

Q

Qujeck

PHP:
#include <sourcemod>
#include<clients>
#include <events>

public  OnPluginStart()
{
HookEvent("connect", OnClientConnected)
}
 }
 public connect(client){
 PrintToChatAll("%N Добро пожаловать на сервер", client)
 return Plugin_Handled;
 }
--- Добавлено позже ---
хочу что бы при подключении игрока в чат выводилось сообщение
--- Добавлено позже ---
я это зделал.

PHP:
#include <sourcemod>
#include <clients>
#include <events>

public  OnPluginStart()
{
OnClientPutInServer)
 }
 public void OnClientPutInServer(client){
 PrintToChatAll("%N Добро пожаловать на сервер", client)
 return Plugin_Handled;
 }
 
Последнее редактирование модератором:

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
OnClientPutInServer вызывается слишком рано: в этот момент игрок только пытается подключиться к серверу и ещё невозможно получить данные об игроке, емнип
да и вообще код написан неправильно

Попробуй вот так:
PHP:
public void OnClientPostAdminCheck(int client)
{
    PrintToChat(client, "%N, добро пожаловать на наш сервер!", client)
}
Если не текст приветствия входящий игрок не будет видеть, то будет необходимо добавить ещё и таймер на пару секунд.

P.S. инклюды и OnPluginStart() не нужны
 
Последнее редактирование:

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #3
в этот момент игрок только пытается подключиться к серверу
В этот момент игрок уже на сервере*
По крайней мере, все сообщения, отправленные игроку в чат в этом каллбеке, выводятся у него. Проверено на TF2 и CS:S.

ещё невозможно получить данные об игроке
Лол?
В 99% случаев, уже можно.
Тот самый 1% возникает, если с соединением со Steam у сервера или у клиента имеются проблемы.
 

Felton

Участник
Сообщения
799
Реакции
59
А как сделать с таймером? Пока игрок выбрал команду за которую он хочет играть а уж потом выскакивало это сооющение ну скажем задержка в 2 или 3 секунды
Игра Counter-Strike Source
 
Последнее редактирование:

Rostu

Добрая душа
Сообщения
986
Реакции
623
@Felton, По идеи можно взять пример с урока Рэко
PHP:
public void OnClientPutInServer(int iClient) 
{
    CreateTimer(10.0, Timer_Welcome, GetClientUserId(iClient), TIMER_FLAG_NO_MAPCHANGE);
}

public Action Timer_Welcome(Handle hTimer, any UserId) 
{
    int iClient = GetClientOfUserId(UserId);    
    if(iClient)    
    {

        PrintToChat(iClient, "Добро пожаловать на наш сервер, %N!", iClient);
    }

    return Plugin_Stop;
}
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #7
@Felton, точно так же, как и на всех играх.
PHP:
public void OnClientPostAdminCheck(int iClient) {
    CreateTimer(10.0, Timer_HelloWorld, GetClientUserId(iClient), TIMER_FLAG_NO_MAPCHANGE);
}

public Action Timer_HelloWorld(Handle hTimer,  any iUID) {
    if ((iUID = GetClientOfUserId(iUID))) {
        PrintToChat(iUID, "%N, добро пожаловать на наш сервер!", iUID);
    }
}
 
Последнее редактирование:

Felton

Участник
Сообщения
799
Реакции
59
@Kr1kuzya
Твой код не захотел компелироваться.
А код от @Rostu скомпелировался без проблем.
Вот бы ещё что бы это писало .Добро пожаловать на наш сервер. в хинте
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #9
@Felton, одну скобку забыл. Поправил.
В любом случае мой код побыстрее отработает.
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967
А как сделать с таймером? Пока игрок выбрал команду за которую он хочет играть а уж потом выскакивало это сооющение ну скажем задержка в 2 или 3 секунды
Игра Counter-Strike Source
Лучше уж захукать событие player_team
 

Felton

Участник
Сообщения
799
Реакции
59
@Kr1kuzya
Проверил всё нормально!А вот чтобы сообщение писалось ещё и в хинте это возможно сделать?
 

Larsalex

Сообщения
812
Реакции
404
@Kr1kuzya
Проверил всё нормально!А вот чтобы сообщение писалось ещё и в хинте это возможно сделать?
C-подобный:
public void OnClientPostAdminCheck(int iClient) {
    CreateTimer(10.0, Timer_HelloWorld, GetClientUserId(iClient), TIMER_FLAG_NO_MAPCHANGE);
}

public Action Timer_HelloWorld(Handle hTimer,  any iUID) {
    if ((iUID = GetClientOfUserId(iUID))) {
        PrintToChat(iUID, "%N, добро пожаловать на наш сервер!", iUID);
        PrintHintText(iUID, "%N, добро пожаловать на наш сервер!", iUID);
    }
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
Лучше уж захукать событие player_team
самый лучший вариант
PHP:
bool join_msg[MAXPLAYERS+1];

public void OnPluginStart()
{
    HookEvent("player_team", Event_Team);
}

public void OnClientPutInServer(int client)
{
    join_msg[client] = false;
}

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

    if(0 < client <= MaxClients && IsFakeClient(client) && !join_msg[client] && !event.GetBool("disconnect"))
    {
        join_msg[client] = true;
        PrintToChat(client, "%N, добро пожаловать на наш сервер!", client);
        PrintHintText(client, "%N, добро пожаловать на наш сервер!", client);
    }
}
//// join_msg.sp
//
// Code size: 3456 bytes
// Data size: 2644 bytes
// Stack/heap size: 16384 bytes
// Total requirements: 22484 bytes
//
// Compilation Time: 0,3 sec
 

Вложения

  • join_msg.smx
    4 КБ · Просмотры: 0
  • join_msg.sp
    670 байт · Просмотры: 3
Последнее редактирование:
Сверху Снизу