shape1
shape2
shape3
shape4
shape7
shape8

Проблема с TextDraw


Статус
Закрыто для дальнейших ответов.

Legends

Освоившийся
Пользователь
15.05.2015
323
96
0
26
Доброго времени суток, уважаемые пользователи pawno-crmp.ru

у меня такая проблема:

В общем сделал TextDraw запихнул его в пикап(когда встаешь на его)

и такая проблема не могу убрать TextDraw когда ухожу с пикапа , я пробовал по разному но нечего не выходит, пока что остановился так: но он все ровно не пропадает, так как там нельзя использовать [playerid]

вот код вместе с пабликом
 

public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid==sysCars)
{
TextDrawShowForPlayer(playerid, InfoTitle);
TextDrawShowForPlayer(playerid, InfoText);
TextDrawShowForPlayer(playerid, BgInfo);
}
else if(pickupid!=sysCars)
{
TextDrawDestroy(InfoTitle);
TextDrawDestroy(InfoText);
TextDrawDestroy(BgInfo);
}
}

pawno-crmp-034.png
 

Legends

Освоившийся
Пользователь
15.05.2015
323
96
0
26
,в public SecondTime нет (playerid) добавить? 
из-за этого куча таких ошибок:
 

error 017: undefined symbol "playerid"

еще такие ошибки:
 

error 017: undefined symbol "i"

но я твой код писал так и не было их:
 

Код:
for(new i = 0; i < MAX_PLAYERS; i++)
{
    if(GetPVarInt(i,"pick_sysCars") == 1)
    {
        if(!IsPlayerInRangeOfPoint(i, 2.0, GetPVarFloat(playerid,"px"),GetPVarFloat(playerid,"py"),GetPVarFloat(playerid,"pz")))
        {
            TextDrawShowForPlayer(i, InfoTitle);
            TextDrawShowForPlayer(i, InfoText);
            TextDrawShowForPlayer(i, BgInfo);
            DeletePVar(playerid,"pick_sysCars");
            DeletePVar(playerid,"px");
            DeletePVar(playerid,"py");
            DeletePVar(playerid,"pz");
        }
    }
}
 
A

Autor

Гость
Гость
@Legends, правильно, я забыл про цикл. Так работает или нет теперь?

 

Legends

Освоившийся
Пользователь
15.05.2015
323
96
0
26
, нет к сожалению все по прежнему, не исчезает  

 
A

Autor

Гость
Гость
Попробуй так:

public SecondTime()
{
new Float:pos[3];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPVarInt(i,"pick_sysCars") == 1)
{
GetPlayerPos(i, pos[0],pos[1],pos[2]);
if(pos[0] != GetPVarFloat(playerid,"px") && pos[1] != GetPVarFloat(playerid,"py") && pos[2] != GetPVarFloat(playerid,"pz"))
{
TextDrawShowForPlayer(i, InfoTitle);
TextDrawShowForPlayer(i, InfoText);
TextDrawShowForPlayer(i, BgInfo);
DeletePVar(playerid,"pick_sysCars");
DeletePVar(playerid,"px");
DeletePVar(playerid,"py");
DeletePVar(playerid,"pz");
}
}
}
return 1;
}

А вообще, тебе не проще показывать TextDraw на определенное время, а не так, пока стоит на пикапе?

 

Legends

Освоившийся
Пользователь
15.05.2015
323
96
0
26
, все по прежнему,  и как сделать на время?  если через таймер то я сам не смогу, нужен готовый код таймера на время, если не сложно

 

Basis

chto tut doljno bit`!?
Пользователь
24.06.2014
824
1
271
0
25
так же выводишь и запускаешь таймер и в него засовываешь убирание текстдравов

 
A

Autor

Гость
Гость
:D83DDE31:   :D83DDE31:   :D83DDE31:   :D83DDE31:

Только сейчас заметил в секундном таймере стоит TextDrawShowForPlayer, а не TextDrawHideForPlayer. 

Вот так сделай:

public SecondTime()
{
new Float:pos[3];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPVarInt(i,"pick_sysCars") == 1)
{
GetPlayerPos(i, pos[0],pos[1],pos[2]);
if(pos[0] != GetPVarFloat(playerid,"px") && pos[1] != GetPVarFloat(playerid,"py") && pos[2] != GetPVarFloat(playerid,"pz"))
{
TextDrawHideForPlayer(i, InfoTitle);
TextDrawHideForPlayer(i, InfoText);
TextDrawHideForPlayer(i, BgInfo);
DeletePVar(playerid,"pick_sysCars");
DeletePVar(playerid,"px");
DeletePVar(playerid,"py");
DeletePVar(playerid,"pz");
}
}
}
return 1;
}

И на всякий случай второй вариант:

Код:
//В конец мода
stock ShowTextDrawHelp(playerid, sec)
{
    TextDrawShowForPlayer(playerid, InfoTitle);
    TextDrawShowForPlayer(playerid, InfoText);
    TextDrawShowForPlayer(playerid, BgInfo);
    SetTimerEx("HideTextDrawHelp",sec*1000,false,"i",playerid);
}

forward HideTextDrawHelp(playerid);
public HideTextDrawHelp(playerid)
{
    TextDrawHideForPlayer(playerid, InfoTitle);
	TextDrawHideForPlayer(playerid, InfoText);
    TextDrawHideForPlayer(playerid, BgInfo);
	return 1;
}

//Показывать так:
ShowTextDrawHelp(playerid, 5);//Покажет подсказку на 5 сек
 

Legends

Освоившийся
Пользователь
15.05.2015
323
96
0
26
, 1 помогло, спасибо большое, за то что возился со мной, я и сам заметил это, но еще раньше когда не было таймера, пробовал ставить  TextDrawHideForPlayer, но не помогло, а потом когда ты мне готовые коды кидал, я даже и не замечал это, спасибо еще раз и спасибо @Basis, за то что подметил:) ++ вам

 
Статус
Закрыто для дальнейших ответов.