• 22 Avril 2025, 21:15:39


Auteur Sujet: Pickup Ramassable uniquement en vehicule  (Lu 2923 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne vitry_selkato

  • *
  • Tueur en série
  • Thug Life Style - Vie de voyous Virtuel
  • Messages: 174
    • Voir le profil
    • http://www.thuglifestyle.1x.net/
Pickup Ramassable uniquement en vehicule
« le: 07 Juin 2011, 01:49:48 »
Alors voila mon problème,

Je crée un
new repveh = 0; // je crée une variable

Ensuite
repveh01 = CreatePickup(3096, 14, 3033.2534,-2540.4958,32.5260, -1); // ce que fait la variable

dans la callback des pickup j'ajoute ça
if (pickupid == repveh01)
{
new vid = GetPlayerVehicleID(playerid);
if (vid) RepairVehicle(vid);
GameTextForPlayer(playerid, "~r~~h~Reparation du vehicule ~n~~n~~h~Terminer", 1000, 3);
}

Aucun warning concernant ce pickup
Aucune erreur.

Lors de ma connexion sur le serveur je vais voir l'emplacement des pickups
Aucun sauf un tout piti piti piti clignotement des pickups apres plus rien
 [uniquement ramassable par un vehicule] (type: 14)
Sur sa:mp il marque qu'il faut crée un objet a la place du CreatePickup
ou alors j'ai mal compris la j'ai des warning en plus mais même résultat .
Voilà pourquoi je vien demander votre atention sur mon script,
Surment oublier un truc ou un truc qu'il faut faire autrement je ne sait pas .

J'ai 11 pickup identique a celui la 01 ... 11
un autre pickup ramassable uniquement par vehicule
ne s'affiche pas non plus mais il est pret des 11 autre pickup.
J'ai retiré 1 sur 1 rien n'y fait ..
« Modifié: 07 Juin 2011, 01:52:56 par vitry_selkato »

Hors ligne Brian Turner

  • PAWN/PHP/SQL/MAP/SQUIRIEL
  • *
  • Bandit
  • Messages: 438
    • Voir le profil
Re : Pickup Ramassable uniquement en vehicule
« Réponse #1 le: 07 Juin 2011, 07:58:58 »
Salut,

Pourquoi
Code: (pawn) [Sélectionner]
new repveh = 0; // je crée une variable mais:
Code: (pawn) [Sélectionner]
new repveh01; // je crée une variable
Ensuite
Code: (pawn) [Sélectionner]
if (pickupid == repveh01)
{
new vid = GetPlayerVehicleID(playerid);
RepairVehicle(vid); // d'apres se que je me souviens, si on met juste if(vid), sa verifi si vid est egale a true ou 1, donc si l'id du veh est 2 sa marchera pas.
GameTextForPlayer(playerid, "~r~~h~Reparation du vehicule ~n~~n~~h~Terminer", 1000, 3);
}
Momoto33127
__________________________________________
[TRADUCTION][FS]Celular call 1.5 : Voir le poste
[ADDON/INC]Motor System (/clef et /vsortir pour Gveh) : Voir le poste
[FS]BanList (BlackListe) [Systeme de BAN] : Voir le poste

Hors ligne vitry_selkato

  • *
  • Tueur en série
  • Thug Life Style - Vie de voyous Virtuel
  • Messages: 174
    • Voir le profil
    • http://www.thuglifestyle.1x.net/
Re : Pickup Ramassable uniquement en vehicule
« Réponse #2 le: 07 Juin 2011, 12:45:27 »
J'ai récupéré , les fonctions sur une de mes commandes /repare .
Je vais test d'enlever le
= 0;
pour la variable du haut.

______________________
Re , alors j'ai ajouter les enlever les = 0;
Même résultat il clignote une fois et apres tu voit plus.

Je pense que c'est peut être a cause du SuperStream.
« Modifié: 07 Juin 2011, 13:20:17 par vitry_selkato »

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Pickup Ramassable uniquement en vehicule
« Réponse #3 le: 07 Juin 2011, 14:09:17 »
regarde bien la reponse de Brian Turner il a raison
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne vitry_selkato

  • *
  • Tueur en série
  • Thug Life Style - Vie de voyous Virtuel
  • Messages: 174
    • Voir le profil
    • http://www.thuglifestyle.1x.net/
Re : Pickup Ramassable uniquement en vehicule
« Réponse #4 le: 07 Juin 2011, 14:10:46 »
J'ai enlever le
= 0;
remplacer par:
new repveh01;

J'ai enlever les
if (vid)

ce qui me donne au final ça
if (pickupid == repveh01)
{
new vid = GetPlayerVehicleID(playerid);
RepairVehicle(vid);
GameTextForPlayer(playerid, "~r~~h~Reparation du vehicule ~n~~n~~h~Terminer", 1000, 3);
}

Mais , l'affichage des pickups , comme (type:14) n'apparais pas sur mon serveur ...
« Modifié: 07 Juin 2011, 14:44:02 par vitry_selkato »

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Pickup Ramassable uniquement en vehicule
« Réponse #5 le: 07 Juin 2011, 18:39:14 »
@Brian Turner: Depuis quand attribuer une valeur directement lors de la déclaration de la variable peut rendre faux un code ?
Ensuite, if(vid) est vrai si vid si elle contient tous sauf 0, et pas si vid vaut 1 ou encore, true.
Je te dis donc que ce que tu dis est faux !

Hors ligne vitry_selkato

  • *
  • Tueur en série
  • Thug Life Style - Vie de voyous Virtuel
  • Messages: 174
    • Voir le profil
    • http://www.thuglifestyle.1x.net/
Re : Pickup Ramassable uniquement en vehicule
« Réponse #6 le: 07 Juin 2011, 20:57:12 »
Mais dans tout ça , aucune soluce ?

Hors ligne Brian Turner

  • PAWN/PHP/SQL/MAP/SQUIRIEL
  • *
  • Bandit
  • Messages: 438
    • Voir le profil
Re : Pickup Ramassable uniquement en vehicule
« Réponse #7 le: 08 Juin 2011, 14:57:46 »
Citer
@Brian Turner: Depuis quand attribuer une valeur directement lors de la déclaration de la variable peut rendre faux un code ?

J'ai pas dis que c'était faux, mais cela ne sers a rien.

Pour le if(variable) je savais pas, je pense que c'était juste si c'est 1(donc true) alors on fait la condition.

Mais de toute facon, le trucs que je lui est dit(donc le =0;, if(vid)) mieux vaux les enlever, sa ne sers a rien.
Momoto33127
__________________________________________
[TRADUCTION][FS]Celular call 1.5 : Voir le poste
[ADDON/INC]Motor System (/clef et /vsortir pour Gveh) : Voir le poste
[FS]BanList (BlackListe) [Systeme de BAN] : Voir le poste

Hors ligne vitry_selkato

  • *
  • Tueur en série
  • Thug Life Style - Vie de voyous Virtuel
  • Messages: 174
    • Voir le profil
    • http://www.thuglifestyle.1x.net/
Re : Pickup Ramassable uniquement en vehicule
« Réponse #8 le: 08 Juin 2011, 23:53:50 »
C'est Syg , qui ma conseiller de mettre
= 0;
a la fin de ma variable

Ensuite , le code est bon , le probléme c'est l'affichage des pickups ,
Ramassable que pour les vehicules.
Il ne s'affiche pas .
Et il ne font aucun effet.

(faudrez déjà qu'il s'affiche pour faire l'effet).

Et je vien pour demander de l'aide pas pour, consulter vos débat.

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Pickup Ramassable uniquement en vehicule
« Réponse #9 le: 09 Juin 2011, 16:47:44 »
Comme on dit : "On est jamais mieux servi que par soi-même".

Donc, on oublie le type 14 et on passe au type 1 = pickup qui ne fait rien d'autre que d'envoyer l'événement OnPlayerPickupPickup.
Et c'est justement dans cette callback qu'on va faire, nous-mêmes, tout le boulot (d'où la première phrase de ce post).

Il suffit, après avoir testé que c'est le bon pickup, de tester que le joueur est dans un véhicule (IsPlayerInAnyVehicle). Si c'est le cas, on fait un SetVehicleHealth du véhicule du joueur (GetPlayerVehicleId). Sinon, on ne fait rien.
Et comme ce pickup ne disparait pas, il n'y a rien d'autre à faire (à part peut-être jouer un son pour prévenir le joueur).

A moins qu'on veuille justement qu'il disparaisse. Auquel cas, il suffira d'appeler DestroyPickup après avoir réparer le véhicule. Puis lancer un timer qui recréera le pickup quelques instants après.
Rien de bien compliqué mais on maîtrise totalement le comportement du pickup.

++
Syg
Courtesy of GtaManiac

Hors ligne vitry_selkato

  • *
  • Tueur en série
  • Thug Life Style - Vie de voyous Virtuel
  • Messages: 174
    • Voir le profil
    • http://www.thuglifestyle.1x.net/
Re : Pickup Ramassable uniquement en vehicule
« Réponse #10 le: 10 Juin 2011, 23:51:23 »
J'ai un probléme , je doit mal les placer,

if (pickupid == repveh01)
{
new repveh01 = GetPlayerVehicleId(playerid);
IsPlayerInAnyVehicle(playerid);
SetVehicleHealth(playerid, 100, repveh01);
GameTextForPlayer(playerid, "~r~~h~Reparation du vehicule ~n~~n~~h~Terminer", 1000, 3);
}

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Pickup Ramassable uniquement en vehicule
« Réponse #11 le: 10 Juin 2011, 23:54:12 »
Tu fais n'importe quoi, tu ne comprends même pas ce que tu fais, tu bâcle ce que tu fais, comment veut-tu y arriver ?

IsPlayerInAnyVehicle(playerid);
À quoi te sert d'appeler cette fonction si tu n'utilise pas sa valeur de retour pour vérifié si le joueur est belle est bien dans un véhicule ?

Hors ligne vitry_selkato

  • *
  • Tueur en série
  • Thug Life Style - Vie de voyous Virtuel
  • Messages: 174
    • Voir le profil
    • http://www.thuglifestyle.1x.net/
Re : Pickup Ramassable uniquement en vehicule
« Réponse #12 le: 10 Juin 2011, 23:55:17 »
Je n'ai pas compris , comment le placer ..
« Modifié: 10 Juin 2011, 23:59:39 par vitry_selkato »

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Pickup Ramassable uniquement en vehicule
« Réponse #13 le: 11 Juin 2011, 01:02:01 »
Salut,

pour qu'un code s'exécute ou non en fonction d'une condition qu'utilise t'on?

Si on traduit ce que tu veut dans un français fonctionnel:
Citer
Si «Le joueur est dans un véhicule»
alors :
    On répare son véhicule
    On lui envoie le message indiquant la réparation du véhicule
Sinon :
    On ne fait rien
FIN

Maintenant, sachant que le langage de programmation est en anglais, si devient if.
On retrouve donc cette structure:

Citer
IF «Le joueur est dans un véhicule»
    On répare son véhicule
    On lui envoie le message indiquant la réparation du véhicule
END

Sachant que «Le joueur est dans un véhicule» correspond à l'appel de la fonction IsPlayerInAnyVehicle et que l'on doit mettre des accolades pour regrouper des instructions:

Citer
if( IsPlayerInAnyVehicle( ... ) )
{
    On répase son véhicule
    On lui envoie le message indiquant la réparation du véhicule
}

Je pense que tu saura te débrouiller pour intégrer ceci à ton code...sinon, shame on you!

++Sim++





Hors ligne vitry_selkato

  • *
  • Tueur en série
  • Thug Life Style - Vie de voyous Virtuel
  • Messages: 174
    • Voir le profil
    • http://www.thuglifestyle.1x.net/
Re : Pickup Ramassable uniquement en vehicule
« Réponse #14 le: 11 Juin 2011, 01:46:06 »
Merci Sim,

j'ai donc fait ,
if (pickupid == repveh01 , (IsPlayerInAnyVehicle(playerid)))
{
SetVehicleHealth(playerid, 100);
GameTextForPlayer(playerid, "~r~~h~Reparation du vehicule ~n~~n~~h~Terminer", 1000, 3);
}

Aucune erreure aucun warning
Je test Le pickup n'as toujours aucun effet,
donc
 
jajoute
GetPlayerVehicleId(playerid);
ce qui fait que j'ai ça :
if (pickupid == repveh01 , (IsPlayerInAnyVehicle(playerid)))
{
GetPlayerVehicleId(playerid);
SetVehicleHealth(playerid, 100);
GameTextForPlayer(playerid, "~r~~h~Reparation du vehicule ~n~~n~~h~Terminer", 1000, 3);
}

Il me marque
error 017: undefined symbol "GetPlayerVehicleId"