| 
			| 
					
						| LeoPhone  
								Honoured Member  Posts: 0   | 
								| «  on: May 11, 2011, 07:02:29 am » |  | 
 
 This guide will teach you how to calculate the Damage Per Second of any weapon. Some DPS values can be found at http://dow2.info/coh/Zaxis/rifles/  & http://dow2.info/coh/Zaxis/mgs/  but this is largely incomplete.Step 1 Get familiar with Corsix Mod Studio. You can do so with this guide:http://forums.europeinruins.com/index.php?topic=14995Step 2 Go to the bottom of this post and copy the code. next, open the folder called "weapon"  in "attrib/attrib" , go some folder levels deeper and right click the folder you want to know the weapon DPS of. Now click on "Run macro over RGDs in this folder" . Delete all the text in the window that shows up and paste the macro in it. Click on "Run Macro"  to see the results!Step 3 The macros dont take the target tables into account so this you will have to do manually. open the rgd of the weapon you are calculating and go toGamedata/weapon_bag/target_table find the armor type you are interested in and take into account the modifiers that apply.ZAxis's Rifle & Machine Gun DPS Formula function each_file(rgd)if rgd.GameData.weapon_bag then
 local weapon = rgd.GameData.weapon_bag
 
 local damage = (weapon.damage.min+weapon.damage.max)/2
 local reloadFrequency = (weapon.reload.frequency.max+weapon.reload.frequency.min)/2
 local reloadDuration = (weapon.reload.duration.max+weapon.reload.duration.min)/2+weapon.fire.wind_up+weapon.fire.wind_down
 local cooldownShort = (weapon.cooldown.duration.max+weapon.cooldown.duration.min)/2*weapon.cooldown.duration_multiplier.short
 local cooldownMedium = (weapon.cooldown.duration.max+weapon.cooldown.duration.min)/2*weapon.cooldown.duration_multiplier.medium
 local cooldownLong = (weapon.cooldown.duration.max+weapon.cooldown.duration.min)/2*weapon.cooldown.duration_multiplier.long
 local fireAimTimeShort = (weapon.aim.fire_aim_time.max+weapon.aim.fire_aim_time.min)/2*weapon.aim.fire_aim_time_multiplier.short
 local fireAimTimeMedium = (weapon.aim.fire_aim_time.max+weapon.aim.fire_aim_time.min)/2*weapon.aim.fire_aim_time_multiplier.medium
 local fireAimTimeLong = (weapon.aim.fire_aim_time.max+weapon.aim.fire_aim_time.min)/2*weapon.aim.fire_aim_time_multiplier.long
 local readyAimTime = (weapon.aim.ready_aim_time.max+weapon.aim.ready_aim_time.min)/2
 local WindUpWindDown = weapon.fire.wind_up+weapon.fire.wind_down
 local ZaxisDPSShort
 local ZaxisDPSMedium
 local ZaxisDPSLong
 
 if weapon.burst.can_burst == true then
 local burstDuration = (weapon.burst.duration.max+weapon.burst.duration.min)/2
 local rateOfFire = (weapon.burst.rate_of_fire.max+weapon.burst.rate_of_fire.min)/2
 
 ZaxisDPSShort = (rateOfFire * burstDuration * (reloadFrequency + 1) * weapon.accuracy.short * damage) / (readyAimTime + (fireAimTimeShort + cooldownShort + WindUpWindDown) * reloadFrequency + reloadDuration + burstDuration * (reloadFrequency + 1))
 ZaxisDPSMedium = (rateOfFire * burstDuration * (reloadFrequency + 1) * weapon.accuracy.medium * damage) / (readyAimTime + (fireAimTimeMedium + cooldownMedium + WindUpWindDown) * reloadFrequency + reloadDuration + burstDuration * (reloadFrequency + 1))
 ZaxisDPSLong = (rateOfFire * burstDuration * (reloadFrequency + 1) * weapon.accuracy.long * damage) / (readyAimTime + (fireAimTimeLong + cooldownLong + WindUpWindDown) * reloadFrequency + reloadDuration + burstDuration * (reloadFrequency + 1))
 else
 ZaxisDPSShort = ((reloadFrequency + 1) * weapon.accuracy.short * damage) / (readyAimTime + (fireAimTimeShort + cooldownShort + WindUpWindDown) * reloadFrequency + reloadDuration)
 ZaxisDPSMedium = ((reloadFrequency + 1) * weapon.accuracy.medium * damage) / (readyAimTime + (fireAimTimeMedium + cooldownMedium + WindUpWindDown) * reloadFrequency + reloadDuration)
 ZaxisDPSLong = ((reloadFrequency + 1) * weapon.accuracy.long * damage) / (readyAimTime + (fireAimTimeLong + cooldownLong + WindUpWindDown) * reloadFrequency + reloadDuration)
 end
 
 print("# "..rgd.name.."")
 print("  | Zaxis S DPS = "..(math.floor(ZaxisDPSShort*100+0.005)/100))
 print("  | Zaxis M DPS = "..(math.floor(ZaxisDPSMedium*100+0.005)/100))
 print("  | Zaxis L DPS = "..(math.floor(ZaxisDPSLong*100+0.005)/100))
 print("")
 end
 end
