NB: In uno script non è possibile crearne più di uno.
Ora vediamo come si crea un thread:
- Thread.
004F: create_thread @label 004E: end_thread
Analizziamo il codice:
create_thread : crea un thread collegato a un label.
end_thread : chiudiamo il thread specificato sopra.
Ora, verrà la parte vera e propria del thread
:
:label 03A4: name_thread 'LABEL' :LABEL_1 wait 250 if 0AB0: key_pressed 8 else_jump @LABEL_1 jump @LABEL_2 :LABEL2 wait 100 01E3: text_1number_styled 'M_PASSED' 0 5000 ms 1 // MISSION PASSED!
Analizziamo il codice riportato sopra:
:label : Label del thread. ( vedi sotto le sue funzioni )
name_thread 'LABEL' : è il nome del thread, i label creati entro di esso verranno rinominati in LABEL_NUMEROSEQUENZA.
Le altre funzioni sono dei label, leggi sotto per la spiegazione.
Questo qui sopra è un thread, se io schiaccio il tasto 8 in game ( SPRINT ) mi comparirà la scritta MISSION PASSED!. Ora che vi ho fatto un esempio dei thread, passiamo a i label.
- Labels.
I Labels sono delle semplici FUNZIONI che vengono eseguite nel tempo che deciderete.
Esempio:
:LABEL1 wait 250 if Pickup.Picked_up($PICKUP) jump_if_false @LABEL1 Actor.Health($PLAYER_ACTOR) = 250
Analizziamo:
:LABEL1 : Nome del label, potete dargli qualsiasi nome basta solo che ricordate di cambiarlo nei jump, else_jump e etc.
wait 250 : attende 250 millescondi prima di eseguire le azioni di sotto, 1000 = un secondo, 10000 = dieci secondi, 60000 = 1 minuto.
if : Condizione spiegata sotto.
Pickup.Picked_up($PICKUP) : Controlla se la variabile $PICKUP pickup è stato raccolto.
jump_if_false @LABEL1 : Condizione spiegata sotto.
Actor.Health($PLAYER_ACTOR) = 250 : Dà all'attore $PLAYER_ACTOR ( CJ ) 250 HP di vita.
Questo label, controlla ogni 250 millesecondi se il giocatore ha preso il pickup $PICKUP e dà 250 HP se è stato preso, se non è stato preso ricontrolla andando di nuovo a LABEL1.
- Condizioni IF, IF AND, IF OR, JUMP e ELSE_JUMP.
Le condizioni sono molto importanti per chi crea mod, in quanto verificano delle cose.
IF: Determina se una sola cosa è accaduta, esempio controlla se il giocatore è morto:
if Actor.Dead($PLAYER_ACTOR)
IF AND: Controlla se 2 o più cose sono accadute, esempio controlla se il player stà guidando e se il veicolo ha l'idraulica:
if and Actor.Driving($PLAYER_ACTOR) Car.HasHydraulics($AUTO)
IF OR: Controlla se più cose sono accadute, senza farci caso a quelle che non lo sono. Esempio controlla se le porte dei due garage sono aperti:
if or: 03B0: garage 'BODLAWN' door_open 03B0: garage 'BODLAST' door_open jump_if_false: @LABEL1
IF NOT: controlla se una cosa non lo è, esempio controlla se il carattere del player non è aggressivo:
if 82E0: not is_char $PLAYER_ACTOR aggressive
NB: l'opzione not cambia l'opcodes iniziale: lo 0 con l'8, guarda sotto:
SENZA NOT:
02E0: is_char $PLAYER_ACTOR aggressive
CON NOT:
82E0: not is_char $PLAYER_ACTOR aggressive
Il parametro da cambiare è sempre il primo valore.
JUMP: Và subito a un label, esempio scrive MISSION PASSED se schiaccio SPRINT in modo veloce:
:LABEL1 wait 250 if 0AB0: key_pressed: 8 jump_if_false @LABEL1 jump @LABEL2 :LABEL2 wait 100 01E3: text_1number_styled 'M_PASSED' 0 5000 ms 1 // MISSION PASSED!
Così da un label si passa ad un altro.
JUMP_IF_FALSE: Se una cosa non lo è passa a un altro label, esempio dobbiamo caricare il modello #M4 e non lo è stato caricato:
:CARICA wait 250 Model.Load(#M4) :CONTROLLA wait 250 if Model.Available(#M4) jump_if_false @CARICA jump @DAIARMA :DAIARMA wait 100 01B9: give_actor $ATTORE weapon 24 ammo 9999
Queste potete considerarle come basi per le vostre mods.
Se avete dubbi, rispondete a questo post.
Guida by. ~>Snake95<~ a.k.a _GriLLeX_P4E.