Jump to content

RainBow Vehicle


LucaAdv.

Recommended Posts

Salut sa-mp.ro , astazi va arat cum sa faceti un System RainBow Vehicle, sa incepem.

1. Definim la variabile

TimerRainbow[MAX_PLAYERS],

2. Facem comanda de start rainbow si stop .
 

CMD:rainbowveh(playerid, params[])
{
	if(PlayerInfo[playerid][pPremiumAccount] == 0) return SendClientMessage(playerid, COLOR_ORANGE, "Nu ai cont Premium");
	if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, "Nu te aflii intr-un Vehicul !");
	new time;
	if(sscanf(params, "i", time)) return SCM(playerid, COLOR_BLUE, "Sintaxa: /rainbowveh");
	if(time < 0) return 1;
	KillTimer(TimerRainbow[playerid]);
	TimerRainbow[playerid] = SetTimerEx("RainbowChange", time, true, "i", playerid);
	return 1;
}
CMD:rainbowvehoff(playerid, params[])
{
	if(PlayerInfo[playerid][pPremiumAccount] == 0) return SendClientMessage(playerid, COLOR_ORANGE, "Nu ai cont Premium");
	KillTimer(TimerRainbow[playerid]);
	SCM(playerid, COLOR_ORANGE, "Ai oprit rainbowveh!");
	return 1;
}

3. Facem functia RainbowChange
 

function RainbowChange(playerid)
{
	if(IsPlayerInAnyVehicle(playerid)) {
		new c1 = random(255), c2 = random(255);
		ChangeVehicleColor(GetPlayerVehicleID(playerid, c1, c2));
	}	
	return 1;
}

4. (OPTIONAL) Dacã nu aveti sscanf in gamemode il definiti la sfarsit:
 

