[Ajuda] Velocнmetro mostrando info de todos on
#1

Bom dia pessoal!

Entгo, meu problema й o seguinte, eu tenho um servidor de RP e editei um fuelmeter, para mostrar alem velocidade e gasolina, tambйm mostrar a lataria do veнculo, mas o problema й que quando tem mais de 1 pessoa dirigindo um veнculo no servidor, os dados de todos os outros player que estгo em outros veнculos ficam bugados, o velocimetro, a lataria e a gasolina ficam bugados, mostrando tudo junto, eu creio que o problema й que o TEXTDRAW esteja captando a informaзхes de todos os players on dentro de veнculos, e nгo de cada playerid com seu veнculo.

Abaixo as linhas:

#defines
Код:
new Fuel[MAX_VEHICLES];
new FuelVar[MAX_VEHICLES];
new fMeter[MAX_PLAYERS];
new Refill[MAX_PLAYERS];
OnPlayerEnterVehicle
Код:
	TextDrawHideForPlayer(playerid, speedometer);
	TextDrawHideForPlayer(playerid, fuelmeter);
	TextDrawHideForPlayer(playerid, lataria);
OnPlayerUpdate: Fuel
Код:
		if(fMeter[playerid] && IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
		{
		    new string[64];
		    //format(string,sizeof(string),"~n~~n~~n~~n~~n~~n~~n~~n~~r~Fuel: ~w~%d%", Fuel[GetPlayerVehicleID(playerid)]);
			//GameTextForPlayer(playerid, string,1000, 3);
   			format(string,sizeof(string),"Gasolina: %d%", Fuel[GetPlayerVehicleID(playerid)]);
		    TextDrawSetString(fuelmeter, string);
		}
OnPlayerUpdate: Lataria
Код:
		if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
		{
			new Float:CHealth, veh, s[64];
		 	veh = GetPlayerVehicleID(playerid);
		  	GetVehicleHealth(veh, CHealth);
		  	new vHealth;
		  	vHealth = floatround((CHealth/10), floatround_floor);
		  	format(s,32,"Lataria: %i%", vHealth);
		  	TextDrawShowForPlayer(playerid, lataria);
 		 	TextDrawSetString(lataria, s);
 		}
Onde estб o erro? eu estou estudando pawn, mas sou MUITO iniciante ainda, entгo procurei procurei e nгo entendi onde pode estar o erro, podem me ajudar?

valeu gurizada!
Reply
#2

Os textdraws tкem de ser criados assim:

PHP код:
new Text:vartextdraw[MAX_PLAYERS]; 
E usando sempre o [playerid] quando for utiliza-los!

PS: OnPlayerUpdate й uma mб callback para se fazer um velocнmetro como esse......
Reply
#3

Beleza Bruxo, no #defines lб em cima eu coloquei:

-> de:
Код:
new Text:lataria;
-> para:
Код:
new Text:lataria[MAX_PLAYERS];
agora aonde eu devo utilizar o [playerid]?

no textdraw assim:
Код:
	lataria = TextDrawCreate(525.000000, 415.000000, "Lataria:");
	TextDrawBackgroundColor(lataria[playerid], 0x000000AA);
	TextDrawFont(lataria[playerid], 3);
ou no OnPlayerUpdate assim:
Код:
		  	TextDrawShowForPlayer(playerid, lataria[playerid]);
 		 	TextDrawSetString(lataria[playerid], s);
desculpe minha ignorвncia, й que realmente estou comeзando com isso...
Reply
#4

Em todos os lugares do lataria.

Aqui tambйm:

PHP код:
lataria[playerid] = TextDrawCreate(525.000000415.000000"Lataria:"); 
Reply
#5

Eu coloquei, e agora ele diz que o playerid nгo foi definido:
Код:
(5645) : error 017: undefined symbol "playerid"
(5646) : error 017: undefined symbol "playerid"
(5647) : error 017: undefined symbol "playerid"
(5648) : error 017: undefined symbol "playerid"
(5649) : error 017: undefined symbol "playerid"
(5650) : error 017: undefined symbol "playerid"
(5651) : error 017: undefined symbol "playerid"
(5652) : error 017: undefined symbol "playerid"
(5653) : error 017: undefined symbol "playerid"
linhas:
Код:
	lataria[playerid] = TextDrawCreate(525.000000, 415.000000, "Lataria:");
	TextDrawBackgroundColor(lataria[playerid], 0x000000AA);
	TextDrawFont(lataria[playerid], 3);
	TextDrawLetterSize(lataria[playerid], 0.200000, 0.999999);
	TextDrawColor(lataria[playerid], 0xFFFFFFFF);
	TextDrawSetOutline(lataria[playerid], 1);
	TextDrawSetProportional(lataria[playerid], 1);
	TextDrawSetShadow(lataria[playerid], 1);
	TextDrawSetSelectable(lataria[playerid], 0);
Reply
#6

Nгo estб numa callback com playerid definido.

Por exemplo, se usa uma callback assim:

PHP код:
forward CarregarTextdraws();
public 
CarregarTextdraws()
{
    
// coisas
    
return 1;

Passe para:

PHP код:
forward CarregarTextdraws(playerid);
public 
CarregarTextdraws(playerid)
{
    
// coisas
    
return 1;

Reply
#7

sу que as textdraws estгo todas aquн
Код:
public OnGameModeInit()
e se eu mudar para
Код:
public OnGameModeInit(playerid)
da isso:
Код:
(5215) : error 025: function heading differs from prototype
buga tambйm... '-' e agora brother? tenho que criar uma callback nova? sу pro lataria?
Reply
#8

Nгo. Tem de usar uma callback que use playerid (OnPlayerConnect) ou cria uma como lhe mostrei em cima.

Assim:

PHP код:
forward CarregarTextdraw(playerid);
public 
OnPlayerConnect(playerid)
{
    
CarregarTextdraw(playerid);
    return 
1;
}
public 
CarregarTextdraw(playerid)
{
    
// criar textdraw
    
return 1;

Reply
#9

Jб existia uma Callback que o OnPlayerConnect carregava, chamada:
[code]
LoadPlayerTextDraws(playerid)
[code]

Sу inseri o textdraw do lataria que tava no OnGamemodeInit e coloquei nela, funcionou perfeitamente!


Muito obrigado brother, desculpa o encomodo aн!

+1 Rep.
Reply
#10

Aн, um presentinho por me ajudar!


Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)