Advertisement
Guest User

Untitled

a guest
Jun 20th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.95 KB | None | 0 0
  1. stateName[0] = "Activate";
  2. stateTimeoutValue[0] = 0.15;
  3. stateTransitionOnTimeout[0] = "AmmoCheck";
  4. stateSound[0] = weaponSwitchSound;
  5.  
  6. stateName[1] = "Ready";
  7. stateTransitionOnTriggerDown[1] = "Fire";
  8. stateTransitionOnNoAmmo[1] = "Empty";
  9. stateAllowImageChange[1] = true;
  10. stateSequence[1] = "root";
  11.  
  12. stateName[2] = "Fire";
  13. stateTimeoutValue[2] = 0.30;
  14. stateTransitionOnTimeout[2] = "Smoke";
  15. stateTransitionOnTriggerDown[2] = "Fire1";
  16. stateFire[2] = true;
  17. stateAllowImageChange[2] = false;
  18. stateSequence[2] = "Fire";
  19. stateScript[2] = "onFire";
  20. stateWaitForTimeout[2] = true;
  21. stateEmitter[2] = warSmallBulletFireEmitter;
  22. stateEmitterTime[2] = 0.05;
  23. stateEmitterNode[2] = "muzzleNode";
  24. stateEjectShell[2] = true;
  25.  
  26. stateName[3] = "Smoke";
  27. stateEmitter[3] = warSmallBulletSmokeEmitter;
  28. stateEmitterTime[3] = 0.05;
  29. stateEmitterNode[3] = "muzzleNode";
  30. stateTimeoutValue[3] = 0.01;
  31. stateTransitionOnTimeout[3] = "AmmoCheck";
  32. stateWaitForTimeout[3] = true;
  33. stateSound[3] = "";
  34.  
  35. stateName[4] = "Cycle";
  36. stateTimeoutValue[4] = 0.1;
  37. stateTransitionOnTimeout[4] = "AmmoCheck";
  38. stateSound[4] = "";
  39.  
  40. stateName[5] = "AmmoCheck";
  41. stateTransitionOnTimeout[5] = "Ready";
  42. stateAllowImageChange[5] = true;
  43. stateScript[5] = "onAmmoCheck";
  44.  
  45. stateName[6] = "Reload";
  46. stateTransitionOnTimeout[6] = "ReloadReady";
  47. stateTimeoutValue[6] = 4.85;
  48. stateAllowImageChange[6] = true;
  49. stateScript[6] = "onReloadStart";
  50. stateSound[6] = warSound;
  51.  
  52. stateName[7] = "ReloadReady";
  53. stateTransitionOnTimeout[7] = "Ready";
  54. stateTimeoutValue[7] = 0.1;
  55. stateAllowImageChange[7] = true;
  56. stateScript[7] = "onReload";
  57.  
  58. stateName[8] = "Empty";
  59. stateTransitionOnTriggerDown[8] = "EmptyFire";
  60. stateAllowImageChange[8] = true;
  61. stateScript[8] = "onEmpty";
  62. stateTransitionOnAmmo[8] = "Reload";
  63. //stateSequence[8] = "noammo";
  64.  
  65. stateName[9] = "EmptyFire";
  66. stateTransitionOnTriggerUp[9] = "Empty";
  67. stateTimeoutValue[9] = 0.13;
  68. stateAllowImageChange[9] = false;
  69. stateWaitForTimeout[9] = true;
  70. stateSound[9] = warReloadTap1Sound;
  71. stateSequence[9] = "noammo_fire";
  72.  
  73. stateName[10] = "Fire1";
  74. stateTimeoutValue[10] = 0.40;
  75. stateTransitionOnTimeout[10] = "Smoke";
  76. stateTransitionOnTriggerDown[10] = "Fire2";
  77. stateFire[10] = true;
  78. stateAllowImageChange[10] = false;
  79. stateSequence[10] = "Fire";
  80. stateScript[10] = "onFire2";
  81. stateWaitForTimeout[10] = true;
  82. stateEmitter[10] = warBigBulletFireEmitter;
  83. stateEmitterTime[10] = 0.05;
  84. stateEmitterNode[10] = "muzzleNode";
  85. stateEjectShell[10] = true;
  86.  
  87. stateName[11] = "Fire2";
  88. stateTimeoutValue[11] = 0.20;
  89. stateTransitionOnTimeout[11] = "Smoke";
  90. stateTransitionOnTriggerDown[2] = "Fire3";
  91. stateFire[11] = true;
  92. stateAllowImageChange[11] = false;
  93. stateSequence[11] = "Fire";
  94. stateScript[11] = "onFire3";
  95. stateWaitForTimeout[11] = true;
  96. stateEmitter[11] = warHugeBulletFireEmitter;
  97. stateEmitterTime[11] = 0.05;
  98. stateEmitterNode[11] = "muzzleNode";
  99. stateEjectShell[11] = true;
  100.  
  101. stateName[11] = "Fire3";
  102. stateTimeoutValue[11] = 0.1;
  103. stateTransitionOnTimeout[11] = "Smoke";
  104. stateTransitionOnTriggerDown[2] = "Fire4";
  105. stateFire[11] = true;
  106. stateAllowImageChange[11] = false;
  107. stateSequence[11] = "Fire";
  108. stateScript[11] = "onFire4";
  109. stateWaitForTimeout[11] = true;
  110. stateEmitter[11] = warHugeBulletFireEmitter;
  111. stateEmitterTime[11] = 0.05;
  112. stateEmitterNode[11] = "muzzleNode";
  113. stateEjectShell[11] = true;
  114.  
  115. stateName[11] = "Fire4";
  116. stateTimeoutValue[11] = 0.20;
  117. stateTransitionOnTriggerDown[11] = "Fire1";
  118. stateFire[11] = true;
  119. stateAllowImageChange[11] = false;
  120. stateSequence[11] = "Fire";
  121. stateScript[11] = "onFire5";
  122. stateWaitForTimeout[11] = true;
  123. stateEmitter[11] = warHugeBulletFireEmitter;
  124. stateEmitterTime[11] = 0.05;
  125. stateEmitterNode[11] = "muzzleNode";
  126. stateEjectShell[11] = true;
  127.  
  128.  
  129. };
  130.  
  131. ////// ammo display functions
  132. function heavyMachineGunImage::onMount( %this, %obj, %slot )
  133. {parent::onMount(%this,%obj,%slot); hl2DisplayAmmo(%this,%obj,%slot,0);}
  134.  
  135. function heavyMachineGunImage::onUnMount( %this, %obj, %slot )
  136. {parent::onUnMount(%this,%obj,%slot); hl2DisplayAmmo(%this,%obj,%slot,-1);}
  137.  
  138. function heavyMachineGunImage::onAmmoCheck( %this, %obj, %slot )
  139. {hl2AmmoCheck(%this,%obj,%slot); hl2DisplayAmmo(%this,%obj,%slot);}
  140.  
  141. /////// reload functions
  142. function heavyMachineGunImage::onReloadStart( %this, %obj, %slot )
  143. {
  144. %obj.playThread(2,plant);
  145. serverPlay3d( warReload2Sound, %obj.getHackPosition());
  146.  
  147. %obj.schedule(450, "playThread", "2", "shiftright");
  148. %obj.schedule(650, "playThread", "2", "shiftdown");
  149.  
  150. %obj.schedule(1750, "playThread", "2", "plant");
  151. %obj.schedule(2250, "playThread", "2", "plant");
  152. %obj.schedule(3350, "playThread", "2", "shiftLeft");
  153.  
  154. %obj.schedule(4650, "playThread", "2", "plant");
  155.  
  156. schedule(650, 0, serverPlay3D, warReloadTap2Sound, %obj.getHackPosition());
  157. schedule(750, 0, serverPlay3D, warReloadTap1Sound, %obj.getHackPosition());
  158. schedule(1750, 0, serverPlay3D, warReload3Sound, %obj.getHackPosition());
  159. schedule(2250, 0, serverPlay3D, warReload1Sound, %obj.getHackPosition());
  160. schedule(3350, 0, serverPlay3D, warReloadTap3Sound, %obj.getHackPosition());
  161. schedule(4650, 0, serverPlay3D, warReload5Sound, %obj.getHackPosition());
  162.  
  163. hl2DisplayAmmo(%this,%obj,%slot);
  164. }
  165.  
  166. function heavyMachineGunImage::onReload( %this, %obj, %slot )
  167. {
  168. hl2AmmoOnReload(%this,%obj,%slot);
  169. hl2DisplayAmmo(%this,%obj,%slot);
  170. }
  171.  
  172. function heavyMachineGunImage::onEmpty(%this,%obj,%slot)
  173. {
  174. if( $hl2Weapons::Ammo && %obj.toolAmmo[%this.item.ammotype] < 1 )
  175. {
  176. return;
  177. }
  178.  
  179. if(%obj.toolMag[%obj.currTool] < 1)
  180. {
  181. serverCmdLight(%obj.client);
  182. }
  183. }
  184.  
  185. function heavyMachineGunImage::onFire( %this, %obj, %slot )
  186. {
  187. if(%obj.getDamagePercent() > 1.0)
  188. {
  189. return;
  190. }
  191.  
  192. %obj.toolMag[%obj.currTool] -= 1;
  193.  
  194. if(%obj.toolMag[%obj.currTool] < 1)
  195. {
  196. %obj.toolMag[%obj.currTool] = 0;
  197. %obj.setImageAmmo(0,0);
  198. }
  199. hl2DisplayAmmo(%this,%obj,%slot);
  200.  
  201. %projectile = %this.projectile;
  202. %spread = 0.0025;
  203. %shellcount = 1;
  204.  
  205. %fvec = %obj.getForwardVector();
  206. %fX = getWord(%fvec,0);
  207. %fY = getWord(%fvec,1);
  208.  
  209. %evec = %obj.getEyeVector();
  210. %eX = getWord(%evec,0);
  211. %eY = getWord(%evec,1);
  212. %eZ = getWord(%evec,2);
  213.  
  214. %eXY = mSqrt(%eX*%eX+%eY*%eY);
  215.  
  216. %aimVec = %fX*%eXY SPC %fY*%eXY SPC %eZ;
  217. %obj.setVelocity(VectorAdd(%obj.getVelocity(),VectorScale(%aimVec,"-1")));
  218. %obj.spawnExplosion(warRecoilProjectile,"0.5 0.5 0.5");
  219.  
  220. for(%shell=0; %shell<%shellcount; %shell++)
  221. {
  222. %vector = %obj.getMuzzleVector(%slot);
  223. %objectVelocity = %obj.getVelocity();
  224. %vector1 = VectorScale(%vector, %projectile.muzzleVelocity);
  225. %vector2 = VectorScale(%objectVelocity, %projectile.velInheritFactor);
  226. %velocity = VectorAdd(%vector1,%vector2);
  227. %x = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  228. %y = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  229. %z = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  230. %mat = MatrixCreateFromEuler(%x @ " " @ %y @ " " @ %z);
  231. %velocity = MatrixMulVector(%mat, %velocity);
  232.  
  233. %p = new (%this.projectileType)()
  234. {
  235. dataBlock = %projectile;
  236. initialVelocity = %velocity;
  237. initialPosition = %obj.getMuzzlePoint(%slot);
  238. sourceObject = %obj;
  239. sourceSlot = %slot;
  240. client = %obj.client;
  241. scale = "1.5 1.5 1.5";
  242. };
  243. MissionCleanup.add(%p);
  244. }
  245.  
  246. %obj.playThread(2, shiftRight);
  247. %obj.playThread(3, shiftLeft);
  248. serverPlay3d( heavyMachineGunFireSound, %obj.getHackPosition());
  249. }
  250.  
  251. function heavyMachineGunImage::onFire2( %this, %obj, %slot )
  252. {
  253. if(%obj.getDamagePercent() > 1.0)
  254. {
  255. return;
  256. }
  257.  
  258. %obj.toolMag[%obj.currTool] -= 1;
  259.  
  260. if(%obj.toolMag[%obj.currTool] < 1)
  261. {
  262. %obj.toolMag[%obj.currTool] = 0;
  263. %obj.setImageAmmo(0,0);
  264. }
  265. hl2DisplayAmmo(%this,%obj,%slot);
  266.  
  267. %projectile = %this.projectile;
  268. %spread = 0.0033;
  269. %shellcount = 1;
  270.  
  271. %fvec = %obj.getForwardVector();
  272. %fX = getWord(%fvec,0);
  273. %fY = getWord(%fvec,1);
  274.  
  275. %evec = %obj.getEyeVector();
  276. %eX = getWord(%evec,0);
  277. %eY = getWord(%evec,1);
  278. %eZ = getWord(%evec,2);
  279.  
  280. %eXY = mSqrt(%eX*%eX+%eY*%eY);
  281.  
  282. %aimVec = %fX*%eXY SPC %fY*%eXY SPC %eZ;
  283. %obj.setVelocity(VectorAdd(%obj.getVelocity(),VectorScale(%aimVec,"-0.5")));
  284. %obj.spawnExplosion(warRecoilProjectile,"0.25 0.25 0.25");
  285.  
  286. for(%shell=0; %shell<%shellcount; %shell++)
  287. {
  288. %vector = %obj.getMuzzleVector(%slot);
  289. %objectVelocity = %obj.getVelocity();
  290. %vector1 = VectorScale(%vector, %projectile.muzzleVelocity);
  291. %vector2 = VectorScale(%objectVelocity, %projectile.velInheritFactor);
  292. %velocity = VectorAdd(%vector1,%vector2);
  293. %x = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  294. %y = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  295. %z = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  296. %mat = MatrixCreateFromEuler(%x @ " " @ %y @ " " @ %z);
  297. %velocity = MatrixMulVector(%mat, %velocity);
  298.  
  299. %p = new (%this.projectileType)()
  300. {
  301. dataBlock = %projectile;
  302. initialVelocity = %velocity;
  303. initialPosition = %obj.getMuzzlePoint(%slot);
  304. sourceObject = %obj;
  305. sourceSlot = %slot;
  306. client = %obj.client;
  307. scale = "1.5 1.5 1.5";
  308. };
  309. MissionCleanup.add(%p);
  310. }
  311.  
  312. %obj.playThread(2, shiftRight);
  313. %obj.playThread(3, shiftLeft);
  314. serverPlay3d( heavyMachineGunFireSound, %obj.getHackPosition());
  315. }
  316.  
  317.  
  318. function heavyMachineGunImage::onFire3( %this, %obj, %slot )
  319. {
  320. if(%obj.getDamagePercent() > 1.0)
  321. {
  322. return;
  323. }
  324.  
  325. %obj.toolMag[%obj.currTool] -= 1;
  326.  
  327. if(%obj.toolMag[%obj.currTool] < 1)
  328. {
  329. %obj.toolMag[%obj.currTool] = 0;
  330. %obj.setImageAmmo(0,0);
  331. }
  332. hl2DisplayAmmo(%this,%obj,%slot);
  333.  
  334. %projectile = %this.projectile;
  335. %spread = 0.0045;
  336. %shellcount = 1;
  337.  
  338. %fvec = %obj.getForwardVector();
  339. %fX = getWord(%fvec,0);
  340. %fY = getWord(%fvec,1);
  341.  
  342. %evec = %obj.getEyeVector();
  343. %eX = getWord(%evec,0);
  344. %eY = getWord(%evec,1);
  345. %eZ = getWord(%evec,2);
  346.  
  347. %eXY = mSqrt(%eX*%eX+%eY*%eY);
  348.  
  349. %aimVec = %fX*%eXY SPC %fY*%eXY SPC %eZ;
  350. %obj.setVelocity(VectorAdd(%obj.getVelocity(),VectorScale(%aimVec,"-0.5")));
  351. %obj.spawnExplosion(warRecoilProjectile,"0.75 0.75 0.75");
  352.  
  353. for(%shell=0; %shell<%shellcount; %shell++)
  354. {
  355. %vector = %obj.getMuzzleVector(%slot);
  356. %objectVelocity = %obj.getVelocity();
  357. %vector1 = VectorScale(%vector, %projectile.muzzleVelocity);
  358. %vector2 = VectorScale(%objectVelocity, %projectile.velInheritFactor);
  359. %velocity = VectorAdd(%vector1,%vector2);
  360. %x = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  361. %y = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  362. %z = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  363. %mat = MatrixCreateFromEuler(%x @ " " @ %y @ " " @ %z);
  364. %velocity = MatrixMulVector(%mat, %velocity);
  365.  
  366. %p = new (%this.projectileType)()
  367. {
  368. dataBlock = %projectile;
  369. initialVelocity = %velocity;
  370. initialPosition = %obj.getMuzzlePoint(%slot);
  371. sourceObject = %obj;
  372. sourceSlot = %slot;
  373. client = %obj.client;
  374. scale = "1.5 1.5 1.5";
  375. };
  376. MissionCleanup.add(%p);
  377. }
  378.  
  379. %obj.playThread(2, shiftRight);
  380. %obj.playThread(3, shiftLeft);
  381. serverPlay3d( heavyMachineGunFireSound, %obj.getHackPosition());
  382. }
  383.  
  384. function heavyMachineGunImage::onFire4( %this, %obj, %slot )
  385. {
  386. if(%obj.getDamagePercent() > 1.0)
  387. {
  388. return;
  389. }
  390.  
  391. %obj.toolMag[%obj.currTool] -= 1;
  392.  
  393. if(%obj.toolMag[%obj.currTool] < 1)
  394. {
  395. %obj.toolMag[%obj.currTool] = 0;
  396. %obj.setImageAmmo(0,0);
  397. }
  398. hl2DisplayAmmo(%this,%obj,%slot);
  399.  
  400. %projectile = %this.projectile;
  401. %spread = 0.0045;
  402. %shellcount = 1;
  403.  
  404. %fvec = %obj.getForwardVector();
  405. %fX = getWord(%fvec,0);
  406. %fY = getWord(%fvec,1);
  407.  
  408. %evec = %obj.getEyeVector();
  409. %eX = getWord(%evec,0);
  410. %eY = getWord(%evec,1);
  411. %eZ = getWord(%evec,2);
  412.  
  413. %eXY = mSqrt(%eX*%eX+%eY*%eY);
  414.  
  415. %aimVec = %fX*%eXY SPC %fY*%eXY SPC %eZ;
  416. %obj.setVelocity(VectorAdd(%obj.getVelocity(),VectorScale(%aimVec,"-0.5")));
  417. %obj.spawnExplosion(warRecoilProjectile,"0.75 0.75 0.75");
  418.  
  419. for(%shell=0; %shell<%shellcount; %shell++)
  420. {
  421. %vector = %obj.getMuzzleVector(%slot);
  422. %objectVelocity = %obj.getVelocity();
  423. %vector1 = VectorScale(%vector, %projectile.muzzleVelocity);
  424. %vector2 = VectorScale(%objectVelocity, %projectile.velInheritFactor);
  425. %velocity = VectorAdd(%vector1,%vector2);
  426. %x = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  427. %y = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  428. %z = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  429. %mat = MatrixCreateFromEuler(%x @ " " @ %y @ " " @ %z);
  430. %velocity = MatrixMulVector(%mat, %velocity);
  431.  
  432. %p = new (%this.projectileType)()
  433. {
  434. dataBlock = %projectile;
  435. initialVelocity = %velocity;
  436. initialPosition = %obj.getMuzzlePoint(%slot);
  437. sourceObject = %obj;
  438. sourceSlot = %slot;
  439. client = %obj.client;
  440. scale = "1.5 1.5 1.5";
  441. };
  442. MissionCleanup.add(%p);
  443. }
  444.  
  445. %obj.playThread(2, shiftRight);
  446. %obj.playThread(3, shiftLeft);
  447. serverPlay3d( heavyMachineGunFireSound, %obj.getHackPosition());
  448. }
  449.  
  450. function heavyMachineGunImage::onFire5( %this, %obj, %slot )
  451. {
  452. if(%obj.getDamagePercent() > 1.0)
  453. {
  454. return;
  455. }
  456.  
  457. %obj.toolMag[%obj.currTool] -= 1;
  458.  
  459. if(%obj.toolMag[%obj.currTool] < 1)
  460. {
  461. %obj.toolMag[%obj.currTool] = 0;
  462. %obj.setImageAmmo(0,0);
  463. }
  464. hl2DisplayAmmo(%this,%obj,%slot);
  465.  
  466. %projectile = %this.projectile;
  467. %spread = 0.0045;
  468. %shellcount = 1;
  469.  
  470. %fvec = %obj.getForwardVector();
  471. %fX = getWord(%fvec,0);
  472. %fY = getWord(%fvec,1);
  473.  
  474. %evec = %obj.getEyeVector();
  475. %eX = getWord(%evec,0);
  476. %eY = getWord(%evec,1);
  477. %eZ = getWord(%evec,2);
  478.  
  479. %eXY = mSqrt(%eX*%eX+%eY*%eY);
  480.  
  481. %aimVec = %fX*%eXY SPC %fY*%eXY SPC %eZ;
  482. %obj.setVelocity(VectorAdd(%obj.getVelocity(),VectorScale(%aimVec,"-0.5")));
  483. %obj.spawnExplosion(warRecoilProjectile,"0.75 0.75 0.75");
  484.  
  485. for(%shell=0; %shell<%shellcount; %shell++)
  486. {
  487. %vector = %obj.getMuzzleVector(%slot);
  488. %objectVelocity = %obj.getVelocity();
  489. %vector1 = VectorScale(%vector, %projectile.muzzleVelocity);
  490. %vector2 = VectorScale(%objectVelocity, %projectile.velInheritFactor);
  491. %velocity = VectorAdd(%vector1,%vector2);
  492. %x = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  493. %y = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  494. %z = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
  495. %mat = MatrixCreateFromEuler(%x @ " " @ %y @ " " @ %z);
  496. %velocity = MatrixMulVector(%mat, %velocity);
  497.  
  498. %p = new (%this.projectileType)()
  499. {
  500. dataBlock = %projectile;
  501. initialVelocity = %velocity;
  502. initialPosition = %obj.getMuzzlePoint(%slot);
  503. sourceObject = %obj;
  504. sourceSlot = %slot;
  505. client = %obj.client;
  506. scale = "1.5 1.5 1.5";
  507. };
  508. MissionCleanup.add(%p);
  509. }
  510.  
  511. %obj.playThread(2, shiftRight);
  512. %obj.playThread(3, shiftLeft);
  513. serverPlay3d( heavyMachineGunFireSound, %obj.getHackPosition());
  514. }
  515.  
  516. function heavyMachineGunProjectile::damage( %this, %obj, %col, %fade, %pos, %normal )
  517. {
  518. %damage = %this.directDamage;
  519. %headshot = matchBodyArea( getHitbox( %obj, %col, %pos ), $headTest );
  520.  
  521. if ( %headshot )
  522. {
  523. %damage *= %this.headshotMultiplier;
  524. }
  525.  
  526. %col.damage( %obj, %pos, %damage, %this.directDamageType );
  527. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement