• 05 Juin 2026, 20:50:20


Auteur Sujet: Problème avec un pickup  (Lu 2445 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne resame

  • *
  • Nouveau
  • Messages: 7
    • Voir le profil
Problème avec un pickup
« le: 25 Mars 2013, 18:11:25 »
Bonjour,
Voilà j'ai un problème avec un pickup.
Je voudrais que quand je suis sur le pickup un menu apparaisse, celà fait plusieurs jour que je suis coincé sur ce code.
j'ai fait un enum avec les dialogs
Code: (pawn) [Sélectionner]
<?php
enum
{
pickupaMilli
}

puis
Code: (pawn) [Sélectionner]
new pickupaMilli; Bon jusqu’à la je pense que tout est bon ^^

dans le OnGameModeInit
j'ai sa:
Code: (pawn) [Sélectionner]
pickupMilli = CreatePickup(1239, 2, 408.4558,2527.0054,16.5275,1);ps : j'ai aussi essayer avec AddStaticPickup

Et là mon OnPlayerPickUpPickup
Code: (pawn) [Sélectionner]

   if(pickupid == pickupMilli)
   {
   ShowPlayerDialog(playerid, pickupaMilli, DIALOG_STYLE_LIST, "Equipement millitaires", "AK47(250) [30000]\nGrenade(10) [15000]\nLance-roquette(10) [200000]\nGilet par balles [35000]\nMorphine [20000]\nDeagle [35000]", "Acheter", "Quitter");
   }
   return 1;
}

[spoiler]Ou cas ou je met OnDialogResponse
Code: (pawn) [Sélectionner]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch( dialogid )
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.\n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File,"data");
                INI_WriteInt(File,"Password",udb_hash(inputtext));
                INI_WriteInt(File,"Cash",0);
                INI_WriteInt(File,"Score",0);
                INI_WriteInt(File,"Admin",0);
                INI_WriteInt(File,"Kills",0);
                INI_WriteInt(File,"Deaths",0);
                INI_Close(File);


                ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");
            }
        }


        case DIALOG_LOGIN:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
                    GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
                    SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
                    ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok","");
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.\n"COL_WHITE"Type your password below to login.","Login","Quit");
                }
                return 1;
            }
        }
    }


 if(dialogid == pickupaMilli)
    {
        if(response)
        {
            if(listitem == 0)
            {
  if(GetPlayerMoney(playerid) >= 30000)
  {
                GivePlayerWeapon(playerid, 31, 250);
                GivePlayerMoney(playerid, -30000);
                SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà ton M4 !");
  }
  else if(GetPlayerMoney(playerid) <= 29999)
  {
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
  }
  return 1;
}
            if(listitem == 1)
            {
              if(GetPlayerMoney(playerid) >= 15000)
  {
                GivePlayerWeapon(playerid, 16, 10);
                GivePlayerMoney(playerid, -15000);
                SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà tes grenades camarades !");
  }
  else if(GetPlayerMoney(playerid) <= 14999)
  {
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
  }
  return 1;
}
            if(listitem == 2)
            {
              if(GetPlayerMoney(playerid) >= 200000)
  {
                GivePlayerWeapon(playerid, 36, 5);
                GivePlayerMoney(playerid, -200000);
                SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà ton HS rocket l'ami !");
  }
  else if(GetPlayerMoney(playerid) <= 199999)
  {
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
  }
  return 1;
}
if(listitem == 3)
{
              if(GetPlayerMoney(playerid) >= 35000)
  {
                SetPlayerArmour(playerid, 100.0);
                GivePlayerMoney(playerid, -35000);
                SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà ton gilet par balles l'ami !");
  }
  else if(GetPlayerMoney(playerid) <= 34999)
  {
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
  }
  return 1;
}
    if(listitem == 4)
            {
             if(GetPlayerMoney(playerid) >= 20000)
{
                SetPlayerHealth(playerid, 100.0);
                SetPlayerArmour(playerid, 10.0);
                GivePlayerMoney(playerid, -20000);
                SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà ton kit l'ami !");
  }
  else if(GetPlayerMoney(playerid) <= 19999)
  {
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
  }
  return 1;
}
if(listitem == 5)
            {
             if(GetPlayerMoney(playerid) >= 35000)
      {
                GivePlayerWeapon(playerid, 24, 250);
                GivePlayerMoney(playerid, -35000);
                SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà ton desert eagle l'ami !");
  }
  else if(GetPlayerMoney(playerid) <= 34999)
  {
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
  }
  return 1;
}
        }
        return 1;
    }


    return 1;
}
[/spoiler]




Hors ligne Kiloutre

  • Nolife, nerd et geek passionné d'Ordinatique ! ^^
  • *
  • Grand Banditisme
  • Messages: 567
    • Voir le profil
Re : Problème avec un pickup
« Réponse #1 le: 25 Mars 2013, 21:36:26 »
Tu crée la variable pickupaMilli mais tu utilises une variable nommée pickupMilli, si c'est la même chose dans le code, l'erreur devrait venir de là.
Si justement c'est la même chose dans le code, je vais t'expliquer l'erreur.
Tu énumère pickupaMilli(enum), puis tu crée pickupaMilli (variable), lors de l'utilisation de ShowPlayerDialog, l'id du dialogue sera pickupaMilli. Quand tu vas écrire pickupaMilli en tant qu'id de dialogue, le script ne va pas savoir si il doit utiliser la variable pickupaMilli où l'enumération. Normalement, le compilateur doit fournir une erreur à ce sujet.

