Use new anim data class + only send anim slot

This commit is contained in:
Vortrex
2022-04-16 21:42:04 -05:00
parent 70f5c5e239
commit 13c6971ace
3 changed files with 203 additions and 165 deletions

View File

@@ -7,45 +7,81 @@
// TYPE: Client (JavaScript) // TYPE: Client (JavaScript)
// =========================================================================== // ===========================================================================
function makePedPlayAnimation(pedId, animGroup, animId, animType, animSpeed, loop, loopNoControl, freezeLastFrame, returnToOriginalPosition, freezePlayer) { function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
logToConsole(LOG_DEBUG, `[VRR.Animation] Playing animation ${animGroup}/${animId} for ped ${pedId}`); let animationData = getAnimationData(animationSlot);
logToConsole(LOG_DEBUG, `[VRR.Animation] Playing animation ${animationData[0]} for ped ${pedId}`);
let freezePlayer = false;
switch(animationData.moveType) {
case VRR_ANIMMOVE_FORWARD:
setElementCollisionsEnabled(ped, false);
setElementPosition(ped, getPosInFrontOfPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
freezePlayer = true;
break;
case VRR_ANIMMOVE_BACK:
setElementCollisionsEnabled(ped, false);
setElementPosition(ped, getPosBehindPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
freezePlayer = true;
break;
case VRR_ANIMMOVE_LEFT:
setElementCollisionsEnabled(ped, false);
setElementPosition(ped, getPosToLeftOfPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
freezePlayer = true;
break;
case VRR_ANIMMOVE_RIGHT:
setElementCollisionsEnabled(ped, false);
setElementPosition(ped, getPosToRightOfPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
freezePlayer = true;
break;
default:
break;
}
if(getGame() < VRR_GAME_GTA_IV) { if(getGame() < VRR_GAME_GTA_IV) {
if(animType == VRR_ANIMTYPE_NORMAL || animType == VRR_ANIMTYPE_SURRENDER) { if(animationData.animType == VRR_ANIMTYPE_NORMAL || animationData.animType == VRR_ANIMTYPE_SURRENDER) {
if(getGame() == VRR_GAME_GTA_VC || getGame() == VRR_GAME_GTA_SA) { if(getGame() == VRR_GAME_GTA_VC || getGame() == VRR_GAME_GTA_SA) {
getElementFromId(pedId).clearAnimations(); getElementFromId(pedId).clearAnimations();
} else { } else {
getElementFromId(pedId).clearObjective(); getElementFromId(pedId).clearObjective();
} }
getElementFromId(pedId).addAnimation(animGroup, animId); getElementFromId(pedId).addAnimation(animationData.groupId, animationData.animId);
if(getElementFromId(pedId) == localPlayer && freezePlayer == true) { if(getElementFromId(pedId) == localPlayer && freezePlayer == true) {
inAnimation = true; inAnimation = true;
setLocalPlayerControlState(false, false); setLocalPlayerControlState(false, false);
localPlayer.collisionsEnabled = false; localPlayer.collisionsEnabled = false;
} }
} else if(animType == VRR_ANIMTYPE_BLEND) { } else if(animationData.animType == VRR_ANIMTYPE_BLEND) {
getElementFromId(pedId).position = getElementFromId(pedId).position; getElementFromId(pedId).position = getElementFromId(pedId).position;
getElementFromId(pedId).blendAnimation(animGroup, animId, animSpeed); getElementFromId(pedId).blendAnimation(animationData.groupId, animationData.animId, animationData.animSpeed);
} }
} else { } else {
natives.requestAnims(animGroup); natives.requestAnims(animationData.groupId);
natives.taskPlayAnimNonInterruptable(getElementFromId(pedId), animId, animGroup, animSpeed, loop, loopNoControl, freezeLastFrame, returnToOriginalPosition, -1); natives.taskPlayAnimNonInterruptable(getElementFromId(pedId), animationData.groupId, animationData.animId, animationData.animSpeed, boolToInt(animationData.infiniteLoop), boolToInt(animationData.infiniteLoopNoMovement), boolToInt(animationData.dontReturnToStartCoords), boolToInt(animationData.freezeLastFrame), -1);
} }
} }
// =========================================================================== // ===========================================================================
function forcePedAnimation(pedId, animGroup, animId, animType, animSpeed, loop, loopNoControl, freezeLastFrame, returnToOriginalPosition) { function forcePedAnimation(pedId, animSlot) {
let animationData = getAnimationData(animSlot);
if(getGame() < VRR_GAME_GTA_IV) { if(getGame() < VRR_GAME_GTA_IV) {
forcedAnimation = [animGroup, animId];
getElementFromId(pedId).position = getElementFromId(pedId).position; getElementFromId(pedId).position = getElementFromId(pedId).position;
getElementFromId(pedId).addAnimation(animGroup, animId); getElementFromId(pedId).addAnimation(animationData.groupId, animationData.animId);
if(getElementFromId(pedId) == localPlayer) { if(getElementFromId(pedId) == localPlayer) {
inAnimation = true; inAnimation = true;
setLocalPlayerControlState(false, false); setLocalPlayerControlState(false, false);
localPlayer.collisionsEnabled = false; localPlayer.collisionsEnabled = false;
} }
} else {
natives.requestAnims(animationData.groupId);
natives.taskPlayAnimNonInterruptable(getElementFromId(pedId), animationData.groupId, animationData.animId, animationData.animSpeed, boolToInt(animationData.infiniteLoop), boolToInt(animationData.infiniteLoopNoMovement), boolToInt(animationData.dontReturnToStartCoords), boolToInt(animationData.freezeLastFrame), -1);
} }
} }
@@ -72,4 +108,14 @@ function makePedStopAnimation(pedId) {
} }
} }
// ===========================================================================
/**
* @param {number} animationSlot - The slot index of the animation
* @return {Array} The animation's data (array)
*/
function getAnimationData(animationSlot, gameId = getGame()) {
return getGameConfig().animations[gameId][animationSlot];
}
// =========================================================================== // ===========================================================================

