• 09 Juillet 2025, 12:58:13


Auteur Sujet: Faire des catégories dans un tableau  (Lu 1738 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne JohnAnto

  • *
  • Criminel
  • Messages: 34
    • Voir le profil
Faire des catégories dans un tableau
« le: 17 Octobre 2012, 16:16:00 »
Bonjour,

J'aimerais faire des catégories dans un tableau, j'ai cherché sur samp wiki, sans succes. Moi ce seré pour le spawn des véhicules, placer les véhicules par catégorie, l'at-400 dans avion, la turismo dans sportcar, le dumper dans unique etc.... Si le joueur veut la turismo, il fait /v un tableau apparait (sa je c'est faire) ensuite il clic sur sportcar (la catégorie des voiture de sport) et il peut choisir son véhicule. Vous pourriez m'expliquez comment on fait ?

Voici mon script pour le spawn des véhicules (par contre il sont pas par catégorie)

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}

public OnFilterScriptExit()
{
return 1;
}

#else

main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
return 1;
}

public OnGameModeExit()
{
return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
return 1;
}

public OnPlayerConnect(playerid)
{
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
return 1;
}

public OnPlayerSpawn(playerid)
{
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}

public OnVehicleSpawn(vehicleid)
{
return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}

public OnPlayerText(playerid, text[])
{
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/v", cmdtext, true) == 0)
{
        ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Vehicules","1.Sultan\n2.Infernus\n3.Turismo\n4.Bullet\n5.Elegy\n5.Banshee\n6.Turismo\n7.Sabre","Spawn","Exit");
return 1;
}
return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}

public OnRconCommand(cmd[])
{
return 1;
}

public OnPlayerRequestSpawn(playerid)
{
return 1;
}

public OnObjectMoved(objectid)
{
return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}

public OnPlayerExitedMenu(playerid)
{
return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}

public OnPlayerUpdate(playerid)
{
return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new Float:x,Float:y,Float:z;
if(dialogid==1 && response==1)
{
switch(listitem)
{
              case 0:
   {
  GetPlayerPos(playerid,x,y,z);
  CreateVehicle(560,x-3.0,y,z,0.0,1,1,12);
   }
   
   case 1:
   {
  GetPlayerPos(playerid,x,y,z);
  CreateVehicle(411,x-3.0,y,z,0.0,1,1,12);
   }
   
   case 2:
   {
  GetPlayerPos(playerid,x,y,z);
  CreateVehicle(451,x-3.0,y,z,0.0,1,1,12);
   }
   
   case 3:
   {
  GetPlayerPos(playerid,x,y,z);
  CreateVehicle(541,x-3.0,y,z,0.0,1,1,12);
   }
   
   case 4:
   {
  GetPlayerPos(playerid,x,y,z);
  CreateVehicle(562,x-3.0,y,z,0.0,1,1,12);
   }
   
           case 5:
   {
  GetPlayerPos(playerid,x,y,z);
  CreateVehicle(429,x-3.0,y,z,0.0,1,1,12);
   }
   
   
   case 6:
   {
  GetPlayerPos(playerid,x,y,z);
  CreateVehicle(451,x-3.0,y,z,0.0,1,1,12);
   }
   
   
   case 7:
   {
  GetPlayerPos(playerid,x,y,z);
  CreateVehicle(475,x-3.0,y,z,0.0,1,1,12);
   }
   

   





   


}
}
return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}


Merci d'avance
« Modifié: 17 Octobre 2012, 16:27:44 par JohnAnto »
Prefer the quality is better now

Hors ligne Xolokos

  • PAWN/XHTML/CSS/PHP/SQL/JS
  • *
  • Grand Banditisme
  • What are you waiting for ?
  • Messages: 681
    • Voir le profil
Re : Faire des catégories dans un tableau
« Réponse #1 le: 17 Octobre 2012, 21:20:38 »
A la place de faire spawn le véhicule tu le renvoie sur un autre dialogbox...
Etc.
Nippah !

Hors ligne Mams

  • *
  • Nouveau
  • Messages: 22
    • Voir le profil
Re : Faire des catégories dans un tableau
« Réponse #2 le: 18 Octobre 2012, 18:00:42 »
Salut,

