« General | Main | OSS / Linux »
Monday, April 17, 2006
Poseidon server now has a picky
I've added a picky in the poseidon server. Later on I'll probably add a Kafra, an item, open the storage, some skills, and some stuff in the inventory of our poseidon character. I'm planning to convert the server from just being a game guard solution into being a packet sniffing platform.
After all, it was my brainchild XD I should be the one to know how to exploit the poseidon server's abilities. It's kinda amazing when I look back from when it was still called fakeServer.
Wednesday, April 12, 2006
Rule of Thumb
After being a forum moderator for a long time, I've formulated some conclusions that I managed to encapsulate into ruls of thumb. I'm gonna be posting rules of thumbs every now and then.
Rule of Thumb: There are no stupid questions. Only stupid people.
Thursday, April 06, 2006
pRO Ragnarok packet changes
Looks like pRO is in for a really difficult lenten season :)
LU! has decided to punish pRO botters for their sins by mutating the attack/sit/stand and skill use packets. Apparently, these are the only packets that changed, as the other packets (login, chat, etc.) have not. Which is only logical, since these abilities are actually the ones which cause botters an undue advantage over other players. By mutating these packets, LU! retains their business while levelling up (pun not intended) the playing field.
Of course one can still use OpenKore to route to faraway maps (conserving zeny for warps), snoop in PvP by revealing cloaked and hidden players, auto-loot the caverns of the zenorcs, and many other things that do not use the skill use and attack packets.
Hmm. I guess no auto-vending either :)
Tuesday, March 28, 2006
Trace of Battle
This is an iRO mini-quest (not sure if this is also available in the other ROs).
Before you start the quest, make sure you at least have these in your inventory:
- Green Potion x1
- Red Gem x1
-
Green Herb x1
Note that some of the NPC you will be encountering will poison you, so better have Detoxify as a skill or bring more Green Herbs than required.
Start by talking to the NPC at moc_ruins 66 164 Thief Trainer#T and he will mention something about this quest. You would need to go through each NPC in order in order to complete it.
Here are the NPC locations:
- moc_fild12 166 369 Trace of Battle#1
- moc_fild12 173 215 Trace of Battle#2
- moc_fild12 276 165 Trace of Battle#3
- moc_fild11 39 163 Trace of Battle#4
- moc_fild11 205 52 Trace of Battle#5
- moc_fild11 184 342 Trace of Battle#7
- moc_fild17 213 358 Trace of Battle#8
- moc_fild17 228 274 Trace of Battle#9
- moc_fild17 34 292 Trace of Battle#10
- moc_fild18 346 296 Trace of Battle#11
- moc_fild18 309 257 Trace of Battle#12
- moc_fild18 177 333 Trace of Battle#13
- moc_fild18 111 303 Trace of Battle#14
- moc_fild18 109 197 Trace of Battle#15
I can't seem to find the 6th Trace of Battle, but I was able to complete the quest anyway. I got quite a good amount of EXP (I wasn't able to check the Base exp as it made me level up, but the Job exp was 3,000). It would seem that all 1st job classes can do the quest, the only difference being the typeof loot you would get as a reward (as a thief I got an unslotted Mantle). Also, this quest is best made when your character is still low levelled, since this will boost your levels up without risk of dying.
Sunday, March 12, 2006
Progress reports
Since I'm still offline (as expected, the maintenance guy doesn't show up on Sundays) I'll just put here the things I've done so far:
- Minor cosmetic fix in 's' command
- Added descriptions of config options removeActorWithDistance and route_randomWalk_inTown
- Fixed disconnections when a guild member logs in/out
Saturday, March 11, 2006
Research results
We don't have any internet today, and probably won't have one until Monday morning. Damn the french for their long vacations X_X
So to a bit productive I conducted a little research on some of the stuff vivi had been nagging me about (i.e. plugins that would allow us to avoid our guild members). It won't be comprehensive and I won't be able to give tangible results yet since I won't be able to properly test it, but these compilations would serve as my notes for my future work.
I've installed Nezumi (a Freya fork) and was able to compile and run it. This is to help in testing some of my code while I'm offline, but I really prefer doing the testing on VistaRO where there are already a few people on the server.
Okay, time for some reports:
- Apparently, you can get a player's information just by sending the getPlayerInfo packet with a player ID (character ID?). OpenKore has had this functionality for quite some time now. In fact, we have a command called "getPlayerInfo" which does exactly that. Note: I'm not sure what will happen if you send a getPlayerInfo request on a player ID that is offline.
- You are able to get the account ID and the character ID from the guild_members_list packet.
- Combining the two bits of information above, it should be possible to retrieve the list of your guild members, bot your character, and then avoid any character that has the same account ID as one of your guildmates. We avoid those characters that share the same account ID because it is assumed that they are owned and played by the same person, and that we might get caught by our guild botting.
- Mr_Incredible has also been writing some kind of "big brother" plugin that is a huge improvement in the player recorder plugin by isieo. He plans to use the information gathered to create a more accurate version of mercdb.
- In line with mercdb, I'm planning to write a mini-version of the plugin called shopping. Just like the doCommand (which I consider to be a mini-macro plugin) shopping should allow me to visit vendors in (e.g.) Prontera and buy stuff according to conditions I specify. The plugin is intended to be used for automating the monotonous task of checking each vendor's shop window and comparing prices. This especially helps if you know what you're specifically looking for. For example, I'm currently looking for a mocking muffler. The plugin should (theoretically - I haven't written it yet) go around Prontera inside a set time, looking at all the vendors' shop windows, and at the end of the set time visit the merchants in order (from lowest price to highest price). The plugin should automatically buy the lowet priced mocking muffler it would find under the set time, up to a certain maximum price I'm willing to pay. The plugin should also be useful in buying low priced and "rush" items such as elunium, oridecon, etc. and beable to resell them at a higher price later on.
I also plan on doing some research on the following stuff, as well as finish some of the work I've done:
- Figure out the packet that shows the client the location of guildmates at the map.
- Add a "players" array to the webMonitor plugin
- Fix some of kadiliman's problems and generally make it more newbie friendly (this for-fun project is increasingly getting used for serious anti-anti-bot maneuvers, and I guess there is merit in having more people test it).
- Make some support code for the MediaServer, such as a classification function (poring, drops, poporing, marin, etc => poring; knife, stiletto, main-gauche, etc. => dagger; etc.)
- At least commit the login packets for serverType 7 (which is going to be used for the new Aegis 10.2 zone).
As usual, so many things to do and so little time X_X What OpenKore really needs are more dedicated developers as well as testers that can help while we all work for hauling OpenKore into version 2.0, and be able to continue to claim being the best bot for Ragnarok Online there ever was.
Saturday, February 11, 2006
bRO and XKore 1
Gameguard has *finally* upgraded themselves and added a check that prevents any dll hooks from running. If a dll hooks into the ragexe.exe in memory (such as xstools.dll or any of the various ro-assist tools) gameguard would close ragexe down. Either gameguard references the checksum, or scans memory for a signature.
Like I posted in the OpenKore forum, this change is welcome - in a manner of speaking. It has been really boring lately, and as evidenced by the various projects sprouting (xkore2, webMonitor, fakeServer/Poseidon, wiki, etc.) the bot functions themselves haven't been really touched. Only now that gameguard seems to be active again that OpenKore developers can flex their muscles.
Most of the OpenKore devs are more interested in the challenge rather than in-game success anyway (of course we have some that are interested in both). I hope Gravity releases the Alchemist skill tree for the homunculus ASAP to official servers. That should provide enough of a challenge in order to fully revamp the OpenKore AI. Also, I hope Gravity would speed up the implementation of the mercenary system (if there ever will be one).
Friday, January 27, 2006
Living in Angers
I have arrived, and just got an internet connection, so I can probably start to brush up on whatever is happening online.
For starters, it would seem that inRO had the same packet changes as bRO, pRO, as well as idRO had. Maybe the server operators are taking advantage of the fact that a good public fakeServer hasn'tbeen written yet? Well, let them sit on their laurels. As long as the primary weakness of their approach isn't addressed, fakeServer will get written - somehow.
For the server operators who read this blog, welcome :)
Thursday, January 19, 2006
bRO packet problems
Looks like the server update that struck bRO last night is a tough nut to crack. Instead of the game guard sync packet coming in every five minutes, game guard now checks the packets during login, as well as character selection.
Previously, botters would simply ignore the game guard packet and would just allow themselves to be disconnected. This doesn't prevent novice harvesters and mules from botting, since the accounts are expendable anyway. At this point however, the bot can only logon using XKore 1 (which takes care of the gameguard syncs) and thus is not really suitable for harvesters or multiple players on a single PC.
I may need to stop work on the webMonitor plugin for the meantime in order to do some updates on the fakeServer. As was discussed before, I'm planing to change it into something that's less of a strain on the host system. Roger - admin of the Brasilian OpenKore forums - made a test using the current game guard and hosted the server publicly. ~200 users were able to connect, but the server gave in after a few hours of hammering.
VCL suggested that I use a pull protocol, and said that HTTP is a good transport protocol. I guess I can use Base::Webserver for this, since I already have experience in using that module form the webMonitor plugin.
What I'm afraid of is that this packet change would also come to pRO. Not that I won't be able to bot anymore, but I'm already expecting that botters from pRO would definitely flood the forums (yet again) asking how to solve the problem. Or even ask questions like they know everything but actually know nothing X_X
Thursday, January 12, 2006
OpenKore webMonitor
Lately I've been very busy with the webMonitor that I haven't been able to update this blog. It's just that I enjoy coding more than I enjoy speaking my mind :)
Thursday, December 22, 2005
idRO Problems- solved
The packet problems in idRO got solved - not because of any action on our part, but because the idRO provider decided to change the serverType to 0.
It was a nice challenge though. Too bad it ended all so quickly.
At least we got some packet tools written. jojobaoil made a plugin to automatically dissect a packet, whch can be helpful for easily figuring out packet formats. Also, we had some promising people helping out - seems like the best talents can be found during a crisis.
Wednesday, December 21, 2005
idRO Packet Problems - more solutions
id-mardi had observed that the attack/sit/stand packets change only after a sync packet has arrived. After a closer inspection of the packets posted, it turns out that the packet morphs when the client *sends* the sync packet, not when it receives the response. This brings more to light the nature of how the attack/sit/stand packet changes in relation to time.
idRO Packet Problems - partial solution
So far, with the help of a few idRO players, I've managed to track down the similar packets between the old format and the new. The only problem packets that remain (and that have variable lengths) are:
- sendAttack (and along with it sendSit and sendStand since they use the same format)
- sendSkillUse
- sendSkillUseLoc
It would seem that idRO has changed the packets responsible for aggressive behaviors, while not changing those packets that are "benign" (i.e. will not cause an increase in level or zeny). Looks like idRO wants to curtail the bot population, but do not want to destroy their userbase. In my opinion, it's like a concession of sorts - bots still exist but can't harm nor take advantage of being automated, but they are also severely crippled. Bot users would probably hold on to their acocunts longer, and (they hope) would rediscover the fun of playing manually.
idRO Packet Problems
idRO just had their server maintenace today, and are experiencing severe problems regarding certain packet changes. Most notably, the attack/sit/stand packet has changed - it now has a variable length. This means that the packet length isn't fixed and changes randomly. There are other packet changes, but the attack/sit/stand packet is the most interesting.
This is really frustrating; not only would figuring out the packet format be complicated, but I have to deal with more morons flooding the forums with stupid posts.
Like we don't know what is happening with their server X_X
Thursday, December 15, 2005
OpenKore plugin: checkSelfCondition
I just made a plugin for OpenKore called checkSelfCondition. The plugin hooks into the checkSelfCondition call in Misc.pm and is designed to extend the function, incorporating various other checks that won't be needed by most people, but would be useful for power users.
Also, I want the plugin to serve as some sort of inspiration to other people on how easy it is to contribute to OpenKore. Even if they don't have CVS access, OpenKore's plugin subsystem allows contributors to share their work with other people and benefit from the peer-review process in open source development. After all, I started from coding plugins, until VCL gave me CVS write access to the project and named me a developer.
Friday, December 09, 2005
OpenKore 1.9.0 has been released
After a very long wait, OpenKore beta version 1.9.0 has been released. View the announcement here
This is the changelog:
==================
### 1.9.0
==================
*** INCOMPATIBLE CHANGES ***:
- NPC IDs are no longer supported, you must use the location syntax.
- A few more statuses have been renamed such as 'Cartboost' status renamed
to 'Cart Boost' for consistency with the skill name.
'Hide' to 'Hiding', too.
- \$remote_socket parameter removed from some Network/Send.pm functions:
sendCartAdd sendCartGet
- hp, sp options now have a new format.
hp > 50 - means more than 50hp
hp > 50% - means more than 50 percent of you hp.
- Old hp_upper,sp_upper removed, use hp sp instead
Old minAggressives, maxAggressives skill block options removed.
Use aggressives instead.
- You must use the new tables/emotions.txt or emotions won't work.
The "e" command now uses the RO client commands instead of the number.
- Vigor condensation renamed to Vigor Condensation for consistency
- equipAuto onTeleport changed to teleportAuto_equip_{slot}
equipAuto skills is no longer used, use <skill slot>_equip_<slot>
equipAuto syntax is changed, read below.
equipAuto_def is removed.
- spells.txt "Big Magic (SG/LoV/MS/GX)" renamed to "Big Magic".
- avoid_ignore_# is replaced with avoidGM_ignoreList (see below)
- equipAuto misses changed to target_misses
equipAuto totalMisses changed to target_totalMisses
- 'party create "<party_name>"' command renamed to
'party create <party_name>'.
- 'Pink Spring' renamed to "Roki's Weil" to match the skill name
in spells.txt (for whenGround/whenNotGround).
- All FileParsers must return 1 if the file was parsed successfully.
Otherwise, kore will bail out with an error.
- Warp Portal-related spells.txt entries translated from Japanese.
- Cards in item names are now separated by ':' instead of ',', because
',' is also used as a separator in a list of items.
- Obsolete command 'equipment' removed; use 'eq' instead.
Bug fixes:
- 'i' command now displays equipped arrows under Equipment (Equipped).
- Fix useSelf_item dcOnEmpty and getAuto buggyness caused by lag.
- Don't try to statsAddAuto before the stat point info has been received.
- Shop title in shop.txt is detected better.
- Fix autoTalkCont (caused next step to happen too fast).
- Don't redirect command output if XKore_silent is enabled.
- Fix "party leave" crash when not in party.
- Only teleport-on-hit from monsters if they do not miss.
- Hopefully fix daggersins' weapons ending up on the wrong hand.
- Guild auto deny timeout was not included in timeouts.txt.
Deal auto deny timeout was not being used.
- 'private 1' in servers.txt is also effective when changing map server.
- Fix crash with the weight command.
- Give an error if someone tries to storage an equipped item.
- Show unknown for public chat distance if player is off screen.
- Don't display PVP rank if you're not in PVP. (Workaround for server-side
bug that still sends you your PVP rank for some reason.)
- Detect NPC spawning (only happens when server first loads).
- Don't storage or cart-add pets if they are in use (caused disconnect).
- Show full class name in the pl # command.
- 'as' command works now when attacking players.
- Detect when a targeted player dies ("attack" ai_seq will be dequeued).
- Fix cartAuto crash bug for Perl 5.6. Caused by:
delete $cart{'inventory'}[$index];
- Don't show warnings when "vl" command has weird shops.
- Don't attempt to gather items near portals lest they suck you in.
- Fix avoid list for playerIDs near you.
- Faster buy/sellAuto conversation (Use steps "b e" and "s e" instead of "b").
- teleportAuto_hp responds faster now (is checked whenever you get attacked.)
- avoidGM was always happening if avoidGM_namePattern was blank.
- attackComboSlot fixed with Tiger Knuckle Fist and Chain Crush Combo.
- teleportAuto_equip should work for Teleport lv2 now too.
- Fix error message for if we are missing skill or item descriptions.
- Don't check cards on pet eggs (caused weirdly named eggs).
- Check storageAuto more reliably now (a bot logging in with insufficient
supplies will now storageAuto before lockMap).
- Replace "version # failed." with a better error message.
- Zeny added to a deal via 'deal add z <#>' will now be correctly added
when the deal is finalized automatically by dealAuto.
- Standpoint option in buyAuto and sellAuto did not work.
- Fixed mon_control <attack> syntax for monsters marked as Always
Aggressive (2). The bot won't attack anymore if the monster is
impossible to attack (blocked by walls) or if it is being already
attacked by someone else.
- Fixed monsters listed in the monsters condition of equipAuto now
doesn't necessarily have to be your attack target.
- encrypt/decrypt was mangling some packets (at least on serverType 2;
I'm not sure for the other RO's) causing disconnections and
unparsed erros.
- useSelf_skill equip_rightHand and similar constructs will now
correctly equip items whose names have commas in them.
- Command storage will now check first if the storage has been opened.
- Use sane default for $config{sleepTime} when it is missing from
Interface.pm.
- openkore will now realize immediately when a portals.txt NPC conversation
terminated prematurely.
- Guild member list is correctly refreshed when you type 'guild' now.
Previously, if you left a guild and joined another guild with less players,
then some of the players from the old guild would falsely show up in the
roster.
- Display walk speed in 'pl <#>' command at correct resolution.
- Avoid skill will move (3,3) instead of (2,2) blocks, e.g. for
avoiding Minorous' Hammer Fall. Hopefully this will work better.
- Match.pm can now be reloaded via 'rc' command (it wasn't registered properly
in openkore.pl).
- Match::inventoryItem() will no longer return false items in holes
in the inventory array.
- On servers with the new party packet (01E9) follower bot will now correctly
follow its master through portals.
- Bot should no longer cast teleport non-stop when teleportAuto_useSkill is 2,
teleportAuto_equip is set, and another player is on screen.
- attackLooters will check for mon_control settings before attacking looters.
New features:
- Console::Unix interface no longer has "Press ENTER to continue"
prompt, since UNIX terminals generally don't close when openkore exits.
- Your level/job level is now displayed when you level up.
- Player names are now cached, so that they don't have to be re-retrieved
as often. This can save a lot of bandwidth, especially when you're
walking in town.
- When teleportAuto_useSkill > 0, always cast Teleport skill if we are
trying to respawn to saveMap (lets us auto-detect it).
- You must specify target_dead 1 to use a skill on a dead person.
This will prevent any problems where the bot keeps trying to use a skill
like Heal or Blessing on someone who is dead.
- You can now attack looters even if the are normally ignored
set attackLooters to 1 in config.txt
- 'cart add' and 'cart get' commands now accept names.
- 'eq slots' displays list of slotnames
'eq slotname item' will try to equip item in slotname
- Fractional weight in inventory is now displayed.
- Show proper SP for all skills (auto-detected).
- Improved storage list, sorts the items by category like the real client.
- Emotion command now uses the real commands from the RO client.
Example: e thx
- When casting the Teleport skill, openkore will wait for the skill to
be successfuly cast before actually teleporting, unless this is an
emergency teleport (e.g. teleportAuto_deadly). (Looks less bot-like.)
Be sure to update timeouts.txt to get ai_teleport_retry and
ai_teleport_delay.
- Shop prices are now formatted with thousands separators.
- The 'vender' command now shows vender's name and index.
- Support "That person is in another deal." error.
- 'pl' command now displays everyone's level.
- tables/skills.txt: updated for almost all advanced class skills now.
- New "<player> got married!" message.
- Taekwon, Star Gladiator, Flying Star Gladiator and Soul Linker jobs
are now recognized.
- 'exp' command will now display number of bytes sent and received.
Helpful if you need to know your bandwidth usage.
- Error message when you specify an unknown skill name in skillsAddAuto.
- 'eq <item>' command now only matches unequipped items.
- When an item is identified, you will see its inventory index now.
- openkore will now return a fatal error if an !include file is missing
in config.txt.
- Bot will now follow its master through warp portals.
- 'guild info' command now displays ally list.
- The vending limit has been increased to 1 billion (1,000,000,000) zeny.
- Support for bulk-selling items with the 'sell' command. Items
are now put in a sell list instead of sold immediately.
See the 'New commands' section.
- 'i desc' command now accepts item names.
- (partial) support for oRO commercial servers. Use serverType 6 for this.
- New Win32::GUI interface. Run 'openkore --interface=Win32' to enable.
- New Brehensam checkLineSnipable() algorithm. Maybe it'll work better
in some cases, though it's still not perfect.
- Hunters that keep trying to shoot at something they don't really have
LOS to will now "Cannot reach or damage target, dropping target"
correctly (AI::args->{unstuck}{count}).
- Show coordinates of players when they are added/removed from 'pl'.
(TODO: Do this for monsters too.)
- Ability to bypass the RO client's bot detection (the "Do not use bots!"
message).
- Implemented 0189 no_teleport packet so that "Unavailable Area To
Teleport/Memo" message is now displayed.
- 'is' command now accepts item names.
- Implement fail code 2 in packet deal_add_you. (happens when you try to
trade wedding rings)
New commands:
- getplayerinfo (number)
Ask the server for the name of the object with that ID. You will not
see the reply unless you have debug level 2.
- storage addfromcart <cart_item> [<amount>]
storage gettocart <storage_item> [<amount>]
Support for adding/getting items directly to/from merchant cart
- storage [<eq|u|nu>]
Only list equipments (eq), usable (u), or non usable (nu) items.
- whoami
Displays your character and account ID.
- damage
Displays the monsters and skills that damaged you.
- help [command]
not new but updated and more useful
you get now all options for a specific command
- guild break <guild name>
Disband your guild.
- guild create <name>
Create a guild.
- guild kick <list number> <reason>
Kick a guild member out of the guild.
- storage desc <storage item #>
Display storage item description.
- eq
Lists what you are wearing in each equipment slot.
- take first
Takes the first item on the ground.
- The sell commands have been changed. The new sell commands are:
sell <inventory item #> [<amount>]
Put inventory items in sell list.
sell list
Show items in the sell list.
sell done
Sell everything in the sell list.
sell cancel
Clear the sell list.
- The exp commands have been changed. The new exp commands are:
exp
only shows exp
exp report
shows the old exp report (shows everything)
exp monster
shows monster killed count only
exp item
shows item change count only
exp reset
resets the exp report
New config options:
- partySkill: target_dist (range)
This is the same as target_dist for attackSkillSlot.
Only use the skill if the player is in the given range.
- partySkill: isSelfSkill (flag)
Use this skill on yourself after checking the party conditions.
Useful for Magnificat or Gloria.
- cachePlayerNames (flag)
Turns player name caching on or off.
cachePlayerNames_duration (seconds)
Cache player names for a maximum time of (seconds). The default is
900 seconds (15 minutes).
cachePlayerNames_maxSize (number)
Maximum cache size. The default is 100.
- storageAuto_keepOpen (flag)
Set to true if you want to keep storage open after storageAuto sequence.
Only enable this if you know what you're doing.
(Note: You cannot use items while storage is open.)
- itemsTakeAuto_new (flag)
Activates experimental new item taking code; might work better for
archers who keep failing to take items.
- "s" sequence for NPC talk steps; the client sends this when you click
"Sell" at a shop NPC.
- attackLooters (flag)
Enables Looter attack. (Warning attacks all monsters.).
Will only attack if item_pickup is not 0
- teleportAuto_dropTargetKS (flag)
Teleport if Kore drops target due to kill-steal. This is a workaround
for constantly dropping and selecting the same target.
- logConsole (flag)
Log everything that openkore prints on the console to logs\console.txt.
- attackAuto_notInTown (flag)
Don't attack monsters while inside a town.
- new option in buyAuto: zeny (range)
only buy if you have the specified Zeny
- teleportAuto_equip_{slot}
use this instead of equipAuto onTeleport
you can use all slots but it is recommended to
use only either right or left Accessory slot
- buyAuto now uses checkSelfCondition. This means you can now specify options
like hp, sp, and other options in useSelf* in your buyAuto config block e.g.
buyAuto Monster's Feed {
npc prontera 64 125
distance 5
minAmount 0
maxAmount 100
hp < 20%
inInventory Red Potion <5, Yellow Potion <2
}
- inCart
much like its inInventory counterpart and uses the same syntax. Use this to
check cart inventory before executing a config block.
- dcOnStorageFull (flag)
If the character's weight >= itemsMaxWeight_sellOrStore just after having
completed storageAuto, then log out because something is wrong.
- getAuto: dcOnEmpty (flag)
If true, kore will disconnect if the amount of the item in inventory plus
storage is below minAmount.
- dcOnLevel (level)
If true, then when you gain a level, kore will log out if you are now
>= the specified level.
- dcOnJobLevel (level)
Like dcOnLevel, but for job levels.
- avoidGM_ignoreList (list of names)
Ignore any player on this list when checking for GMs nearby.
- repairAuto (flag)
Automatically repair items when using the repair skill on players.
- teleportAuto_search (number)
Previously this was a flag. Now, set it to the minimum number of
search-monsters that must be on the screen (area attack bots can
use this to find mobs).
- attackComboSlot: autoCombo (flag)
This will automatically calculate the waitBeforeUse time for you.
- notOnAction condition (opposite of onAction)
- logAppendUsername (flag) this will add _username_char# to your log files
- items_control.txt: store flag 2
If you set the store flag to 2, it will automatically transfer items out of
your cart into storage as well as from the inventory. Example:
Zargon 0 2 0 1
Automatically put Zargon into the cart while leveling, then storage later.
- cartMaxWeight (weight amount)
Once the cart weight is above this amount, no longer auto add to cart.
Default in config.txt is 7900, 100 less than the maximum.
- timeouts.txt:
ai_cartAutoCheck 2
Check if we need to do cartAuto functions every x seconds.
- inMap and notInMap (list)
These shared block options are for using a block when you're (not) on a
certain map.
- itemsMaxNum_sellOrStore
Trigger the autosell AI sequence when the total amount of items in inventory is
equal to or exceeds the specified amount. Similar to itemsMaxWeight_sellOrStore
but uses amounts instead of weight percentage.
- equipAuto: target (monsters)
If this option is set, auto-equip when you are attacking any of the
specified comma-separated list of monsters.
- equipAuto:
target_deltaHp
target_dist
target_timeout
target_whenGround
target_whenNotGround
target_whenStatusActive
target_whenStatusInactive
These conditions are the same as those used in partySkill,
but tested on your target monster.
- route_maxNpcTries
Default 5. If an NPC conversation is used to reach your destination,
this is the maximum number of times it will try to talk to that NPC before
giving up and plotting an alternate path.
- XKore_bypassBotDetection
Set to 1 if you want Kore to try to bypass the RO client's bot detection.
This feature is experimental and has only been tested with the iRO client,
so enable this at your own risk!
- timeouts.txt: ai_route_npcTalk
Default 10. If an NPC conversation used to reach your destination takes
longer than this, it will assume failure.
- clientSight
Some private servers like Freya will send actor packets from a ridiculous
distance from the bot, and use this for automated banning. This config option
will make Kore ignore those actors and hopefully avoid auto-bans.
Internal:
- Obsolete getActorHash() function removed (use Actor::get() instead).
- The format of $npcs_lut has changed, IDs are completely abandoned.
- Attack AI routines should now support players as well.
- New Match::cartItem() function, similar to Match::inventoryItem().
- The S and L pack types have been completely removed. Do not use these
anymore; use v and V respectively.
- 'ai print' command should mangle less characters into '.'.
- Moved packets to Network/Receive.pm:
cart_item_added
cart_item_removed
item_used
- New whenFlag/whenNotFlag condition references %flags in checkSelfCondition.
Currently, only plugins or 'eval' command could change %flags so this is
only useful to developers (you can turn on/off groups of skill blocks easily
using %flags now).
- whenGroundStatus() now takes a third argument $mine which will make it only
check for spells originating from you.
- inventory/storage/cart item added/removed packets now set $args->{item}
so that plugins can access it.
- $ai_v{temp}{pvp} moved to $pvp because the former seems to get erroneously
cleared sometimes.
- New Actor#snipable method; boolean whether you have snipable LOS to the
actor.
- "Player Connected" did not trigger 'player' plugin call.
- Store $char->{attack_delay}. You attack once every
$char->{attack_delay}/500 seconds.
- Use bitshift-packing/unpacking to deal with coordinates in the protocol.
- Support new packets 0229, 022A, 022B, 022C, 01E9 which caused some official
servers (like mRO and pRO) to not handle actors correctly.
Credits:
- doenet: chatLangCode bugfixes.
- isieo: attackComboSlot fixes/improvements.
- piroJOKE: new emotions, new fields.
- hakore: commanddescriptions.txt, avoidGM_ignore/deltaHp fix,
standpoint bug, equipAuto bug, storage desc command, attackLooters fix
- illusionist: fix for force-aggressive monsters not being dropped when no LOS,
Follow master through warp portal.
- clovanzo: Louyang portals
- h4rry84: Auto Berserk/Preserve status support.
- jojobaoil: Bit-shift packing code, RO client bot detection bypassing,
network & XKore stack overhaul.
- amacc_boy: Win32::GUI interface
- woeisiong: improvement in exp command
- punkpudding: factor meditatio in smartHeal
- mondlicht, ZLord: clientSight
It's been one hell of a release, with really big changes in terms of features, internals, and overall performance.
Sunday, December 04, 2005
Rescuing Linux
Ahh, the irony of it all.
I tried updating my OpenSUSE using the edge repository, and I experienced a few segfaults while running some programs. It turns out glibc wasn't properly updated (I don't really know if it was my fault or if the edge repository was *that* unstable).
I had to boot into Windows and burn a new copy of the OpenSUSE DVD (I gave the original one away) in order to rescue my system. I'm especially glad of the way the filesystem is designed, as my /home and preferences remained the same way as I have customized them.
Most stories are about Linux rescuing Windows. Now I have experienced needing to use Windows (since that's the only other Operating System I have installed on this computer) to rescue Linux.