#1
|
|||
|
|||
OnActorDead - Damage DS
SO ehre i am back to scripting after giving up to focus on studying.
im tryign to create a scrip who counts for point when a palne gets killed (for now). to start: Quote:
I really dony understand, how Damagerscore list works, so where i am requesting your aid. for now, my problems are: AI is not counted as destoyed, if i crash my plane is ok, but if an AI shoots me down it dobles the score ( im guessing its becosue im not specifin initiator or reciever of the damage. I based myself on the code From "Mid-july1940_v10" mission, who looks like: Quote:
so ... help? please? |
#2
|
|||
|
|||
Bump here. Can anyone explain damages score please?
Code removed by author
__________________
When one engine fails on a two engine bomber, you will always have enough power left to get to the scene of the crash. Get the latest COD Team Fusion patch info HERE Last edited by salmo; 10-18-2012 at 09:07 AM. |
#3
|
|||
|
|||
Add all Values in the damagerlist together, then you have the 100%. Then divide
part damagerscore / 100% Value = Percent |
#4
|
|||
|
|||
Quote:
Code removed by author
__________________
When one engine fails on a two engine bomber, you will always have enough power left to get to the scene of the crash. Get the latest COD Team Fusion patch info HERE Last edited by salmo; 10-18-2012 at 09:08 AM. |
#5
|
|||
|
|||
No nothing wrong, after this you have the 100% Value.
Example 4 damagersscores (12, 1, 16, 5) 12 + 1 + 16 + 5 = 34 to get the percentual part of a single damager 12/34 = 0,353 (35,3%) 1/34 = 0,029 (2,9%) 16/34 = 0,471 (47,1%) 5/34 = 0,147 (14,7%) controll: 0,353 + 0,029 + 0,471 + 0,147 = 1 So Damager 1 has made 35,3% of the damage, Damager 3 has done the most with 47,1%. |
#6
|
|||
|
|||
Agh! Got it now So does the raw sum total damages give any indication of relative "strength" between actors then. ie.
Actor 1 dies .... total damages = 10 Actor 2 dies .... total dmaages = 100 Actor1 is 1/10 as strong as actor 2?
__________________
When one engine fails on a two engine bomber, you will always have enough power left to get to the scene of the crash. Get the latest COD Team Fusion patch info HERE |
#7
|
|||
|
|||
no it's depend on the damager hits
from Battle Script / strategy.dll AddScoreToInitiator(AiActor actor, AiDamageInitiator initiator, double score): Code:
public int AddScoreToInitiator(AiActor actor, AiDamageInitiator initiator, double score) { DamagerScore item = new DamagerScore(initiator, score, base.Time.current()); int index = this.damList.victim.IndexOf(actor); if (index >= 0) { List<DamagerScore> list = this.damList.damagers[index]; int num2 = list.IndexOf(item); if (num2 >= 0) { DamagerScore local1 = list[num2]; local1.score += score; list[num2].time = base.Time.current(); return index; } list.Insert(0, item); return index; } this.damList.victim.Insert(0, actor); List<DamagerScore> list2 = new List<DamagerScore> { item }; this.damList.damagers.Insert(0, list2); return 0; } public override void OnActorDamaged(int missionNumber, string shortName, AiActor actor, AiDamageInitiator initiator, NamedDamageTypes damageType) { switch (damageType) { case NamedDamageTypes.ChunkSmallDamage: case NamedDamageTypes.PartSmallDamage: case NamedDamageTypes.WeaponSmallDamage: case NamedDamageTypes.EngineSmallDamage: case NamedDamageTypes.LifeKeeperPartSmallDamage: this.AddScoreToInitiator(actor, initiator, 0.1); break; case NamedDamageTypes.ChunkLargeDamage: case NamedDamageTypes.PartLargeDamage: case NamedDamageTypes.WeaponLargeDamage: case NamedDamageTypes.EngineLargeDamage: case NamedDamageTypes.LifeKeeperPartLargeDamage: this.AddScoreToInitiator(actor, initiator, 0.2); break; } foreach (AMission mission in base.missions) { if (mission.IsMissionListener(missionNumber)) { mission.OnActorDamaged(missionNumber, shortName, actor, initiator, damageType); } } } public override void OnActorDead(int missionNumber, string shortName, AiActor actor, AiDamageInitiator initiator) { if ((base.GamePlay.gpPlayer().Place() == actor) && base.GamePlay.gpIsServerSingle()) { base.GamePlay.gpHUDLogCenter("Press Esc to end mission."); } if (actor is AiPerson) { initiator = null; } int index = -1; if (initiator != null) { index = this.AddScoreToInitiator(actor, initiator, 0.5); } else { index = this.damList.victim.IndexOf(actor); } List<DamagerScore> damages = null; if (index >= 0) { damages = this.damList.damagers[index]; } else { damages = new List<DamagerScore>(); } foreach (AMission mission in base.missions) { if (mission.IsMissionListener(missionNumber)) { mission.OnActorDead(missionNumber, shortName, actor, damages); } } this.LogServer_ActorDead(missionNumber, shortName, actor, initiator); } public override void OnAircraftDamaged(int missionNumber, string shortName, AiAircraft aircraft, AiDamageInitiator initiator, NamedDamageTypes damageType) { base.OnAircraftDamaged(missionNumber, shortName, aircraft, initiator, damageType); this.AddScoreToInitiator(aircraft, initiator, 0.1); } public override void OnAircraftLimbDamaged(int missionNumber, string shortName, AiAircraft aircraft, AiLimbDamage limbDamage) { base.OnAircraftLimbDamaged(missionNumber, shortName, aircraft, limbDamage); this.AddScoreToInitiator(aircraft, limbDamage.Initiator, 0.2); } public override void OnPersonHealth(AiPerson person, AiDamageInitiator initiator, float deltaHealth) { this.AddScoreToInitiator(person, initiator, ((double) deltaHealth) / 255.0); base.OnPersonHealth(person, initiator, deltaHealth); } Last edited by FG28_Kodiak; 10-11-2012 at 06:03 AM. |
#8
|
|||
|
|||
OK. Thanks, Got the points allocation to work now. Much appreciated.
__________________
When one engine fails on a two engine bomber, you will always have enough power left to get to the scene of the crash. Get the latest COD Team Fusion patch info HERE |
|
|