Pour faire un tableau il faudra utiliser cette fonction: ShowPlayerDialog

--> Comme tu veux faire un tableau il faudra utiliser comme style DIALOG_STYLE_LIST

Il faudra par ailleurs utiliser cette callback: OnDialogResponse

Je te montre un exemple: je veux faire plusieurs catégories d'armes.

Code: (pawn) [Sélectionner]
ShowPlayerDialog(playerid, TON ID DE DIALOG, DIALOG_STYLE_LIST, "Titre du dialog:Catégories","Fusils d'assaut\nPistolets\nArmes blanche", "Oui/Ok", "Annuler/Revenir");
J'ai séparé chaque catégorie par un \n.
Il y a trois catégories dans mon dialog qui sont Fusils d'assaut, Pistolets, Armes blanche

Le joueur clique sur une des catégories et de ce fait nous nous retrouvons dans la callback OnDialogResponse

Code: (pawn) [Sélectionner]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(!IsPlayerConnected(playerid))return 1;
    if(dialogid == TON ID DE DIALOG)
    {

          if(!response)return 1; // Si le joueur a cliqué sur Annuler.
          if(listitem == 0) // Sa commence toujours pas 0 jamais par 1.
          {
               // Je recommence, je fait une nouvelle boîte de dialogue:
              ShowPlayerDialog(playerid, TON ID DE DIALOG, DIALOG_STYLE_LIST, "Titre du dialog:Catégories","Arme 1\n Arme 2\n Arme 3\n etc...", "Oui/Ok", "Annuler/Revenir");
          }
          if(listitem == 1)
          {
                // Tu fais pareil que pour le listitem = 0;. 
          }
          if(listitem == 2){}
    }
    return 1;
}

Mais il y a plus simple encore, si tu veux que le joueur tape lui même le nom du vehicule qu'il veut:

--> Il faudra utiliser comme style DIALOG_STYLE_INPUT

Code: (pawn) [Sélectionner]
ShowPlayerDialog(playerid,TON ID DE DIALOG, DIALOG_STYLE_INPUT, "Vehicule", "Entrez le nom du vehicule:", "Ok", "Annuler");
Code: (pawn) [Sélectionner]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(!IsPlayerConnected(playerid))return 1;
    if(dialogid == TON ID DE DIALOG)
    {

          if(!response)return 1; // Si le joueur a cliqué sur Annuler.
          new vid = GetVehicleID(inputtext);
  if (vid == -1) // Si le joueur a taper l'id du vehicule.
  {
  vid = strval(inputtext);
  if (vid < 400|| vid > 611)
  {
          // Message d'erreur, nom du vehicule, id du vehicule incorrect.
  }
    }
          CreateVehicle(vid, ...);
            // Tu peux toujours voir si c'est un vehicule interdite: if(vid == 547|| etc...){return 1;}
           
    }
    return 1;
}

Code: (pawn) [Sélectionner]
GetVehicleID(vname[])
{
    for(new i = 0; i < 211; i++) {
if (strfind(VehicleName[i], vname, true) != -1) {
return i+400;
}
}
return -1;
}
// Je suis pas sur que ca marche j'ai pas test.

J'espère t'avoir aidé et n'avoir pas fait d'erreurs dans ce que j'ai dit.
« Modifié: 18 Octobre 2012, 22:24:05 par Mams »


Hors ligne JohnAnto

  • *
  • Criminel
  • Messages: 34
    • Voir le profil
Re : Re : Faire des catégories dans un tableau
« Réponse #3 le: 18 Octobre 2012, 21:17:28 »
A la place de faire spawn le véhicule tu le renvoie sur un autre dialogbox...
Etc.




Salut,

Pour faire un tableau il faudra utiliser cette fonction: ShowPlayerDialog

--> Comme tu veux faire un tableau il faudra utiliser comme style DIALOG_STYLE_LIST

Il faudra par ailleurs utiliser cette callback: OnDialogResponse

Je te montre un exemple: je veux faire plusieurs catégories d'armes.

