Need More Fixes ?
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
Hm, I think I loved Bots enough. I was wandered if monsters can travel opening all doors (except mission objectives) to travel from a room to another or even to use small lifts. Yep is a small challenge but is not so harmfull, a mountain of maps doesn't have paths (chickens) so I have no reason to be woried about their ability to handle doors, .
For maps pathed ? No problem. Just run ... is not a stupid race this MH (as a few "players" are thinking) ? If end is not active by default might be a charm looking at you hunted well, . At least I'm not woried because I know how are acting monsters - you should learn fighting as well not laming, and can be helpfull and interesting. Also playing as a team is helping a lot.
For maps pathed ? No problem. Just run ... is not a stupid race this MH (as a few "players" are thinking) ? If end is not active by default might be a charm looking at you hunted well, . At least I'm not woried because I know how are acting monsters - you should learn fighting as well not laming, and can be helpfull and interesting. Also playing as a team is helping a lot.
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
Another subject might be frustration by other player.
Looking around to a takedamage function, we can debate a different formula:
Now let's translate what is about.
We have a victim and an instigator. If victim is not the same with instigator he won't move too much (we have default friendly fire without to alter game-rules). If instigator is closer to damage area will suffer based on his/her/it's own action. Which means even if an aggressive Bot is using brute force will be punished without to throw player in the sky but might throw other Bot - die together because you help each-other not me when I call help. In fact, laming around developing frustration for others is punished very nice. I did not find a good antiboost as I wanted to be. More stuff has nothing for Kira, is time to deal with hitsounds as well, .
Let me see if is not recommended even a small taunt from victim informing instigator about his non-teamplay actions: Loser, etc. But might be spam, so let's leave these alones.
Looking around to a takedamage function, we can debate a different formula:
Code: Select all
if(bUseAntiBoost)
{
if(Victim != None && InstigatedBy != None)
{
if ((InstigatedBy.IsA('PlayerPawn') && Victim.IsA('PlayerPawn') && Victim != InstigatedBy) || (InstigatedBy.IsA('Bot') && Victim.IsA('PlayerPawn')))
{
Momentum.z *= 0.1;
Momentum.x *= 0.1;
Momentum.y *= 0.1;
if (string(DamageType)=="RedeemerDeath")
{
Victim.Velocity = Victim.Velocity * 0.05;
}
}
}
}
We have a victim and an instigator. If victim is not the same with instigator he won't move too much (we have default friendly fire without to alter game-rules). If instigator is closer to damage area will suffer based on his/her/it's own action. Which means even if an aggressive Bot is using brute force will be punished without to throw player in the sky but might throw other Bot - die together because you help each-other not me when I call help. In fact, laming around developing frustration for others is punished very nice. I did not find a good antiboost as I wanted to be. More stuff has nothing for Kira, is time to deal with hitsounds as well, .
Let me see if is not recommended even a small taunt from victim informing instigator about his non-teamplay actions: Loser, etc. But might be spam, so let's leave these alones.
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
I'm not crying for default MH game when we play it local.
happening right when we start the party. Nice start... grrr...
After some debates I have reworked a few codes (these errors not exist in Server) but are so visible playing local. Somewhere a few errors are lost, server console looking like a clean crystal. My question: These errors blocked somewhere won't show some teeths later like a mad dog ? Maybe yes. Remaining to solve:
Well, counting number of such errors I observed something... they match the skaarjs number from maps. Now I have to rework that function and to import it in controller to override default stupid bIsPlayer call which is triggered by monster and it doesn't have replication like players, urghh - and others found this ideea for other weapon-holders which are coded worse than Skaarj, LOL...
Code: Select all
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function MonsterHunt.MonsterHunt.AddToTeam:0150) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function MonsterHunt.MonsterHunt.AddToTeam:0185) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function MonsterHunt.MonsterHunt.AddToTeam:0150) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function MonsterHunt.MonsterHunt.AddToTeam:0185) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function MonsterHunt.MonsterHunt.AddToTeam:0150) Accessed None
....
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.TeamGamePlus.ReduceDamage:007D) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.TeamGamePlus.ReduceDamage:0095) Accessed None
ScriptWarning: UTStatLogFile MH-BelowTheCaves.UTStatLogFile0 (Function Engine.StatLog.LogPickup:005F) Accessed None
ScriptWarning: UTStatLogFile MH-BelowTheCaves.UTStatLogFile0 (Function Engine.StatLog.LogPickup:005F) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.TeamGamePlus.ReduceDamage:007D) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.TeamGamePlus.ReduceDamage:0095) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.TeamGamePlus.ReduceDamage:007D) Accessed None
After some debates I have reworked a few codes (these errors not exist in Server) but are so visible playing local. Somewhere a few errors are lost, server console looking like a clean crystal. My question: These errors blocked somewhere won't show some teeths later like a mad dog ? Maybe yes. Remaining to solve:
Code: Select all
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
ScriptWarning: MonsterHunt MH-BelowTheCaves.MonsterHunt0 (Function Botpack.DeathMatchPlus.ChangeName:0085) Accessed None
Log: Possessed PlayerPawn: TMale1 MH-BelowTheCaves.TMale3
Last edited by Nelsona on Sun Dec 02, 2012 5:57 pm, edited 1 time in total.
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
The function AddToTeam was reworked and now is silent in both instances ON-LINE and OFF-LINE.
New option
New option
Code: Select all
function AddToTeam( int num, Pawn Other ) //Yea, exactly to Team (not outside :D)
{
local teaminfo aTeam;
local Pawn P;
local bool bSuccess;
local string SkinName, FaceName;
num = 0;
if ( Other == None )
{
log("Added none to team!!!");
return;
}
if (MaxTeams == 2 || MaxAllowedTeams == 2) //So what ? Let me know if might be a problem ...
if ( Other != None )
{
aTeam = Teams[num];
aTeam.Size++;
Other.PlayerReplicationInfo.Team = num;
Other.PlayerReplicationInfo.TeamName = aTeam.TeamName;
bSuccess = False;
if ( Other.IsA('PlayerPawn') && !Other.IsA('ScriptedPawn'))
{
Other.PlayerReplicationInfo.TeamID = 0; //So, team assigned, right ?
// PlayerPawn(Other).ClientChangeTeam(Other.PlayerReplicationInfo.Team); I cannot see a reason to force client to step in red, this will happen anyway
}
else if ( Other.IsA('ScriptedPawn') )
ScriptedPawn(Other).TeamID = 1; //I think is better in AlwaysKeep :D
while ( !bSuccess )
{
bSuccess = true;
for ( P=Level.PawnList; P!=None; P=P.nextPawn )
if ( P.bIsPlayer && (P != Other) && !P.IsA('ScriptedPawn') //LOL, never deal with monsters
&& (P.PlayerReplicationInfo.Team == Other.PlayerReplicationInfo.Team)
&& (P.PlayerReplicationInfo.TeamId == Other.PlayerReplicationInfo.TeamId) )
{
Other.PlayerReplicationInfo.TeamID++;
bSuccess = False;
}
}
if (MonsterReplicationInfo2(GameReplicationInfo).bUseLive)
Other.PlayerReplicationInfo.Deaths = MonsterReplicationInfo2(GameReplicationInfo).Live;
if (MonsterReplicationInfo2(GameReplicationInfo).bUseTeamSkin) //Bla, bla something is missing here anyway
{
Other.static.GetMultiSkin(Other, SkinName, FaceName); //Was always nasty in Network
Other.static.SetMultiSkin(Other, SkinName, FaceName, num);
}
}
}
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
Accesed nones from ChangeName were killed, LOL...
I think simple is faster than doing PawnList (including monsters). If I'll be disturbed by changing names during spectating I'll setup restriction. For the moment I'm not using spectator slots because is not a movie, is a game .
Done ? Well we have cross-roads between Skaarjs and Bots.
Next move, errors killed by me...
Now I can see silent night in console (jobs executed for local environment).
Code: Select all
function ChangeName(Pawn Other, string S, bool bNameChange) //This is called returning some errors... Fixed ?
{
S = left(S,24);
if (Other.PlayerReplicationInfo.PlayerName~=S)
return;
Super(GameInfo).ChangeName(Other, S, bNameChange); //Let GameInfo to deal with this chapter
}
Done ? Well we have cross-roads between Skaarjs and Bots.
Code: Select all
(Function Botpack.TeamGamePlus.SetBotOrders:018C) Accessed None
(Function Botpack.TeamGamePlus.SetBotOrders:018C) Accessed None
(Function Botpack.TeamGamePlus.SetBotOrders:018C) Accessed None
Code: Select all
function SetBotOrders(Bot NewBot) //This is called as well returning errors - Fixed ?
{
local Pawn P, L;
local int num, total;
// only follow players, if there are any
if ( (NumSupportingPlayer == 0)
|| (NumSupportingPlayer < Teams[NewBot.PlayerReplicationInfo.Team].Size/2 - 1) )
{
For ( P=Level.PawnList; P!=None; P= P.NextPawn )
{
if ( P.IsA('ScriptedPawn') ) //Keep going without this ANIMAL
continue;
if ( P.IsA('PlayerPawn') && (P.PlayerReplicationInfo.Team == NewBot.PlayerReplicationInfo.Team)
&& !P.IsA('Spectator'))
{
num++;
if ( (L == None || L.IsA('ScriptedPawn')) || (FRand() < 1.0/float(num)) ) //Next exception...
L = P; //Modify if null or is monster
}
}
if ( L != None )
{
NumSupportingPlayer++;
NewBot.SetOrders('Freelance',None,True); //Not Follow, move out of here
return;
}
}
num = 0;
For ( P=Level.PawnList; P!=None; P= P.NextPawn )
{
if ( P.IsA('ScriptedPawn') ) //Keep going without this
continue;
if ( P.bIsPlayer && (P.PlayerReplicationInfo.Team == NewBot.PlayerReplicationInfo.Team) )
{
total++;
if ( (P != NewBot) && P.IsA('Bot') && (Bot(P).Orders == 'Attack') ) //Engage attack for this one
{
num++;
if ( (L == None || L.IsA('ScriptedPawn')) || (FRand() < 1/float(num)) ) //Repeat, asses other pawn if monster or none... craps eliminated.
L = P; }
}
}
if ( (L != None) && (FRand() < float(num)/float(total)) )
{
NewBot.SetOrders('Freelance',None,true); //Stop bugging me with follow, move on...
return;
}
NewBot.SetOrders('Freelance', None, true); //Attack might bug here - no relevant target just a stupid keypoint :|
}
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
Other rarely but with chances to happen:
In maps where Skaarjs are spawning a lot...
Continuing checks...
Code: Select all
function CheckEndGame() //If a dude is losing lives will be removed from party, too bad
{
local Pawn PawnLink;
// local int StillPlaying; useless copied from Domination - Nice codes soup
// local bool bStillHuman;
local bot B, D;
if ( bGameEnded )
return;
LivePpl = 0;
PlainPpl = 0;
for ( PawnLink=Level.PawnList; PawnLink!=None; PawnLink=PawnLink.nextPawn )
{
if (PawnLink.IsA('ScriptedPawn')) //Except these, pls...
continue;
if ( PawnLink.bIsPlayer)
{
if ( ( PawnLink.PlayerReplicationInfo.Deaths >= 1 ) &&
!PawnLink.PlayerReplicationInfo.bIsSpectator )
LivePpl ++;
if ( PawnLink.IsA('PlayerPawn') &&
(PawnLink.PlayerReplicationInfo.Deaths >= 1) )
PlainPpl ++;
}
}
if ( LivePpl < 1 )
EndGame("No Hunters");
else if ( PlainPpl < 1 && LivePpl > 0 ) //Only if human(s) missing and is still somebody here.
{
for ( PawnLink=Level.PawnList; PawnLink!=None; PawnLink=PawnLink.NextPawn )
{
B = Bot(PawnLink);
if ( (B != None) && (B.Health > 0) )
B.SetOrders('Attack',None,true);
}
}
}
Code: Select all
function int ReduceDamage(int Damage, name DamageType, pawn injured, pawn instigatedBy)
{
Damage = Super(DeathMatchPlus).ReduceDamage(Damage, DamageType, injured, instigatedBy);
if ( instigatedBy == None )
return Damage;
if (instigatedBy != injured)
{
if (injured.bIsPlayer && !injured.IsA('ScriptedPawn') && instigatedby.IsA('ScriptedPawn'))
return (Damage*instigatedby.DamageScaling);
else if (injured.IsA('ScriptedPawn') && !instigatedby.IsA('Scriptedpawn'))
return (Damage*instigatedby.DamageScaling);
else if (injured.IsA('ScriptedPawn') && instigatedby.IsA('ScriptedPawn'))
return Damage; //manage later other things with TakeDamage
else if ( injured.bIsPlayer && instigatedby.bIsplayer && !injured.IsA('ScriptedPawn') && !instigatedby.IsA('ScriptedPawn'))
{
if ( injured.IsA('Bot'))
Bot(Injured).YellAt(instigatedBy);
return (Damage * FriendlyFireScale);
}
else return Damage; //other instances are bad anyway;
}
else
return Damage;
}
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
Personal observation (I'm sorry if is a bit off-topic ):
Now I can see very very well why in default INI we have bNoMonsters=True... LOL, some guys weren't able to deal with their own stuff. Or grandmother started the soup and grandfather continued this soup following steak rules , both of them being a half blind .
Off-Topic ended. Back in subject.
Now I have to check each function what is doing or is not doing, and if it need to do something for me (even for others).
Now I can see very very well why in default INI we have bNoMonsters=True... LOL, some guys weren't able to deal with their own stuff. Or grandmother started the soup and grandfather continued this soup following steak rules , both of them being a half blind .
Off-Topic ended. Back in subject.
Now I have to check each function what is doing or is not doing, and if it need to do something for me (even for others).
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
In chapter values, settings, distances, a guy asked me how I can do a bunch of tests. I'm doing only a few tests but they can be enough relevant. Assuming you want to see a very dangerous monster in a map, my suggestion is to learn some A.I. or else you just mess up as shown in these images:
Later: It seems finally to see me and to try some combat under 3500 UU,
You don't want to see other settings and orders added ...
Now I have to stop some "ideeas" because are just forcing engine useless without to return something cool.
Even is boosted by mod to have 5000 SightRadius he cannot see me yet and Engine is assuming I cannot see him (engine maybe is retard this time, LOL) I'm at 4480 much lower than 5000 and I cannot see anything dangerous yet.Later: It seems finally to see me and to try some combat under 3500 UU,
You don't want to see other settings and orders added ...
Now I have to stop some "ideeas" because are just forcing engine useless without to return something cool.
You do not have the required permissions to view the files attached to this post.
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
Next subject... um... might be linked better to mapping... or can be added in new game-type. Let me present something:
Let's talk less even this code is long...
Is about a map very meant for servers with 32 slots having a bunch of player starts placed at begining. Correct ?
NOPE ! Not even a bit !
Without a custom MH controller any player joined will find a random PlayerStart from a list. How many ? 16, read again.
Adding 24 or 30 is complete useless. Default routines are looking for an empty place decreasing order. By example might start from PlayerStart 15 continuing until 0, yeah will be better to keep notice about "new playerstarts" and how we adding them in map - exactly in reverse. This subject was debated in other old forums but seems to be for nothing - lazy people aren't bother to search in forums different things. Let's clarify this subject then.
Previous function can be added simply modifying 16 with 32 and we can be GOTY ready. Right ? Maybe... yes. For the moment is just this default, not very fixable in default MH.
Do I need support for GOTY with more players at least for map randomizing spawning if players aren't so many now days, in a team, all of them can spawn in the same time (in theory or in reality - some server I think needs this) ? Even some maps are brutalizing the brain of beautifull player with small rooms and others with frames lost in huge rooms for non-hunters, we have to be ready for everything or simply we can ignore spawning an entire army.
Code: Select all
function NavigationPoint FindPlayerStart( Pawn Player, optional byte InTeam, optional string incomingName )
{
local PlayerStart Dest, Candidate[16], Best;
local float Score[16], BestScore, NextDist;
local pawn OtherPlayer;
local int i, num;
local Teleporter Tel;
local NavigationPoint N;
local byte Team;
if ( bStartMatch && (Player != None) && Player.IsA('TournamentPlayer')
&& (Level.NetMode == NM_Standalone)
&& (TournamentPlayer(Player).StartSpot != None) )
return TournamentPlayer(Player).StartSpot;
if ( (Player != None) && (Player.PlayerReplicationInfo != None) )
Team = Player.PlayerReplicationInfo.Team;
else
Team = InTeam;
if( incomingName!="" )
foreach AllActors( class 'Teleporter', Tel )
if( string(Tel.Tag)~=incomingName )
return Tel;
if ( Team == 255 )
Team = 0;
//choose candidates
for ( N=Level.NavigationPointList; N!=None; N=N.nextNavigationPoint )
{
Dest = PlayerStart(N);
if ( (Dest != None) && Dest.bEnabled
&& (!bSpawnInTeamArea || (Team == Dest.TeamNumber)) )
{
if (num<16)
Candidate[num] = Dest;
else if (Rand(num) < 16)
Candidate[Rand(16)] = Dest;
num++;
}
}
if (num == 0 )
{
log("Didn't find any player starts in list for team"@Team@"!!!");
foreach AllActors( class'PlayerStart', Dest )
{
if (num<16)
Candidate[num] = Dest;
else if (Rand(num) < 16)
Candidate[Rand(16)] = Dest;
num++;
}
if ( num == 0 )
return None;
}
if (num>16)
num = 16;
//assess candidates
for (i=0;i<num;i++)
{
if ( Candidate[i] == LastStartSpot )
Score[i] = -6000.0;
else
Score[i] = 4000 * FRand(); //randomize
}
for ( OtherPlayer=Level.PawnList; OtherPlayer!=None; OtherPlayer=OtherPlayer.NextPawn)
if ( OtherPlayer.bIsPlayer && (OtherPlayer.Health > 0) && !OtherPlayer.IsA('Spectator') )
for (i=0; i<num; i++)
if ( OtherPlayer.Region.Zone == Candidate[i].Region.Zone )
{
Score[i] -= 1500;
NextDist = VSize(OtherPlayer.Location - Candidate[i].Location);
if (NextDist < 2 * (CollisionRadius + CollisionHeight))
Score[i] -= 1000000.0;
else if ( (NextDist < 2000) && (OtherPlayer.PlayerReplicationInfo.Team != Team)
&& FastTrace(Candidate[i].Location, OtherPlayer.Location) )
Score[i] -= (10000.0 - NextDist);
}
BestScore = Score[0];
Best = Candidate[0];
for (i=1; i<num; i++)
if (Score[i] > BestScore)
{
BestScore = Score[i];
Best = Candidate[i];
}
LastStartSpot = Best;
return Best;
}
Is about a map very meant for servers with 32 slots having a bunch of player starts placed at begining. Correct ?
NOPE ! Not even a bit !
Without a custom MH controller any player joined will find a random PlayerStart from a list. How many ? 16, read again.
Adding 24 or 30 is complete useless. Default routines are looking for an empty place decreasing order. By example might start from PlayerStart 15 continuing until 0, yeah will be better to keep notice about "new playerstarts" and how we adding them in map - exactly in reverse. This subject was debated in other old forums but seems to be for nothing - lazy people aren't bother to search in forums different things. Let's clarify this subject then.
Previous function can be added simply modifying 16 with 32 and we can be GOTY ready. Right ? Maybe... yes. For the moment is just this default, not very fixable in default MH.
Do I need support for GOTY with more players at least for map randomizing spawning if players aren't so many now days, in a team, all of them can spawn in the same time (in theory or in reality - some server I think needs this) ? Even some maps are brutalizing the brain of beautifull player with small rooms and others with frames lost in huge rooms for non-hunters, we have to be ready for everything or simply we can ignore spawning an entire army.
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
EvilGrins asked Ferali about some pawns to be used as monsters. If is a good ideea or not I think I have to prepare new A.I... Controller being done (I guess) I just told a small story at monsters. They are nice usually - human player is the only enemy native possible (other recoded classes might be more aggressive not defaults), even aren't instructed to hunt FlockPawns, TeamCannons (other abstract of these "cool pawns") and so on. If monsters are hunted by different pawns (even Biterfishies ?), they will respond at damage with hate, once hated a pawn is a matter of seconds until will be brutalized by original monsters. And that's it. Now I'm waiting to see "maps" because I'm interested in testing.
Firsts personal tests were succesfull. Skaarj spawned over Cannons touching them triggered their interest to open fire. In less than a second Skaarj fought back stoping cannon. Later he even attacked Mercs (those special Mercenaries from MH-Lost-Souls) because Mercs weren't glad about Skaarj presence. Was a prety cool battle.
Firsts personal tests were succesfull. Skaarj spawned over Cannons touching them triggered their interest to open fire. In less than a second Skaarj fought back stoping cannon. Later he even attacked Mercs (those special Mercenaries from MH-Lost-Souls) because Mercs weren't glad about Skaarj presence. Was a prety cool battle.
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
Continuing more testing monsters and less monsters. I think now I know why game might be completely stucked (happens rarely but there are such chances).
Default monster will calculate Strength VS his enemy based on weapon's rating holded by enemy, intelligence, health. When this computing result will attempt to involve unexistent values from other pawns undeclared anywhere, he even will refuse to believe that was killed stucking something in engine. If you are panicated bind a key for TaskManager and have fun with that, .
Also I have to scan in hoping to catch other interesting bunch of errors appeared from nowhere in other test. Those Mercs suddenly triggered accesed nones at computing RelativeStrenght (just copied codes from default monster and nothing fixed, LOL - SprayTarget - accesed none, etc.), maybe they discovered a Skaarj dying killed by a cannon and they were triggered in attack to hunt a dead body, anyway I'll check what kind of errors might occur when is used a pawns soup in maps each of them trying to kill something and trying to evaluate their enemy with missing variables and doing divide by 0 (zero - lol, learn some math if you want to understant what is a divide by 0, ), this time game not crashed, but errors were spreaded in next game as well (garbage objects unremoved ?).
So, I'm agree to see a bunch of classes added, maybe is helping mapper to gain popularity as a guy who don't know what is doing, but he is keep working in hope for a new game-type meant to sustain all trashes even to predict future like Nostradamus what will be added in 2020 and to not crash, I want to see that controller...
Default monster will calculate Strength VS his enemy based on weapon's rating holded by enemy, intelligence, health. When this computing result will attempt to involve unexistent values from other pawns undeclared anywhere, he even will refuse to believe that was killed stucking something in engine. If you are panicated bind a key for TaskManager and have fun with that, .
Also I have to scan in hoping to catch other interesting bunch of errors appeared from nowhere in other test. Those Mercs suddenly triggered accesed nones at computing RelativeStrenght (just copied codes from default monster and nothing fixed, LOL - SprayTarget - accesed none, etc.), maybe they discovered a Skaarj dying killed by a cannon and they were triggered in attack to hunt a dead body, anyway I'll check what kind of errors might occur when is used a pawns soup in maps each of them trying to kill something and trying to evaluate their enemy with missing variables and doing divide by 0 (zero - lol, learn some math if you want to understant what is a divide by 0, ), this time game not crashed, but errors were spreaded in next game as well (garbage objects unremoved ?).
So, I'm agree to see a bunch of classes added, maybe is helping mapper to gain popularity as a guy who don't know what is doing, but he is keep working in hope for a new game-type meant to sustain all trashes even to predict future like Nostradamus what will be added in 2020 and to not crash, I want to see that controller...
- Kelly
- Posts: 131
- Joined: Sat Dec 01, 2012 2:29 am
- NoMoreSpam: Silver
- Location: Coos Bay, Oregon
Re: Need More Fixes ?
That right there is at the heart of a lot of UT's problems.Nelsona wrote:(garbage objects unremoved ?).
When everyone you ever known is headed for a headstone
I don’t wanna give the end away but we’re gonna die one day
I don’t wanna give the end away but we’re gonna die one day
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
That's why I think I have to debate that but is prety hard.
Other thing, as I could see randomly, I tweaked a bit roaming state of monster, even is lazy and is not runing. If is a roamer and doesn't have a desired enemy or target will keep moving around appearing in unexpected places. I found this good for my tastes. I don't need to learn about a monster as being only in a certain location and to predict position - is unfair. Randomizing the hunt was in purpose for a long time. Is not the best ever code done because in default are counted the number of roamers, if are too many they will stop roaming, but is a bit of help when there are 2 or 3 roamers. I'll try to have a deal with this count system as well and later will check CPU load in heavy loaded maps and PATHED.
Other thing, as I could see randomly, I tweaked a bit roaming state of monster, even is lazy and is not runing. If is a roamer and doesn't have a desired enemy or target will keep moving around appearing in unexpected places. I found this good for my tastes. I don't need to learn about a monster as being only in a certain location and to predict position - is unfair. Randomizing the hunt was in purpose for a long time. Is not the best ever code done because in default are counted the number of roamers, if are too many they will stop roaming, but is a bit of help when there are 2 or 3 roamers. I'll try to have a deal with this count system as well and later will check CPU load in heavy loaded maps and PATHED.
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
Between maps, after ending votes, server will pass to next voted map. Grr, now I'm disturbed and I have to rework HUD no. 3. This one returns a few accesed none (seems not harmfull because nobody is crashing), first thing coming in my head about these errors seems an attempt to draw something in spectating mode before to start game, damn, now is a bit of challenge to stop them, because I need more tests in order to have good results.
- Nelsona
- Posts: 998
- Joined: Sun Mar 06, 2011 11:45 am
- Location: Still at Keyboard
- Contact:
Re: Need More Fixes ?
Expected result seems good - related to HUD.
But (other chapter)... happening exactly like in Coop Games, some movers with special properties for monsters rarely (or often in MH) might remains stucked after a good fight around. As I noticed the causes, mover is not done only as a moving brush (to anoy pawns) but even he speak with them for a while (A.I. code from mover). Is some problem here because mover even triggered by monsters won't notice this subject too much (mostly the Bot is on target), by example even a mover under "TriggerControl" might remain blocked in open position if can be multiple triggered and some instigators are gone in heaven or they are already too far runing fast from that location. Also mover cannot speak with dead pawns (because is not some witch), as result of nasty instances undebated in original Mover code you might see strange things happening. I studied these mover states a bit and onestly I don't really love them (just examples for starting new custom brushes - not as a need to clone them as they are).
I worked to set up properly mover reaction instigated and opened VS Instigator state, lol. Was a challenge to catch mover because IsInState call seems tricky in this case (I couldn't deal with that until this moment speaking about mover). Also I reworked timer (I had a few ForEach functions replaced with a single one) for such cases, controlling movers will be activated only if game was started not earlier.
I'll put up some fight to test how are things working.
But (other chapter)... happening exactly like in Coop Games, some movers with special properties for monsters rarely (or often in MH) might remains stucked after a good fight around. As I noticed the causes, mover is not done only as a moving brush (to anoy pawns) but even he speak with them for a while (A.I. code from mover). Is some problem here because mover even triggered by monsters won't notice this subject too much (mostly the Bot is on target), by example even a mover under "TriggerControl" might remain blocked in open position if can be multiple triggered and some instigators are gone in heaven or they are already too far runing fast from that location. Also mover cannot speak with dead pawns (because is not some witch), as result of nasty instances undebated in original Mover code you might see strange things happening. I studied these mover states a bit and onestly I don't really love them (just examples for starting new custom brushes - not as a need to clone them as they are).
I worked to set up properly mover reaction instigated and opened VS Instigator state, lol. Was a challenge to catch mover because IsInState call seems tricky in this case (I couldn't deal with that until this moment speaking about mover). Also I reworked timer (I had a few ForEach functions replaced with a single one) for such cases, controlling movers will be activated only if game was started not earlier.
I'll put up some fight to test how are things working.