GTA-Center.com » Forum
http://www.gta-center.com/forums/

[GUIDA]Creare degli Auto-Message
http://www.gta-center.com/forums/viewtopic.php?f=40&t=809
Pagina 1 di 3

Autore:  mitosking [ 14/02/2011, 23:14 ]
Oggetto del messaggio:  [GUIDA]Creare degli Auto-Message

Salve a tutti. Questa è la mia seconda guida su gta-center. La prima, da quanto vedo, credo abbia fatto successo. In questa guida parlerò su come creare gli Auto-Message. In allegato ci sarà anche una guida sul Random ed una "ripresa" dei Timer.

INTRODUZIONE


Gli Auto-Message non sono dei veri e propri messaggi automatici. In poche parole viene attivato un Timer che invia un messaggio a caso (ovviamente scritto da noi) usando il cosiddetto Random. Se non avete le idee chiare, vi consiglio di leggere la seguente Guida ;).

GUIDA


La prima cosa da fare è quella di scegliere che messaggi vorremmo inviare in automatico. Io in questo caso sceglierò 3 messaggi:

1) "Salve, benvenuti sul mio Server!";
2) "Se avete bisogno di aiuto, contattatemi";
3) "Per chattare premi T e digita un messaggio".

Bene, adesso abbiamo i nostri tre messaggi che verranno cosi:

