• 22 Avril 2025, 19:21:55


Auteur Sujet: DropHealth ne fonctionne pas  (Lu 1294 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Tmas

  • *
  • Criminel
  • Messages: 27
    • Voir le profil
DropHealth ne fonctionne pas
« le: 30 Avril 2011, 03:06:55 »
Bonsoir, j'ai récupéré un bout de code de cristab qui sert à drop un item de vie, mais voilà quand je drop l'item après avoir tué le joueur je n'obtiens pas de vie en plus
le code:

DropHealth(playerid)
{
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid, X, Y, Z);
CreatePickup ( 1240, 19, X, Y, Z );
printf("pickupcree %f %f %f",X,Y,Z);
}

dans le OnPlayerDeath:
if (killerid != INVALID_PLAYER_ID)
{
   DropHealth(playerid);
}

source: http://www.gtaonline.fr/forums/index.php/topic,2149.135.html

Si quelqu'un pouvez m'aider à mieux comprendre pourquoi cela ne fonctionne pas, merci d'avance.

Cordialement,
Tmas.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : DropHealth ne fonctionne pas
« Réponse #1 le: 30 Avril 2011, 03:33:23 »
Cela est tout-à-fait normal, tu ne créer qu'un pickup, mais tu créer pas d’évènement quand un autre joueur passe sur celui-ci ;).

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : DropHealth ne fonctionne pas
« Réponse #2 le: 30 Avril 2011, 09:26:11 »
regarde les callback coorespondant au pickup
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 Tmas

  • *
  • Criminel
  • Messages: 27
    • Voir le profil
Re : DropHealth ne fonctionne pas
« Réponse #3 le: 30 Avril 2011, 11:20:13 »
Ok je vois mais quel callback ajouterais de la vie au drop ?
DropHealth(playerid)
{
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid, X, Y, Z);
CreatePickup ( 1240, 19, X, Y, Z );
printf("pickupcree %f %f %f",X,Y,Z);
        SetPlayerHealth(playerid, 100);

}
comme sa?
merci pour votre aide.
« Modifié: 30 Avril 2011, 11:22:37 par Tmas »

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : DropHealth ne fonctionne pas
« Réponse #4 le: 30 Avril 2011, 11:33:04 »
Je penserais à un tableau qui contiendrait tous les identificateurs (aussi appelé index ou encore id).
Ensuite, lorsqu'un joueur entre dans un pickup, tu lance une boucle qui vérifie si le pickup qui est prit est dans le tableau, et si oui, tu lui augmente sa vie, sinon, tu fais rien :P.

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : DropHealth ne fonctionne pas
« Réponse #5 le: 30 Avril 2011, 11:33:43 »
Non, il y a un évènement appelé lorsque le joueur passe sur le pickup (OnPlayerPickUpPickup)
Mais je crois que même sans passer par cet event, le pickup donne de la vie. Le problème, c'est qu'en 2e paramètre, il y a 19 : "Pickupable, but has no effect (information icons?)" (http://wiki.sa-mp.com/wiki/PickupTypes)
Donc, ton pickup peut être ramassé, mais il n'y a aucun effet. Essaye avec le mode n°4, qui apparemment permet au pickup d'être détruit quelques secondes après avoir été créé.
++

EDIT : D'ailleurs, si ça fonctionne sans devoir passer par l'event, utilise plutôt AddStaticPickup qui ne retourne pas d'ID (léger gain de mémoire ?) et qui se contente juste de créer un pickup.
« Modifié: 30 Avril 2011, 11:35:32 par Gilux »

Hors ligne Tmas

  • *
  • Criminel
  • Messages: 27
    • Voir le profil
Re : DropHealth ne fonctionne pas
« Réponse #6 le: 30 Avril 2011, 11:53:38 »
bon voila le code que j'ai fait grâce a tes infos

new vie;
public OnPlayerDeath(playerid, killerid, reason)
{
    cash = CreatePickup(1274, 2, 0.0, 0.0, 9.0);
    return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
    if(pickupid == vie) SetPlayerHealyh(playerid,100);
    return 1;
}


sa peut le faire?

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : DropHealth ne fonctionne pas
« Réponse #7 le: 30 Avril 2011, 11:57:23 »
Pourquoi tu utilise la variable cash, elle n'existe pas !

Code: (Pawn) [Sélectionner]
new vie;

public OnPlayerDeath(playerid, killerid, reason)
{
vie = CreatePickup(1274, 2, 0.0, 0.0, 9.0);

return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == vie)
{
SetPlayerHealyh(playerid, 100);
}

return 1;
}

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : DropHealth ne fonctionne pas
« Réponse #8 le: 30 Avril 2011, 14:01:58 »
new vie;

public OnPlayerDeath(playerid, killerid, reason)
{
vie = CreatePickup(1274, 2, 0.0, 0.0, 9.0);

return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == vie)
{
SetPlayerHealth(playerid, 100.0);
}

return 1;
}

Une erreur c'est glissé dans votre code, sinon votre système ne fonctionnera qu'avec qu'un seul pickup, je vous conseil de faire ça avec des tableaux ^^

Un truc de ce genre, à tester http://pastebin.gtaonline.fr/pastebin.php?show=1081



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : DropHealth ne fonctionne pas
« Réponse #9 le: 30 Avril 2011, 17:43:47 »
Normalement, il n'y a même pas besoin d'utiliser cette partie :
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == vie)
{
SetPlayerHealth(playerid, 100.0);
}

return 1;
}

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : DropHealth ne fonctionne pas
« Réponse #10 le: 30 Avril 2011, 17:46:59 »
Ouais, sauf s'il veut mettre la vie à 100% ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Re : DropHealth ne fonctionne pas
« Réponse #11 le: 30 Avril 2011, 18:23:57 »
Ouais, sauf s'il veut mettre la vie à 100% ^^

Ah oui c'est vrai les pickups ne donnent qu'un peu de vie... autant pour moi  :P