stock sscanf(string[], format[], {Float,_}:...) {
	#if defined isnull
		if (isnull(string))
	#else
		if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
	#endif
		{
			return format[0];
		}
	#pragma tabsize 4
	new
		formatPos = 0,
		stringPos = 0,
		paramPos = 2,
		paramCount = numargs(),
		delim = ' ';
	while (string[stringPos] && string[stringPos] <= ' ')
	{
		stringPos++;
	}
	while (paramPos < paramCount && string[stringPos])
	{
		switch (format[formatPos++])
		{
			case '\0':
			{
				return 0;
			}
			case 'i', 'd':
			{
				new
					neg = 1,
					num = 0,
					ch = string[stringPos];
				if (ch == '-')
				{
					neg = -1;
					ch = string[++stringPos];
				}
				do
				{
					stringPos++;
					if ('0' <= ch <= '9')
					{
						num = (num * 10) + (ch - '0');
					}
					else
					{
						return -1;
					}
				}
				while ((ch = string[stringPos]) > ' ' && ch != delim);
				setarg(paramPos, 0, num * neg);
			}
			case 'h', 'x':
			{
				new
					num = 0,
					ch = string[stringPos];
				do
				{
					stringPos++;
					switch (ch)
					{
						case 'x', 'X':
						{
							num = 0;
							continue;
						}
						case '0' .. '9':
						{
							num = (num << 4) | (ch - '0');
						}
						case 'a' .. 'f':
						{
							num = (num << 4) | (ch - ('a' - 10));
						}
						case 'A' .. 'F':
						{
							num = (num << 4) | (ch - ('A' - 10));
						}
						default:
						{
							return -1;
						}
					}
				}
				while ((ch = string[stringPos]) > ' ' && ch != delim);
				setarg(paramPos, 0, num);
			}
			case 'c':
			{
				setarg(paramPos, 0, string[stringPos++]);
			}
			case 'f':
			{

				new changestr[16], changepos = 0, strpos = stringPos;
				while(changepos < 16 && string[strpos] && string[strpos] != delim)
				{
					changestr[changepos++] = string[strpos++];
    				}
				changestr[changepos] = '\0';
				setarg(paramPos,0,_:floatstr(changestr));
			}
			case 'p':
			{
				delim = format[formatPos++];
				continue;
			}
			case '\':
			{
				new
					end = formatPos - 1,
					ch;
				while ((ch = format[++end]) && ch != '\') {}
				if (!ch)
				{
					return -1;
				}
				format[end] = '\0';
				if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
				{
					if (format[end + 1])
					{
						return -1;
					}
					return 0;
				}
				format[end] = '\';
				stringPos = ch + (end - formatPos);
				formatPos = end + 1;
			}
			case 'u':
			{
				new
					end = stringPos - 1,
					id = 0,
					bool:num = true,
					ch;
				while ((ch = string[++end]) && ch != delim)
				{
					if (num)
					{
						if ('0' <= ch <= '9')
						{
							id = (id * 10) + (ch - '0');
						}
						else
						{
							num = false;
						}
					}
				}
				if (num && IsPlayerConnected(id))
				{
					setarg(paramPos, 0, id);
				}
				else
				{
					#if !defined foreach
						#define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
						#define __SSCANF_FOREACH__
					#endif
					string[end] = '\0';
					num = false;
					new
						name[MAX_PLAYER_NAME];
					id = end - stringPos;
					foreach (Player, playerid)
					{
						GetPlayerName(playerid, name, sizeof (name));
						if (!strcmp(name, string[stringPos], true, id))
						{
							setarg(paramPos, 0, playerid);
							num = true;
							break;
						}
					}
					if (!num)
					{
						setarg(paramPos, 0, INVALID_PLAYER_ID);
					}
					string[end] = ch;
					#if defined __SSCANF_FOREACH__
						#undef foreach
						#undef __SSCANF_FOREACH__
					#endif
				}
				stringPos = end;
			}
			case 's', 'z':
			{
				new
					i = 0,
					ch;
				if (format[formatPos])
				{
					while ((ch = string[stringPos++]) && ch != delim)
					{
						setarg(paramPos, i++, ch);
					}
					if (!i)
					{
						return -1;
					}
				}
				else
				{
					while ((ch = string[stringPos++]))
					{
						setarg(paramPos, i++, ch);
					}
				}
				stringPos--;
				setarg(paramPos, i, '\0');
			}
			default:
			{
				continue;
			}
		}
		while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
		{
			stringPos++;
		}
		while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
		{
			stringPos++;
		}
		paramPos++;
	}
	do
	{
		if ((delim = format[formatPos++]) > ' ')
		{
			if (delim == '\')
			{
				while ((delim = format[formatPos++]) && delim != '\') {}
			}
			else if (delim != 'z')
			{
				return delim;
			}
		}
	}
	while (delim > ' ');
	return 0;
}

EDIT :Definiti c1 si c2
 

new c1;
new c2;

Poate o sa va deie cateva Warninguri dar nu afecteaza.

Daca v-a fost de folos +1 mz
 

GameMode Edited: gamemode

Servicii Scripting:

Contact:
Email: [email protected]
Discord: LucaAdv //  LHS#9084

 

Link to comment
Share on other sites

On 3/1/2019 at 3:16 PM, LucaAdv. said:

Poate o sa va deie cateva Warninguri dar nu afecteaza.

Asta face tot :))

Link to comment
Share on other sites

if(PlayerInfo[playerid][pPremiumAccount] == 0) return SendClientMessage(playerid, COLOR_ORANGE, "Nu ai cont Premium");
	if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, "Nu te aflii intr-un Vehicul !");
	new time;
	if(sscanf(params, "i", time)) return SCM(playerid, COLOR_BLUE, "Sintaxa: /rainbowveh");
	if(time < 0) return 1;
	KillTimer(TimerRainbow[playerid]);
	TimerRainbow[playerid] = SetTimerEx("RainbowChange", time, true, "i", playerid);//Nu crezi ca mai trb cv aici?
	return 1;

MaiExact time*1000 daca vreti ca comanda sa fie in secunde

maxresdefault.jpg

 

 

 

Link to comment
Share on other sites

  • 1 year later...

omule, daca tot ai copiat, nu ai copiat bine, ma intreb si eu, ce argumente mai are ChangeVehicleColor, daca c1 si c2 sunt bagate in GetPlayerVehicleID? de aia le dadea la copii warninguri

La 01.03.2019 la 15:16, LucaAdv. a spus:

function RainbowChange(playerid)
{
	if(IsPlayerInAnyVehicle(playerid)) {
		new c1 = random(255), c2 = random(255);
		ChangeVehicleColor(GetPlayerVehicleID(playerid, c1, c2));
	}	
	return 1;
}

 

 

 



 

 

Link to comment
Share on other sites

  • 4 months later...
  • 2 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.