GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: LePtitClown le 06 Avril 2009, 20:12:43
-
Salut, je cherche à réaliser un FS pour que certains véhicules soient réservés aux joueurs riches comme par exemple ici un kart à 500 000$$$
Voila où j' en suis ( il y a des erreur et je ne trouve pas comment éjecter le joueur si il n'a pas l'argent nécessaire
Voici le début de code:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(carid == 571)
{
if(GetPlayerMoney(playerid) = 500000);
{
if (newstate == 2)// test si le joueur s'assoit a la place du conducteur .
{
SendClientMessage(playerid,COLOR_DARKRED, "Bienvenue dans ce kart, roulez prudemment");
}
return 1;
}
}
}
else if (GetPlayerMoney(playerid) < 500000);
{
SendClientMessage(playerid,COLOR_DARKRED, "(!) Tu n'as pas assez d'argent pour pouvoir utiliser ce kart !!)");
//il faudrait rajouter la fonction pour éjecter le joueur si il n'a pas l'argent
}
return 1;
}
Après je suis perdu
A++
-
Il faut que tu utilise la fonction :
RemovePlayerFromVehicle
++
MrT®
-
Merci pour cette réponse mais je le met où RemovePlayerFromVehicle et il m'écrive 5 erreur aussi
erreurs:
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(37) : error 017: undefined symbol "carid"
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : warning 211: possibly unintended assignment
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : error 022: must be lvalue (non-constant)
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : warning 215: expression has no effect
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : error 001: expected token: ";", but found ")"
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : error 029: invalid expression, assumed zero
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
5 Errors.
-
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(carid == 571)
{
if(GetPlayerMoney(playerid) >= 500000);
{
if (newstate == 2)// test si le joueur s'assoit a la place du conducteur .
{
SendClientMessage(playerid,COLOR_DARKRED, "Bienvenue dans ce kart, roulez prudemment");
}
}else if (GetPlayerMoney(playerid) < 500000);
{
SendClientMessage(playerid,COLOR_DARKRED, "(!) Tu n'as pas assez d'argent pour pouvoir utiliser ce kart !!)");
RemovePlayerFromVehicle(playerid);
}
}
}
Je penses que ca va marcher.
-
Non encore plus d'erreurs ( 7 erreurs ) merci quand même
Ma fonction a peut être une problème dès le début...
Là je suis perdu pourtant quand j' ai pensé à cette fonction je pensais qeu ça n'allait pas être diffile
Si quelqu'un sait d'où vient le problème.... Merci de répondre
A++
-
On ne met pas de ; a la fin d'une condition ....
-
Toujours des erreurs quelq'un ne connaitrais pas un FS où je pourrai m'inspirer pour mon FS??
Je viens de wiki samp ils ne font pas comme ça ça ressemble à ça peut être que ça vous parle plus:
code:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(carid == 571)
{
if(GetPlayerMoney(playerid) >= 500000);
{
PutPlayerInVehicle ( playerid, vehicleid, 0 );
SendClientMessage(playerid,COLOR_DARKRED, "Bienvenue dans ce kart, roulez prudemment");
return 1 ;
}
}
public OnPlayerUpdate(playerid)
{
if(carid == 571)
{
if(GetPlayerVehicleID(playerid) == 1 && GetPlayerMoney(playerid) <500000)
SendClientMessage(playerid,COLOR_DARKRED, "(!) Tu n'as pas assez d'argent pour pouvoir utiliser ce kart !!)");
{
RemovePlayerFromVehicle(playerid);
}
return 1;
}
}
erreurs:
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(37) : error 017: undefined symbol "carid"
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : error 036: empty statement
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(47) : warning 217: loose indentation
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(47) : error 029: invalid expression, assumed zero
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(47) : error 004: function "OnPlayerUpdate" is not implemented
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(49) : error 017: undefined symbol "carid"
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(84) : error 030: compound statement not closed at the end of file (started at line 37)
A++
-
Bon voila comment tu doit ti prendre
Premierement oublie la fonction OnPlayerEnterVehicle pour la simple et bonne raison qu'elle est appeler a chaque fois que tu appuie sur la touche pour entrer dans une caisse (donc si quelqu'un apppuie 3 fois dessu il aura 3 fois le message)
Personnelement je te conseile plutôt d'utiliser OnPlayerStateChange
Ce qui donnerai un truc dans ce style
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER) // Si le joueur est dans l'etats de conducteur
{
new vehicleid = GetPlayerVehicleID(playerid); // On recupere l'id du vehicule dans lequel est le joueur
if(vehicleid == 571) // Si l'id du vehicule est l'id 571
{
if(GetPlayerMoney(playerid) >= 500000)//Si le joueur a 500000$ ou plus
{
SendClientMessage(playerid,COLOR_DARKRED, "Bienvenue dans ce kart, roulez prudemment"); // On l'autorise a utiliser le vehicule
}
else // Sinon
{
SendClientMessage(playerid,COLOR_DARKRED, "(!) Tu n'as pas assez d'argent pour pouvoir utiliser ce kart !!"); // On lui refuse d'utiliser le vehicule
RemovePlayerFromVehicle(playerid); // On sort le joueur du vehicule
}
}
}
return 1;
}
C'est une petite ebauche rien ne t'empeche d'ameliorer mais c'est pour te montrer le principe ;)
-
Salut,
j'ajouterais que vous utilisiez une variable non-déclarée, le carid n'existe pas dans la callback (il s'agit peut-être d'une variable globale pour certains mais elle demeure néanmoins inutile, ce qui n,est pas ton cas ), vous devriez utiliser vehicleid
et en passant, à moins de savoir ce que tu fais, NE PLACE PAS DE CODE DANS OnPlayerUpdate
++Sim++
-
MrFredo ton script marche nickel, un grand merci à toi :cheers
Par contre j'ai du modifié l'ID du véhicule je ne sais pas trop pouquoi
J'ai un petit script qui permet de donner l'ID d'un véhicule dans le jeu
code:
//pour avoir l'id des véhicules
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
{
printf("Lorsqu'une personne rentre dans un véhicule(%d, %d, %d)", playerid, vehicleid, ispassenger);
new string[255];
format(string, sizeof(string), "VoitureId: %d !",vehicleid);
SendClientMessage(playerid, COLOR_AQUA, string);
}
return 1;
}
Avec ce script, dans le jeu l'ID de kart est alors de 164 ( c'est ce que j'ai du changé pour que ça marche )
Mais pourtant dans les add vehicule l'ID n est pas la même, je me demande pourquoi?
AddStaticVehicle(571,2295.2468,2479.8591,10.1042,180.2029,51,53); // kart de la police
A++
-
Alor il ya une grande diference en l'id du vehicule qui est sont numero dans la liste de t'est vehicule sur ton serveur et le modelid qui est le model de vehicule
Exemple
public OnGameModeInit()
{
AddStaticVehicle(411,....) // Vehicule id 1
AddStaticVehicle(560,....) // vehicule id 2
}
Alor que ici plu haut 411 et 560 sont les modelid c'est a dire le model de vehicule , pour obtenir le modelid d'un vehicule il sufit alor d'utiliser GetVehicleModel
-
Je ne savais pas :)
A++
-
c'est une bonne idée que tu a eu la xD
Gg
++
lugia
-
J'ai eu cette idée car beaucoup de joueurs aiment utiliser des véhicules tel que les tanks mais quand trop de joueurs les utilisent ça devient énevrant donc c'est un bon petit compromis
A++
Double post
Encore un petit problème, j'ai essayer de rajouter un autre véhicule payant mais il m'affiche des erreurs
que faut t-il mettre quand on a deux if d'affilé
( c'est le même code que en haut à mettre en dessous en chnageant l id du véhicule, le prix e l'emplacement )
il faut mettre un else if / if / else ??
A++
-
faut que tu fasse une else if
-
le else if ne change rien ( il rajoute juste des erreurs lors de la compilation )
Si quelqu'un a une réponse à ma question.. Merci de répondre
A++ :)
-
Salut,
code intelligemment, au lieu d'ajouter une condition, sert toi d'un opérateur de la liste ...TUTO (http://www.gtaonline.fr/forums/index.php/topic,6175.0.html)
indice: il contient plus d'une barre verticale!!!
++Sim++
-
Salut
Merci, ça marche
A++