GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: LePtitClown le 06 Avril 2009, 20:12:43

Titre: Véhicule réservé aux joueurs riches
Posté par: LePtitClown le 06 Avril 2009, 20:12:43
Salut, je cherche à réaliser un FS pour que certains véhicules soient réservés aux joueurs riches comme par exemple ici un kart à 500 000$$$
Voila où j' en suis ( il y a des erreur et je ne trouve pas comment éjecter le joueur si il n'a pas l'argent nécessaire

Voici le début de code:

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
   if(carid == 571)
   {
      if(GetPlayerMoney(playerid) = 500000);
      {
         if (newstate == 2)// test si le joueur s'assoit a la place du conducteur .
         {
                           SendClientMessage(playerid,COLOR_DARKRED, "Bienvenue dans ce kart, roulez prudemment");
                          }
         return 1;
      }
   }
}
   else if (GetPlayerMoney(playerid) < 500000);
   {
   SendClientMessage(playerid,COLOR_DARKRED, "(!) Tu n'as pas assez d'argent pour pouvoir utiliser ce kart !!)");
   //il faudrait rajouter la fonction pour éjecter le joueur si il n'a pas l'argent
   }
   return 1;
}

Après je suis perdu
A++
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: » Lukubi™ le 06 Avril 2009, 20:27:36
Il faut que tu utilise la fonction :

RemovePlayerFromVehicle

++
MrT®
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: LePtitClown le 06 Avril 2009, 21:25:56
Merci pour cette réponse mais je le met où RemovePlayerFromVehicle et il m'écrive 5 erreur aussi

erreurs:
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(37) : error 017: undefined symbol "carid"
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : warning 211: possibly unintended assignment
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : error 022: must be lvalue (non-constant)
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : warning 215: expression has no effect
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : error 001: expected token: ";", but found ")"
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : error 029: invalid expression, assumed zero
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase

5 Errors.
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: ApocKalipsS le 06 Avril 2009, 21:45:13
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
   if(carid == 571)
   {
         if(GetPlayerMoney(playerid) >= 500000);
         {
             if (newstate == 2)// test si le joueur s'assoit a la place du conducteur .
             {
                              SendClientMessage(playerid,COLOR_DARKRED, "Bienvenue dans ce kart, roulez prudemment");
             }
         }else if (GetPlayerMoney(playerid) < 500000);
      {
                     SendClientMessage(playerid,COLOR_DARKRED, "(!) Tu n'as pas assez d'argent pour pouvoir utiliser ce kart !!)");
                     RemovePlayerFromVehicle(playerid);
      }
   }
}
 


Je penses que ca va marcher.
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: LePtitClown le 06 Avril 2009, 22:06:20
Non encore plus d'erreurs ( 7 erreurs ) merci quand même
Ma fonction a peut être une problème dès le début...
Là je suis perdu pourtant quand j' ai pensé à cette fonction je pensais qeu ça n'allait pas être diffile

Si quelqu'un sait d'où vient le problème.... Merci de répondre

A++
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: MrFredo le 06 Avril 2009, 22:31:28
On ne met pas de ; a la fin d'une condition ....
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: LePtitClown le 06 Avril 2009, 22:44:31
Toujours des erreurs quelq'un ne connaitrais pas un FS où je pourrai m'inspirer pour mon FS??
Je viens de wiki samp ils ne font pas comme ça ça ressemble à ça peut être que ça vous parle plus:

code:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
   if(carid == 571)
   {
      if(GetPlayerMoney(playerid) >= 500000);
      {
      PutPlayerInVehicle ( playerid, vehicleid, 0 );
      SendClientMessage(playerid,COLOR_DARKRED, "Bienvenue dans ce kart, roulez prudemment");
        return 1 ;
   }
}

public OnPlayerUpdate(playerid)
{
    if(carid == 571)
    {
       if(GetPlayerVehicleID(playerid) == 1 && GetPlayerMoney(playerid) <500000)
       SendClientMessage(playerid,COLOR_DARKRED, "(!) Tu n'as pas assez d'argent pour pouvoir utiliser ce kart !!)");
       {
        RemovePlayerFromVehicle(playerid);
       }
      return 1;
   }
}


erreurs:

C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(37) : error 017: undefined symbol "carid"
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(39) : error 036: empty statement
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(47) : warning 217: loose indentation
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(47) : error 029: invalid expression, assumed zero
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(47) : error 004: function "OnPlayerUpdate" is not implemented
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(49) : error 017: undefined symbol "carid"
C:\DOCUME~1\PROPRI~1\Bureau\SAMP02~1.WIN\FILTER~1\tank.pwn(84) : error 030: compound statement not closed at the end of file (started at line 37)

A++
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: MrFredo le 06 Avril 2009, 22:54:08
Bon voila comment tu doit ti prendre

Premierement oublie la fonction OnPlayerEnterVehicle pour la simple et bonne raison qu'elle est appeler a chaque fois que tu appuie sur la touche pour entrer dans une caisse (donc si quelqu'un apppuie 3 fois dessu il aura 3 fois le message)

