Advertisement
Guest User

12

a guest
Jul 31st, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.16 KB | None | 0 0
  1. --[[
  2. © 2013 CloudSixteen.com do not share, re-distribute or modify
  3. without permission of its author (kurozael@gmail.com).
  4. --]]
  5.  
  6. local Clockwork = Clockwork;
  7. local type = type;
  8. local string = string;
  9. local math = math;
  10.  
  11. Clockwork.animation = Clockwork.kernel:NewLibrary("Animation");
  12. Clockwork.animation.sequences = Clockwork.animation.sequences or {};
  13. Clockwork.animation.override = Clockwork.animation.override or {};
  14. Clockwork.animation.models = Clockwork.animation.models or {};
  15. Clockwork.animation.stored = Clockwork.animation.stored or {};
  16. Clockwork.animation.stored.combineOverwatch = {
  17. ["normal"] = {
  18. ["idle"] = {"idle_unarmed", "man_gun"},
  19. ["idle_crouch"] = {"crouchidle", "crouchidle"},
  20. ["walk"] = {"walkunarmed_all", ACT_WALK_RIFLE},
  21. ["walk_crouch"] = {"crouch_walkall", "crouch_walkall"},
  22. ["run"] = {"runall", ACT_RUN_AIM_RIFLE},
  23. ["glide"] = ACT_GLIDE
  24. },
  25. ["pistol"] = {
  26. ["idle"] = {"idle_unarmed", ACT_IDLE_ANGRY_SMG1},
  27. ["idle_crouch"] = {"crouchidle", "crouchidle"},
  28. ["walk"] = {"walkunarmed_all", ACT_WALK_RIFLE},
  29. ["walk_crouch"] = {"crouch_walkall", "crouch_walkall"},
  30. ["run"] = {"runall", ACT_RUN_AIM_RIFLE}
  31. },
  32. ["smg"] = {
  33. ["idle"] = {ACT_IDLE_SMG1, ACT_IDLE_ANGRY_SMG1},
  34. ["idle_crouch"] = {"crouchidle", "crouchidle"},
  35. ["walk"] = {ACT_WALK_RIFLE, ACT_WALK_AIM_RIFLE},
  36. ["walk_crouch"] = {"crouch_walkall", "crouch_walkall"},
  37. ["run"] = {ACT_RUN_RIFLE, ACT_RUN_AIM_RIFLE}
  38. },
  39. ["shotgun"] = {
  40. ["idle"] = {ACT_IDLE_SMG1, ACT_IDLE_ANGRY_SHOTGUN},
  41. ["idle_crouch"] = {"crouchidle", "crouchidle"},
  42. ["walk"] = {ACT_WALK_RIFLE, ACT_WALK_AIM_SHOTGUN},
  43. ["walk_crouch"] = {"crouch_walkall", "crouch_walkall"},
  44. ["run"] = {ACT_RUN_RIFLE, ACT_RUN_AIM_SHOTGUN}
  45. },
  46. ["grenade"] = {
  47. ["idle"] = {"idle_unarmed", "man_gun"},
  48. ["idle_crouch"] = {"crouchidle", "crouchidle"},
  49. ["walk"] = {"walkunarmed_all", ACT_WALK_RIFLE},
  50. ["walk_crouch"] = {"crouch_walkall", "crouch_walkall"},
  51. ["run"] = {"runall", ACT_RUN_AIM_RIFLE}
  52. },
  53. ["melee"] = {
  54. ["idle"] = {"idle_unarmed", "man_gun"},
  55. ["idle_crouch"] = {"crouchidle", "crouchidle"},
  56. ["walk"] = {"walkunarmed_all", ACT_WALK_RIFLE},
  57. ["walk_crouch"] = {"crouch_walkall", "crouch_walkall"},
  58. ["run"] = {"runall", ACT_RUN_AIM_RIFLE},
  59. ["attack"] = ACT_MELEE_ATTACK_SWING_GESTURE
  60. }
  61. };
  62.  
  63. Clockwork.animation.stored.civilProtection = {
  64. ["normal"] = {
  65. ["idle"] = {ACT_IDLE, ACT_IDLE_ANGRY_SMG1},
  66. ["idle_crouch"] = {ACT_COVER_PISTOL_LOW, ACT_COVER_SMG1_LOW},
  67. ["walk"] = {ACT_WALK, ACT_WALK_AIM_RIFLE},
  68. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH},
  69. ["run"] = {ACT_RUN, ACT_RUN},
  70. ["glide"] = ACT_GLIDE
  71. },
  72. ["pistol"] = {
  73. ["idle"] = {"Shoottostandpistol", ACT_IDLE_ANGRY_PISTOL},
  74. ["idle_crouch"] = {ACT_COVER_PISTOL_LOW, ACT_COVER_PISTOL_LOW},
  75. ["walk"] = {ACT_WALK_PISTOL, ACT_WALK_AIM_PISTOL},
  76. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH},
  77. ["run"] = {"Run_Hold_Pistol", ACT_RUN_AIM_PISTOL},
  78. ["attack"] = ACT_RANGE_ATTACK_PISTOL,
  79. ["reload"] = ACT_RELOAD_PISTOL
  80. },
  81. ["smg"] = {
  82. ["idle"] = {"Adooridle", ACT_IDLE_ANGRY_SMG1},
  83. ["idle_crouch"] = {ACT_COVER_SMG1_LOW, ACT_COVER_SMG1_LOW},
  84. ["walk"] = {ACT_WALK_RIFLE, ACT_WALK_AIM_RIFLE},
  85. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH},
  86. ["run"] = {ACT_RUN_RIFLE, ACT_RUN_AIM_RIFLE}
  87. },
  88. ["shotgun"] = {
  89. ["idle"] = {ACT_IDLE_SMG1, ACT_IDLE_ANGRY_SMG1},
  90. ["idle_crouch"] = {ACT_COVER_SMG1_LOW, ACT_COVER_SMG1_LOW},
  91. ["walk"] = {ACT_WALK_RIFLE, ACT_WALK_AIM_RIFLE},
  92. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH},
  93. ["run"] = {ACT_RUN_RIFLE, ACT_RUN_AIM_RIFLE_STIMULATED}
  94. },
  95. ["grenade"] = {
  96. ["idle"] = {ACT_IDLE, ACT_IDLE_ANGRY_MELEE},
  97. ["idle_crouch"] = {ACT_COVER_PISTOL_LOW, ACT_COVER_PISTOL_LOW},
  98. ["walk"] = {ACT_WALK, ACT_WALK_ANGRY},
  99. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH},
  100. ["run"] = {ACT_RUN, ACT_RUN},
  101. ["attack"] = ACT_COMBINE_THROW_GRENADE
  102. },
  103. ["melee"] = {
  104. ["idle"] = {ACT_IDLE, ACT_IDLE_ANGRY_MELEE},
  105. ["idle_crouch"] = {ACT_COVER_PISTOL_LOW, ACT_COVER_PISTOL_LOW},
  106. ["walk"] = {ACT_WALK, ACT_WALK_ANGRY},
  107. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH},
  108. ["run"] = {ACT_RUN, ACT_RUN},
  109. ["attack"] = ACT_MELEE_ATTACK_SWING_GESTURE
  110. }
  111. };
  112.  
  113. Clockwork.animation.stored.femaleHuman = {
  114. ["normal"] = {
  115. ["idle"] = {ACT_IDLE, ACT_IDLE_ANGRY_SMG1},
  116. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  117. ["walk"] = {ACT_WALK, ACT_WALK_AIM_RIFLE_STIMULATED},
  118. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH_AIM_RIFLE},
  119. ["run"] = {ACT_RUN, ACT_RUN_AIM_RIFLE_STIMULATED},
  120. ["glide"] = ACT_GLIDE
  121. },
  122. ["pistol"] = {
  123. ["idle"] = {ACT_IDLE_PISTOL, ACT_IDLE_ANGRY_PISTOL},
  124. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  125. ["walk"] = {ACT_WALK, ACT_WALK_AIM_PISTOL},
  126. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH_AIM_PISTOL},
  127. ["run"] = {ACT_RUN, ACT_RUN_AIM_PISTOL},
  128. ["attack"] = ACT_GESTURE_RANGE_ATTACK_PISTOL,
  129. ["reload"] = ACT_RELOAD_PISTOL
  130. },
  131. ["smg"] = {
  132. ["idle"] = {ACT_IDLE_SMG1_RELAXED, ACT_IDLE_ANGRY_SMG1},
  133. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  134. ["walk"] = {ACT_WALK_RIFLE_RELAXED, ACT_WALK_AIM_RIFLE_STIMULATED},
  135. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH_AIM_RIFLE},
  136. ["run"] = {ACT_RUN_RIFLE_RELAXED, ACT_RUN_AIM_RIFLE_STIMULATED},
  137. ["attack"] = ACT_GESTURE_RANGE_ATTACK_SMG1,
  138. ["reload"] = ACT_GESTURE_RELOAD_SMG1
  139. },
  140. ["shotgun"] = {
  141. ["idle"] = {ACT_IDLE_SHOTGUN_RELAXED, ACT_IDLE_ANGRY_SMG1},
  142. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  143. ["walk"] = {ACT_WALK_RIFLE_RELAXED, ACT_WALK_AIM_RIFLE_STIMULATED},
  144. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH_AIM_RIFLE},
  145. ["run"] = {ACT_RUN_RIFLE_RELAXED, ACT_RUN_AIM_RIFLE_STIMULATED},
  146. ["attack"] = ACT_GESTURE_RANGE_ATTACK_SHOTGUN
  147. },
  148. ["grenade"] = {
  149. ["idle"] = {ACT_IDLE, ACT_IDLE_ANGRY_SMG1},
  150. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  151. ["walk"] = {ACT_WALK, ACT_WALK_AIM_RIFLE_STIMULATED},
  152. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH_AIM_RIFLE},
  153. ["run"] = {ACT_RUN, ACT_RUN_AIM_RIFLE_STIMULATED},
  154. ["attack"] = ACT_RANGE_ATTACK_THROW
  155. },
  156. ["melee"] = {
  157. ["idle"] = {ACT_IDLE, ACT_IDLE_MANNEDGUN},
  158. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  159. ["walk"] = {ACT_WALK, ACT_WALK_AIM_RIFLE},
  160. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH},
  161. ["run"] = {ACT_RUN, ACT_RUN},
  162. ["attack"] = ACT_MELEE_ATTACK_SWING
  163. }
  164. };
  165.  
  166. Clockwork.animation.stored.maleHuman = {
  167. ["normal"] = {
  168. ["idle"] = {ACT_IDLE, ACT_IDLE_ANGRY_SMG1},
  169. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  170. ["walk"] = {ACT_WALK, ACT_WALK_AIM_RIFLE_STIMULATED},
  171. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH_AIM_RIFLE},
  172. ["run"] = {ACT_RUN, ACT_RUN_AIM_RIFLE_STIMULATED},
  173. ["glide"] = ACT_GLIDE
  174. },
  175. ["pistol"] = {
  176. ["idle"] = {ACT_IDLE, ACT_IDLE_ANGRY_SMG1},
  177. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  178. ["walk"] = {ACT_WALK, ACT_WALK_AIM_RIFLE_STIMULATED},
  179. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH_AIM_RIFLE},
  180. ["run"] = {ACT_RUN, ACT_RUN_AIM_RIFLE_STIMULATED},
  181. ["attack"] = ACT_GESTURE_RANGE_ATTACK_PISTOL,
  182. ["reload"] = ACT_RELOAD_PISTOL
  183. },
  184. ["smg"] = {
  185. ["idle"] = {ACT_IDLE_SMG1_RELAXED, ACT_IDLE_ANGRY_SMG1},
  186. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  187. ["walk"] = {ACT_WALK_RIFLE_RELAXED, ACT_WALK_AIM_RIFLE_STIMULATED},
  188. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH_AIM_RIFLE},
  189. ["run"] = {ACT_RUN_RIFLE_RELAXED, ACT_RUN_AIM_RIFLE_STIMULATED},
  190. ["attack"] = ACT_GESTURE_RANGE_ATTACK_SMG1,
  191. ["reload"] = ACT_GESTURE_RELOAD_SMG1
  192. },
  193. ["shotgun"] = {
  194. ["idle"] = {ACT_IDLE_SHOTGUN_RELAXED, ACT_IDLE_ANGRY_SMG1},
  195. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  196. ["walk"] = {ACT_WALK_RIFLE_RELAXED, ACT_WALK_AIM_RIFLE_STIMULATED},
  197. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH_AIM_RIFLE},
  198. ["run"] = {ACT_RUN_RIFLE_RELAXED, ACT_RUN_AIM_RIFLE_STIMULATED},
  199. ["attack"] = ACT_GESTURE_RANGE_ATTACK_SHOTGUN
  200. },
  201. ["grenade"] = {
  202. ["idle"] = {ACT_IDLE, ACT_IDLE_MANNEDGUN},
  203. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  204. ["walk"] = {ACT_WALK, ACT_WALK_AIM_RIFLE},
  205. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH_AIM_RIFLE},
  206. ["run"] = {ACT_RUN, ACT_RUN_AIM_RIFLE_STIMULATED},
  207. ["attack"] = ACT_RANGE_ATTACK_THROW
  208. },
  209. ["melee"] = {
  210. ["idle"] = {ACT_IDLE_SUITCASE, ACT_IDLE_ANGRY_MELEE},
  211. ["idle_crouch"] = {ACT_COVER_LOW, ACT_COVER_LOW},
  212. ["walk"] = {ACT_WALK, ACT_WALK_AIM_RIFLE},
  213. ["walk_crouch"] = {ACT_WALK_CROUCH, ACT_WALK_CROUCH},
  214. ["run"] = {ACT_RUN, ACT_RUN},
  215. ["attack"] = ACT_MELEE_ATTACK_SWING
  216. }
  217. };
  218.  
  219. -- A function to set a model's menu sequence.
  220. function Clockwork.animation:SetMenuSequence(model, sequence)
  221. self.sequences[string.lower(model)] = sequence;
  222. end;
  223.  
  224. -- A function to get a model's menu sequence.
  225. function Clockwork.animation:GetMenuSequence(model, bRandom)
  226. local lowerModel = string.lower(model);
  227. local sequence = self.sequences[lowerModel];
  228.  
  229. if (sequence) then
  230. if (type(sequence) == "table") then
  231. if (bRandom) then
  232. return sequence[math.random(1, #sequence)];
  233. else
  234. return sequence;
  235. end;
  236. else
  237. return sequence;
  238. end;
  239. end;
  240. end;
  241.  
  242. -- A function to add a model.
  243. function Clockwork.animation:AddModel(class, model)
  244. local lowerModel = string.lower(model);
  245. self.models[lowerModel] = class;
  246. return lowerModel;
  247. end;
  248.  
  249. -- A function to add an override.
  250. function Clockwork.animation:AddOverride(model, key, value)
  251. local lowerModel = string.lower(model);
  252.  
  253. if (!self.override[lowerModel]) then
  254. self.override[lowerModel] = {};
  255. end;
  256.  
  257. self.override[lowerModel][key] = value;
  258. end;
  259.  
  260. -- A function to get an animation for a model.
  261. function Clockwork.animation:GetForModel(model, holdType, key, bNoFallbacks)
  262. if (!model) then
  263. debug.Trace();
  264.  
  265. return false;
  266. end;
  267.  
  268. local lowerModel = string.lower(model);
  269. local animTable = self:GetTable(lowerModel);
  270. local overrideTable = self.override[lowerModel];
  271.  
  272. if (!bNoFallbacks) then
  273. if (!animTable[holdType]) then
  274. holdType = "normal";
  275. end;
  276.  
  277. if (!animTable[holdType][key]) then
  278. key = "idle";
  279. end;
  280. end;
  281.  
  282. local finalAnimation = animTable[holdType][key];
  283.  
  284. if (overrideTable and overrideTable[holdType] and overrideTable[holdType][key]) then
  285. finalAnimation = overrideTable[holdType][key];
  286. end;
  287.  
  288. return finalAnimation;
  289. end;
  290.  
  291. -- A function to get a model's class.
  292. function Clockwork.animation:GetModelClass(model, alwaysReal)
  293. local modelClass = self.models[string.lower(model)];
  294.  
  295. if (!modelClass) then
  296. if (!alwaysReal) then
  297. return "maleHuman";
  298. end;
  299. else
  300. return modelClass;
  301. end;
  302. end;
  303.  
  304. -- A function to add a Combine Overwatch model.
  305. function Clockwork.animation:AddCombineOverwatchModel(model)
  306. return self:AddModel("combineOverwatch", model);
  307. end;
  308.  
  309. -- A function to add a Civil Protection model.
  310. function Clockwork.animation:AddCivilProtectionModel(model)
  311. return self:AddModel("civilProtection", model);
  312. end;
  313.  
  314. -- A function to add a female human model.
  315. function Clockwork.animation:AddFemaleHumanModel(model)
  316. return self:AddModel("femaleHuman", model);
  317. end;
  318.  
  319. -- A function to add a male human model.
  320. function Clockwork.animation:AddMaleHumanModel(model)
  321. return self:AddModel("maleHuman", model);
  322. end;
  323.  
  324. local translateHoldTypes = {
  325. ["melee2"] = "melee",
  326. ["fist"] = "melee",
  327. ["knife"] = "melee",
  328. ["ar2"] = "smg",
  329. ["physgun"] = "smg",
  330. ["crossbow"] = "smg",
  331. ["slam"] = "grenade",
  332. ["passive"] = "normal",
  333. ["rpg"] = "shotgun"
  334. };
  335.  
  336. local weaponHoldTypes = {
  337. ["weapon_ar2"] = "smg",
  338. ["weapon_smg1"] = "smg",
  339. ["weapon_physgun"] = "smg",
  340. ["weapon_crossbow"] = "smg",
  341. ["weapon_physcannon"] = "smg",
  342. ["gdcw_hl2_smg1"] = "smg",
  343. ["gdcw_mp5"] = "smg",
  344. ["gdcw_ump"] = "smg",
  345. ["weapon_crowbar"] = "melee",
  346. ["weapon_bugbait"] = "melee",
  347. ["weapon_stunstick"] = "melee",
  348. ["weapon_stunstick"] = "melee",
  349. ["gmod_tool"] = "pistol",
  350. ["weapon_357"] = "pistol",
  351. ["weapon_pistol"] = "pistol",
  352. ["weapon_frag"] = "grenade",
  353. ["weapon_slam"] = "grenade",
  354. ["weapon_rpg"] = "shotgun",
  355. ["weapon_shotgun"] = "shotgun",
  356. ["gdcw_rpg7"] = "shotgun",
  357. ["gdcw_m1911"] = "pistol",
  358. ["gdcw_glock18"] = "pistol",
  359. ["gdcw_revolver"] = "pistol",
  360. ["gdcw_hl2_pistol"] = "pistol",
  361. ["weapon_annabelle"] = "shotgun"
  362. };
  363.  
  364. -- A function to get a weapon's hold type.
  365. function Clockwork.animation:GetWeaponHoldType(player, weapon)
  366. local class = string.lower(weapon:GetClass());
  367. local holdType = "normal";
  368.  
  369. if (weaponHoldTypes[class]) then
  370. holdType = weaponHoldTypes[class];
  371. elseif (weapon and weapon.HoldType) then
  372. if (translateHoldTypes[weapon.HoldType]) then
  373. holdType = translateHoldTypes[weapon.HoldType];
  374. else
  375. holdType = weapon.HoldType;
  376. end;
  377. end;
  378.  
  379. return string.lower(holdType);
  380. end;
  381.  
  382. -- A function to get an animation table.
  383. function Clockwork.animation:GetTable(model)
  384. local lowerModel = string.lower(model);
  385. local class = self.models[lowerModel];
  386.  
  387. if (class and self.stored[class]) then
  388. return self.stored[class];
  389. elseif (string.find(lowerModel, "female")) then
  390. return self.stored.femaleHuman;
  391. else
  392. return self.stored.maleHuman;
  393. end;
  394. end;
  395.  
  396. local function ADD_CITIZEN_MODELS(prefix)
  397. for k, v in pairs(file.Find("models/humans/group01/"..prefix.."_*.mdl", "GAME")) do
  398. Clockwork.animation:AddModel(prefix.."Human", "models/humans/group01/"..v);
  399. end;
  400.  
  401. for k, v in pairs(file.Find("models/humans/group02/"..prefix.."_*.mdl", "GAME")) do
  402. Clockwork.animation:AddModel(prefix.."Human", "models/humans/group02/"..v);
  403. end;
  404.  
  405. for k, v in pairs(file.Find("models/humans/group03/"..prefix.."_*.mdl", "GAME")) do
  406. Clockwork.animation:AddModel(prefix.."Human", "models/humans/group03/"..v);
  407. end;
  408.  
  409. for k, v in pairs(file.Find("models/humans/group03m/"..prefix.."_*.mdl", "GAME")) do
  410. Clockwork.animation:AddModel(prefix.."Human", "models/humans/group03m/"..v);
  411. end;
  412. end;
  413.  
  414. Clockwork.animation:AddCombineOverwatchModel("models/combine_soldier_prisonguard.mdl");
  415. Clockwork.animation:AddCombineOverwatchModel("models/combine_super_soldier.mdl");
  416. Clockwork.animation:AddCombineOverwatchModel("models/combine_soldier.mdl");
  417.  
  418. Clockwork.animation:AddCivilProtectionModel("models/police.mdl");
  419.  
  420. ADD_CITIZEN_MODELS("male");
  421. ADD_CITIZEN_MODELS("female");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement