GTA-Expert Forum: [GUIDA] Usare le matrici - GTA-Expert Forum

Salta al contenuto

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

[GUIDA] Usare le matrici Per principianti

#1 L'utente è offline   Angelo_95 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1620
  • Iscritto il: 31/08/09
  • Provenienza:Area 51
  • GTA Preferito:GTA: San Andreas

Inviato il 31 agosto 2010 - 12:44

In questa guida spiegherò come usare le matrici, cioè quegli array contenenti al loro interno ID,Frasi,Float,ecc Ecco come usarle:

Prima di tutto vediamo la struttura di una matrice

new NOMEMATRICE[Numero Argomenti][]

In NOMEMATRICE va messo il nome per definire la matrice

In numero argomenti va messo il numero di argomenti contenuti in essa esempio
new we[3][]={
"we",
"wee",
"rte"
};

In questo caso ci sn tre argomenti (le parole we,wee e rte

Ciò che si mette nelle seconde parentesi "[]" cambia in base agli argomenti definiti, esempio se gli argomenti contenuti nella matrice sono delle frasi e o delle parole metti la lughezza delle stringhe, se invece gli argomenti sono delle coordinate, mettiamo tanti numeri quante sono le Float delle coordinate, esempio se la coordinata sarà strutturata così

1020.5,2321.4,123.4,98.9

metteremo 4 tra le parentesi xk i float sono 4
X, Y, Z e L'angolo.

Esempi con le matrici:

1° Fare un random spawn
Prima di tutto creiamo la nostra Variabile
new Float:RandomSpawns[3][3]={//metto new Float perchè le coordinate sono dei Float
{COORDINATA 1},
{COORDINATA 2},
{COORDINATA 3},
{COORDINATA 4}
};

Analiziamo il codice: viene creata una specie di tabella che contiene tre coordinate, il primo [4] sta per il numero delle coordinate presenti mentre il secondo [3] sta per X,Y e Z.

Continuamo la guida:
Nel comando /dm mettiamo:
if(!strcmp(cmd,"/dm",true)){
new dmrand=random(sizeof(RandomSpawns)); //crea un random tra le 4 coordinate
SetPlayerPos(playerid,RandomSpawns[dmrand][0],RandomSpawns[dmrand][1],RandomSpawns[dmrand][2]);//setta la posizione del player in una delle 4 coordinate a caso.
return 1;
}


Analiziamo il codice: Prima di tutto creiamo un random della tabella che abbiamo creato(quindi crea un random tra le 4 coordinate)
Poi Settiamo la pos del player Ad una delle 4 coordinate
[dmrand] è il random che abbiamo creato,
[0],[1],[2] sono le posizioni X, Y, Z della coordinate scelta(per questo sopra abbiamo messo [3] per definire X Y e Z.

2° Usare le tabelle con degli ID

new Veicoli[3]={522,520,411};

Con questo codice possiamo dire che se il player entra in uno di questi veicoli viene kickato, esempio:
public OnPlayerEnterVehicle(playerid,vehicleid,ispassenger)
{
for(new v=0;v<100;v++) if(vehicleid==Veicoli[v]) Kick(playerid);
return 1;
}


3° Usare le tabelle con delle parole

new Strings[4][100]={ //in questo caso nelle seconde parentesi metto la lunghezza delle stringhe
"Cornuto",
"Bastardo",
"Troia",
"Puttana"
};


Con questa tabella potremmo creare un sistema anti parolaccie esempio
public OnPlayerText(playerid,text[])
{
for(new t=0;t<4;t++) if(!strfind(text,Strings[t],true)) return 0;
return 1;
}


4° creare un sistema di annunci
new Annunci[3][128]={//metto sempre la lunghezza della stringa
{"we sono io"},
{"we sei te"},
{"we non c'è .-."}
};
new we=0;

In OnGameModeInit
SetTimer("ann",600000,true);//setta un timer per far eseguire il callback "ann"

Fuori dai callback

forward ann();
public ann()
{
if(we==0){SendClientMessageToAll(COLOR_RED,Annunci[0]);we++;}
if(we==1){SendClientMessageToAll(COLOR_RED,Annunci[1]);we++;}
if(we==2){SendClientMessageToAll(COLOR_RED,Annunci[2]);we=0;}
}

In questo modo dopo il primo msg invierà il secondo e dopo il secondo il terzo e così via

Quindi come vedete queste tabelle sono utilissime

Spero che la guida sia comprensibile :)

Messaggio modificato da [PNC]Angelo il 31 agosto 2010 - 16:22

Immagine Postata
0

#2 L'utente è offline   _All3Xz_ 

  • Criminale
  • Gruppo: Utenti
  • Messaggi: 1512
  • Iscritto il: 05/01/09
  • GTA Preferito:GTA: San Andreas

Inviato il 31 agosto 2010 - 14:46

spiegata malissimo, parti dai random spawn e finisci alle matrici, le guide vanno fatte bene non alla c***o di cane...
poi sii più preciso nelle spiegazioni
My Works
[FS]_All3Xz_ Anti-Cheat 4
[FS]_All3Xz_ Anti-Cheat 7
[FS]_All3Xz_ Anti-Cheat 8
[GM] PVCM Training 0.? (MySQL)
[APP]_All3Xz_ NPC Generator
[GUIDA] Leggere da file usando dini
[GUIDA] Scripting GTA:IV - Callbacks
[GM] PVCM Training 1 (MySQL)
[GM] PVCM A/D
[GUIDA] Leggere da file usandi dini 2
0

#3 L'utente è offline   Angelo_95 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1620
  • Iscritto il: 31/08/09
  • Provenienza:Area 51
  • GTA Preferito:GTA: San Andreas

Inviato il 31 agosto 2010 - 16:09

si è che volevo partire con i random spawns, poi ho pensato "Che alcuni non potrebbero capire cosa sono le matrici così ho spiegato anche come funzionano, modifico per renderlo più realistico ;)
Immagine Postata
0

#4 L'utente è offline   Peppinux aka Peppe_Stasu 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 2056
  • Iscritto il: 16/04/10
  • GTA Preferito:GTA: San Andreas

Inviato il 31 agosto 2010 - 16:17

Comunque utile ;)
0

#5 L'utente è offline   Angelo_95 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1620
  • Iscritto il: 31/08/09
  • Provenienza:Area 51
  • GTA Preferito:GTA: San Andreas

Inviato il 31 agosto 2010 - 16:30

un amministratore potrebbe cambiare il titolo in [GUIDA]Usa le matrici
Immagine Postata
0

#6 L'utente è offline   Skiaffo 

  • Boss
  • Gruppo: Moderatori
  • Messaggi: 14732
  • Iscritto il: 08/12/05
  • Provenienza:Urbs Aeterna
  • GTA Preferito:GTA V

Inviato il 01 settembre 2010 - 00:30

Quote

Angelo' date='31 agosto 2010 - 17:30' timestamp='1283268646' post='432345']
un amministratore potrebbe cambiare il titolo in [GUIDA]Usa le matrici


fatto

Comunque,

public ann() {
  SendClientMessageToAll(COLOR_RED, Annunci[we]);
  we ++;
  if (we == sizeof(Annunci)) we = 0;
}


E' meglio così perchè se di messaggi ne decidi di mettere 150, col metodo tuo verrebbero 150 linee, col mio rimangono sempre 3 :sese: e nella matrice puoi aggiungere quanti messaggi vuoi, non dovrai mai cambiare niente nel public ann()


Stessa cosa qua:

public OnPlayerEnterVehicle(playerid,vehicleid,ispassenger) {
  for(new v=0;v<sizeof(Veicoli);v++) if(vehicleid == Veicoli[v]) Kick(playerid);
  return 1;
}


aggiungi quanti numeri vuoi nella matrice e non devi toccare di nuovo questa parte
"Audentes Fortuna iuvat"
0

#7 L'utente è offline   Angelo_95 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1620
  • Iscritto il: 31/08/09
  • Provenienza:Area 51
  • GTA Preferito:GTA: San Andreas

Inviato il 01 settembre 2010 - 11:35

che cambia se metto for(new v=0;v<sizeof(Veicoli);v++) e for(new v=0;v<3;v++)

credo sia la stessa cosa
Immagine Postata
0

#8 L'utente è offline   Skiaffo 

  • Boss
  • Gruppo: Moderatori
  • Messaggi: 14732
  • Iscritto il: 08/12/05
  • Provenienza:Urbs Aeterna
  • GTA Preferito:GTA V

Inviato il 01 settembre 2010 - 11:51

Quote

Angelo' date='01 settembre 2010 - 12:35' timestamp='1283337350' post='432638']
che cambia se metto for(new v=0;v<sizeof(Veicoli);v++) e for(new v=0;v<3;v++)

credo sia la stessa cosa


Si ma ti ho spiegato che se poi vuoi aggiungere altri 5 veicoli dentro la matrice, devi tornare poi a modificare il 3 in OnPlayerEnterVehicle, se invece metti sizeof(Veicoli) puoi aggiungere quanti veicoli vuoi nella matrice senza dover tornare a modificare. Sono piccolezze ma se lo script diventa enorme e ci sono tante di queste "piccolezze" e aggiungi una modifica grossa è un casino tornare a modificare e ricordarsi tutto, meglio che sia automatizzato no?
"Audentes Fortuna iuvat"
0

#9 L'utente è offline   Angelo_95 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1620
  • Iscritto il: 31/08/09
  • Provenienza:Area 51
  • GTA Preferito:GTA: San Andreas

Inviato il 01 settembre 2010 - 12:19

ok grx ;)
Immagine Postata
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