Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Invalid memory access

Статус
В этой теме нельзя размещать новые ответы.

Druzhok

Дебютант
Нашел функцию на подобии "format", сделал что бы оно возвращало значение через return, ибо делать каждый раз формат надоедало, а конкатенации тут таковой нет, как в PHP, Java, Lua.

Вылезла ошибка, уже час не могу понять, что оно хочет.

Ошибка:
PHP:
[debug] Run time error 5: "Invalid memory access"
[debug] AMX backtrace:
[debug] #0 0000a9cc in string (fstring[]=@00003ad4 "[A] ", ... <2 arguments>) at C:\Users\cloud\Desktop\server\gamemodes\hinex.pwn:486
[debug] #1 00009350 in public cmd_alogin (playerid=0, params[]=@000056b4 "123123") at C:\Users\cloud\Desktop\server\gamemodes\hinex.pwn:309
[debug] #2 native CallLocalFunction () from samp-server.exe
[debug] #3 00006c80 in public OnPlayerCommandText (playerid=0, cmdtext[]=@00005678 "/alogin 123123") at ../include/izcmd.inc:112
Части кода с ошибкой:
PHP:
sendMessageToAdmins(COLOR_WHITE, string("[A] Администратор %s авторизовался как администратор %i уровня.", 
                        getPlayerName(playerid), getPlayerAdminLevel(playerid)));
PHP:
stock string(fstring[], {Float, _}:...){
    new n = (numargs() - 2) * BYTES_PER_CELL;
    new message[312], 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          312
    #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 message;
}
PHP:
stock sendMessageToAdmins(color, msg[]){
    for(new i, j = GetPlayerPoolSize(); i <= j; i++){      
        if(getPlayerALoginStatus(i) == 1){
            SendClientMessage(i, color, msg);
        }
    }
}
P.s Если что-то недосказал, не очень понятно объяснил - спрашивайте, не проходите мимо.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу