Page 1 of 2

Attempt to STORE non Actor reference to the hash of actors

Posted: 02 Jun 2013, 07:32
by Dark Airnel
I have been experiencing this error lately and it happens when a specific block containing the following options are triggered:

Code: Select all

        equip_topHead
	equip_midHead
	equip_lowHead
	equip_leftHand
	equip_rightHand
	equip_leftAccessory
	equip_rightAccessory
	equip_robe
	equip_armor
	equip_shoes
	equip_arrow
I am using SVN r8600

Code: Select all

OpenKore version what-will-become-2.1
@ai_seq = skill_use
Network state = 5
Network handler = Network::XKore
SVN revision: unknown
Loaded plugins:
  D:\Openkore Workshop\SVN 8600\BotOrganizer\Profiles\Main GvG Sura\Plugin/alertsound.pl (alertsound; description: plays sounds on certain events)
  D:\Openkore Workshop\SVN 8600\BotOrganizer\Profiles\Main GvG Sura\Plugin/autoLockMapChanger.pl (autoMapChange; description: CODE(0x3c4ae3c))
  D:\Openkore Workshop\SVN 8600\BotOrganizer\Profiles\Main GvG Sura\Plugin/autoTalk.pl (autotalk; description: talks to NPC after death or via command)
  D:\Openkore Workshop\SVN 8600\BotOrganizer\Profiles\Main GvG Sura\Plugin/breakTime.pl (breakTime; description: config.autoBreakTime)
  D:\Openkore Workshop\SVN 8600\BotOrganizer\Profiles\Main GvG Sura\Plugin/checkSelfCondition.pl (checkSelfCondition; description: enable custom conditions)
  D:\Openkore Workshop\SVN 8600\BotOrganizer\Profiles\Main GvG Sura\Plugin/macro.pl (macro; description: allows usage of macros)
  D:\Openkore Workshop\SVN 8600\BotOrganizer\Profiles\Main GvG Sura\Plugin/monsterDB.pl (monsterDB; description: extends Monster infos)
  D:\Openkore Workshop\SVN 8600\BotOrganizer\Profiles\Main GvG Sura\Plugin/reactOnActor.pl (reactOnActor; description: automatically react on certain actors)
  D:\Openkore Workshop\SVN 8600\BotOrganizer\Profiles\Main GvG Sura\Plugin/tele-search-v2.pl (Tele-Search v2; description: Alternative tele-search v2.)
  D:\Openkore Workshop\SVN 8600\BotOrganizer\Profiles\Main GvG Sura\Plugin/xconf.pl (xConf; description: commands for change items_control, mon_control, pickupitems, priority)

Error message:
Attempt to STORE non Actor reference to the hash of actors
Key:
61726d6f72
Value:
$VAR1 = {};

Stack trace:
Attempt to STORE non Actor reference to the hash of actors
Key:
61726d6f72
Value:
$VAR1 = {};
 at src/Utils/ActorHashTie.pm line 18
	Tie::ActorHash::STORE('Tie::ActorHash=ARRAY(0x65bb61c)', 'armor', 'HASH(0x65d74dc)') called at src/Actor/Item.pm line 234
	Actor::Item::scanConfigAndCheck('useSelf_skill_3_equip') called at src/AI/CoreLogic.pm line 643
	AI::CoreLogic::processSkillUse() called at src/AI/CoreLogic.pm line 82
	AI::CoreLogic::iterate() called at src/functions.pl line 758
	main::mainLoop_initialized() called at src/functions.pl line 70
	main::mainLoop() called at src/Interface.pm line 75
	Interface::mainLoop('Interface::Console::Win32=HASH(0x9b2a74)') called at openkore.pl line 97
	main::__start() called at start.pl line 136

Re: Attempt to STORE non Actor reference to the hash of actors

Posted: 02 Jun 2013, 11:18
by Kaspy
These settings were removed

Re: Attempt to STORE non Actor reference to the hash of actors

Posted: 03 Jun 2013, 04:37
by Dark Airnel
May I know why? And are there new conditions introduced to replace it's very valuable function? I believe those conditions are very useful specially when you want the bot to wear something to do something.

For instance:
If my bot is attacking something this is the block it will use:

Code: Select all

attackSkillSlot Severe Rainstorm {
	lvl 5
	dist 10
	sp > 120
	whenStatusActive
	whenStatusInactive Severe RainstormDelay, Action Delay
	inLockOnly 0
	notInTown 1
	timeout 3
	disabled 0
	monsters
	notMonsters Iceicle
	equip_leftHand +7 Elven Bow [Turtle General] [1]
	equip_rightHand +7 Elven Bow [Turtle General] [1]
}
My bot buff "MI_RUSH_WINDMILL" ran out and it needs an instrument to cast it:

Code: Select all

useself_Skill MI_RUSH_WINDMILL {
	lvl 5
	dist 10
	sp > 120
	whenStatusActive
	whenStatusInactive Windmill RushDelay, Action Delay
	inLockOnly 0
	notInTown 1
	timeout 3
	disabled 0
	equip_leftHand Violin [4]
	equip_rightHand +20 Orlean's Server [Thara Frog] [1] #just an exageration
}
I think this configuration saves space and time. Using "whenEquipped" would require additional blocks. First you will create a condition as to when Violin [4] will be equipped etc.
Using whenEquipped:

Code: Select all