Code: (pawn) [Sélectionner]
ShowPlayerDialog(playerid, TON ID DE DIALOG, DIALOG_STYLE_LIST, "Titre du dialog:Catégories","Fusils d'assaut\nPistolets\nArmes blanche", "Oui/Ok", "Annuler/Revenir");
J'ai séparé chaque catégorie par un \n.
Il y a trois catégories dans mon dialog qui sont Fusils d'assaut, Pistolets, Armes blanche

Le joueur clique sur une des catégories et de ce fait nous nous retrouvons dans la callback OnDialogResponse

Code: (pawn) [Sélectionner]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(!IsPlayerConnected(playerid))return 1;
    if(dialogid == TON ID DE DIALOG)
    {

          if(!response)return 1; // Si le joueur a cliqué sur Annuler.
          if(listitem == 0) // Sa commence toujours pas 0 jamais par 1.
          {
               // Je recommence, je fait une nouvelle boîte de dialogue:
              ShowPlayerDialog(playerid, TON ID DE DIALOG, DIALOG_STYLE_LIST, "Titre du dialog:Catégories","Arme 1\n Arme 2\n Arme 3\n etc...", "Oui/Ok", "Annuler/Revenir");
          }
          if(listitem == 1)
          {
                // Tu fais pareil que pour le listitem = 0;. 
          }
          if(listitem == 2){}
    }
    return 1;
}

Mais il y a plus simple encore, si tu veux que le joueur tape lui même le nom du vehicule qu'il veut:

--> Il faudra utiliser comme style DIALOG_STYLE_INPUT

Code: (pawn) [Sélectionner]
ShowPlayerDialog(playerid,TON ID DE DIALOG, DIALOG_STYLE_INPUT, "Vehicule", "Entrez le nom du vehicule:", "Ok", "Annuler");
Code: (pawn) [Sélectionner]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(!IsPlayerConnected(playerid))return 1;
    if(dialogid == TON ID DE DIALOG)
    {

          if(!response)return 1; // Si le joueur a cliqué sur Annuler.
          new vid = GetVehicleID(inputtext);
  if (vid == -1) // Si le joueur a taper l'id du vehicule.
  {
  vid = strval(inputtext);
  if (vid < 400|| vid > 611)
  {
          // Message d'erreur, nom du vehicule, id du vehicule incorrect.
  }
    }
          CreateVehicle(vid, ...);
            // Tu peux toujours voir si c'est un vehicule interdite: if(vid == 547|| etc...){return 1;}
           
    }
    return 1;
}

Code: (pawn) [Sélectionner]
GetVehicleID(vname[])
{
    for(new i = 0; i < 211; i++) {
if (strfind(VehicleName[i], wname, true) != -1) {
return i+400;
}
}
return -1;
}
// Je suis pas sur que ca marche j'ai pas test.

J'espère t'avoir aidé et n'avoir pas fait d'erreurs dans ce que j'ai dit.




Alors, je suis perdu, moi je fais sa déjà :

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/v", cmdtext, true) == 0)
{
        ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Vehicules","Airplane\nBoat\nHelicopter\nBikes\nLowriders\nIndustrial\nRCvehicle\nOffRoad\nSaloons\nSportcar\nUnique","Spawn","Cancel");
        return 1;
}
return 0;
}

Donc comme vous voyez les catégorie de véhicule.

Et dans public OnDialogResponse par contre je ne sais pas comment faut faire là.

Je vaudrait en faite, tous simplement placé mes véhicule dans la catégorie qui convient, le shamal dans airplane, le bmx dans bikes etc....

Comment faut-il faire ?


Merci d'avance
Prefer the quality is better now

Hors ligne Mams

  • *
  • Nouveau
  • Messages: 22
    • Voir le profil
Re : Faire des catégories dans un tableau
« Réponse #4 le: 18 Octobre 2012, 22:01:57 »
Eh ben quand le joueur clique sur "Airplanes" (qui est listitem == 0) eh ben dans la callback OnDialogResponse tu refais un tableau ou tu marques les véhicules.

Code: (pawn) [Sélectionner]

if(listitem == 0) // Airplanes
{
   ShowPlayerDialog(playerid, 2, DIALOG_STYLE_LIST, "Titre du dialog:Catégories","Shamal\nMaverick\n...", "Oui/Ok", "Annuler/Revenir");
}

