Массивы в таймерах
#1

Вопрос, почему так работает:
pawn Код:
public OnFilterScriptInit()
{
    print("Starting timer...");
    new arr[COL];
    new as = 3;
    new num = 1337;
    for(new i=0;i<COL;i++)
        arr[i] = i+1;
    //SetTimerEx("message", 1000, false, "iai", num, arr,5);
    message(as,num,arr);
    return 1;
}
public message(number,second,const msg[])
{
    printf("--------------------------------------------------------------");
    printf("number %d,second %d ",number,second);
    for(new i=0;i<COL;i++)
    {
        printf("msg%d", msg[i]);
    }
    //for(new i=0;i<COL;i++)
    //  printf("%i second has passed, %d also we have a message: %i", second,number, msg[i]);
    SetTimerEx("message", 1000, false, "iiai",number, second, msg,COL);
    return 1;
}
а так нет:
pawn Код:
CMD:timertest(playerid, params[])
    {
        new arr[COL];
        new as = 3;
        new num = 1337;
        for(new i=0;i<COL;i++)
            arr[i] = i+1;
        //SetTimerEx("message", 1000, false, "iai", num, arr,5);
        message(as,num,arr);
        return 1;
    }

public message(number,second,const msge[])
{
    printf("--------------------------------------------------------------");
    printf("number %d,second %d ",number,second);
    for(new i=0;i<COL;i++)
    {
        printf("msg%d", msge[i]);
    }
    //for(new i=0;i<COL;i++)
    //  printf("%i second has passed, %d also we have a message: %i", second,number, msg[i]);
    SetTimerEx("message", 1000, false, "iiai",number, second, msge,COL);
    return 1;
}
CMD - это zcmd.
При вызове фильтр скрипта массив через таймер передается нормально
результат:
number 3,second 1337
[10/11|22:36:30] msg1
[10/11|22:36:30] msg2
[10/11|22:36:30] msg3
[10/11|22:36:30] msg4
[10/11|22:36:30] msg5
[10/11|22:36:30] msg6
[10/11|22:36:30] msg7
[10/11|22:36:30] msg8
[10/11|22:36:30] msg9
[10/11|22:36:30] msg10
[10/11|22:36:30] msg11
[10/11|22:36:30] msg12
[10/11|22:36:30] msg13
[10/11|22:36:30] msg14
[10/11|22:36:30] msg15
[10/11|22:36:30] msg16
...
А если через команду в игре то:
number 3,second 1337
[10/11|22:36:31] msg105
[10/11|22:36:31] msg109
[10/11|22:36:31] msg101
[10/11|22:36:31] msg114
[10/11|22:36:31] msg116
[10/11|22:36:31] msg101
[10/11|22:36:31] msg115
[10/11|22:36:31] msg116
[10/11|22:36:31] msg0
[10/11|22:36:31] msg10
[10/11|22:36:31] msg11
[10/11|22:36:31] msg12
[10/11|22:36:31] msg13
[10/11|22:36:31] msg14
[10/11|22:36:31] msg15
[10/11|22:36:31] msg16
В чем причина?
Reply
#2

Никто понятия не имеет?
Reply
#3

Через таймер текст передается криво, давно известный баг. Используйте, например, глобальную переменную.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)