Skip to content

Instantly share code, notes, and snippets.

@nadalao
Last active September 3, 2021 13:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nadalao/7ef6e9fe285ca7bd1d714fcf6d7bed01 to your computer and use it in GitHub Desktop.
Save nadalao/7ef6e9fe285ca7bd1d714fcf6d7bed01 to your computer and use it in GitHub Desktop.
myth creation and manipulation
SCRIPT_START
{
LVAR_FLOAT pos_x pos_y pos_z
LVAR_INT special_character_id myth_id p_buffer p_shared_buffer//in
LVAR_INT myth_ped int[5] scplayer
LVAR_INT damage_audio spawn_audio random_audio fuck
LVAR_FLOAT float interaction_radius find_radius x[2] y[2] z[2]
GET_PLAYER_CHAR 0 scplayer
IF pos_x = 0.0
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
//PRINT_FORMATTED unused (97) reload BLINDMAN ? release: (100)
/*
IF NOT p_buffer = 0
READ_STRUCT_OFFSET p_buffer (69) 1 timera //type
IF timera = 1
AND myth_id = 3
AND int[0] = 0//no skill myth_id =
GENERATE_RANDOM_INT_IN_RANGE 0 5000 timerb
WAIT timerb
PRINT_HELP_FORMATTED "~r~%i~n~%f %f" myth_id pos_x pos_y
ADD_BLIP_FOR_COORD pos_x pos_y pos_z fuck
ENDIF
ENDIF*/
SWITCH int[0]//skill id
CASE 1
CLEO_CALL teleport_skill 0 scplayer myth_ped p_buffer p_shared_buffer
BREAK
CASE 2
READ_STRUCT_OFFSET p_buffer (43) 1 int[0] //myth quantity
CLEO_CALL ped_run_away_skill 0 (myth_ped scplayer int[0])
BREAK
CASE 3
CLEO_CALL random_walk_skill 0 pos_x pos_y pos_z myth_ped p_buffer p_shared_buffer
BREAK
CASE 4
CLEO_CALL climb_skill 0 pos_x pos_y pos_z myth_ped p_shared_buffer
BREAK
CASE 5
CLEO_CALL jumpscare_skill 0 myth_ped p_shared_buffer p_buffer myth_id
BREAK
CASE 6
CLEO_CALL deadly_stab_skill 0 myth_ped
BREAK
CASE 7
CLEO_CALL super_punch_skill 0 myth_ped
BREAK
CASE 8
CLEO_CALL special_fx 0 myth_ped p_buffer
BREAK
CASE 9
CLEO_CALL improved_combat 0 myth_ped p_buffer p_shared_buffer scplayer
BREAK
ENDSWITCH
READ_STRUCT_OFFSET p_buffer (69) 1 int[0] //type
IF int[0] = 2//ped
READ_STRUCT_OFFSET p_buffer (65) 4 special_character_id//ped model
ENDIF
IF NOT DOES_CHAR_EXIST myth_ped
IF NOT special_character_id = -1 //random
IF NOT HAS_MODEL_LOADED special_character_id
//LOAD_ALL_MODELS_NOW
REQUEST_PRIORITY_MODEL special_character_id
LOAD_ALL_PRIORITY_MODELS_NOW
ENDIF
ENDIF
READ_STRUCT_OFFSET p_buffer (51) 1 int[0] //recruitable
IF special_character_id = -1
CREATE_RANDOM_CHAR 0.0 0.0 -10.0 myth_ped
GET_PED_POINTER myth_ped int[1]
int[1] += 0x598
IF int[0] = 0
WRITE_MEMORY int[1] 1 24 0 //change pedtype to MISSION1
ELSE
WRITE_MEMORY int[1] 1 8 0 //change pedtype to PEDTYPE_GANG2 (GROVE GANG)
ENDIF
GET_CHAR_MODEL myth_ped special_character_id
ELSE
IF int[0] = 0
CREATE_CHAR PEDTYPE_MISSION1 special_character_id 0.0 0.0 -10.0 myth_ped
ELSE
CREATE_CHAR PEDTYPE_GANG2 special_character_id 0.0 0.0 -10.0 myth_ped
ENDIF
ENDIF
ENDIF
//ADD_BLIP_FOR_CHAR myth_ped timera
SET_CHAR_DROWNS_IN_WATER myth_ped FALSE
SET_CHAR_VISIBLE myth_ped FALSE
WRITE_STRUCT_OFFSET p_buffer (93) 1 1//visible
READ_STRUCT_OFFSET p_buffer (10) 1 int[0]//spawn type
SWITCH int[0]
DEFAULT
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped pos_x pos_y pos_z
GET_CURRENT_DAY_OF_WEEK int[3]
READ_STRUCT_OFFSET p_buffer (4) 1 int[0]//starting hour
READ_STRUCT_OFFSET p_buffer (5) 1 int[1]//ending hour
GET_TIME_OF_DAY int[2] timera
IF int[1] > int[2] //ending hour > current hour
IF int[0] > int[1] //starting hour > ending hour
int[3] -= 1
IF int[3] = 0
int[3] = 7
ENDIF
ENDIF
ENDIF
//angle
READ_STRUCT_OFFSET p_buffer (92) 1 int[3] //created spot
READ_STRUCT_PARAM p_buffer (0) int[1] //list
int[0] = int[3] * 4
int[0] += 3
GET_LIST_VALUE_BY_INDEX int[1] int[0] float //angle
SET_CHAR_HEADING myth_ped float
BREAK
CASE 1
CLEO_CALL spawn_type_1 0 scplayer myth_ped 0 p_buffer
BREAK
CASE 2
CLEO_CALL spawn_type_2 0 scplayer myth_ped p_buffer pos_x pos_y pos_z
BREAK
ENDSWITCH
timerb = 0
SET_CHAR_VISIBLE myth_ped TRUE
FIX_CHAR_GROUND_BRIGHTNESS_AND_FADE_IN myth_ped FALSE TRUE TRUE
WRITE_STRUCT_OFFSET p_buffer (93) 1 0//visible
SET_CHAR_USES_UPPERBODY_DAMAGE_ANIMS_ONLY myth_ped TRUE
READ_STRUCT_OFFSET p_buffer (58) 1 int[0]//does damage animation
IF int[0] = 0
SET_CHAR_IGNORE_DAMAGE_ANIMS myth_ped TRUE
ENDIF
READ_STRUCT_OFFSET p_buffer (16) 1 int[0] //accuracy
SET_CHAR_ACCURACY myth_ped int[0]
READ_STRUCT_OFFSET p_buffer (17) 1 int[0] //attack rate
SET_CHAR_SHOOT_RATE myth_ped int[0]
READ_STRUCT_OFFSET p_buffer (18) 4 int[0] //health
SET_CHAR_HEALTH myth_ped int[0]
READ_STRUCT_OFFSET p_buffer (26) 1 int[0] //can be beheaded
SET_CHAR_SUFFERS_CRITICAL_HITS myth_ped int[0]
READ_STRUCT_OFFSET p_buffer (27) 1 int[0] //drowns in water
SET_CHAR_DROWNS_IN_WATER myth_ped int[0]
READ_STRUCT_OFFSET p_buffer (37) 1 int[0] //leaves blood stain
SET_CHAR_BLEEDING myth_ped int[0]
CLEO_CALL apply_proofs 0 myth_ped p_buffer
READ_STRUCT_OFFSET p_buffer (28) 4 int[0]//weapon id
IF int[0] > 36
CLEO_CALL weapon_groups 0 int[0] (int[0])
ELSE
IF int[0] < 42
IF int[0] > 18
int[0] += 3
ENDIF
IF int[0] > 35
int[0] += 1
ENDIF
IF int[0] > 38
int[0] += 2
ENDIF
ENDIF
ENDIF
GET_WEAPONTYPE_MODEL int[0] int[1]
IF int[0] > 0
IF NOT IS_MODEL_AVAILABLE int[1]
int[0] = 4
GET_WEAPONTYPE_MODEL int[0] int[1]
ENDIF
REQUEST_MODEL int[1]
WHILE NOT HAS_MODEL_LOADED int[1]
WAIT 0
ENDWHILE
GIVE_WEAPON_TO_CHAR myth_ped int[0] 9999
SET_CHAR_DROPS_WEAPONS_WHEN_DEAD myth_ped FALSE
ENDIF
READ_STRUCT_OFFSET p_buffer (22) 4 int[0]//money
SET_CHAR_MONEY myth_ped int[0]
READ_STRUCT_OFFSET p_buffer (42) 1 int[0]//fighting style
SWITCH int[0]
DEFAULT
GIVE_MELEE_ATTACK_TO_CHAR myth_ped 15 15 //default
BREAK
CASE 1
GIVE_MELEE_ATTACK_TO_CHAR myth_ped 5 6 //BOXING
BREAK
CASE 2
GIVE_MELEE_ATTACK_TO_CHAR myth_ped 6 6 //KUNG FU
BREAK
CASE 3
GIVE_MELEE_ATTACK_TO_CHAR myth_ped 7 6 //KICKBOXING
BREAK
ENDSWITCH
READ_STRUCT_OFFSET_MULTI p_buffer (80) 3 4 spawn_audio random_audio damage_audio
//PRINT_HELP_FORMATTED "%i" spawn_audio
//P/RINT_FORMATTED_NOW "%i %i %i %i" 99 myth_ped spawn_audio random_audio damage_audio
IF NOT spawn_audio = 0
SET_PLAY_3D_AUDIO_STREAM_AT_CHAR spawn_audio myth_ped
SET_AUDIO_STREAM_STATE spawn_audio ON
SET_AUDIO_STREAM_VOLUME spawn_audio 1.0
ENDIF
//skills
//teleport
READ_STRUCT_OFFSET p_buffer (45) 1 int[0] //teleports
IF int[0] = 1
STREAM_CUSTOM_SCRIPT "Myths_Maker2.cs" (pos_x pos_y pos_z special_character_id myth_id p_buffer p_shared_buffer myth_ped 1)
ENDIF
//ped_runaway
READ_STRUCT_OFFSET p_buffer (48) 1 int[0] //ped run away
IF int[0] = 1
STREAM_CUSTOM_SCRIPT "Myths_Maker2.cs" (pos_x pos_y pos_z special_character_id myth_id p_buffer p_shared_buffer myth_ped 2)
ENDIF
//walks randomly
READ_STRUCT_OFFSET p_buffer (13) 1 int[0] //walks randomly
IF int[0] = 1//walks randomly
OR int[0] = 3//walks towards player
STREAM_CUSTOM_SCRIPT "Myths_Maker2.cs" (pos_x pos_y pos_z special_character_id myth_id p_buffer p_shared_buffer myth_ped 3)
ENDIF
IF int[0] = 2//walk in sidewalks
//TASK_WANDER_STANDARD myth_ped
MARK_CHAR_AS_NO_LONGER_NEEDED myth_ped
MARK_CHAR_AS_NEEDED myth_ped
ENDIF
//climb_skill
READ_STRUCT_OFFSET p_buffer (49) 1 int[0] //interaction
IF int[0] = 0//attack
READ_STRUCT_OFFSET p_buffer (69) 1 int[0] //type
IF int[0] = 0
STREAM_CUSTOM_SCRIPT "Myths_Maker2.cs" (pos_x pos_y pos_z special_character_id myth_id p_buffer p_shared_buffer myth_ped 4)
ENDIF
ENDIF
//jumpscare skill
READ_STRUCT_OFFSET p_buffer (62) 1 int[0] //jumpscare
IF int[0] = 1//jumpscare
STREAM_CUSTOM_SCRIPT "Myths_Maker2.cs" (pos_x pos_y pos_z special_character_id myth_id p_buffer p_shared_buffer myth_ped 5)
ENDIF
//deadly stab skill
READ_STRUCT_OFFSET p_buffer (63) 1 int[0] //deadly stab skill
IF int[0] = 1//deadly stab skill
STREAM_CUSTOM_SCRIPT "Myths_Maker2.cs" (pos_x pos_y pos_z special_character_id myth_id p_buffer p_shared_buffer myth_ped 6)
ENDIF
//super punch skill
READ_STRUCT_OFFSET p_buffer (64) 1 int[0] //super punch skill
IF int[0] = 1//super punch skill
STREAM_CUSTOM_SCRIPT "Myths_Maker2.cs" (pos_x pos_y pos_z special_character_id myth_id p_buffer p_shared_buffer myth_ped 7)
ENDIF
//special fx
READ_STRUCT_OFFSET p_buffer (70) 1 int[0] //permanent fx
READ_STRUCT_OFFSET p_buffer (72) 1 int[1] //attacking fx
READ_STRUCT_OFFSET p_buffer (74) 1 int[2] //attacked fx
IF NOT int[0] = 255//permanent fx
OR NOT int[0] = 255//attacking fx
OR NOT int[0] = 255//attacked fx
STREAM_CUSTOM_SCRIPT "Myths_Maker2.cs" (pos_x pos_y pos_z special_character_id myth_id p_buffer p_shared_buffer myth_ped 8)
ENDIF
//improved_combat
READ_STRUCT_OFFSET p_buffer (61) 1 int[0]//improved_combat
IF int[0] = 1//improved_combat
//STREAM_CUSTOM_SCRIPT_FROM_LABEL improved_combat myth_ped p_buffer p_shared_buffer scplayer
STREAM_CUSTOM_SCRIPT "Myths_Maker2.cs" (pos_x pos_y pos_z special_character_id myth_id p_buffer p_shared_buffer myth_ped 9)
ENDIF
IF NOT DOES_CHAR_EXIST myth_ped
GOTO release
ENDIF
READ_STRUCT_OFFSET p_buffer (69) 1 int[1] //type
CLEO_CALL apply_animgroup 0 myth_ped p_buffer myth_id int[1]
READ_STRUCT_OFFSET p_buffer (49) 1 int[0] //interaction
IF int[0] = 0 //attack
READ_STRUCT_OFFSET p_buffer (41) 1 int[0] //attacks peds
IF int[0] = 1
CLEO_CALL apply_attack 0 p_shared_buffer scplayer myth_ped 1 //attacks everyone
ELSE
CLEO_CALL apply_attack 0 p_shared_buffer scplayer myth_ped 0 //neutral
ENDIF
ELSE
READ_STRUCT_PARAM p_shared_buffer (1) int[0] //neutral
SET_CHAR_DECISION_MAKER myth_ped int[0]
ENDIF
GET_LABEL_POINTER string_label (int[0])
SWITCH int[1]
CASE 0
STRING_FORMAT (int[0]) "Myths\Myth%i\Myth%i.cs" myth_id myth_id
BREAK
CASE 1
STRING_FORMAT (int[0]) "Animals\Anim%i\Anim%i.cs" myth_id myth_id
BREAK
CASE 2
STRING_FORMAT (int[0]) "Peds\Ped%i\Ped%i.cs" myth_id myth_id
BREAK
ENDSWITCH
READ_STRUCT_OFFSET p_buffer (99) 1 int[1] //change spot
IF int[1] = 0
IF STREAM_CUSTOM_SCRIPT $int[0] myth_ped myth_id p_shared_buffer p_buffer pos_x pos_y pos_z
WAIT 0
ENDIF
ENDIF
created:
//remove radius
READ_STRUCT_PARAM p_buffer (0) int[0] //list
READ_STRUCT_OFFSET p_buffer (105) 4 find_radius //release radius
IF find_radius < 1.0
GET_LIST_VALUE_BY_INDEX int[0] (0) find_radius
find_radius += 60.0
ENDIF
GET_LIST_VALUE_BY_INDEX int[0] (2) interaction_radius
READ_STRUCT_OFFSET p_buffer (10) 1 int[0] //spawn type
IF interaction_radius <= 1.0
interaction_radius = 0.2
ENDIF
int[2] = 0
GENERATE_RANDOM_INT_IN_RANGE -3000 19000 timerb
GENERATE_RANDOM_INT_IN_RANGE 0 5 int[3]
WHILE DOES_CHAR_EXIST myth_ped
IF IS_CHAR_HEALTH_GREATER myth_ped 1
AND IS_CHAR_HEALTH_GREATER scplayer 1
AND LOCATE_CHAR_DISTANCE_TO_CHAR scplayer myth_ped find_radius
//interaction
READ_STRUCT_OFFSET p_buffer (49) 1 int[0] //interaction
IF LOCATE_CHAR_DISTANCE_TO_CHAR myth_ped scplayer interaction_radius
OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR myth_ped scplayer
IF int[0] = 0
IF NOT IS_PLAYER_CONTROL_ON 0
WHILE NOT IS_PLAYER_CONTROL_ON 0
WAIT 0
ENDWHILE
CLEO_CALL apply_attack 0 p_shared_buffer scplayer myth_ped 2 //attacks target
ENDIF
//SWIMMING
IF IS_CHAR_IN_WATER myth_ped
CLEO_CALL get_out_of_water 0 myth_ped
ENDIF
ELSE
CLEO_CALL runaway_from_player 0 p_buffer scplayer myth_ped
CLEAR_CHAR_LAST_DAMAGE_ENTITY myth_ped
ENDIF
ENDIF
//car turn off
IF IS_CHAR_IN_ANY_CAR scplayer
READ_STRUCT_OFFSET p_buffer (14) 1 int[0]//car turn off
IF int[0] = 1
CLEO_CALL car_turn_off 0 scplayer
ENDIF
ENDIF
//recruted
GET_PLAYER_GROUP 0 int[0]
IF IS_GROUP_MEMBER myth_ped int[0]
GOTO follow_player
ENDIF
//fight check
IF NOT int[4] = 2
READ_STRUCT_OFFSET p_buffer (60) 1 int[4] //attack trigger
IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR myth_ped scplayer
OR LOCATE_CHAR_DISTANCE_TO_CHAR myth_ped scplayer interaction_radius
OR int[4] = 1 //sync attack
READ_STRUCT_PARAM p_buffer (0) int[0]
GET_LIST_VALUE_BY_INDEX int[0] (1) float //spawn radius
IF float <= 60.0
WRITE_STRUCT_OFFSET p_buffer (60) 1 1 //attack trigger
ENDIF
READ_STRUCT_OFFSET p_buffer (49) 1 int[0] //interaction
IF int[0] = 0 //attack
CLEO_CALL apply_attack 0 p_shared_buffer scplayer myth_ped 2 //attacks target
ENDIF
int[4] = 2
ENDIF
ENDIF
//damage
IF GET_CHAR_KILL_TARGET_CHAR myth_ped int[0]
IF GET_CHAR_DAMAGE_LAST_FRAME int[0] int[2] int[1] int[1] float
IF NOT int[2] = 0
GET_ENTITY_TYPE int[2] int[1]
IF int[1] = ENTITY_TYPE_PED
GET_PED_REF int[2] int[1]
IF int[1] = myth_ped
READ_STRUCT_OFFSET p_buffer (12) 1 int[1] //damage
DAMAGE_CHAR int[0] int[1] 1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//audio
IF LOCATE_CHAR_DISTANCE_TO_CHAR scplayer myth_ped 20.0
IF timerb > 19000
GENERATE_RANDOM_INT_IN_RANGE 0 9000 timerb
READ_STRUCT_OFFSET p_buffer (84) 4 random_audio //random sound
IF NOT random_audio = 0 //random sound
SET_PLAY_3D_AUDIO_STREAM_AT_CHAR random_audio myth_ped
SET_AUDIO_STREAM_STATE random_audio ON
ENDIF
ENDIF
IF NOT damage_audio = 0
IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR myth_ped scplayer
int[3] += 1
CLEAR_CHAR_LAST_DAMAGE_ENTITY myth_ped
IF int[3] > 5//damage sound
SET_PLAY_3D_AUDIO_STREAM_AT_CHAR damage_audio myth_ped
SET_AUDIO_STREAM_STATE damage_audio ON
int[3] = 0
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
BREAK
ENDIF
READ_STRUCT_PARAM p_shared_buffer (8) int[0]//reload mod
IF int[0] = 1000
WRITE_STRUCT_OFFSET p_buffer (59) 1 1 //release mode - deleted somehow
BREAK
ENDIF
WAIT 0
ENDWHILE
release:
IF DOES_BLIP_EXIST fuck
REMOVE_BLIP fuck
ENDIF
READ_STRUCT_OFFSET p_buffer (59) 1 int[0] //release mode
//IF NOT int[0] = 2
IF NOT DOES_CHAR_EXIST myth_ped
WRITE_STRUCT_OFFSET p_buffer (59) 1 1 //release mode - deleted somehow
ELSE
IF NOT IS_CHAR_HEALTH_GREATER myth_ped 1
WRITE_STRUCT_OFFSET p_buffer (59) 1 2 //release mode - dead myth
/*READ_STRUCT_OFFSET p_buffer (69) 1 timera //type
IF timera = 0 //myth
WRITE_STRUCT_PARAM p_shared_buffer (16) 2
ENDIF*/
ELSE
READ_STRUCT_OFFSET p_buffer (99) 1 int[0] //change spot
IF NOT int[0] = 0
READ_STRUCT_PARAM p_buffer (0) int[0] //list
READ_STRUCT_OFFSET p_buffer (92) 1 timera //created spot
int[1] = timera * 4
GET_LIST_VALUE_BY_INDEX int[0] int[1] pos_x
int[1] += 1
GET_LIST_VALUE_BY_INDEX int[0] int[1] pos_y
int[1] += 1
GET_LIST_VALUE_BY_INDEX int[0] int[1] pos_z
GET_LIST_VALUE_BY_INDEX int[0] (0) find_radius
IF LOCATE_CHAR_DISTANCE_TO_COORDINATES scplayer pos_x pos_y pos_z find_radius
READ_STRUCT_OFFSET p_buffer (10) 1 int[0] //spawn type
READ_STRUCT_OFFSET p_buffer (18) 4 timera //health
timera -= 20
GET_CHAR_HEALTH myth_ped timerb
IF timerb >= timera
IF int[0] = 1
CLEO_CALL spawn_type_1 0 scplayer myth_ped 0 p_buffer
GOTO created
ENDIF
IF int[0] = 2
GET_CHAR_COORDINATES scplayer x[0] y[0] z[0]
CLEO_CALL spawn_type_2 0 scplayer myth_ped p_buffer x[0] y[0] z[0]
CLEAR_CHAR_TASKS_IMMEDIATELY myth_ped
GOTO created
ENDIF
ENDIF
ENDIF
ENDIF
WRITE_STRUCT_OFFSET p_buffer (59) 1 3 //release mode - NOT locate
ENDIF
ENDIF
//ENDIF
IF DOES_CHAR_EXIST myth_ped
IF NOT IS_CHAR_HEALTH_GREATER myth_ped 1
OR NOT IS_CHAR_HEALTH_GREATER scplayer 1
MARK_CHAR_AS_NO_LONGER_NEEDED myth_ped
ELSE
DELETE_CHAR myth_ped
ENDIF
WHILE DOES_CHAR_EXIST myth_ped
WAIT 0
ENDWHILE
ENDIF
READ_STRUCT_OFFSET p_buffer (44) 1 int[0] //dead myths
int[0] += 1
WRITE_STRUCT_OFFSET p_buffer (44) 1 int[0] //dead myths
READ_STRUCT_OFFSET p_buffer (46) 1 int[0] //location_mode
IF NOT int[0] = 2
READ_STRUCT_OFFSET p_buffer (100) 1 int[0] //created myths
int[0] --
WRITE_STRUCT_OFFSET p_buffer (100) 1 int[0] //created myths
ENDIF
READ_STRUCT_OFFSET p_buffer (69) 1 int[0] //type
IF int[0] > 2
MARK_MODEL_AS_NO_LONGER_NEEDED special_character_id
ENDIF
TERMINATE_THIS_CUSTOM_SCRIPT
follow_player:
CLEAR_CHAR_TASKS_IMMEDIATELY myth_ped
GET_PLAYER_GROUP 0 int[0]
SET_GROUP_MEMBER int[0] myth_ped
READ_STRUCT_OFFSET p_buffer (28) 4 int[0]//weapon id
IF int[0] < 36
REMOVE_ALL_CHAR_WEAPONS myth_ped
IF int[0] < 42
IF int[0] > 18
int[0] += 3
ENDIF
IF int[0] > 35
int[0] += 1
ENDIF
IF int[0] > 38
int[0] += 2
ENDIF
ENDIF
GET_WEAPONTYPE_MODEL int[0] int[1]
IF int[0] > 0
IF NOT IS_MODEL_AVAILABLE int[1]
int[0] = 4
GET_WEAPONTYPE_MODEL int[0] int[1]
ENDIF
REQUEST_MODEL int[1]
WHILE NOT HAS_MODEL_LOADED int[1]
WAIT 0
ENDWHILE
GIVE_WEAPON_TO_CHAR myth_ped int[0] 9999
SET_CHAR_DROPS_WEAPONS_WHEN_DEAD myth_ped FALSE
ENDIF
ENDIF
GET_PED_POINTER myth_ped int[0]
int[0] += 0x598
WRITE_MEMORY int[0] 1 24 0//change pedtype to mission1
GENERATE_RANDOM_INT_IN_RANGE 0 5 int[0]
WHILE DOES_CHAR_EXIST myth_ped
//audios
IF LOCATE_CHAR_DISTANCE_TO_CHAR scplayer myth_ped 20.0
IF timerb > 19000
GENERATE_RANDOM_INT_IN_RANGE 0 9000 timerb
IF NOT random_audio = 0//random sound
SET_PLAY_3D_AUDIO_STREAM_AT_CHAR random_audio myth_ped
SET_AUDIO_STREAM_STATE random_audio ON
ENDIF
ENDIF
IF NOT damage_audio = 0
IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR myth_ped scplayer
int[0] += 1
CLEAR_CHAR_LAST_DAMAGE_ENTITY myth_ped
IF int[0] > 5//damage sound
SET_PLAY_3D_AUDIO_STREAM_AT_CHAR damage_audio myth_ped
SET_AUDIO_STREAM_STATE damage_audio ON
int[0] = 0
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_CHAR_HEALTH_GREATER myth_ped 1
GOTO release
ENDIF
//stop hand signs
IF IS_CHAR_PLAYING_ANIM myth_ped "PRTIAL_GNGTLKA"
OR IS_CHAR_PLAYING_ANIM myth_ped "PRTIAL_GNGTLKB"
OR IS_CHAR_PLAYING_ANIM myth_ped "PRTIAL_GNGTLKC"
OR IS_CHAR_PLAYING_ANIM myth_ped "PRTIAL_GNGTLKD"
OR IS_CHAR_PLAYING_ANIM myth_ped "INVITE_NO"
OR IS_CHAR_PLAYING_ANIM myth_ped "INVITE_YES"
IF NOT IS_CHAR_PLAYING_ANIM myth_ped "FIGHTIDLE"
TASK_PLAY_ANIM_SECONDARY myth_ped "FIGHTIDLE" "PED" 0.1 0 0 0 0 1
ENDIF
ENDIF
IF IS_CHAR_PLAYING_ANIM myth_ped "PRTIAL_GNGTLKE"
OR IS_CHAR_PLAYING_ANIM myth_ped "PRTIAL_GNGTLKF"
OR IS_CHAR_PLAYING_ANIM myth_ped "PRTIAL_GNGTLKG"
OR IS_CHAR_PLAYING_ANIM myth_ped "PRTIAL_GNGTLKH"
OR IS_CHAR_PLAYING_ANIM myth_ped "drnkbr_prtl"
OR IS_CHAR_PLAYING_ANIM myth_ped "drnkbr_prtl_F"
IF NOT IS_CHAR_PLAYING_ANIM myth_ped "FIGHTIDLE"
TASK_PLAY_ANIM_SECONDARY myth_ped "FIGHTIDLE" "PED" 0.1 0 0 0 0 1
ENDIF
ENDIF
WAIT 0
ENDWHILE
GOTO release
}
{
LVAR_INT myth_ped p_buffer p_shared_buffer scplayer
LVAR_INT target_ped int[2] var tasks
LVAR_FLOAT x y z
LVAR_TEXT_LABEL16 myth_anim idle block ifp target_anim
improved_combat:
WHILE DOES_CHAR_EXIST myth_ped
IF GET_CHAR_KILL_TARGET_CHAR myth_ped target_ped
BREAK
ENDIF
WAIT 1000
ENDWHILE
IF NOT DOES_CHAR_EXIST myth_ped
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
READ_STRUCT_OFFSET p_buffer (42) 1 int[0]//fighting style
SWITCH int[0]
DEFAULT
IFP = PED //default
MYTH_ANIM = FightA_2
TARGET_ANIM = HitA_2
IDLE = FightA_IDLE
BLOCK = FIGHTA_BLOCK
BREAK
CASE 1
IFP = FIGHT_B //BOXING
MYTH_ANIM = FightB_2
TARGET_ANIM = HitB_2
IDLE = FightB_IDLE
BLOCK = FIGHTB_BLOCK
BREAK
CASE 2
IFP = FIGHT_C //KUNG FU
MYTH_ANIM = FightC_2
TARGET_ANIM = HitC_2
IDLE = FightC_IDLE
BLOCK = FIGHTC_BLOCK
BREAK
CASE 3
IFP = FIGHT_D //KICKBOXING
MYTH_ANIM = FightD_2
TARGET_ANIM = HitD_2
IDLE = FightD_IDLE
BLOCK = FIGHTD_BLOCK
BREAK
ENDSWITCH
IF DOES_CHAR_EXIST myth_ped
GET_CURRENT_CHAR_WEAPON myth_ped int[0]
ENDIF
SWITCH int[0]
CASE 4//knife
CASE 11//DILDO2
CASE 13//VIBE2
IFP = KNIFE
MYTH_ANIM = knife_2
TARGET_ANIM = knife_hit_2
IDLE = knife_IDLE
BLOCK = knife_block
BREAK
CASE 2//GOLFCLUB
CASE 3//NIGHTSTICK
CASE 5//baseball bat
CASE 6//SHOVEL
CASE 7//POOLCUE
IFP = BASEBALL
MYTH_ANIM = Bat_2
TARGET_ANIM = Bat_Hit_2
IDLE = Bat_IDLE
BLOCK = Bat_block
BREAK
CASE 9//CHAINSAW
IFP = CHAINSAW
MYTH_ANIM = CSAW_2
TARGET_ANIM = CSAW_Hit_2
IDLE = IDLE_csaw
BREAK
CASE 10//DILDO1
CASE 12//VIBE1
IFP = DILDO
MYTH_ANIM = DILDO_2
TARGET_ANIM = DILDO_Hit_2
IDLE = DILDO_IDLE
BLOCK = DILDO_block
BREAK
CASE 8//KATANA
CASE 15//CANE
IFP = SWORD
MYTH_ANIM = sword_2
TARGET_ANIM = Sword_Hit_2
IDLE = sword_IDLE
BLOCK = sword_block
BREAK
ENDSWITCH
WHILE DOES_CHAR_EXIST myth_ped
IF GET_CHAR_KILL_TARGET_CHAR myth_ped target_ped
IF IS_CHAR_ON_FOOT target_ped
IF IS_CHAR_HEALTH_GREATER myth_ped 0
IF IS_CHAR_PLAYING_ANIM myth_ped "HIT_FIGHTKICK_B"
GET_CHAR_COORDINATES myth_ped x y z
GET_GROUND_Z_FOR_3D_COORD x y z z
z += 0.05
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped x y z
TASK_PLAY_ANIM myth_ped "BAT_HIT_1" "BASEBALL" 4.0 0 1 1 0 -1
ENDIF
IF IS_CHAR_PLAYING_ANIM myth_ped "HITB_3"
WAIT 270
IF NOT DOES_CHAR_EXIST myth_ped
OR NOT DOES_CHAR_EXIST target_ped
BREAK
ENDIF
GET_CHAR_COORDINATES myth_ped x y z
GET_GROUND_Z_FOR_3D_COORD x y z z
z += 0.05
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped x y z
TASK_PLAY_ANIM_NON_INTERRUPTABLE myth_ped "HITA_3" "PED" 4.0 0 1 1 0 -1
ENDIF
IF IS_CHAR_PLAYING_ANIM myth_ped "HITC_3"
GET_CHAR_COORDINATES myth_ped x y z
GET_GROUND_Z_FOR_3D_COORD x y z z
z += 0.05
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped x y z
TASK_PLAY_ANIM_NON_INTERRUPTABLE myth_ped "HitC_2" "FIGHT_C" 4.0 0 1 1 0 -1
ENDIF
IF IS_CHAR_PLAYING_ANIM myth_ped "HITD_3"
GET_CHAR_COORDINATES myth_ped x y z
GET_GROUND_Z_FOR_3D_COORD x y z z
z += 0.05
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped x y z
TASK_PLAY_ANIM_NON_INTERRUPTABLE myth_ped "HitD_1" "FIGHT_D" 4.0 0 1 1 0 -1
ENDIF
//get up
IF IS_CHAR_PLAYING_ANIM myth_ped "GETUP"
GET_CHAR_COORDINATES myth_ped x y z
GET_GROUND_Z_FOR_3D_COORD x y z z
z += 0.05
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped x y z
TASK_PLAY_ANIM_NON_INTERRUPTABLE myth_ped "GETUP" "PED" 4.0 0 1 1 0 -1
z = 0.0
WHILE DOES_CHAR_EXIST myth_ped
GET_CHAR_ANIM_CURRENT_TIME myth_ped "GETUP" z
IF z > 0.5
BREAK
ENDIF
WAIT 0
ENDWHILE
IF NOT DOES_CHAR_EXIST myth_ped
OR NOT DOES_CHAR_EXIST target_ped
BREAK
ENDIF
IF LOCATE_CHAR_DISTANCE_TO_CHAR myth_ped target_ped 1.7
CLEO_CALL turn_char 0 target_ped myth_ped
GOSUB clear_tasks
TASK_PLAY_ANIM_NON_INTERRUPTABLE target_ped "HIT_FRONT" "PED" 4.0 0 1 1 0 -1
ENDIF
WHILE DOES_CHAR_EXIST myth_ped
IF NOT IS_CHAR_PLAYING_ANIM myth_ped "GETUP"
BREAK
ENDIF
WAIT 0
ENDWHILE
IF NOT DOES_CHAR_EXIST myth_ped
OR NOT DOES_CHAR_EXIST target_ped
BREAK
ENDIF
ENDIF
//push & cover
IF IS_CHAR_PLAYING_ANIM myth_ped $BLOCK
IF LOCATE_CHAR_DISTANCE_TO_CHAR myth_ped target_ped 1.5
IF HAS_CHAR_SPOTTED_CHAR_IN_FRONT myth_ped target_ped
IF HAS_CHAR_SPOTTED_CHAR_IN_FRONT target_ped myth_ped
IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR myth_ped target_ped
OR IS_BUTTON_JUST_PRESSED 0 CIRCLE
CLEAR_CHAR_LAST_DAMAGE_ENTITY myth_ped
GET_CHAR_COORDINATES myth_ped x y z
GET_GROUND_Z_FOR_3D_COORD x y z z
z += 0.05
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped x y z
//CLEAR_CHAR_TASKS_IMMEDIATELY myth_ped
CLEO_CALL turn_char 0 target_ped myth_ped
OPEN_SEQUENCE_TASK tasks
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 $MYTH_ANIM $IFP 4.0 0 1 1 0 500
TASK_PLAY_ANIM -1 $IDLE $IFP 4.0 0 1 1 0 200
CLOSE_SEQUENCE_TASK tasks
PERFORM_SEQUENCE_TASK myth_ped tasks
CLEAR_SEQUENCE_TASK tasks
GOSUB clear_tasks
timera = 0
WHILE timera < 400
AND NOT IS_CHAR_PLAYING_ANIM target_ped $TARGET_ANIM
TASK_PLAY_ANIM_NON_INTERRUPTABLE target_ped $TARGET_ANIM $IFP 4.0 0 1 1 0 -1
IF timera > 600
BREAK
ENDIF
WAIT 0
ENDWHILE
WHILE DOES_CHAR_EXIST target_ped
IF NOT IS_CHAR_PLAYING_ANIM target_ped $TARGET_ANIM
BREAK
ENDIF
WAIT 0
ENDWHILE
IF NOT DOES_CHAR_EXIST myth_ped
OR NOT DOES_CHAR_EXIST target_ped
BREAK
ENDIF
CLEO_CALL apply_attack 0 p_shared_buffer target_ped myth_ped 2 //attacks target
SET_CHAR_SHOOT_RATE myth_ped 200
timera = 0
WHILE timera < 1000
IF DOES_CHAR_EXIST myth_ped
GOSUB fight_speed
ENDIF
WAIT 0
ENDWHILE
IF NOT DOES_CHAR_EXIST myth_ped
OR NOT DOES_CHAR_EXIST target_ped
BREAK
ENDIF
READ_STRUCT_OFFSET p_buffer (17) 1 int[0] //attack rate
SET_CHAR_SHOOT_RATE myth_ped int[0]
ENDIF
ENDIF
ENDIF
ENDIF
IF var = 0
SET_CHAR_PROOFS myth_ped TRUE TRUE FALSE FALSE TRUE
var = 1
ENDIF
ELSE
IF var = 1
CLEO_CALL apply_proofs 0 myth_ped p_buffer
var = 0
ENDIF
ENDIF
/*IF IS_CHAR_PLAYING_ANIM target_ped "HitB_3"
IF var2 = 0
GOSUB clear_tasks
TASK_PLAY_ANIM_NON_INTERRUPTABLE target_ped "HitB_2" "FIGHT_B" 4.0 0 1 1 0 -1
var2 = 1
ELSE
WHILE IS_CHAR_PLAYING_ANIM target_ped "HitB_3"
WAIT 0
ENDWHILE
var2 = 0
ENDIF
ENDIF*/
IF IS_CHAR_FIGHTING myth_ped
GOSUB fight_speed
ENDIF
IF IS_CHAR_FALLEN_ON_GROUND target_ped
SET_CHAR_SHOOT_RATE myth_ped 1
WHILE DOES_CHAR_EXIST myth_ped
IF NOT IS_CHAR_FALLEN_ON_GROUND target_ped
BREAK
ENDIF
WAIT 0
ENDWHILE
IF NOT DOES_CHAR_EXIST myth_ped
OR NOT DOES_CHAR_EXIST target_ped
BREAK
ENDIF
READ_STRUCT_OFFSET p_buffer (17) 1 int[0] //attack rate
SET_CHAR_SHOOT_RATE myth_ped int[0]
ENDIF
ENDIF
ENDIF
ENDIF
WAIT 0
ENDWHILE
TERMINATE_THIS_CUSTOM_SCRIPT
CLEO_RETURN 0
fight_speed:
SET_CHAR_ANIM_SPEED myth_ped $MYTH_ANIM 1.3 //FIGHTX_1
SET_CHAR_ANIM_SPEED myth_ped "FIGHTA_2" 1.3
SET_CHAR_ANIM_SPEED myth_ped "FIGHTA_3" 1.3
SET_CHAR_ANIM_SPEED myth_ped "FIGHTB_2" 1.3
SET_CHAR_ANIM_SPEED myth_ped "FIGHTB_3" 1.3
SET_CHAR_ANIM_SPEED myth_ped "FIGHTC_2" 1.3
SET_CHAR_ANIM_SPEED myth_ped "FIGHTC_3" 1.3
SET_CHAR_ANIM_SPEED myth_ped "FIGHTD_3" 1.3
SET_CHAR_ANIM_SPEED myth_ped "HIT_FIGHTKICK" 1.3
SET_CHAR_ANIM_SPEED myth_ped "HIT_FIGHTKICK_B" 1.2
SET_CHAR_ANIM_SPEED myth_ped "FightShB" 1.15
SET_CHAR_ANIM_SPEED myth_ped "FightShF" 1.15
SET_CHAR_ANIM_SPEED myth_ped "FightSh_BWD" 1.15
SET_CHAR_ANIM_SPEED myth_ped "FightSh_FWD" 1.15
SET_CHAR_ANIM_SPEED myth_ped "FightSh_Left" 1.15
SET_CHAR_ANIM_SPEED myth_ped "FightSh_Right" 1.15
GET_CURRENT_CHAR_WEAPON myth_ped int[0]
SWITCH int[0]
CASE 4//knife
CASE 11//DILDO2
CASE 13//VIBE2
SET_CHAR_ANIM_SPEED myth_ped "knife_1" 1.3
SET_CHAR_ANIM_SPEED myth_ped "knife_2" 1.3
SET_CHAR_ANIM_SPEED myth_ped "knife_3" 1.3
SET_CHAR_ANIM_SPEED myth_ped "knife_4" 1.3
SET_CHAR_ANIM_SPEED myth_ped "knife_G" 1.3
BREAK
CASE 2//GOLFCLUB
CASE 3//NIGHTSTICK
CASE 5//baseball bat
CASE 6//SHOVEL
CASE 7//POOLCUE
SET_CHAR_ANIM_SPEED myth_ped "Bat_1" 1.3
SET_CHAR_ANIM_SPEED myth_ped "Bat_2" 1.3
SET_CHAR_ANIM_SPEED myth_ped "Bat_3" 1.3
SET_CHAR_ANIM_SPEED myth_ped "Bat_4" 1.3
BREAK
CASE 9//CHAINSAW
SET_CHAR_ANIM_SPEED myth_ped "CSAW_1" 1.3
SET_CHAR_ANIM_SPEED myth_ped "CSAW_2" 1.3
SET_CHAR_ANIM_SPEED myth_ped "CSAW_3" 1.3
SET_CHAR_ANIM_SPEED myth_ped "CSAW_G" 1.3
BREAK
CASE 10//DILDO1
CASE 12//VIBE1
SET_CHAR_ANIM_SPEED myth_ped "DILDO_1" 1.3
SET_CHAR_ANIM_SPEED myth_ped "DILDO_2" 1.3
SET_CHAR_ANIM_SPEED myth_ped "DILDO_3" 1.3
SET_CHAR_ANIM_SPEED myth_ped "DILDO_G" 1.3
BREAK
CASE 8//KATANA
CASE 15//CANE
SET_CHAR_ANIM_SPEED myth_ped "sword_1" 1.3
SET_CHAR_ANIM_SPEED myth_ped "sword_2" 1.3
SET_CHAR_ANIM_SPEED myth_ped "sword_3" 1.3
SET_CHAR_ANIM_SPEED myth_ped "sword_4" 1.3
SET_CHAR_ANIM_SPEED myth_ped "sword_part" 1.3
BREAK
ENDSWITCH
RETURN
clear_tasks:
IF target_ped = scplayer
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
ELSE
GET_CHAR_COORDINATES target_ped x y z
SET_CHAR_COORDINATES_DONT_WARP_GANG target_ped x y z
ENDIF
RETURN
}
{
LVAR_INT myth_ped scplayer time flee_ped vehicle task_status pedtype var1 var2 weapon_type ammo model
ped_run_away_skill:
time *= 150
WHILE DOES_CHAR_EXIST myth_ped
IF IS_CHAR_HEALTH_GREATER myth_ped 0
WHILE GET_ANY_CHAR_NO_SAVE_RECURSIVE var1 var1 flee_ped
IF HAS_CHAR_SPOTTED_CHAR flee_ped myth_ped
IF NOT flee_ped = scplayer
IF NOT flee_ped = myth_ped
GOSUB apply_flee
ENDIF
ENDIF
ENDIF
WAIT time
IF NOT DOES_CHAR_EXIST myth_ped
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
ENDWHILE
var1 = 0
ENDIF
IF NOT flee_ped = -1
ENDIF
WAIT time
ENDWHILE
TERMINATE_THIS_CUSTOM_SCRIPT
CLEO_RETURN 0
apply_flee:
IF DOES_CHAR_EXIST flee_ped
IF NOT IS_CHAR_SCRIPT_CONTROLLED flee_ped
IF IS_CHAR_IN_ANY_CAR flee_ped
GET_CAR_CHAR_IS_USING flee_ped vehicle
SET_CAR_CRUISE_SPEED vehicle 150.0
SET_CAR_DRIVING_STYLE vehicle 2
RETURN
ENDIF
GET_PED_TYPE flee_ped pedtype
IF NOT pedtype = 24//MISSION1
var2 = 1
WHILE NOT var2 = 8
GET_CHAR_WEAPON_IN_SLOT flee_ped var2 weapon_type ammo model
IF NOT weapon_type = 0
SET_CHAR_RELATIONSHIP flee_ped 4 PEDTYPE_MISSION1
RETURN
ENDIF
var2 += 1
ENDWHILE
GET_SCRIPT_TASK_STATUS flee_ped 0x5DD (task_status) // get TASK_SMART_FLEE_CHAR status
IF task_status = 7
IF HAS_CHAR_SPOTTED_CHAR flee_ped myth_ped
TASK_SMART_FLEE_CHAR flee_ped myth_ped 50.0 5000
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
RETURN
}
{
LVAR_INT myth_ped target tasks var damage int[2]
LVAR_FLOAT x[4] y[4] z[4] ftimer angle tempo min_a max_a intensity
super_punch_skill:
WHILE DOES_CHAR_EXIST myth_ped
IF GET_CHAR_KILL_TARGET_CHAR myth_ped target
IF GET_CHAR_DAMAGE_LAST_FRAME target int[1] int[0] int[0] intensity
IF NOT int[1] = 0
GET_ENTITY_TYPE int[1] int[0]
IF int[0] = ENTITY_TYPE_PED
GET_PED_REF int[1] int[0]
IF int[0] = myth_ped
BREAK
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
WAIT 0
ENDWHILE
IF NOT DOES_CHAR_EXIST myth_ped
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
IF IS_CHAR_FALLEN_ON_GROUND target
WAIT 0
GOTO super_punch_skill
ENDIF
CLEAR_CHAR_TASKS target
GET_CHAR_COORDINATES target x[2] y[2] z[2]
z[2] -= 0.8
SET_CHAR_COORDINATES target x[2] y[2] z[2]
timera = 0
WHILE TRUE
IF NOT DOES_CHAR_EXIST myth_ped
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
IF NOT DOES_CHAR_EXIST target
GOTO super_punch_skill
ENDIF
GET_CHAR_HEADING myth_ped max_a
max_a += 360.0
min_a = max_a
max_a += 90.0
min_a -= 90.0
GET_CHAR_HEADING target angle
angle += 360.0
IF angle < min_a
OR angle > max_a
OPEN_SEQUENCE_TASK tasks
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 "KO_skid_front" "PED" 4.0 0 1 1 1 -1
CLOSE_SEQUENCE_TASK tasks
PERFORM_SEQUENCE_TASK target tasks
CLEAR_SEQUENCE_TASK tasks
var = 1
ELSE
OPEN_SEQUENCE_TASK tasks
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 "KO_skid_back" "PED" 4.0 0 1 1 1 -1
CLOSE_SEQUENCE_TASK tasks
PERFORM_SEQUENCE_TASK target tasks
CLEAR_SEQUENCE_TASK tasks
var = 0
ENDIF
IF IS_CHAR_PLAYING_ANIM target "KO_skid_front"
OR IS_CHAR_PLAYING_ANIM target "KO_skid_back"
BREAK
ENDIF
WAIT 0
ENDWHILE
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS myth_ped 0.0 0.5 0.3 x[0] y[0] z[0]
SET_CHAR_COORDINATES_SIMPLE target x[0] y[0] z[0]
timera = 0
ftimer = 4.0
WHILE IS_CHAR_IN_AIR target
OR timera < 800
IF NOT DOES_CHAR_EXIST myth_ped
OR NOT DOES_CHAR_EXIST target
BREAK
ENDIF
GOSUB get_punch_angle
x[0] -= x[1]
y[0] -= y[1]
z[0] -= z[1]
ftimer -=@ 0.2
x[0] *= 3.5
y[0] *= 3.5
//ftimer /= 4.0
z[0] +=@ ftimer
//timer *= 4.0
SET_CHAR_VELOCITY target x[0] y[0] z[0]
WAIT 0
ENDWHILE
WAIT 0
IF NOT DOES_CHAR_EXIST myth_ped
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
IF NOT DOES_CHAR_EXIST target
GOTO super_punch_skill
ENDIF
IF var = 1
IF NOT IS_CHAR_PLAYING_ANIM target "getup"
WAIT 0
OPEN_SEQUENCE_TASK tasks
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 "getup" "PED" 4.0 0 0 0 0 -1
CLOSE_SEQUENCE_TASK tasks
PERFORM_SEQUENCE_TASK target tasks
CLEAR_SEQUENCE_TASK tasks
ENDIF
ELSE
IF NOT IS_CHAR_PLAYING_ANIM target "getup_front"
WAIT 0
OPEN_SEQUENCE_TASK tasks
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 "getup_front" "PED" 4.0 0 0 0 0 -1
CLOSE_SEQUENCE_TASK tasks
PERFORM_SEQUENCE_TASK target tasks
CLEAR_SEQUENCE_TASK tasks
ENDIF
ENDIF
timera = 0
WHILE TRUE
IF NOT DOES_CHAR_EXIST myth_ped
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
IF NOT DOES_CHAR_EXIST target
GOTO super_punch_skill
ENDIF
IF var = 1
GET_CHAR_ANIM_CURRENT_TIME target "getup" tempo
ELSE
GET_CHAR_ANIM_CURRENT_TIME target "getup_front" tempo
ENDIF
IF tempo = 1.0
BREAK
ENDIF
IF timera > 500
IF tempo = 0.0
BREAK
ENDIF
ENDIF
WAIT 0
ENDWHILE
GOTO super_punch_skill
CLEO_RETURN 0
get_punch_angle:
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS myth_ped 0.0 10.0 0.0 x[0] y[0] z[0]
GET_GROUND_Z_FOR_3D_COORD x[0] y[0] z[0] z[0]
GET_CHAR_COORDINATES target x[1] y[1] z[1]
GET_ANGLE_FROM_TWO_COORDS (x[0] y[0]) (x[1],y[1]) (angle)
RETURN
}
{
LVAR_INT scplayer myth_ped p_buffer p_shared_buffer target var
teleport_skill:
WHILE DOES_CHAR_EXIST myth_ped
IF NOT IS_CHAR_ON_SCREEN myth_ped
timera = 0
ELSE
IF timera > 1000
BREAK
ENDIF
ENDIF
READ_STRUCT_OFFSET p_buffer (94) 1 var//teleport trigger
IF NOT var = 0
BREAK
ENDIF
WAIT 0
ENDWHILE
WHILE DOES_CHAR_EXIST myth_ped
READ_STRUCT_OFFSET p_buffer (94) 1 var//teleport trigger
IF IS_CHAR_HEALTH_GREATER myth_ped 0
OR NOT var = 0
IF NOT IS_CHAR_ON_SCREEN myth_ped
OR NOT var = 0
IF timera > 4000
OR NOT var = 0
SET_CHAR_VISIBLE myth_ped FALSE
WRITE_STRUCT_OFFSET p_buffer (93) 1 1//visible
CLEO_CALL spawn_type_1 0 scplayer myth_ped var p_buffer
WRITE_STRUCT_OFFSET p_buffer (94) 1 0//teleport trigger
IF DOES_CHAR_EXIST myth_ped
GET_CHAR_KILL_TARGET_CHAR myth_ped target
IF target = scplayer
CLEO_CALL apply_attack 0 p_shared_buffer scplayer myth_ped 2 //attacks target
ENDIF
SET_CHAR_VISIBLE myth_ped TRUE
WRITE_STRUCT_OFFSET p_buffer (93) 1 0//visible
ENDIF
timera = 0
ENDIF
ELSE
timera = 0
ENDIF
ENDIF
WAIT 0
ENDWHILE
TERMINATE_THIS_CUSTOM_SCRIPT
CLEO_RETURN 0
}
{
LVAR_INT myth_ped target tasks current_health max_health weapon int[2] scplayer group
LVAR_FLOAT x y z fmax_health intensity
deadly_stab_skill:
GET_PLAYER_CHAR 0 scplayer
GET_PLAYER_GROUP 0 group
WHILE DOES_CHAR_EXIST myth_ped
IF IS_CHAR_HEALTH_GREATER myth_ped 0
IF GET_CHAR_KILL_TARGET_CHAR myth_ped target
GET_CHAR_MAX_HEALTH target fmax_health
fmax_health /= 2.0
max_health =# fmax_health
GET_CHAR_HEALTH target current_health
IF current_health < max_health
IF GET_CHAR_DAMAGE_LAST_FRAME target int[1] int[0] int[0] intensity
GET_ENTITY_TYPE int[1] int[0]
IF int[0] = ENTITY_TYPE_PED
GET_PED_REF int[1] int[0]
IF int[0] = myth_ped
GET_CURRENT_CHAR_WEAPON myth_ped weapon
IF IS_WEAPON_FIRE_TYPE weapon WEAPONFIRE_MELEE
WHILE DOES_CHAR_EXIST target
IF NOT IS_CHAR_FALLEN_ON_GROUND target
BREAK
ENDIF
WAIT 0
ENDWHILE
IF NOT DOES_CHAR_EXIST target
GOTO deadly_stab_skill
ENDIF
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS myth_ped 0.0 1.0 0.0 x y z
GET_GROUND_Z_FOR_3D_COORD x y 900.0 z
SET_CHAR_COORDINATES_DONT_WARP_GANG target x y z
CLEAR_CHAR_TASKS myth_ped
WAIT 0
IF NOT DOES_CHAR_EXIST target
OR NOT DOES_CHAR_EXIST myth_ped
GOTO deadly_stab_skill
ENDIF
OPEN_SEQUENCE_TASK tasks
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 KILL_Knife_Player knife 1.0 1 0 0 0 1600
CLOSE_SEQUENCE_TASK tasks
PERFORM_SEQUENCE_TASK myth_ped tasks
CLEAR_SEQUENCE_TASK tasks
GET_CHAR_HEADING myth_ped z
SET_CHAR_HEADING target z
WAIT 200
IF NOT DOES_CHAR_EXIST target
OR NOT DOES_CHAR_EXIST myth_ped
GOTO deadly_stab_skill
ENDIF
OPEN_SEQUENCE_TASK tasks
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 KILL_Knife_Ped_Damage knife 1.0 0 0 0 0 -1
TASK_DIE_NAMED_ANIM -1 KILL_Knife_Ped_Die knife 1.0 -1
CLOSE_SEQUENCE_TASK tasks
PERFORM_SEQUENCE_TASK target tasks
CLEAR_SEQUENCE_TASK tasks
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
BREAK
ENDIF
IF IS_GROUP_MEMBER myth_ped group
BREAK
ENDIF
WAIT 0
ENDWHILE
TERMINATE_THIS_CUSTOM_SCRIPT
CLEO_RETURN 0
}
{
LVAR_INT myth_ped p_shared_buffer p_buffer myth_id /*in*/ scplayer audio pointer pChar pVector3D var
LVAR_FLOAT x y z bone_x bone_y bone_z fVolume angle
jumpscare_skill:
GET_PLAYER_CHAR 0 scplayer
GET_CHAR_HEADING scplayer angle
GET_LABEL_POINTER string_label (pointer)
READ_STRUCT_OFFSET p_buffer (69) 1 var //type
IF var = 2
STRING_FORMAT (pointer) "cleo\Peds\Ped%i\jumpsca.mp3" myth_id
ENDIF
IF var = 1
STRING_FORMAT (pointer) "cleo\anima\Anim%i\jumpsca.mp3" myth_id
ENDIF
IF var = 0
STRING_FORMAT (pointer) "cleo\Myths\Myth%i\jumpsca.mp3" myth_id
ENDIF
LOAD_AUDIO_STREAM $pointer audio
WHILE DOES_CHAR_EXIST myth_ped
IF NOT IS_CHAR_HEALTH_GREATER myth_ped 1
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
IF IS_CHAR_ON_SCREEN myth_ped
AND IS_PLAYER_PLAYING 0
IF IS_CHAR_IN_ANY_CAR scplayer
timera = -1000
ENDIF
GET_ACTIVE_CAMERA_COORDINATES x y z
GET_CHAR_COORDINATES myth_ped bone_x bone_y bone_z
IF IS_LINE_OF_SIGHT_CLEAR x y z bone_x bone_y bone_z TRUE TRUE FALSE TRUE FALSE
IF timera > 3000
TASK_TURN_CHAR_TO_FACE_CHAR myth_ped scplayer
WAIT 1000
BREAK
ENDIF
ELSE
timera = 0
ENDIF
ELSE
timera = 0
ENDIF
WAIT 0
ENDWHILE
IF NOT DOES_CHAR_EXIST myth_ped
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
IF NOT IS_CHAR_ON_SCREEN scplayer
OR NOT IS_PLAYER_PLAYING 0
GOTO jumpscare_skill
ENDIF
GET_AUDIO_SFX_VOLUME fVolume
SET_AUDIO_STREAM_VOLUME audio fVolume
SET_AUDIO_STREAM_STATE audio ON
SET_PLAYER_CONTROL_PAD_MOVEMENT 0 FALSE
CLEAR_CHAR_TASKS myth_ped
WAIT 0
timera = 0
WHILE timera < 7000
IF NOT DOES_CHAR_EXIST myth_ped
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
TASK_STAND_STILL myth_ped 0x7FFFFFFF
GET_PED_POINTER myth_ped (pChar)
GET_VAR_POINTER bone_x (pVector3D)
CALL_METHOD 0x5E4280 pChar 3 0 (0 4 pVector3D)
GET_CHAR_COORDINATES myth_ped (x y z)
x -= bone_x
y -= bone_y
y += 0.8
z -= bone_z
z *= -1.0
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS myth_ped x 0.9 z (x y z)
SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0
POINT_CAMERA_AT_POINT bone_x bone_y bone_z 2
IF timera > 4000
IF var = 0
DO_FADE 2000 FADE_OUT
var = 1
ENDIF
ENDIF
WAIT 0
ENDWHILE
WAIT 700
DO_FADE 700 FADE_IN
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 x y z
GET_GROUND_Z_FOR_3D_COORD x y z z
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped x y z
SET_CHAR_HEADING scplayer angle
CLEO_CALL apply_attack 0 p_shared_buffer scplayer myth_ped 2 //attacks target
RESTORE_CAMERA_JUMPCUT
SET_PLAYER_CONTROL_PAD_MOVEMENT 0 TRUE
REMOVE_AUDIO_STREAM audio
TERMINATE_THIS_CUSTOM_SCRIPT
CLEO_RETURN 0
}
{
LVAR_FLOAT pos_x pos_y pos_z
LVAR_INT myth_ped p_shared_buffer target_ped scplayer pedstate task p_task entity_type group
LVAR_FLOAT x[2] y[2] z[2]
climb_skill:
GET_PLAYER_CHAR 0 scplayer
GET_PLAYER_GROUP 0 group
WHILE DOES_CHAR_EXIST myth_ped
IF GET_CHAR_KILL_TARGET_CHAR myth_ped target_ped
IF target_ped > 0x00100000
GET_ENTITY_TYPE target_ped entity_type
IF entity_type = ENTITY_TYPE_PED
GET_PED_REF target_ped (target_ped)
ENDIF
ENDIF
IF NOT IS_CHAR_FIGHTING myth_ped
IF x[0] = 0.0
AND x[0] = 0.0
GET_CHAR_COORDINATES myth_ped x[0] y[0] z[0]
ENDIF
IF timera > 2000
IF LOCATE_CHAR_DISTANCE_TO_COORDINATES myth_ped x[0] y[0] z[0] 2.0
GET_CHAR_COORDINATES myth_ped x[0] y[0] z[0]
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS myth_ped 0.0 1.0 0.0 x[1] y[1] z[1]
IF NOT IS_LINE_OF_SIGHT_CLEAR x[0] y[0] z[0] x[1] y[1] z[1] 1 1 0 1 0
CLEO_CALL turn_char 0 myth_ped target_ped
TASK_CLIMB myth_ped TRUE
CLEAR_CHAR_TASKS myth_ped
CLEO_CALL apply_attack 0 p_shared_buffer target_ped myth_ped 2//attacks target
GOSUB restart_coord
ENDIF
ENDIF
GOSUB restart_coord
ENDIF
ELSE
GOSUB restart_coord
ENDIF
ELSE
GOSUB restart_coord
ENDIF
IF IS_GROUP_MEMBER myth_ped group
BREAK
ENDIF
WAIT 0
ENDWHILE
TERMINATE_THIS_CUSTOM_SCRIPT
restart_coord:
timera = 0
x[0] = 0.0
y[0] = 0.0
z[0] = 0.0
RETURN
CLEO_RETURN 0
}
{
LVAR_FLOAT pos_x pos_y pos_z
LVAR_INT myth_ped p_buffer p_shared_buffer task_status target_ped scplayer walk_mode interaction group list type
LVAR_FLOAT x[3] y[3] z[3] find_radius spawn_radius interaction_radius
random_walk_skill:
GET_PLAYER_CHAR 0 scplayer
GET_PLAYER_GROUP 0 group
READ_STRUCT_PARAM p_buffer (0) list
READ_STRUCT_OFFSET p_buffer (69) 1 type
GET_LIST_VALUE_BY_INDEX list (0) find_radius
GET_LIST_VALUE_BY_INDEX list (1) spawn_radius
GET_LIST_VALUE_BY_INDEX list (2) interaction_radius
READ_STRUCT_OFFSET p_buffer (49) 1 interaction
READ_STRUCT_OFFSET p_buffer (13) 1 walk_mode//walks randomly wander
GENERATE_RANDOM_INT_IN_RANGE 11000 13000 timera
WHILE DOES_CHAR_EXIST myth_ped
READ_STRUCT_OFFSET p_buffer (13) 1 walk_mode//walks randomly
IF walk_mode = 0
BREAK
ENDIF
IF IS_CHAR_HEALTH_GREATER myth_ped 0
IF walk_mode = 3//walk
OR walk_mode = 4//run
IF NOT GET_CHAR_KILL_TARGET_CHAR myth_ped target_ped
IF timera > 2000
IF LOCATE_CHAR_DISTANCE_TO_COORDINATES scplayer pos_x pos_y pos_z find_radius
IF NOT LOCATE_CHAR_DISTANCE_TO_CHAR myth_ped scplayer interaction_radius
GET_CHAR_COORDINATES scplayer x[0] y[0] z[0]
IF walk_mode = 3//walk
TASK_GO_STRAIGHT_TO_COORD myth_ped x[0] y[0] z[0] 4 -1
ELSE//run
TASK_GO_STRAIGHT_TO_COORD myth_ped x[0] y[0] z[0] 7 -1
ENDIF
WAIT 500
timera = 0
GOTO random_walk_skill
ELSE
IF interaction = 0//attack
CLEO_CALL apply_attack 0 p_shared_buffer scplayer myth_ped 2 //attacks target
ELSE
CLEO_CALL runaway_from_player 0 p_buffer scplayer myth_ped
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
timera = 0
ENDIF
ELSE
IF IS_CHAR_STOPPED myth_ped
OR IS_CHAR_IN_WATER myth_ped
GET_SCRIPT_TASK_STATUS myth_ped 0x5DD (task_status) // get TASK_SMART_FLEE_CHAR status
IF task_status = 7
IF NOT IS_CHAR_DOING_ANY_IMPORTANT_TASK myth_ped TRUE
IF NOT GET_CHAR_KILL_TARGET_CHAR myth_ped target_ped
IF timera > 15000
GENERATE_RANDOM_INT_IN_RANGE -3000 10000 timera
x[0] = pos_x
x[1] = pos_x
y[0] = pos_y
y[1] = pos_y
x[0] -= spawn_radius
x[1] += spawn_radius
y[0] -= spawn_radius
y[1] += spawn_radius
timerb = 0
find_spot:
GENERATE_RANDOM_FLOAT_IN_RANGE x[0] x[1] x[2]
GENERATE_RANDOM_FLOAT_IN_RANGE y[0] y[1] y[2]
GET_GROUND_Z_FOR_3D_COORD x[2] y[2] 900.0 z[2]
IF NOT LOCATE_CHAR_DISTANCE_TO_COORDINATES myth_ped x[2] y[2] z[2] 30.0
OR LOCATE_CHAR_DISTANCE_TO_COORDINATES myth_ped x[2] y[2] z[2] 7.0
timerb ++
IF timerb < 80
GOTO find_spot
ENDIF
ENDIF
IF IS_CHAR_SWIMMING myth_ped
GET_WATER_HEIGHT_AT_COORDS x[2] y[2] 1 pos_z
TASK_SWIM_TO_COORD myth_ped x[2] y[2] pos_z
ELSE
GET_CITY_PLAYER_IS_IN 0 timerb
IF timerb = 0
OR type = 1//animal
TASK_GO_STRAIGHT_TO_COORD myth_ped x[2] y[2] -100.0 4 -1
ELSE
TASK_WANDER_STANDARD myth_ped
timera = 0
WHILE timera < 10000
WAIT 0
ENDWHILE
IF DOES_CHAR_EXIST myth_ped
TASK_STAND_STILL myth_ped -1
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
timera = 10000
ENDIF
ELSE
timera = 10000
ENDIF
ELSE
timera = 10000
ENDIF
ELSE
timera = 10000
ENDIF
ENDIF
ENDIF
IF IS_GROUP_MEMBER myth_ped group
BREAK
ENDIF
WAIT 0
ENDWHILE
TERMINATE_THIS_CUSTOM_SCRIPT
CLEO_RETURN 0
}
{
LVAR_INT p_shared_buffer target myth_ped tipo
LVAR_INT id decision
apply_attack:
SWITCH tipo
CASE 0//neutral
READ_STRUCT_PARAM p_shared_buffer (1) decision
BREAK
CASE 1//attacks everyone
READ_STRUCT_PARAM p_shared_buffer (0) decision
id = 0
WHILE id < 31
SET_CHAR_RELATIONSHIP myth_ped 4 id
id += 1
IF id = 24//mission1
id = 25
ENDIF
ENDWHILE
BREAK
CASE 2//attacks target
READ_STRUCT_PARAM p_shared_buffer (0) decision
TASK_KILL_CHAR_ON_FOOT myth_ped target
SET_CHAR_RELATIONSHIP myth_ped 4 PEDTYPE_PLAYER1
SET_CHAR_RELATIONSHIP myth_ped 4 PEDTYPE_PLAYER2
BREAK
ENDSWITCH
TASK_SET_CHAR_DECISION_MAKER myth_ped decision
CLEO_RETURN 0
}
{
LVAR_INT weapon_id random weapon
weapon_groups:
SWITCH weapon_id
CASE 37//ANY MELEE
GENERATE_RANDOM_INT_IN_RANGE 0 15 random
SWITCH random
CASE 0
weapon = 1//WEAPONTYPE_BRASSKNUCKLE
BREAK
CASE 1
weapon = 2//WEAPONTYPE_GOLFCLUB
BREAK
CASE 2
weapon = 3//WEAPONTYPE_NIGHTSTICK
BREAK
CASE 3
weapon = 4//WEAPONTYPE_KNIFE
BREAK
CASE 4
weapon = 5//WEAPONTYPE_BASEBALLBAT
BREAK
CASE 5
weapon = 6//WEAPONTYPE_SHOVEL
BREAK
CASE 6
weapon = 7//WEAPONTYPE_POOL_CUE
BREAK
CASE 7
weapon = 8//WEAPONTYPE_KATANA
BREAK
CASE 8
weapon = 9//WEAPONTYPE_CHAINSAW
BREAK
CASE 9
weapon = 10//WEAPONTYPE_DILDO1
BREAK
CASE 10
weapon = 11//WEAPONTYPE_DILDO2
BREAK
CASE 11
weapon = 12//WEAPONTYPE_VIBE1
BREAK
CASE 12
weapon = 13//WEAPONTYPE_VIBE2
BREAK
CASE 13
weapon = 14//WEAPONTYPE_FLOWERS
BREAK
CASE 14
weapon = 15//WEAPONTYPE_CANE
BREAK
ENDSWITCH
BREAK
CASE 38//ANY MELEE (WITH EXCEPTIONS)
GENERATE_RANDOM_INT_IN_RANGE 0 9 random
SWITCH random
CASE 0
weapon = 15//WEAPONTYPE_CANE
BREAK
CASE 1
weapon = 2//WEAPONTYPE_GOLFCLUB
BREAK
CASE 2
weapon = 3//WEAPONTYPE_NIGHTSTICK
BREAK
CASE 3
weapon = 4//WEAPONTYPE_KNIFE
BREAK
CASE 4
weapon = 5//WEAPONTYPE_BASEBALLBAT
BREAK
CASE 5
weapon = 6//WEAPONTYPE_SHOVEL
BREAK
CASE 6
weapon = 7//WEAPONTYPE_POOL_CUE
BREAK
CASE 7
weapon = 8//WEAPONTYPE_KATANA
BREAK
CASE 8
weapon = 9//WEAPONTYPE_CHAINSAW
BREAK
ENDSWITCH
BREAK
CASE 39//ANY VIOLENT MELEE
GENERATE_RANDOM_INT_IN_RANGE 0 3 random
SWITCH random
CASE 0
weapon = 4//WEAPONTYPE_KNIFE
BREAK
CASE 1
weapon = 5//WEAPONTYPE_BASEBALLBAT
BREAK
CASE 2
weapon = 9//WEAPONTYPE_CHAINSAW
BREAK
ENDSWITCH
BREAK
CASE 40//ANY PISTOL
GENERATE_RANDOM_INT_IN_RANGE 0 3 random
SWITCH random
CASE 0
weapon = 22//WEAPONTYPE_PISTOL
BREAK
CASE 1
weapon = 23//WEAPONTYPE_PISTOL_SILENCED
BREAK
CASE 2
weapon = 24//WEAPONTYPE_DESERT_EAGLE
BREAK
ENDSWITCH
BREAK
CASE 41//ANY SUBMACHINE GUN
GENERATE_RANDOM_INT_IN_RANGE 0 3 random
SWITCH random
CASE 0
weapon = 28//WEAPONTYPE_MICRO_UZI
BREAK
CASE 1
weapon = 29//WEAPONTYPE_MP5
BREAK
CASE 2
weapon = 32//WEAPONTYPE_TEC9
BREAK
ENDSWITCH
BREAK
CASE 42//ANY RIFLE
GENERATE_RANDOM_INT_IN_RANGE 0 2 random
SWITCH random
CASE 0
weapon = 30//WEAPONTYPE_AK47
BREAK
CASE 1
weapon = 31//WEAPONTYPE_M4
BREAK
ENDSWITCH
BREAK
CASE 43//ANY SHOTGUN
GENERATE_RANDOM_INT_IN_RANGE 0 3 random
SWITCH random
CASE 0
weapon = 25//WEAPONTYPE_SHOTGUN
BREAK
CASE 1
weapon = 26//WEAPONTYPE_SAWNOFF_SHOTGUN
BREAK
CASE 2
weapon = 27//WEAPONTYPE_SPAS12_SHOTGUN
BREAK
ENDSWITCH
BREAK
CASE 44//ANY PRECISION RIFLE
GENERATE_RANDOM_INT_IN_RANGE 0 2 random
SWITCH random
CASE 0
weapon = 33//WEAPONTYPE_COUNTRYRIFLE
BREAK
CASE 1
weapon = 34//WEAPONTYPE_SNIPERRIFLE
BREAK
ENDSWITCH
BREAK
CASE 45//ANY THROWABLE
GENERATE_RANDOM_INT_IN_RANGE 0 2 random
SWITCH random
CASE 0
weapon = 16//WEAPONTYPE_GRENADE
BREAK
CASE 1
weapon = 18//WEAPONTYPE_MOLOTOV
BREAK
ENDSWITCH
BREAK
CASE 46//ANY HEAVY GUN
GENERATE_RANDOM_INT_IN_RANGE 0 3 random
SWITCH random
CASE 0
weapon = 35//WEAPONTYPE_ROCKETLAUNCHER
BREAK
CASE 1
weapon = 37//WEAPONTYPE_FLAMETHROWER
BREAK
CASE 2
weapon = 38//WEAPONTYPE_MINIGUN
BREAK
ENDSWITCH
BREAK
CASE 47//ANY DILDO
GENERATE_RANDOM_INT_IN_RANGE 0 4 random
SWITCH random
CASE 0
weapon = 10//WEAPONTYPE_DILDO1
BREAK
CASE 1
weapon = 11//WEAPONTYPE_DILDO2
BREAK
CASE 2
weapon = 12//WEAPONTYPE_VIBE1
BREAK
CASE 3
weapon = 13//WEAPONTYPE_VIBE2
BREAK
ENDSWITCH
BREAK
CASE 48//ANY GANG WEAPON
GENERATE_RANDOM_INT_IN_RANGE 0 6 random
SWITCH random
CASE 0
weapon = 5//WEAPONTYPE_BASEBALLBAT
BREAK
CASE 1
weapon = 22//WEAPONTYPE_PISTOL
BREAK
CASE 2
weapon = 28//WEAPONTYPE_MICRO_UZI
BREAK
CASE 3
weapon = 29//WEAPONTYPE_MP5
BREAK
CASE 4
weapon = 32//WEAPONTYPE_TEC9
BREAK
CASE 5
weapon = 30//WEAPONTYPE_AK47
BREAK
ENDSWITCH
BREAK
CASE 49//ANY FARM WEAPON
GENERATE_RANDOM_INT_IN_RANGE 0 3 random
SWITCH random
CASE 0
weapon = 6//WEAPONTYPE_SHOVEL
BREAK
CASE 1
weapon = 25//WEAPONTYPE_SHOTGUN
BREAK
CASE 2
weapon = 33//WEAPONTYPE_COUNTRYRIFLE
BREAK
ENDSWITCH
BREAK
CASE 50//ANY COP WEAPON
GENERATE_RANDOM_INT_IN_RANGE 0 4 random
SWITCH random
CASE 0
weapon = 3//WEAPONTYPE_NIGHTSTICK
BREAK
CASE 1
weapon = 22//WEAPONTYPE_PISTOL
BREAK
CASE 2
weapon = 25//WEAPONTYPE_SHOTGUN
BREAK
CASE 3
weapon = 31//WEAPONTYPE_M4
BREAK
ENDSWITCH
BREAK
CASE 51//ANY URBAN WEAPON
GENERATE_RANDOM_INT_IN_RANGE 0 4 random
SWITCH random
CASE 0
weapon = 4//WEAPONTYPE_KNIFE
BREAK
CASE 1
weapon = 5//WEAPONTYPE_BASEBALLBAT
BREAK
CASE 2
weapon = 22//WEAPONTYPE_PISTOL
BREAK
CASE 3
weapon = 31//WEAPONTYPE_M4
BREAK
ENDSWITCH
BREAK
ENDSWITCH
CLEO_RETURN 0 (weapon)
}
{
LVAR_INT scplayer CVehicle car pGasPedal mSubClass
car_turn_off:
IF IS_CHAR_IN_ANY_CAR scplayer
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car
GET_VEHICLE_POINTER car (CVehicle)
CVehicle += 0x594
READ_MEMORY CVehicle 4 FALSE (mSubClass)
IF mSubClass = 0 // car
OR mSubClass = 9 // motorcycle
CLEO_CALL SimulateButton 0 14
CLEO_CALL SimulateButton 0 16
CLEO_RETURN 0
ENDIF
ENDIF
CLEO_RETURN 0
}
{
SimulateButton:
LVAR_INT adress
adress *= 2
adress += 0xB73458
WRITE_MEMORY adress 2 0 0
CLEO_RETURN 0
}
{
LVAR_INT myth_ped p_buffer BP FP EP CP MP
apply_proofs:
READ_STRUCT_OFFSET_MULTI p_buffer (32) 5 1 BP FP EP CP MP
SET_CHAR_PROOFS myth_ped BP FP EP CP MP
CLEO_RETURN 0
}
{
LVAR_INT scplayer myth_ped var p_buffer int[2] sidewalk blood list
LVAR_FLOAT pos_x pos_y pos_z z[3] max_height_difference[2] spawn_radius spawn_radius2 x[2] y[2] z0[2] angle[3]
spawn_type_1:
READ_STRUCT_OFFSET p_buffer (37) 1 blood//leaves blood stain
SET_CHAR_BLEEDING myth_ped FALSE
FREEZE_CHAR_POSITION myth_ped TRUE
READ_STRUCT_OFFSET p_buffer (50) 1 sidewalk
READ_STRUCT_PARAM p_buffer (0) list
GET_LIST_VALUE_BY_INDEX list (1) spawn_radius
GET_LIST_VALUE_BY_INDEX list (3) max_height_difference[0]
IF max_height_difference[0] <= 2.0
max_height_difference[0] = 2.0
ENDIF
max_height_difference[1] = max_height_difference[0]
max_height_difference[1] *= -1.0
GOSUB teleport
CLEO_CALL turn_char 0 myth_ped scplayer
timera = 0
WHILE TRUE
GOSUB teleport
CLEO_CALL turn_char 0 myth_ped scplayer
GET_CHAR_COORDINATES scplayer pos_x pos_x z[0]
GET_CHAR_COORDINATES myth_ped pos_x pos_x z[1]
z[2] = z[0] - z[1]
WAIT 0
IF NOT DOES_CHAR_EXIST myth_ped
READ_STRUCT_OFFSET p_buffer (43) 1 int[0]//myth quantity
READ_STRUCT_OFFSET p_buffer (44) 1 int[1]//dead myths
IF int[0] = 1
int[1] = 1000
ELSE
int[1] += 1
ENDIF
WRITE_STRUCT_OFFSET p_buffer (44) 1 int[1]//dead myths
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
IF NOT IS_CHAR_ON_SCREEN myth_ped
AND LOCATE_CHAR_DISTANCE_TO_CHAR scplayer myth_ped spawn_radius
AND z[2] < max_height_difference[0]
AND z[2] > max_height_difference[1]
IF var = 0
IF HAS_CHAR_SPOTTED_CHAR myth_ped scplayer
BREAK
ENDIF
ELSE
BREAK
ENDIF
ENDIF
ENDWHILE
SET_CHAR_BLEEDING myth_ped blood
FREEZE_CHAR_POSITION myth_ped FALSE
CLEO_RETURN 0
teleport:
GET_ACTIVE_CAMERA_POINT_AT x[0] y[0] z0[0]
GET_ACTIVE_CAMERA_COORDINATES x[1] y[1] z0[1]
x[0] -= x[1]
y[0] -= y[1]
z0[0] -= z0[1]
x[0] *= 2.5
y[0] *= 2.5
z0[0] *= 5.5
GET_CHAR_COORDINATES scplayer x[1] y[1] z0[1]
x[1] += x[0]
y[1] += y[0]
z0[1] += z0[0]
GET_CHAR_COORDINATES scplayer x[0] y[0] z0[0]
GET_ANGLE_FROM_TWO_COORDS (x[0] y[0]) (x[1],y[1]) (angle[0])
angle[1] = angle[0]
IF timera < 2000
angle[1] += 60.0
angle[0] -= 60.0
ELSE
angle[1] += 80.0
angle[0] -= 80.0
ENDIF
IF var = 2
angle[0] -= 180.0
angle[1] -= 180.0
ENDIF
GENERATE_RANDOM_FLOAT_IN_RANGE angle[0] angle[1] angle[2]
GET_CHAR_COORDINATES scplayer pos_x pos_y pos_z
IF var = 0
GENERATE_RANDOM_FLOAT_IN_RANGE spawn_radius 2.0 spawn_radius2
GET_COORD_FROM_ANGLED_DISTANCE (pos_x pos_y angle[2] spawn_radius2) (pos_x pos_y)
ELSE
GET_COORD_FROM_ANGLED_DISTANCE (pos_x pos_y angle[2] 7.0) (pos_x pos_y)
ENDIF
IF sidewalk = 1
GET_CLOSEST_CHAR_NODE pos_x pos_y pos_z (pos_x pos_y pos_z)
ENDIF
GET_WATER_HEIGHT_AT_COORDS pos_x pos_y 1 pos_z
IF pos_z = -1000.0
GET_GROUND_Z_FOR_3D_COORD pos_x pos_y 900.0 pos_z
pos_z += 0.05
ENDIF
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped pos_x pos_y pos_z
RETURN
}
{//By LightVelox
turn_char:
LVAR_INT myth_ped scplayer
LVAR_FLOAT cx cy ex ey z
LVAR_FLOAT dx dy theta m_pi q magnitude q1 q2 r
GET_CHAR_COORDINATES myth_ped cx cy z
GET_CHAR_COORDINATES scplayer ex ey z
m_pi = 3.1415926
dy = ey
dy -= cy
dx = ex
dx -= cx
q1 = dx
q1 *=dx
q2 = dy
q2 *=dy
q1 +=q2
SQRT q1 r
dx /= r
dy /= r
GET_HEADING_FROM_VECTOR_2D dx dy theta
SET_CHAR_HEADING myth_ped theta
CLEO_RETURN 0
}
{
LVAR_INT myth_ped p_buffer myth_id type //in
LVAR_INT anim nome_ini
LVAR_TEXT_LABEL16 nome_anim
apply_animgroup:
READ_STRUCT_OFFSET p_buffer (11) 1 anim//animgroup
SWITCH anim
DEFAULT
GET_LABEL_POINTER string_label (nome_ini)
IF type = 2
STRING_FORMAT (nome_ini) "cleo\Peds\Ped%i\Ped%i.ini" myth_id myth_id
ENDIF
IF type = 1
STRING_FORMAT (nome_ini) "cleo\Animals\Anim%i\Anim%i.ini" myth_id myth_id
ENDIF
IF type = 0
STRING_FORMAT (nome_ini) "cleo\Myths\Myth%i\Myth%i.ini" myth_id myth_id
ENDIF
IF NOT READ_STRING_FROM_INI_FILE $nome_ini "Myths Maker" "custom animgroup" nome_anim
IF READ_STRING_FROM_INI_FILE $nome_ini "animação" "animgroup" nome_anim
REQUEST_ANIMATION $nome_anim
WHILE NOT HAS_ANIMATION_LOADED $nome_anim
WAIT 0
ENDWHILE
SET_ANIM_GROUP_FOR_CHAR myth_ped $nome_anim
WRITE_STRING_TO_INI_FILE $nome_anim $nome_ini "Myths Maker" "animgroup"
//REMOVE_ANIMATION $nome_anim
ENDIF
ELSE
REQUEST_ANIMATION $nome_anim
WHILE NOT HAS_ANIMATION_LOADED $nome_anim
WAIT 0
ENDWHILE
SET_ANIM_GROUP_FOR_CHAR myth_ped $nome_anim
ENDIF
BREAK
CASE 0
SET_ANIM_GROUP_FOR_CHAR myth_ped man
BREAK
CASE 1
SET_ANIM_GROUP_FOR_CHAR myth_ped oldman
BREAK
CASE 2
SET_ANIM_GROUP_FOR_CHAR myth_ped gang1
BREAK
CASE 3
SET_ANIM_GROUP_FOR_CHAR myth_ped gang2
BREAK
CASE 4
SET_ANIM_GROUP_FOR_CHAR myth_ped oldfatman
BREAK
CASE 5
SET_ANIM_GROUP_FOR_CHAR myth_ped fatman
BREAK
CASE 6
SET_ANIM_GROUP_FOR_CHAR myth_ped jogger
BREAK
CASE 7
SET_ANIM_GROUP_FOR_CHAR myth_ped drunkman
BREAK
CASE 8
SET_ANIM_GROUP_FOR_CHAR myth_ped blindman
BREAK
CASE 9
SET_ANIM_GROUP_FOR_CHAR myth_ped swat
BREAK
CASE 10
SET_ANIM_GROUP_FOR_CHAR myth_ped woman
BREAK
CASE 11
SET_ANIM_GROUP_FOR_CHAR myth_ped shopping
BREAK
CASE 12
SET_ANIM_GROUP_FOR_CHAR myth_ped busywoman
BREAK
CASE 13
SET_ANIM_GROUP_FOR_CHAR myth_ped sexywoman
BREAK
CASE 14
SET_ANIM_GROUP_FOR_CHAR myth_ped pro
BREAK
CASE 15
SET_ANIM_GROUP_FOR_CHAR myth_ped oldwoman
BREAK
CASE 16
SET_ANIM_GROUP_FOR_CHAR myth_ped fatwoman
BREAK
CASE 17
SET_ANIM_GROUP_FOR_CHAR myth_ped jogwoman
BREAK
CASE 18
SET_ANIM_GROUP_FOR_CHAR myth_ped oldfatwoman
BREAK
CASE 19
SET_ANIM_GROUP_FOR_CHAR myth_ped player
BREAK
ENDSWITCH
CLEO_RETURN 0
}
{
LVAR_INT scplayer myth_ped p_buffer
LVAR_FLOAT pos_x pos_y pos_z find_radius max_radius spawn_radius[3] x y z[3] max_height_difference[2] z0 angle
LVAR_INT int[2] sidewalk counter bli list
spawn_type_2:
READ_STRUCT_OFFSET p_buffer (50) 1 sidewalk
READ_STRUCT_PARAM p_buffer (0) list
GET_LIST_VALUE_BY_INDEX list (0) find_radius
GET_LIST_VALUE_BY_INDEX list (1) spawn_radius[0]
x = pos_x
y = pos_y
z[0] = pos_z
GET_LIST_VALUE_BY_INDEX list (3) max_height_difference[0]
IF max_height_difference[0] <= 1.2
max_height_difference[0] = 1.2
ENDIF
max_height_difference[1] = max_height_difference[0]
max_height_difference[1] *= -1.0
IF find_radius > 100.0
find_radius *= 1.4
ELSE
find_radius += 60.0
ENDIF
max_radius = find_radius * 1.2
spawn_radius[2] = spawn_radius[0] / 5.0
FREEZE_CHAR_POSITION myth_ped TRUE
tipo02:
GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 360.0 angle
GENERATE_RANDOM_FLOAT_IN_RANGE spawn_radius[2] spawn_radius[0] spawn_radius[1]
GET_COORD_FROM_ANGLED_DISTANCE (x y angle spawn_radius[1]) (pos_x pos_y)
IF sidewalk = 1
GET_CLOSEST_CHAR_NODE pos_x pos_y pos_z (pos_x pos_y pos_z)
ENDIF
GET_WATER_HEIGHT_AT_COORDS pos_x pos_y 1 pos_z
IF pos_z = -1000.0
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped pos_x pos_y -100.0
ELSE
GET_GROUND_Z_FOR_3D_COORD pos_x pos_y 900.0 z0
IF z0 > pos_z
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped pos_x pos_y -100.0
ELSE
SET_CHAR_COORDINATES_DONT_WARP_GANG myth_ped pos_x pos_y z0
ENDIF
ENDIF
GET_CHAR_COORDINATES myth_ped pos_x pos_x z[1]
z[2] = z[0] - z[1]
GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 360.0 angle
SET_CHAR_HEADING myth_ped angle
IF NOT LOCATE_CHAR_DISTANCE_TO_COORDINATES myth_ped x y z[0] find_radius
OR z[2] > max_height_difference[0]
OR z[2] < max_height_difference[1]
WAIT 10
IF z[2] > max_height_difference[0]
OR z[2] < max_height_difference[1]
counter ++
ENDIF
IF counter < 100
GOTO tipo02
ENDIF
ENDIF
IF DOES_CHAR_EXIST myth_ped
IF find_radius < 100.0
IF IS_CHAR_ON_SCREEN myth_ped
IF counter < 100
GOTO tipo02
ENDIF
ENDIF
ENDIF
IF IS_CHAR_FALLEN_ON_GROUND myth_ped
SET_CHAR_VISIBLE myth_ped FALSE
WRITE_STRUCT_OFFSET p_buffer (93) 1 1//visible
WHILE DOES_CHAR_EXIST myth_ped
IF NOT IS_CHAR_FALLEN_ON_GROUND myth_ped
BREAK
ENDIF
WAIT 0
ENDWHILE
IF DOES_CHAR_EXIST myth_ped
SET_CHAR_VISIBLE myth_ped TRUE
WRITE_STRUCT_OFFSET p_buffer (93) 1 0//visible
ENDIF
ENDIF
FREEZE_CHAR_POSITION myth_ped FALSE
ENDIF
CLEO_RETURN 0
}
{
LVAR_INT p_buffer scplayer myth_ped
LVAR_INT task_status tempo list
LVAR_FLOAT x[2] y[2] z[2] distance radius
runaway_from_player:
READ_STRUCT_PARAM p_buffer (0) list
GET_LIST_VALUE_BY_INDEX list (2) radius//interaction radius
tempo = 1000
GET_SCRIPT_TASK_STATUS myth_ped 0x5DD (task_status) // get TASK_SMART_FLEE_CHAR status
IF task_status = 7
IF HAS_CHAR_SPOTTED_CHAR myth_ped scplayer
IF radius < 10.0
radius = 10.0
ELSE
radius *= 1.2
ENDIF
IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR myth_ped scplayer
GET_CHAR_COORDINATES scplayer x[0] y[0] z[0]
GET_CHAR_COORDINATES myth_ped x[1] y[1] z[1]
GET_DISTANCE_BETWEEN_COORDS_3D x[0] y[0] z[0] x[1] y[1] z[1] distance
distance *= 1.8
radius = distance
tempo = 3000
ENDIF
TASK_SMART_FLEE_CHAR myth_ped scplayer radius tempo
ENDIF
ENDIF
CLEO_RETURN 0
}
{
LVAR_INT myth_ped scplayer
LVAR_FLOAT x y z
get_out_of_water:
GET_PLAYER_CHAR 0 scplayer
timera = 0
WHILE DOES_CHAR_EXIST myth_ped
GET_CHAR_COORDINATES myth_ped x y z
GET_GROUND_Z_FOR_3D_COORD x y z z
z += 0.05
GET_CHAR_HEIGHT_ABOVE_GROUND myth_ped z
IF z > 1.0
IF IS_CHAR_IN_WATER myth_ped
IF timera > 1500
GET_CHAR_COORDINATES scplayer x y z
TASK_SWIM_TO_COORD myth_ped x y z
SET_SWIM_SPEED myth_ped 1.6
timera = 0
ENDIF
ENDIF
ELSE
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS myth_ped 0.0 5.0 -100.0 x y z
TASK_GO_STRAIGHT_TO_COORD myth_ped x y z 6 -1
WAIT 200
CLEO_RETURN 0
ENDIF
WAIT 0
ENDWHILE
CLEO_RETURN 0
}
{
LVAR_INT myth_ped p_buffer var var2 fx[3] target_ped entity_type ped_health[2] teleport
LVAR_INT permanent_fx attacking_fx attack_bone[3] attacked_fx
special_fx:
READ_STRUCT_OFFSET p_buffer (70) 1 permanent_fx
READ_STRUCT_OFFSET p_buffer (71) 1 attack_bone[0]
READ_STRUCT_OFFSET p_buffer (72) 1 attacking_fx
READ_STRUCT_OFFSET p_buffer (73) 1 attack_bone[1]
READ_STRUCT_OFFSET p_buffer (74) 1 attacked_fx
READ_STRUCT_OFFSET p_buffer (75) 1 attack_bone[2]
IF attack_bone[0] > 8
attack_bone[0] += 12
ENDIF
IF attack_bone[0] > 26
attack_bone[0] += 4
ENDIF
IF attack_bone[0] > 36
attack_bone[0] += 4
ENDIF
IF attack_bone[0] > 44
attack_bone[0] += 6
ENDIF
IF attack_bone[1] > 8
attack_bone[1] += 12
ENDIF
IF attack_bone[1] > 26
attack_bone[1] += 4
ENDIF
IF attack_bone[1] > 36
attack_bone[1] += 4
ENDIF
IF attack_bone[1] > 44
attack_bone[1] += 6
ENDIF
IF attack_bone[2] > 8
attack_bone[2] += 12
ENDIF
IF attack_bone[2] > 26
attack_bone[2] += 4
ENDIF
IF attack_bone[2] > 36
attack_bone[2] += 4
ENDIF
IF attack_bone[2] > 44
attack_bone[2] += 6
ENDIF
SWITCH permanent_fx
CASE 0
CREATE_FX_SYSTEM_ON_CHAR "prt_blood" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 1
CREATE_FX_SYSTEM_ON_CHAR "prt_boatsplash" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 2
CREATE_FX_SYSTEM_ON_CHAR "prt_bubble" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 3
CREATE_FX_SYSTEM_ON_CHAR "prt_cardebris" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 4
CREATE_FX_SYSTEM_ON_CHAR "prt_collisionsmoke" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 5
CREATE_FX_SYSTEM_ON_CHAR "prt_glass" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 6
CREATE_FX_SYSTEM_ON_CHAR "prt_gunshell" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 7
CREATE_FX_SYSTEM_ON_CHAR "prt_sand" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 8
CREATE_FX_SYSTEM_ON_CHAR "prt_sand2" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 9
CREATE_FX_SYSTEM_ON_CHAR "prt_smokeII_3_expand" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 10
CREATE_FX_SYSTEM_ON_CHAR "prt_smoke_huge" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 11
CREATE_FX_SYSTEM_ON_CHAR "prt_spark" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 12
CREATE_FX_SYSTEM_ON_CHAR "prt_spark_2" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 13
CREATE_FX_SYSTEM_ON_CHAR "prt_splash" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 14
CREATE_FX_SYSTEM_ON_CHAR "prt_watersplash" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 15
CREATE_FX_SYSTEM_ON_CHAR "prt_wheeldirt" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 16
CREATE_FX_SYSTEM_ON_CHAR "boat_prop" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 17
CREATE_FX_SYSTEM_ON_CHAR "extinguisher" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 18
CREATE_FX_SYSTEM_ON_CHAR "fire" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 19
CREATE_FX_SYSTEM_ON_CHAR "fire_bike" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 20
CREATE_FX_SYSTEM_ON_CHAR "fire_car" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 21
CREATE_FX_SYSTEM_ON_CHAR "fire_large" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 22
CREATE_FX_SYSTEM_ON_CHAR "fire_med" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 23
CREATE_FX_SYSTEM_ON_CHAR "flamethrower" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 24
CREATE_FX_SYSTEM_ON_CHAR "heli_dust" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 25
CREATE_FX_SYSTEM_ON_CHAR "jetpack" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 26
CREATE_FX_SYSTEM_ON_CHAR "jetthrust" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 27
CREATE_FX_SYSTEM_ON_CHAR "molotov_flame" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 28
CREATE_FX_SYSTEM_ON_CHAR "nitro" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 29
CREATE_FX_SYSTEM_ON_CHAR "overheat_car" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 30
CREATE_FX_SYSTEM_ON_CHAR "overheat_car_electric" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 31
CREATE_FX_SYSTEM_ON_CHAR "riot_smoke" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 32
CREATE_FX_SYSTEM_ON_CHAR "spraycan" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 33
CREATE_FX_SYSTEM_ON_CHAR "teargas" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 34
CREATE_FX_SYSTEM_ON_CHAR "teargasAD" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 35
CREATE_FX_SYSTEM_ON_CHAR "water_hydrant" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 36
CREATE_FX_SYSTEM_ON_CHAR "water_ripples" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 37
CREATE_FX_SYSTEM_ON_CHAR "water_speed" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 38
CREATE_FX_SYSTEM_ON_CHAR "cigarette_smoke" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 39
CREATE_FX_SYSTEM_ON_CHAR "Flame" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 40
CREATE_FX_SYSTEM_ON_CHAR "insects" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 41
CREATE_FX_SYSTEM_ON_CHAR "smoke30lit" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 42
CREATE_FX_SYSTEM_ON_CHAR "smoke30m" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 43
CREATE_FX_SYSTEM_ON_CHAR "smoke50lit" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 44
CREATE_FX_SYSTEM_ON_CHAR "vent" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 45
CREATE_FX_SYSTEM_ON_CHAR "vent2" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 46
CREATE_FX_SYSTEM_ON_CHAR "waterfall_end" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 47
CREATE_FX_SYSTEM_ON_CHAR "water_fnt_tme" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 48
CREATE_FX_SYSTEM_ON_CHAR "water_fountain" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 49
CREATE_FX_SYSTEM_ON_CHAR "carwashspray" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 50
CREATE_FX_SYSTEM_ON_CHAR "cement" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 51
CREATE_FX_SYSTEM_ON_CHAR "cloudfast" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 52
CREATE_FX_SYSTEM_ON_CHAR "coke_puff" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 53
CREATE_FX_SYSTEM_ON_CHAR "coke_trail" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 54
CREATE_FX_SYSTEM_ON_CHAR "petrolcan" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 55
CREATE_FX_SYSTEM_ON_CHAR "smoke_flare" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
CASE 56
CREATE_FX_SYSTEM_ON_CHAR "WS_factorysmoke" myth_ped 0.0 0.0 0.0 1 fx[0]
BREAK
ENDSWITCH
ATTACH_FX_SYSTEM_TO_CHAR_BONE fx[0] myth_ped attack_bone[0]
PLAY_FX_SYSTEM fx[0]
timera = 0
GET_CHAR_HEALTH myth_ped ped_health[0]
GET_CHAR_HEALTH myth_ped ped_health[1]
WHILE DOES_CHAR_EXIST myth_ped
IF NOT attacking_fx = 255
IF GET_CHAR_KILL_TARGET_CHAR myth_ped target_ped
IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR target_ped myth_ped
var = attacking_fx
var2 = 1
GOSUB apply_2nd_fx
WAIT 2
CLEAR_CHAR_LAST_DAMAGE_ENTITY target_ped
ENDIF
ENDIF
ENDIF
IF NOT attacked_fx = 255
GET_CHAR_HEALTH myth_ped ped_health[0]
IF NOT ped_health[0] = ped_health[1]
var = attacked_fx
var2 = 2
GOSUB apply_2nd_fx
ped_health[1] = ped_health[0]
ENDIF
ENDIF
READ_STRUCT_OFFSET p_buffer (94) 1 teleport//teleport trigger
IF NOT teleport = 0
BREAK
ENDIF
WAIT 0
ENDWHILE
IF NOT fx[0] = 0
KILL_FX_SYSTEM_NOW fx[0]
ENDIF
IF NOT fx[1] = 0
KILL_FX_SYSTEM_NOW fx[1]
ENDIF
IF NOT fx[2] = 0
KILL_FX_SYSTEM_NOW fx[2]
ENDIF
IF NOT teleport = 0
WHILE NOT teleport = 0
READ_STRUCT_OFFSET p_buffer (94) 1 teleport//teleport trigger
WAIT 0
ENDWHILE
GOTO special_fx
ENDIF
TERMINATE_THIS_CUSTOM_SCRIPT
CLEO_RETURN 0
apply_2nd_fx:
SWITCH var
CASE 0
CREATE_FX_SYSTEM_ON_CHAR "prt_wake" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 1
CREATE_FX_SYSTEM_ON_CHAR "camflash" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 2
CREATE_FX_SYSTEM_ON_CHAR "exhale" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 3
CREATE_FX_SYSTEM_ON_CHAR "explosion_fuel_car" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 4
CREATE_FX_SYSTEM_ON_CHAR "explosion_large" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 5
CREATE_FX_SYSTEM_ON_CHAR "explosion_medium" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 6
CREATE_FX_SYSTEM_ON_CHAR "explosion_molotov" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 7
CREATE_FX_SYSTEM_ON_CHAR "explosion_small" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 8
CREATE_FX_SYSTEM_ON_CHAR "explosion_tiny" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 9
CREATE_FX_SYSTEM_ON_CHAR "gunflash" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 10
CREATE_FX_SYSTEM_ON_CHAR "gunsmoke" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 11
CREATE_FX_SYSTEM_ON_CHAR "tank_fire" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 12
CREATE_FX_SYSTEM_ON_CHAR "water_splash" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 13
CREATE_FX_SYSTEM_ON_CHAR "water_splash_big" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 14
CREATE_FX_SYSTEM_ON_CHAR "water_splsh_sml" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 15
CREATE_FX_SYSTEM_ON_CHAR "water_swim" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 16
CREATE_FX_SYSTEM_ON_CHAR "tree_hit_fir" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 17
CREATE_FX_SYSTEM_ON_CHAR "tree_hit_palm" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 18
CREATE_FX_SYSTEM_ON_CHAR "blood_heli" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 19
CREATE_FX_SYSTEM_ON_CHAR "explosion_barrel" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 20
CREATE_FX_SYSTEM_ON_CHAR "explosion_crate" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 21
CREATE_FX_SYSTEM_ON_CHAR "explosion_door" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 22
CREATE_FX_SYSTEM_ON_CHAR "puke" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 23
CREATE_FX_SYSTEM_ON_CHAR "shootlight" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
CASE 24
CREATE_FX_SYSTEM_ON_CHAR "wallbust" myth_ped 0.0 0.0 0.0 1 fx[var2]
BREAK
ENDSWITCH
ATTACH_FX_SYSTEM_TO_CHAR_BONE fx[var2] myth_ped attack_bone[var2]
PLAY_AND_KILL_FX_SYSTEM fx[var2]
//PLAY_FX_SYSTEM fx[var2]
RETURN
}
string_label:
DUMP
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00//33
ENDDUMP
SCRIPT_END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment