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 код:
|