References:http://forums.relicnews.com/showthread.php?259362-Tool-Macro-Weapon-Damage-Per-Secondhttp://dow2.info/coh/Zaxis/ |  
						| 
								|  |  
								| « Last Edit: April 13, 2012, 06:26:44 pm by LeoPhone » |  Logged | 
 |  |  | 
	| 
			| 
					
						| TheIcelandicManiac  
								Resident forum troll. Fucked unkn0wns mom  Posts: 6294   | 
								| « Reply #1 on: May 11, 2011, 09:46:47 am » |  | 
 
 Sweet thanks for this.
 PS: stiky this thread
 |  
						| 
								|  |  
								|  |  Logged | 
 
 Soon™
 gj icelandic i am proud of u   Sometimes its like PQ doesnt carrot all.Work Harder
 |  |  | 
	| 
			| 
					
						| LeoPhone  
								Honoured Member  Posts: 0   | 
								| « Reply #2 on: May 11, 2011, 09:57:10 am » |  | 
 
 hmm, looked a bit into what the macro is actually doing now and it kind of differs from http://dow2.info/coh/Zaxis/ I took the formula here http://dow2.info/coh/Zaxis/dps.html  and put it in the macro. It calculates the m1 garand and m1 carbine correctly but the axis rifles dps are different. function each_file(rgd)if rgd.GameData.weapon_bag then
 local weapon = rgd.GameData.weapon_bag
 
 local damage = (weapon.damage.min+weapon.damage.max)/2
 local reloadFrequency = (weapon.reload.frequency.max+weapon.reload.frequency.min)/2
 local reloadDuration = (weapon.reload.duration.max+weapon.reload.duration.min)/2
 local cooldownmedium = (weapon.cooldown.duration.max+weapon.cooldown.duration.min)/2*weapon.cooldown.duration_multiplier.medium
 local fireaimtimemedium = (weapon.aim.fire_aim_time.max+weapon.aim.fire_aim_time.min)/2*weapon.aim.fire_aim_time_multiplier.medium
 local readyaimtime = (weapon.aim.ready_aim_time.max+weapon.aim.ready_aim_time.min)/2
 
 local shotsFired
 if weapon.burst.can_burst == true then
 local burstDuration = (weapon.burst.duration.max+weapon.burst.duration.min)/2
 local rateOfFire = (weapon.burst.rate_of_fire.max+weapon.burst.rate_of_fire.min)/2
 
 local burstsFired = 1/(burstDuration*reloadFrequency+reloadDuration)
 shotsFired = rateOfFire*burstsFired
 else
 shotsFired = 1/(reloadFrequency+reloadDuration)
 end
 local dps = shotsFired*damage
 local Zaxisdps = ((reloadFrequency + 1) * weapon.accuracy.medium * damage) / (readyaimtime + (fireaimtimemedium + cooldownmedium) * reloadFrequency + reloadDuration)
 
 print("# "..rgd.name..": DPS="..(math.floor((dps+0.005)*100)/100).." Per Hit="..damage)
 print("  | distant="..(math.floor(weapon.accuracy.distant*dps*100+0.005)/100))
 print("  | long="..(math.floor(weapon.accuracy.long*dps*100+0.005)/100))
 print("  | medium="..(math.floor(weapon.accuracy.medium*dps*100+0.005)/100))
 print("  | short="..(math.floor(weapon.accuracy.short*dps*100+0.005)/100))
 print("  | ZaxisDPS="..(math.floor(Zaxisdps*100+0.005)/100))
 print("")
 end
 end
