- Tool e programmi da usare:
• Sanny Buildier 3.0
• Saper caricare modelli.
• Saper creare LABELS e THREAD.
• GTA San Andreas
- Iniziamo:
Apriamo SannyBuildier e creiamo un nuovo documento, all'inizio inseriamo la versione e il formato da compilare:
{$VERSION 3.1.0027} {$CLEO .cs}
Ora che abbiamo impostato il formato e la versione, creiamo un thread chiamato "MISSIONE":
Quote
Dentro questo thread, creiamo un label, questo label sarà la missione verà e propria, per questa missione "semplice" noi dobbiamo eseguire delle funzioni, controllare se il player è in un punto specifico, caricare i modelli e attori speciali, controllare se i modelli sono caricati, dare armi agli attori, creare segnalini sopra la loro testa e in fine impostare che loro ci vogliono uccidere.
:MISSIONE wait 1000 03A4: name_thread 'MISSIONE' if and 00FE: actor $PLAYER_ACTOR sphere 0 in_sphere 2861.8618 -1887.3459 10.9339 radius 30.0 25.0 10.0 $ONMISSION == 0 else_jump @MISSIONE 023C: request_special_actor 'TENPEN' as 1 023C: request_special_actor 'SMOKEV' as 2 023C: request_special_actor 'BB' as 3 Model.Load(#AK47) Model.Load(#COLT45) Model.Load(#DESERT_EAGLE) if and Model.Available(#AK47) Model.Available(#DESERT_EAGLE) Model.Available(#COLT45) 023D: special_actor 1 loaded 023D: special_actor 2 loaded 023D: special_actor 3 loaded wait 1000 009A: 1@ = create_actor 23 #SPECIAL01 at 2859.7527 -1917.4506 10.9324 009A: 2@ = create_actor 23 #SPECIAL02 at 2861.2815 -1917.2495 10.9335 009A: 3@ = create_actor 23 #SPECIAL03 at 2861.8311 -1915.5322 10.933 Actor.Angle(1@) = 272.1 Actor.Angle(2@) = 98.9 Actor.Angle(3@) = 169.0 4@ = Marker.CreateAboveActor(1@) 5@ = Marker.CreateAboveActor(2@) 6@ = Marker.CreateAboveActor(3@) 01B2: give_actor 1@ weapon 22 ammo 9999 01B2: give_actor 2@ weapon 30 ammo 9999 01B2: give_actor 3@ weapon 24 ammo 9999 05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR 05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR 05E2: AS_actor 3@ kill_actor $PLAYER_ACTOR $ONMISSION = 1 Model.Destroy(#AK47) Model.Destroy(#DESERT_EAGLE) Model.Destroy(#COLT45)
Analizziamo il codice:
wait 1000 : Attendiamo 1 secondo prima di eseguire le operazioni riportate sotto.
03A4: name_thread 'MISSIONE' : Diamo un nome al thread.
if and : Controlliamo se più cose sono accadute.
00FE: actor $PLAYER_ACTOR sphere 0 in_sphere 2861.8618 -1887.3459 10.9339 radius 30.0 25.0 10.0 : Controlliamo se il player è nei paraggi della posizione 2861.8618 -1887.3459 10.9339.
$ONMISSION == 0 : Controlliamo che il player non è già in missione.
else_jump @MISSIONE : Se il player non è nella posizione 2861.8618 -1887.3459 10.9339 oppure è in missione ritorna al label MISSIONE senza proseguire.
023C: request_special_actor 'TENPEN' as 1 : Richiediamo l'attore speciale TENPENNY.
023C: request_special_actor 'SMOKEV' as 2 : Richiediamo l'attore speciale BIG SMOKE.
023C: request_special_actor 'BB' as 3 : Richiediamo l'attore speciale BIGBEAR.
Model.Load(#AK47) : Carichiamo il modello AK47.
Model.Load(#COLT45) : Carichiamo il modello delle 9MM.
Model.Load(#DESERT_EAGLE) : Carichiamo il modello della Deagle.
if and : Controlliamo se i modelli e gli attori sono stati caricati.
Model.Available(#AK47) : Controlla se il modello Ak47 è stato caricato.
Model.Available(#DESERT_EAGLE) : Controlla se il modello della Deagle è stato caricato.
Model.Available(#COLT45) : Controlla se il modello COLT45 è stato caricato.
023D: special_actor 1 loaded : Controlla se l'attore numero 1 (TENPENNY) è stato caricato.
023D: special_actor 2 loaded : Controlla se l'attore numero 2 (BIG SMOKE) è stato caricato.
023D: special_actor 3 loaded : Controlla se l'attore numero 3 (BIG BEAR) è stato caricato.
else_jump @MISSIONE : Se non sono caricati i modelli ritorna al label MISSIONE, per farli ricaricare senza proseguire.
wait 1000 : Attendiamo 1 secondo prima di eseguire le funzioni riportate sotto.
009A: 1@ = create_actor 23 #SPECIAL01 at 2859.7527 -1917.4506 10.9324 : Creiamo l'attore TENPENNY
009A: 2@ = create_actor 23 #SPECIAL02 at 2861.2815 -1917.2495 10.9335 : Creiamo l'attore BIG SMOKE
009A: 3@ = create_actor 23 #SPECIAL03 at 2861.8311 -1915.5322 10.933 : Creiamo l'attore BIG BEAR
Actor.Angle(1@) = 272.1 : Impostiamo l'angolo di TENPENNY a 272
Actor.Angle(2@) = 98.9 : Impostiamo l'angolo di BIG SMOKE a 98
Actor.Angle(3@) = 169.0 : Impostiamo l'angolo di BIG BEAR a 169
4@ = Marker.CreateAboveActor(1@) : Creiamo un marker sulla testa dell'attore e sulla mappa.
5@ = Marker.CreateAboveActor(2@) : Creiamo un marker sulla testa dell'attore e sulla mappa.
6@ = Marker.CreateAboveActor(3@) : Creiamo un marker sulla testa dell'attore e sulla mappa.
01B2: give_actor 1@ weapon 22 ammo 9999 : Diamo la 9MM a TENPENNY con 9999 colpi.
01B2: give_actor 2@ weapon 30 ammo 9999 : Diamo l'AK47 a BIG SMOKE.
01B2: give_actor 3@ weapon 24 ammo 9999 : Diamo la Deagle a BIG BEAR.
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR : Impostiamo che TENPENNY uccida CJ.
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR : Impostiamo che BIGSMOKE uccida CJ.
05E2: AS_actor 3@ kill_actor $PLAYER_ACTOR : Impostiamo che BIG BEAR uccida CJ.
Questa era la base, da qui potete modificare tutto la vita degli attori, l'armatura, le armi e molte altre cose, ora arriviamo al punto che quando uccidiamo un attore il segnalino scompaia.
Creiamo 3 labels ognuno per ogni attore e controlliamo se l'attore è morto, altrimenti andiamo al label orginale e ricontrolliamo, se invece è morto disabilitiamo il segnalino e rimuoviamo l'attore ( morto ) dal gioco:
:MISSIONE_TENPENNY wait 150 if Actor.Dead(1@) else_jump @MISSIONE_TENPENNY Actor.RemoveReferences(1@) Marker.Disable(4@) :MISSIONE_BIGSMOKE wait 150 if Actor.Dead(2@) else_jump @MISSIONE_TENPENNY Actor.RemoveReferences(2@) Marker.Disable(5@) :MISSIONE_BIGBEAR wait 150 if Actor.Dead(3@) else_jump @MISSIONE_BIGBEAR Actor.RemoveReferences(3@) Marker.Disable(6@)
Ora che abbiamo fatto ciò ci restano solo 2 labels, la missione superata e la missione non superata, per farli creiamo 2 labels e nel primo lo chiamiamo MISSIONE_COMPIUTA, mentre l'altro MISSIONE_FALLITA.
Ora, per far che CJ superi la missione dovremmo controllare se TUTTI gli attori sono morti, e dargli una somma di denaro, di rispetto e far apparire il messaggio MISSION PASSED! con suono:
:MISSIONE_COMPIUTA wait 150 if and Actor.Dead(1@) Actor.Dead(2@) Actor.Dead(3@) else_jump @MISSIONE_COMPIUTA Actor.RemoveReferences(1@) Actor.RemoveReferences(2@) Actor.RemoveReferences(3@) Marker.Disable(4@) Marker.Disable(5@) Marker.Disable(6@) 01E3: show_text_1number_styled GXT 'M_PASSR' number 6 time 5000 style 1 // MISSION PASSED!~n~~w~RESPECT + Player.Money($PLAYER_CHAR) += 10000 $ONMISSION = 0 0998: add_respect 6
In MISSIONE FALLITA invece, dobbiamo controllare se CJ è MORTO o arrestato, usiamo wasted_or_busted per verificarlo:
:MISSIONE_FALLITA wait 150 if wasted_or_busted else_jump @MISSIONE_FALLITA $ONMISSION = 0 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // ~r~MISSION FAILED!
Ecco qui, la missione è stata creata! Per testarla andate nella zona Playa De Seville ( vicino al mare dove c'è la missione SWEET GIRLS ).
Per problemi, dubbi e chiarimenti postate qui.
Guida by. ~>Snake95<~ a.k.a _GriLLeX_P4E.