Undefined Player.Class1

Runes of Magic/Radiant Arcana (http://www.runesofmagic.com)
Post Reply
Message
Author
noobbotter
Posts: 527
Joined: Fri Aug 31, 2012 1:15 pm

Undefined Player.Class1

#1 Post by noobbotter » Wed Sep 02, 2015 1:10 pm

ok, so I've seen this a few times as well and cannot understand why. I seem to get it when my script loads a new character, but it doesn't happen with all characters.

Here's the portion of my script that calls the new character:

Code: Select all

SetCharList(CharList)
SetRestartClientSettings(1, "rom4u")
LoginNextChar()
setWindowPos(getWin(),1300,10,500,350)
loadProfile()
loadPaths(__WPL.FileName);
Here's the error is hows me in the MM window:
Image

Here's the section of settings.lua that it's referring to (the only spot where the word "undefined" appears in the file):

Code: Select all

if( settings.profile.options.COMBAT_TYPE ~= "ranged" and
	settings.profile.options.COMBAT_TYPE ~= "melee" ) then
	if( player.Class1 == CLASS_WARRIOR or
		player.Class1 == CLASS_ROGUE   or
		player.Class1 == CLASS_WARDEN  or
		player.Class1 == CLASS_KNIGHT  or
		player.Class1 == CLASS_CHAMPION  ) then
		settings.profile.options.COMBAT_TYPE  = "melee";
	elseif(
		player.Class1 == CLASS_PRIEST  or
		player.Class1 == CLASS_SCOUT   or
		player.Class1 == CLASS_DRUID   or
		player.Class1 == CLASS_MAGE    or
		player.Class1 == CLASS_WARLOCK ) then
		settings.profile.options.COMBAT_TYPE  = "ranged";
	else
		error("undefined player.Class1 in settings.lua", 0);
	end;
end
And lastly, Here's my profile for that character:

Code: Select all

<profile>
	<options>
		<!-- Try the bot with a new char mage                   -->
		<!-- At the pioneer village. Use demo.xml waypoint file -->
		<option name="HP_LOW"					value="85" />
		<option name="MP_LOW_POTION"			value="50" />
		<option name="HP_LOW_POTION"			value="50" />
		<option name="USE_HP_POTION"			value="best" />			<!-- potion select strategy: best|minstack -->
		<option name="USE_MANA_POTION"			value="best" />			<!-- potion select strategy: best|minstack -->
		<option name="USE_PHIRIUS_POTION"		value="false" /> 		<!-- false | true if you want to use the Phirus Potions -->
		<option name="PHIRIUS_MP_LOW"			value="40" />
		<option name="PHIRIUS_HP_LOW"			value="40" />

		<!-- Rest if HP or Mana is below that level -->
		<option name="HP_REST" 					value="15" />
		<option name="MP_REST" 					value="15" />

		<!-- Shopping options, how many of what do you want to keep in your inventory -->
		<option name="HEALING_POTION" 			value="99" />
		<option name="MANA_POTION" 				value="99" />			<!-- set to "0" if not required to buy -->
		<option name="ARROW_QUIVER" 			value="2" /> 			<!-- set to "0" if not required to buy -->
		<option name="THROWN_BAG" 				value="2" />			<!-- set to "0" if not required to buy -->
		<option name="POISON" 					value="75" />			<!-- set to "0" if not required to buy -->

		<!-- either false or arrow or thrown -->
		<option name="RELOAD_AMMUNITION"		value="false" />		<!-- false|arrow|thrown -->

		<!-- Combat options -->
		<option name="COMBAT_TYPE"				value="" />				<!-- leave empty or choose ranged/melee if not using class default -->
		<option name="COMBAT_RANGED_PULL"		value="true" /> 		<!-- only important for melees -->
		<option name="COMBAT_DISTANCE"			value="180" />
		<option name="MAX_FIGHT_TIME"			value="25" />			<!-- Max time without damage before break -->
		<option name="DOT_PERCENT"				value="90" />
		<option name="ANTI_KS"					value="true" />
		<option name="MAX_TARGET_DIST"			value="200" />

		<!-- Attack monsters 3 levels above or 10 below your level -->
		<option name="TARGET_LEVELDIF_ABOVE"	value="3" />
		<option name="TARGET_LEVELDIF_BELOW"	value="75" />

		<!-- Waypoint and movement settings -->
		<option name="WAYPOINTS"				value="" />  			<!-- leave empty to show a list -->
		<option name="RETURNPATH"				value="" />
		<option name="PATH_TYPE"				value="waypoints" />	<!-- waypoints | wander -->
		<option name="WANDER_RADIUS"			value="500" />
		<option name="WAYPOINT_DEVIATION"		value="5" />
		<option name="WAYPOINT_PASS"			value="0" />
		<option name="QUICK_TURN" 				value="true" />

		<!-- Loot settings -->
		<option name="LOOT"						value="true" />
		<option name="LOOT_ALL"					value="true" />  		<!-- Loot all nearby dead mobs after combat -->
		<option name="LOOT_IN_COMBAT"			value="false" />
		<option name="LOOT_DISTANCE"			value="225" />
		<option name="LOOT_PAUSE_AFTER"			value="0" />			<!-- probability in % for a short rest -->
		<option name="LOOT_AGAIN"				value="0" />

		<!-- Auto selling options when used with player:merchant -->
		<option name="INV_AUTOSELL_ENABLE"		value="false" />		<!-- true | false -->
		<option name="INV_AUTOSELL_FROMSLOT"	value="1" /> 			<!-- 1 = bag 1 slot 1 -->
		<option name="INV_AUTOSELL_TOSLOT"		value="60" /> 			<!-- 30 = last slot bag 1 -->
		<option name="INV_AUTOSELL_QUALITY"		value="white,green" /> 	<!-- white,green,blue,purple  -->
		<option name="INV_AUTOSELL_TYPES"		value="Weapons,Armor" />

		<!-- Harvest options -->
		<option name="HARVEST_DISTANCE"			value="120" />
		<option name="HARVEST_WOOD"				value="true" /> 		<!-- Choose which types to harvest. -->
		<option name="HARVEST_HERB"				value="true" /> 		<!-- "true" = harvest, "false" = do not harvest -->
		<option name="HARVEST_ORE"				value="true" />

		<!-- Eggpet options -->
		<option name="EGGPET_ENABLE_CRAFT"		value="false" />		<!-- If using same slot for assist and craft, onlt 1 can be enabled. -->
		<option name="EGGPET_CRAFT_SLOT"		value="1" />
		<option name="EGGPET_ENABLE_ASSIST"		value="false" />
		<option name="EGGPET_ASSIST_SLOT"		value="1" />
		<option name="EGGPET_CRAFT_RATIO"		value="1:1:1" /> 		<!-- mining:woodworking:herbalism ratio to produce. -->
		<option name="EGGPET_CRAFT_INDEXES"		value="" /> 	 		<!-- override auto craft index for mining,woodworking,herbalism eg. "2,,"-->


		<!-- Log out and resurrect settings -->
		<option name="LOGOUT_TIME" 				value="0" />			<!-- in minutes, 0 = timer disabled -->
		<option name="LOGOUT_SHUTDOWN"			value="false" />
		<option name="LOGOUT_WHEN_STUCK"		value="true" />
		<option name="CLOSE_WHEN_STUCK"			value="true" />
		<option name="RES_AFTER_DEATH" 			value="true" />
		<option name="MAX_DEATHS" 				value="10" /> 			<!-- Log out after this many deaths -->

		<!-- Party Bot options  -->
		<!-- <option name="PARTY"				value="true" /> -->
		<!-- <option name="PARTY_ICONS"			value="true" /> -->
		<!-- <option name="PARTY_INSTANCE"		value="true" /> -->

		<!-- Healing options -->
		<!-- <option name="HEALER_FIGHT"		value="true" /> --> 	<!-- For party bot if you want healer to also fight -->

		<!-- pvp -->
		<!--option name="PVP"					value="true" /> --> 		<!-- To enable PVP, with this set to true it will auto attack any players with red names -->

		<!-- For more options and documentation see the RoM Bot Wiki:  -->
		<!-- http://www.solarstrike.net/wiki/index.php5?title=RoM_Bot  -->

	</options>

	<friends>
		<!-- names of friends we help fighting or enemys we don't want to attack -->
		<!-- for umlauts use \129 (ue),\132 (ae),\148 (oe) e.g. K\132fer         -->
		<friend name="100652" /> -- Golo
		<friend name="" />
		<friend name="" />
		<friend name="" />
	</friends>

	<mobs>
		<!-- names of mobs we want to attack 				-->
		<!-- if no names defined we will attack all mobs	-->
		<mob name="" />
		<mob name="" />
		<mob name="" />
	</mobs>

	<hotkeys>
    	<!-- to communicate with the RoM API / define ingame dummy macro at place 1 -->
		<hotkey name="MACRO"          key="VK_0" />
	</hotkeys>

	<!-- define your skills depending from your actual primary class -->
	<!-- see the example for a priest/mage                           -->
	<!-- delete skills you don't have or don't want to use.          -->
	<!-- For more skills to use see /database/skills.xml             -->
	<!-- demo skills for LvL 1 character for all classes             -->
	<!-- to use a specific key instead of MACRO then use hotkey="VK_1" this example is for hotkey 1 -->

	<skills_druid>
		<skill name="DRUID_RECOVER"						hotkey="MACRO" priority="90" hpper="30" />
		<skill name="DRUID_SAVAGE_BLESSING"				hotkey="MACRO" priority="80" />
		<skill name="DRUID_MOTHER_EARTHS_PROTECTION"	hotkey="MACRO" priority="100" maxhpper="20" />
		<skill name="DRUID_EARTH_ARROW"					hotkey="MACRO" priority="80" />
		<skill name="DRUID_BRIAR_ENTWINEMENT"			hotkey="MACRO" priority="80" />
		<skill name="DRUID_RESTORE_LIFE"				hotkey="MACRO" priority="90" hpper="75" />
		<skill name="DRUID_BLOSSOMING_LIFE"				hotkey="MACRO" priority="90" hpper="50" />
		<skill name="DRUID_WEAKENING_SEED"				hotkey="MACRO" priority="75" />
		<skill name="DRUID_CONCENTRATION_PRAYER"		hotkey="MACRO" priority="80" />
		<skill name="DRUID_ROCK_PROTECTION"				hotkey="MACRO" priority="100" maxhpper="25" />
		<skill name="DRUID_MOTHER_NATURES_WRATH"		hotkey="MACRO" priority="100" />
		<skill name="DRUID_MYSTERIOUS_GRACE"			hotkey="MACRO" priority="100" />
	</skills_druid>

	

	<onLoad>
		-- Additional Lua code to execute after loading the profile
		-- and before the bot starts. e.g. You could overwrite profile settings here
		-- like: changeProfileOption("HP_REST", 60);
		inventory:update();

		if(player.Level == 1) then
			openGiftbags1To10(player.Level);
		else
			levelupSkills1To10("loadonly");
		end;

		if(player.Class1 == CLASS_SCOUT ) then
			changeProfileOption("ARROW_QUIVER", 2);
		end;

	</onLoad>

	<onDeath>
		-- Additional Lua code to execute on death
		-- pauseOnDeath(); -- Stop the script
	</onDeath>

	<onLeaveCombat>
		-- Additional Lua code to execute after a target is finished

			-- if(player.Level == 10) then
			-- 	__WPL:setForcedWaypointType("TRAVEL")
			-- end;


	</onLeaveCombat>

	<onLevelup>
		-- thats a demo for opening the gift bags from Lvl 1-10
		-- and levelup the skills for a new character (mage or priest recommended)
		-- you can delete that lines if you don't want to use that

			-- single skill would be: sendMacro("SetSpellPoint(4,2);");
			-- or levelupSkill(_skillname, _times)
			levelupSkills1To10();

			-- open giftbag and equip content
			openGiftbags1To10(player.Level);

	</onLevelup>

	<onSkillCast>
		-- Additional Lua code to execute when casting a skill
		-- Note: arg1 contains the skill being used.
		-- i.e. arg1.Name will be the name of the skill being cast.
	</onSkillCast>
</profile>
Looking at it, I'm wondering if this part in the onload section of the profile might be causing the problem:

Code: Select all

if(player.Class1 == CLASS_SCOUT ) then
			changeProfileOption("ARROW_QUIVER", 2);
		end;
But, then again, I only see this problem when the MM windows is loading up the new character. After the error, I can manually start the same waypoint file and it runs fine.

Any ideas?


Update:
Another of my characters, while loading at the same part of my waypoint, received this error in the MM window:
Image

The character loaded up fine in game, but MM had a problem reading some information from memory. I think something seems to be going faster than the reading of memory or something. Not sure though. Maybe it has something to do with the CPU speed as in the conversation in the other hot topic thread. I don't know.

User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: Undefined Player.Class1

#2 Post by rock5 » Wed Sep 02, 2015 3:00 pm

I notice in both cases it's restarting the client. The issue is probably related to that. Restarting the client is not a simple matter. After restarting the client various things need to be reinitialized such as the __PROC and __WIN variables, player class and the macros for running romscripts. These things should be getting reset but you probably encountered a bug.

This s not something that will be easy to fix. I did notice that there is a "if self.Class1 == CLASS_WARDEN then" before the classes are updated. That might cause a problem. Is your problem with wardens?
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan

User avatar
Bill D Cat
Posts: 555
Joined: Sat Aug 10, 2013 8:13 pm
Location: Deep in the Heart of Texas

Re: Undefined Player.Class1

#3 Post by Bill D Cat » Wed Sep 02, 2015 5:35 pm

I usually don't play a Warden. I've only encountered this issue when I've been teleporting a lot, like the one quest for the Elite bags in Heffner. So far, that's the only time I've had this happen on my system. See my post in the 785 Changelog thread with the details.

http://www.solarstrike.net/phpBB3/viewt ... 975#p62905
Last edited by Bill D Cat on Wed Sep 02, 2015 10:00 pm, edited 1 time in total.

noobbotter
Posts: 527
Joined: Fri Aug 31, 2012 1:15 pm

Re: Undefined Player.Class1

#4 Post by noobbotter » Wed Sep 02, 2015 5:39 pm

Rock5, No. The second character that I posted the memory error on is mage/warrior. The first one with the class1 error was, however, a Druid/Warden. I just also had the class1 error happen with a Champion/Priest. I'll have to see tomorrow when I run this script if it stops at the same characters as it did today or if it's random/different.

This script I'm running has no teleporting in it (it can teleport if the characters aren't already in the area, but today they are all starting from the same location) as the main area for the script and not teleporting anywhere afterward. Just running dailies without minigames to build stock of p-tokens.

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: Undefined Player.Class1

#5 Post by lisa » Wed Sep 02, 2015 8:15 pm

Can you check the character is fully loaded before the error appears on MM?

If so then the isn't that of timing but more likely of the proc value not set to the new window, like rock said
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

kenzu38
Posts: 279
Joined: Sun Dec 02, 2012 8:52 am

Re: Undefined Player.Class1

#6 Post by kenzu38 » Sat Oct 03, 2015 12:47 pm

Experienced this earlier today as well. And I remember experiencing like 2-3 few years ago quite a number of times when I was new to botting.

Seems like it happens when I relog tons of chars using the same client.

User avatar
beanybabe
Posts: 647
Joined: Wed Mar 06, 2013 1:27 am

Re: Undefined Player.Class1

#7 Post by beanybabe » Sun Oct 04, 2015 11:31 am

i posted this a while back rock is still looking at it but it will patch that class error we have been having. 1030 to 1032 are the original lines add the next line to effect a fix. i will attach the Settings.lua for version 787 to make it easier.

-------Settings.lua---------
1030 function settings.loadSkillSet(class)
1031 -- return if player not initialized yet.
1032 if not player then return end
if player.Class1 == -1 then return end -- stop the player.Class1 invalid error fix.
Attachments
settings.lua
(48.33 KiB) Downloaded 137 times

User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: Undefined Player.Class1

#8 Post by rock5 » Sun Oct 04, 2015 7:14 pm

I added this to be committed with my next commit but I do worry that it might cause other problems as it doesn't fix the problem, it just bypasses it. It means that sometimes when it fails to read the class properly and it equals -1 it returns an unupdated faulty player class. So for instance what happens when it goes to update the skills and it checks the class to see which skills to load and it sees that the class is -1? But beanybabe reported no further issues, so it will have to do until someone reports an issue with it or figures out the real cause and fixes it.
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan

kenzu38
Posts: 279
Joined: Sun Dec 02, 2012 8:52 am

Re: Undefined Player.Class1

#9 Post by kenzu38 » Mon Oct 05, 2015 7:11 am

How about adding a wait til a proper class is defined? And maybe add in a timeout.

User avatar
beanybabe
Posts: 647
Joined: Wed Mar 06, 2013 1:27 am

Re: Undefined Player.Class1

#10 Post by beanybabe » Mon Oct 05, 2015 8:20 am

that is effectively what that "return" does if the class is -1 it return and retrys getting the class. i have run this for a couple weeks and seen no real problem but so much code reacts with each other its like Rock said. We can try it and hopefully there are no side effects to it.

There still seems to be some class error with wardens even with fix. On Wardens I have noticed some errors related to combat and leaving combat. Hopefully that can be tracked down after more people get past the class1 error this fixes. It may just be a error in the player profile of mine. The bot has updated the default.xml many times and if you copy your player profiles over each update you may miss some important changes.
If you get errors with attacks and combat make sure to update the player profile to what is in the default.xml player profile.