1) SendClientMessageToAll(rosso, "Salve, benvenuti sul mio Server!");
2) SendClientMessageToAll(bianco, "Se avete bisogno di aiuto, contattatemi");
3) SendClientMessageToAll(giallo, ""Per chattare premi T e digita un messaggio");

Perché ho usato la funzione SendClientMessageToAll? Perché noi dobbiamo far visualizzare il messaggio a tutte le persone online e, come sappiamo, la sintassi del SendClientMessageToAll è la seguente:
SendClientMessageToAll(colore, "Testo");

Adesso dobbiamo creare una nuova funzione che noi chiameremo "AutoMessage". Quindi, in basso all'ultima riga (oppure fuori da tutto), scriviamo:

Codice:
forward AutoMessage();
public AutoMessage()
{
    new mess = random(3);
    if(mess == 0) return SendClientMessageToAll(rosso, "Salve, benvenuti sul mio Server!");
    if(mess == 1) return SendClientMessageToAll(bianco, "Se avete bisogno di aiuto, contattatemi");
    if(mess == 2) return SendClientMessageToAll(giallo, "Per chattare premi T e digita un messaggio");
    return 1;
}


Adesso vi spiego passo passo cosa ho scritto. La prima cosa da scrivere è il public. AutoMessage è il nome della nostra funzione che ho precedentemente citato. Le due "()", come vedete, sono vuote. Qui vengono messi i parametri che faranno parte della nostra funzione. Esempio: Se noi metteremo "playerid", esso diventerà un parametro utilizzabile all'interno della funzione. Ma, siccome questa non è una guida sulle funzioni, non mi prolungherò molto su di esse. Ritornando allo script, potete notare che ho scritto new mess = random(3). Analizziamolo piano piano:

New serve a creare una variabile, in questo caso abbiamo creato la variabile mess. Poi abbiamo detto che mess è uguale a random(3). Cosa significa questo? Random è un "sistema" incorporato nel Pawno e serve a scegliere un numero casuale da 0 a "numero scritto"-1. Nel senso, se io metto come numero "3", esso sceglierà casualmente un numero da 0 a 2, visto che 3 - 1 = 2 (spero che in questo campo non abbiate problemi di sottrazione :sisi:). A questo punto noi abbiamo detto che alla variabile mess verrà attribuito un numero da 0 a 2. Poi gli altri script credo che a questo punto si capiscano. Leggendolo "in italiano" diremo così: SE mess è uguale a 0, mostrami il messaggio "Salve, benvenuti sul mio Server!". Stessa cosa per gli altri. Adesso però qualcuno si starà chiedendo: -Ma se io voglio fare un Random compreso fra un numero e un altro numero? Senza lo 0? Come faccio?
Semplice: Basterà aggiungere un +"numero" dopo random. In questo modo:

Codice:
new mess = random(20)+15;


Con questo codice diremo che mess sarà compreso tra 15 e 19 (perché 20 -1 = 19). Bene, adesso dobbiamo "startare" questi Auto-Message per renderli, quindi, automatici. Quindi in OnGameModeInit metteremo questa stringa:

Codice:
SetTimer("AutoMessage", 60000, true);


Analizziamo anche questo codice. Se non conoscete il SetTimer, visitate la guida scritta da Alby Fire sui Timer e TimerEx.

Guida -> viewtopic.php?f=40&t=647

"AutoMessage" ricorderete che è il nome della nostra funzione appena creata. 60000 è il tempo in cui dovrebbe svolgersi questa azione espresso in MilliSecondi. In poche parole, quando lo script viene avviato, dopo 1 minuto si azionerà la nostra funzione AutoMessage. True significa che, a fine Timer, esso viene riavviato cosicché da mandare sempre messaggi.

EDIT Della guida suggerito da ~Peppinux AKA Peppe_Stasu:

Per i più esperti, il codice:

Codice:
forward AutoMessage();
public AutoMessage()
{
    new mess = random(3);
    if(mess == 0) return SendClientMessageToAll(rosso, "Salve, benvenuti sul mio Server!");
    if(mess == 1) return SendClientMessageToAll(bianco, "Se avete bisogno di aiuto, contattatemi");
    if(mess == 2) return SendClientMessageToAll(giallo, "Per chattare premi T e digita un messaggio");
    return 1;
}


Potrebbe diventare molto più semplice e veloce da scrivere in questo modo:

Codice:
forward AutoMessage();
public AutoMessage()
{
    new mess = random(3);
    switch(mess)
    {
         case 0: SendClientMessageToAll(...);
         case 1: SendClientMessageToAll(...);
         case 2: SendClientMessageToAll(...);
    }
    return 1;
}


CREDITI


Guida creata da mitosking per Gta-Center. Vietata la copia parziale o totale.

Autore:  Angelo [ 14/02/2011, 23:34 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Bella :D

Autore:  mitosking [ 14/02/2011, 23:40 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Grazie, ma sono convinto che era meglio la guida precedente.

Autore:  Peppinux AKA Peppe_Stasu [ 14/02/2011, 23:48 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Questa mi sembra meglio ;) http://wiki.sa-mp.com/wiki/Random_Messages
Comunque complimenti.

Autore:  mitosking [ 14/02/2011, 23:50 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Peppinux, come ti ho già detto su MSN i Tutorial non sono fatti né per Angelo, né per te e né per altri che sono bravi. Sono fatti per chi non conoscono le cose. Mica potevo mettere Wiki :asd:

Autore:  Peppinux AKA Peppe_Stasu [ 15/02/2011, 0:04 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Comunque potevi cambiare
Codice:
    if(mess == 0) return SendClientMessageToAll(rosso, "Salve, benvenuti sul mio Server!");
    if(mess == 1) return SendClientMessageToAll(bianco, "Se avete bisogno di aiuto, contattatemi");
    if(mess == 2) return SendClientMessageToAll(giallo, "Per chattare premi T e digita un messaggio");

in
Codice:
switch(mess)
{
    case 0:
    case 1:
    case 2:
}

Autore:  mitosking [ 15/02/2011, 0:06 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Mmmm non lo sapevo. Mi servirà... Ma se dovrò cambiare lo script, devo cambiare tutto il testo della Guida. Lo aggiungo solamente.

EDIT: Peppinux ma se io metto, ad esempio, random(25) e dico che, se "mess" è uguale a 13, succede una cosa... Posso scriverlo cosi?

switch(mess)
{
case 13: Codice...;
return 1;
}

Autore:  Peppinux AKA Peppe_Stasu [ 15/02/2011, 0:18 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

switch(mess)
{
case 13: Codice
}
Ma se devi controllare solo un caso allora usa il normale if. Se ci sono più di 2 casi allora lo switch.

Autore:  mitosking [ 15/02/2011, 0:19 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Ok grazie non lo sapevo... Sinceramente stufava fare sempre if(...). Comunque ho aggiornato la guida aggiungendo i tuoi consigli ;)

Autore:  Peppinux AKA Peppe_Stasu [ 15/02/2011, 18:11 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Bene comunque non è questione di essere più esperti o meno esperti :asd: usare i case è meglio di usare gli if in quel caso ;).

Autore:  .:Phantom:. [ 15/02/2011, 18:13 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Carina :uhmsese:

Autore:  mitosking [ 15/02/2011, 18:19 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Peppinux AKA Peppe_Stasu ha scritto:
Bene comunque non è questione di essere più esperti o meno esperti :asd: usare i case è meglio di usare gli if in quel caso ;).


Esperti intendevo che avessero un buon approccio con le variabili. Senno farebbero solo confusione leggendo switch e case. Te lo assicuro, almeno io quando non sapevo usarli appena leggevo switch cambiavo subito argomento perché causava solo confusione (almeno a me). Vabbé sono liberi di usarlo, io l'ho scritto. Se si sentono esperti, lo usano ù.ù.

Autore:  Alby Fire [ 15/02/2011, 18:22 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Sarò sincero, la precedente guida era veramente utile, questa non mi piace molto, mi pare che non abbia nessuna spiegazione in più del wiki o di altre guide, sarebbe stato meglio aggiungere altro a mio parere :sisi:

Autore:  mitosking [ 15/02/2011, 18:27 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Si Alby anche io lo pensai... Ma non sapevo cosa scrivere. In realtà volevo fare una guida sui Random, ma poi mi venne in mente questa. Credevo che nel Random avrei scritto poco. Comunque per la Wiki credo che tu non abbia tanto ragione. Cioè è vero, nella SA-MP Wiki è spiegato tutto meglio di questo topic, ma c'è gente che di inglese ne capisce poco oppure gente che non ha professori di inglese buoni e quindi non studiano mai (a me è capitato, ma fortunatamente abbiamo cambiato e adesso sto cominciando ad apprezzare l'inglese). Vabbé poi ognuno è libero di scegliere quale guida seguire ;)

Autore:  Tom_Tom [ 29/03/2011, 20:52 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Ma è possibile che quando provo a fare qualcosa io non mi va mai niente?...
Mi date una mano per favore?

Autore:  Giovanni94m [ 29/03/2011, 21:47 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Se ti riferisci a questa guida posta i problemi che riscontri.
Se invece parli in generale apri un topic nella sezione Aiuti Scripting ;)

Autore:  Tom_Tom [ 30/03/2011, 18:14 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Non è in generale, non riesco proprio a inserire l'automessage.

Autore:  mitosking [ 30/03/2011, 21:45 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Ti do lo script direttamente, poi se funge ti spiego cosa significa.

Codice:
// In OnGameModeInit inserisci (all'interno)

SetTimer("AutoMessage", 60000, true);

// In basso a tutto quanto (intendo l'ultima riga della GM)

forward AutoMessage();
public AutoMessage()
{
new mess = random(3);
switch(mess)
{
case 0: SendClientMessageToAll(-1, "Mess 1");
case 1: SendClientMessageToAll(-1, "Mess 2");
case 2: SendClientMessageToAll(-1, "Mess 3");
}
return 1;
}


Quindi, nel public (la funzione creata sotto a tutto), inserisci i messaggi tra gli " " nei vari SendClientMessageToAll. Ho messo che, ogni 60 secondi, invia un messaggio random tra i 3 scritti. Se vuoi che siano di più, cambia il 60000 in SetTimer con i millisecondi che vuoi tu.

Come calcolare i millisecondi (spero di non spingermi più così in basso D:)

Se vuoi che siano, ad esempio, 220 secondi, basta fare 220 x 1000 = 220000. Non proseguo più sennò qui certa gente mi massacra :asd: comunque fammi sapere se ti funziona ;)

Autore:  Tom_Tom [ 30/03/2011, 22:15 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

mitosking ha scritto:
Ti do lo script direttamente, poi se funge ti spiego cosa significa.

Codice:
// In OnGameModeInit inserisci (all'interno)

SetTimer("AutoMessage", 60000, true);

// In basso a tutto quanto (intendo l'ultima riga della GM)

forward AutoMessage();
public AutoMessage()
{
new mess = random(3);
switch(mess)
{
case 0: SendClientMessageToAll(-1, "Mess 1");
case 1: SendClientMessageToAll(-1, "Mess 2");
case 2: SendClientMessageToAll(-1, "Mess 3");
}
return 1;
}


Quindi, nel public (la funzione creata sotto a tutto), inserisci i messaggi tra gli " " nei vari SendClientMessageToAll. Ho messo che, ogni 60 secondi, invia un messaggio random tra i 3 scritti. Se vuoi che siano di più, cambia il 60000 in SetTimer con i millisecondi che vuoi tu.

Come calcolare i millisecondi (spero di non spingermi più così in basso D:)

Se vuoi che siano, ad esempio, 220 secondi, basta fare 220 x 1000 = 220000. Non proseguo più sennò qui certa gente mi massacra :asd: comunque fammi sapere se ti funziona ;)

Devo metterlo nella GM giusto?
Credo di si bhe la metto e poi ti faccio sapere.

Autore:  Tom_Tom [ 30/03/2011, 22:32 ]
Oggetto del messaggio:  Re: [GUIDA]Creare degli Auto-Message

Niente da fare... Ho anche modificato mettendo ogni 2 secondi ma nn compare niente... Cosa faccio?

Pagina 1 di 3 Tutti gli orari sono UTC + 1 ora [ ora legale ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/