05.10.2017, 04:47 
	
	
	
		А это кто такой? Неужели старичков достойных не нашли?
	
	
	
	
| У него достаточно знаменитый RolePlay сервер. Наверное, 2-й после LS-RP. Состав RedCounty RolePlayer | 
| Есть кривой мод (предположительно паблик), на котором периодически перестаёт синхронизировать игрока с сервером: все игроки в зоне стрима встают в афк, а объекты за зоной стрима просто не создаются. Все команды, завязанные на действиях с другими игроками (например, слежка за игроком) так же отказываются работать. Работает только чат (игрок получает сообщения от других и сам может их писать). И так до релога (хоть даже собейтом сделать быстрый релог), после чего всё опять нормально.  Какую-то последовательность отловить не смог, собственно, поэтому обращаюсь к вам. Знает ли кто с чем это может быть связано? P.S. OnPlayerUpdate всегда возвращает 1. | 
| OnPlayerUpdate не всегда может выполнятся (ошибка в коде - выход за пределы массива) | 
public OnPlayerUpdate(playerid)
{
    if(!PlayerInfo[playerid][bAdmin] && !IsPlayerDeimos(playerid))
    {
        switch(GetPlayerWeapon(playerid))
        {
            case 9, 16, 26, 27, 35, 36, 37, 38, 39, 44, 45:
                OnPlayerCheat(playerid, AC_GUNHACK_code, AC_KICK);
        }
    }
    pTemp[playerid][pAFK] = 0;
    return true;
} 
| Совершенно верно. 1) Чаще всего проблема возникает в массивах (двумерных и выше), у которых не указан размер. Например: pawn Код: 
 | 
[debug] Run time error 5: "Invalid memory access"
#define MAX_DROP (10000)
enum drop_info {
	drop_item,
	drop_amount,
	Float:drop_pos[3],
	drop_world,
	drop_interior,
	drop_object,
	drop_time
};
new DropInfo[MAX_DROP][drop_info];
for(new id; id < MAX_DROP; id++) {
	if(DropInfo[id][drop_item] == -1 || DropInfo[id][drop_amount] <= 0) { // Тут ошибка
	}
}
| У меня возникает такая ошибка: Код: [debug] Run time error 5: "Invalid memory access" Код: #define MAX_DROP (10000)
enum drop_info {
	drop_item,
	drop_amount,
	Float:drop_pos[3],
	drop_world,
	drop_interior,
	drop_object,
	drop_time
};
new DropInfo[MAX_DROP][drop_info];Код: for(new id; id < MAX_DROP; id++) {
	if(DropInfo[id][drop_item] == -1 || DropInfo[id][drop_amount] <= 0) { // Тут ошибка
	}
} | 
SetPlayerPos(playerid, 0, 0, 0); 

new mytext[10];
public OnGameModeInit() {
    format(mytext, 102, "Чернила с поверхности папируса легко смывались, и лист мог использоваться вторично для новых записей.");
    printf("%d - %s", sizeof(mytext), mytext);
    return 1;
} 
static //Помещаем оба массива в сегмент данных
    str1[] = "Привет",
    str2[] = " Как дела?";
printf("\n1) |%s|", str1);
printf("\n2) |%s|", str2);
str1[sizeof(str1)-1] = '.';//Заменяем нуль-символ в массиве на точку
printf("|%s|", str1);//Вновь выводим содержимое первого массива, но на выходе получаем содержимое двух массивов 
| Как это возможно?  PHP код: 
 | 
new mytext[10]; 
public OnGameModeInit() { 
    format(mytext, sizeof(mytext), "Чернила с поверхности папируса легко смывались, и лист мог использоваться вторично для новых записей."); 
    printf("%d - %s", sizeof(mytext), mytext); 
    return 1; 
} 
| Потому что надо читать документацию. Правильный код будет: PHP код: 
 |