GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Barto le 16 Juin 2010, 23:26:11

Titre: [TUTO]ShowPlayerDialog
Posté par: Barto le 16 Juin 2010, 23:26:11
Créer des dialogues menu avec une action.

Présentation.

Tout d'abord, nous allons voir la différence entre les trois sortes de dialogue menu.
Voici les trois sortes de dialogue :

   • DIALOG_STYLE_MSGBOX
   • DIALOG_STYLE_LIST
   • DIALOG_STYLE_INPUT

Le MSGBOX est à utiliser pour un message d'accueil etc. Exemple : Bienvenue sur mon serveur !!
Le LIST sert à établir une liste (utile pour les téléportations)
Le INPUT est l'endroit où vous devez écrire quelques chose avant d'appuyer sur le bouton (système de register/login)

Le ShowPlayerDialog se présente ainsi :

ShowPlayerDialog(playerid, dialogid, dialogstyle, "titre", "message", "bouton1", "bouton2");
Voyons à quoi correspond chaque critère :

   • playerid : La personne qui va voir le ShowPlayerDialog.
   • dialogid : Ici on met un chiffre ou un mot, exemple : 1. C'est utile pour ensuite se servir de OnDialogResponse.
   • dialogstyle : On les a vu tout à l'heure, c'est : DIALOG_STYLE_MSGBOX, DIALOG_STYLE_LIST et DIALOG_STYLE_INPUT.
   • titre : C'est là où vous mettrez votre titre.
   • message : C'est ici que vous placerez votre message.
   • bouton1 : En général c'est : Continuer.
   • bouton2 : En général c'est : Quitter.

Dans votre message, utilisez \n pour revenir à la ligne et \t pour effectuer une tabulation.

Créer un message lors de la connexion d'un joueur.

Nous allons créer un message lors de la connexion du joueur. Il accepte, il entre sur le serveur et si il refuse, il est kické.

Dans la callback OnPlayerConnect, nous ajoutons :

public OnPlayerConnect(playerid)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Bienvenue", "Bienvenue sur mon serveur !", "Continuer", "Quitter");
return 1;
}

Dans OnDialogResponse nous ajoutons ceci :

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1) //On prend l'id du dialog que l'on a créé juste avant
{
if(response)
{
   SendClientMessage(playerid,0x008000FF, "Bon jeu sur mon serveur"); //Le joueur a cliqué sur "Continuer"
}
else
{
   SendClientMessage(playerid, 0xFF0000FF, "Tu as choisi 'Quitter' donc au revoir :)");
   Kick(playerid); //On kick le joueur
}
return 1;
}
return 0;
}

Créer une commande pour voir les commandes du serveur.

Dans le exemple précédent, nous avons utilisé le DIALOG_STYLE_MSGBOX. Nous allons maintenant utiliser le DIALOG_STYLE_LIST.
Ca fonctionne comme le MSGBOX. Voici un exemple :

public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/cmd", true) == 0)
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_LIST, "Menu des commandes", "Kill : Cela vous tue \n Armure : Cela vous donne une armure", "Ok", "Ok");
return 1;
}
return 0;
}

Dans le OnDialogResponse :

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 2)
{
if(response)
{

if(listitem == 0) //Le joueur clique sur la première ligne.
{
SetPlayerHealth(playerid, 0);

  }
if(listitem == 1)//Le joueur clique sur la deuxième ligne.
{
   SetPlayerArmour(playerid, 100.0);
   return 1;
   }
}
}
return 0;
}

Pour le DIALOG_STYLE_INPUT je ne le connais aps encore, je bais l'étudier et j'éditerais mon tuto si j'arrive à bien l'expliquer.
Titre: Re : [TUTO]SowPlayerDialog
Posté par: scott1 le 17 Juin 2010, 00:55:45
GG

ps: pour la connexion il y a déjà celui de cristab
Titre: Re : Re : [TUTO]SowPlayerDialog
Posté par: Barto le 17 Juin 2010, 08:22:03
GG

ps: pour la connexion il y a déjà celui de cristab

Merci.
Oui je sais qu'il y a déjà un tuto mais il n'explique pas vraiment le INPUT. Il explique juste comment ajouter un tableau login. M'enfin, je l'ajouterai quand même, on au moins on aura les 3 sortes de dialog su le même tuto.
Titre: Re : [TUTO]SowPlayerDialog
Posté par: cristab le 17 Juin 2010, 13:31:16
pour celui de la connexion le mien ne fait que reprendre le onplayertext une façon simple est rapide pour un debutant de mettre sont systeme de login a jour le sien explique bien plus

pour le DIALOG_STYLE_INPUT moi je m'en sert a la place du strtok desormer dans certain cmd ^^
Titre: Re : [TUTO]SowPlayerDialog
Posté par: Ssk le 17 Juin 2010, 13:35:04
GG pour le tuto ( je ne l'ai pas lu désolé )

Mais ta fait une petite faute sur le titre ^^

SowPlayerDialog -> ShowPlayerDialog
Titre: Re : Re : [TUTO]SowPlayerDialog
Posté par: Barto le 17 Juin 2010, 14:00:28
GG pour le tuto ( je ne l'ai pas lu désolé )

Mais ta fait une petite faute sur le titre ^^

SowPlayerDialog -> ShowPlayerDialog

Voilà c'est rectifié  :P
Titre: Re : [TUTO]ShowPlayerDialog
Posté par: Tranced le 29 Juin 2010, 15:55:08
Bonjour ! :king

Il me met des erreurs lorsque je compile.

Citer
C:\Documents and Settings\Sam\Bureau\SERVER SAMP\gamemodes\grandlarc.pwn(112) : error 010: invalid function or declaration
C:\Documents and Settings\Sam\Bureau\SERVER SAMP\gamemodes\grandlarc.pwn(95) : error 017: undefined symbol "ShowPlayerDialog"

Cela ne fait pas la première fois que je tente de faire avec 'ShowPlayerDialog'.
Je ne trouve pas.

Je débute dans le script,j'essaye de comprendre...J'essaye  ;)


Titre: Re : Re : [TUTO]ShowPlayerDialog
Posté par: Ssk le 29 Juin 2010, 16:13:04
Bonjour ! :king

Il me met des erreurs lorsque je compile.

Citer
C:\Documents and Settings\Sam\Bureau\SERVER SAMP\gamemodes\grandlarc.pwn(112) : error 010: invalid function or declaration
C:\Documents and Settings\Sam\Bureau\SERVER SAMP\gamemodes\grandlarc.pwn(95) : error 017: undefined symbol "ShowPlayerDialog"

Cela ne fait pas la première fois que je tente de faire avec 'ShowPlayerDialog'.
Je ne trouve pas.

Je débute dans le script,j'essaye de comprendre...J'essaye  ;)




T'es sur de bien avoir les headers (includes) de samp 0.3a R7/R8 ?

Sinon montre nous la ligne de code, mais essai de voir la première solution, car ça doit être la bonne lol
Titre: Re : [TUTO]ShowPlayerDialog
Posté par: Tranced le 29 Juin 2010, 17:53:56
C'est bon je n'ai plus d'erreurs ! (J'ai télécharger la nouvelle version de SAMP)
Autre problème,quand je me connecte sa ne s'affiche pas.

Le 'OnPlayerConnect' y est mais je l'ai pas ajouter dans le 'code' si dessous.  ;)

ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Bienvenue", "Bienvenue sur mon serveur !", "Continuer", "Quitter");
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[0])
{
if(dialogid == 1) //On prend l'id du dialog que l'on a créé juste avant
{
if(response)
{
   SendClientMessage(playerid,0x008000FF, "Bon jeux!"); //Le joueur a cliqué sur "Continuer"
}
else
{
   SendClientMessage(playerid, 0xFF0000FF, "Vous avez refuser les conditions,vous avez été KICK par le server.");
   Kick(playerid); //On kick le joueur
}
return 1;
}
return 0;

}

Problème RESOLU,et en plus de sa j'ai compris le système du 'ShowPlayerDialog' merci de ton aide Sasuke. :cheers