Добавления и удаления тега к названию сервера
#1

Здравствуйте!
Вот у меня команда открыть и закрыть сервер, как мне сделать удаления тега [LOCKED]
PHP код:
if (gServer[Locked] == 1)
{
new 
host[70];
format(host,70"hostname название сервера");
SendRconCommand(host1);
UnLock();
}
else
{
new 
host[70];
format(host,70"hostname [LOCKED] название сервера");
SendRconCommand(host);
Lock();

Как мне сделать, чтоб при открывание сервера [LOCKED] удалялась, а оставалась ток название сервера?
Reply
#2

pawn Код:
if( !strcmp(cmd, "/lock_server", true) )
{
    new rconCmd[ 32 ], hostname[ 32 ];
    gServer[ Locked ] = !gServer[ Locked ];
   
    GetServerVarAsString( "hostname", hostname, sizeof( hostname ) );
    if( gServer[ Locked ] )
        format( rconCmd, sizeof( rconCmd ), "hostname [LOCKED] %s", hostname );
    else
        format( rconCmd, sizeof( rconCmd ), "hostname %s", hostname );

    SendRconCommand( rconCmd );
    return 1;
}
Оно? Или нужно удалить слово "[LOCKED]" из строки?
Ещё было бы не плохо показать функции Lock и Unlock
Reply
#3

Не понятно зачем использовать функцию format, если строка статичная.
у тебя ошибка-опечатка в коде - в SendRconCommand передаешь host1 вместо host (которую ты почем зря форматировал)
так что просто пиши SendRconCommand("hostname название сервера"); и соответственно SendRconCommand("hostname [LOCKED] название сервера");
Reply
#4

Kernell Оно, ток есть одно но =)
PHP код:
warning 226a variable is assigned to itself (symbol "gServer"
в строке:
PHP код:
gServerLocked ] = !gServerLocked ]; 
И не возвращает название без "[LOCKED]"

Maccer
Мне надо, чтоб названия сервера читал из файла server.cfg как показал это: Kernell Ток не удаляет "[LOCKED]", а надо, чтобы удаляла.

Тут ошибка или в коде, что мне написали выше?
PHP код:
enum StatsServera
{
Locked
}
new 
gServer[StatsServera]; 
Reply
#5

enum StatsServera
{
Locked
}
исправь на:
enum StatsServera
{
bool:Locked
}

Хотя варнинг это не убирает.. Странно, у меня никогда не вылетала эта ошибка, где-то опечатка возможно..
Вообще варнинг говорит, что переменная присваивается к себе (Гон какой-то)

Как вариант могу предложить вот это:
pawn Код:
if( !strcmp( cmd, "/lock_server", true ) )
{
    new rconCmd[ 64 ], hostname[ 64 ], tmp[ 256 ];
    tmp = strtok( cmdtext, idx );
    if( !strlen( tmp ) )
    {
        SendClientMessage( playerid, 0xAAAAAAAA, "/lock_server [0=false, 1=true]" );
        return 1;
    }
    gServer[ Locked ] = bool:strval( tmp );

    GetServerVarAsString( "hostname", hostname, sizeof( hostname ) );
       
    new lockFind = strfind( hostname, "[LOCKED]", true );
    if( lockFind != -1 )
    {
        strdel( hostname, lockFind, lockFind + 9 );
    }
       
    if( gServer[ Locked ] )
        format( rconCmd, sizeof( rconCmd ), "hostname [LOCKED] %s", hostname );
    else
        format( rconCmd, sizeof( rconCmd ), "hostname %s", hostname );

    SendClientMessage( playerid, 0xAAAAAAAA, rconCmd );
    SendRconCommand( rconCmd );
    return 1;
}
Reply
#6

PHP код:
error 047: array sizes do not match, or destination array is too small 
в
PHP код:
 tmp strtokcmdtextidx ); 
Reply
#7

Просто tmp больше сделай....
Reply
#8

Quote:
Originally Posted by Nikid
Посмотреть сообщение
Здравствуйте!
Вот у меня команда открыть и закрыть сервер, как мне сделать удаления тега [LOCKED]
PHP код:
if (gServer[Locked] == 1)
{
new 
host[70];
format(host,70"hostname название сервера");
SendRconCommand(host1);
UnLock();
}
else
{
new 
host[70];
format(host,70"hostname [LOCKED] название сервера");
SendRconCommand(host);
Lock();

Как мне сделать, чтоб при открывание сервера [LOCKED] удалялась, а оставалась ток название сервера?
Если будут проблемы, то для новой сформатированной строки надо будет создать еще одну строку-буфер. Но в целом так.
PHP код:
if (gServer[Locked] == 1)
{
    new 
host[70];
    
GetServerVarAsString"hostname"host70 );
    
    new 
pos strfindhost"[LOCKED] "true )
    if ( 
pos >= )
    {
        
strdelhostpospos )
        
formathost70"hostname %s"host );
        
SendRconCommand(host);
    }
    
    
UnLock();
}
else
{
    new 
host[70];
    
GetServerVarAsString"hostname"host70 );
    
    new 
pos strfindhost"[LOCKED] "true )
    if ( 
pos )
    {
        
formathost70"[LOCKED] %s"host )
        
SendRconCommand(host);
    }
    
    
Lock();

Reply
#9

Kernell Спасибо, помогло.
MX_Master Спасибо! Но правда при использование этого кода ничего не происходило
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)