Problema com textdraw - Levi.M - 11/06/2021
Olá, estou tendo um problema bem irritante com textdraws, eu fiz um sistema para mostrar a textdraw em uma área, mas só está mostrando uma.
Código PHP: forward ShowTextDraws(playerid); public ShowTextDraws(playerid) { SetTimerEx("ShowTextDraws", segundos(1), false, "i", playerid); if(PlayerToPoint(35.0,playerid,-1003.4734,-1620.8268,76.3672)) { Area[playerid]=1; PlayerTextDrawSetString(playerid,ABASTECENDO[playerid],"Plantacao_de_~r~Maconha"); PlayerTextDrawShow(playerid,ABASTECENDO[playerid]); }else{ if(Area[playerid] == 1) { PlayerTextDrawHide(playerid,ABASTECENDO[playerid]); Area[playerid]=0; } } if(PlayerToPoint(15.0,playerid,-2022.6522, 157.7932, 30.5547)) { new string[128]; Area[playerid]=1; GetPlayerPos(playerid,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]); Get2DZoneName(Location,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY]); format(string,sizeof(string),"Auto_Posto_~r~%s__~b~/Abastecer",Location); PlayerTextDrawSetString(playerid,ABASTECENDO[playerid],string); PlayerTextDrawShow(playerid,ABASTECENDO[playerid]); }else{ if(Area[playerid] == 1) { PlayerTextDrawHide(playerid,ABASTECENDO[playerid]); Area[playerid]=0; } } }
No caso só está mostrando em uma posição, e na outra não mostra, não sei oque pode ser, até coloquei verificação pra não floodar mas infelizmente não aparece, se alguém puder ajudar, agradeço.
Código PHP: if(PlayerToPoint(15.0,playerid,-2022.6522, 157.7932, 30.5547))
RE: Problema com textdraw - LeleziiN - 11/06/2021
(11/06/2021 10:15)Levi.M Escreveu: Olá, estou tendo um problema bem irritante com textdraws, eu fiz um sistema para mostrar a textdraw em uma área, mas só está mostrando uma.
Código PHP: forward ShowTextDraws(playerid); public ShowTextDraws(playerid) { SetTimerEx("ShowTextDraws", segundos(1), false, "i", playerid); if(PlayerToPoint(35.0,playerid,-1003.4734,-1620.8268,76.3672)) { Area[playerid]=1; PlayerTextDrawSetString(playerid,ABASTECENDO[playerid],"Plantacao_de_~r~Maconha"); PlayerTextDrawShow(playerid,ABASTECENDO[playerid]); }else{ if(Area[playerid] == 1) { PlayerTextDrawHide(playerid,ABASTECENDO[playerid]); Area[playerid]=0; } } if(PlayerToPoint(15.0,playerid,-2022.6522, 157.7932, 30.5547)) { new string[128]; Area[playerid]=1; GetPlayerPos(playerid,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]); Get2DZoneName(Location,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY]); format(string,sizeof(string),"Auto_Posto_~r~%s__~b~/Abastecer",Location); PlayerTextDrawSetString(playerid,ABASTECENDO[playerid],string); PlayerTextDrawShow(playerid,ABASTECENDO[playerid]); }else{ if(Area[playerid] == 1) { PlayerTextDrawHide(playerid,ABASTECENDO[playerid]); Area[playerid]=0; } } }
No caso só está mostrando em uma posição, e na outra não mostra, não sei oque pode ser, até coloquei verificação pra não floodar mas infelizmente não aparece, se alguém puder ajudar, agradeço.
Código PHP: if(PlayerToPoint(15.0,playerid,-2022.6522, 157.7932, 30.5547))
Mano não sei se vai ta certo, mais vc poderia fazer de outra formar.
Testa assim
Código PHP: forward ShowTextDraws(playerid); public ShowTextDraws(playerid) { SetTimerEx("ShowTextDraws", segundos(1), false, "i", playerid); if(PlayerToPoint(35.0,playerid,-1003.4734,-1620.8268,76.3672)) { Area[playerid]=1; PlayerTextDrawSetString(playerid,ABASTECENDO[playerid],"Plantacao_de_~r~Maconha"); PlayerTextDrawShow(playerid,ABASTECENDO[playerid]); }else{ if(Area[playerid] == 1) { PlayerTextDrawHide(playerid,ABASTECENDO[playerid]); Area[playerid]=0; } } else if(PlayerToPoint(15.0,playerid,-2022.6522, 157.7932, 30.5547)) { new string[128]; Area[playerid]=1; GetPlayerPos(playerid,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]); Get2DZoneName(Location,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY]); format(string,sizeof(string),"Auto_Posto_~r~%s__~b~/Abastecer",Location); PlayerTextDrawSetString(playerid,ABASTECENDO[playerid],string); PlayerTextDrawShow(playerid,ABASTECENDO[playerid]); }else{ if(Area[playerid] == 1) { PlayerTextDrawHide(playerid,ABASTECENDO[playerid]); Area[playerid]=0; } } }
No meu uso dessa forma aqui
Código PHP: if(X >= 349.9816 && Y >= -2089.4988 && X <= 409.1110 && Y <= -2049.2551) //Perto da roda gigante de LS { TextDrawSetString(TextdrawPostos[I], "~n~~y~~h~Area ~w~~h~de ~b~~h~~h~~h~Pesca ~w~~h~- ~g~~h~~h~~h~/Pescar"); TextDrawShowForPlayer(I, TextdrawPostos[I]); AreaPesca[I] = 1; } else { AreaPesca[I] = 0; if(PescaInProgress[I] == 1) { SendClientMessage(I, branco, "~ Você abandonou sua rede de pesca..."); PescaInProgress[I] = 0; TempoPescaAtivado[I] = 0; KillTimer(TempoPesca[I]); } } //Postos if(PlayerToPoint(9.0, I, 2201.2949,2475.2471,10.8203)) { AreaPosto[I] = 0; format(S, sizeof(S), "~y~~h~Posto ~w~~h~de ~b~~h~~h~~h~%s ~w~~h~- ~g~~h~~h~~h~/Abastecer~n~~p~~h~Total de Litros disponiveis: ~w~~h~%d", NomesDPostos[AreaPosto[I]][0], GasolinaDisponivel[AreaPosto[I] - 0]); TextDrawSetString(TextdrawPostos[I], S); TextDrawShowForPlayer(I, TextdrawPostos[I]); format(A, sizeof(A), "%d", ((dini_Int(PostosFile(AreaPosto[I]),"Litros")), GasolinaDisponivel[AreaPosto[I] - 0])); dini_Set(PostosFile(AreaPosto[I]), "Litros", A); }
RE: Problema com textdraw - Levi.M - 11/06/2021
Fiz bem parecido com oque você falou e deu certo, muito obrigado. Pra quem tiver problema com isso:
Código PHP: forward ShowTextDraws(playerid); public ShowTextDraws(playerid) { SetTimerEx("ShowTextDraws", segundos(1), false, "i", playerid); if(IsPlayerInRangeOfPoint(playerid,35.0,-1003.4734,-1620.8268,76.3672)) { Area[playerid]=1; PlayerTextDrawSetString(playerid,ABASTECENDO[playerid],"Plantacao_de_~r~Maconha"); PlayerTextDrawShow(playerid,ABASTECENDO[playerid]); } else if(IsPlayerInRangeOfPoint(playerid,15.0,-2022.6522, 157.7932, 30.5547)) { new string[128]; Area[playerid]=1; GetPlayerPos(playerid,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]); Get2DZoneName(Location,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY]); format(string,sizeof(string),"Auto_Posto_~r~%s__~b~/Abastecer",Location); PlayerTextDrawSetString(playerid,ABASTECENDO[playerid],string); PlayerTextDrawShow(playerid,ABASTECENDO[playerid]); }else{ if(Area[playerid] == 1) { PlayerTextDrawHide(playerid,ABASTECENDO[playerid]); Area[playerid]=0; } } }
RE: Problema com textdraw - LeleziiN - 11/06/2021
(11/06/2021 10:48)Levi.M Escreveu: Fiz bem parecido com oque você falou e deu certo, muito obrigado. Pra quem tiver problema com isso:
Código PHP: forward ShowTextDraws(playerid); public ShowTextDraws(playerid) { SetTimerEx("ShowTextDraws", segundos(1), false, "i", playerid); if(IsPlayerInRangeOfPoint(playerid,35.0,-1003.4734,-1620.8268,76.3672)) { Area[playerid]=1; PlayerTextDrawSetString(playerid,ABASTECENDO[playerid],"Plantacao_de_~r~Maconha"); PlayerTextDrawShow(playerid,ABASTECENDO[playerid]); } else if(IsPlayerInRangeOfPoint(playerid,15.0,-2022.6522, 157.7932, 30.5547)) { new string[128]; Area[playerid]=1; GetPlayerPos(playerid,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]); Get2DZoneName(Location,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY]); format(string,sizeof(string),"Auto_Posto_~r~%s__~b~/Abastecer",Location); PlayerTextDrawSetString(playerid,ABASTECENDO[playerid],string); PlayerTextDrawShow(playerid,ABASTECENDO[playerid]); }else{ if(Area[playerid] == 1) { PlayerTextDrawHide(playerid,ABASTECENDO[playerid]); Area[playerid]=0; } } }
É nós manin, pq é bem parecido com que desenvolvi para os postos do meu servidor
RE: Problema com textdraw - xbruno1000x - 11/06/2021
Dá pra fazer com IsPlayerInDynamicArea. Você cria na OnGameModeInit um DynamicRectangle ou qualquer outro tipo de formato que a streamer permite e depois verifica quando ele entrar na área.
RE: Problema com textdraw - Levi.M - 13/06/2021
(11/06/2021 16:56)xbruno1000x Escreveu: Dá pra fazer com IsPlayerInDynamicArea. Você cria na OnGameModeInit um DynamicRectangle ou qualquer outro tipo de formato que a streamer permite e depois verifica quando ele entrar na área. Isso sem o uso de Timer?
RE: Problema com textdraw - xbruno1000x - 13/06/2021
(13/06/2021 01:12)Levi.M Escreveu: (11/06/2021 16:56)xbruno1000x Escreveu: Dá pra fazer com IsPlayerInDynamicArea. Você cria na OnGameModeInit um DynamicRectangle ou qualquer outro tipo de formato que a streamer permite e depois verifica quando ele entrar na área. Isso sem o uso de Timer?
Isso aí, muito mais otimizado.
Basta usar a public nativa da streamer.
Código: Public OnPlayerEnterDynamicArea(playerid, areaid)
RE: Problema com textdraw - Levi.M - 14/06/2021
(13/06/2021 14:34)xbruno1000x Escreveu: (13/06/2021 01:12)Levi.M Escreveu: (11/06/2021 16:56)xbruno1000x Escreveu: Dá pra fazer com IsPlayerInDynamicArea. Você cria na OnGameModeInit um DynamicRectangle ou qualquer outro tipo de formato que a streamer permite e depois verifica quando ele entrar na área. Isso sem o uso de Timer?
Isso aí, muito mais otimizado.
Basta usar a public nativa da streamer.
Código: Public OnPlayerEnterDynamicArea(playerid, areaid)
Aproveitando esse tópico, eu fiz assim:
Código PHP: new PostosQ;
public OnGameModeInit() { PostosQ = CreateDynamicCircle(-2029.1404,157.4444, 50,-1,-1,-1); return 1; }
public OnPlayerEnterDynamicArea(playerid, areaid) { if(PostosQ) { new string[128]; GetPlayerPos(playerid,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]); Get2DZoneName(Location,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY]); format(string,sizeof(string),"Auto_Posto_~r~%s__~b~/Abastecer",Location); PlayerTextDrawSetString(playerid,ABASTECENDO[playerid][1],string); PlayerTextDrawShow(playerid,ABASTECENDO[playerid][1]); }else{ PlayerTextDrawHide(playerid,ABASTECENDO[playerid][1]); Area[playerid]=0; } return 1; }
Eu quero que quando o jogador sair da área o textdraw sumir, essa parte eu não consegui fazer, tentei usando o else mas não deu certo.
RE: Problema com textdraw - xbruno1000x - 14/06/2021
(14/06/2021 11:22)Levi.M Escreveu: (13/06/2021 14:34)xbruno1000x Escreveu: (13/06/2021 01:12)Levi.M Escreveu: (11/06/2021 16:56)xbruno1000x Escreveu: Dá pra fazer com IsPlayerInDynamicArea. Você cria na OnGameModeInit um DynamicRectangle ou qualquer outro tipo de formato que a streamer permite e depois verifica quando ele entrar na área. Isso sem o uso de Timer?
Isso aí, muito mais otimizado.
Basta usar a public nativa da streamer.
Código: Public OnPlayerEnterDynamicArea(playerid, areaid)
Aproveitando esse tópico, eu fiz assim:
Código PHP: new PostosQ;
public OnGameModeInit() { PostosQ = CreateDynamicCircle(-2029.1404,157.4444, 50,-1,-1,-1); return 1; }
public OnPlayerEnterDynamicArea(playerid, areaid) { if(PostosQ) { new string[128]; GetPlayerPos(playerid,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]); Get2DZoneName(Location,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY]); format(string,sizeof(string),"Auto_Posto_~r~%s__~b~/Abastecer",Location); PlayerTextDrawSetString(playerid,ABASTECENDO[playerid][1],string); PlayerTextDrawShow(playerid,ABASTECENDO[playerid][1]); }else{ PlayerTextDrawHide(playerid,ABASTECENDO[playerid][1]); Area[playerid]=0; } return 1; }
Eu quero que quando o jogador sair da área o textdraw sumir, essa parte eu não consegui fazer, tentei usando o else mas não deu certo.
use a public OnPlayerLeaveDynamicArea(playerid, areaid)...
Em caso de mais dúvidas consulte a streamer wiki:
https://github.com/samp-incognito/samp-streamer-plugin/wiki/Callbacks
RE: Problema com textdraw - Levi.M - 14/06/2021
Obrigado, resolvido.
|