Page 2 of 3
Re: Monster Match
Posted: Tue Feb 09, 2016 10:37 am
by Santhosh
Creature Match is a Free-to-Play amusement for Android robot and Apple logo dark, in which players investigate the Prismal Islands catching, gathering and developing their own Monster Team. The amusement includes a riddle based fight workman wherein players match pearls so as to make their beasts assault. There are at present more than 700 Monsters to gather in the amusement, and more are included with each occasion.
Re: Monster Match
Posted: Sat Feb 27, 2016 6:52 pm
by Sektor2111
Bump >>>
Let's move this ahead. Post error, post function... then, my turn... I'll post what I think that will solve Accessed None in that function. Your move = Try new compilation and check if error occurs again.
Re: Monster Match
Posted: Sun Feb 28, 2016 1:57 am
by Deepu
OK!
Re: Monster Match
Posted: Mon Feb 29, 2016 6:16 pm
by Sektor2111
Error sample:
Code: Select all
ScriptWarning: MM_Mercenary MM-TestMap.MM_Mercenary1 (Function MMGame.MM_Mercenary.SpawnCarcass:0796) Accessed None
Function content (what I have seen):
Code: Select all
function Carcass SpawnCarcass()
{
local carcass carc;
local inventory w;
local inventory v;
local mm_mercenary s;
local float Selection;
Selection = FRand();
w = instigator.FindInventoryType(class'MM_GoldUnholyTool');
if ( w != None )
{
if ( Selection < zombiechance )
{
if (!bzombie)
{
s = Spawn(class'mm_mercenary',,,Location);
s.instigator = self.instigator;
s.playerreplicationinfo.team = self.playerreplicationinfo.team;
s.aggressiveness = self.aggressiveness * 2;
s.bhasrangedattack = false;
s.bmovingrangedattack = false;
s.bcanstrafe = false;
s.dropwhenkilled = none;
s.drawscale = self.drawscale;
s.bzombie = true;
v = instigator.FindInventoryType(class'MM_SilverImprovementTool');
if ( v != None )
{
s.groundspeed =0.7*self.groundspeed;
s.airspeed = 0.7*self.airspeed;
s.waterspeed = 2.5*self.waterspeed;
s.health = self.default.health*3;
s.fatness = 0.3*self.fatness;
}
v = instigator.FindInventoryType(class'MM_SilverImprovementTool');
if ( v == None )
{
s.groundspeed =0.5*self.groundspeed;
s.airspeed = 0.5*self.airspeed;
s.waterspeed = 2*self.waterspeed;
s.health = self.default.health*2;
s.fatness = 0.5*self.fatness;
}
s.skin = zombieskin;
s.multiskins[0] = self.zombieskin;
s.multiskins[1] = self.zombieskin;
s.multiskins[2] = self.zombieskin;
s.multiskins[3] = self.zombieskin;
s.multiskins[4] = self.zombieskin;
s.multiskins[5] = self.zombieskin;
s.multiskins[6] = self.zombieskin;
s.multiskins[7] = self.zombieskin;
}
if (bzombie)
{
carc = Spawn(CarcassType);
carc.multiskins[0] = self.multiskins[0];
carc.multiskins[1] = self.multiskins[1];
carc.multiskins[2] = self.multiskins[2];
carc.multiskins[3] = self.multiskins[3];
carc.multiskins[4] = self.multiskins[4];
carc.multiskins[5] = self.multiskins[5];
carc.multiskins[6] = self.multiskins[6];
carc.multiskins[7] = self.multiskins[7];
carc.skin = self.skin;
s.fatness = self.fatness;
if ( carc != None )
carc.Initfor(self);
}
}
else
{
carc = Spawn(CarcassType);
carc.multiskins[0] = self.multiskins[0];
carc.multiskins[1] = self.multiskins[1];
carc.multiskins[2] = self.multiskins[2];
carc.multiskins[3] = self.multiskins[3];
carc.multiskins[4] = self.multiskins[4];
carc.multiskins[5] = self.multiskins[5];
carc.multiskins[6] = self.multiskins[6];
carc.multiskins[7] = self.multiskins[7];
carc.skin = self.skin;
s.fatness = self.fatness;
if ( carc != None )
carc.Initfor(self);
}
}
w = instigator.FindInventoryType(class'MM_GoldUnholyTool');
if ( w == None )
{
carc = Spawn(CarcassType);
carc.multiskins[0] = self.multiskins[0];
carc.multiskins[1] = self.multiskins[1];
carc.multiskins[2] = self.multiskins[2];
carc.multiskins[3] = self.multiskins[3];
carc.multiskins[4] = self.multiskins[4];
carc.multiskins[5] = self.multiskins[5];
carc.multiskins[6] = self.multiskins[6];
carc.multiskins[7] = self.multiskins[7];
carc.skin = self.skin;
s.fatness = self.fatness;
if ( carc != None )
carc.Initfor(self);
return carc;
}
}
My Presumed fix - See differences
Code: Select all
function Carcass SpawnCarcass()
{
local carcass carc;
local inventory w;
local inventory v;
local mm_mercenary s;
local float Selection;
Selection = FRand();
if ( self.instigator != None ) //Added Main Sanity Check
{
w = instigator.FindInventoryType(class'MM_GoldUnholyTool');
if ( w != None )
{
if ( Selection < zombiechance )
{
if (!bzombie)
{
s = Spawn(class'mm_mercenary',,,Location); //Is only try to spawn, LOL
if ( s != None ) //Sanitycheck
{
s.instigator = self.instigator;
if ( s.PlayerReplicationInfo != None && self.PlayerReplicationInfo != None )
s.playerreplicationinfo.team = self.playerreplicationinfo.team;
s.aggressiveness = self.aggressiveness * 2;
s.bhasrangedattack = false;
s.bmovingrangedattack = false;
s.bcanstrafe = false;
s.dropwhenkilled = none;
s.drawscale = self.drawscale;
s.bzombie = true;
v = instigator.FindInventoryType(class'MM_SilverImprovementTool');
if ( v != None )
{
s.groundspeed =0.7*self.groundspeed;
s.airspeed = 0.7*self.airspeed;
s.waterspeed = 2.5*self.waterspeed;
s.health = self.default.health*3;
s.fatness = 0.3*self.fatness;
}
v = instigator.FindInventoryType(class'MM_SilverImprovementTool');
if ( v == None )
{
s.groundspeed =0.5*self.groundspeed;
s.airspeed = 0.5*self.airspeed;
s.waterspeed = 2*self.waterspeed;
s.health = self.default.health*2;
s.fatness = 0.5*self.fatness;
}
s.skin = zombieskin;
s.multiskins[0] = self.zombieskin;
s.multiskins[1] = self.zombieskin;
s.multiskins[2] = self.zombieskin;
s.multiskins[3] = self.zombieskin;
s.multiskins[4] = self.zombieskin;
s.multiskins[5] = self.zombieskin;
s.multiskins[6] = self.zombieskin;
s.multiskins[7] = self.zombieskin;
}
}
else
// if (bzombie) //Can be just an else !bzombie was before Boolean has only 2 options !bzombie or else is automated bzombie
{
carc = Spawn(CarcassType);
if ( carc != None ) //Moved - Test Spawning
{
carc.multiskins[0] = self.multiskins[0];
carc.multiskins[1] = self.multiskins[1];
carc.multiskins[2] = self.multiskins[2];
carc.multiskins[3] = self.multiskins[3];
carc.multiskins[4] = self.multiskins[4];
carc.multiskins[5] = self.multiskins[5];
carc.multiskins[6] = self.multiskins[6];
carc.multiskins[7] = self.multiskins[7];
carc.skin = self.skin;
// s.fatness = self.fatness; //=???
carc.fatness = self.fatness; //added
// if ( carc != None ) //LOL ? Move this before!
carc.Initfor(self);
}
}
}
else
{
carc = Spawn(CarcassType);
if (carc != None) //Moved
{
carc.multiskins[0] = self.multiskins[0];
carc.multiskins[1] = self.multiskins[1];
carc.multiskins[2] = self.multiskins[2];
carc.multiskins[3] = self.multiskins[3];
carc.multiskins[4] = self.multiskins[4];
carc.multiskins[5] = self.multiskins[5];
carc.multiskins[6] = self.multiskins[6];
carc.multiskins[7] = self.multiskins[7];
carc.skin = self.skin;
// s.fatness = self.fatness; //=???
carc.fatness = self.fatness; //added
// if ( carc != None ) //LOL ? Move this before!
carc.Initfor(self);
}
}
}
// w = instigator.FindInventoryType(class'MM_GoldUnholyTool'); //WHY 2 checks ?
else
{
carc = Spawn(CarcassType);
if ( carc != None ) //ADDED-MOVED
{
carc.multiskins[0] = self.multiskins[0];
carc.multiskins[1] = self.multiskins[1];
carc.multiskins[2] = self.multiskins[2];
carc.multiskins[3] = self.multiskins[3];
carc.multiskins[4] = self.multiskins[4];
carc.multiskins[5] = self.multiskins[5];
carc.multiskins[6] = self.multiskins[6];
carc.multiskins[7] = self.multiskins[7];
carc.skin = self.skin;
carc.fatness = self.fatness;
// if ( carc != None ) //NOT HERE
carc.Initfor(self);
}
}
}
return carc;
}
Rules ARE simple: when we access some ActorValue we have to be sure about "if (ActorValue != None)" and then everything accessed reach at target else it results only NONE.
Re: Monster Match
Posted: Mon Feb 29, 2016 6:31 pm
by Deepu
SpawnCarcass error is fixed with your edited code for all monsters. Thank you!
you can fix one of Flying.ProcessTouch error?
Code: Select all
ScriptWarning: MM_BruteProjectile MM-TestMap.MM_BruteProjectile16 (Function MMGame.MM_BruteProjectile.Flying.ProcessTouch:003B) Accessed None
Last updated code is here
http://ultut.in/ut_dev/MMGame_v1_1_Test_Source.zip
Re: Monster Match
Posted: Tue Mar 01, 2016 5:53 pm
by Sektor2111
Original code more readable is this one
Code: Select all
simulated function ProcessTouch (Actor Other, Vector HitLocation)
{
local vector momentum;
local inventory w;
local float Selection;
local int NewFatness;
Selection = FRand();
//////////////////////////////////////////
//////////////////////////////////////////
if ( other == instigator ) //Rakiayn: monster getting hit not by own meleeattack but from an other monster//
{
//Rakiayn: monster does not get hit
//Add > This check is pointless, Next check does job normally and nothing happens with instigator, if != None
}
if ( other != instigator )
{
//momentum = MomentumTransfer * Normal(Velocity);///
w = other.instigator.FindInventoryType(class'MM_GoldnalispiritTool');
if ( w != None )
{
if ( Selection < nalispirit )
{
other.style = STY_translucent;
PlaySound(sound'Teleport1',, 2.0);
other.ScaleGlow = 2.0;
other.fatness = Clamp(NewFatness, 0, 255);
playerpawn(other).weapon.Style = STY_translucent;
}
else
{
Explode(HitLocation,Vect(0,0,0));
other.style = other.default.style;
other.ScaleGlow = other.default.Scaleglow;
other.fatness = 128;
//playerpawn(other).weapon.Style = playerpawn(other).weapon.default.Style;
}
Destroy();
}
w = other.instigator.FindInventoryType(class'MM_GoldnalispiritTool');
if ( w == None )
{
Explode(HitLocation,Vect(0,0,0));
other.style = other.default.style;
other.ScaleGlow = other.default.Scaleglow;
other.fatness = 128;
//playerpawn(other).weapon.Style = playerpawn(other).weapon.default.Style;
}
Destroy();
}
}
My Solution/Proposal >>>
Code: Select all
simulated function ProcessTouch (Actor Other, Vector HitLocation)
{
local vector momentum;
local inventory w;
local float Selection;
local int NewFatness;
Selection = FRand();
//////////////////////////////////////////
//////////////////////////////////////////
/*
if ( other == instigator ) //Rakiayn: monster getting hit not by own meleeattack but from an other monster//
{
//Rakiayn: monster does not get hit
//Add > This check is pointless, Next check does job normally and nothing happens with instigator, if != None
}
//Removed this chapter, doesn't make any sense.
*/
if ( other != instigator && Instigator != None )
{
//momentum = MomentumTransfer * Normal(Velocity);
w = other.instigator.FindInventoryType(class'MM_GoldnalispiritTool'); //hm, let me see #1
if ( w != None )
{
if ( Selection < nalispirit )
{
other.style = STY_translucent;
PlaySound(sound'Teleport1',, 2.0);
other.ScaleGlow = 2.0;
other.fatness = Clamp(NewFatness, 0, 255);
if ( PlayerPawn(other) != None && PlayerPawn(other).Weapon != None ) //Added sanity check
playerpawn(other).weapon.Style = STY_translucent;
}
else
{
Explode(HitLocation,Vect(0,0,0));
other.style = other.default.style;
other.ScaleGlow = other.default.Scaleglow;
other.fatness = 128;
if ( PlayerPawn(other) != None && PlayerPawn(other).Weapon != None ) //Added sanity check
PlayerPawn(other).Weapon.Style = playerpawn(other).weapon.default.Style; //Added back - remove if it is not needed
}
Destroy();
} //if not then process ELSE bellow
// w = other.instigator.FindInventoryType(class'MM_GoldnalispiritTool'); #2 WHAT For ??? Already checked..
// if ( w == None ) //pointless
else //Changed condition
{
Explode(HitLocation,Vect(0,0,0));
other.style = other.default.style;
other.ScaleGlow = other.default.Scaleglow;
other.fatness = 128;
if ( PlayerPawn(other) != None && PlayerPawn(other).Weapon != None ) //Added sanity check
PlayerPawn(other).weapon.Style = PlayerPawn(other).Weapon.Default.Style; //Back Style if changed
}
Destroy();
}
}
Go figure...
Source-code above doesn't compile because of some texture missing
Re: Monster Match
Posted: Wed Mar 02, 2016 2:53 am
by Deepu
Which textures?
Still error coming...
Code: Select all
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile360 (Function MMGame_v1_1.MM_BruteProjectile.Flying.ProcessTouch:003B) Accessed None
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile360 (Function MMGame_v1_1.MM_BruteProjectile.Flying.ProcessTouch:014D) Accessed None
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile364 (Function MMGame_v1_1.MM_BruteProjectile.Flying.ProcessTouch:003B) Accessed None
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile364 (Function MMGame_v1_1.MM_BruteProjectile.Flying.ProcessTouch:014D) Accessed None
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile394 (Function MMGame_v1_1.MM_BruteProjectile.Flying.ProcessTouch:003B) Accessed None
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile394 (Function MMGame_v1_1.MM_BruteProjectile.Flying.ProcessTouch:014D) Accessed None
Compiled & playable file is here
http://ultut.in/ut_dev/MMGame_v1_1_Test_Pack.zip
Re: Monster Match
Posted: Fri Mar 04, 2016 6:36 pm
by Sektor2111
Because still codes are wrong
Old code:
Code: Select all
simulated function ProcessTouch (Actor Other, Vector HitLocation)
{
local vector momentum;
local inventory w;
local float Selection;
local int NewFatness;
Selection = FRand();
//////////////////////////////////////////
//////////////////////////////////////////
if (other == instigator) //Rakiayn: monster getting hit not by own meleeattack but from an other monster//
{
//Rakiayn: monster does not get hit//
}
if (other != instigator)
{
//momentum = MomentumTransfer * Normal(Velocity);///
w = other.instigator.FindInventoryType(class'MM_GoldnalispiritTool');
if ( w != None )
{
if ( Selection < nalispirit )
{
other.style = STY_translucent;
PlaySound(sound'Teleport1',, 2.0);
other.ScaleGlow = 2.0;
other.fatness = Clamp(NewFatness, 0, 255);
playerpawn(other).weapon.Style = STY_translucent;
}
else
{
Explode(HitLocation,Vect(0,0,0));
other.style = other.default.style;
other.ScaleGlow = other.default.Scaleglow;
other.fatness = 128;
//playerpawn(other).weapon.Style = playerpawn(other).weapon.default.Style;
}
destroy();
}
w = other.instigator.FindInventoryType(class'MM_GoldnalispiritTool');
if ( w == None )
{
Explode(HitLocation,Vect(0,0,0));
other.style = other.default.style;
other.ScaleGlow = other.default.Scaleglow;
other.fatness = 128;
//playerpawn(other).weapon.Style = playerpawn(other).weapon.default.Style;
}
destroy();
}
}
You should wrap it, it's not friendly readable.
New Code
- ....
simulated function ProcessTouch (Actor Other, Vector HitLocation)
{
local vector momentum;
local inventory w;
local float Selection;
local int NewFatness;
Selection = FRand();
//////////////////////////////////////////
//////////////////////////////////////////
/*
if ( other == instigator ) //Rakiayn: monster getting hit not by own meleeattack but from an other monster//
{
//Rakiayn: monster does not get hit
//Add > This check is pointless, Next check does job normally and nothing happens with instigator, if != None
}
//Removed this chapter, doesn't make any sense.
*/
if ( other != instigator )
{
//momentum = MomentumTransfer * Normal(Velocity);
if (other.Instigator != None) //THIS ??
w = other.instigator.FindInventoryType(class'MM_GoldnalispiritTool'); //hm, let me see #1
if ( w != None )
{
if ( Selection < nalispirit )
{
other.style = STY_translucent;
PlaySound(sound'Teleport1',, 2.0);
other.ScaleGlow = 2.0;
other.fatness = Clamp(NewFatness, 0, 255);
if ( PlayerPawn(other) != None && PlayerPawn(other).Weapon != None ) //Added sanity check
playerpawn(other).weapon.Style = STY_translucent;
}
else
{
Explode(HitLocation,Vect(0,0,0));
other.style = other.default.style;
other.ScaleGlow = other.default.Scaleglow;
other.fatness = 128;
if ( PlayerPawn(other) != None && PlayerPawn(other).Weapon != None ) //Added sanity check
PlayerPawn(other).Weapon.Style = playerpawn(other).weapon.default.Style; //Added - back - remove if it is not needed - or using PlayerReplicationInfo to involve Bot as well
}
Destroy();
} //if not then process ELSE bellow
// w = other.instigator.FindInventoryType(class'MM_GoldnalispiritTool'); #2 WHAT For ??? Already checked..
// if ( w == None ) //pointless
else //Changed condition
{
Explode(HitLocation,Vect(0,0,0));
other.style = other.default.style;
other.ScaleGlow = other.default.Scaleglow;
other.fatness = 128;
if ( PlayerPawn(other) != None && PlayerPawn(other).Weapon != None ) //Added sanity check
PlayerPawn(other).weapon.Style = PlayerPawn(other).Weapon.Default.Style; //Back Style if changed
}
Destroy();
}
}
...
Re: Monster Match
Posted: Sat Mar 05, 2016 7:46 am
by Deepu
Yes it works. But....
If i added this line
//PlayerPawn(other).weapon.Style = PlayerPawn(other).Weapon.Default.Style;
log comes again
Code: Select all
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile360 (Function MMGame_v1_1.MM_BruteProjectile.Flying.ProcessTouch:003B) Accessed None
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile360 (Function MMGame_v1_1.MM_BruteProjectile.Flying.ProcessTouch:014D) Accessed None
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile364 (Function MMGame_v1_1.MM_BruteProjectile.Flying.ProcessTouch:003B) Accessed None
Also coming...
Code: Select all
ScriptWarning: MeleeAttack MM-Test.MeleeAttack15 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0054) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack15 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:01DA) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack15 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0288) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack19 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0054) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack19 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:01DA) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack19 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0288) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack24 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0054) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack24 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:01DA) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack24 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0288) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack29 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0054) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack29 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:01DA) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack29 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0288) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack44 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0054) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack44 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:01DA) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack44 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0288) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack46 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0054) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack46 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:01DA) Accessed None
ScriptWarning: MeleeAttack MM-Test.MeleeAttack46 (Function MMGame_v1_1.MeleeAttack.Flying.ProcessTouch:0288) Accessed None
Code: Select all
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile224 (Function MMGame_v1_1.MM_BruteProjectile.Flying.BlowUp:0017) Accessed None
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile227 (Function MMGame_v1_1.MM_BruteProjectile.Flying.BlowUp:0017) Accessed None
ScriptWarning: MM_BruteProjectile MM-Test.MM_BruteProjectile228 (Function MMGame_v1_1.MM_BruteProjectile.Flying.BlowUp:0017) Accessed None
Re: Monster Match
Posted: Tue Mar 08, 2016 6:59 pm
by Sektor2111
MeleeAttack.
I see "instigator" called a lot. YOU must understand that you always need SANITIZER.
Code: Select all
if (Instigator != None && Instigator.PlayerReplicationInfo != None)
...
+ "Instigator.PlayerReplicationInfo != None" because you call it but you cannot be sure if exist or not. Else
Pawn(Instigator) != None if code does funky things, before that "FindInventoryType" LINE.
Also you look like did not changed that ProcessTouch - post your compiled code.
BruteProjectile.blowup need also Instigator checker
Code: Select all
function BlowUp(vector HitLocation)
{
if ( Instigator != None ) //ADDED
HurtRadius(damage, 50 + instigator.skill * 45, 'exploded', MomentumTransfer, HitLocation);
else
HurtRadius(damage, 50 + Level.Game.Difficulty * 45, 'exploded', MomentumTransfer, HitLocation); //ELSE using Level "skill"
MakeNoise(1.0);
PlaySound(ImpactSound);
}