Quote:
Originally Posted by dutu40
@ [Only registered and activated users can see links. Click Here To Register...]
Is there a way to make a script that completely disables all no animations on user specified skills while allowing it to work normally on all other skills?
|
I had the same idea but I couldn't find a good address which has the current skill ID early enough before the skill animation plays but cause you asked again I researched again and found one that displays the skill ID just a few milliseconds before the animation gets played however since there's just a really small time window it makes it hard to recognize and apply the animation changes in time, so it has a successrate of like 66% at the moment (depends on CPU singlecore performance)
5.8
Code:
#IF=%FirstTime,;
UseSpeed=1;
#SetArray1=Enter all skill IDs you wanna blacklist from animation modes/n/nExample:/n3194,2912,7212,8172;
#SetVar1=Which Animation you wanna use/n/n(1) = NoAnimation/n(2) = Custom Animation/n(3) = Enhanced Animation;
_SetVar6=999999;
#EXECUTE=FirstSetup;
WaitForResponse=Be sure you've turned off any animation mode at the overlay before you use this Script./n/nTo end the script write "stop anim" at the chat bar;
#DisableScrolling
Command=;
#ENDIF
#DO=999999999;
_IFMemPtrRead=%PlayerBase,%OffsetData/0x1898,DWORD,%ARRAY1;
#EXECUTE=ApplyDefaultAnimation;
#ELSE
#EXECUTE=ApplyAnimation;
#ENDIF
#IF=%Timer=99999,2000;
_SetVar6=999999;
#ENDIF
_UNTILMemPtrRead=%AddrChat,0x4F0/0x350/0x0,WCHAR[32],=stop anim;
start_ApplyDefaultAnimation;
_IFMemPtrRead=%PlayerBase,%OffsetData/0x1898,DWORD,=%Var6;
#ELSE
_MemReadVar=%AddrAtkspeed,WORD,3;
MemPtrWrite=%PlayerBase,%OffsetAnim,%Var3,WORD;
_MemReadVar=%AddrLastID,DWORD,6;
CreateTimer=99999;
_MemPtrReadVar=%PlayerBase,%OffsetData/0xA74,FLOAT,5;
_Calc5=%Var5*150; <-- adjustable
Delay=%Var5;
#EXECUTE=ApplyAnimation;
#ENDIF
end_ApplyDefaultAnimation;
start_ApplyAnimation;
MemWrite=%AddrFreeMem1,%Var1,BYTE;
_IFMemRead=%AddrFreeMem1,BYTE,=1; No Animation
_IFMemPtrRead=%PlayerBase,0x1D0,CHAR[6],=Player; <-- checks if client is not in loading screen to prevent crashes
MemPtrWrite=%PlayerBase,%OffsetAnim,1,WORD;
#ENDIF
_IFMemRead=%AddrFreeMem1,BYTE,=2; Custom Animation
_IFMemPtrRead=%PlayerBase,0x1D0,CHAR[6],=Player; <-- checks if client is not in loading screen to prevent crashes
MemPtrWrite=%PlayerBase,%OffsetAnim,%Var2,WORD;
#ENDIF
_IFMemRead=%AddrFreeMem1,BYTE,=3; Enhanced Animation
_MemReadVar=%AddrAtkspeed,WORD,3; <-- Reads normal attackspeed
_Calc4=%Var3-%Var2; <-- Substracts the enhanced value with our attackspeed
_IFMemPtrRead=%PlayerBase,0x1D0,CHAR[6],=Player; <-- checks if client is not in loading screen to prevent crashes
MemPtrWrite=%PlayerBase,%OffsetAnim,%Var4,WORD;
#ENDIF
end_ApplyAnimation;
start_FirstSetup;
MemWrite=%AddrFreeMem1,%Var1,BYTE;
_IFMemRead=%AddrFreeMem1,BYTE,=2; Custom Animation
#SetVar2=Enter the Animation value you want at Custom Animation/nExample: 250/n/nEnter 0 for the recommend value;
#ENDIF
_IFMemRead=%AddrFreeMem1,BYTE,=3; Enhanced Animation
#SetVar2=Enter the Animation value you want at Enhanced Animation/nExample: 535/n/nEnter 0 for the recommend value;
#ENDIF
MemWrite=%AddrFreeMem2,%Var2,BYTE;
_IFMemRead=%AddrFreeMem2,BYTE,=0; Recommend
#EXECUTE=Recommend;
#ENDIF
end_FirstSetup;
start_Recommend;
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=0; Warrior
_SetVar1=3;
_SetVar2=335;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=1; Gladiator
_SetVar1=3;
_SetVar2=635;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=2; Templar
_SetVar1=3;
_SetVar2=635;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=3; Scout
_SetVar1=3;
_SetVar2=535;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=4; Assassin
_SetVar1=2;
_SetVar2=275;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=5; Ranger
_SetVar1=3;
_SetVar2=575;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=6; Mage
_SetVar1=3;
_SetVar2=500;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=7; Sorcerer
_SetVar1=2;
_SetVar2=650;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=8; Spiritmaster
_SetVar1=2;
_SetVar2=650;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=9; Priest
_SetVar1=3;
_SetVar2=500;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=10; Cleric
_SetVar1=3;
_SetVar2=725;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=11; Chanter
_SetVar1=3;
_SetVar2=535;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=12; Technist
_SetVar1=3;
_SetVar2=500;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=13; Aethertech
_SetVar1=3;
_SetVar2=535;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=14; Gunslinger
_SetVar1=2;
_SetVar2=275;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=15; Muse
_SetVar1=3;
_SetVar2=500;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=16; Songweaver
_SetVar1=2;
_SetVar2=350;
#ENDIF
end_Recommend;
6.2
Code:
#IF=%FirstTime,;
UseSpeed=1;
#SetArray1=Enter all skill IDs you wanna blacklist from animation modes/n/nExample:/n3194,2912,7212,8172;
#SetVar1=Which Animation you wanna use/n/n(1) = NoAnimation/n(2) = Custom Animation/n(3) = Enhanced Animation;
_SetVar6=999999;
#EXECUTE=FirstSetup;
WaitForResponse=Be sure you've turned off any animation mode at the overlay before you use this Script./n/nTo end the script write "stop anim" at the chat bar;
#DisableScrolling
Command=;
#ENDIF
#DO=999999999;
_IFMemPtrRead=%PlayerBase,%OffsetData/0x1890,DWORD,%ARRAY1;
#EXECUTE=ApplyDefaultAnimation;
#ELSE
#EXECUTE=ApplyAnimation;
#ENDIF
_UNTILMemPtrRead=%AddrChat,0x510/0x370/0x0,WCHAR[32],=stop anim;
start_ApplyDefaultAnimation;
_MemReadVar=%AddrAtkspeed,WORD,3;
MemPtrWrite=%PlayerBase,%OffsetAnim,%Var3,WORD;
#DO=2500;
Delay=10;
_UNTILMemPtrRead=%PlayerBase,%OffsetData/0xC1C,DWORD,=0;
end_ApplyDefaultAnimation;
start_ApplyAnimation;
MemWrite=%AddrFreeMem1,%Var1,BYTE;
_IFMemRead=%AddrFreeMem1,BYTE,=1; No Animation
_IFMemPtrRead=%PlayerBase,0x1D0,CHAR[6],=Player; <-- checks if client is not in loading screen to prevent crashes
MemPtrWrite=%PlayerBase,%OffsetAnim,1,WORD;
#ENDIF
_IFMemRead=%AddrFreeMem1,BYTE,=2; Custom Animation
_IFMemPtrRead=%PlayerBase,0x1D0,CHAR[6],=Player; <-- checks if client is not in loading screen to prevent crashes
MemPtrWrite=%PlayerBase,%OffsetAnim,%Var2,WORD;
#ENDIF
_IFMemRead=%AddrFreeMem1,BYTE,=3; Enhanced Animation
_MemReadVar=%AddrAtkspeed,WORD,3; <-- Reads normal attackspeed
_Calc4=%Var3-%Var2; <-- Substracts the enhanced value with our attackspeed
_IFMemPtrRead=%PlayerBase,0x1D0,CHAR[6],=Player; <-- checks if client is not in loading screen to prevent crashes
MemPtrWrite=%PlayerBase,%OffsetAnim,%Var4,WORD;
#ENDIF
end_ApplyAnimation;
start_FirstSetup;
MemWrite=%AddrFreeMem1,%Var1,BYTE;
_IFMemRead=%AddrFreeMem1,BYTE,=2; Custom Animation
#SetVar2=Enter the Animation value you want at Custom Animation/nExample: 250/n/nEnter 0 for the recommend value;
#ENDIF
_IFMemRead=%AddrFreeMem1,BYTE,=3; Enhanced Animation
#SetVar2=Enter the Animation value you want at Enhanced Animation/nExample: 535/n/nEnter 0 for the recommend value;
#ENDIF
MemWrite=%AddrFreeMem2,%Var2,BYTE;
_IFMemRead=%AddrFreeMem2,BYTE,=0; Recommend
#EXECUTE=Recommend;
#ENDIF
end_FirstSetup;
start_Recommend;
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=0; Warrior
_SetVar1=3;
_SetVar2=335;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=1; Gladiator
_SetVar1=3;
_SetVar2=575;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=2; Templar
_SetVar1=3;
_SetVar2=575;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=3; Scout
_SetVar1=3;
_SetVar2=535;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=4; Assassin
_SetVar1=2;
_SetVar2=275;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=5; Ranger
_SetVar1=3;
_SetVar2=575;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=6; Mage
_SetVar1=3;
_SetVar2=500;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=7; Sorcerer
_SetVar1=2;
_SetVar2=650;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=8; Spiritmaster
_SetVar1=2;
_SetVar2=650;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=9; Priest
_SetVar1=3;
_SetVar2=500;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=10; Cleric
_SetVar1=3;
_SetVar2=725;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=11; Chanter
_SetVar1=3;
_SetVar2=535;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=12; Technist
_SetVar1=3;
_SetVar2=500;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=13; Aethertech
_SetVar1=3;
_SetVar2=535;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=14; Gunslinger
_SetVar1=2;
_SetVar2=275;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=15; Muse
_SetVar1=3;
_SetVar2=500;
#ENDIF
_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=16; Songweaver
_SetVar1=2;
_SetVar2=350;
#ENDIF
end_Recommend;
Probably the best way to do it 100% working and without wasting too much CPU usage you would need to edit the Animationmarkers.pak manually