Et quand le joueur clique sur le véhicule qu'il veut prendre, dans OnDialogResponse tu fait:

Code: (pawn) [Sélectionner]
if(dialogid == 2) //
{
    new Float:X,Float:Y,Float:Z, vehcreated;
    GetPlayerPos(playerid,X,Y,Z); // Je récupère les positions du joueur.
    if(!response)return 1;
    if(lisitem == 0) // Sa correspond au Shamal.
   {
     vehcreated = CreateVehicle(519, X,Y,Z, 0, 1, -1); // Je crée le véhicule sur la position du joueur
     PutPlayerInVehicle(playerid,vehcreated,0); // Je met le joueur dans le véhicule 
   }
   if(listitem == 1)
   {
         // meme procédé que pour listitem == 0
   }
   ....

Pour avoir l'id des véhicules: http://wiki.sa-mp.com/wiki/Vehicle_Model_ID_List
 
Et vraiment si tu n'y arrives vraiment pas je te ferais un bout de script que tu continueras. ;)
« Modifié: 18 Octobre 2012, 22:05:00 par Mams »


Hors ligne JohnAnto

  • *
  • Criminel
  • Messages: 34
    • Voir le profil
Re : Re : Faire des catégories dans un tableau
« Réponse #5 le: 19 Octobre 2012, 11:07:11 »
Eh ben quand le joueur clique sur "Airplanes" (qui est listitem == 0) eh ben dans la callback OnDialogResponse tu refais un tableau ou tu marques les véhicules.

Code: (pawn) [Sélectionner]

if(listitem == 0) // Airplanes
{
   ShowPlayerDialog(playerid, 2, DIALOG_STYLE_LIST, "Titre du dialog:Catégories","Shamal\nMaverick\n...", "Oui/Ok", "Annuler/Revenir");
}

Et quand le joueur clique sur le véhicule qu'il veut prendre, dans OnDialogResponse tu fait:

Code: (pawn) [Sélectionner]
if(dialogid == 2) //
{
    new Float:X,Float:Y,Float:Z, vehcreated;
    GetPlayerPos(playerid,X,Y,Z); // Je récupère les positions du joueur.
    if(!response)return 1;
    if(lisitem == 0) // Sa correspond au Shamal.
   {
     vehcreated = CreateVehicle(519, X,Y,Z, 0, 1, -1); // Je crée le véhicule sur la position du joueur
     PutPlayerInVehicle(playerid,vehcreated,0); // Je met le joueur dans le véhicule 
   }
   if(listitem == 1)
   {
         // meme procédé que pour listitem == 0
   }
   ....

Pour avoir l'id des véhicules: http://wiki.sa-mp.com/wiki/Vehicle_Model_ID_List
 
Et vraiment si tu n'y arrives vraiment pas je te ferais un bout de script que tu continueras. ;)




Ouai, l'idéal seré que tu me fasse un bout de script  :closedeyes
Prefer the quality is better now

Hors ligne Katou76

  • *
  • Tueur en série
  • Messages: 107
    • Voir le profil
Re : Faire des catégories dans un tableau
« Réponse #6 le: 19 Octobre 2012, 12:49:08 »
Oui, on peut même te filé un script tout fait, ou il te suffit juste de le lancé...

S'il te plait, ça fait deux jours que je me suis pas connecté au forums et une page de flood de topic créer par toi, fait un minimum d’effort, cherche sur les forums avant de poster un problème ou consulte le Wiki de SAMP sur les fonctions.

On va pas te faire un code tout beau et prêt pour tu puisse faire un copier-coller sans rien apprendre...
Ce code est un crime contre la programmation.

Hors ligne pa2m972

  • Chef de la Team FOD | Scripteur de Darkseno
  • *
  • Tueur
  • Cool ta vie, mange un Kiwi
  • Messages: 59
    • Voir le profil
    • http://libertyworldroleplay.xooit.com/index.php
Re : Faire des catégories dans un tableau
« Réponse #7 le: 20 Octobre 2012, 13:08:55 »
Réglé je pense.


◄¤| Leader FOD Team | Criminel | C'Helper |¤►