I summon a Mysthalin! |  
						| 
								|  |  
								|  |  Logged | 
 |  |  | 
	| 
			| 
					
						| Mysthalin  
								Tired King of Stats  Posts: 9028   | 
								| « Reply #3 on: May 11, 2011, 10:02:24 am » |  | 
 
 Why the fuck are they dividing everything by 2 in that code? |  
						| 
								|  |  
								|  |  Logged | 
 
 |  |  | 
	| 
			| 
					
						| LeoPhone  
								Honoured Member  Posts: 0   | 
								| « Reply #4 on: May 11, 2011, 10:08:17 am » |  | 
 
 its x.max + x.min / 2 to get average |  
						| 
								|  |  
								|  |  Logged | 
 |  |  | 
	| 
			| 
					
						| Mysthalin  
								Tired King of Stats  Posts: 9028   | 
								| « Reply #5 on: May 11, 2011, 11:16:00 am » |  | 
 
 Ah right.
 *takes off vodka goggles*
 
 Right, the reason why we get different results on the axis rifles (shouldn't be too different from the ones calculated in zaxis, really) is because we have switched their wind-down time into cooldown (applying appropriate cooldowns to ensure their DPS remains largely unchanged).
 So there might be a slight change in the actual DPS of axis rifles - but it shouldn't be anything beyond a 5% deviation, afaik.
 |  
						| 
								|  |  
								|  |  Logged | 
 |  |  | 
	| 
			| 
					
						| LeoPhone  
								Honoured Member  Posts: 0   | 
								| « Reply #6 on: May 11, 2011, 11:27:28 am » |  | 
 
 It calculates using the Zaxis forumla. garands and carbines give correct result (1.79 and 1.71, medium range) but stormtrooper k98 gives 5.2 and volks k98 2.93 in http://dow2.info/coh/Zaxis/rifles/  the results are 3.88 and 2.19 |  
						| 
								|  |  
								|  |  Logged | 
 |  |  | 
	| 
			| 
					
						| Mysthalin  
								Tired King of Stats  Posts: 9028   | 
								| « Reply #7 on: May 16, 2011, 03:15:43 pm » |  | 
 
 Sigh... I'll look through it once i'm done with my essays, end of the week maybe. |  
						| 
								|  |  
								|  |  Logged | 
 |  |  | 
	| 
			| 
					
						| 3rdCondor  
								Donator  Posts: 1536   | 
								| « Reply #8 on: May 16, 2011, 08:39:07 pm » |  | 
 
 Why would you take off your vodka goggles? |  
						| 
								|  |  
								|  |  Logged | 
 
 No tits, but i will bake a cake then eat it in honour of Sir Condor The 3rd
 fuck the pgren rifle, fucking dogshit weapon
 My beautiful black pussy won
 |  |  | 
	| 
			| 
					
						| LeoPhone  
								Honoured Member  Posts: 0   | 
								| « Reply #9 on: May 16, 2011, 11:45:42 pm » |  | 
 
 Help us Mythalin Kenobi, you are our only hope.    |  
						| 
								|  |  
								|  |  Logged | 
 |  |  | 
	| 
			| 
					
						| tank130  
								Sugar Daddy  Posts: 8890   | 
								| « Reply #10 on: May 17, 2011, 07:22:22 am » |  | 
 
 Help us Mythalin Kenobi, you are our only hope.   LOL - good one Leo |  
						| 
								|  |  
								|  |  Logged | 
 
  Geez, while Wind was banned I forgot that he is, in fact, totally insufferable
 I'm not going to lie Tig, 9/10 times you open your mouth, I'm overwhelmed with the urge to put my foot in it.
 |  |  | 
	| 
			| 
					
						| Mysthalin  
								Tired King of Stats  Posts: 9028   | 
								| « Reply #11 on: May 17, 2011, 08:09:05 am » |  | 
 
 Yeah, I know what's up. You're not accounting for the 0.5 second wind-down after each shot that you should be in your formula.
 Yeah, it exists. Go check it yourself.
 |  
						| 
								|  |  
								|  |  Logged | 
 |  |  | 
	| 
			| 
					
						| LeoPhone  
								Honoured Member  Posts: 0   | 
								| « Reply #12 on: May 17, 2011, 08:49:48 am » |  | 
 
 Ok. getting more accurate readings now.will post macros soon.
 
 kar98(V)
 cohstats: 2.19
 corsix macro (EIR): 2.31
 corsix macro (VCoH): 2.19
 
 Kar98(G/S)
 cohstats - 3.88
 corsix macro (EIR) - 4.11
 corsix macro (VCoH) - 3.88
 
 g43
 cohstats - 4.88
 corsix macro (EIR) - 4.44
 corsix macro (VCoH) - 4.17
 
 Kar98(P)
 cohstats - 2.63
 corsix macro (EIR) - 2.77
 corsix macro (VCoH) - 2.63
 
 Lee enfield
 cohstats - 1.92
 corsix macro (EIR) 1.89
 corsix macro (VCoH) 1.84
 
 
 I guess we can live with it but what I don't get is why the EIR values differ from the vcoh values. and the g43 is way off.
 |  
						| 
								|  |  
								|  |  Logged | 
 |  |  | 
	| 
			| 
					
						| Mysthalin  
								Tired King of Stats  Posts: 9028   | 
								| « Reply #13 on: May 17, 2011, 08:57:32 am » |  | 
 
 EiR values on the K98s may differ due to gamesguy being a twat in when he was calculating the cooldown multipliers when transitioning the K98s from being wind-down based to being cooldown based.
 The G43s massive difference is due to us buffing the lower and upper cooldown limits.
 |  
						| 
								|  |  
								|  |  Logged | 
 |  |  | 
	| 
			| 
					
						| LeoPhone  
								Honoured Member  Posts: 0   | 
								| « Reply #14 on: May 17, 2011, 09:48:04 am » |  | 
 
 updated macros.
 first macro now calculates Zaxis DPS at short, medium and long range.
 works for both rifles and machine guns.
 |  
						| 
								|  |  
								|  |  Logged | 
 |  |  | 
	| 
			| 
					
						| Firesparks  
								Honoured Member  Posts: 1209  
								 | 
								| « Reply #15 on: July 11, 2011, 09:31:54 pm » |  | 
 
 does your dps calculator take into account wind down?  |  
						| 
								|  |  
								|  |  Logged | 
 
  With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea. It is hard to be sure where they are going to land, and it could be dangerous sitting under them as they fly overhead. -- RFC 1925 |  |  | 
	| 
			| 
					
						| LeoPhone  
								Honoured Member  Posts: 0   | 
								| « Reply #16 on: July 12, 2011, 09:57:04 am » |  | 
 
 you can read the formula yourself?
 yes.
 |  
						| 
								|  |  
								|  |  Logged | 
 |  |  | 
	|  |