Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 2 из 2
  1. #1
    Аватар для Unknown
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.07.2014
    Сообщений
    106
    Репутация:
    0 ±

    Выдача администратора

    прописываю админку себе, все нормально, а если кому то то.. сервер крашит..

    PHP код:
    [debugServer crashed while executing Excellent.amx
    [27/08/2014 17:40:21] [debugAMX backtrace:
    [
    debug#0 native format () from samp-server.exe
    [debug#1 000bded4 in SFM (playerid=0, color=869072895, fstring[]=@0x001b26c8 "", ... <2 arguments>) at C:\****\***\****\*** ---\gamemodes\*****.pwn:9611
    [debug#2 00133634 in public OnPlayerCommandText (playerid=0, cmdtext[]=@0x0020a4c0 "/makeadmin 1 6") at C:\****\****\****\**-** ---\gamemodes\****.pwn:15224
    [27/08/2014 17:40:21] [debugNative backtrace:
    [
    debug#0 0046c3c0 in ?? () from samp-server.exe 
    вот строки..

    9611
    PHP код:
        n += BYTES_PER_CELL
    15224
    PHP код:
    if(PlayerInfo[para1][pDostup] >= 1
    вот сток от 9611

    PHP код:
    stock SFM(playeridcolorfstring[], {Float_}:...)
    {
        static const
        
    STATIC_ARGS 3,
        
    BYTES_PER_CELL cellbits 8;
        new
        
    = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
        if (
    n)
        {
            new 
    message[128],arg_start,arg_end;
            
    #emit CONST.alt                fstring
            #emit LCTRL                    5
            #emit ADD
            #emit STOR.S.pri               arg_start

            #emit LOAD.S.alt               n
            #emit ADD
            #emit STOR.S.pri               arg_end
            
    do
            {
                
    #emit LOAD.I
                #emit PUSH.pri
                
    arg_end -= BYTES_PER_CELL;
                
    #emit LOAD.S.pri           arg_end
            
    }
            while (
    arg_end arg_start);

            
    #emit PUSH.S                   fstring
            #emit PUSH.C                   128
            #emit PUSH.ADR                 message
            
    += BYTES_PER_CELL 3;
            
    #emit PUSH.S                   n
            #emit SYSREQ.C                 format

            
    += BYTES_PER_CELL;
            
    #emit LCTRL                    4
            #emit LOAD.S.alt               n
            #emit ADD
            #emit SCTRL                    4

            
    return SendClientMessage(playeridcolormessage);
        }
        else
        {
            return 
    SendClientMessage(playeridcolorfstring);
        }


    а это сама команда /makeadmin

    PHP код:
    if(strcmp(cmd"/makeadmin"true) == 0)
        {
            if(
    PlayerInfo[playerid][pAdmin] < 6) return error(playerid"Нет прав на использование команды.");
            
    tmp strtok(cmdtextidx);
            if(!
    strlen(tmp)) return error(playerid"/makeadmin [ ID игрока / Nick игрока ] [ Уровень Администрирования ]");
            new 
    para1level;
            
    para1 ReturnUser(tmp);
            
    tmp strtok(cmdtextidx);
            
    level strval(tmp);
            if(
    level || level 0) return error(playerid"От 0 до 6.");
            if(!
    IsPlayerConnected(para1)) return SendClientMessage(playeridCOLOR_WHITE"Этот игрок не подключен к серверу.");
            if(
    PlayerInfo[para1][pHelper] >= 1) return SendClientMessage(playeridCOLOR_WHITE"Этот игрок Помощник.");
            if(
    para1 == INVALID_PLAYER_ID) return SendClientMessage(playeridCOLOR_WHITE"Указан неверный ID игрока.");
            
    GetPlayerName(para1giveplayersizeof(giveplayer));
            
    GetPlayerName(playeridsendernamesizeof(sendername));
            if(
    PlayerInfo[para1][pDostup] <= 0)
            {
                
    PlayerInfo[para1][pDostup] = 117546+random(5364);
                
    PlayerInfo[para1][pAdmin] = level;
                
    format(stringsizeof(string), "%s назначил тебя до %d-го уровня Администрирования."sendername,level);
                
    SendClientMessage(para1COLOR_LIGHTBLUEstring);
                
    format(string,sizeof(string),"Ваш пароль от входа в Административную панель >> {ecca63}%d {FFFFFF}<<",PlayerInfo[para1][pDostup]);
                
    SendClientMessage(para1COLOR_WHITEstring);
                
    SFM(playerid,COLOR_LIGHTBLUE,"Вы повысили/понизили %s до %d уровня Администрирования."giveplayer,level);
            }
            if(
    PlayerInfo[para1][pDostup] >= 1)
            {
                
    PlayerInfo[para1][pAdmin] = level;
                
    format(stringsizeof(string), "Администратор %s назначил Вас до %d уровня Администрирования."sendernamelevel);
                
    SendClientMessage(para1COLOR_LIGHTBLUEstring);
                
    SFM(playerid,COLOR_LIGHTBLUE,"Вы назначили %s до %d уровня Администрирования."giveplayer,level);
                return 
    true;
            }
            return 
    true;
        } 

  2. #2
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Рекомендую использовать стандартную функцию для форматирования строк: format.
    Если грамотно использовать, то практически никогда не возникнет проблем с форматированием.

    PHP код:
    SFM(playerid,COLOR_LIGHTBLUE,"Вы повысили/понизили %s до %d уровня Администрирования."giveplayer,level); 
    на
    PHP код:
    format(stringsizeof(string), "Вы повысили/понизили %s до %d уровня Администрирования."giveplayerlevel);
    SendClientMessage(playeridCOLOR_LIGHTBLUEstring); 
    так же
    PHP код:
    SFM(playerid,COLOR_LIGHTBLUE,"Вы назначили %s до %d уровня Администрирования."giveplayer,level); 
    на
    PHP код:
    format(stringsizeof(string), "Вы назначили %s до %d уровня Администрирования."giveplayerlevel);
    SendClientMessage(playeridCOLOR_LIGHTBLUEstring); 

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •