Sari la conținut

Postări Recomandate

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
 

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Ma poti ajuta sa il pun la mine in gm, cred ca nu il pun bine sau ceva, si chiar imi doresc sistem rainbow, daca vrei sa ma ajuti iti las discord-ul meu Kround#7434

Partajează acest post


Link spre post
Distribuie pe alte site-uri
La 05.03.2019 la 17:27, xXDANYXx121 a spus:

Ma poti ajuta sa il pun la mine in gm, cred ca nu il pun bine sau ceva, si chiar imi doresc sistem rainbow, daca vrei sa ma ajuti iti las discord-ul meu Kround#7434

Manema ajuti cu scripting? Kround#7434

Partajează acest post


Link spre post
Distribuie pe alte site-uri
On 3/1/2019 at 3:16 PM, LucaAdv. said:

Poate o sa va deie cateva Warninguri dar nu afecteaza.

Asta face tot :))

Partajează acest post


Link spre post
Distribuie pe alte site-uri

What Is this :|
 

if(sscanf(params, "i", time)) return SCM(playerid, COLOR_BLUE, "Sintaxa: /rainbowveh");
parametr for what???

Partajează acest post


Link spre post
Distribuie pe alte site-uri
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

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum

  • Navigare recentă   0 membri

    Nici un utilizator înregistrat nu vede această pagină.

×

Informații Importante

Acest site foloseşte cookie–uri. Prin continuarea navigării, eşti de acord cu modul de utilizare a acestor informaţii. Pentru mai multe detalii, vezi Termeni de Utilizare și Politică Intimitate.