Je te conseille d'utiliser un #define où un chiffre pour l'id de dialogue, c'est toujours plus rapide que d'utiliser une énumération et aussi plus compréhensible.

[/url]

Hors ligne resame

  • *
  • Nouveau
  • Messages: 7
    • Voir le profil
Re : Problème avec un pickup
« Réponse #2 le: 25 Mars 2013, 22:11:03 »
j'ai mis #define pickupaMilli 5 (vu que j'avais d'autre dialog)
puis modifier new pickupaMilli;  en new pickupMilli;

J'ai modifier le dialog
Code: (pawn) [Sélectionner]
case pickupaMilli:
   
        if(response)
        {
            if(listitem == 0)
            {
if(GetPlayerMoney(playerid) >= 30000)
{
GivePlayerWeapon(playerid, 31, 250);
GivePlayerMoney(playerid, -30000);
SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà ton M4 !");
}
else if(GetPlayerMoney(playerid) <= 29999)
{
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
}
return 1;
}
            if(listitem == 1)
            {
if(GetPlayerMoney(playerid) >= 15000)
{
GivePlayerWeapon(playerid, 16, 10);
GivePlayerMoney(playerid, -15000);
SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà tes grenades camarades !");
}
else if(GetPlayerMoney(playerid) <= 14999)
{
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
}
return 1;
}
            if(listitem == 2)
            {
if(GetPlayerMoney(playerid) >= 200000)
{
GivePlayerWeapon(playerid, 36, 5);
GivePlayerMoney(playerid, -200000);
SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà ton HS rocket l'ami !");
}
else if(GetPlayerMoney(playerid) <= 199999)
{
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
}
return 1;
}
if(listitem == 3)
{
  if(GetPlayerMoney(playerid) >= 35000)
  {
SetPlayerArmour(playerid, 100.0);
GivePlayerMoney(playerid, -35000);
SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà ton gilet par balles l'ami !");
  }
  else if(GetPlayerMoney(playerid) <= 34999)
  {
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
  }
return 1;
}
    if(listitem == 4)
            {
if(GetPlayerMoney(playerid) >= 20000)
{
SetPlayerHealth(playerid, 100.0);
SetPlayerArmour(playerid, 10.0);
GivePlayerMoney(playerid, -20000);
SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà ton kit l'ami !");
  }
  else if(GetPlayerMoney(playerid) <= 19999)
  {
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
  }
return 1;
}
if(listitem == 5)
            {
if(GetPlayerMoney(playerid) >= 35000)
  {
GivePlayerWeapon(playerid, 24, 250);
GivePlayerMoney(playerid, -35000);
SendClientMessage(playerid, COLOR_GREEN, "Sergent dit: Voilà ton desert eagle l'ami !");
  }
  else if(GetPlayerMoney(playerid) <= 34999)
  {
SendClientMessage(playerid, COLOR_GREEN, "Tu n'a pas assez d'argent.");
  }
return 1;
}
        }
       
    }


le if(pickupid == pickupMilli) je l'es laisser pareil, mais sa ne fonctionne pas :/

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Problème avec un pickup
« Réponse #3 le: 26 Mars 2013, 06:51:59 »
Et la boite de dialog à la même id que le pickup, je me trompe??


Adju ♥
(-_-)



Hors ligne resame

  • *
  • Nouveau
  • Messages: 7
    • Voir le profil
Re : Problème avec un pickup
« Réponse #4 le: 26 Mars 2013, 18:55:47 »
Non, l'id du dialog est pickupaMilli et celui du pickup est pickupMilli

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Problème avec un pickup
« Réponse #5 le: 27 Mars 2013, 14:03:35 »
Tu ne peux pas définir deux symboles avec le même nom, c'est du suicide. :ninja:

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Problème avec un pickup
« Réponse #6 le: 27 Mars 2013, 17:43:51 »
Moi perso pour le nom de mes pickup je fais comme ceci:

Code: (pawn) [Sélectionner]
new p_Militaire;
Et pour mes dialog

Code: (pawn) [Sélectionner]
new d_Militaie;
Ce qui rend mon code plus clair et je m'embrouille pas :p


Adju ♥
(-_-)



Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Problème avec un pickup
« Réponse #7 le: 29 Mars 2013, 11:44:59 »
Pour les boîtes de dialogue, c'est inutile, cela utilise de la mémoire pour rien, le mieux est d'utiliser des #define.
Pour les
pickups c'est obligatoire puisque la fonction qui les créer retourne un indice vers le pickup crée.

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Problème avec un pickup
« Réponse #8 le: 29 Mars 2013, 12:35:01 »
Ah oui exact pour les dialog xartrick. Je sais pas pourquoi j'ai mit ça en plus car j'utilise les Define ><


Adju ♥
(-_-)



Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Re : Problème avec un pickup
« Réponse #9 le: 29 Mars 2013, 17:40:33 »
Ah oui exact pour les dialog xartrick. Je sais pas pourquoi j'ai mit ça en plus car j'utilise les Define ><

Je connais quelqu'un qui n'a pas bien révisé ses cours particuliers... :p