Не работает функция
#1

Код:
public IsPlayerInSquadDisconnected(playerid)
{
   if(commander[playerid] > 0)
   {
     commanders[commander[playerid]] = 100;
     activecoms[gTeam[playerid]] -= 1;
     DestroyDynamic3DTextLabel(comtext[playerid]);
     print("Êîìàíäèð ñíÿò ïðè îòêëþ÷åíèè!");
     commander[playerid] = 0;
     Squads[numsquad[playerid]] -= 1;
     numsquad[playerid] = 0;
     print("Èãðîê óáðàí èç îòðÿäà!");
     gTeam[playerid] = 3;
     print("Êîìàíäà èãðîêà îáíóëåíà!");
     return 1;
   }
   else if((commander[playerid] == 0)&&(numsquad[playerid] > 0))
   {
    if(IsValidDynamic3DTextLabel(comtext[commanders[numsquad[playerid]]])){Streamer_RemoveArrayData(STREAMER_TYPE_3D_TEXT_LABEL, comtext[commanders[numsquad[playerid]]], E_STREAMER_PLAYER_ID, playerid); print("Òåêñò êîìàíäèðà óäàëåí äëÿ èãðîêà!");}
    Squads[numsquad[playerid]] -= 1;
    numsquad[playerid] = 0;
    print("Èãðîê óáðàí èç îòðÿäà!");
    gTeam[playerid] = 3;
    print("Êîìàíäà èãðîêà îáíóëåíà!");
    return 1;
   }
   else
   {
    gTeam[playerid] = 3;
    print("Êîìàíäà èãðîêà îáíóëåíà!");
    return 1;
   }
}
Добый вечер. Такая проблема, когда игрок попадает под "среднее" условие, то функция не срабатывает. Точнее срабатывает, когда отсутствует строчка:
Код:
if(IsValidDynamic3DTextLabel(comtext[commanders[numsquad[playerid]]])){Streamer_RemoveArrayData(STREAMER_TYPE_3D_TEXT_LABEL, comtext[commanders[numsquad[playerid]]], E_STREAMER_PLAYER_ID, playerid); print("Òåêñò êîìàíäèðà óäàëåí äëÿ èãðîêà!");}
Если же ее нет, то хорошо срабатывает. С чем это может быть связано, и как можно поступить?
Заранее благодарю
Reply
#2

С невалидным значением в одном из массивов?
Подключи crashdetect, скомпилируй мод в режиме отладки и в логах покажет в чём проблема
Reply
#3

Quote:
Originally Posted by Dreamerzzz
Посмотреть сообщение
Код:
comtext[commanders[numsquad[playerid]]]
Это на порнхабе так учат кодить?
Reply
#4

Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
Это на порнхабе так учат кодить?
А что в этом коде плохого? Это избавляет от введения новых переменных
Reply
#5

Quote:
Originally Posted by Dreamerzzz
Посмотреть сообщение
А что в этом коде плохого? Это избавляет от введения новых переменных
1) Зато не избавляет программиста/скриптера от необходимости при каждом новом просмотре того же кода определять заново какой смысл был заложен в определённую часть кода.
2) Усложняешь себе жизнь в отладке.
3) Какой ты, с**а (как Пушкин), молодец - сэкономил несколько байт памяти. И плевать тебе было на то, что:
3.1) Усложнил жизнь процессору, заставив его по несколько раз брать одни и те же смещения в массивах.
3.2) Из 3.1 видно, что размер под память программы (больше инструкций; - можешь убедиться в этом по ассемблерному листингу) у тебя вырос за счёт экономии памяти данных.

