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++)
Из плюсов:
- наглядность, что если тело цикла более 100 строк, тогда искать где этот x++ будет сложновато.
- < более строгое условие.
- И саый главный плюс, область видимости переменной 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
это проблема кривизны рук, а не переменной.
|
Это проблема подобных советчиков, которые путают начинающих скриптеров.