kenzu38
Posts: 279
Joined: Sun Dec 02, 2012 8:52 am

Re: Undefined Player.Class1

#11 Post by kenzu38 » Tue Oct 06, 2015 6:26 am

Hmm, so if it keeps retrying til it gets the class, the question is what is the interval between retries.

If it's slow then I see some problems for people who are running WPs where their characters need to fight strong mobs. It could mean their characters getting killed if the skills haven't been loaded properly.

User avatar
beanybabe
Posts: 647
Joined: Wed Mar 06, 2013 1:27 am

Re: Undefined Player.Class1

#12 Post by beanybabe » Tue Oct 06, 2015 11:37 am

I have been running it for couple weeks now with no problem. It only seems to retry 1 time the class error seems to be a timing related bug but the code was to complex for me to trace it. This patches it till the real problem can be discovered.
If you are good at code you might try tracing back and find what causes it to get -1 some times.

kenzu38
Posts: 279
Joined: Sun Dec 02, 2012 8:52 am

Re: Undefined Player.Class1

#13 Post by kenzu38 » Tue Oct 06, 2015 5:07 pm

Well, I've read a post here just some time ago regarding delays on HP updates, this is probably connected to that. Might be the client is updating slow.

In any case, I just edited my settings.lua file. Will just report here if there's some problems.

Post Reply

Who is online

Users browsing this forum: Google [Bot] and 8 guests