attackSkillSlot Severe Rainstorm {
	lvl 5
	dist 10
	sp > 120
	whenStatusActive
	whenStatusInactive Severe RainstormDelay, Action Delay
	inLockOnly 0
	notInTown 1
	timeout 3
	disabled 0
	monsters
	notMonsters Iceicle
	equip_leftHand +7 Elven Bow [Turtle General] [1]
	equip_rightHand +7 Elven Bow [Turtle General] [1]
}

Code: Select all

equipAuto Notwindmill {
	rightHand Violin [4]
	whenStatusActive
	whenStatusInactive Windmill Rush
	aggressives
	stopWhenHit 0
	inLockOnly 0
	notWhileSitting 0
	notInTown 0
	timeout 0
	disabled 0
	inInventory
	manualAI 0
}

Code: Select all

useself_Skill MI_RUSH_WINDMILL {
	lvl 5
	sp > 120
	whenEquipped Violin [4]
	whenStatusInactive Windmill RushDelay, Action Delay
	inLockOnly 0
	notInTown 1
	timeout 3
	disabled 0
}

Re: Attempt to STORE non Actor reference to the hash of actors

Posted: 03 Jun 2013, 04:45
by Kaspy
You can use the conditions whenEquipped and whenNotEquipped

See: http://forums.openkore.com/viewtopic.php?f=36&t=31103

Re: Attempt to STORE non Actor reference to the hash of actors

Posted: 03 Jun 2013, 04:50
by Dark Airnel
Yes I know I can use whenEquipped and whenNotEquipped and it's not that I don't want to write additional blocks to execute what I want accomplished. I just find those conditions to be so useful and practical to be removed/unimplemented. And since you have to manage more blocks, then the configuration is also prone to errors.

Re: Attempt to STORE non Actor reference to the hash of actors

Posted: 03 Jun 2013, 05:01
by EternalHarvest
KeplerBR wrote:These settings were removed
They are still right there in AI::CoreLogic. Can you show the commit they were "removed" in?

Re: Attempt to STORE non Actor reference to the hash of actors

Posted: 03 Jun 2013, 05:35
by philounet
I'm using :

Code: Select all

attackEquip_leftHand Shield
attackEquip_rightHand Flamberge
And, same thing, openkore is crashing !

I'm using this when doing a physical attack because got this for skill :

Code: Select all

attackSkillSlot Pierce {
	lvl 10
	dist 1.5
	sp > 10%
	inLockOnly 1
	notInTown 1
	equip_rightHand Lance
}
After the skill openkore is using "attackEquip_..." to re-requip default equip (when not using a skill) to re use a shield.

How to do without "attackEquip_..." & "equip_..." ? :?

There is the error detail :

Code: Select all

OpenKore version what-will-become-2.1
@ai_seq = attack route
Network state = 5
Network handler = Network::DirectConnection
SVN revision: unknown
No loaded plugins.

Error message:
Attempt to STORE non Actor reference to the hash of actors
Key:
726967687448616e64
Value:
$VAR1 = {};

Stack trace:
Attempt to STORE non Actor reference to the hash of actors
Key:
726967687448616e64
Value:
$VAR1 = {};
 at src/Utils/ActorHashTie.pm line 18
	Tie::ActorHash::STORE('Tie::ActorHash=ARRAY(0x3af9d6c)', 'rightHand', 'HASH(0x3c68094)') called at src/Actor/Item.pm line 234
	Actor::Item::scanConfigAndCheck('attackEquip') called at src/AI/Attack.pm line 563
	AI::Attack::main() called at src/AI/Attack.pm line 97
	AI::Attack::process() called at src/AI/CoreLogic.pm line 79
	AI::CoreLogic::iterate() called at src/functions.pl line 764
	main::mainLoop_initialized() called at src/functions.pl line 70
	main::mainLoop() called at src/Interface.pm line 75
	Interface::mainLoop('Interface::Console::Win32=HASH(0x291b42c)') called at openkore.pl line 97
	main::__start() called at start.pl line 136

Re: Attempt to STORE non Actor reference to the hash of actors

Posted: 03 Jun 2013, 06:50
by philounet
Hum ...

All seems to be fine if I comment theses lines in src/Actor/You.pm (78-79) :

Code: Select all

	require Utils::ActorHashTie;
	tie %{$self->{equipment}}, 'Tie::ActorHash';
These lines were added in rev 8580 (05/16/13).

Re: Attempt to STORE non Actor reference to the hash of actors

Posted: 03 Jun 2013, 06:59
by Dark Airnel
philounet wrote:Hum ...

All seems to be fine if I comment theses lines in src/Actor/You.pm (78-79) :

Code: Select all

	require Utils::ActorHashTie;
	tie %{$self->{equipment}}, 'Tie::ActorHash';
These lines were added in rev 8580 (05/16/13).
Yeah, this is exactly what I was thinking, was causing the error. The vivification thing.

Re: Attempt to STORE non Actor reference to the hash of actors

Posted: 03 Jun 2013, 06:59
by kLabMouse
philounet wrote:Hum ...

All seems to be fine if I comment theses lines in src/Actor/You.pm (78-79) :

Code: Select all

	require Utils::ActorHashTie;
	tie %{$self->{equipment}}, 'Tie::ActorHash';
These lines were added in rev 8580 (05/16/13).
That's no good to do!.
Thus lines where added, to prevent any other bug's that might happen.
The Real thing is in where it's reported to be bug present.