GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Esmaelo_Louiscius le 13 Juin 2012, 20:48:29
-
Bonjour j'ai creer un systeme de maison pour mon gamemode, mais j'ai un probleme.
Lorsque je fait la commande /entrer dans le jeu il ne se passe rien.
Tenez les Pastebin : http://pastebin.com/wbACpTtf (http://pastebin.com/wbACpTtf)
Merci d'avance. Mayou
-
Pourquoi :
if(InfosJoueur[playerid][DansMaison] == -1)
Pourquoi pas :
if(InfosJoueur[playerid][DansMaison] == 0)
Ou encore :
if(InfosJoueur[playerid][DansMaison] == 1)
Le code se trouve dans la commande pour entré dans la maison.
-
Bas parce que l'id de la maison commence par l'id 0
-
Je pense que ta condition est simplement fausse:
if (InfosJoueur[playerid][DansMaison] == -1) {
}
Essaye de voir quelle est sa valeur.
D'ailleurs, la condition peut être exécuter une seule fois, et ainsi, éviter des boucles inutiles !
CMD:entrer(playerid, params[]) {
if (IsPlayerConnected(playerid)) {
if (InfosJoueur[playerid][DansMaison] == -1) {
for (new maisonid = 0; maisonid < sizeof(InfosMaison); maisonid++) {
if (IsPlayerInRangeOfPoint(playerid, 5, InfosMaison[maisonid][MEntrerX], InfosMaison[maisonid][MEntrerY], InfosMaison[maisonid][MEntrerZ])) {
SetPlayerInterior(playerid, InfosMaison[maisonid][MInt]);
SetPlayerVirtualWorld(playerid, InfosMaison[maisonid][MWorld]);
SetPlayerPos(playerid, InfosMaison[maisonid][MSortieX], InfosMaison[maisonid][MSortieY], InfosMaison[maisonid][MSortieZ]);
InfosJoueur[playerid][DansMaison] = maisonid;
}
}
}
else {
printf("DansMaison : %i", InfosJoueur[playerid][DansMaison]);
}
}
return 1;
}
-
j'ai creer 6 maison et chaque fois j'essaye de rentrez j'arrive pas dans le log ya ecrit
DansMaison : 1
sa change pas d'id sa reste 1
-
La variable est simplement mal initialisé.
Met ça dans OnGameModeInit() par exemple.
for (new i = 0; i < MAX_PLAYERS; i++) {
InfosJoueur[i][DansMaison] = -1;
}
-
Sa reussit a se teleportez pour qu'un maison sur 3.
Je rentre dans la maison id 3 dans le log sa met id 49 et quand je sort je sort a la maison id 1
-
Regarde les systèmes déjà existant. Tu dois te tromper dans les conditions ou boucles. Je ne sais pas.
-
J'ai qu'un systeme de vehicule sismilaire a celui là mais il marche correctement sauf ceux systeme de maison je rentre dans n'importe quel maison et je sort de la maison id 3.
Double post
Solution trouvez
-
Quelle est cette solution ?
-
Celle la et mai je vais cherchez pour pouvoir enlever le /entrer id et mettre /entrer
CMD:entrer(playerid, params[])
{
if(IsPlayerConnected(playerid))
{
new maison;
if(sscanf(params, "i", maison)) return SendClientMessage(playerid, -1, "Usage: /entrer <id>");
if(IsPlayerInRangeOfPoint(playerid, 5, InfosMaison[maison][MEntrerX], InfosMaison[maison][MEntrerY], InfosMaison[maison][MEntrerZ]))
{
SetPlayerInterior(playerid, InfosMaison[maison][MInt]);
SetPlayerVirtualWorld(playerid, InfosMaison[maison][MWorld]);
SetPlayerPos(playerid, InfosMaison[maison][MSortieX], InfosMaison[maison][MSortieY], InfosMaison[maison][MSortieZ]);
InfosJoueur[playerid][DansMaison] = maison;
}
}
return 1;
}
CMD:sortir(playerid, params[])
{
if(IsPlayerConnected(playerid))
{
new maison = InfosJoueur[playerid][DansMaison];
if(IsPlayerInRangeOfPoint(playerid, 5, InfosMaison[maison][MSortieX], InfosMaison[maison][MSortieY], InfosMaison[maison][MSortieZ]))
{
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
SetPlayerPos(playerid,InfosMaison[maison][MEntrerX],InfosMaison[maison][MEntrerY],InfosMaison[maison][MEntrerZ]);
InfosJoueur[playerid][DansMaison] = 0;
}
//}
}
return 1;
}