Твой стиль не имеет никаких плюсов.
Reply
#6

Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
1) Зато не избавляет программиста/скриптера от необходимости при каждом новом просмотре того же кода определять заново какой смысл был заложен в определённую часть кода.
2) Усложняешь себе жизнь в отладке.
3) Какой ты, с**а (как Пушкин), молодец - сэкономил несколько байт памяти. И плевать тебе было на то, что:
3.1) Усложнил жизнь процессору, заставив его по несколько раз брать одни и те же смещения в массивах.
3.2) Из 3.1 видно, что размер под память программы (больше инструкций; - можешь убедиться в этом по ассемблерному листингу) у тебя вырос за счёт экономии памяти данных.

Твой стиль не имеет никаких плюсов.
Хорошо, я вроде бы тебя понял, спасибо!
Кстати, такой вот общий вопрос тебе вслед; Тут все так горелычи ловят и вместо того, чтоб нормально указать на ошибку и доступно объяснить начинают вот так вые****ться?
Мне кажется, из-за таких как ты, инопланетяне с нами на контакт идти не хотят c:
Reply
#7

Quote:
Originally Posted by Dreamerzzz
Посмотреть сообщение
Хорошо, я вроде бы тебя понял, спасибо!
Кстати, такой вот общий вопрос тебе вслед; Тут все так горелычи ловят и вместо того, чтоб нормально указать на ошибку и доступно объяснить начинают вот так вые****ться?
Мне кажется, из-за таких как ты, инопланетяне с нами на контакт идти не хотят c:
Вообще-то мы и есть инопланетяне . И подавать манну небесную не собираемся - у самих свои проблемы есть.
Публикуя где-либо код вы автоматически соглашаетесь с негласным правилом, что чем он понятнее ваш код написан - тем быстрее вам дадут конкретное решение, а попытка форсировать решение будет воспринята как неуважение к тем, кто мог бы помочь.

Реализацией заявления "чтоб нормально указать на ошибку и доступно объяснить" при наличии форсирования занимаются фрики, у которых полно времени - лучше бы попрактиковались в переписывании кода в соответствии с замечанием и обновили первое сообщение.
Reply
#8

pawn Код:
if(IsValidDynamic3DTextLabel(comtext[commanders[numsquad[playerid]]])){
  Streamer_RemoveArrayData(STREAMER_TYPE_3D_TEXT_LABEL, comtext[commanders[numsquad[playerid]]], E_STREAMER_PLAYER_ID, playerid);
  print("Òåêñò êîìàíäèðà óäàëåí äëÿ èãðîêà!");
}
Streamer_RemoveArrayData возвращает ответ если функция успешно выполнена или нет, принтуи то что она возвращает.

Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
Вообще-то мы и есть инопланетяне . И подавать манну небесную не собираемся - у самих свои проблемы есть.
не мы не, мы можем быть инопланетяне для других существ но не для самых себя.

Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
1) Зато не избавляет программиста/скриптера от необходимости при каждом новом просмотре того же кода определять заново какой смысл был заложен в определённую часть кода.
2) Усложняешь себе жизнь в отладке.
3) Какой ты, с**а (как Пушкин), молодец - сэкономил несколько байт памяти. И плевать тебе было на то, что:
3.1) Усложнил жизнь процессору, заставив его по несколько раз брать одни и те же смещения в массивах.
3.2) Из 3.1 видно, что размер под память программы (больше инструкций; - можешь убедиться в этом по ассемблерному листингу) у тебя вырос за счёт экономии памяти данных.

Твой стиль не имеет никаких плюсов.
дерешься за мелочи с мелочей
gg
Reply
#9

Спокойными советами занимаются "фрики", при этом те, у кого "мало времени и свои проблемы", обязательно оставят несколько постов вместо одного. А все потому, что дело вовсе не в дефиците времени, а наркомании, в прямом смысле этого слова, в серотониновой наркомании. Ведь спокойно дать совет это одно, а продоминировать своим постом над получателем это уже совсем другое, приятное.
Reply
#10

Quote:
Originally Posted by Eims
Посмотреть сообщение
С невалидным значением в одном из массивов?
Подключи crashdetect, скомпилируй мод в режиме отладки и в логах покажет в чём проблема
Благодарю, кажется, действительно помогло!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)