TextDraw, Так как-же их правильно создавать?
#41

Quote:
Originally Posted by Nikid
View Post
Да вот не на все команды это выдает, а на 3-6. А эти новые текстдрав для игрока не используются в командах не где.
Код команды дай.
Reply
#42

SDraw, Я? Вы на дату моего последнего сообщения посмотрите =)
Я для себя уже выяснил, что создавать и удалять TD по ходу игры категорически запрещено, потому что тексты не всегда удаляются, т.е. текст пропадает, а вот ID его остаётся занят.
И не нужно пытаться доказать обратное, уже 1000 раз проверял и всегда было одно и тоже!
Reply
#43

Quote:
Originally Posted by -Stranger-
View Post
SDraw, Я? Вы на дату моего последнего сообщения посмотрите =)
Я для себя уже выяснил, что создавать и удалять TD по ходу игры категорически запрещено, потому что тексты не всегда удаляются, т.е. текст пропадает, а вот ID его остаётся занят.
И не нужно пытаться доказать обратное, уже 1000 раз проверял и всегда было одно и тоже!
Понятно...
Reply
#44

AirKiteТы ещё начни комментировать различные аспекты для версии 0.2.1 и более ранним, логика многих вещей менялась с новыми версиями.
Например в версии 0.2.1 и более ранними обновление текстдро без скрытия наслаивало все изменения друг на друга. Потом в какой-то версии это исправили.
Reply
#45

Stepashka, я на секунду поверил что нахожусь на каком то другом форуме. Обычно официальные форумы\сайты того или иного продукта ведут поддержку в осномном разделе исключительно актуальной версии. т.е. для прошлых версий специально выделяются архивные форумы (и то в пределах разумного). Тут же идёт речь о 0.3х, какого хрена у нас разговоры в основном форуме о 0.2.1? 0_o

Что же это будет если каждый будет петь со своей колокольни в основном разделе, о вещах которые противоречат друг другу в следствии изменений версий.

Исходя из названия темы и содержания первого топика я не обнаружил причин, по котором нужно было бы подозревать в использовании samp 0.2.1. Мой топик был рассчитан на 0.3(all)
Reply
#46

Quote:
Originally Posted by AirKite
View Post
Stepashka, я на секунду поверил что нахожусь на каком то другом форуме. Обычно официальные форумы\сайты того или иного продукта ведут поддержку в осномном разделе исключительно актуальной версии. т.е. для прошлых версий специально выделяются архивные форумы (и то в пределах разумного). Тут же идёт речь о 0.3х, какого хрена у нас разговоры в основном форуме о 0.2.1? 0_o

Что же это будет если каждый будет петь со своей колокольни в основном разделе, о вещах которые противоречат друг другу в следствии изменений версий.

Исходя из названия темы и содержания первого топика я не обнаружил причин, по котором нужно было бы подозревать в использовании samp 0.2.1. Мой топик был рассчитан на 0.3(all)
Для плоховидящих уточняю, первый топик был написан в 17:33 23.01.2011, это более двух лет назад!

И суть наших топиков кстати одна, если читать внимательно и вдумчиво, а не по диагонали.
Reply
#47

Quote:
Originally Posted by AirKite
View Post
Это не то что бы тупость, это особенность SAMP. Персональные TD работают иначе и удаляются при дисконнекте АВТОМАТИЧЕСКИ. В противном случае можно было бы сэкономить производительность
Тут я про TextDraw[playerid] говорил, а не PlayerTextDraw... Тогда их ещё не было...
Reply
#48

Ого, чё такую старую тему подняли 0_о

Quote:
Originally Posted by Stepashka
View Post
Для плоховидящих уточняю, первый топик был написан в 17:33 23.01.2011, это более двух лет назад!
О чудо настройки форума, где можно поднимать 2 летней давности топики Спасибо за уточнения, а то уже не знал что думать...
Reply
#49

Quote:
Originally Posted by AirKite
View Post
Stepashka
Что же это будет если каждый будет петь со своей колокольни
будет еще один /b/
Reply
#50

Quote:
Originally Posted by Stepashka
View Post
Для плоховидящих уточняю, первый топик был написан в 17:33 23.01.2011, это более двух лет назад!

И суть наших топиков кстати одна, если читать внимательно и вдумчиво, а не по диагонали.
хм... в 2011 году был актуален samp 0.2? Не ошибся?
Reply
#51

Ошибся. И не оффтопь.
Reply
#52

Quote:
Originally Posted by -Stranger-
View Post
В общем название темы говорит само за себя.
На вики ничего конкретного нету.

