Skip to content

Instantly share code, notes, and snippets.

@JuniorDjjr
Created November 1, 2019 20:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save JuniorDjjr/efc3d532ecbafaa54aa89538bbd95347 to your computer and use it in GitHub Desktop.
Save JuniorDjjr/efc3d532ecbafaa54aa89538bbd95347 to your computer and use it in GitHub Desktop.
// Plant Tree mod by Junior_Djjr - MixMods
// You need: https://forum.mixmods.com.br/f16-utilidades/t179-gta3script-while-true-return_true-e-return_false
SCRIPT_START
{
LVAR_INT scplayer iModel hObject iStartTime iCurTime iDifTime iLastUpdateTime iDaysToFullyGrow
LVAR_FLOAT fTemp1 fSize fDaysToFullyGrow fDaysToFullyGrowSpeed fStartSize fFrontOffset fGroundOffset zDim1 zDim2
LVAR_FLOAT x y z
LVAR_TEXT_LABEL16 sCommand
WAIT 500
SAVE_THIS_CUSTOM_SCRIPT
GET_PLAYER_CHAR 0 scplayer
scriptStart:
IF NOT READ_INT_FROM_INI_FILE "CLEO/Plant Tree.ini" "Settings" "Model" (iModel)
OR NOT READ_INT_FROM_INI_FILE "CLEO/Plant Tree.ini" "Settings" "DaysToFullyGrow" (iDaysToFullyGrow)
OR NOT READ_FLOAT_FROM_INI_FILE "CLEO/Plant Tree.ini" "Settings" "StartSize" (fStartSize)
OR NOT READ_FLOAT_FROM_INI_FILE "CLEO/Plant Tree.ini" "Settings" "FrontOffset" (fFrontOffset)
OR NOT READ_FLOAT_FROM_INI_FILE "CLEO/Plant Tree.ini" "Settings" "GroundOffset" (fGroundOffset)
OR NOT READ_STRING_FROM_INI_FILE "CLEO/Plant Tree.ini" "Settings" "Command" (sCommand)
PRINT_STRING_NOW "Fail to read 'CLEO/Plant Tree.ini'" 10000
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
fDaysToFullyGrowSpeed = 1.0
fDaysToFullyGrow =# iDaysToFullyGrow
fDaysToFullyGrowSpeed /= fDaysToFullyGrow
/////////////////////////////////////////////////
WHILE TRUE
WAIT 0
IF NOT IS_CHAR_IN_ANY_CAR scplayer
IF TEST_CHEAT $sCommand
AND IS_PLAYER_PLAYING 0
AND IS_PLAYER_CONTROL_ON 0
AND NOT IS_CHAR_DEAD scplayer
SET_CURRENT_CHAR_WEAPON scplayer 0
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 fFrontOffset 0.0 x y z
GET_GROUND_Z_FOR_3D_COORD x y z (z)
REQUEST_MODEL iModel
REQUEST_ANIMATION BOMBER
LOAD_ALL_MODELS_NOW
TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer BOM_Plant BOMBER 4.0 FALSE FALSE FALSE FALSE -1
WAIT 1500
// Create object
CREATE_OBJECT_NO_OFFSET iModel x y z hObject
// Set start
GET_INT_STAT 134 (iStartTime)
GET_MODEL_DIMENSIONS iModel fTemp1 fTemp1 zDim1 fTemp1 fTemp1 zDim2
zDim1 -= zDim2
ABS_LVAR_FLOAT zDim1
zDim1 /= 14.0
IF zDim1 < 1.0
zDim1 = 1.0
ENDIF
fSize = fStartSize
fSize /= zDim1
SET_OBJECT_SCALE hObject fSize
SET_OBJECT_COLLISION hObject FALSE
WAIT 2000
// Release
MARK_MODEL_AS_NO_LONGER_NEEDED iModel
REMOVE_ANIMATION BOMBER
// Wait CJ to get off to make it collidable
fFrontOffset += 0.5
timera = 0
WHILE TRUE
WAIT 0
IF NOT LOCATE_CHAR_ON_FOOT_OBJECT_3D scplayer hObject fFrontOffset fFrontOffset fFrontOffset FALSE
IF timera > 2000
BREAK
ENDIF
ELSE
timera = 0
ENDIF
IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CHAINSAW
// expected that the player want to delete the tree now, so jump this fix
BREAK
ENDIF
ENDWHILE
SET_OBJECT_COLLISION hObject TRUE
// Grow loop
iLastUpdateTime = 0
WHILE TRUE
WAIT 0
GET_INT_STAT 134 (iCurTime)
iDifTime = iCurTime - iStartTime
IF iDifTime > iLastUpdateTime
OR TEST_CHEAT "NEX"
fSize += fDaysToFullyGrowSpeed
IF fSize >= 1.0
SET_OBJECT_SCALE hObject 1.0
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
SET_OBJECT_SCALE hObject fSize
iLastUpdateTime++
ENDIF
IF IS_PLAYER_PLAYING 0
AND IS_PLAYER_CONTROL_ON 0
IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CHAINSAW
IF LOCATE_CHAR_ON_FOOT_OBJECT_3D scplayer hObject fFrontOffset fFrontOffset fFrontOffset FALSE
IF IS_CHAR_PLAYING_ANIM scplayer CSAW_1
OR IS_CHAR_PLAYING_ANIM scplayer CSAW_2
OR IS_CHAR_PLAYING_ANIM scplayer CSAW_3
//OR IS_CHAR_PLAYING_ANIM CSAW_G
OR IS_CHAR_PLAYING_ANIM scplayer CSAW_PART
WAIT 500
DELETE_OBJECT hObject
GOTO scriptStart
ENDIF
ENDIF
ENDIF
ENDIF
ENDWHILE
ENDIF
ENDIF
ENDWHILE
}
SCRIPT_END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment