Ekko Posted November 10, 2018 Share Posted November 10, 2018 Hello i need help on ifp demo script , i want to make it dont repeat the animation because the small animations repeat so fast and some times some of them moving while repeating this is the client side : local animationManagerWindow = nil local replaceAnimationLabel, playAnimationLabel = nil, nil local restoreDefaultsButton, stopAnimationButton = nil, nil local replaceAnimationGridList, playAnimationGridList = nil, nil local isShowingAnimationBlocksInPlayGridList = true local currentBlockNameSelected = nil local isLocalPlayerAnimating = false local function PopulatePlayAnimationGridListWithBlocks () isShowingAnimationBlocksInPlayGridList = true currentBlockNameSelected = nil guiGridListClear ( playAnimationGridList ) -- Add IFP blocks to the play animation gridlist for customAnimationBlockIndex, customAnimationBlock in ipairs ( globalLoadedIfps ) do local rowIndex = guiGridListAddRow ( playAnimationGridList, " + "..customAnimationBlock.friendlyName ) guiGridListSetItemData ( playAnimationGridList, rowIndex, 1, customAnimationBlockIndex ) end end local function PopulatePlayAnimationGridListWithCustomBlockAnimations ( ifpIndex ) isShowingAnimationBlocksInPlayGridList = false currentBlockNameSelected = globalLoadedIfps [ifpIndex].blockName guiGridListClear ( playAnimationGridList ) guiGridListAddRow ( playAnimationGridList, ".." ) -- Add IFP blocks to the play animation gridlist for _, customAnimationName in ipairs ( globalLoadedIfps [ifpIndex].animations ) do local rowIndex = guiGridListAddRow ( playAnimationGridList, " "..customAnimationName ) guiGridListSetItemData ( playAnimationGridList, rowIndex, 1, customAnimationName ) end end addEventHandler("onClientResourceStart", resourceRoot, function() triggerServerEvent ( "onCustomAnimationSyncRequest", resourceRoot, localPlayer ) outputChatBox ("Press 'X' to toggle Animation Manager", 255, 255, 255) animationManagerWindow = guiCreateWindow(118, 116, 558, 371, "Ekko's Animations", false) guiWindowSetSizable(animationManagerWindow, false) guiSetVisible ( animationManagerWindow, false ) replaceAnimationLabel = guiCreateLabel(12, 26, 245, 19, "Replace Animations With", false, animationManagerWindow) guiSetFont(replaceAnimationLabel, "default-bold-small") guiLabelSetHorizontalAlign(replaceAnimationLabel, "center", false) replaceAnimationGridList = guiCreateGridList(12, 49, 245, 255, false, animationManagerWindow) guiGridListAddColumn(replaceAnimationGridList, "Animation Blocks", 0.9) stopAnimationButton = guiCreateButton(329, 314, 174, 41, "Stop Animation", false, animationManagerWindow) playAnimationGridList = guiCreateGridList(294, 49, 245, 255, false, animationManagerWindow) guiGridListAddColumn(playAnimationGridList, "Animation Blocks", 0.9) -- load IFP files and add them to the play animation gridlist for customAnimationBlockIndex, customAnimationBlock in ipairs ( globalLoadedIfps ) do local ifp = engineLoadIFP ( customAnimationBlock.path, customAnimationBlock.blockName ) if not ifp then outputChatBox ("Failed to load '"..customAnimationBlock.path.."'") end end -- now add replaceable ifps to the other grid list for _, ifpIndex in ipairs ( globalReplaceableIfpsIndices ) do local customAnimationBlock = globalLoadedIfps [ ifpIndex ] local rowIndex = guiGridListAddRow ( replaceAnimationGridList, customAnimationBlock.friendlyName ) guiGridListSetItemData ( replaceAnimationGridList, rowIndex, 1, ifpIndex ) end PopulatePlayAnimationGridListWithBlocks () end ) local function ReplacePedBlockAnimations ( player, ifpIndex ) local customIfpBlockName = globalLoadedIfps [ ifpIndex ].blockName for _, animationName in pairs ( globalPedAnimationBlock.animations ) do -- make sure that we don't replace a partial animation if not globalPedAnimationBlock.partialAnimations [ animationName ] then engineReplaceAnimation ( player, "ped", animationName, customIfpBlockName, animationName ) end end end local function HandleReplacedAnimationGridListDoubleClick () local replacedAnimGridSelectedRow, replacedAnimGridSelectedCol = guiGridListGetSelectedItem ( replaceAnimationGridList ); if replacedAnimGridSelectedRow and replacedAnimGridSelectedRow ~= -1 then local ifpFriendlyName = guiGridListGetItemText( replaceAnimationGridList, replacedAnimGridSelectedRow, replacedAnimGridSelectedCol ) local ifpIndex = guiGridListGetItemData(replaceAnimationGridList, replacedAnimGridSelectedRow, replacedAnimGridSelectedCol ) ReplacePedBlockAnimations ( localPlayer, ifpIndex ) triggerServerEvent ( "onCustomAnimationReplace", resourceRoot, localPlayer, ifpIndex ) outputChatBox ("Replaced 'ped' block animations with '"..ifpFriendlyName.."'", 255, 255, 255) end end local function HandlePlayAnimationGridListDoubleClick () local playAnimGridSelectedRow, playAnimGridSelectedCol = guiGridListGetSelectedItem ( playAnimationGridList ); if playAnimGridSelectedRow and playAnimGridSelectedRow ~= -1 then local itemText = guiGridListGetItemText( playAnimationGridList, playAnimGridSelectedRow, playAnimGridSelectedCol ) if isShowingAnimationBlocksInPlayGridList then local ifpIndex = guiGridListGetItemData(playAnimationGridList, playAnimGridSelectedRow, playAnimGridSelectedCol ) PopulatePlayAnimationGridListWithCustomBlockAnimations ( ifpIndex ) else if itemText == ".." then PopulatePlayAnimationGridListWithBlocks ( ) else local animationName = guiGridListGetItemData(playAnimationGridList, playAnimGridSelectedRow, playAnimGridSelectedCol ) setPedAnimation ( localPlayer, currentBlockNameSelected, animationName ) triggerServerEvent ( "onCustomAnimationSet", resourceRoot, localPlayer, currentBlockNameSelected, animationName ) isLocalPlayerAnimating = true end end end end addEventHandler( "onClientGUIDoubleClick", resourceRoot, function ( button, state, absoluteX, absoluteY ) if button == "left" and state == "up" then if source == replaceAnimationGridList then HandleReplacedAnimationGridListDoubleClick ( ) elseif source == playAnimationGridList then HandlePlayAnimationGridListDoubleClick ( ) end end end ) addEventHandler( "onClientGUIClick", resourceRoot, function ( button, state ) if button == "left" and state == "up" then if source == restoreDefaultsButton then -- restore all replaced animations of "ped" block engineRestoreAnimation ( localPlayer, "ped" ) triggerServerEvent ( "onCustomAnimationRestore", resourceRoot, localPlayer, "ped" ) outputChatBox ("Restored ped block animations", 255, 255, 255) elseif source == stopAnimationButton then setPedAnimation ( localPlayer, false ) triggerServerEvent ( "onCustomAnimationSet", resourceRoot, localPlayer, false, false ) end end end ) bindKey ( "X", "down", function ( key, keyState ) if ( keyState == "down" ) then local isAnimationMangerWindowVisible = guiGetVisible ( animationManagerWindow ) guiSetVisible ( animationManagerWindow, not isAnimationMangerWindowVisible ) showCursor ( not isAnimationMangerWindowVisible ) end end ) addEvent ("onClientCustomAnimationSyncRequest", true ) addEventHandler ("onClientCustomAnimationSyncRequest", root, function ( playerAnimations ) for player, anims in pairs ( playerAnimations ) do if isElement ( player ) then if anims.current then setPedAnimation ( player, anims.current[1], anims.current[2] ) end if anims.replacedPedBlock then ReplacePedBlockAnimations ( player, anims.replacedPedBlock ) end end end end ) addEvent ("onClientCustomAnimationSet", true ) addEventHandler ("onClientCustomAnimationSet", root, function ( blockName, animationName ) if source == localPlayer then return end if blockName == false then setPedAnimation ( source, false ) return end setPedAnimation ( source, blockName, animationName ) end ) addEvent ("onClientCustomAnimationReplace", true ) addEventHandler ("onClientCustomAnimationReplace", root, function ( ifpIndex ) if source == localPlayer then return end ReplacePedBlockAnimations ( source, ifpIndex ) end ) addEvent ("onClientCustomAnimationRestore", true ) addEventHandler ("onClientCustomAnimationRestore", root, function ( blockName ) if source == localPlayer then return end engineRestoreAnimation ( source, blockName ) end ) setTimer ( function () if isLocalPlayerAnimating then if not getPedAnimation (localPlayer) then isLocalPlayerAnimating = false triggerServerEvent ( "onCustomAnimationStop", resourceRoot, localPlayer ) end end end, 100, 0 ) Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now