GTA-Expert Forum: [GUIDA] Uso del DCMD - GTA-Expert Forum

Salta al contenuto

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

[GUIDA] Uso del DCMD

#1 L'utente è offline   Supdario 

  • GTA-Expert Webmaster
  • Gruppo: Admin
  • Messaggi: 8635
  • Iscritto il: 08/12/05
  • GTA Preferito:GTA: San Andreas

Inviato il 27 maggio 2007 - 10:55

Per adesso, i comandi base in OnPlayerCommandText sono "strtok", "strval" e "strcmp", ma sono poco organizzati e sfruttano moltissime risorse del server, soprattutto se si hanno molti comandi.

Questo metodo, chiamato "dcmd", è stato creato da DracoBlue, ed è organizzato meglio, e molto più veloce (anche più di 5 volte). Il succo, sta in questa riga, da inserire ad inizio script:

#define dcmd(%1,%2,%3) if ((strcmp(%3, "/%1", true, %2+1) == 0)&&(((%3[%2+1]==0)&&(dcmd_%1(playerid,"")))||((%3[%2+1]==32)&&(dcmd_%1(playerid,%3[%2+2]))))) return 1

(è una riga sola)

Usarlo è molto semplice, e sarà così:

#define dcmd(%1,%2,%3) if ((strcmp(%3, "/%1", true, %2+1) == 0)&&(((%3[%2+1]==0)&&(dcmd_%1(playerid,"")))||((%3[%2+1]==32)&&(dcmd_%1(playerid,%3[%2+2]))))) return 1

 dcmd_lol(const playerid,const params[]) {
   //QUI IL CODICE
   return 1;
  }

 dcmd_asd(const playerid,const params[]) {
   //QUI IL CODICE
   return 1;
  }

public OnPlayerCommandText(playerid, const cmdtext[])
{

  dcmd(lol,3,cmdtext);
  dcmd(asd,3,cmdtext);
  return 0;
}


Come vedete è molto semplice: basta mettere la stringa "magica", e si può già usare il sistema. L'uso del comando "dcmd" è questo:

dcmd(nomecomando,lunghezzacomando,cmdtext);

Il nome del comando dev'essere inserito senza il "/" iniziale, e la lunghezza del comando è il numero dei caratteri. Ad esempio login sarà 5, kick sarà 4.

Poi basta creare dei comandi così:


dcmd_nomecomando(const playerid,const params[]) {
//Codice
return 1;
}


Le variabili disponibili sono "playerid" e "params" (i parametri del comando), quindi se se uno fa /kick 5, il parametro "params" sarà 5.

Se invece si vogliono usare più parametri, ad esempio per fare /giveweapon nick arma munizioni (es: /giveweapon >RLZ
dcmd_giveweapon(playerid,params[]) {
 new idx=0;
 new nick[256]=strtok(params,idx);
 new weapon[256]=strtok(params,idx);
 new amount=strval(strtok(params,idx));
 // ECC....
}

In questo caso bisogna usare ancora strtok, ma è molto meglio organizzato e veloce.

Sistema tratto da questo topic e tradotto da me.

-------------

In caso abbiate SA-MP 0.2, usate questa stringa:
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

0

#2 L'utente è offline   Patrick 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 1886
  • Iscritto il: 25/03/07
  • GTA Preferito:Sconosciuto

Inviato il 27 maggio 2007 - 10:57

Zio sup.. lo provo subito XD
0

#3 L'utente è offline   Jackie 

  • Ladro
  • Gruppo: Utenti
  • Messaggi: 591
  • Iscritto il: 08/01/07
  • GTA Preferito:Sconosciuto

Inviato il 27 maggio 2007 - 11:40

Ottimo :ahsese:
0

#4 L'utente è offline   Wesker 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 1723
  • Iscritto il: 04/01/07

Inviato il 27 maggio 2007 - 12:00

Lo sto adottando per il mio FS. :lode:
Firma cancellata perchè fuori norma, leggi il regolamento. Il codice precedente è stato inviato per Messaggio Privato.
0

#5 L'utente è offline   Fabio206 

  • Padrino
  • Gruppo: Admin
  • Messaggi: 72430
  • Iscritto il: 05/12/05
  • GTA Preferito:GTA III

Inviato il 27 maggio 2007 - 12:53

Ottimo sup ;)
0

#6 L'utente è offline   MarkGta 

  • Assassino
  • Gruppo: Utenti
  • Messaggi: 4969
  • Iscritto il: 12/12/06
  • GTA Preferito:Sconosciuto

Inviato il 27 maggio 2007 - 13:47

Non capisco,
il DCMD come potrebbe essermi utile?
Capisco che è utile quando si usano molti comandi,in pratica è più fa più ordine?
Immagine Postata
0

#7 L'utente è offline   Supdario 

  • GTA-Expert Webmaster
  • Gruppo: Admin
  • Messaggi: 8635
  • Iscritto il: 08/12/05
  • GTA Preferito:GTA: San Andreas

Inviato il 27 maggio 2007 - 15:06

Quote

Originally posted by Markgta@27/05/07 - 14:47
Non capisco,
il DCMD come potrebbe essermi utile?
Capisco che è utile quando si usano molti comandi,in pratica è più fa più ordine?

E' più veloce (in esecuzione), organizzato meglio, e più facile da usare.
0

#8 L'utente è offline   MarkGta 

  • Assassino
  • Gruppo: Utenti
  • Messaggi: 4969
  • Iscritto il: 12/12/06
  • GTA Preferito:Sconosciuto

Inviato il 27 maggio 2007 - 15:11

Ok capito,credo che lo usero.
Immagine Postata
0

#9 L'utente è offline   Supdario 

  • GTA-Expert Webmaster
  • Gruppo: Admin
  • Messaggi: 8635
  • Iscritto il: 08/12/05
  • GTA Preferito:GTA: San Andreas

Inviato il 08 giugno 2007 - 14:45

Aggiunta la stringa per SAMP 0.2.
0

#10 L'utente è offline   xPeppe 

  • Teppista
  • Gruppo: Utenti
  • Messaggi: 208
  • Iscritto il: 27/12/09
  • GTA Preferito:Sconosciuto

Inviato il 04 marzo 2010 - 23:04

Non sarebbe utile metterlo nella sottosezione Guide & Toutorial?
lol
0

#11 L'utente è offline   Peppe951 

  • Tirapiedi
  • Gruppo: Utenti
  • Messaggi: 899
  • Iscritto il: 14/07/09
  • GTA Preferito:Sconosciuto

Inviato il 04 marzo 2010 - 23:07

Ormai è vecchissimo il dcmd

Ora c'è il zcmd, che si puo abbinare al sscanf per ottenere risultati migliori:
http://forum.gta-exp...showtopic=38417
0

#12 L'utente è offline   Fabio206 

  • Padrino
  • Gruppo: Admin
  • Messaggi: 72430
  • Iscritto il: 05/12/05
  • GTA Preferito:GTA III

Inviato il 04 marzo 2010 - 23:07

E' un topic di tre anni fa :gh: vabbè sposto
0

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

1 utenti stanno leggendo questa discussione
0 utenti, 1 ospiti, 0 utenti anonimi