Oggi è 27/06/2022, 16:43

Tutti gli orari sono UTC + 1 ora [ ora legale ]





 Pagina 1 di 1 [ 6 messaggi ] 

  Apri un nuovo argomento Rispondi all’argomento

  Stampa pagina

Autore Messaggio
 Oggetto del messaggio: [GUIDA] Uso dei dialoghi
MessaggioInviato: 26/01/2011, 21:07 
Avatar utente
Utente

Iscritto il: 31/10/2010
Messaggi: 901
Località: Universo - Via Lattea - Sistema Solare - Pianeta Terra - Europa - Italia - Sicilia - Grammichele(CT)
Favourite GTA: San Andreas
Xfire: Privato

Karma
2


Non connesso
In questa guida vi spiegherò come usare i dialoghi presenti dalla versione 0.3a di Samp.

Cosa Sono ?


I dialoghi sono dei menù aggiunti nella versione 0.3 di samp, i quali sono molto più comodi e utili dei vecchi menù.

Per mettere un dialogo dobbiamo conoscere bene la funzione:

Codice:
ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[])


playerid:
ID del player che dovrà vedere il dialogo

dialogid:
ID da attribuire al dialogo, l'id può essere definito con un #define in cima alla GM, esempio:
Codice:
#define DIALOGO 1111

P.S. Non possono esistere due dialoghi con lo stesso ID

style:
Lo stile da attribuire al dialogo, ne esistono tre tipi:

DIALOG_STYLE_LIST: Questo stile mostra (come nei vecchi menù) una lista di sottomenù da potere selezionare, i sottomenù saranno i listitem

DIALOG_STYLE_MSGBOX: Questo stile mostra soltanto il testo, quindi può essere utilizzato per mandare messaggi molto lunghi ad un player (come il regolamento)

DIALOG_STYLE_INPUT: Con questo stile è possibile scrivere un testo nel dialogo, la stringa "inputtext[]" prenderà il valore della stringa che avete scritto

caption:
Il titolo da dare al dialogo, esso va messo tra virgolette.

info:
Le info da mettere dentro al dialogo, esse sono diverse in base allo stile del dialogo.
Se lo stile sarà il DIALOG_STYLE_LIST allora nelle info dobbiamo aggiungere i sottomenù, in questo modo.
Codice:
ShowPlayerDialog(playerid, 1111, DIALOG_STYLE_LIST, "Titolo del dialogo", "Sottomenù1\nSottomenù2\nSottomenù3\nSottomenù4", "Ok", "Rifiuta");


Come potete vedere, ho aggiunto 4 sottomenù divisi tra loro da un \n il quale porta a capo il sottomenù.
P.S il \n non va messo prima del primo sottomenù o dopo l'ultimo sottomenù

Negli altri due dialoghi le info saranno messe sotto al titolo

button1:
Primo bottone del dialogo (quello che accetta il dialogo)
Il button1 corrisponde al bottone di sinistra presente nel dialogo (il primo) il quale, se premuto, darà affermazione al dialogo.

button2:
Secondo bottone del dialogo (quello che rifiuta il dialogo)
Il button2, a differenza del primo, serve a rifiutare il dialogo.
Esso può essere tolto mettendo solo " "

Ora possiamo iniziare a spiegare come creare un dialogo.

Per creare un dialogo, dobbiamo tenere conto a ciò che ho detto primo, ed usare la funzione ShowPlayerDialog, esempio:

Codice:
#define DIALOG 1111 //opzionale
ShowPlayerDialog(playerid, DIALOG, DIALOG_STYLE_MSGBOX, "Titolo", "Prova del menù", "Ok" " ");


Questo codice, definisce in cima il DIALOG dandogli il valore di 1111, poi mostra al player un dialogo dove come titolo ci sarà scritto "Titolo" e sotto al titolo ci sarà scritto "Prova del menù", infine sotto vedremo un solo bottone, perchè il secondo è stato omesso

Ora passiamo alla parte che controlla quale sottomenù viene scelto dal player (nel caso del DIALOG_STYLE_LIST) oppure cosa viene scritto nel menù (nel caso del DIALOG_STYLE_INPUT) e vedere anche quale bottone viene premuto.

Per fare questo si deve usare il callback:
Codice:
OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])


Esso controlla quando un player sta visualizzando un dialogo.

playerid: Player che sta visualizzando il dialogo "dialogid"
dialogid: ID del dialogo visualizzato dal player
response: Bottone che viene premuto dal playerid, se viene premuto il bottone sinistro returnerà il valore true, se invece verrà premuto il bottone destro returnerà il valore false.
listitem: ID del sottomenù selezionato dal player (da usare solo con i dialoghi che hanno come stile il DIALOG_STYLE_LIST)
inputtext: Testo che viene scritto nel dialogo (da usare solo con i dialoghi che hanno come stile il DIALOG_STYLE_INPUT)

Ora vedremo uno esempio con tutti e tre gli stili.

- Primo Stile (DIALOG_STYLE_LIST)

Codice:
#define DIALOG 1111
ShowPlayerDialog(playerid, DIALOG, DIALOG_STYLE_LIST, "Teletrasporti", "Tele1\nTele2\nTele3\nTele4", "Ok", "Cancella");

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG) // funzione che controlla quale dialog sta visualizzando il player
    {
        if(reponse) // se preme il bottone sinistro
        {
             switch(listitem)
             {
                  case 0: SetPlayerPos(Coordinate Tele1);
                  case 1: SetPlayerPos(Coordinate Tele2);
                  case 2: SetPlayerPos(Coordinate Tele3);
                  case 3: SetPlayerPos(Coordinate Tele4);
             }
        }
        return 1;
    }
    return 1;
}


