TextDraw, Так как-же их правильно создавать? -
-Stranger- - 23.01.2011
В общем название темы говорит само за себя.
На вики ничего конкретного нету.
Давайте рассмотрим на конкретном примере: Адрес сайта, который всегда видят все игроки.
PHP код:
new Text:Site;
CreateSite() // Вызов в OnGameModeInit
{
Site = TextDrawCreate(415.000000,2.000000,SITE_HTTP);
TextDrawAlignment(Site,0);
TextDrawBackgroundColor(Site,0x0000FFFF);
TextDrawFont(Site,2);
TextDrawLetterSize(Site,0.699999,2.000000);
TextDrawColor(Site,0xFFFFFFFF);
TextDrawSetOutline(Site,1);
TextDrawSetProportional(Site,1);
TextDrawSetShadow(Site,3);
}
public OnPlayerConnect(playerid){
TextDrawShowForPlayer(pid,Site);
...
}
public OnPlayerDisconnect(playerid, reason)
{
TextDrawHideForPlayer(pid,Site);
...
}
Грамотно-ли это сделано? и как можно это довести до ума?
Re: TextDraw, Так как-же их правильно создавать? -
Johnny_Xayc - 23.01.2011
у тебя всё правильно.
Re: TextDraw, Так как-же их правильно создавать? -
-Stranger- - 23.01.2011
Ну и второй пример, для внесения ясностей: Часы на сервере, показывающее время сервера всем игрокам.
PHP код:
new Text:tdTime;
forward UpdateTime();
CreateClock() // Вызов в OnGameModeInit
{
tdTime = TextDrawCreate(601.5,30.0,"--:--");
TextDrawUseBox(tdTime,0);
TextDrawFont(tdTime,3);
TextDrawSetShadow(tdTime,0);
TextDrawSetOutline(tdTime,1);
TextDrawBackgroundColor(tdTime,0x0000FFFF);
TextDrawColor(tdTime,0xFFFFFFFF);
TextDrawAlignment(tdTime,3);
TextDrawLetterSize(tdTime,0.5,1.5);
SetTimer("UpdateTime",1000,1);
}
public UpdateTime()
{
new s, msg[max_line];
gettime(h,m,s);
time = " ";
if(h<10) format(time,4,"0%i:",h);
else format(time,4,"%i:",h);
if(m<10) format(time,6,"%s0%i",time,m);
else format(time,6,"%s%i",time,m);
TextDrawSetString(tdTime,time);
...
}
public OnPlayerConnect(playerid){
TextDrawShowForPlayer(pid,tdTime);
...
}
public OnPlayerDisconnect(playerid, reason)
{
TextDrawHideForPlayer(pid,tdTime);
...
}
Re: TextDraw, Так как-же их правильно создавать? -
-Stranger- - 23.01.2011
Johnny_Xayc, Если я правильно понимаю, получается для каждого игрока свой td.
Считаем: (Часы+Сайт+Инфопанель+Спидометр+4td_приветствия_пр и_конекте)*222(лимит моего сервера)=1776td Конечно не лимит но почти впритык. Но если решу увеличивать лимит игроков,(маловероятно, НО...), то уже выйду за предел.
Re: TextDraw, Так как-же их правильно создавать? -
White_116 - 23.01.2011
Очищать и удалять в OnGameModeExit не забывай. При рестарте мода проблемы могут возникнуть.
Re: TextDraw, Так как-же их правильно создавать? -
Romanius - 24.01.2011
TextDrawShowForAll ?
Re: TextDraw, Так как-же их правильно создавать? -
-Stranger- - 24.01.2011
TextDrawShowForAll - Показывает всем игрокам, который подключены к серверу, и стоит кому-нить подключиться после выполнения, то у игрока текста НЕ будет.
Re: TextDraw, Так как-же их правильно создавать? -
dimonml - 24.01.2011
У тебя все верно, только ты лимиты немного не так считаешь.
tdTime = TextDrawCreate(... - это 1 текст драв. От того, что ты его покажешь одному игроку или 100 он один быть не перестанет. Умножать на количество игроков нужно только те текстдравы, которые для каждого игрока отличаются.
https://sampwiki.blast.hk/wiki/Limits
Shown In A Single Client's Screen 92
Created Serverwise 2048
Грубо говоря, это значит, что можно 2048 раз вызвать TextDrawCreate и 92 раза вызвать TextDrawShowForPlayer для одного игрока (безусловно, текстдравы можно создавать/удалять, показывать/скрывать. Тут имеется в виду максимальное число именно созданных/показанных в текущий момент)
PS: я самостоятельно цифры из лимитов не проверял, но они часто отличаются от действительности, это нужно иметь в виду.
Re: TextDraw, Так как-же их правильно создавать? -
-Stranger- - 25.01.2011
dimonml, Ааа, всё, теперь понял....
Спасибо за ответ
Re: TextDraw, Так как-же их правильно создавать? -
-Stranger- - 04.02.2011
Все переделал по данной инструкции, но стало тока хуже. Статический текст нормально работает, а вот динамические глючат хоть вешайся...
Re: TextDraw, Так как-же их правильно создавать? -
-Stranger- - 09.02.2011
Вообщем ничего не получается, вынужден просить помощи, того, кто сможет исправить ошибку в моём моде...
Естественно за вознаграждение.
Re: TextDraw, Так как-же их правильно создавать? -
iEnemY - 09.02.2011
А еще раз не можешь описать по конкретней, что тебе требуется? Строка в текстдравах чтоль не изменяется?
Re: TextDraw, Так как-же их правильно создавать? -
OKStyle - 10.02.2011
Создай текстдрав, показывай текстдрав при коннекте игрока, а по таймеру обновляй значение созданного текстдрава...
Re: TextDraw, Так как-же их правильно создавать? -
Romanius - 10.02.2011
а зачем по таймеру изменять? может быть изменять при обновлении данных?
Re: TextDraw, Так как-же их правильно создавать? -
OKStyle - 10.02.2011
Само-собой, но если данные обновляются по таймеру, то в чём я не прав? =)
Re: TextDraw, Так как-же их правильно создавать? -
-Stranger- - 10.02.2011
Глючит спидометр и таймер.
Спидометр: Создаётся когда садишься в машину, - когда выходит уничтожается. Обновляется каждую секунду.
Таймер: Создаётся когда сажают в больницу\тюрьму, - уничтожается когда выпускают.
И вот эти тексты по страшному глючат.
Под словом глючат я имею ввиду следующее: Например в замен таймера, появляется спидометр другого игрока, и мигает. Могут по 2-3 спидометра мигать, и при этом ещё проскакивает и мой таймер.
Самое интересное, что раньше это глючило, но очень редко, теперь постоянно, а я тока добавил оформление к тексту.
Re: TextDraw, Так как-же их правильно создавать? -
OKStyle - 10.02.2011
Создай персонализированный текстдрав (Speed[playerid]) в OnPlayerConnect, а при посадке в транспорт - показывай его, в таймере обновления - TextDrawSetString, при выходе игрока - удаляй текстдрав.
Re: TextDraw, Так как-же их правильно создавать? -
iEnemY - 10.02.2011
У меня на сервере сразу создаются все нужные текстдавы, а при нужный действиях - скрываются или показываются. Если нужно изменить текст - тут проблем нету, а если нужно например изменить цвет текста, или цвет фона - то тут нужно скрывать ТД, изменять цвет, и создавать ТД
OKStyle прав - так и нужно, создавать для каждого игрока персональный текстдрав, и при OnPlayerConnect показывать (или создавать - как предпочтешь, и тогда при OnPlayerDisconnect удалять).
Re: TextDraw, Так как-же их правильно создавать? -
Romanius - 10.02.2011
Quote:
Originally Posted by OKStyle
Само-собой, но если данные обновляются по таймеру, то в чём я не прав? =)
|
ах ну да, гребаный павн, в нем даже ивентов нет
Re: TextDraw, Так как-же их правильно создавать? -
White_116 - 10.02.2011
-Stranger- не мучайся, не исправляй а лучше офни и заново всё напиши с вниманием. Я своё спидометр 8 раз переделывал-5 раза из-за этих самых текстдравов.
Выше я описал что и как из личного опыта. В итоге вот что получилось.
new Text
TNos[23];-балон нитрухи реализировано как в НФС
new Text:TDClock[10];-измерительная сетка(фон)
new Text:TDHud[MAX_PL][6];-всё что меняется.
1 таймер, стоит 100 мс.
анти спидхак
анти починка
уменьшает хп при аварии (как в Мафии но ослабленно).
дрифтер и спидометр можно отключить.(отдельно можно дрифтер вырубить если и спидометр то дрифтер тоже оффается)