[SA] Medical Kit REMAKE v2.5
Enviado: 26 Jul 2020, 23:11

Esse é um remake de um mod antigo do MKKJ no qual eu decidi recriar do zero podendo, adicionando configurações por .ini, compatibilidade com gamepads e adaptação ao modo de 2 jogadores e TCs. Esse mod adiciona um kit médico que pode ser carregado como arma (por padrão substitui o vibrador pequeno) e pode ser encontrado em frente a hospitais ou dentro de ambulâncias. Com ele em mãos, se agache e pressione TAB ou L1 para curar uma porcentagem de vida do seu personagem.
Adições e mudanças:


- Novo modelo lowpoly baseado no GTA V, com alternativa de texturas semelhantes;
- Você pode trocar qual arma o kit substitui, inclusive trocar por uma adicionada sem substituir;
- Compatível com gamepads, incluindo vibração;
- Agora o segundo jogador também pode usar o kit;
- Agora é possível escolher a porcentagem de vida a ser curada, e caso a vida do personagem esteja acima dessa porcentagem não será possível usar o kit;
- Agora é possível escolher o tempo para curar o personagem;
- Agora você pode escolher onde os pickups de kit aparecem colocando as coordenadas dele em um arquivo .dat;
- Adaptação ao Hud do GTA V;
- Opção de substituir o pickup de vida original do jogo pelo pickup de arma ; (Removido pois continha bugs graves);
- Adicionado um cheat: digite MEDIKAID para ganhar um kit;
- Removida a opção de substituir o kit pela arma atual no mesmo slot ao entrar na ambulância, agora você só ganhará o kit caso o slot esteja livre.
Necessário CLEO+
DOWNLOAD NA MIXMODS
Agradecimentos ao Junior_Djjr por correções no código de pickups
DOWNLOAD NA MIXMODS
Agradecimentos ao Junior_Djjr por correções no código de pickups
Sources:
MedicalKit_REAbrir
Código: Selecionar tudo
// You need: https://forum.mixmods.com.br/f141-gta3script-cleo/t5206-como-criar-scripts-com-cleoplus
SCRIPT_START
{
LVAR_INT scplayer secplayer
LVAR_INT iWeapId iWeapModel iTimeToHeal i hCar iCarPick iWeapSlot iWeapIdOut
LVAR_FLOAT fLifeToHeal fCurHealth fMaxHealth
GET_PLAYER_CHAR 0 scplayer
READ_INT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Weapon Settings" "WeaponId" iWeapId
READ_INT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Weapon Settings" "WeaponModel" iWeapModel
READ_INT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Healing Mechanic" "TimeToHeal" iTimeToHeal
READ_INT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Ambulance" "GetAmbulanKit" iCarPick
READ_FLOAT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Healing Mechanic" "LifeToHeal" fLifeToHeal
fLifeToHeal /= 100.0
WHILE TRUE
WAIT 0
//Main Mechanic
IF IS_CHAR_ON_FOOT scplayer
AND IS_CURRENT_CHAR_WEAPON scplayer iWeapId
AND IS_CHAR_DUCKING scplayer
AND IS_PLAYER_CONTROL_ON 0
PRINT_HELP_FOREVER AIDK_1
IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED AIDK_1
CLEAR_HELP
ENDIF
GET_CHAR_HEALTH_PERCENT scplayer fCurHealth
fCurHealth /= 100.0
IF fCurHealth < fLifeToHeal
REQUEST_ANIMATION BOMBER
WHILE NOT HAS_ANIMATION_LOADED BOMBER
WAIT 0
ENDWHILE
TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer BOM_plant BOMBER 4.0 0 0 0 0 iTimeToHeal
WAIT iTimeToHeal
GET_CHAR_MAX_HEALTH scplayer fMaxHealth
fLifeToHeal *= fMaxHealth
i =# fLifeToHeal
SET_CHAR_HEALTH scplayer i
SHAKE_PAD PAD1 250 1000
ADD_AMMO_TO_CHAR scplayer iWeapId -1
GET_AMMO_IN_CHAR_WEAPON scplayer iWeapId i
IF i < 1
REMOVE_WEAPON_FROM_CHAR scplayer iWeapId
ENDIF
REMOVE_ANIMATION BOMBER
ELSE
PRINT_NOW AIDK_2 2500 1
ENDIF
ENDIF
ELSE
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED AIDK_1
CLEAR_HELP
ENDIF
ENDIF
//Cheat Code
GOSUB cheat_code
//Get Kit on carar
IF iCarPick = TRUE
IF IS_CHAR_IN_ANY_CAR scplayer
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer hCar
IF IS_EMERGENCY_SERVICES_VEHICLE hCar
GET_WEAPONTYPE_SLOT iWeapId iWeapSlot
iWeapSlot += 1
GET_CHAR_WEAPON_IN_SLOT scplayer iWeapSlot iWeapIdOut i i
IF iWeapIdOut = iWeapId
OR iWeapIdOut = 0
REQUEST_MODEL iWeapModel
WHILE NOT HAS_MODEL_LOADED iWeapModel
WAIT 0
ENDWHILE
GIVE_WEAPON_TO_CHAR scplayer iWeapId 1
MARK_MODEL_AS_NO_LONGER_NEEDED iWeapModel
ENDIF
WHILE IS_CHAR_IN_ANY_CAR scplayer
WAIT 0
GOSUB cheat_code
ENDWHILE
ENDIF
ENDIF
ENDIF
ENDWHILE
cheat_code:
IF TEST_CHEAT MEDIKAID
REQUEST_MODEL iWeapModel
WHILE NOT HAS_MODEL_LOADED iWeapModel
WAIT 0
ENDWHILE
GIVE_WEAPON_TO_CHAR scplayer iWeapId 1
PRINT_HELP CHEAT1
IF IS_2PLAYER_GAME_GOING_ON
GET_PLAYER_CHAR 1 secplayer
GIVE_WEAPON_TO_CHAR secplayer iWeapId 1
ENDIF
MARK_MODEL_AS_NO_LONGER_NEEDED iWeapModel
ENDIF
RETURN
}
SCRIPT_ENDMedicalKit_RE - CoopAbrir
Código: Selecionar tudo
// You need: https://forum.mixmods.com.br/f141-gta3script-cleo/t5206-como-criar-scripts-com-cleoplus
SCRIPT_START
{
LVAR_INT secplayer
LVAR_INT iWeapId iWeapModel iTimeToHeal i hCar iCarPick iWeapSlot iWeapIdOut
LVAR_FLOAT fLifeToHeal fCurHealth fMaxHealth
READ_INT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Weapon Settings" "WeaponId" iWeapId
READ_INT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Weapon Settings" "WeaponModel" iWeapModel
READ_INT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Healing Mechanic" "TimeToHeal" iTimeToHeal
READ_INT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Ambulance" "GetAmbulanKit" iCarPick
READ_FLOAT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Healing Mechanic" "LifeToHeal" fLifeToHeal
fLifeToHeal /= 100.0
WHILE TRUE
WAIT 0
IF IS_2PLAYER_GAME_GOING_ON
GET_PLAYER_CHAR 1 secplayer
//Main Mechanic
IF IS_CHAR_ON_FOOT secplayer
AND IS_CURRENT_CHAR_WEAPON secplayer iWeapId
AND IS_CHAR_DUCKING secplayer
AND IS_PLAYER_CONTROL_ON 1
PRINT_HELP_FOREVER AIDK_1
IF IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED AIDK_1
CLEAR_HELP
ENDIF
GET_CHAR_HEALTH_PERCENT secplayer fCurHealth
fCurHealth /= 100.0
IF fCurHealth < fLifeToHeal
REQUEST_ANIMATION BOMBER
WHILE NOT HAS_ANIMATION_LOADED BOMBER
WAIT 0
ENDWHILE
TASK_PLAY_ANIM_NON_INTERRUPTABLE secplayer BOM_plant BOMBER 4.0 0 0 0 0 iTimeToHeal
WAIT iTimeToHeal
GET_CHAR_MAX_HEALTH secplayer fMaxHealth
fLifeToHeal *= fMaxHealth
i =# fLifeToHeal
SET_CHAR_HEALTH secplayer i
SHAKE_PAD PAD2 250 1000
ADD_AMMO_TO_CHAR secplayer iWeapId -1
GET_AMMO_IN_CHAR_WEAPON secplayer iWeapId i
IF i < 1
REMOVE_WEAPON_FROM_CHAR secplayer iWeapId
ENDIF
REMOVE_ANIMATION BOMBER
ELSE
PRINT_NOW AIDK_2 2500 1
ENDIF
ENDIF
ELSE
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED AIDK_1
CLEAR_HELP
ENDIF
ENDIF
//Get Kit on carar
IF iCarPick = TRUE
IF IS_CHAR_IN_ANY_CAR secplayer
STORE_CAR_CHAR_IS_IN_NO_SAVE secplayer hCar
IF IS_EMERGENCY_SERVICES_VEHICLE hCar
GET_WEAPONTYPE_SLOT iWeapId iWeapSlot
iWeapSlot += 1
GET_CHAR_WEAPON_IN_SLOT secplayer iWeapSlot iWeapIdOut i i
IF iWeapIdOut = iWeapId
OR iWeapIdOut = 0
REQUEST_MODEL iWeapModel
WHILE NOT HAS_MODEL_LOADED iWeapModel
WAIT 0
ENDWHILE
GIVE_WEAPON_TO_CHAR secplayer iWeapId 1
MARK_MODEL_AS_NO_LONGER_NEEDED iWeapModel
ENDIF
WHILE IS_CHAR_IN_ANY_CAR secplayer
WAIT 0
ENDWHILE
ENDIF
ENDIF
ENDIF
ENDIF
ENDWHILE
}
SCRIPT_ENDMedicalKit_RE - PickupsAbrir
Código: Selecionar tudo
// You need: https://forum.mixmods.com.br/f141-gta3script-cleo/t5206-como-criar-scripts-com-cleoplus
SCRIPT_START
{
LVAR_INT idweap modweap // in
LVAR_FLOAT x y z // in
LVAR_INT scplayer i medpick pickfile mem_buffer nump
GET_PLAYER_CHAR 0 scplayer
IF NOT idweap = 0
SET_SCRIPT_EVENT_SAVE_CONFIRMATION ON remove_pickup i
ENDIF
IF idweap = 0 // initialized by game
READ_INT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Weapon Settings" "WeaponId" idweap
READ_INT_FROM_INI_FILE "cleo\MedicalKit_RE.ini" "Weapon Settings" "WeaponModel" modweap
IF DOES_FILE_EXIST "cleo/MediKitRE_Pickups.dat"
OPEN_FILE "cleo/MediKitRE_Pickups.dat" 0x72 pickfile
ALLOCATE_MEMORY 32 mem_buffer
WHILE TRUE
WRITE_MEMORY mem_buffer 32 0 0
IF READ_STRING_FROM_FILE pickfile mem_buffer 32
SCAN_STRING $mem_buffer "%f %f %f" nump (x y z)
IF ( nump = 3 )
IF NOT IS_ANY_PICKUP_AT_COORDS x y z
STREAM_CUSTOM_SCRIPT "MediKit_RE - Pickups.cs" idweap modweap x y z
ENDIF
ENDIF
ELSE
BREAK
ENDIF
ENDWHILE
FREE_MEMORY mem_buffer
CLOSE_FILE pickfile
ENDIF
ELSE
WHILE TRUE
WAIT 0
IF LOCATE_CHAR_ANY_MEANS_3D scplayer x y z 100.0 100.0 100.0 FALSE
IF GET_PICKUP_THIS_COORD x y z TRUE medpick
REMOVE_PICKUP medpick
ENDIF
CREATE_PICKUP_WITH_AMMO modweap 2 1 x y z medpick
WHILE LOCATE_CHAR_ANY_MEANS_3D scplayer x y z 110.0 110.0 110.0 FALSE
WAIT 0
ENDWHILE
REMOVE_PICKUP medpick
ENDIF
ENDWHILE
ENDIF
remove_pickup:
IF GET_PICKUP_THIS_COORD x y z TRUE medpick
REMOVE_PICKUP medpick
ENDIF
RETURN_SCRIPT_EVENT
}
SCRIPT_END