GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: scott1 le 21 Octobre 2009, 15:43:49
-
Bonjour a tous,
'aimerai savoir comment faire pour qu'n joueur qui fait une commande soit tp dans le véhicule 175, mais que si il y a deja quelqu'un au volant, qu'il soit tp dans le 176, mais que si il y a deja quelqu'un au volant, qu'il soit tp dans le 177 , mais que si il y a deja quelqu'un au volant, qu'ion li dise que tout les véhicule sont utiliser, qu'il doit attendre un peux. Merci
Merci
-
Salut,
faudrait davantage t'expliquer, tu ne veut que ça le fasse qu'avec ces trois véhicules ou il s'agit d'un exemple?
tu peut toujours faire le test IsPlayerInVehicle dans une loop qui test tous les joueurs (ce qui revient à un IsAnyPlayerInVehicle)
voilà si tu pouvais élaborer et arriver avec un début de code à améliorer, ça aiderait ton cas...
++Sim++
-
béh c' est assez simple
tu creer une variable tableau avec MAX_VEHICLES comme grandeur puis tu fait une boucle
genre
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInAnyVehicle(i)
{
tavar[GetPlayerVehicleID(i)] = 1;
}
}
Et la tu va mieu comprendre
-
Voila ma cmd.
if(strcmp(cmd, "/pratique", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerToPoint(3.0,playerid,1490.3195,1305.6976,1093.2964))
{
if(PlayerInfo[playerid][pCarLic] != 0)
{
if(PlayerInfo[playerid][pPrat] == 0)
{
if(GetPlayerMoney(playerid) < 1500)
{
SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas assez d'argent pour acheter le permis pratique.");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
PutPlayerInVehicle(playerid, 175, 0);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
OnPlayerUpdate(playerid);
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez déjà le permis pratique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous devez d'abord avoir le permis théorique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous n'êtes pas à l'auto école.");
return 1;
}
}
return 1;
}
J'ai mis PutPlayerInVehicle(playerid, 175, 0); Le probleme s'est que si un joueur est déjà dans le véhicule, il sera éjecté. J'aimerai simplement qui si il y a déjà quelqu'un dedans ce soit PutPlayerInVehicle(playerid, 176, 0);
-
Il faut que tu mettes des conditions "si 1 joueur est dans le véhicule 175 alors 176 sinon 175" et pour cela il faut que tu utilises des if, else et des else if
Là dans ta commande, tu dis au script "si la personne n'a pas 1500 alors il ne peux pas le passer sinon il va directement dans le véhicule 175" et donc le script c'est se qu'il fait. Pour lui, si une personne est déjà dans le véhicule, ça ne lui fait ni chaud ni froid vu qu'il n'est pas pris en compte dans la commande et donc il l'éjecte.
Avec tout ça et se qu'il est écrit au dessus, normalement tu devrais pouvoir continuer ;)
-
Mais je ne sais pas comment verifier si un joueur est dans le véhicule. :s
-
http://wiki.sa-mp.com/wiki/IsPlayerInAnyVehicle (http://wiki.sa-mp.com/wiki/IsPlayerInAnyVehicle)
et
http://wiki.sa-mp.com/wiki/GetPlayerVehicleID (http://wiki.sa-mp.com/wiki/GetPlayerVehicleID)
avec sa tu peu je pense faire ce que tu souhaite
-
Non, car ça ça vérifie si le joueur est dans un véhicule, moi je cherche si un joueur et dans le véhicule, subtil ^^
-
Justement, avec la fonction GetPlayerVehiculeID tu récupère l'id du Véhicule. Il te suffit donc de bien regarder les liens donné par cristab et de définir les conditions et le tour est joué ;)
-
Parameters:
(playerid)
playerid The player in the vehicle that you want to get the ID of
Returns ID of the vehicle or 0 if not in a vehicle
//add 10x Nitro if the player is in a car. Might be called on a command.
new vehicle;
vehicle = GetPlayerVehicleID(playerid);
if (vehicle > 0)
{
AddVehicleComponent(vehicle, 1010);
}
Quand je lis ça, voila ce que je comprend.
playerid L'id du joueur qui est dans le véhicule
donc
si le joueur est dans un véhicule dont l'id est > 0 on ajoute de la nitro.
Donc je ne vois pas en quoi ça m'aide puisqu'on cherche si le joueur est dans un véhicule.
Ou je comprend mal?
-
Tu comprends bien mais tu ne réfléchis pas.
Dans une commande, tu n'est pas obligé d'utiliser que > mais tu peux utiliser < ou = et donc tu peux dire si une personne est dans le véhicule 175 au lieu de dire si une personne est dans un véhicule au dessus de 0 ;)
-
tu comprend mal
playerid 5 a taper la commande est teleporter dans le vehicul 175 tu fait une variable qui va dire que ce vehicule est occuper
playerid 6 a taper la commande est teleporter dans le vehicul 175 mais vus que la variable de ce vehicule est a 1 on le met dans le vehicule 176 et la on met la varible du vehicule a 1 qui va dire que ce vehicule est occuper
si tu regarde plusieur script la variable que tout le monde emploie s'apelle "used[vehicleid]"
diablo plus rapide que moi :happy
-
Bon voila j'ai essayer ça, il n'y a plus qu'a la tester
if(strcmp(cmd, "/pratique", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerToPoint(3.0,playerid,1490.3195,1305.6976,1093.2964))
{
if(PlayerInfo[playerid][pCarLic] != 0)
{
if(PlayerInfo[playerid][pPrat] == 0)
{
if(GetPlayerMoney(playerid) < 1500)
{
SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas assez d'argent pour acheter le permis pratique.");
return 1;
}
else
{
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerInVehicle(i,175) == 0)
{
PutPlayerInVehicle(playerid, 175, 0);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
return 1;
}
if(IsPlayerInVehicle(i,175) == 1)
{
if(IsPlayerInVehicle(i,176) == 0)
{
PutPlayerInVehicle(playerid, 176, 0);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
}
return 1;
}
if(IsPlayerInVehicle(i,175) == 1)
{
if(IsPlayerInVehicle(i,176) == 1)
{
if(IsPlayerInVehicle(i,177) == 0)
{
PutPlayerInVehicle(playerid, 177, 0);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
}
}
return 1;
}
if(IsPlayerInVehicle(i,175) == 1)
{
if(IsPlayerInVehicle(i,176) == 1)
{
if(IsPlayerInVehicle(i,177) == 1)
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Toutes les voitures sont occupée, revenez plus tard.");
}
}
}
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez déjà le permis pratique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous devez d'abord avoir le permis théorique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous n'êtes pas à l'auto école.");
return 1;
}
}
return 1;
}
Double post
ça ne va pas.Je desespere.
-
Je me doutais bien que ça n'aurait pas fonctionner étant donner que tu as plusieurs fois la condition if(IsPlayerInVehicle(i,175) == 1).
Donc 2 choses pour t'aider, soit devant tu ajoutes des else pour faire que tes conditions se transforme en else if(IsPlayerInVehicle(i,175) == 1) (mais je ne crois pas que ça va fonctionner), soit tu réduit en employant qu'une seule fois if(IsPlayerInVehicle(i,175) == 1) (chose qui est plus probable à mon avis).
Ta condition se présentera comme ça (je schématise et donc il ne te reste plus qu'à remplacer avec les bons termes):
Si (pas de joueur dans vehicule 175)
Alors il monte
sinon si (pas de joueur dans vehicule 176)
alors il monte
sinon si (pas de joueur dans vehicule 177)
alors il monte
sinon tous les véhicules sont pris.
Maintenant que tu as tous les éléments avec le schéma pour réussir, tu devrais pouvoir la faire sans problème ;)
-
Ceci ça va?
if(strcmp(cmd, "/pratique", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerToPoint(3.0,playerid,1490.3195,1305.6976,1093.2964))
{
if(PlayerInfo[playerid][pCarLic] != 0)
{
if(PlayerInfo[playerid][pPrat] == 0)
{
if(GetPlayerMoney(playerid) < 1500)
{
SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas assez d'argent pour acheter le permis pratique.");
return 1;
}
else
{
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerInVehicle(i,175) == 0)
{
PutPlayerInVehicle(playerid, 175, 0);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
return 1;
}
else if(IsPlayerInVehicle(i,176) == 0)
{
PutPlayerInVehicle(playerid, 176, 0);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
}
else if(IsPlayerInVehicle(i,177) == 0)
{
PutPlayerInVehicle(playerid, 177, 0);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
}
else if(IsPlayerInVehicle(i,175) == 1 && IsPlayerInVehicle(i,176) == 1 && IsPlayerInVehicle(i,177) == 1)
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Toutes les voitures sont occupée, revenez plus tard.");
}
}
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez déjà le permis pratique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous devez d'abord avoir le permis théorique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous n'êtes pas à l'auto école.");
return 1;
}
}
return 1;
}
-
Essayes de mettre des else devant if(IsPlayerInVehicle(i,176) == 0) et devant if(IsPlayerInVehicle(i,177) == 0) car se sont eux tes conditions "sinon si" (else if) de mon schéma.
La ligne else if(IsPlayerInVehicle(i,175) == 1 && IsPlayerInVehicle(i,176) == 1 && IsPlayerInVehicle(i,177) == 1) tu peux la supprimer et ne mettre que else car c'est lui le dernier sinon (la phrase "tous les véhicules sont pris" dans mon schéma, j'aurais du le mettre sur la ligne en dessous).
Maintenant, en théorie ça doit fonctionner, (bien que je ne saches pas se que veux dire PutPlayerInVehicle(playerid, 175, 0) ni SetPlayerVirtualWorld(playerid, 0) et donc à quoi elle corresponde ;) )
-
ça ne fonctionne pas :s.
PutPlayerInVehicle(playerid, 175, 0) = met le joueur a la place du conducteur dans le vehicule 175
SetPlayerVirtualWorld(playerid, 0) = met le monde virtuel du jouer a 0
-
si tu met le joueur mais pas le vehicule dans le virtual world sa ne fonctionneras pas
-
Le virtual world ne change rien, s'est pour le tp ^^
-
pourtant je trouve ce genre de chose simple j'ai meme donné comment faire peu pas plus t'aider dsl
-
Merci.
Je ne connaissais pas l'existence du monde virtuel mais ce qu'à ajouter cristab est logique.
Maintenant, je vois que tu as éditer le code donné en ajoutant les else if que je t'ai dis devant if(IsPlayerInVehicle(i,176) == 0) et devant if(IsPlayerInVehicle(i,177) == 0), mais tu n'as pas retirer if(IsPlayerInVehicle(i,175) == 1 && IsPlayerInVehicle(i,176) == 1 && IsPlayerInVehicle(i,177) == 1) de la dernière ligne (ils sont en trop et ne servent à rien).
De plus, tu as oublié les return ;)
-
Je l'ai enlever dans mon GM :s Tu ne veux pas modif ma cmd ? ^^ Car la je sèche
-
Désolé, actuellement je suis malade (grippe depuis 2/3 jours) et je ne devrais même pas aller sur mon Pc. J'ai demandé conseil à cristab pour mon système d'argent (sujet textdraw argent), mais j'ai tellement l'impression que ma tête va exploser que j'ai pas encore eu le courage de réfléchir au sujet ni même de reprendre mon script afin de le continuer.
Si j'ai répondu, c'est parce que j'étais devant mon Pc et que ça ne demandait pas trop de réflexions sur la façon de faire la commande, mais je suis pour l'instant incapable de réfléchir plus afin de faire la commande ni même de choisir les bons termes (c'est pour cela que j'ai schématisé).
Maintenant si je devrais faire la commande, je ferais la même chose (mais bon, là je n'ai pas la tête à réfléchir à d'autres méthodes) en enlevant la ligne qui correspond au monde virtuel (vu que je ne sais pas à quoi correspond le monde virtuel ), j'enlèverais le return qui est dans la condition if(IsPlayerInVehicle(i,175) == 0) (ou j'en mettrais aux autres conditions) et je supprimerais la ligne "else if(IsPlayerInVehicle(i,175) == 1 && IsPlayerInVehicle(i,176) == 1 && IsPlayerInVehicle(i,177) == 1)" pour mettre à la place else
Enfin, un petit conseil: quand tu n'arrives pas quelque chose il ne sert à rien de s'obstiner car tu n'arriveras pas à réfléchir à toutes les possibilités. Si ça ne fonctionne pas, laisse ça de coté et fait autre chose. Quand tu reviendras dessus après plusieurs jours ou mois et vu que tu auras acquis un peu plus d'expérience, ce sera plus simple, tu verras tes erreurs et tu trouveras peux être d'autres façons d'y arriver ;)
-
Va te reposer alors ! :D
Ben attendre quelque mois/année, je ne peux pas, ce beug est fort ennuiant et je dois le regler au plus vitte^^.
Merci de ton aide, j'essayerai de me débrouiller seul.
-
Cette nuit j'ai un peu réfléchi à ta commande et j'ai pensé à ça (toujours façon schéma):
si (une personne dans 175)
{
si (une personne dans 176)
{
si (une personne dans 177)
{
envoie du message : tous les véhicules sont pris
}
sinon
{
il monte dans 177
}
}
sinon
{
il monte dans 176
}
}
sinon
{
il monte dans 175
}
Je te laisse mettre les vrais termes et les return.
Maintenant si ça ne fonctionne pas de cette façon c'est qu'il y a peux être une autre méthode (mais pas la tête de réfléchir pour la faire)
-
Ok, merci c'est bien gentil. Je peux encore abuser? Je ne m'en sort pas avec les return, ou dois je le s mettre?
-
béh c' est assez simple
tu creer une variable tableau avec MAX_VEHICLES comme grandeur puis tu fait une boucle
genre
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInAnyVehicle(i)
{
tavar[GetPlayerVehicleID(i)] = 1;
}
}
normalement avec ca tu doit bien t en sortir mais je voit que tu veut pas reflechir
Et la tu va mieu comprendre
-
béh c' est assez simple
tu creer une variable tableau avec MAX_VEHICLES comme grandeur puis tu fait une boucle
genre
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInAnyVehicle(i)
{
tavar[GetPlayerVehicleID(i)] = 1;
}
}
normalement avec ca tu doit bien t en sortir mais je voit que tu veut pas reflechir
Et la tu va mieu comprendre
Je ne comprend pas ce code :s
-
Up ^^
-
Salut,
ce que je considère comme une fonction IsAnyPlayerInVehicle:
IsAnyPlayerInVehicle(vehicleid)
{
for( new i = 0; i < MAX_PLAYERS; i++)
{
if(vehicleid == GetPlayerVehicleID(i))
{
return true;
}
}
return false;
}
Utilise judicieusement avec le "schéma" (presque un code en fait) de diablo62 et tu devrais arriver à un code fonctionnel
++Sim++
-
si (une personne dans 175)
{
si (une personne dans 176)
{
si (une personne dans 177)
{
envoie du message : tous les véhicules sont pris
}
sinon
{
il monte dans 177
}
}
sinon
{
il monte dans 176
}
}
sinon
{
il monte dans 175
}
D'apres le shéma de Diablo62 ( Qui est très bien expliquer :-*), voila ce que j'ai pu faire ( Je ne suis pas sur que ce soit juste mais théoriquement cela est juste ;)
if(IsPlayerInVehicle(i,175) == 1)
{
if(IsPlayerInVehicle(i,176) == 1)
{
if(IsPlayerInVehicle(i,177) == 1)
{
SendClientMessageToPlayer(0xAA3333AA, "Aucun véhicule n'es disponible pour le moment.");
}
else
{
PutPlayerInVehicle(playerid, 177, 0)
}
}
else if
{
PutPlayerInVehicle(playerid, 176, 0)
}
else if
{
PutPlayerInVehicle(playerid, 175, 0)
}
}
++ Callo
-
Je suis désolé de dire ca mais ce code
if(IsPlayerInVehicle(i,175) == 1)
{
if(IsPlayerInVehicle(i,176) == 1)
{
if(IsPlayerInVehicle(i,177) == 1)
{
SendClientMessageToPlayer(0xAA3333AA, "Aucun véhicule n'es disponible pour le moment.");
}
else
{
PutPlayerInVehicle(playerid, 177, 0)
}
}
else if
{
PutPlayerInVehicle(playerid, 176, 0)
}
else if
{
PutPlayerInVehicle(playerid, 175, 0)
}
}
Est completement faux !
depuis quand on fait des else if sans determiner la condition et y a aussi d' autre incoherence donc faut revoir ce code lol
-
if(IsPlayerInVehicle(i,175) == 1)//si le vehicule 175 est occuper
{
if(IsPlayerInVehicle(i,176) == 0)//si le vehicule 176 est disponible
{
PutPlayerInVehicle(playerid, 176, 0); //on le met dedans
}
else//sinon
{
//on lui indique qu'il n'y a plus de vehicule
}
}
else //si le vehicule 175 est libre
{
PutPlayerInVehicle(playerid, 175, 0); //on le met dedans
}
Voila a peu pret l'histoire
-
if(IsPlayerInVehicle(i,175) == 1)//si le vehicule 175 est occuper
{
if(IsPlayerInVehicle(i,176) == 0)//si le vehicule 176 est disponible
{
PutPlayerInVehicle(playerid, 176, 0); //on le met dedans
}
else//sinon
{
//on lui indique qu'il n'y a plus de vehicule
}
}
else //si le vehicule 175 est libre
{
PutPlayerInVehicle(playerid, 175, 0); //on le met dedans
}
Voila a peu pret l'histoire
C'est mon schéma avec les termes en faites :p
-
tout a fait j'ai juste corriger Stylis pour qu'il se rende compte de la remarque se Sasuke
-
tout a fait j'ai juste corriger Stylis pour qu'il se rende compte de la remarque se Sasuke
Oops j' ai oublier de faire la correction !
Merci Cristab
-
Oops ... Excuser moi pour l'erreur :-\
J'ai aussi compris mon erreur ;)
-
J'espere que ceci cera ok
if(strcmp(cmd, "/pratique", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerToPoint(3.0,playerid,1490.3195,1305.6976,1093.2964))
{
if(PlayerInfo[playerid][pCarLic] != 0)
{
if(PlayerInfo[playerid][pPrat] == 0)
{
if(GetPlayerMoney(playerid) < 1500)
{
SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas assez d'argent pour acheter le permis pratique.");
return 1;
}
else
{
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerInVehicle(i,175) == 1)//si le vehicule 175 est occuper
{
if(IsPlayerInVehicle(i,176) == 1)//si le vehicule 176 est disponible
{
if(IsPlayerInVehicle(i,177) == 0)//si le vehicule 176 est disponible
{
PutPlayerInVehicle(playerid, 177, 0); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
return 1;
}
else//sinon
{
SendClientMessage(playerid, COLOR_WHITE, "Aucun véhicule n'est disponible pour le moment.");//on lui indique qu'il n'y a plus de vehicule
}
}
else//sinon
{
PutPlayerInVehicle(playerid, 176, 0); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
return 1;
}
}
else//sinon
{
PutPlayerInVehicle(playerid, 177, 0); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
return 1;
}
}
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez déjà le permis pratique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous devez d'abord avoir le permis théorique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous n'êtes pas à l'auto école.");
return 1;
}
}
return 1;
}
Toujours pas :/
-
tente comme ceci
<?php
if(strcmp(cmd, "/pratique", true) == 0)
{
if(GetPlayerMoney(playerid) < 1500)
{
SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas assez d'argent pour acheter le permis pratique.");
return 1;
}
if(PlayerInfo[playerid][pCarLic] != 0)
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous n'êtes pas à l'auto école.");
return 1;
}
if(PlayerInfo[playerid][pPrat] != 0)
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez déjà le permis pratique.");
return 1;
}
if(PlayerToPoint(3.0,playerid,1490.3195,1305.6976,1093.2964))
{
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerInVehicle(i,175) == 0)//si le vehicule 175 est libre
{
PutPlayerInVehicle(playerid, 175, 0); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
}
else
{
if(IsPlayerInVehicle(i,176) == 0)//si le vehicule 176 est libre
{
PutPlayerInVehicle(playerid, 176, 0); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
}
else
{
if(IsPlayerInVehicle(i,177) == 0)//si le vehicule 176 est disponible
{
PutPlayerInVehicle(playerid, 177, 0); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
}
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Aucun véhicule n'est disponible pour le moment.");//on lui indique qu'il n'y a plus de vehicule
}
}
}
return 1;
}
Desoler si je ne l'ast pas bien compris mais sur le forum dur dur
-
tente comme ceci
<?php
= ?
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21716) : error 029: invalid expression, assumed zero
-
Il faut le supprimer le:
<?php
C'est un bug ;)
-
c'est pour la couleur j'aime la couleur la vie est en couleur mon code aussi
PS ce n'est pas un bug ;)
-
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21716) : error 029: invalid expression, assumed zero
-
Salut,
je croyais avoir conseillé d'utiliser ma fonction?
comme le dit sasuke, ce code est complètement faux, dès qu'un joueur ne sera pas dans un des véhicules testés, le joueur qui tape la commande y sera placé, et ce un grand nombre de fois (vivement la loop)
le bout de code, correspondrait plutôt à:
if(IsAnyPlayerInVehicle(175))
{
if(IsAnyPlayerInVehicle(176))
{
If(IsAnyPlayerInVehicle(177))
{
//message erreur
}
else
{
PutPlayerInVehicle(playerid, 177, 0);
}
}
else
{
....
}
}
else
{
...
}
voilà complète et intègre correctement dans ta commande maintenant (n'oublie pas d'enlever ta loop!!!!)
++Sim++
-
voilà complète et intègre correctement dans ta commande maintenant (n'oublie pas d'enlever ta loop!!!!)
++Sim++
Loop?
Merci de maider.
J'ai
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21675) : error 017: undefined symbol "IsAnyPlayerInVehicle"
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21677) : error 017: undefined symbol "IsAnyPlayerInVehicle"
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21679) : error 017: undefined symbol "IsAnyPlayerInVehicle"
J'ai chercher, mais je ne sais pas comment la definir
-
tu as du chercher longtemps :ninja http://wiki.sa-mp.com/wiki/IsPlayerInAnyVehicle (http://wiki.sa-mp.com/wiki/IsPlayerInAnyVehicle)
-
Oui et on ne definis pas la fonction la desus
-
C'est parce que c'est IsPlayerInAnyVehicle au lieu de IsAnyPlayerInVehicle ;)
-
J'ai changer, mais sa me téléporte toujours dans la voiture même si qqn est déjà dedans :/
-
Salut,
suffisait de lire mes postes précédants, j'ai créer cette fonction pour te simplifier le problème..... :closedeyes
++Sim++
-
J' ai fait un equivalent mais pour tout les vehicules ....
regarde mon Loop
-
Loop ?
J'ai pris ton exemple Sim
-
Salut,
ce que je considère comme une fonction IsAnyPlayerInVehicle:
IsAnyPlayerInVehicle(vehicleid)
{
for( new i = 0; i < MAX_PLAYERS; i++)
{
if(vehicleid == GetPlayerVehicleID(i))
{
return true;
}
}
return false;
}
Utilise judicieusement avec le "schéma" (presque un code en fait) de diablo62 et tu devrais arriver à un code fonctionnel
++Sim++
Voila la fonction que Sim parle desoler mais je ne lit pas tout le post c'est a toi de lire tout le post scott la tu me donne l'impression du faite le moi et je copie colle betement
-
Salut,
ce que je considère comme une fonction IsAnyPlayerInVehicle:
IsAnyPlayerInVehicle(vehicleid)
{
for( new i = 0; i < MAX_PLAYERS; i++)
{
if(vehicleid == GetPlayerVehicleID(i))
{
return true;
}
}
return false;
}
Utilise judicieusement avec le "schéma" (presque un code en fait) de diablo62 et tu devrais arriver à un code fonctionnel
++Sim++
Voila la fonction que Sim parle desoler mais je ne lit pas tout le post c'est a toi de lire tout le post scott la tu me donne l'impression du faite le moi et je copie colle betement
Ouai, mas je n'y comprend rien de rien. Suis je idiot? xD
-
Loop ?
J'ai pris ton exemple Sim
http://en.wikipedia.org/wiki/For_loop (http://en.wikipedia.org/wiki/For_loop)
voila =)
-
bon reprenons depuit le bidule du shmilblic
voilà complète et intègre correctement dans ta commande maintenant (n'oublie pas d'enlever ta loop!!!!)
++Sim++
Loop?
Merci de maider.
J'ai
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21675) : error 017: undefined symbol "IsAnyPlayerInVehicle"
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21677) : error 017: undefined symbol "IsAnyPlayerInVehicle"
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21679) : error 017: undefined symbol "IsAnyPlayerInVehicle"
J'ai chercher, mais je ne sais pas comment la definir
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Salut,
suffisait de lire mes postes précédants, j'ai créer cette fonction pour te simplifier le problème..... :closedeyes
++Sim++
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Salut,
ce que je considère comme une fonction IsAnyPlayerInVehicle:
IsAnyPlayerInVehicle(vehicleid)
{
for( new i = 0; i < MAX_PLAYERS; i++)
{
if(vehicleid == GetPlayerVehicleID(i))
{
return true;
}
}
return false;
}
Utilise judicieusement avec le "schéma" (presque un code en fait) de diablo62 et tu devrais arriver à un code fonctionnel
++Sim++
Voila la fonction que Sim parle desoler mais je ne lit pas tout le post c'est a toi de lire tout le post scott la tu me donne l'impression du faite le moi et je copie colle betement
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
est ce que j'ai zapper un truc ou tu ne te souvient plus des questions que tu te pose ??
-
Merci, je vois, masi je ne vois pas comment l'intergrer
IsAnyPlayerInVehicle(vehicleid)
{
for( new i = 0; i < MAX_PLAYERS; i++)
{
if(vehicleid == GetPlayerVehicleID(i))
{
return true;
}
}
return false;
}
Double post
Loop ?
J'ai pris ton exemple Sim
http://en.wikipedia.org/wiki/For_loop (http://en.wikipedia.org/wiki/For_loop)
voila =)
Au fait merci
-
copie colle en bas de ton GM ...
-
Encore merci pour l'aide que tu m'apporte.
Mais...J'ai encore besoind e toi ^^
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(52366) : warning 235: public function lacks forward declaration (symbol "IsAnyPlayerInVehicle")
-
place ca dans le code enfin tout en haut
forward IsAnyPlayerInVehicle(playerid);
-
Merci
Double post
Grand merci pour votre aide !!!
-
Salut,
tu n'était pas obliger de mettre la fonction public
le préfixe public n'est nécessaire que pour les fonctions que tu désire accessible par CallRemoteFunction (par un autre script quoi), CallLocalFunction et les timer
++Sim++
-
on peu mettre private aussi =)
mais c 'est le contraire de public
-
Salut,
on peu mettre private aussi =)
mais c 'est le contraire de public
mais les gens n'ont pas la mauvaise habitude de l'utiliser sans raison :P
++Sim++