GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Paradize le 23 Décembre 2009, 06:45:14
-
Bonjour !
Alors voilà..j'ai un soucis avec mon auto école.
J'ai installer mon auto école à Los Santos. J'ai commencé par changé le spawn des joueurs de la faction instructeur (Spawn dans l'intérieur) :
if(IsAnInstructor(playerid)) //Spawn instructeur
{
if(SchoolSpawn[playerid] == 0)
{
SetPlayerToTeamColor(playerid);
SetPlayerPos(playerid, 1494.8589,1306.48,1093.2953); // Spawn du joueur de la faction instructeur
SetPlayerFacingAngle(playerid, 275.1114);
SetPlayerInterior(playerid,3);
PlayerInfo[playerid][pInt] = 3;
}
else if(SchoolSpawn[playerid] == 1)
{
SetPlayerToTeamColor(playerid);
SetPlayerPos(playerid, -2032.6810,-117.4816,1035.1719);
SetPlayerFacingAngle(playerid, 4.6505);
SetPlayerInterior(playerid,0);
PlayerInfo[playerid][pInt] = 0;
}
return 1;
Ensuite, j'ai ajouté l'ID de l'intérieur. J'ai ajouté l'auto école comme bizz avec intérieur. Quand je me connecte, je spawn bien dans l'intérieur mais si je veux sortir (En marchant vers la porte), mon joueur sort mais rerentre directement dans l'auto école. Par contre, si je fais /sortir, mon joueur sort bien du bâtiment..
Suis-je obliger de mettre l'auto école comme bizz pour pouvoir /entrer et /sortir ? Il y a pas une autre manière ? Peut-on m'aider ? Me donner des codes..etc
Si vous avez besoin d'autre ligne, dites moi :)
-
Le problème ne vient pas de ton spawn, ni de ton biz.
Le problème, si je ne me trompe pas, c'est de ta sortie et entré automatique.
Il y'a 2 possibilité :
1. Quand tu sorts, ton joueur se trouve la ou il doit se placer pour entré, donc il se retrouve de nouveau dedans.
Solution : Faire le spawn de sortie un petit peu plus loin du points d'entré.
2. Si le points d'entré est déjà éloigné du spawn à la sortie, ton rayon de PlayerToPoint est trop élevée.
Donc quand le joueur sort, il se trouve dans ce rayon, et donc TP à l'intérieur.
Solution :
PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
Float:radi = rayon du point, plus il est petit, plus la position du joueur devra êtré précise.
Pour un entré/sortie, je te conseille la valeur 1.0.
Ensuite, il vaut mieux rajouter un pick up pour mieux indiquer les joueurs
PS : Si tu es passé par la 2, revérifie la 1 si sa ne marche pas.
-
Ok..
Solution : Faire le spawn de sortie un petit peu plus loin du points d'entré
Comment je le fais spawn un peu plus loin ?
-
Je te donne un exemple
}
else if(PlayerToPointStripped(1, playerid,1352.1194,-1759.2534,13.5078, cx,cy,cz))
{//24/7 near PD Entrance
GameTextForPlayer(playerid, "~w~24/7", 5000, 1);
SetPlayerInterior(playerid, 6);
SetPlayerPos(playerid,-26.6916,-55.7149,1003.5469);
PlayerInfo[playerid][pInt] = 6;
}
else if(PlayerToPointStripped(1, playerid,-27.3919,-58.2529,1003.5469, cx,cy,cz))
{//24/7 near PD Exit
GameTextForPlayer(playerid, "~w~San Francisco", 5000, 1);
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid,1352.3282,-1755.4298,13.3542);
PlayerInfo[playerid][pInt] = 0;
}
Dans la sortie, tu vois que le position ( SetPlayerPos ) n'est pas le même que PlayerToPointStripped ( ne t'occupe pas de Stripped et de cx,cy, cz, si tu utilises PlayerToPoint )
La position du SetPlayerPos de la sortie est hors du champs du PlayerToPoint ( qui est ici une position précise, vu que le rayon est de 1).
Donc quand ton joueur sera dehors, il ne sera pas TP à l'intérieur, car il n'est pas TP dans le champs du PlayerToPoint, qui est la condition pour entrer dans l'auto école.
Mais j'ai vu ton autre post, et à je crois avoir vu que ton champs est de 8, essaye d'abords la solution de 2, en mettant pour tester la valeur 1.
-
Je t'explique ce que je voudrais :
Déplacer l'auto école de San Fierro avec l'intérieur (Coordonnée de l'intérieur : -2031.1196,-115.8287,1035.1719) à Los Santos.
Donne moi les lignes dans mon GM (Godfather), que je dois modifier..Etc ?
:-[
-
Alors pour déplacer.
Si les instructeur spawn dans l'auto école, de ce côté, y'a rien a modifier.
Pour les entré/sortie, tu as besoin de 4 positions.
1. Position d'entré ( la ou le joueur doit aller pour entrer )
2. Position de spawn après l'entré ( la ou le joueur se trouve après être entré, plus loin du points ou il devra aller pour sortie )
3. Position de sortie ( la ou le joueur ira pour sortie )
4. Position de spawn après la sortie ( la ou le joueur se trouve après être sortie, plus loin du poitns ou il devra aller pour entré )
Et tu modifies ces positions dans le codes, le même style que celui d'avant ( voir plus haut )
-
Ok je vois...je vais essayé ::)
Le code est celui là :
}
else if(PlayerToPointStripped(1, playerid,1352.1194,-1759.2534,13.5078, cx,cy,cz))
{//24/7 near PD Entrance
GameTextForPlayer(playerid, "~w~24/7", 5000, 1);
SetPlayerInterior(playerid, 6);
SetPlayerPos(playerid,-26.6916,-55.7149,1003.5469);
PlayerInfo[playerid][pInt] = 6;
}
else if(PlayerToPointStripped(1, playerid,-27.3919,-58.2529,1003.5469, cx,cy,cz))
{//24/7 near PD Exit
GameTextForPlayer(playerid, "~w~San Francisco", 5000, 1);
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid,1352.3282,-1755.4298,13.3542);
PlayerInfo[playerid][pInt] = 0;
}
??
-
Non ça c'est un exemple.
Tu dois changé dans ton script par toi même.
Si tu es dans un LARP je crois, c'est dans public CheckForWalkingTeleport.
Tu cherche le code où tu es téléporté à l'exterieur de ton auto école.
PAR EXEMPLE : celui là :
else if(PlayerToPointStripped(1, playerid,-27.3919,-58.2529,1003.5469, cx,cy,cz))
{//24/7 near PD Exit
GameTextForPlayer(playerid, "~w~San Francisco", 5000, 1);
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid,1352.3282,-1755.4298,13.3542);
PlayerInfo[playerid][pInt] = 0;
}
Ce qui est en rouge est la position à l'interieur de l'auto école, là où il doit se mettre pour être téléporté à l'exterieur.
Ce qui est en vert est la position où il va spawn à l'exterieur de l'auto école. C'est donc ici que tu dois changer par une position plus éloignée. Tu vas dans le jeu, tu tape /save un peu plus devant et tu as la position, voilà.
En éspérant t'avoir aidé, ;)
-
Tu peux m'avoir beaucoup aidé
Mais le soucis, c'est que je suis sur un Godfather (Celui d'origine), et il y a pas "CheckForWalkingTeleport"...Etc
Je fais comment ?