SA-MP Forums Archive
Не работает функция - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Не работает функция (/showthread.php?tid=643663)



Не работает функция - Dreamerzzz - 24.10.2017

Код:
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("Òåêñò êîìàíäèðà óäàëåí äëÿ èãðîêà!");}
Если же ее нет, то хорошо срабатывает. С чем это может быть связано, и как можно поступить?
Заранее благодарю


Re: Не работает функция - Eims - 24.10.2017

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


Re: Не работает функция - Mutha_X - 25.10.2017

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


Re: Не работает функция - Dreamerzzz - 25.10.2017

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


Re: Не работает функция - Mutha_X - 25.10.2017

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

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


Re: Не работает функция - Dreamerzzz - 25.10.2017

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

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


Re: Не работает функция - Mutha_X - 25.10.2017

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

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


Re: Не работает функция - Kaperstone - 25.10.2017

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


Re: Не работает функция - stabker - 25.10.2017

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


Re: Не работает функция - Dreamerzzz - 25.10.2017

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