Page 1 of 2

Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Mon Jan 25, 2010 5:55 pm
by TopaZ
Hello all.
When i create char (human mage) and starting bot with default 1-10 lvl profile, after inventori update he speaks that he didn't found Gift Bag and after some fighting he speaks that he didn't see mp, hp pots, but i already have opened a gift bag and pots are in inventori. And he don't lvlup my skills. How to fix this problem?
Client language is Russian.

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Mon Jan 25, 2010 7:59 pm
by Administrator
Client language is Russian.
There's your problem. Skill and item information is missing for the Russian translation.

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 2:16 pm
by VoiD
Can't you all just set the client to English while boting and then if you really have to set it back to w/e language you like while playing ? :S

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 4:50 pm
by TopaZ
Thx for reply.
Administrator wrote:
Client language is Russian.
There's your problem. Skill and item information is missing for the Russian translation.
Will you return missing information in future versions?
VoiD wrote:Can't you all just set the client to English while boting and then if you really have to set it back to w/e language you like while playing ? :S
It is posible to connect to Russian server with English client? If yes then how will be work Updater in this situation? And where to edit IP adress?

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 4:58 pm
by Administrator
Will you return missing information in future versions?
I don't speak a word of Russian. I need someone to fill in the holes for me. If you look at the XML files in rom/database/, you'll see just about everything you need.

First things first, I would begin by checking the item IDs and making sure they match. Set:

Code: Select all

<option name="DEBUG_INV" value="true" />
in your profile. Put the potion/bag/whatever in the very first slot of your very first bag (this just makes it easier to work with). Run the bot and pause it as it is mapping the inventory (you should see a bunch of blue DEBUG messages). The very first DEBUG line should give out the item ID, name, and stack size. What does it say?

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 5:41 pm
by TopaZ
Administrator wrote: I don't speak a word of Russian. I need someone to fill in the holes for me. If you look at the XML files in rom/database/, you'll see just about everything you need.

First things first, I would begin by checking the item IDs and making sure they match. Set:

Code: Select all

<option name="DEBUG_INV" value="true" />
in your profile. Put the potion/bag/whatever in the very first slot of your very first bag (this just makes it easier to work with). Run the bot and pause it as it is mapping the inventory (you should see a bunch of blue DEBUG messages). The very first DEBUG line should give out the item ID, name, and stack size. What does it say?
I already did Debug INV and he prints this (looks like without item IDs):
Image
And i already checked IDs of Gift Bags from client with bot database (i used macro "SendSystemChat(tonumber(string.sub(GetBagItemLink(GetBagItemInfo(1)), 8, 12), 16));" for this) and IDs are match.

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 6:25 pm
by Administrator
Based on that, it looks like it's having trouble parsing your item links for some reason or other. Can you get me a copy of your item links for a potion or gift bag? It should look like this:

Code: Select all

|Hitem:33BF1|h|cff0000ff[eeppine ase]|r|h

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 7:06 pm
by TopaZ
Administrator wrote:Based on that, it looks like it's having trouble parsing your item links for some reason or other. Can you get me a copy of your item links for a potion or gift bag? It should look like this:

Code: Select all

|Hitem:33BF1|h|cff0000ff[eeppine ase]|r|h
Sry for noobie question. How to get item link?:)

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 7:56 pm
by Administrator
Type this into the chat:

Code: Select all

/script EditMacro(3, 'itemlink', 1, GetBagItemLink(GetBagItemInfo(1)))
This will, however, rewrite your macro 3 slot, so change the 3 to something else if you need to. The 1 in GetBagItemInfo(1) will change which item you want to get the link for. You can then grab the link by typing in '/macro', opening up macro 3 (or whichever macro you changed it to), then copy the link out of it.

Just for reference, see: GetBagItemLink

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 8:10 pm
by TopaZ
Administrator wrote:Type this into the chat:

Code: Select all

/script EditMacro(3, 'itemlink', 1, GetBagItemLink(GetBagItemInfo(1)))
This will, however, rewrite your macro 3 slot, so change the 3 to something else if you need to. The 1 in GetBagItemInfo(1) will change which item you want to get the link for. You can then grab the link by typing in '/macro', opening up macro 3 (or whichever macro you changed it to), then copy the link out of it.

Just for reference, see: GetBagItemLink
Thx.

Code: Select all

|Hitem:31478|h|cffffffff[Мешок с подарками из Логара]|r|h
Hm. When i copy a link from macro he still paste the name of the item without a link.

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 8:44 pm
by Administrator
Try this...open up rom/classes/item.lua, go to line 135. You should see this:

Code: Select all

	local s,e, id, color, name = string.find(itemLink, "|Hitem:(%x+).*|h|c(%x+)%[([%w%p%s]+)");
Replace with this:

Code: Select all

	local s,e, id, color, name = string.find(str, "|Hitem:(%x+).*|h|c(%x+)%[(.+)%]|r|h");