Personnelement je te conseile plutôt d'utiliser OnPlayerStateChange

Ce qui donnerai un truc dans ce style

Code: (pawn) [Sélectionner]
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER) // Si le joueur est dans l'etats de conducteur
{
    new vehicleid = GetPlayerVehicleID(playerid); // On recupere l'id du vehicule dans lequel est le joueur
    if(vehicleid == 571) // Si l'id du vehicule est l'id 571
    {
    if(GetPlayerMoney(playerid) >= 500000)//Si le joueur a 500000$ ou plus
    {
        SendClientMessage(playerid,COLOR_DARKRED, "Bienvenue dans ce kart, roulez prudemment"); // On l'autorise a utiliser le vehicule
    }
    else // Sinon
    {
      SendClientMessage(playerid,COLOR_DARKRED, "(!) Tu n'as pas assez d'argent pour pouvoir utiliser ce kart !!"); // On lui refuse d'utiliser le vehicule
          RemovePlayerFromVehicle(playerid); // On sort le joueur du vehicule
    }
     }
}
return 1;
}

 C'est une petite ebauche rien ne t'empeche d'ameliorer mais c'est pour te montrer le principe ;)
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: S!m le 07 Avril 2009, 03:30:24
Salut,

j'ajouterais que vous utilisiez une variable non-déclarée, le carid n'existe pas dans la callback (il s'agit peut-être d'une variable globale pour certains mais elle demeure néanmoins inutile, ce qui n,est pas ton cas ), vous devriez utiliser vehicleid

et en passant, à moins de savoir ce que tu fais, NE PLACE PAS DE CODE DANS OnPlayerUpdate

++Sim++
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: LePtitClown le 07 Avril 2009, 11:49:53
MrFredo ton script marche nickel, un grand merci à toi  :cheers

Par contre j'ai du modifié l'ID du véhicule je ne sais pas trop pouquoi
J'ai un petit script qui permet de donner l'ID d'un véhicule dans le jeu
code:
//pour avoir l'id des véhicules
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
{
printf("Lorsqu'une personne rentre dans un véhicule(%d, %d, %d)", playerid, vehicleid, ispassenger);
new string[255];
format(string, sizeof(string), "VoitureId: %d !",vehicleid);
SendClientMessage(playerid, COLOR_AQUA, string);
}
return 1;
}

Avec ce script, dans le jeu l'ID de kart est alors de 164 ( c'est ce que j'ai du changé pour que ça marche )
Mais pourtant dans les add vehicule l'ID n est pas la même, je me demande pourquoi?
AddStaticVehicle(571,2295.2468,2479.8591,10.1042,180.2029,51,53); // kart de la police

A++
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: MrFredo le 07 Avril 2009, 12:11:54
Alor il ya une grande diference en l'id du vehicule qui est sont  numero dans la liste de t'est vehicule sur ton serveur et le modelid qui est le model de vehicule

Exemple

Code: (pawn) [Sélectionner]
public OnGameModeInit()
{
      AddStaticVehicle(411,....) // Vehicule id 1
      AddStaticVehicle(560,....) // vehicule id 2
}

Alor que ici plu haut 411 et 560 sont les modelid c'est a dire le model de vehicule , pour obtenir le modelid d'un vehicule il sufit alor d'utiliser GetVehicleModel
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: LePtitClown le 07 Avril 2009, 12:14:03
Je ne savais pas  :)
A++
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: Dark4ng3L le 07 Avril 2009, 13:17:08
c'est une bonne idée que tu a eu la xD

Gg


++
lugia
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: LePtitClown le 07 Avril 2009, 13:24:10
J'ai eu cette idée car beaucoup de joueurs aiment utiliser des véhicules tel que les tanks mais quand trop de joueurs les utilisent ça devient énevrant donc c'est un bon petit compromis

A++

Double post
Encore un petit problème, j'ai essayer de rajouter un autre véhicule payant mais il m'affiche des erreurs
que faut t-il mettre quand on a deux if d'affilé
( c'est le même code que en haut à mettre en dessous en chnageant l id du véhicule, le prix e l'emplacement )
il faut mettre un else if / if / else ??

A++
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: Dark4ng3L le 07 Avril 2009, 17:10:57
faut que tu fasse une else if
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: LePtitClown le 07 Avril 2009, 22:03:42
le else if ne change rien ( il rajoute juste des erreurs lors de la compilation )

Si quelqu'un a une réponse à ma question.. Merci de répondre

A++ :)
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: S!m le 08 Avril 2009, 00:24:29
Salut,

code intelligemment, au lieu d'ajouter une condition, sert toi d'un opérateur de la liste ...TUTO (http://www.gtaonline.fr/forums/index.php/topic,6175.0.html)

indice: il contient plus d'une barre verticale!!!

++Sim++
Titre: Re : Véhicule réservé aux joueurs riches
Posté par: LePtitClown le 09 Avril 2009, 11:38:26
Salut

Merci, ça marche

A++