GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: DarkSky69 le 06 Février 2013, 12:06:26
-
Bonjour,
Je suis nouveau mais je voudrais ajouter une commande,
/qg qui nous téléporterais au lieu voulu MAIS,
il y a plusieurs job sur mon serveur (MarinDriver, BusDriver, Mafia, Pilot, Police, Pizza et TruckDriver(=Nom des jobs de mon gamemode)
Et je voudrais ajouter plusieurs qg à certain (donc en faisant ouvrir une fenêtre avec la sélection des qg). Si vous pouriez m'aider cela me serais d'un GRANDE aide.
Merci d'avance !
-
A la place d'afficher une fenêtre avec la sélection des qg, pourquoi ne pas faire en sorte que le lieu de téléportation soit différent selon le job du joueur ?
Ah et sinon, pour afficher la fenêtre :
http://wiki.sa-mp.com/wiki/ShowPlayerDialog (http://wiki.sa-mp.com/wiki/ShowPlayerDialog)
http://wiki.sa-mp.com/wiki/Dialog_Styles (http://wiki.sa-mp.com/wiki/Dialog_Styles)
(Dialog Styles pour faire la liste)
-
Cela serait une bonne idée mais pour quelque job (Police, Truck, Pilote et Bus) J'ai à chaque fois 3 qg.
Et je ne suis que débutant en pawn donc si tu/vous pourrais/pourriez m'aider se m'aiderais mieux à comprendre le pawn :D
Et Merci de ta réponse ;)
-
Bon alors voici un simple exemple :
La méthode sans "fenêtre", avec téléportation différente selon le job
//Tout en haut du code
#define jobPolice 1
#define jobTruck 2
//Dans OnPlayerCommandText
if(!strcmp(cmdtext,"/qg",true)
{
if(job[playerid]==jobPolice) SetPlayerPos(playerid, 0, 1, 2);
if(job[playerid]==jobTruck) SetPlayerPos(playerid, 3, 4, 5);
return 1;
}
La méthode "fenêtre" :
//Tout en haut du code
#define DIALOG_QG 1
//Dans OnPlayerCommandText
if(!strcmp(cmdtext,"/qg",true)
{
ShowPlayerDialog(playerid, DIALOG_QG, DIALOG_STYLE_LIST, "Liste des QG", "QG Police\nQG Truck\netc...", "Choisir", "Quitter");
return 1;
}
//Dans OnDialogResponse
if(dialogid==DIALOG_QG)
{
if(!response) return 1; //Si il choisi de quitter
if(listitem==0) SetPlayerPos(playerid, 0, 0, 0); //Si il choisi le QG Police
if(listitem==1) SetPlayerPos(playerid, 0, 0, 0); //Si il choisi le QG Truck
return 1;
Si tu ne comprend pas des trucs n'hésite pas à le dire :)
-
Merci beaucoup, je voulait juste savoir si se code était juste:
#define DIALOG_QG 1
public OnPlayerCommandText(playerid, cmdtext[])
if(!strcmp(cmdtext,"/qg",true)
{
ShowPlayerDialog(playerid, DIALOG_QG, DIALOG_STYLE_LIST, "Liste des QG", "QG Police Ls\nQG Police Sf\nQG Police Lv\nQG Camionneur Ls\nQG Camionneur Sf\nQG Mafia\nQG Marin\nQG Cantonier\nQG Pilote Ls\nQG Pilote Sf\nQG Pilote Lv\nQG Bus Ls\nQG Bus Sf\nQG Bus Lv\nQG Pizza", "Choisir", "Quitter");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
if(dialogid==DIALOG_QG)
{
if(!response) return 1; //Si il choisi de quitter
if(listitem==0) SetPlayerPos(playerid, 0, 0, 0); //Si il choisi le QG Police
if(listitem==1) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==2) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==3) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==4) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==5) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==6) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==7) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==8) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==9) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==10) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==11) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==12) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==13) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==14) SetPlayerPos(playerid, 0, 0, 0);
return 1;
}
-
Oui ça devrait marcher, sauf que je pense, la ligne "ShowPlayerDialog" risque d'être un peut longue... Et des fois pawno n'est pas très content :p
-
Je crois me souvenir que la limite pour les boîtes de dialogue est de 1024 caractères... Tu peux toujours vérifier avec la fonction strlen si c'est inférieur, au cas où. ;)
-
Et si c'est au dessus, tu pourras toujours faire des pages en divisant le dialogue en deux :)
-
Bonjour, j'ai essayer de l'ajouter à mon gamemode mais je ne sais pas où placer
if(dialogid==DIALOG_QG)
{
if(!response) return 1; //Si il choisi de quitter
if(listitem==0) SetPlayerPos(playerid, 0, 0, 0); //Si il choisi le QG Police
if(listitem==1) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==2) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==3) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==4) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==5) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==6) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==7) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==8) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==9) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==10) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==11) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==12) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==13) SetPlayerPos(playerid, 0, 0, 0);
if(listitem==14) SetPlayerPos(playerid, 0, 0, 0);
return 1;
}
Dans: http://pastebin.com/ZgLT9n3V (http://pastebin.com/ZgLT9n3V)
-----------------------------------------
Et dernière question:
OnPlayerCommandText = dans l'include "zcmd" ?
Merci beaucoup !
-
if(dialogid==DIALOG_QG) se place dans la callback OnDialogResponse, qui est appelée lorsque quelque chose se passe dans un dialogue (le joueur choisi la réponse 1, 2 ,3 où choisi de fermer, etc...)
http://wiki.sa-mp.com/wiki/OnDialogResponse (http://wiki.sa-mp.com/wiki/OnDialogResponse)
Pour la deuxième question, je craint de ne pas pouvoir répondre étant donné que je n'ai pas compris la question :(