Save it. Now it should work. Confirm this by seeing if 'Id' is now printed out when debugging the inventory.

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 9:12 pm
by TopaZ
Administrator wrote:Try this...open up rom/classes/item.lua, go to line 135. You should see this:

Code: Select all

	local s,e, id, color, name = string.find(itemLink, "|Hitem:(%x+).*|h|c(%x+)%[([%w%p%s]+)");
Replace with this:

Code: Select all

	local s,e, id, color, name = string.find(str, "|Hitem:(%x+).*|h|c(%x+)%[(.+)%]|r|h");
Save it. Now it should work. Confirm this by seeing if 'Id' is now printed out when debugging the inventory.
I did that you said. When updating inventori got error:

Code: Select all

scripts\rom/bot.lua:170: onLoad error: ...nes of Magic/micromacro/scripts/rom/classes/item.lua:135: bad argument #1 to 'find' (string expected, got nil)   

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 9:14 pm
by Administrator
Sorry, replace 'str' with 'itemLink' in that example I gave in the last post.

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 9:46 pm
by TopaZ
Administrator wrote:Sorry, replace 'str' with 'itemLink' in that example I gave in the last post.
yee, now Debug see IDs and opening Gift Bag etc. Thx you so much:) But here another error. When i create new char and start the bot he updating inventori and opening the gift bag and after another updating invetori print error:

Code: Select all

DEBUG item:update(): slot 1 bagId 61 Id 221668
scripts\rom/bot.lua:170: onLoad error: ...nes of Magic/micromacro/scripts/rom/cl
asses/item.lua:57: bad argument #2 to 'sprintf' (got nil)
After this i again starting the bot and after update invetori he dont print any errors.. Whats wrong?

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 10:16 pm
by Administrator
There is something wrong with your onLoad event in that profile. It might be related to trying to use an item. It's hard to say without seeing the profile.

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 10:37 pm
by TopaZ
Administrator wrote:There is something wrong with your onLoad event in that profile. It might be related to trying to use an item. It's hard to say without seeing the profile.

Code: Select all

<profile>
	<options>
                <option name="DEBUG_INV"		value="true" />
		<!-- Try the bot with a new char mage                   -->
		<!-- At the pioneer village. Use demo.xml waypoint file -->
		<option name="HP_LOW"			value="65" />
		<option name="MP_LOW_POTION"	value="50" />
		<option name="HP_LOW_POTION"	value="60" />

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

		<!-- Shopping options, how many of what do you want to keep in your inventory -->
		<option name="HEALING_POTION"	value="0" />
		<option name="MANA_POTION"		value="0" />
		<option name="ARROW_QUIVER"		value="0" />
		<option name="THROWN_BAG"		value="0" />

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

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

		<!-- Waypoint and movement settings -->
		<option name="WAYPOINTS"			value="mylvl10/lvl1start" /> 	<!-- 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="0" />
		<option name="QUICK_TURN" 			value="true" />

		<!-- Loot settings -->
		<option name="LOOT"					value="false" />
		<option name="LOOT_IN_COMBAT"		value="true" />
		<option name="LOOT_DISTANCE"		value="100" />
		<option name="LOOT_PAUSE_AFTER"		value="0" />		<!-- probability in % for a short rest -->

		<!-- 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="false" />
		<option name="RES_AUTOMATIC_AFTER_DEATH" value="true" />


		<!-- 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="friendname1" />
		<friend name="elitemob K\132fer" />
		<friend name="elitemob H\129ter" />
	</friends>

	<hotkeys>
		<!-- to communicate with the RoM API / define ingame a 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             -->
	<skills_mage>
		<skill name="MAGE_FLAME"              hotkey="VK_3" priority="80" />
		<skill name="MAGE_ELEMENTAL_CATALYST" hotkey="VK_2" priority="30" hpper="30" inbattle="true" />
	</skills_mage>

	<skills_priest>
		<skill name="PRIEST_SOUL_SOURCE" hotkey="VK_4" priority="110" hpper="25" inbattle="true" />
		<skill name="PRIEST_URGENT_HEAL" hotkey="VK_2" priority="99" hpper="30"  />
		<skill name="PRIEST_RISING_TIDE" hotkey="VK_3" priority="70" level="" />
	</skills_priest>

	<skills_warrior>
		<skill name="WARRIOR_SLASH"          hotkey="VK_2" priority="90" />
	</skills_warrior>

	<skills_scout>
		<skill name="SCOUT_SHOT"        hotkey="VK_2" priority="90" />
		<skill name="SCOUT_AUTOSHOT"    hotkey="VK_4" priority="80" />
	</skills_scout>

	<skills_rogue>
		<skill name="ROGUE_SHADOWSTAB"  hotkey="VK_2" priority="90" />
	</skills_rogue>

	<skills_knight>
		<skill name="KNIGHT_HOLY_STRIKE"  hotkey="VK_3" priority="90" />
		<skill name="KNIGHT_HOLY_SHIELD"  hotkey="VK_4" priority="80"  inbattle="true" hpper="15" />
		<skill name="KNIGHT_HOLY_SEAL"    hotkey="VK_5" priority="70" />
		<skill name="KNIGHT_PUNISHMENT"   hotkey="VK_2" priority="60" />
	</skills_knight>

	<skills_druid>
		<skill name="DRUID_RECOVER"		hotkey="VK_2" priority="90" hpper="30" />
		<skill name="DRUID_EARTH_ARROW"	hotkey="VK_3" priority="80" />
	</skills_druid>

	<skills_warden>
		<skill name="WARDEN_CHARGED_CHOP"	hotkey="VK_2" priority="90" />
		<skill name="WARDEN_ENERGY_ABSORB"	hotkey="VK_3" priority="80" inbattle="true" hpper="25" />
	</skills_warden>

	<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 killing an enemy
   </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
                        if(player.Level == 5) then
			sendMacro("UseBagItem(GetBagItemInfo(1));");
		        end;

                        if(player.Level == 3) then
			sendMacro("UseBagItem(GetBagItemInfo(2));");
		        end;

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

			-- open giftbag and equipt 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>
Looks like no problems with onLoad.

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Tue Jan 26, 2010 11:44 pm
by Administrator
Works for me. Try opening up rom/classes/item.lua, go to line 57. You'll see this:

Code: Select all

		cprintf(cli.lightblue, "DEBUG - Use Item BagId: #%s ItemCount: %s\n", self.BagId, self.ItemCount );
Change to:

Code: Select all

		cprintf(cli.lightblue, "DEBUG - Use Item BagId: #%s ItemCount: %s\n", tostring(self.BagId), tostring(self.ItemCount) );
Now, what does the DEBUG message say?

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Wed Jan 27, 2010 12:45 am
by TopaZ
Administrator wrote:Works for me. Try opening up rom/classes/item.lua, go to line 57. You'll see this:

Code: Select all

		cprintf(cli.lightblue, "DEBUG - Use Item BagId: #%s ItemCount: %s\n", self.BagId, self.ItemCount );
Change to:

Code: Select all

		cprintf(cli.lightblue, "DEBUG - Use Item BagId: #%s ItemCount: %s\n", tostring(self.BagId), tostring(self.ItemCount) );
Now, what does the DEBUG message say?

Code: Select all

Update inventori
DEBUG item:update(): slot 2 bagId 62 Id 0 name  qty 0
DEBUG item:update(): slot 3 bagId 63 Id 0 name  qty 0
.....................

Use Gift Bag lvl1
Equip Ring
Update inventori
DEBUG item:update(): slot 5 bagId 65 Id 0 name  qty 0
......................

DEBUG item:update(): slot 1 bagId 61 Id 221668
DEBUG - Use Item BagId: #61 ItemCount: nil
scripts\rom/bot.lua:170: onLoad error: .../Runes of Magic/micromacro/scripts/rom
/functions.lua:749: bad argument #1 to 'sprintf' (got nil)
Hm, this error seems only just on opening 1 and 2 Gift Bag. After 2lvl looks like no errors. Ill try to lvlup 10 lvl and check for more errors on opening Gift Bag.
Can bot open Gift Bag without equip the items?

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Wed Jan 27, 2010 5:15 am
by Administrator
Are you sure you did this right?

If you have DEBUG_INV turned on (as you should), it will say something like:

Code: Select all

DEBUG item:update() slot 1 bagId 61 Id 20063 name Simple First Aid Potion qty 15
If you aren't getting all of that information, then there is something wrong with the item link parser (which is what I told you to change in the post I linked).

Re: Bot didn't see Gift Bag, Pots and don't lvlup my skills.

Posted: Wed Jan 27, 2010 7:16 am
by TopaZ
Administrator wrote:Are you sure you did this right?
Yeh, i sure. I didn't anything wrong coz this only copy/paste :)
Administrator wrote: If you have DEBUG_INV turned on (as you should), it will say something like:

Code: Select all

DEBUG item:update() slot 1 bagId 61 Id 20063 name Simple First Aid Potion qty 15
With this all ok:

Code: Select all

DEBUG item:update(): slot 2 bagId 62 Id 200663 name ╨б╨╗╨░╨▒╨╛╨╡ ╨╖╨╡╨╗╤М╨╡ ╨┐╨╡
╤А╨▓╨╛╨╣ ╨┐╨╛╨╝╨╛╤Й╨╕ qty 77
Errors are only on 1,2,5 opening Gift Bags. It's not so big problem coz i can open a Gift Bag with sendMacro UseItemByName, but not sure if this will work with Russian words.