SA-MP Forums Archive
ProgressBar doesn't appear on Server - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: ProgressBar doesn't appear on Server (/showthread.php?tid=448792)



ProgressBar doesn't appear on Server - Frederico - 05.07.2013

Hi, I did a little ProgressBar to put on my server, I put everything in the GM in place and all well done, but when I enter the server the bar doesnґt show up.
I have a ProgressBar to appear within the "OnPlayerConnect". I am not using Includes PrgressBar.
I have the same script in another gamemode and it workґs correctly.
I alredy tried to put the "CreateProgressBar" in "OnPlayerConnect" but doesnґt show up.


Код:
//Variable:
new Bar:TestBar[MAX_PLAYERS];

//OnGameModeInit:
TestBar[i] = CreateProgressBar(488.00, 404.00, 145.50, 9.19, 16711776, 100.0);

//OnPlayerConnect:
SetProgressBarValue(TestBar[playerid],50.0);
ShowProgressBarForPlayer(playerid,TestBar[playerid]);



Re: ProgressBar doesn't appear on Server - Akira297 - 05.07.2013

Do you have the ProgressBar.inc?


Re: ProgressBar doesn't appear on Server - XStormiest - 05.07.2013

so actualy, you don't have the include, so you're tried to do it on your own and failed... right?
Why don't you get the include, to ease your job?
Or if you want, ...watch more carefull to the original creator's progressbar, and try to take it as an example...


Re: ProgressBar doesn't appear on Server - ThePhenix - 05.07.2013

PHP код:
new Bar:TestBar[MAX_PLAYERS];
//OnGameModeInit:
TestBar[playerid] = CreateProgressBar(488.00404.00145.509.1916711776100.0);//Shouldn't it be playerid?
//OnPlayerConnect:
SetProgressBarValue(TestBar[playerid],50.0);
ShowProgressBarForPlayer(playerid,TestBar[playerid]); 



Re: ProgressBar doesn't appear on Server - XStormiest - 05.07.2013

no, because those are the coordonates of the Progress bar, ( x, y) i mean on the screan...


Re: ProgressBar doesn't appear on Server - ThePhenix - 05.07.2013

Quote:
Originally Posted by XStormiest
Посмотреть сообщение
no, because those are the coordonates of the Progress bar, ( x, y) i mean on the screan...
What??

PHP код:
new Bar:TestBar[MAX_PLAYERS];
//OnGameModeInit:
TestBar[playerid] = CreateProgressBar(488.00404.00145.509.1916711776100.0);//Shouldn't it be playerid?
//I changed [playerid].
//OnPlayerConnect:
SetProgressBarValue(TestBar[playerid],50.0);
ShowProgressBarForPlayer(playerid,TestBar[playerid]); 



Re: ProgressBar doesn't appear on Server - Frederico - 05.07.2013

Basically i have the same thing in the gamemode, whereґs the script, and like i said previously in the other gm this is working correctly.

Код:
//Defines:

#define MAX_BARS				(MAX_TEXT_DRAWS / 3)
#define INVALID_BAR_ID			(Bar:-1)
#define pb_percent(%1,%2,%3,%4)	((%1 - 6.0) + ((((%1 + 6.0 + %2 - 2.0) - %1) / %3) * %4))

//enum:

enum e_bar
{
	Float:pb_x,
	Float:pb_y,
	Float:pb_w,
	Float:pb_h,
	Float:pb_m,
	Float:pb_v,
	Text:pb_t1,
	Text:pb_t2,
	Text:pb_t3,
	pb_color,
	bool:pb_created
}

static Bars[MAX_BARS][e_bar];

//and the rest....