Questo semplice codice controlla se premete il bottone sinistro e quale sottomenù scegliete.

P.S. io ho usato lo switch e il case perché ci sono 4 sottomenù, nel caso ci siano 2 o 1 solo sottomenù utilizzate il if, in questo modo:

Codice:
if(listitem == 0)
{
    // Primo tele
}
ecc...


Possiamo anche creare dei sottomenù che contengano, a loro volta, altri sottomenù, in questo modo:

Codice:
swicth(listitem)
{
    case 0: SetPlayerPos(Coordinate Tele1);
    case 1: ShowPlayerDialog(playerid, DIALOGO, DIALOG_STYLE_LIST, "Menù 2", "ecc....", "Ok", "Cancella");
    case 2: SetPlayerPos(Coordinate Tele3);
    case 3: SetPlayerPos(Coordinate Tele4);
}


Come potete vedere, se nel 1° menù sceglierete il case 1(secondo sottomenù) egli vi aprirà un ulteriore dialogo con dentro altri sottomenù che potrete scegliere voi stessi.

- Secondo Stile (DIALOG_STYLE_INPUT)

I dialoghi che avranno come stile il DIALOG_STYLE_INPUT, avranno un piccolo spazio dove aggiungere ciò che volete scrivere.
Uso:

Codice:
#define DIALOG 1111
ShowPlayerDialog(playerid, DIALOG, DIALOG_STYLE_INPUT, "Inserisci", "Inserisci qua il tuo nome", "Ok", "Rifiuta");

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG) // funzione che controlla quale dialog sta visualizzando il player
    {
        if(reponse) // se preme il bottone sinistro
        {
             new nome[24]; GetPlayerName(playerid, nome, 24);
             if(!strcmp(nome, inputtext, true)) return 1;
             else return 0;
        }
        return 1;
    }
    return 1;
}


Questo codice mostra un dialogo dove dovete inserire il vostro nome, se il vostro nome sarà giusto, allora il dialogo darà il valore 1, altrimenti darà il valore 0

- Terzo Stile (DIALOG_STYLE_MSGBOX)

Sui dialoghi con questo stile non c'è molto da fare, infatti essi servono solo per mostrare delle scritte molto lunghe, per sempio un regolamento.
Come nel primo dialogo, per far andare a capo il testo bisogna mettere il \n prima del testo da portare a capo.
Però se creerete una stringa troppo lunga dentro il dialog potrebbe farvi questo solito errore:
Codice:
error 075: input line too long (after substitutions)

Esso può essere risolto creando due stringhe e formattandole in una sola, esempio:
Codice:
new str1[256] = "Testo della prima stringa";
new str2[256] = "Testo della seconda stringa";
new str3[512];
format(str3, 512, "%s%s", str1, str2);
ShowPlayerDialog(playerid, DIALOG, DIALOG_STYLE_MSGBOX, str3, "Ok", " ");


Qui termina la mia guida sui dialoghi, se avete qualche dubbio non esitate a postare ;)

_________________
Immagine


I Miei Filterscript Per Sa-Mp

Rampone System By me and Mik_Teck
Autovelox System By me and Mik_Teck
Metro System By me
pLaserPointer By me

Immagine


Top
 E-mail  
 

 Oggetto del messaggio: Re: [GUIDA] Uso dei dialoghi
MessaggioInviato: 26/01/2011, 21:32 
Banned

Iscritto il: 31/10/2010
Messaggi: 1363
Località: Sicilia
Favourite GTA: San Andreas
Xfire: peppinux

Karma
-10


Non connesso
Bella, complimenti ;).


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA] Uso dei dialoghi
MessaggioInviato: 26/01/2011, 22:14 
Avatar utente
Utente

Iscritto il: 18/11/2010
Messaggi: 352
Località: Valenza(AL)
Favourite GTA: San Andreas

Karma
0


Non connesso
Bella Angelo :D

_________________
Firma cancellata. Ripassa il regolamento.


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA] Uso dei dialoghi
MessaggioInviato: 26/01/2011, 22:38 
Avatar utente
Utente

Iscritto il: 22/12/2010
Messaggi: 1098
Località: Agrigento (Sicilia)
Favourite GTA: San Andreas
Xfire: In PM

Karma
0


Non connesso
Fantastica. Complimenti veramente :D

_________________
Immagine


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA] Uso dei dialoghi
MessaggioInviato: 26/01/2011, 22:41 
Avatar utente
Utente

Iscritto il: 31/10/2010
Messaggi: 901
Località: Universo - Via Lattea - Sistema Solare - Pianeta Terra - Europa - Italia - Sicilia - Grammichele(CT)
Favourite GTA: San Andreas
Xfire: Privato

Karma
2


Non connesso
grazie raga :D

_________________
Immagine


I Miei Filterscript Per Sa-Mp

Rampone System By me and Mik_Teck
Autovelox System By me and Mik_Teck
Metro System By me
pLaserPointer By me

Immagine


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA] Uso dei dialoghi
MessaggioInviato: 26/01/2011, 22:43 
Avatar utente
Utente

Iscritto il: 23/01/2011
Messaggi: 59
Favourite GTA: San Andreas
Xbox Live: GotGabriele
Xfire: ethan0nt

Karma
0


Non connesso
Ottima guida e anche molto utile ;)

_________________
Immagine
Immagine
Immagine

Le Mie Mappe:

viewtopic.php?f=42&t=695&p=6721#p6721
viewtopic.php?f=42&t=688


Top
 E-mail  
 
Visualizza ultimi messaggi:  Ordina per  
 Pagina 1 di 1 [ 6 messaggi ] 

  Apri un nuovo argomento Rispondi all’argomento

Tutti gli orari sono UTC + 1 ora [ ora legale ]



Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
cron