Monster Match

Discussions about coding and scripting for Unreal Tournament.
Santhosh
Novice
Posts: 9
Joined: Sat Feb 06, 2016 9:03 am
Status: Offline

Re: Monster Match

Postby Santhosh » Tue Feb 09, 2016 10:37 am

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.

Sektor2111
Novice
Posts: 11
Joined: Sat Feb 27, 2016 6:39 pm
Status: Offline

Re: Monster Match

Postby Sektor2111 » Sat Feb 27, 2016 6:52 pm

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.

User avatar
Deepu
Site Admin
Posts: 381
Joined: Sat Dec 27, 2014 12:14 pm
Contact:
Status: Offline

Re: Monster Match

Postby Deepu » Sun Feb 28, 2016 1:57 am

OK!

Sektor2111
Novice
Posts: 11
Joined: Sat Feb 27, 2016 6:39 pm
Status: Offline

Re: Monster Match

Postby Sektor2111 » Mon Feb 29, 2016 6:16 pm

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.

User avatar
Deepu
Site Admin
Posts: 381
Joined: Sat Dec 27, 2014 12:14 pm
Contact:
Status: Offline

Re: Monster Match

Postby Deepu » Mon Feb 29, 2016 6:31 pm

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://ultimateut.tk/ut_dev/MMGame_v1_1_Test_Source.zip

Sektor2111
Novice
Posts: 11
Joined: Sat Feb 27, 2016 6:39 pm
Status: Offline

Re: Monster Match

Postby Sektor2111 » Tue Mar 01, 2016 5:53 pm

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

User avatar
Deepu
Site Admin
Posts: 381
Joined: Sat Dec 27, 2014 12:14 pm
Contact:
Status: Offline

Re: Monster Match

Postby Deepu » Wed Mar 02, 2016 2:53 am

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
:cry:
Compiled & playable file is here
http://ultimateut.tk/ut_dev/MMGame_v1_1_Test_Pack.zip

Sektor2111
Novice
Posts: 11
Joined: Sat Feb 27, 2016 6:39 pm
Status: Offline

Re: Monster Match

Postby Sektor2111 » Fri Mar 04, 2016 6:36 pm

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();
    }
    }
    ...

User avatar
Deepu
Site Admin
Posts: 381
Joined: Sat Dec 27, 2014 12:14 pm
Contact:
Status: Offline

Re: Monster Match

Postby Deepu » Sat Mar 05, 2016 7:46 am

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

Sektor2111
Novice
Posts: 11
Joined: Sat Feb 27, 2016 6:39 pm
Status: Offline

Re: Monster Match

Postby Sektor2111 » Tue Mar 08, 2016 6:59 pm

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); }


Return to “Coding & Scripting”

Who is online

Users browsing this forum: No registered users and 1 guest