SA-MP Forums Archive
TextDraw падает не на свое место) - 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: TextDraw падает не на свое место) (/showthread.php?tid=297265)



TextDraw падает не на свое место) - CraftMan - 15.11.2011


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

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++;
    }
}



Re: TextDraw падает не на свое место) - Stepashka - 15.11.2011

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


Re: TextDraw падает не на свое место) - Crystal_Speed - 15.11.2011

согласен)


Re: TextDraw падает не на свое место) - OKStyle - 15.11.2011

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


Re: TextDraw падает не на свое место) - Stepashka - 15.11.2011

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


Re: TextDraw падает не на свое место) - OKStyle - 15.11.2011

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


Re: TextDraw падает не на свое место) - Stepashka - 15.11.2011

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


Re: TextDraw падает не на свое место) - CraftMan - 15.11.2011

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);



Re: TextDraw падает не на свое место) - CraftMan - 15.11.2011

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


Re: TextDraw падает не на свое место) - OKStyle - 16.11.2011

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