stock Bar:CreateProgressBar(Float:x, Float:y, Float:width=55.5, Float:height=3.2, color, Float:max=100.0)
{
	new
		barid;

	for(barid = 0; barid < sizeof Bars; ++barid)
		if(!Bars[barid][pb_created]) break;

	if(Bars[barid][pb_created] || barid == sizeof Bars)
		return INVALID_BAR_ID;

	new Text:in_t = Bars[barid][pb_t1] = TextDrawCreate(x, y, "_");
	TextDrawUseBox		(in_t, 1);
	TextDrawTextSize	(in_t, x + width, 0.0);
	TextDrawLetterSize	(in_t, 1.0, height / 10);
	TextDrawBoxColor	(in_t, 0x00000000 | (color & 0x000000FF));

	in_t = Bars[barid][pb_t2] = TextDrawCreate(x + 1.2, y + 2.15, "_");
	TextDrawUseBox		(in_t, 1);
	TextDrawTextSize	(in_t, x + width - 2.0, 0.0);
	TextDrawLetterSize	(in_t, 1.0, height / 10 - 0.35);
	TextDrawBoxColor	(in_t, (color & 0xFFFFFF00) | (0x66 & ((color & 0x000000FF) / 2)));

	in_t = Bars[barid][pb_t3] = TextDrawCreate(x + 1.2, y + 2.15, "_");
	TextDrawTextSize	(in_t, pb_percent(x, width, max, 1.0), 0.0);
	TextDrawLetterSize	(in_t, 1.0, height / 10 - 0.35);
	TextDrawBoxColor	(in_t, color);

	Bars[barid][pb_x] = x;
	Bars[barid][pb_y] = y;
	Bars[barid][pb_w] = width;
	Bars[barid][pb_h] = height;
	Bars[barid][pb_m] = max;
	Bars[barid][pb_color] = color;
	Bars[barid][pb_created] = true;
	return Bar:barid;
}

stock DestroyProgressBar(Bar:barid)
{
	if(barid != INVALID_BAR_ID && Bar:-1 < barid < Bar:MAX_BARS)
	{
		if(!Bars[_:barid][pb_created])
			return 0;

		TextDrawDestroy(Bars[_:barid][pb_t1]);
		TextDrawDestroy(Bars[_:barid][pb_t2]);
		TextDrawDestroy(Bars[_:barid][pb_t3]);

		Bars[_:barid][pb_t1] = Text:0;
		Bars[_:barid][pb_t2] = Text:0;
		Bars[_:barid][pb_t3] = Text:0;
		Bars[_:barid][pb_t4] = Text:0;
		Bars[_:barid][pb_t5] = Text:0;
		Bars[_:barid][pb_t6] = Text:0;
		Bars[_:barid][pb_t7] = Text:0;
		Bars[_:barid][pb_t8] = Text:0;
		Bars[_:barid][pb_t9] = Text:0;
		Bars[_:barid][pb_t10] = Text:0;
		Bars[_:barid][pb_x] = 0.0;
		Bars[_:barid][pb_y] = 0.0;
		Bars[_:barid][pb_w] = 0.0;
		Bars[_:barid][pb_h] = 0.0;
		Bars[_:barid][pb_m] = 0.0;
		Bars[_:barid][pb_v] = 0.0;
		Bars[_:barid][pb_color] = 0;
		Bars[_:barid][pb_created] = false;
		return 1;
	}
	return 0;
}

stock ShowProgressBarForPlayer(playerid, Bar:barid)
{
	if(IsPlayerConnected(playerid) && barid != INVALID_BAR_ID && Bar:-1 < barid < Bar:MAX_BARS)
	{
		if(!Bars[_:barid][pb_created])
			return 0;

		TextDrawShowForPlayer(playerid, Bars[_:barid][pb_t1]);
		TextDrawShowForPlayer(playerid, Bars[_:barid][pb_t2]);
		TextDrawShowForPlayer(playerid, Bars[_:barid][pb_t3]);
		return 1;
	}
	return 0;
}

stock HideProgressBarForPlayer(playerid, Bar:barid)
{
	if(IsPlayerConnected(playerid) && barid != INVALID_BAR_ID && Bar:-1 < barid < Bar:MAX_BARS)
	{
		if(!Bars[_:barid][pb_created])
			return 0;

		TextDrawHideForPlayer(playerid, Bars[_:barid][pb_t1]);
		TextDrawHideForPlayer(playerid, Bars[_:barid][pb_t2]);
		TextDrawHideForPlayer(playerid, Bars[_:barid][pb_t3]);
		return 1;
	}
	return 0;
}

