Просмотр полной версии : [Вопрос] OnPlayerDeath
Niko_Grey
15.06.2015, 18:38
Возникла проблема. В enum есть переменная gScore[2], т.е gScore[0] отвечает за очки 1 команды, gScore[1] за очки 2 команды.
Все бы ничего, но случилась беда: в OnPlayerDeath я делаю следующее:
gInfo[pInfo[killerid][pGame]][gScore][pInfo[killerid][pTeam]] ++;
Но почему-то происходят сбои (иногда просто напросто не прибавляется), особой закономерности нет, раз на раз, уже не знаю что делать..
Думаю все понятно, если нет, пишите - дополню.
Если игрок погибнет сам без участия противника, то значение переменной killerid будет = INVALID_PLAYER_ID ( 65535 ). То есть, если вызвать элемент массива с таким порядковым номером, то код не сработает из-за сбоя.
Вот такое решение могу предложить:
if(killerid != INVALID_PLAYER_ID)
gInfo[pInfo[killerid][pGame]][gScore][pInfo[killerid][pTeam]] ++;
Niko_Grey
15.06.2015, 19:38
Если игрок погибнет сам без участия противника, то значение переменной killerid будет = INVALID_PLAYER_ID ( 65535 ). То есть, если вызвать элемент массива с таким порядковым номером, то код не сработает из-за сбоя.
Вот такое решение могу предложить:
if(killerid != INVALID_PLAYER_ID)
gInfo[pInfo[killerid][pGame]][gScore][pInfo[killerid][pTeam]] ++;
Это я знаю..Тестили вдвоем с другом. Сейчас вот опять тестим все нормально, с чем мог быть связан сбой? Если убивал я не сам себя.
Daniel_Cortez
15.06.2015, 19:41
Просто оставлю это здесь:
http://pro-pawn.ru/showthread.php?2991-Crashdetect
Niko_Grey
15.06.2015, 19:41
Просто оставлю это здесь:
http://pro-pawn.ru/showthread.php?2991-Crashdetect
Детектил, ничего не показывает. Да и я думаю было бы все время.
$continue$
15.06.2015, 19:44
Детектил, ничего не показывает. Да и я думаю было бы все время.
А пользуетесь правильно? Откладка -d3 стоит?
Daniel_Cortez
15.06.2015, 19:47
У человека, читающего мысли на расстоянии через интернет, сегодня выходной.
Без кода OnPlayerDeath вряд ли что-то можно будет выяснить.
Niko_Grey
15.06.2015, 19:50
У человека, читающего мысли на расстоянии через интернет, сегодня выходной.
Без кода OnPlayerDeath вряд ли что-то можно будет выяснить.
Я, вроде все скинул..Больше в OnPlayerDeath у меня ничего нет.
Инициализацию массива тогда покажите.
Niko_Grey
15.06.2015, 19:58
Инициализацию массива тогда покажите.
Вы имели ввиду это?
enum game_information
{
gMap,
gTeam[2],
gScore[2]
};
new game_info[MAX_GAMES][game_information];
$continue$
15.06.2015, 20:02
Вы имели ввиду это?
enum game_information
{
gMap,
gTeam[2],
gScore[2]
};
new game_info[MAX_GAMES][game_information];
MAX_GAMES - показывайте
Niko_Grey
15.06.2015, 20:05
MAX_GAMES - показывайте
Она равна единице.
Daniel_Cortez
15.06.2015, 20:43
Вы имели ввиду это?
enum game_information
{
gMap,
gTeam[2],
gScore[2]
};
new game_info[MAX_GAMES][game_information];
Массив game_info - это переименованный gInfo из 1 поста?
Niko_Grey
16.06.2015, 06:42
Массив game_info - это переименованный gInfo из 1 поста?
Верно...Я использую более сокращенный вид через макросы, но думал вы запутаетесь.
if(IsPlayerConnected(killerid))
{
gInfo[pInfo[killerid][pGame]][gScore][pInfo[killerid][pTeam]] ++;
}
Если не поможет (хотя еще вариант Londlem'a должен был помочь в таком случае), залогируйте все используемые переменные. Например:
if(IsPlayerConnected(killerid))
{
gInfo[pInfo[killerid][pGame]][gScore][pInfo[killerid][pTeam]] ++;
new log[60];
format(log,sizeof(log), "killerid - %d, pGame - %d, gScore - %d, pTeam - %d", killerid, pInfo[killerid][pGame][gScore][pInfo[killerid][pTeam]], pInfo[killerid][pTeam]);
SendClientMessage(playerid, -1, log);
printf("%s", log);
}
Niko_Grey
17.06.2015, 06:25
if(IsPlayerConnected(killerid))
{
gInfo[pInfo[killerid][pGame]][gScore][pInfo[killerid][pTeam]] ++;
}
Да ну причем тут это..Я же говорю, с другом тестили, он явно был на сервере =_=
Сейчас вроде прекратились сбои, но так и не понял что было.. Тему можно закрывать
Попробую логировать, если еще раз появится проблема, спасибо.
Да ну причем тут это..Я же говорю, с другом тестили, он явно был на сервере =_=
Сейчас вроде прекратились сбои, но так и не понял что было.. Тему можно закрывать
Я не до конца пост написал. С телефона пишу и случайно отправил.
Проблема если и есть - она в данных, которые хранятся в переменных. Тут мы ничем не сможем помочь. Только тестирование и логирование
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot