E' semplice da sviluppare ma purtroppo vuoi per incombenze varie, vuoi per i bug che strada facendo si presentano, ho impiegato molto più tempo del previsto. Credo sia di tuo gradimento e non solo:
{$CLEO}
0000: NOP
alloc($ENTR_MARKER,11000)
alloc($ENTR_MARKER_X,11255)
alloc($ENTR_MARKER_Y,11510)
alloc($ENTR_MARKER_Z,11765)
alloc($ENTR_POINT_X,12020)
alloc($ENTR_POINT_Y,12275)
alloc($ENTR_POINT_Z,12530)
alloc($ENTR_POINT_A,12785)
alloc($ENTER_MARKER,13040)
alloc($ENABLE_MARKER,13295)
alloc($MARKER_ICON,13550)
alloc($MARKER_COLOR,13805)
alloc($ENTER_INT,14060)
alloc($INT_NAME,14315)
alloc($ENTR_COUNT,14570)
var
$ENTR_MARKER: array 255 of Marker
$ENTR_MARKER_X: array 255 of Float
$ENTR_MARKER_Y: array 255 of Float
$ENTR_MARKER_Z: array 255 of Float
$ENTR_POINT_X: array 255 of Float
$ENTR_POINT_Y: array 255 of Float
$ENTR_POINT_Z: array 255 of Float
$ENTR_POINT_A: array 255 of Float
$ENTER_MARKER: array 255 of Marker
$ENABLE_MARKER: array 255 of Float
$MARKER_ICON: array 255 of Integer
$MARKER_COLOR: array 255 of Integer
$ENTER_INT: array 255 of Integer
$INT_NAME: array 255 of Shortstring
end
// Max entrance markers to spawn
$ENTR_COUNT = 2 // 0 to 255
$ENTR_COUNT -= 1
// Enex XYZ coords
$ENTR_MARKER_X[0] = 2499.3491
$ENTR_MARKER_Y[0] = -1671.0859
$ENTR_MARKER_Z[0] = 13.3469
$ENTR_MARKER_X[1] = 2496.2002
$ENTR_MARKER_Y[1] = -1700.7885
$ENTR_MARKER_Z[1] = 1014.7422
// Enex XYZ coords and Z angle of rispawn
$ENTR_POINT_X[0] = 2496.2002
$ENTR_POINT_Y[0] = -1700.7885
$ENTR_POINT_Z[0] = 1014.7422
$ENTR_POINT_A[0] = 268.9977
$ENTR_POINT_X[1] = 2499.3491
$ENTR_POINT_Y[1] = -1671.0859
$ENTR_POINT_Z[1] = 13.3469
$ENTR_POINT_A[1] = 90.0
// Enable/Disable radar marker
$ENABLE_MARKER[0] = 1
$ENABLE_MARKER[1] = 0
// Other settings
$MARKER_ICON[0] = 35
$MARKER_COLOR[0] = 14
$ENTER_INT[0] = 3
s$INT_NAME[0] = 'CARLS'
$MARKER_ICON[1] = 0
$MARKER_COLOR[1] = 10
$ENTER_INT[1] = 0
s$INT_NAME[1] = 'GAN'
for 0@ = 0 to $ENTR_COUNT
0A40: $ENTR_MARKER[0@] = create_entrance_marker_at $ENTR_MARKER_X[0@] $ENTR_MARKER_Y[0@] $ENTR_MARKER_Z[0@] color $MARKER_COLOR[0@]
if
$ENABLE_MARKER[0@] <> 0
then
04CE: $ENTER_MARKER[0@] = create_icon_marker_without_sphere $MARKER_ICON[0@] at $ENTR_MARKER_X[0@] $ENTR_MARKER_Y[0@] $ENTR_MARKER_Z[0@]
end
end
while true
wait 0
for 0@ = 0 to $ENTR_COUNT
if
00FF: actor $PLAYER_ACTOR sphere 0 in_sphere $ENTR_MARKER_X[0@] $ENTR_MARKER_Y[0@] $ENTR_MARKER_Z[0@] radius 1.0 1.0 2.0 on_foot
then
0A41: destroy_entrance_marker $ENTR_MARKER[0@]
if
$ENABLE_MARKER[0@] <> 0
then
0164: disable_marker $ENTER_MARKER[0@]
end
01B4: set_player $PLAYER_CHAR can_move 0
0A8C: write_memory 0xBAA930 size 4 value 1 virtual_protect 0 // prevent non-showing bug? (fade in)
0A19: display_zone_text $INT_NAME[0@]
wait 2000
fade 0 1000
repeat
wait 0
until not fading
04E4: unknown_refresh_game_renderer_at $ENTR_POINT_X[0@] $ENTR_POINT_Y[0@]
03CB: set_rendering_origin_at $ENTR_POINT_X[0@] $ENTR_POINT_Y[0@] $ENTR_POINT_Z[0@]
04F9: set_interior 1 color_to 0
select_interior $ENTER_INT[0@]
0860: link_actor $PLAYER_ACTOR to_interior $ENTER_INT[0@]
#GRENADE.Load()
repeat
wait 0
until #GRENADE.Available()
0107: 4@ = create_object #GRENADE at $ENTR_POINT_X[0@] $ENTR_POINT_Y[0@] $ENTR_POINT_Z[0@]
0177: set_object 4@ Z_angle_to $ENTR_POINT_A[0@]
0382: set_object 4@ collision_detection 0
0750: set_object 4@ visibility 0
0400: store_coords_to 1@ 2@ 3@ from_object 4@ with_offset 0.0 1.25 0.0
02CE: 3@ = ground_z_at 1@ 2@ 3@
00A1: put_actor $PLAYER_ACTOR at 1@ 2@ 3@
0173: set_actor $PLAYER_ACTOR Z_angle_to $ENTR_POINT_A[0@]
0108: destroy_object 4@
#GRENADE.Destroy()
0373: set_camera_directly_behind_player
02EB: restore_camera_with_jumpcut
fade 1 1000
repeat
wait 0
until not fading
0A40: $ENTR_MARKER[0@] = create_entrance_marker_at $ENTR_MARKER_X[0@] $ENTR_MARKER_Y[0@] $ENTR_MARKER_Z[0@] color $MARKER_COLOR[0@]
if
$ENABLE_MARKER[0@] <> 0
then
04CE: $ENTER_MARKER[0@] = create_icon_marker_without_sphere $MARKER_ICON[0@] at $ENTR_MARKER_X[0@] $ENTR_MARKER_Y[0@] $ENTR_MARKER_Z[0@]
end
01B4: set_player $PLAYER_CHAR can_move 1
end
end
end
Per aggiungerne altri basta semplicemente inserire nuove variabili globali (similmente a quelle che di proposito ho aggiunto come esempio) cambiando il relativo indice. Esse sono presenti all'inizio dello script, poco prima del loop while (ognuno avente una descrizione). Se riscontri problemi, fammi sapere.
Messaggio modificato da Wesser il 26 luglio 2010 - 13:13