stock SetProgressBarValue(Bar:barid, Float:value)
{
	if(barid == INVALID_BAR_ID || Bar:MAX_BARS < barid < Bar:-1)
		return 0;

	if(Bars[_:barid][pb_created])
	{
		value =
			(value < 0.0) ? (0.0) : (value > Bars[_:barid][pb_m]) ? (Bars[_:barid][pb_m]) : (value);

		TextDrawUseBox(Bars[_:barid][pb_t3], value > 0.0);

        Bars[_:barid][pb_v] = value;

		TextDrawTextSize(Bars[_:barid][pb_t3],
			pb_percent(Bars[_:barid][pb_x], Bars[_:barid][pb_w], Bars[_:barid][pb_m], value), 0.0);

		return 1;
	}
	return 0;
}

stock Float:GetProgressBarValue(Bar:barid)
{
	if(barid == INVALID_BAR_ID || Bar:MAX_BARS < barid < Bar:-1)
		return INVALID_BAR_VALUE;

	if(Bars[_:barid][pb_created])
		return Bars[_:barid][pb_v];

	return INVALID_BAR_VALUE;
}

stock SetProgressBarMaxValue(Bar:barid, Float:max)
{
	if(barid == INVALID_BAR_ID || Bar:MAX_BARS < barid < Bar:-1)
		return 0;

	if(Bars[_:barid][pb_created])
	{
		Bars[_:barid][pb_m] = max;
		SetProgressBarValue(barid, Bars[_:barid][pb_v]);
		return 1;
	}
	return 0;
}

stock SetProgressBarColor(Bar:barid, color)
{
	if(barid == INVALID_BAR_ID || Bar:MAX_BARS < barid < Bar:-1)
		return 0;

	if(Bars[_:barid][pb_created])
	{
		Bars[_:barid][pb_color] = color;
		TextDrawBoxColor(Bars[_:barid][pb_t1], 0x00000000 | (color & 0x000000FF));

		TextDrawBoxColor(Bars[_:barid][pb_t2],
			(color & 0xFFFFFF00) | (0x66 & ((color & 0x000000FF) / 2)));

		TextDrawBoxColor(Bars[_:barid][pb_t3], color);
		return 1;
	}
	return 0;
}

stock ShowProgressBarForAll(Bar:barid)
{
	#if defined _foreach_included
	foreach(Player, i)
	#else
	for(new i = 0; i < MAX_PLAYERS; ++i)
		if(IsPlayerConnected(i))
	#endif
	{
		ShowProgressBarForPlayer(i, barid);
	}
	return 1;
}

stock HideProgressBarForAll(Bar:barid)
{
	#if defined _foreach_included
	foreach(Player, i)
	#else
	for(new i = 0; i < MAX_PLAYERS; ++i)
		if(IsPlayerConnected(i))
	#endif
	{
		HideProgressBarForPlayer(i, barid);
	}
	return 1;
}

stock UpdateProgressBar(Bar:barid, playerid=INVALID_PLAYER_ID)
{
	if(playerid == INVALID_PLAYER_ID)
	{
		return ShowProgressBarForAll(barid);
	} else {
		return ShowProgressBarForPlayer(playerid, barid);
	}
}



Re: ProgressBar doesn't appear on Server - ReVo_ - 05.07.2013

and i suppose you do DestroyBar in OnPlayerDisconnect.

If you create the bar in OnGameModeInit and the player disconnect the bar for the id will never exists.

In OnPlayerConnect create and show the bar.


Re: ProgressBar doesn't appear on Server - Frederico - 05.07.2013

Quote:
Originally Posted by ReVo_
Посмотреть сообщение
and i suppose you do DestroyBar in OnPlayerDisconnect.

If you create the bar in OnGameModeInit and the player disconnect the bar for the id will never exists.

In OnPlayerConnect create and show the bar.
But i put in "OnPlayerConnect" and do not show.


Re: ProgressBar doesn't appear on Server - ReVo_ - 05.07.2013

Coords and size are correct?