• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Краш сервера при выдаче денег

Vfox

Дебютант
Когда выдаю деньги себе командой givemoney, сервер крашит.Лог во время краша:
Код:
[22:04:38] [debug] Server crashed while executing PR-RP.amx
[22:04:38] [debug] AMX backtrace:
[22:04:38] [debug] #0 native format () [004711b0] from samp-server-cr.exe
[22:04:38] [debug] #1 0038b370 in SendMes (playerid=0, color=-86, fstring[]=@0x004b9e28 "  ", ... <2 arguments>) at C:\Servers\Province rp(CRMP)\gamemodes\PR-RP.pwn:9202
[22:04:38] [debug] #2 004c6914 in public cmd_givemoney (playerid=0, params[]=@0x004ed948 "") at C:\Servers\Province rp(CRMP)\gamemodes\PR-RP.pwn:30043
[22:04:38] [debug] #3 native CallLocalFunction () [00472260] from samp-server-cr.exe
[22:04:38] [debug] #4 00007584 in public OnPlayerCommandText (playerid=0, cmdtext[]=@0x004ed8f4 "/givemoney 0 1000000") at C:\Servers\Province rp(CRMP)\pawno\include\zcmd.inc:108
[22:04:38] [debug] Native backtrace:
[22:04:38] [debug] #0 0046c3d0 in ?? () from samp-server-cr.exe
Строка с ошибкой :
Код:
stock SendMes(playerid, color, fstring[], {Float, _}:...)
{
    static const
    STATIC_ARGS = 3;
    new
    n = (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);

        // Push the static format parameters.
        #emit PUSH.S          fstring
        #emit PUSH.C          128
        #emit PUSH.ADR         message

        n += BYTES_PER_CELL * 3;
        #emit PUSH.S          n
        #emit SYSREQ.C         format

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

        return SendClientMessage(playerid, color, message);
    }
    else
    {
        return SendClientMessage(playerid, color, fstring);
    }
}
Cmd Givemoney:
Код:
CMD:givemoney(playerid, params[])
{
    if(PlayerLogged[playerid] == 0) return true;
    if(dostup[playerid] == 0) return true;
    if(PlayerInfo[playerid][pAdminn] < 10 || AdminLogged[playerid] == false) return true;
    if(sscanf(params, "ud", params[0],params[1])) return SendClientMessage(playerid, COLOR_WHITE, "• {ffcf00}[ Подсказка ] {ffffff}Введите: /givemoney [id игрока] [кол-во денег]");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_GREY, TPLAYEROFFLINE);
    if(PlayerLogged[params[0]] == 0) return SendClientMessage(playerid, COLOR_GREY, TPLAYERNLOGGED);
    if(params[1] > 25000000 || params[1] < 1) return SendClientMessage(playerid, COLOR_GREY, "Кол-во денег от 1 до 25000000!");
    GiveMoney(params[0], params[1]);
    SendMes(playerid, COLOR_ORANGE, "Вы установили денег игроку: %s", sendername(params[0]));
    SendClientMessage(params[0], COLOR_GREEN, "===============[УВЕДОМЛЕНИЕ]================ ");
    SendMes(params[0], COLOR_WHITE, "  Администратор %s выписал вам чек на %d руб.", PlayerInfo[playerid][pSendername],params[1]);
    SendClientMessage(params[0], COLOR_WHITE, "    Деньги были зачислены на ваш баланс");
    SendClientMessage(params[0], COLOR_GREEN, "== Подпись: Администрация CRMP Role Play ==");
    format(totalstring, 120, "[A] Администратор %s выдал %d руб. игроку %s", PlayerInfo[playerid][pSendername],params[1],sendername(params[0]));
    SendAdminMessage(COLOR_GREY, totalstring);
    Log("GiveMoney",totalstring);
    return true;
}
Строки из инклуда:
Код:
/**********************************
 *                                *
 *   @Author:      ZeeX           *
 *   @Version:     0.3.1          *
 *   @Released:    31/10/2009     *
 *                                *
 **********************************/

#if defined _zcmd_included
    #endinput
#endif   
#define _zcmd_included

#define MAX_FUNC_NAME (32)

#define COMMAND:%1(%2)          \
            forward cmd_%1(%2); \
            public cmd_%1(%2)       
            
#define CMD:%1(%2) \
            COMMAND:%1(%2)

#define command(%1,%2,%3) \
            COMMAND:%1(%2, %3)     
      
#define cmd(%1,%2,%3) \
            COMMAND:%1(%2, %3)

#if !defined isnull
    #define isnull(%1) \
                ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
#endif


forward OnPlayerCommandReceived(playerid, cmdtext[]);
forward OnPlayerCommandPerformed(playerid, cmdtext[], success);


static
    bool:zcmd_g_HasOPCS = false,
    bool:zcmd_g_HasOPCE = false;

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
    zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
    zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
    return CallLocalFunction("zcmd_OnFilterScriptInit", "");
}

#if defined _ALS_OnFilterScriptInit
    #undef OnFilterScriptInit
#else
    #define _ALS_OnFilterScriptInit
#endif
#define OnFilterScriptInit zcmd_OnFilterScriptInit
forward zcmd_OnFilterScriptInit();

#else /*not a filterscript*/

public OnGameModeInit()
{
    zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
    zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
    if (funcidx("zcmd_OnGameModeInit") != -1)
    {
        return CallLocalFunction("zcmd_OnGameModeInit", "");
    }   
    return 1;
}

#if defined _ALS_OnGameModeInit
    #undef OnGameModeInit
#else
    #define _ALS_OnGameModeInit
#endif
#define OnGameModeInit zcmd_OnGameModeInit
forward zcmd_OnGameModeInit();

#endif /*if defined FILTERSCRIPT*/

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (zcmd_g_HasOPCS && !CallLocalFunction("OnPlayerCommandReceived", "is", playerid, cmdtext))
    {
        return 1;
    }
    new
        pos,
        funcname[MAX_FUNC_NAME];
    while (cmdtext[++pos] > ' ')
    {
        funcname[pos-1] = tolower(cmdtext[pos]);
    }
    format(funcname, sizeof(funcname), "cmd_%s", funcname);
    while (cmdtext[pos] == ' ') pos++;
    if (!cmdtext[pos])
    {
        if (zcmd_g_HasOPCE)
        {
            return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
        }
        return CallLocalFunction(funcname, "is", playerid, "\1");   
    }
    if (zcmd_g_HasOPCE)
    {
        return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
    }
    return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
}

#if defined _ALS_OnPlayerCommandText
    #undef OnPlayerCommandText
#else
    #define _ALS_OnPlayerCommandText
#endif
#define OnPlayerCommandText zcmd_OnPlayerCommandText
forward zcmd_OnPlayerCommandText(playerid, cmdtext[]);
Кому не трудно, помогите пожалуйста
 
Сверху Снизу