Lo script è stato totalmente ideato da te? Se la risposta è positiva, mi complimento! Finalmente qualcosa di buono.
Non voglio essere "pignolo" ma per qualcosa forse sì.
- Per quale motivo hai azzerato la variabile globale "$GF_CENSORE_FLAG"? Così facendo, verrebbe eliminata la censura inserita dalla R* per vedere le scene animate sexy con le fidanzate.
- La variabile locale "1@" è inutilizzata, di conseguenza non necessita di essere aggiunta.
- Devi caricare il modello prima di poterlo utilizzare. Comunque credo che in questo caso non si debba farlo perchè è stato già definito nel main.scm (solo in quello originale).
- Vi è qualche "wait" di troppo, quindi utilizzare 250 per il wait "non istantaneo" e superiore o uguale a 1000 se si vuol rallentare la lettura del codice.
- La variabile globale "$ONMISSION" è inutile da inserire ma opportuno solo come condizione e non come dichiarazione.
- Creando il marker in quel modo, sarà presente sempre sulla mappa con anche il segnale rosso spawnato, quindi meglio utilizzare l'opcode "04CE" ed eliminare lo "018B".
Ecco quì il codice "più corretto".
{$CLEO .cs}
thread 'SAVEG'
0A95: enable_thread_saving
0@ = Pickup.Create(1277, 3, 2415.518, -51.71335, 28.15355)
1@ = Marker.CreateIconWithoutSphere(35, 2415.518, -51.71335, 28.15355)
:SAVEG_86
wait 0
if
$ONMISSION == 0
jf @SAVEG_334
if
Player.Defined($PLAYER_CHAR)
jf @SAVEG_86
if
Pickup.Picked_up(0@)
jf @SAVEG_86
21@ = 2416.46
22@ = -48.44939
23@ = 27.58383
24@ = 180.0
gosub @SAVEG_201
0@ = Pickup.Create(1277, 3, 2415.518, -51.71335, 28.15355)
jump @SAVEG_86
:SAVEG_201
Player.CanMove($PLAYER_CHAR) = False
03D8: show_save_screen
:SAVEG_240
if
83D9: not save_done
jf @SAVEG_264
wait 0
jump @SAVEG_240
:SAVEG_264
Actor.PutAt($PLAYER_ACTOR, 21@, 22@, 23@)
Actor.Angle($PLAYER_ACTOR) = 24@
Player.CanMove($PLAYER_CHAR) = True
:SAVEG_312
return
:SAVEG_334
Pickup.Destroy(0@)
Marker.Disable(1@)
jump @SAVEG_86
Ecco il codice di facile uso con gli array. Non è necessario capire com'è strutturato perchè ho inserito i commenti solo nel punto in cui si può modificare qualcosa, anche se mi preme che voi imparaste qualcosa. Per questo vi reindirizzo
quì.
{$CLEO .cs}
thread 'SAVEG'
0A95: enable_thread_saving
// Coordinate XYZ del pickup
$SAVE_PICKUPS_X[19] = 0.0
$SAVE_PICKUPS_Y[19] = 0.0
$SAVE_PICKUPS_Z[19] = 0.0
// Coordinate XYZ ed angolo A del rispawn
$SAVE_POINT_X[19] = 0.0
$SAVE_POINT_Y[19] = 0.0
$SAVE_POINT_Z[19] = 0.0
$SAVE_POINT_A[19] = 0.0
0@ = 19 // Numero pickup di partenza (min 0)
0085: 1@ = 0@ // (int)
2@ = 1 // Numero massimo di pickup da spawnare
005A: 2@ += 0@ // (int)
3@ = 0
:SAVEG_5
wait 0
if
$ONMISSION == 0
jf @SAVEG_38
if
Player.Defined($PLAYER_CHAR)
jf @SAVEG_5
if
3@ == 0
jf @SAVEG_11
$SAVE_PICKUPS(0@,32i) = Pickup.Create(1277, 3, $SAVE_PICKUPS_X(0@,32f), $SAVE_PICKUPS_Y(0@,32f), $SAVE_PICKUPS_Z(0@,32f))
$SAVE_MARKER(0@,32i) = Marker.CreateIconWithoutSphere(35, $SAVE_PICKUPS_X(0@,32f), $SAVE_PICKUPS_Y(0@,32f), $SAVE_PICKUPS_Z(0@,32f))
0@ += 1
001D: 0@ > 2@ // (int)
jf @SAVEG_5
0085: 0@ = 1@ // (int)
3@ = 1
:SAVEG_11
wait 0
if
not Pickup.Picked_up($SAVE_PICKUPS(0@,32i))
jf @SAVEG_15
0@ += 1
001D: 0@ > 2@ // (int)
jf @SAVEG_11
0085: 0@ = 1@ // (int)
jump @SAVEG_11
:SAVEG_15
Player.CanMove($PLAYER_CHAR) = False
03D8: show_save_screen
fade 0 500
:SAVEG_21
if
83D9: not save_done
jf @SAVEG_26
wait 0
jump @SAVEG_21
:SAVEG_26
$SAVE_PICKUPS(0@,32i) = Pickup.Create(1277, 3, $SAVE_PICKUPS_X(0@,32f), $SAVE_PICKUPS_Y(0@,32f), $SAVE_PICKUPS_Z(0@,32f))
Actor.PutAt($PLAYER_ACTOR, $SAVE_POINT_X(0@,32f), $SAVE_POINT_Y(0@,32f), $SAVE_POINT_Z(0@,32f))
Actor.Angle($PLAYER_ACTOR) = $SAVE_POINT_A(0@,32f)
Camera.Restore_WithJumpCut
Camera.SetBehindPlayer
fade 1 1000
:SAVEG_29
if
fading
jf @SAVEG_32
00BE: text_clear_all
03E6: remove_text_box
wait 0
jump @SAVEG_29
:SAVEG_32
Player.CanMove($PLAYER_CHAR) = True
jump @SAVEG_5
:SAVEG_38
wait 0
if
3@ == 1
jf @SAVEG_5
Pickup.Destroy($SAVE_PICKUPS(0@,32i))
Marker.Disable($SAVE_MARKER(0@,32i))
0@ += 1
001D: 0@ > 2@ // (int)
jf @SAVEG_32
0085: 0@ = 1@ // (int)
3@ = 0
jump @SAVEG_5
Se qualcuno non sa qual'è la funzione del "gosub" posso tranquillamente spiegarla, basta chiederlo.