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

Titre: Retourner à la place ou l'on étais ?
Posté 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.
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: cristab le 19 Novembre 2009, 09:37:33
en gros tu veut connaitre sa place dans le vehicule ?
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: sizeof(Raw); le 19 Novembre 2009, 09:41:29
Oui, et donc le retéléporté à la place ou il étais quand il est sorti.
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: cristab le 19 Novembre 2009, 09:43:27
tu peu te servire du GetPlayerState

Citer
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
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: sizeof(Raw); le 19 Novembre 2009, 09:45:34
Okay, je vais essayé, mais pour les passager de derrière, c'est pareil ?
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: cristab le 19 Novembre 2009, 09:49:20
ben la apparemment ce n'est pas faisable
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: sizeof(Raw); le 19 Novembre 2009, 09:52:55
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.

Titre: Re : Retourner à la place ou l'on étais ?
Posté par: cristab le 19 Novembre 2009, 10:11:29
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]);
   }
}
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: Syg le 19 Novembre 2009, 10:40:15
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
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: cristab le 19 Novembre 2009, 10:44:52
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 :)
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: sizeof(Raw); le 19 Novembre 2009, 11:13:36
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)
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: cristab le 19 Novembre 2009, 11:19:37
bizard
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: sizeof(Raw); le 19 Novembre 2009, 11:24:41
Faut pas faire genre un New State; ou un truc dans le genre ??  :-*
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: cristab le 19 Novembre 2009, 12:06:01
dans quel callback tu la mis ce code ?
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: sizeof(Raw); le 19 Novembre 2009, 12:17:44
Dans la callback

public OnPlayerExitVehicle(playerid, vehicleid)
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: cristab le 19 Novembre 2009, 12:40:05
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

Titre: Re : Retourner à la place ou l'on étais ?
Posté par: sizeof(Raw); le 19 Novembre 2009, 13:07:47
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
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: cristab le 19 Novembre 2009, 14:39:35
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
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: sizeof(Raw); le 19 Novembre 2009, 15:40:23
if(oldtstats == 2 && newstats == 1 && ceinture[playerid]==1)
{
PutPlayerInVehicle(playerid, oldvehid, 1);
}

sa serais comme ça alors ?
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: S!m le 19 Novembre 2009, 15:51:26
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++
Titre: Re : Retourner à la place ou l'on étais ?
Posté par: sizeof(Raw); le 19 Novembre 2009, 15:57:45
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.