TextDraw падает не на свое место)
#1


Часы падают не на своё место и принимают шрифт, размер другого текстдрава, переменные разные часы обновляются в минуту!

pawn Код:
public UpdateTime()
{
    new timestr[32];
    gettime(hour, minute);
    format(timestr,32,"%02d~y~:~w~%02d",hour,minute);
    TextDrawSetString(txtTimeDisp,timestr);
   
    SetWorldTime(hour);
   
    new x=0;
    while(x!=MAX_PLAYERS)
    {
        if(IsPlayerConnected(x) && GetPlayerState(x) != PLAYER_STATE_NONE)
        {
            SetPlayerTime(x,hour,minute);
        }
        x++;
    }
}
Reply
#2

Покажи где ты создаешь этот текст и код обновления того на чьё место он встает.
pawn Код:
new x=0;
    while(x!=MAX_PLAYERS)
x++;
вместо 3х строк хватило бы одной:
pawn Код:
for (new x = 0; x < MAX_PLAYERS; x++)
Из плюсов:
  • наглядность, что если тело цикла более 100 строк, тогда искать где этот x++ будет сложновато.
  • < более строгое условие.
  • И саый главный плюс, область видимости переменной x не выходить за пределы цыкла.
PS я бы переименовал x в playerid
Reply
#3

согласен)
Reply
#4

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
я бы переименовал x в playerid
Не советуй больше такого. Человек должен чётко понимать, где можно использовать переменную playerid, а создание новой такой в паблике дизориентирует его.
Reply
#5

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Не советуй больше такого. Человек должен чётко понимать, где можно использовать переменную playerid, а создание новой такой в паблике дизориентирует его.
А разве какие-то проблемы с этой переменной, она системная или это имя как-то зарезервировано?
Reply
#6

Да, проблемы. Паблик не персонализирован, поэтому нужна переменная, в которой будут перебираться ID игроков, а с данным именем вызывает подобные ответы: "добавь new playerid" - и все начинают сувать функции, ориентированные на игроков в общие паблики с объявлением переменной, что допустит работу только для id 0.
Reply
#7

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Да, проблемы. Паблик не персонализирован, поэтому нужна переменная, в которой будут перебираться ID игроков, а с данным именем вызывает подобные ответы: "добавь new playerid" - и все начинают сувать функции, ориентированные на игроков в общие паблики с объявлением переменной, что допустит работу только для id 0.
это проблема кривизны рук, а не переменной.
Reply
#8

Stepashka, спасибо заменил на for...
pawn Код:
for(new i=0; i<MAX_PLAYERS; i++)

            TextDrawShowForPlayer(i,Textdraw0[i]);
       
            format(td, sizeof(s), "Score %d", Score[i]);
                TextDrawSetString(Textdraw0[i], td);
------------------------------[создание onplayerconnect]
    Textdraw0[playerid] = TextDrawCreate(500.000000, 100.000000, "Score");
    TextDrawBackgroundColor(Textdraw0[playerid], 255);
    TextDrawFont(Textdraw0[playerid], 3);
    TextDrawLetterSize(Textdraw0[playerid], 0.450000, 1.700000);
    TextDrawColor(Textdraw0[playerid], -1);
    TextDrawSetOutline(Textdraw0[playerid], 1);
    TextDrawSetProportional(Textdraw0[playerid], 1);
Создаю время

pawn Код:
txtTimeDisp = TextDrawCreate(551.000000, 21.000000, "00~y~:~w~00");
    TextDrawBackgroundColor(txtTimeDisp, 255);
    TextDrawFont(txtTimeDisp, 3);
    TextDrawLetterSize(txtTimeDisp, 0.559999, 2.200000);
    TextDrawColor(txtTimeDisp, -1);
    TextDrawSetOutline(txtTimeDisp, 0);
    TextDrawSetProportional(txtTimeDisp, 1);
    TextDrawSetShadow(txtTimeDisp, 1);
    UpdateTime();
    SetTimer("UpdateTime",1000 * 60,1);
Reply
#9

Я так понимаю всё нормально) но не понятно как так он падает... но Textdraw0 (Score) он почти посстоянно появляется и удаляется (show, hide), часы не в начале падают, а позже! Сам не видел в какой момент при тесте на локалке всё ок, ставлю на сервер всё ок зайду примерно через 30-50 минут он уже не на своём месте!
Reply
#10

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
это проблема кривизны рук, а не переменной.
Это проблема подобных советчиков, которые путают начинающих скриптеров.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)