Давайте рассмотрим на конкретном примере: Адрес сайта, который всегда видят все игроки.
PHP Code:
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(playeridreason)
{
 
TextDrawHideForPlayer(pid,Site);
 ...

Грамотно-ли это сделано? и как можно это довести до ума?
У меня в моде зделано так-же,запускаю сервер вхожу в игру вижу сайт,далее перезахожу в игру уже не вижу,с чем это может быть связано?
Reply
#53

У тебя помимо этого текстдрава где-то созданы ещё текстдравы?Если да, то напиши где их создавал.
Reply
#54

Quote:
Originally Posted by Diman777
View Post
У тебя помимо этого текстдрава где-то созданы ещё текстдравы?Если да, то напиши где их создавал.
у меня вроде все тексдравы в stock OnPlayerCreateTextDraw()
Reply
#55

Quote:
Originally Posted by Legod
View Post
у меня вроде все тексдравы в stock OnPlayerCreateTextDraw()
С тем, что скорее всего, при выходе ты еще и удаляешь текстдрав. Иначе он бы у тебя появился.
Reply
#56

Quote:
Originally Posted by Nikid
View Post
С тем, что скорее всего, при выходе ты еще и удаляешь текстдрав. Иначе он бы у тебя появился.
Я в public OnPlayerDisconnect(playerid, reason)

TextDrawDestroy(Site);//удаляю его ,теперь убрал и тексдрав перестал пропадать) спсибо что разжевали эту тему!
Reply
#57

Скрипт в тему



PHP Code:
// LiveText v1.0 by Bombo
#include <a_samp>
#include "../include/gl_common.inc"
#define LIVE_TEXT_LEN 15 //необходимо указать длину текста
//сам текст
new LiveTextString[] = "forum.sa-mp.com";
//позиция (posx, posy) и интервал между буквами (width)
//задаются в CreateLiveText()
new Float:posxFloat:posyFloat:width;
new 
PlayerText:start_b[MAX_PLAYERS*LIVE_TEXT_LEN];
new 
Float:site_size[MAX_PLAYERS*LIVE_TEXT_LEN];
new 
Float:add[MAX_PLAYERS*LIVE_TEXT_LEN];
new 
TimerMove;
new 
Float:size_add;
forward TimerMoveText();
public 
OnFilterScriptInit()
{
    new 
i;
    print(
"\n--------------------------------------");
    print(
" LiveText v1.0 by Bombo");
    print(
"--------------------------------------\n");
    for(
0MAX_PLAYERS; ++i)
    {
      if(
IsPlayerConnected(i))
      {
        
CreateLiveText(i);
        
ShowLiveText(i);
      }
    }
       
TimerMove SetTimer("TimerMoveText"50true);
       
    return 
1;
}
public 
OnFilterScriptExit()
{
    new 
i;
    for(
0MAX_PLAYERS; ++i)
    {
        if(
IsPlayerConnected(i))
         
DestroyLiveText(i);
    }
    
KillTimer(TimerMove);
    
    return 
1;
}
CreateLiveText(i//Вызов в OnFilterScriptInit()
{
  new 
jk;
  new 
str[2];
  
width 16.0;
  
posx 400.0;
  
posy 420.0;
  
size_add 0.2;
  
  
str[1] = '\0';
  for(
0LIVE_TEXT_LEN; ++j)
  {
    
format(str2"%c"LiveTextString[j]);
    
start_b[i*LIVE_TEXT_LEN+j] = CreatePlayerTextDraw(i,posx+width*j,posy,str);
  }
  
//расчёт начальной позиции букв
  
for(0LIVE_TEXT_LEN; ++j)
  {
    
add[i*LIVE_TEXT_LEN+j] = size_add;
    
site_size[i*LIVE_TEXT_LEN+j] = size_add j%2;
    
    for(
0j; ++k)
    {
      if(
site_size[i*LIVE_TEXT_LEN+j] > || site_size[i*LIVE_TEXT_LEN+j] < 0.01)
      {
          if(
site_size[i*LIVE_TEXT_LEN+j] > 4)
          
site_size[i*LIVE_TEXT_LEN+j] = 4;
        else
          
site_size[i*LIVE_TEXT_LEN+j] = 0.01;
        if(
add[i*LIVE_TEXT_LEN+j] == size_add)
            
add[i*LIVE_TEXT_LEN+j] = -size_add;
          else
          
add[i*LIVE_TEXT_LEN+j] = size_add;
        }
        
site_size[i*LIVE_TEXT_LEN+j] = site_size[i*LIVE_TEXT_LEN+j] + add[i*LIVE_TEXT_LEN+j];
    }
  }
  for(
0LIVE_TEXT_LEN; ++j)
  {
    
PlayerTextDrawAlignment(istart_b[i*LIVE_TEXT_LEN+j],0);
    
PlayerTextDrawBackgroundColor(istart_b[i*LIVE_TEXT_LEN+j],0x00705F2F);
    
PlayerTextDrawFont(istart_b[i*LIVE_TEXT_LEN+j],2);
    
PlayerTextDrawLetterSize(istart_b[i*LIVE_TEXT_LEN+j],0.5,1.0);
    
PlayerTextDrawColor(istart_b[i*LIVE_TEXT_LEN+j],0xFFFF00FF);
    
PlayerTextDrawSetOutline(istart_b[i*LIVE_TEXT_LEN+j],1);
    
PlayerTextDrawSetProportional(istart_b[i*LIVE_TEXT_LEN+j],1);
    
PlayerTextDrawSetShadow(istart_b[i*LIVE_TEXT_LEN+j],3);
  }
}
MoveLiveText(i//Вызов в обработчике таймера TimerMoveText()
{
  new 
j;
  new 
str[2];
  
str[1] = '\0';
  
HideLiveText(i);
  
DestroyLiveText(i);
  
  for(
0LIVE_TEXT_LEN; ++j)
  {
      
format(str2"%c"LiveTextString[j]);
    
start_b[i*LIVE_TEXT_LEN+j] = CreatePlayerTextDraw(i,posx+width*j,posy+site_size[i*LIVE_TEXT_LEN+j]*site_size[i*LIVE_TEXT_LEN+j]+1,str);
  }
  for(
0LIVE_TEXT_LEN; ++j)
  {
    
//расчёт следующех координат текста
    
site_size[i*LIVE_TEXT_LEN+j] = site_size[i*LIVE_TEXT_LEN+j] + add[i*LIVE_TEXT_LEN+j];
    if(
site_size[i*LIVE_TEXT_LEN+j] > || site_size[i*LIVE_TEXT_LEN+j] < 0.01)
    {
      if(
site_size[i*LIVE_TEXT_LEN+j] > 4)
        
site_size[i*LIVE_TEXT_LEN+j] = 4;
      else
        
site_size[i*LIVE_TEXT_LEN+j] = 0.01;
      if(
add[i*LIVE_TEXT_LEN+j] == size_add)
          
add[i*LIVE_TEXT_LEN+j] = -size_add;
      else
        
add[i*LIVE_TEXT_LEN+j] = size_add;
    }
    
PlayerTextDrawAlignment(istart_b[i*LIVE_TEXT_LEN+j],0);
    
PlayerTextDrawBackgroundColor(istart_b[i*LIVE_TEXT_LEN+j],0x00705F2F);
    
PlayerTextDrawFont(istart_b[i*LIVE_TEXT_LEN+j],2);
//    PlayerTextDrawLetterSize(i, start_b[i*LIVE_TEXT_LEN+j],0.5,1.0+site_size[i*LIVE_TEXT_LEN+j]);
    
PlayerTextDrawColor(istart_b[i*LIVE_TEXT_LEN+j],0xFFFF00FF);
    
PlayerTextDrawSetOutline(istart_b[i*LIVE_TEXT_LEN+j],1);
    
PlayerTextDrawSetProportional(istart_b[i*LIVE_TEXT_LEN+j],1);
    
PlayerTextDrawSetShadow(istart_b[i*LIVE_TEXT_LEN+j],3);
  }
  
  
ShowLiveText(i);
}
ShowLiveText(i)
{
  new 
j;
  for(
0LIVE_TEXT_LEN; ++j)
    
PlayerTextDrawShow(istart_b[i*LIVE_TEXT_LEN+j]);
}
HideLiveText(i)
{
  new 
j;
  for(
0LIVE_TEXT_LEN; ++j)
    
PlayerTextDrawHide(istart_b[i*LIVE_TEXT_LEN+j]);
}
DestroyLiveText(i//Вызов в OnFilterScriptExit()
{
  new 
j;
  for(
0LIVE_TEXT_LEN; ++j)
    
PlayerTextDrawDestroy(i,start_b[i*LIVE_TEXT_LEN+j]);
}
public 
OnPlayerRequestClass(playeridclassid)
{
    
SetPlayerPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraLookAt(playerid1958.37831343.157215.3746);
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
CreateLiveText(playerid);
    
ShowLiveText(playerid);
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    
DestroyLiveText(playerid);
    return 
1;
}
public 
TimerMoveText()
{
  new 
i;
  for(
0MAX_PLAYERS; ++i)
  {
    if(
IsPlayerConnected(i))
    {
      
MoveLiveText(i);
    }
  }

На TextDrawCreate() такой не получится. Выводит только первые 5 символов. Мож кто знает почему?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)