GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: sizeof(Raw); le 19 Novembre 2009, 09:33:59
-
Bonjour,
Je suis actuellement en train de faire un autre FS pour vous, bref
Ceinture[playerid] = 1;
PutPlayerInVehicle(playerid, oldvehid, 1);
Ce code veut dire que si la personne a la ceinture, il retourne à la place "1", mais je voudrais faire en sorte qu'il retourne à la place ou il étais, donc par exemple : 1 2 3 4.. j'aimerais un p'tit coup de main,
Merci.
-
en gros tu veut connaitre sa place dans le vehicule ?
-
Oui, et donc le retéléporté à la place ou il étais quand il est sorti.
-
tu peu te servire du GetPlayerState
0 Empty (while initializing) - "PLAYER_STATE_NONE"
1 Player is on foot - "PLAYER_STATE_ONFOOT"
2 Player is driver of a vehicle - "PLAYER_STATE_DRIVER"
3 Player is passenger of a vehicle - "PLAYER_STATE_PASSENGER"
7 Player is wasted or on class selection - "PLAYER_STATE_WASTED"
8 Player is spawned - "PLAYER_STATE_SPAWNED"
9 Player is spectating - "PLAYER_STATE_SPECTATING"
en gras les deux qui t'interesse
-
Okay, je vais essayé, mais pour les passager de derrière, c'est pareil ?
-
ben la apparemment ce n'est pas faisable
-
Bon ok bref je vais le faire juste pour le conducteur et le passager, je croyais qu'il y avais une fonction genre : oldstat ou un truc du genre, bref
J'ai ça :
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
PutPlayerInVehicle(playerid, oldvehid, 1);
}
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
{
PutPlayerInVehicle(playerid, oldvehid, 2);
}
ça me sort juste de la voiture, ça ne me remet pas dans celle-ci.
-
tu doit parler de celle ci http://wiki.sa-mp.com/wiki/OnPlayerStateChange (http://wiki.sa-mp.com/wiki/OnPlayerStateChange)
oldvehid coorespond a l'ancien vehicule ?
donc tu doit avoir ceci
if(newstate == 2)
{
oldvehid[playerid] = GetPlayerVehicleID(playerid);
if(PLAYER_STATE_DRIVER)
{
place[playerid] = 1;
}
else if(PLAYER_STATE_PASSENGER)
{
place[playerid] = 2;
}
}
else if(newstate == 1 && oldstate==2)
{
if(ceinture[playerid] == 1)
{
PutPlayerInVehicle(playerid, oldvehid[playerid],place[playerid]);
}
}
-
Il existe maintenant cette fonction GetPlayerVehicleSeat qui renvoie le siège où le joueur est assis.
Je pense que c'est celle-ci que tu cherches.
Le retour de cette fonction peut directement être utilisé dans PutPlayerInVehicle.
++
Syg
-
aa pas mal elle m'avais echaper celle la http://wiki.sa-mp.com/wiki/GetPlayerVehicleSeat (http://wiki.sa-mp.com/wiki/GetPlayerVehicleSeat) voila le lien
Merci syg :)
-
if(newstate == 2)
{
PutPlayerInVehicle(playerid, oldvehid, 1);
}
if(newstate == PLAYER_STATE_DRIVER)
{
PutPlayerInVehicle(playerid, oldvehid, 2);
}
Voici ce que j'ai mis :
Les erreurs sont les suivantes :
C:\Users\\Desktop\«[FR]» « San Francisco » «[RP]»\gamemodes\sfrp.pwn(7756) : error 017: undefined symbol "newstate"
C:\Users\\Desktop\«[FR]» « San Francisco » «[RP]»\gamemodes\sfrp.pwn(7756) : error 017: undefined symbol "newstate"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
Les lignes sont les suivantes :
7756 : if(newstate == 2)
7760 if(newstate == PLAYER_STATE_DRIVER)
-
bizard
-
Faut pas faire genre un New State; ou un truc dans le genre ?? :-*
-
dans quel callback tu la mis ce code ?
-
Dans la callback
public OnPlayerExitVehicle(playerid, vehicleid)
-
ahhh nan pas la ^^
http://wiki.sa-mp.com/wiki/OnPlayerStateChange (http://wiki.sa-mp.com/wiki/OnPlayerStateChange)
public OnPlayerStateChange(playerid, newstate, oldstate)
j'aurais du le preciser desoler
-
Oui mais si je la met dans cette callback, ça ne marchera pas, vu que c'est normalement quand on sors du véhicule :s
-
if(oldtstats == 2 && newstats == 1 && ceinture[playerid]==1)
si anciennement il est dans un vehicule est qu'il est desormer en dehors puis si il a sa ceinture
-
if(oldtstats == 2 && newstats == 1 && ceinture[playerid]==1)
{
PutPlayerInVehicle(playerid, oldvehid, 1);
}
sa serais comme ça alors ?
-
Salut,
effectivement, ca devrait être ça.
Par contre, je te conseillerais d'utiliser les constante correspondantes (PLAYER_STATE_DRIVER, PLAYER_STATE_PASSENGER et PLAYER_STATE_ONFOOT)
aussi fais bien attention, les variables se nomment newstate et oldstate et non pas newstats et oldstats
++Sim++
-
if(oldstate == 2 && newstate == 1 && Ceinture[playerid]==1)
{
PutPlayerInVehicle(playerid, oldvehid, 1);
}
J'ai bientôt fini mon FS : il consiste un système de ceinture, et si la personne n'as pas la ceinture lors d'un accident elle est éjectée. Pour l'instant tout marche, je vais essayé le bout de code que vous m'avez donné.
Raw.