View File

@@ -39,7 +39,7 @@ function playPlayerAnimationCommand(command, params, client) {
} }
if(isPlayerHandCuffed(client) || isPlayerTazed(client) || isPlayerInForcedAnimation(client)) { if(isPlayerHandCuffed(client) || isPlayerTazed(client) || isPlayerInForcedAnimation(client)) {
messagePlayerError(client, `You aren't able to do that`); messagePlayerError(client, getLocaleString(client, "UnableToDoThat"));
return false; return false;
} }
@@ -51,7 +51,7 @@ function playPlayerAnimationCommand(command, params, client) {
function stopPlayerAnimationCommand(command, params, client) { function stopPlayerAnimationCommand(command, params, client) {
if(isPlayerHandCuffed(client) || isPlayerTazed(client) || isPlayerInForcedAnimation(client)) { if(isPlayerHandCuffed(client) || isPlayerTazed(client) || isPlayerInForcedAnimation(client)) {
messagePlayerError(client, `You aren't able to do that`); messagePlayerError(client, getLocaleString(client, "UnableToDoThat"));
return false; return false;
} }
@@ -70,7 +70,7 @@ function stopPlayerAnimationCommand(command, params, client) {
// =========================================================================== // ===========================================================================
function showAnimationListCommand(command, params, client) { function showAnimationListCommand(command, params, client) {
let animList = getGameConfig().animations[getServerGame()].map(function(x) { return x[0]; }); let animList = getGameConfig().animations[getServerGame()].map(function(x) { return x.name; });
let chunkedList = splitArrayIntoChunks(animList, 10); let chunkedList = splitArrayIntoChunks(animList, 10);
@@ -107,7 +107,7 @@ function makePlayerPlayAnimation(client, animationSlot, offsetPosition = 1) {
getPlayerData(client).animationForced = false; getPlayerData(client).animationForced = false;
makePedPlayAnimation(getPlayerPed(client), animationSlot, offsetPosition); makePedPlayAnimation(getPlayerPed(client), animationSlot, offsetPosition);
setEntityData(ped, "vrr.anim", [animationData[1], animationData[2]]); setEntityData(getPlayerPed(client), "vrr.anim", animationSlot, true);
//if(getAnimationData(animationSlot)[9] != VRR_ANIMMOVE_NONE) { //if(getAnimationData(animationSlot)[9] != VRR_ANIMMOVE_NONE) {
// if(getGame() < VRR_GAME_GTA_SA) { // if(getGame() < VRR_GAME_GTA_SA) {
// setPlayerMouseCameraState(client, true); // setPlayerMouseCameraState(client, true);
@@ -144,9 +144,10 @@ function makePlayerStopAnimation(client) {
// =========================================================================== // ===========================================================================
function getAnimationFromParams(params) { function getAnimationFromParams(params) {
let animations = getGameConfig().animations[getServerGame()];
if(isNaN(params)) { if(isNaN(params)) {
for(let i in getGameConfig().animations[getServerGame()]) { for(let i in animations) {
if(toLowerCase(getGameConfig().animations[getServerGame()][i][0]).indexOf(toLowerCase(params)) != -1) { if(toLowerCase(animations[i].name).indexOf(toLowerCase(params)) != -1) {
return i; return i;
} }
} }

View File

@@ -7,6 +7,23 @@
// TYPE: Shared (JavaScript) // TYPE: Shared (JavaScript)
// =========================================================================== // ===========================================================================
class AnimationData {
constructor(name, data) {
this.name = name;
this.groupId = (typeof data.groupId != "undefined") ? data.groupId : 0;
this.animId = (typeof data.animId != "undefined") ? data.animId : 0;
this.animType = (typeof data.animType != "undefined") ? data.animType : VRR_ANIMTYPE_NORMAL;
this.animSpeed = (typeof data.animSpeed != "undefined") ? data.animSpeed : 0.0;
this.moveType = (typeof data.moveType != "undefined") ? data.moveType : VRR_ANIMMOVE_NONE;
// GTA IV
this.infiniteLoop = (typeof data.infiniteLoop != "undefined") ? data.infiniteLoop : false;
this.infiniteLoopNoMovement = (typeof data.infiniteLoopNoMovement != "undefined") ? data.infiniteLoopNoMovement : false;
this.dontReturnToStartCoords = (typeof data.dontReturnToStartCoords != "undefined") ? data.dontReturnToStartCoords : false;
this.freezeLastFrame = (typeof data.freezeLastFrame != "undefined") ? data.freezeLastFrame : false;
}
};
let supportedFeatures = { let supportedFeatures = {
// Invalid, GTAIII, GTAVC, GTASA, Invalid, GTAIV, Invalid, Invalid, Invalid, M1, M2, M3, M1DE // Invalid, GTAIII, GTAVC, GTASA, Invalid, GTAIV, Invalid, Invalid, Invalid, M1, M2, M3, M1DE
time: [null, true, true, true, false, true, true, null, null, null, false, false, false, false], time: [null, true, true, true, false, true, true, null, null, null, false, false, false, false],
@@ -3173,158 +3190,132 @@ let gameData = {
[], [],
// [name, groupId, animId, animType, deltaTime, null, null, null, null, moveType], // [name, groupId, animId, animType, deltaTime, null, null, null, null, moveType],
[ // GTA III [ // GTA III
["walk", 0, 0, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("walk", {groupId: 0, animId: 0}),
["jog", 0, 1, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("jog", {groupId: 0, animId: 1}),
["look1", 0, 7, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("look1", {groupId: 0, animId: 7}),
["tired", 0, 9, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("tired", {groupId: 0, animId: 9}),
["raisegun", 0, 10, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("raisegun", {groupId: 0, animId: 10}),
["wave", 0, 12, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("wave", {groupId: 0, animId: 12}),
["talk", 0, 11, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("talk", {groupId: 0, animId: 11}),
["stomachhit", 0, 18, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("stomachhit", {groupId: 0, animId: 18}),
["headhit", 0, 18, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("headhit", {groupId: 0, animId: 18}),
["throw1", 0, 53, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("throw1", {groupId: 0, animId: 53}),
["throw2", 0, 54, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("throw2", {groupId: 0, animId: 54}),
["punch1", 0, 54, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("punch1", {groupId: 0, animId: 54}),
["headbutt", 0, 70, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("headbutt", {groupId: 0, animId: 70}),
["kick", 0, 71, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("kick", {groupId: 0, animId: 71}),
["kneekick", 0, 72, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("kneekick", {groupId: 0, animId: 72}),
["punch2", 0, 73, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("punch2", {groupId: 0, animId: 73}),
["flipkick", 0, 74, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("flipkick", {groupId: 0, animId: 74}),
["bow", 0, 126, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("bow", {groupId: 0, animId: 126}),
["opendoor1", 0, 127, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("opendoor1", {groupId: 0, animId: 127}),
["opendoor2", 0, 128, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("opendoor2", {groupId: 0, animId: 128}),
["falling", 0, 151, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("falling", {groupId: 0, animId: 151}),
["dive", 0, 156, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("dive", {groupId: 0, animId: 156}),
["headscratch", 0, 157, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("headscratch", {groupId: 0, animId: 157}),
["look2", 0, 158, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("look2", {groupId: 0, animId: 158}),
["plant", 0, 162, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("plant", {groupId: 0, animId: 162}),
["cower", 0, 163, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("cower", {groupId: 0, animId: 163}),
["aimdown", 0, 160, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("aimdown", {groupId: 0, animId: 160}),
["aimcrouch", 0, 165, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("aimcrouch", {groupId: 0, animId: 165}),
["throw3", 0, 166, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("throw3", {groupId: 0, animId: 166}),
["handsup", 0, 167, VRR_ANIMTYPE_SURRENDER, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("handsup", {groupId: 0, animId: 167, animType: VRR_ANIMTYPE_SURRENDER}),
["sit", 0, 111, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("sit", {groupId: 0, animId: 111}),
["sitleft", 0, 111, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_LEFT], new AnimationData("sitleft", {groupId: 0, animId: 111, moveType: VRR_ANIMMOVE_LEFT}),
["sitback", 0, 111, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_BACK], new AnimationData("sitback", {groupId: 0, animId: 111, moveType: VRR_ANIMMOVE_BACK}),
["sitright", 0, 111, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_RIGHT], new AnimationData("sitright", {groupId: 0, animId: 111, moveType: VRR_ANIMMOVE_RIGHT}),
["sitforward", 0, 111, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_FORWARD], new AnimationData("sitforward", {groupId: 0, animId: 111, moveType: VRR_ANIMMOVE_FORWARD}),
["sitarmright", 0, 120, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_BACK], new AnimationData("sitarmright", {groupId: 0, animId: 120, moveType: VRR_ANIMMOVE_BACK}),
["tazed", 0, 13, VRR_ANIMTYPE_FORCED, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("tazed", {groupId: 0, animId: 13, animType: VRR_ANIMTYPE_FORCED}),
], ],
[ // GTA VC [ // GTA VC
["walk", 0, 0, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("walk", {groupId: 0, animId: 0}),
["jog", 0, 1, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("jog", {groupId: 0, animId: 1}),
["handcuffs", 0, 7, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("handcuffs", {groupId: 0, animId: 7}),
["tired", 0, 9, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("tired", {groupId: 0, animId: 9}),
["raisegun", 0, 10, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("raisegun", {groupId: 0, animId: 10}),
["wave", 0, 12, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("wave", {groupId: 0, animId: 12}),
["talk", 0, 11, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("talk", {groupId: 0, animId: 11}),
["stomachhit", 0, 18, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("stomachhit", {groupId: 0, animId: 18}),
["headhit", 0, 18, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("headhit", {groupId: 0, animId: 18}),
["headbutt", 0, 49, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("headbutt", {groupId: 0, animId: 49}),
["kick", 0, 50, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("kick", {groupId: 0, animId: 50}),
["kneekick", 0, 51, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("kneekick", {groupId: 0, animId: 51}),
["throw2", 0, 54, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("throw2", {groupId: 0, animId: 54}),
["punch1", 0, 52, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("punch1", {groupId: 0, animId: 52}),
["punch2", 0, 53, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("punch2", {groupId: 0, animId: 53}),
["flipkick", 0, 54, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("flipkick", {groupId: 0, animId: 54}),
["headscratch", 0, 152, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("headscratch", {groupId: 0, animId: 152}),
["aimdown", 0, 155, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("aimdown", {groupId: 0, animId: 155}),
["look2", 0, 153, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("look2", {groupId: 0, animId: 153}),
["handsup", 0, 161, VRR_ANIMTYPE_SURRENDER, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("handsup", {groupId: 0, animId: 161, animType: VRR_ANIMTYPE_SURRENDER}),
["cower", 0, 162, VRR_ANIMTYPE_SURRENDER, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("cower", {groupId: 0, animId: 162, animType: VRR_ANIMTYPE_SURRENDER}),
["fucku", 0, 163, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("fucku", {groupId: 0, animId: 163}),
["phone", 0, 166, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("phone", {groupId: 0, animId: 166}),
["sit", 0, 169, VRR_ANIMTYPE_NORMAL, 1.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("sit", {groupId: 0, animId: 169, animSpeed: 1.0}),
["atm", 0, 171, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("atm", {groupId: 0, animId: 171}),
["cpr", 24, 214, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("cpr", {groupId: 24, animId: 214}),
["idle1", 26, 215, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("idle1", {groupId: 26, animId: 215}),
["idle2", 26, 216, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("idle2", {groupId: 26, animId: 216}),
["idle3", 26, 217, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("idle3", {groupId: 26, animId: 217}),
["idle4", 26, 218, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("idle4", {groupId: 26, animId: 218}),
["dance1", 28, 226, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("dance1", {groupId: 28, animId: 226}),
["dance2", 28, 227, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("dance2", {groupId: 28, animId: 227}),
["dance3", 28, 228, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("dance3", {groupId: 28, animId: 228}),
["dance4", 28, 229, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("dance4", {groupId: 28, animId: 229}),
["dance5", 28, 230, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("dance5", {groupId: 28, animId: 230}),
["dance6", 28, 231, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("dance6", {groupId: 28, animId: 231}),
["dance7", 28, 232, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("dance7", {groupId: 28, animId: 232}),
["sitright", 0, 169, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_RIGHT], new AnimationData("sitright", {groupId: 0, animId: 169, moveType: VRR_ANIMMOVE_RIGHT}),
["sitleft", 0, 169, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_LEFT], new AnimationData("sitleft", {groupId: 0, animId: 169, moveType: VRR_ANIMMOVE_LEFT}),
["sitforward", 0, 169, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_FORWARD], new AnimationData("sitforward", {groupId: 0, animId: 169, moveType: VRR_ANIMMOVE_FORWARD}),
["sitback", 0, 169, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_BACK], new AnimationData("sitback", {groupId: 0, animId: 169, moveType: VRR_ANIMMOVE_BACK}),
["tazed", 0, 13, VRR_ANIMTYPE_FORCED, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("tazed", {groupId: 0, animId: 13, animType: VRR_ANIMTYPE_FORCED}),
], ],
[ // GTA SA [ // GTA SA
["walk", 0, 0, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("walk", {groupId: 0, animId: 0}),
["jog", 0, 1, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("jog", {groupId: 0, animId: 1}),
["look1", 0, 4, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("look1", {groupId: 0, animId: 4}),
["holdrifle", 0, 11, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("holdrifle", {groupId: 0, animId: 11}),
["talk1", 0, 12, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("talk1", {groupId: 0, animId: 12}),
["wave1", 0, 13, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("wave1", {groupId: 0, animId: 13}),
["swim1", 0, 14, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("swim1", {groupId: 0, animId: 14}),
["die1", 0, 15, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("die1", {groupId: 0, animId: 15}),
["die2", 0, 16, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("die2", {groupId: 0, animId: 16}),
["diehead", 0, 19, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("diehead", {groupId: 0, animId: 19}),
["diestomach", 0, 20, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("diestomach", {groupId: 0, animId: 20}),
["choke", 0, 21, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("choke", {groupId: 0, animId: 21}),
["remotepress", 0, 48, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("remotepress", {groupId: 0, animId: 48}),
["pickup1", 0, 99, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("pickup1", {groupId: 0, animId: 99}),
["pickup2", 0, 100, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("pickup2", {groupId: 0, animId: 100}),
["backhandright", 0, 103, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("backhandright", {groupId: 0, animId: 103}),
["backhandleft", 0, 104, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("backhandleft", {groupId: 0, animId: 104}),
["knockback", 0, 105, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("knockback", {groupId: 0, animId: 105}),
["idle1", 0, 135, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("idle1", {groupId: 0, animId: 135}),
["cower", 0, 141, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("cower", {groupId: 0, animId: 141}),
["handsup", 0, 142, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("handsup", {groupId: 0, animId: 142}),
["fucku", 0, 144, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("fucku", {groupId: 0, animId: 144}),
["phoneout", 0, 145, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("phoneout", {groupId: 0, animId: 145}),
["phonein", 0, 146, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("phonein", {groupId: 0, animId: 146}),
["phonetalk", 0, 146, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("phonetalk", {groupId: 0, animId: 146}),
["sit1", 0, 150, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("sit1", {groupId: 0, animId: 150}),
["atm", 0, 151, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("atm", {groupId: 0, animId: 151}),
["mindtrick", 0, 153, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("mindtrick", {groupId: 0, animId: 153}),
["look2", 0, 165, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("look2", {groupId: 0, animId: 165}),
["gestureno", 0, 166, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("gestureno", {groupId: 0, animId: 166}),
["gestureyes", 0, 167, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("gestureyes", {groupId: 0, animId: 167}),
["wave2", 0, 168, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("wave2", {groupId: 0, animId: 168}),
["snort", 0, 169, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("snort", {groupId: 0, animId: 169}),
["sitright", 0, 150, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_RIGHT], new AnimationData("sitright", {groupId: 0, animId: 150, moveType: VRR_ANIMMOVE_RIGHT}),
["sitleft", 0, 150, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_LEFT], new AnimationData("sitleft", {groupId: 0, animId: 150, moveType: VRR_ANIMMOVE_LEFT}),
["sitforward", 0, 150, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_FORWARD], new AnimationData("sitforward", {groupId: 0, animId: 150, moveType: VRR_ANIMMOVE_FORWARD}),
["sitback", 0, 150, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_BACK], new AnimationData("sitback", {groupId: 0, animId: 150, moveType: VRR_ANIMMOVE_BACK}),
["tazed", 0, 15, VRR_ANIMTYPE_FORCED, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE], new AnimationData("tazed", {groupId: 0, animId: 15, moveType: VRR_ANIMTYPE_FORCED}),
/*
["talk", "PED", "IDLE_CHAT", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["fucku", "PED", "FUCKU", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["taichi", "PARK", "Tai_Chi_Loop", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["slapass", "SWEET", "sweet_ass_slap", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["wave", "ON_LOOKERS", "wave_loop", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["vomit", "EAT_Vomit_P", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["cower", "ped", "cower", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["laugh", "RAPPING", "Laugh_01", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["plant", "BOMBER", "BOM_Plant", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["smoke1", "SMOKING","M_smklean_loop", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["smoke2", "SMOKING","F_smklean_loop", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["smoke3", "SMOKING","M_smkstnd_loop", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["sit1", "ped","SEAT_idle", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["sit2", "BEACH", "ParkSit_M_loop", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["sit3", "BEACH", "ParkSit_W_loop", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["sit4", "BEACH", "SitnWait_loop_W", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["scratch", "MISC","Scratchballs_01", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
["standup", "ped", "SEAT_up", VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null],
//["faceshocked", 0, 150, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE],
//["facesurprised", 0, 150, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE],
//["faceconfused", 0, 150, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE],
//["faceangry", 0, 159, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE],
//["facetalk1", 0, 160, VRR_ANIMTYPE_NORMAL, 0.0, null, null, null, null, VRR_ANIMMOVE_NONE],
*/
], ],
null, null,
[ // GTA IV [ // GTA IV
["dance1", "DAN_LOOP_A", "DANCING", 16.0, true, false, true, false], new AnimationData("dance1", {groupId: "DAN_LOOP_A", animId: "DANCING", animSpeed: 16.0, infiniteLoop: true, infiniteLoopNoMovement: false, dontReturnToStartCoords: true, freezeLastFrame: false}),
] ]
], ],
meleeWeapons: [ meleeWeapons: [