rapido

[Résolu] Gros probleme de script

Recommended Posts

Slt

 

je vient poster un message ici pour de l'aide donc voila j'ai essayer de crée un script de maison le script consiste a acheter la maison avec /acheter et mon probleme c'est que on peut faire /acheter de partout moi je veut que on peut faire /acheter que sur le pickup et je vient a présicer pas de zone nis de chekpoint voila je vous mentre mon script:

 

 

if(strcmp(cmd, "/acheter", true) == 0)

		{

				new property=999;

				if(IsPlayerInPickup(playerid))

				{

						switch (PLAYER_VARS[playerid][STD][CHECK_POINT])

						{

								case PU_M1:{

										property = M1;

								}

						}

						if (GetPlayerMoney(playerid) < 50000)

						{

				SendClientMessage(playerid, COLOR_RED,"Désoler vous n'avez pas assez d'argent pour acheter la maison");

						}

						if(property==999)

						{

								SendClientMessage(playerid, COLOR_YELLOW, "tu dois etre sur le pickup pour pouvoir faire /acheter.");

								return 1;

						}

						if(propertyOwner[property]==playerid)

						{

								SendClientMessage(playerid, COLOR_RED, "Tu possède deja cette maison");

								return 1;

						}

			PlaySoundForPlayer(playerid,SOUND_PURCHASE);

						propertyOwner[property]=playerid;

						format(string, sizeof(string), "tu a acheter %s", propertyNames[property]);

						SendClientMessage(playerid, COLOR_GREEN, string);

				}

				else

				{

						SendClientMessage(playerid, COLOR_YELLOW, "tu dois etre sur le pickup pour pouvoir faire le /acheter.");

						return 1;

				}

 

 

 

 

 

donc voila merci d'avance pour votre aide.

 

ps : une reponse vite!!!

Partager ce message


Lien à poster
Partager sur d’autres sites

toujours pareil regarde :

 

 

if(strcmp(cmd, "/acheter", true) == 0)

		{

				new property=999;

				if(IsPlayerInArea(playerid))

				{

						switch (PLAYER_VARS[playerid][STD][CHECK_POINT])

						{

								case PU_M1:{

										property = M1;

								}

						}

						if (GetPlayerMoney(playerid) < 50000)

						{

				SendClientMessage(playerid, COLOR_RED,"Désoler vous n'avez pas assez d'argent pour acheter la maison");

						}

						if(property==999)

						{

								SendClientMessage(playerid, COLOR_YELLOW, "tu dois etre sur le pickup pour pouvoir faire le /acheter.");

								return 1;

						}

						if(propertyOwner[property]==playerid)

						{

								SendClientMessage(playerid, COLOR_RED, "Tu possède deja cette maison");

								return 1;

						}

			PlaySoundForPlayer(playerid,SOUND_PURCHASE);

						propertyOwner[property]=playerid;

						format(string, sizeof(string), "tu a acheter %s", propertyNames[property]);

						SendClientMessage(playerid, COLOR_GREEN, string);

				}

				else

				{

						SendClientMessage(playerid, COLOR_YELLOW, "tu dois etre sur le pickup pour pouvoir faire le /acheter.");

						return 1;

				}
met j'ai des erreur
C:\DOCUME~1\......\Bureau\SAMP02~1.2\h.pwn(131) : error 017: undefined symbol "IsPlayerInArea"

C:\DOCUME~1\.......\Bureau\SAMP02~1.2\h.pwn(133) : error 017: undefined symbol "PLAYER_VARS"

C:\DOCUME~1\......\Bureau\SAMP02~1.2\h.pwn(133) : error 029: invalid expression, assumed zero

C:\DOCUME~1\.....\Bureau\SAMP02~1.2\h.pwn(133) : error 029: invalid expression, assumed zero

C:\DOCUME~1\......\Bureau\SAMP02~1.2\h.pwn(133) : fatal error 107: too many error messages on one line

 

 

 

merci de votre aide

Partager ce message


Lien à poster
Partager sur d’autres sites

Il faut que tu déffinisse la fonction avant de l'utiliser. Et il faut l'utiliser avec tout ses argument si tu met que playerid sa ne peu pas marcher.

 

Fonction IsPlayerInArea : Tu la copie tout en bas de ton script.

 

 

stock IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy)

{

	new Float:x, Float:y, Float:z;

	GetPlayerPos(playerid, x, y, z);

	if (x > minx && x < maxx && y > miny && y < maxy) return 1;

	return 0;

}

 

 

et vire ton switch il sert à rien.

 

 

 

Euh prochain double poste de ce genre ta droit a l'averto.

Partager ce message


Lien à poster
Partager sur d’autres sites

donc j'ai tout refait et c'est sur que sa marche pas :

 

 

public OnPlayerCommandText(playerid, cmdtext[])

{

new cmd[256];

new property=999;




if(strcmp(cmd, "/acheter", true) == 0 )

{

				if (IsPlayerInArea(playerid))

				{

				{

				case PU_M1:

				{

				property = M1;

				}

				}

				if (GetPlayerMoney(playerid) < 50000)

				{

				SendClientMessage(playerid, COLOR_RED,"Désoler vous n'avez pas assez d'argent pour acheter la maison");

				}

				if(property==999)

				{

				SendClientMessage(playerid, COLOR_YELLOW, "tu dois etre sur le pickup pour pouvoir faire le /acheter.");

				return 1;

				}

				if(propertyOwner[property]==playerid)

				{

				SendClientMessage(playerid, COLOR_RED, "Tu possède deja cette maison");

				return 1;

				}

				PlaySoundForPlayer(playerid,SOUND_PURCHASE);

				propertyOwner[property]=playerid;

				format(string, sizeof(string), "tu a acheter %s", propertyNames[property]);

				SendClientMessage(playerid, COLOR_GREEN, string);

				}

				else

				{

				SendClientMessage(playerid, COLOR_YELLOW, "tu dois etre sur le pickup pour pouvoir faire le /acheter.");

				return 1;

				}



return 0;

}
et toute en bas:
stock IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy)

{

	new Float:x, Float:y, Float:z;

	GetPlayerPos(playerid, x, y, z);

	if (x > minx && x < maxx && y > miny && y < maxy) return 1;

	return 0;

}
voici les erreur comise
C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(128) : error 017: undefined symbol "IsPlayerInArea"

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(131) : error 014: invalid statement; not in switch

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(133) : error 017: undefined symbol "M1"

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(142) : error 017: undefined symbol "COLOR_YELLOW"

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(145) : error 017: undefined symbol "propertyOwner"

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(145) : warning 215: expression has no effect

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(145) : error 001: expected token: ";", but found "]"

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(145) : error 029: invalid expression, assumed zero

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(145) : fatal error 107: too many error messages on one line

 

 

donc sa marche pas donc il faudrait me re aidez

Partager ce message


Lien à poster
Partager sur d’autres sites

Sa rique pas de marcher si tu fait que la motié de ce que je te dit de faire ...

 

Voila comment tu aurais du faire :

Remplace XMIN,XMAX,YMIN,YMAX par les coordonnés.

 

 

if(strcmp(cmdtext, "/acheter", true) == 0 )

{

	if (IsPlayerInArea(playerid,XMIN,XMAX,YMIN,YMAX))

	{

		if (GetPlayerMoney(playerid) >= 50000)

		{

			if(propertyOwner[property]!=playerid)

			{

				PlaySoundForPlayer(playerid,SOUND_PURCHASE);

				propertyOwner[property]=playerid;

				format(string, sizeof(string), "tu a acheter %s", propertyNames[property]);

				SendClientMessage(playerid, COLOR_GREEN, string);			

			}

			else

			{

				SendClientMessage(playerid, COLOR_RED, "Tu possède deja cette maison");

			}

		}

		else

		{

			SendClientMessage(playerid, COLOR_RED,"Désoler vous n'avez pas assez d'argent pour acheter la maison");

		}

	}

	else

	{

		SendClientMessage(playerid, COLOR_YELLOW, "tu dois etre sur le pickup pour pouvoir faire le /acheter.");

	}

	return 1;

}

 

Partager ce message


Lien à poster
Partager sur d’autres sites

donc j'ai fait :

 

 

new cmd[256];

new property=999;


if(strcmp(cmdtext, "/acheter", true) == 0 )

{

	if (IsPlayerInArea(playerid,1278.0452,2522.5249,10.8203))

	{

		if (GetPlayerMoney(playerid) >= 50000)

		{

			if(propertyOwner[property]!=playerid)

			{

				PlaySoundForPlayer(playerid,SOUND_PURCHASE);

				propertyOwner[property]=playerid;

				format(string, sizeof(string), "tu a acheter %s", propertyNames[property]);

				SendClientMessage(playerid, COLOR_GREEN, string);

			}

			else

			{

				SendClientMessage(playerid, COLOR_RED, "Tu possède deja cette maison");

			}

		}

		else

		{

			SendClientMessage(playerid, COLOR_RED,"Désoler vous n'avez pas assez d'argent pour acheter la maison");

		}

	}

	else

	{

		SendClientMessage(playerid, COLOR_YELLOW, "tu dois etre sur le pickup pour pouvoir faire le /acheter.");

	}

	return 1;

}
et toute en bas stock IsPlayerInArea(playerid, Float:x, Float:y, Float:z) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); if (x > x && y < y && z > z) return 1; return 0; } et les erreur
C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(129) : error 017: undefined symbol "propertyOwner"

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(129) : warning 215: expression has no effect

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(129) : error 001: expected token: ";", but found "]"

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(129) : error 029: invalid expression, assumed zero

C:\DOCUME~1\.\Bureau\SAMP02~1.2\h.pwn(129) : fatal error 107: too many error messages on one line

 

 

donc je doit faire quoi maintenant stp ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Ca ne sers à rien de t'expliquer des fonctions si tu ne les comprend pas, ça serai faire le travail de recherche et compréhension à ta place.Voila de quoi t'aider à résoudre ton problème.Tu pourras y trouver tout ce qu'il faut pour débuter un script simple et acquérir des bases, avant de pouvoir te lancer dans des fonctions plus complexes.

http://wiki.sa-mp.com/wiki/Main_Page

 

 

 

:rolleyes: TOPIC CLOS :)

 

 

----------------------------------------------------------------------------------------------------------

Problème résolu, veuillez ouvrir un autre sujet si votre question ne porte pas sur le même sujet, sinon postez à la suite ;)

 

Merci.

 

 

Ceci est une réponse automatique.

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.