Oggi è 27/06/2022, 15:50

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





 Pagina 1 di 1 [ 11 messaggi ] 

  Apri un nuovo argomento Rispondi all’argomento

  Stampa pagina

Autore Messaggio
 Oggetto del messaggio: [GUIDA]Sscanf & zcmd
MessaggioInviato: 25/01/2011, 15:36 
Avatar utente
Utente

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

Karma
0


Non connesso
Salve, in questa guida vi illustrerò l'utilizzo del zcmd e dello sscanf:
• zcmd:
Descrizione: lo zcmd è stato creato da Zeex, con lo scopo di creare un comando:
-Più veloce da creare.
-Più veloce da eseguire(per il server).
-Più leggero.
Installazione: Per utilizzarlo vi basterà scaricare l'include da QUI, inserire il file .inc nella cartella pawno/includes, ed inserire in cima alla vostra GameMode/FilterScript sotto ad
#include <a_samp>
mettete
#include <zcmd>
Lo zcmd, come il dcmd, ha il "params" incorporato nella sintassi del comando, per cui non avrete bisogno di utilizzare lo strtok, perciò "params" assumerà il valore di quello che scriverete dopo il comando.
Come Utilizzarlo: lo zcmd possiede la seguente sintassi di utilizzo:
Codice:
CMD:mycommand(playerid, params[])

Il "CMD" può essere anche cambiato in "COMMAND" o in "command", il risultato non cambia.
N.B: lo zcmd non andrà MAI messo sotto l'OnPlayerCommandText , ma andrà messo fra un callback e l'altro, oppure in fondo alla GameMode/FilterScript.
Esempio: lo zcmd può essere usato anche con le variabili "strval" e "strlen" , anche se questo metodo è sconsigliato per motivi che vedrete nella parte dello sscanf della guida:
Codice:
CMD:slap(playerid, params[])
{
   new pid;
   new Float:X, Float:Y, Float:Z;
   pid = strval(params);
   GetPlayerPos(pid, Float:X, Float:Y, Float:Z);
   SetPlayerPos(playerid, Float:X, Float:Y, Float:Z+15);
   return 1;
}

A questo punto avremo creato il nostro comando /slap [ID] assegnando la variabile "pid" al parametro "params" con lo strval.

• sscanf:
Descrizione: lo sscanf è stato creato dallo scripter "Y_Less", consiste in una funzione utilizzabile sia nello zcmd che nel dcmd, sotto vi sarà mostrata l'installazione e l'utilizzo.
Installazione: per poterlo utilizzare avrete bisogno del Plugin e dell'Include sscanf v2.0 scaricabile da QUI
Aggiungete in cima alla vostra GameMode/FilterScript
sotto ad
#include <a_samp>
mettete
#include <sscanf2>
Come Utilizzarlo: lo sscanf è una funzione che simula lo strlen e lo strval, creandone una stringa molto più efficiente e specifica in quanto è possibile selezionare il tipo di variabile utilizzata nel comando.
La sintassi è la seguente:
Codice:
if(sscanf(params, "tipo/i variabile/i", nomevariabile))

Fra le "" dove bisognerà inserire il tipo della variabile da utilizzare, dovrete mettere la lettera che indicherà quale tipo di variabile volete utilizzare, questa è la lista di quelle disponibili:
Codice:
s                       Stringa                      ciao
i, d         Numeri Interi      1, 42, -10
c         Caratteri         a, o, *
l         variabili booleane      true, false
b         Codici Binari         01001, 01100
h, x         Codici Hex(colori)      1A, 0x23
o         Codice Ottale      045 12
n         Number         42, 0b010, 0xAC, 045
f         Float            0.7, -99.5
u         Nome/id (players e bot)   Y_Less, 0
q         Nome Bot/id      ShopBot, 27
r         Nome Player/id      Y_Less, 42

Seguendo questo schema sarà possibile creare ogni tipo di comando.
N.B: Non bisogna MAI omettere oppure mettere a caso l'indicatore, dato che si rischia di buggare la GM, vengono inviati warnings dallo sscanf nella console, il comando non funziona come voluto.
IMPORTANTE: questo schema può essere usato per qualsiasi variabile, bisogna stare attenti però alle variabili di tipo "s", di stringa, perchè oltre ad inserire l'indicatore bisognerà indicare il numero delle celle utilizzate a fianco(per esempio "s[50" se vengono utilizzate 50 celle), oppure non fungerà e darà warning nella console.
Esempi:
Codice:
CMD:slap(playerid, params[])
{
   new pid;
   new Float:X, Float:Y, Float:Z;
   if(sscanf(params, "u", pid)) return SendClientMessage(playerid, 0xFF000000, "Uso: /slap [ID/nomeplayer]");
   GetPlayerPos(pid, Float:X, Float:Y, Float:Z);
   SetPlayerPos(playerid, Float:X, Float:Y, Float:Z+15);
   return 1;
}

A questo punto avremo creato il comando /slap [ID/nomeplayer], potremmo usare /goto alby oppure /goto 1, avendo utilizzato come indicatore "u", se avessimo usato "r" potevamo fare solo /goto 1.
Per i comandi con più parametri da inserire, avremo bisogno di inserire più indicatori nei campi dello sscanf, esempio:
Codice:
CMD:sethp(playerid, params[])
{
    new Pid, Float:Health;
    if(sscanf(params, "uf", Pid, Health)) return SendClientMessage(playerid, 0xFF000000, "Uso: /Sethp [ID/nomeplayer] [vita]");
    SetPlayerHealth(Pid, Health);
    return 1;
}

Come vedete ho inserito gli indicatori "u" e "f" dove u indica l'ID o il nome del player che andrò ad inserire, ed f indica la vita che andrò a settare al player.

Guida creata da Alby Fire.
Non copiatela ed incollatela in giro senza crediti.

Alla prossima :trollface:

_________________
Firma cancellata. Ripassa il regolamento.


Top
 E-mail  
 

 Oggetto del messaggio: Re: [GUIDA]Sscanf & zcmd
MessaggioInviato: 25/01/2011, 15:47 
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
Bella guida :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]Sscanf & zcmd
MessaggioInviato: 25/01/2011, 15:47 
Avatar utente
Administrator

Iscritto il: 02/09/2010
Messaggi: 1349
Località: Agrigento
Favourite GTA: Vice City
PlayStation Network: Giovanni94m
Xfire: Giovanni94m
Steam: Giovanni94m

Karma
10


Non connesso
Grande Alby ottima guida. Davvero molto utile.
Continua così ;)

_________________
Immagine
Immagine
Immagine
Immagine
Immagine
Immagine
Immagine


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA]Sscanf & zcmd
MessaggioInviato: 25/01/2011, 16:06 
Utente

Iscritto il: 06/11/2010
Messaggi: 197
Favourite GTA: San Andreas

Karma
1


Non connesso
Non è vero che è sempre consigliabile lo sscanf.
Ad esempio se si necessita un solo valore intero si può usare tranquillamente e in modo più veloce, senza fare calcoli inutili con lo sscanf, il classico strval, oppure se è solo una stringa usare direttamente la stringa params. In poche parole per quanto riguarda i comandi usate lo sscanf solo quando necessitate di più di un parametro oppure se vi serve il parametro user/bot/player.
Inoltre per vedere se la stringa del params è nulla non utilizzate !strlen(params), poiché non funzionerà dato che nel CallLocalFunction non si possono passare stringhe vuote, ma usate isnull(params) (funzione predefinita nell'include del zcmd), che è applicabile anche in casi normali ed è anche più veloce del classico strlen.
Sullo sscanf hai detto tante, ma tante cazzate e comunque quello nei comando è solo un piccolo caso in cui è utile, poiché ha tantissime utilità, soprattutto nella versione plugin.

Nel complesso la guida è buona per chi di scripting non ci capisce una minchia (PS: non è una critica, non frantendere).


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA]Sscanf & zcmd
MessaggioInviato: 25/01/2011, 16:19 
Avatar utente
Utente

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

Karma
0


Non connesso
Peppe ha scritto:
Non è vero che è sempre consigliabile lo sscanf.
Ad esempio se si necessita un solo valore intero si può usare tranquillamente e in modo più veloce, senza fare calcoli inutili con lo sscanf, il classico strval, oppure se è solo una stringa usare direttamente la stringa params. In poche parole per quanto riguarda i comandi usate lo sscanf solo quando necessitate di più di un parametro oppure se vi serve il parametro user/bot/player.
Inoltre per vedere se la stringa del params è nulla non utilizzate !strlen(params), poiché non funzionerà dato che nel CallLocalFunction non si possono passare stringhe vuote, ma usate isnull(params) (funzione predefinita nell'include del zcmd), che è applicabile anche in casi normali ed è anche più veloce del classico strlen.
Sullo sscanf hai detto tante, ma tante cazzate e comunque quello nei comando è solo un piccolo caso in cui è utile, poiché ha tantissime utilità, soprattutto nella versione plugin.

Nel complesso la guida è buona per chi di scripting non ci capisce una minchia (PS: non è una critica, non frantendere).

Intendevo dire che io, personalmente, non consiglio di usare a volte lo strlen e a volte lo sscanf, come hai detto tu.
Comunque quel messaggio, "hai detto tante cazzate ma tante cazzate sullo sscanf", guarda che nessuno ha chiesto il tuo parere, qui puoi commentare scrivendo correzioni o impressioni personali non scrivendo "hai detto tante cazzate" :dry: .
Piuttosto fai qualcosa di utile per una volta in tutta la tua vita, posta qui le correzioni di dove vedi degli errori nella mia guida, invece di commentare con termini insulsi e sgradevoli a riguardo, rimarcando il tuo comportamento estremamente infantile (non è una critica eh, non fraintendermi ;) )

_________________
Firma cancellata. Ripassa il regolamento.


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA]Sscanf & zcmd
MessaggioInviato: 25/01/2011, 16:30 
Avatar utente
Utente

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

Karma
0


Non connesso
Magnifica Alby ;)... Continua cosi... Adesso ho capito cosa sono sscanf ed zcmd :D.

_________________
Immagine


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA]Sscanf & zcmd
MessaggioInviato: 25/01/2011, 16:40 
Banned

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

Karma
-10


Non connesso
Carina ma si poteva fare meglio e Peppe ha ragione su alcuni punti.
Comunque complimenti ;).


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA]Sscanf & zcmd
MessaggioInviato: 25/01/2011, 16:53 
Avatar utente
Utente

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

Karma
0


Non connesso
Grazie a tutti :D
Peppinux AKA Peppe_Stasu ha scritto:
Peppe ha ragione su alcuni punti.

Non lo metto in dubbio che abbia fatto degli errori, infatti avrebbe dovuto postare qui le correzioni.

_________________
Firma cancellata. Ripassa il regolamento.


Ultima modifica di Giovanni94m il 25/01/2011, 16:57, modificato 1 volta in totale.
Non iniziamo


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA]Sscanf & zcmd
MessaggioInviato: 25/01/2011, 17:58 
Utente

Iscritto il: 06/11/2010
Messaggi: 197
Favourite GTA: San Andreas

Karma
1


Non connesso
Alby Fire ha scritto:
Grazie a tutti :D
Peppinux AKA Peppe_Stasu ha scritto:
Peppe ha ragione su alcuni punti.

Non lo metto in dubbio che abbia fatto degli errori, infatti avrebbe dovuto postare qui le correzioni.

E perché avrei dovuto? Hai scritto delle nabbate, punto, non rosicare.


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA]Sscanf & zcmd
MessaggioInviato: 25/01/2011, 18:36 
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
Per favore cerchiamo di non portare avanti questa discussione. Stop OT per tutti e due.

_________________
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


Ultima modifica di Peppinux AKA Peppe_Stasu il 25/01/2011, 18:39, modificato 1 volta in totale.
Avevi scritto "fare" al posto di "favore" e "no" al posto di "non". Ho corretto LOL


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA]Sscanf & zcmd
MessaggioInviato: 25/01/2011, 18:43 
Utente

Iscritto il: 06/11/2010
Messaggi: 197
Favourite GTA: San Andreas

Karma
1


Non connesso
Angelo ha scritto:
Per favore cerchiamo di non portare avanti questa discussione. Stop OT per tutti e due.

Non stiamo per niente off topic.


Top
 E-mail  
 
Visualizza ultimi messaggi:  Ordina per  
 Pagina 1 di 1 [ 11 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 2 ospiti


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