Coder Social home page Coder Social logo

openkore / openkore Goto Github PK

View Code? Open in Web Editor NEW
1.2K 234.0 1.0K 367.96 MB

A free/open source client and automation tool for Ragnarok Online

Home Page: http://openkore.com

License: Other

Makefile 0.06% Python 19.35% Perl 59.71% Shell 0.17% C 10.21% C++ 4.05% HTML 1.69% CSS 0.28% JavaScript 0.13% Batchfile 0.06% Ruby 0.02% XS 0.34% NSIS 0.08% Assembly 1.84% PHP 1.84% C# 0.12% XSLT 0.04% Hack 0.01%
ragnarok bot perl automation game mmo mmorpg ai

openkore's Introduction

logo

Language

Stars Fork Watch

Issues Pull Requests Contributors

Github_Workflow_status Github_Workflow_CI

  • OpenKore is a custom client and intelligent automated assistant for Ragnarok Online.
  • It is a free, open source and cross-platform program (Linux, Windows and MacOS are supported).

Prerequisites

To run OpenKore you will need:

Quickstart

  1. Download OpenKore and extract it. Alternatively, you could press the Windows Key + R, type in cmd & enter. Run the following command in the cmd to clone. Note: Git required.
git clone https://github.com/OpenKore/openkore.git
  1. Configure OpenKore: documentation.
  2. Run openkore.pl (You can run start.exe or wxstart.exe if you use Windows).

F.A.Q. (Frequently Asked Questions)

  1. Have a problem?
    • Update your openkore or download a new one.
  2. Still having problems?
  3. Cant find what you need? / Do not understand?
  4. Is it a problem in Openkore?

Things to know

  • Make sure you've read FAQ especially to run latest commit on master branch & checking existed issue for your request.
  • Please post in English.
  • Please use the issue template.
  • Please include informations about your server & any changes you did in your configuration.
  • Briefly explain what happened, take a screenhot & include the error message (If available).
  • Please be advised any developers here are doing this on their free time. Please give some time for anyone to respond.

Status of botting on Official Servers

Server Description Protection Status Supporter
aRO Asia RO CheatDefender Not working N/A
bRO Brazil RO EAC Not working N/A
cRO China RO nProtect Botable N/A
euRO Europe RO Frost Security Not working N/A
euRO-Prime Europe RO (Prime) Frost Security Not working N/A
iRO Renewal International RO EAC Not working N/A
idRO Indonesia RO EAC Not Working N/A
idRO-Retro Indonesia RO (Retro) Delphine Not Working N/A
jRO Japan RO nProtect Need Verification N/A
kRO Korea RO nProtect Botable N/A
kRO-Zero Korea RO (Zero) nProtect Botable N/A
ruRO-Prime Russia RO (Prime) Frost Security Not Working ya4ept
tRO Thailand RO EAC Not Working N/A
tRO-Classic Thailand RO (Classic) EAC Not Working N/A
twRO Taiwan RO CheatDefender Not Working N/A
vRO Vietnam RO nProtect Not Working N/A

Contributing

OpenKore is developed by a team located around the world. Check out the documentation and if necessary, submit a pull request.

Contacts

Warning

Other communities or websites are not affiliated to openkore.com

Other Links

  1. Openkore History
  2. Legacy Changelog
  3. Openkore RoadMap
  4. Feature Requests and TODO Wiki and Feature Requests GitHub

License

This software is open source, licensed under the GNU General Public License, version 2. Basically, this means that you're free to use and allowed to modify and distribute this software. However, if you distribute modified versions, you MUST also distribute the source code.

See http://www.gnu.org/licenses/gpl.html for the full license.

openkore's People

Contributors

alisonrag avatar allanon avatar bottlerpb avatar c4c1n6kr3m1 avatar chrstphrr avatar cydh avatar delawr0190 avatar fadreus avatar farrainbow avatar flacrasec avatar hemagx avatar henrybk avatar hexhexd avatar isieo avatar itsrachelfish avatar kaliwanagan avatar keplerbr avatar klabmouse avatar koooge avatar lastroze avatar lututui avatar mortimal avatar nipodemos avatar ovokore avatar sctnightcore avatar smallvill3 avatar snop222 avatar technologyguild avatar windhamwong avatar ya4ept avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openkore's Issues

Quest killcount

Some server never send 'quest_all_mission' or 'quest_all_list2' packets or never update the 'goal' key in kill count quests until we kill at least one of whatever the quest wants us to kill, and even so when me change map or teleport (?) we lose that info. On some quests like eden equipment quest on payon cave that becomes a problem since when we leave pay_dun00 to go to pay_arche we lose the 'goal' key and as soon as we pass the portal kore doesn't know if the quest is complete anymore.

There could be a quest_killcount_db.txt in tables with all the killcount quests. It could be generated from a emulator file like this one from brAthena:
https://github.com/brAthena/brAthena/blob/master/db/quest_db.conf

And when the server finally gives us information of the 'goal' key we could check if it exists in quest_killcount_db.txt (and if not, add it) and if it matches the info we have from the file (and if not, change it).

High CPU usage in Win10

testing environment:
version: OpenKore SVN 9014 (Not latest, but similar)
CPU: Intel i5-3320M CPU @ 2.6GHz (4CPUs)
exe: start.exe
hours: 12hours
map: Rainbow tower 3F (ๅฝฉ่™นๅก”) (ecl_tdun03)
server: twRO

CPU goes 21 ~ 29% after 12hours runtime. RAM is around 183 ~ 229MB. The RAM usage seems like not limited by the system or compressed due to high usage. The user reported that it appears as an issue in Win10 only. It has no problem in Win7.

iRO Skills/Status

AB_PRAEFATIO#PRAEFATIO# - all caps
AB_LAUDAAGNUS#Laudaagnus# - spacing #Lauda Agnus#
AB_LAUDARAMUS#Laudaramus# - spacing #Lauda Ramus#
AB_SECRAMENT#Secrament# - spelling #Sacrament#

GC_COUNTERSLASH#์’ซCounter_Slash# - korean char

RA_DETONATOR#DETONATOR# - all caps
RA_CAMOUFLAGE#CAMOUFLAGE# - all caps

NC_ACCELERATION#cceleration# - missing letter #Acceleration#
NC_REPAIR#epair# missing letter #Repair#
NC_DISJOINT#FAW_divest# NC_DISJOINT#FAW_Divest#

WA_SWING_DANCE#SWING_DANCE# - all caps

GN_CARTBOOST#Cart_Boost# - #Geneticist_Cart_Boost#
GN_MIX_COOKING#"Mixed_Cooking# - quotation mark #Mixed_Cooking#

statusnametable
missing
EFST_GN_CARTBOOST Geneticist Cart Boost
EFST_ON_PUSH_CART Cart
EFST_STOP Standby

EFST_CLAN_INFO Clan Info
EFST_SWORDCLAN Sword Clan
EFST_ARCWANDCLAN Arc Wand Clan
EFST_GOLDENMACECLAN Golden Mace Clan
EFST_CROSSBOWCLAN Crossbow Clan

sending raw packet to login is it possible?

i played on a privateserver with encryption
i can sniff my login packet, and they are always the same.
can i send raw packet for username/password to login, like do send in macro?

Conection issue (bRO)

In today's update, the brazilian dristribution company LUG change the protection from ragexe, wich unable all standard users (without programming knowledge) to use openkore. Usually, after the weekly update, all we had to do is to use PackerBreaker on ragexe, which generated an alternative ragexe which we applyed the following perl script:

extrator.pl.txt

After that, we receive the src and tables folder, So all we need to do is paste then in openkore folder. But after this update, when we run openkore after doing this process, we receive the following error:

Screenshot of error

I'm not sure If I was supposed to ask this here, but I could't find the directions anywhere else. I'm also interested in perl programming (i'm still crawling on the field), and If there are recomendations to where learn more about perl and openkore I would apreciate very much. I have an deep desire to help the community to grow. Thank you very much!

Taiwanese files in the master branch

Hi @windhamwong just wanted to let you know that you committed Taiwanese translated files to the master branch yesterday. 05f6a37

Now when anyone downloads the packaged openkore zip the files are no longer in english.

I am going to revert these changes, and please be more careful next time.

Char Deletion

Afaik, the 'new' char deletion (that u request first, then get the deletion date) needs new delete packet. Can't get info from current kore.

So this is the packet that sends by client (from @rathena)

<0829>.W <char id>.L <birth date:YYMMDD>.6B

the birthdate, may becomes email or another code depends on server's policy

problem connecting to locally hosted rAthena

After following all relevant guides and forum posts I could find, openKore gets rejected at character selection for unknown packet version. It seems like the most obvious potential problem would be that the client is 2015-09-16a, and the versions in src/network seem to stop updating in 2013. Is openKore compatible with later client versions? Through posts on the forums I was able to use PEEK and an
edited script to get recvpackets.txt, and WPE to get the info for servers.txt, but the serverType is still the last 2013ver. I already have all the servers packet info, but the network files seem to have much more than just the packets. If necessary, is there a way to use this to make updated networking files??

`//2015-09-16Ragexe
packet_ver: 53
packet_keys: 0x17F83A19,0x116944F4,0x1CC541E9 // [Napster]
0x0869,7,actionrequest,2:6
0x093E,10,useskilltoid,2:4:6
0x0877,5,walktoxy,2
0x08AC,6,ticksend,2
0x0936,5,changedir,2:4
0x089C,6,takeitem,2
0x092F,6,dropitem,2:4
0x0934,8,movetokafra,2:4
0x085E,8,movefromkafra,2:4
0x022D,10,useskilltopos,2:4:6:8
0x0873,90,useskilltoposinfo,2:4:6:8:10
0x095A,6,getcharnamerequest,2
0x0942,6,solvecharname,2
0x087F,12,searchstoreinfolistitemclick,2:6:10
0x0817,2,searchstoreinfonextpage,0
0x0920,-1,searchstoreinfo,2:4:5:9:13:14:15
0x0881,-1,reqtradebuyingstore,2:4:8:12
0x0835,6,reqclickbuyingstore,2
0x092E,2,reqclosebuyingstore,0
0x0948,-1,reqopenbuyingstore,2:4:8:9:89
0x089B,18,bookingregreq,2:4:6
// 0x094F,8 CZ_JOIN_BATTLE_FIELD
0x0961,-1,itemlistwindowselected,2:4:8:12
0x0969,19,wanttoconnection,2:6:10:14:18
0x0924,26,partyinvite2,2
// 0x0938,4 CZ_GANGSI_RANK
0x089E,26,friendslistadd,2
0x0960,5,hommenu,2:4
0x0941,36,storagepassword,2:4:20

// New Packet
0x097F,-1 // ZC_SELECTCART
0x0980,7,selectcart,2:6 // CZ_SELECTCART`

Any help would be greatly appreciated!!!

Here is all other relevant info:
Servers.txt
servers txt

server error: [Info]: clif_parse: Disconnecting session #3 with unknown packet version (p:0x022d,l:10).

okerror

[recvpackets.txt](https://github.com/OpenKore/openkore/files/327237/recvpackets.txt

Add priority to labels

Issues should have a priority label so they can be sorted based on importance. At the very least they should be: URGENT, HIGH, MEDIUM, LOW.

Pretty standard stuff.Thoughts?

IdRO Character Delete Problem

Dear mate,

i've problem with deleting character on idRO server.

here's screen shot :
openkore

rpe

time format is messed up.

old idRO deletion method didn't use deletion time,
now, charcater deletion is using time (1 min), after delete time reached, we need to enter pin/secret code. someone told me that idRO character deletion method is like iRO server.

Include compiled binaries in GitHub?

Should compiled binaries be included in the main GitHub repo? I'm thinking yes because it would mean people could simply click the "Download Zip" button and start using kore immediately, essentially equivalent to how the "openkore_ready" download site used to work.

Truncated message in system_chat

[idRO]
In some case, if the player's name is leading by A~F the player name will be truncated. Example if the player name is Alk____ (if with following message, will becomes "Alk___ Berkata : B>Hervor"), the message result in system_chat will be **"lk___ Berkata : B>Hervor"**.

the micc pattern is same like 'twRO'

    } elsif ($message =~ /^micc.*\0\0([0-9a-fA-F]{6})(.*)/) { #appears in twRO   ## [micc][name][\x00\x00][unknown][\x00\x00][color][name][blablabla][message]
        ($color, $message) = $message =~ /^micc.*\0\0([0-9a-fA-F]{6})(.*)/;
        $prefix = T('[S]');

But, for that truncated case, the '2nd' condition in system_chat will be failed, and throws to '3rd' condition.
A friend asked me to commit this

diff --git a/src/Network/Receive.pm b/src/Network/Receive.pm
index 2c90fd4..69e6f8e 100644
--- a/src/Network/Receive.pm
+++ b/src/Network/Receive.pm
@@ -1496,7 +1496,7 @@ sub system_chat {
        ($color, $message) = $message =~ /^micc.*\0\0([0-9a-fA-F]{6})(.*)/;
        $prefix = T('[S]');
    } elsif ($message =~ /^micc.{12,24}([0-9a-fA-F]{6})(.*)/) {
-       ($color, $message) = $message =~ /^micc.*([0-9a-fA-F]{6})(.*)/;
+       ($color, $message) = $message =~ /^micc.*?([0-9a-fA-F]{6})(.*)/;
        $prefix = T('[S]');
    } elsif ($message =~ s/^blue//g) {  # forces color blue
        $prefix = T('[S]');

At least, it works. xD

Status active timeout issue

Issue found in Network/Receive.pm
sub actor_status_active {

The line:
($args->{actor} = Actor::get($ID))->setStatus($status, $flag, $tick == 9999 ? undef : $tick);

We can see that the status is set to undef when $tick == 9999. However, we see that this time tick variable can be higher than 9999, i.e. 240000 for 240s. So what makes the logic here stick with, undef when 9999?

Stuck during route_Tool Dealer / iRO

Hello, I am using the iRO_update version, 1 month ago was not happening these STUCK errors now when the kore talk to any NPC Tool Dealer, this locking and is looped , wanted to know if it was from the ( recvpackets ) until redid the process of the extractor, and tried to update ( fields ), but without success.

Oh, I think I understand where Kore will autobuy / sell it ends up giving Stuck route , googled about it but could not comprender as correct .

http://forums.openkore.com/viewtopic.php?f=56&t=18916

Initiating auto-sell.
Calculating auto-sell route to: Morroc Ruins(moc_ruins): 114, 63
Tool Dealer: Type 'store' to start buying, or type 'sell' to start selling
Ready to start selling items
Done talking with Tool Dealer.
Auto-sell sequence completed.
Calculating auto-storage route to: Morroc Town(morocc): 156, 97
Stuck at moc_ruins (116,63), while walking from (116,63) to (159,37).
Stuck during route.

I am using a macro to relog when Kore get stuck, but if they can help me how to fix these errors, whether they are related to the npc or other factors.

Thank you Gentlemen

Confusing language used when deleting characters

In the current character delete code, there is a lot of broken english and prompts that don't necessarilly make sense. For example, when a character is marked for deletion it says "your character is lefting [timestamp]" as in... "your character won't be deleted until [timestamp]"? At least that's what I think it means...

Also when you are prompted to confirm the deletion, you are asked for a birthday / security code, however, when you actually submit the information, it says the email you entered is incorrect.

skill fail on Summon Spirit Sphere @ spirit < 5 and Skill Level < 5

as discussed at IRC we thought/supposedly, if the level of Summon Spirit Sphere to use is not declared, it must not get stuck trying to reuse the skill over and over, just making sure all the spirit slot are filled -- correct me if this assumption is wrong

my config

useSelf_skill Summon Spirit Sphere {
  sp > 20
  spirit < 5
  notWhileSitting 1
  notInTown 1
  disabled 1
}

error:

[Jun 5 03:49:19 2016.36] You gained a job level!
[Jun 5 03:49:19 2016.36] You have gained 405/0 (0.59%/0.00%) Exp
[Jun 5 03:49:19 2016.39] Auto-adding skill Summon Spirit Sphere to 1
[Jun 5 03:49:20 2016.56] You use Summon Spirit Sphere on yourself (Lv: 1)
[Jun 5 03:49:20 2016.66] Skill Summon Spirit Sphere failed: Requirement (error number 10)
[Jun 5 03:49:21 2016.68] Skill Summon Spirit Sphere failed: Requirement (error number 10)
[Jun 5 03:49:22 2016.70] Skill Summon Spirit Sphere failed: Requirement (error number 10)
[Jun 5 03:49:23 2016.71] Skill Summon Spirit Sphere failed: Requirement (error number 10)
[Jun 5 03:49:24 2016.72] Skill Summon Spirit Sphere failed: Requirement (error number 10)
[Jun 5 03:49:25 2016.76] Skill Summon Spirit Sphere failed: Requirement (error number 10)
[Jun 5 03:49:26 2016.74] Skill Summon Spirit Sphere failed: Requirement (error number 10)
[Jun 5 03:49:27 2016.77] Skill Summon Spirit Sphere failed: Requirement (error number 10)
[Jun 5 03:49:28 2016.80] Skill Summon Spirit Sphere failed: Requirement (error number 10)
...

vender command right-truncates newly allowed higher prices.

iRO, and I believe, kRO, and possibly other official servers now support a price limit of 9999*10^5 (999,900,000z), but the table for a vender's shop is only wide enough to support the old limit of 99,999,999z, which causes prices over 100 million to to truncate the last zero in the display.

E.g. Vender Foo is vending Jellopy for 250,000,000z each (what a bargain!), the vender shop price in openkore will display as 250,000,00z

It's not a huge functional bug, but it is a bug

Managing tables file updates is a pain

  • The official maintainers of this game don't always make sane decisions about what goes in the GRF files. They put random utf8 characters in there and don't notice because the client doesn't render them. They put spaces after item names. They also seem to be somewhat unaware of how to spell and the rules of grammar.
  • The official maintainers of this game consider icons to be of equal value to text when deciding what to name things. OpenKore, on the other hand, uses item names for item management. While item IDs can be used in config files, they aren't nearly as easy to read. And macros can't easily select items based on item id. And humans looking at their inventory may have difficulty understanding the difference between two stacks of "Transparent Plate".

OpenKore can fix these things, but managing changes by multiple groups in a single file is difficult. Also, if the end user decides to make changes, they'll end up with merge conflicts which they may not notice, or may be unable to fix, preventing them from updating in the future.

To avoid this problem, I suggest we split the iRO files into four different files, each of which has a separate purpose. Taking items.txt as an example, we read three files containing item definitions, with the following priority:

  1. items-custom.txt - local modifications which shouldn't ever be checked into git, openkore users can put their changes here and not worry about having to deal with merge conflicts when they update the code from git
  2. items-openkore.txt - openkore modifications to fix things like whitespace, spelling, and non-unique names
  3. items-official.txt - an exact copy of the upstream version of this file (ie, extracted from the official client's GRF file)

The items.txt file itself just includes these three files, and should never change unless we want to include another file for some reason.

Other servers may choose to follow this example, or not, as they please.

Problem with hooks deleting and plugins

I found a possible bug in the way openkore deals with the deletion of hooks in plugins.

If a function inside a plugin is called by a hook and this same function deletes the hook that called it, others hook calls may not work on that call.

Code exemple I used to reproduce this bug:
Plugin 1:

package testPlugin1;

use strict;
use Log qw(message debug error);

Plugins::register('testPlugin1', 'tests stuff');

my $hooks = Plugins::addHooks(
    ['test_plugins_bug', \&hook_test]
);

sub hook_test {
    message "[testPlugin1] This hook will delete itself now\n","success";
    Plugins::delHook($hooks);
}

return 1;

Plugin 2:

package testPlugin2;

use strict;
use Log qw(message debug error);

Plugins::register('testPlugin2', 'tests stuff');

my $hooks = Plugins::addHooks(
    ['test_plugins_bug', \&hook_test]
);

sub hook_test {
    message "[testPlugin2] Message hooked to 'test_plugins_bug' on function 'hook_test'\n","success";
}

return 1;

Plugin 3:

package testPlugin3;

use strict;
use Plugins;
use Log qw(message debug error);

Plugins::register('testPlugin3', 'tests stuff', \&on_unload);

my $chooks = Commands::register(
    ['callhook', 'call hook', \&callcommand]
);

sub on_unload {
   Commands::unregister($chooks);
   message "testPlugin3 plugin unloading or reloading\n", 'success';
}

sub callcommand {
    message "[testPlugin3] Hook 'test_plugins_bug' will be called\n", 'system';
    Plugins::callHook('test_plugins_bug');
    message "[testPlugin3] Hook 'test_plugins_bug' was called\n", 'system';
}

return 1;

When we type the command callhook on console twice we get this:

GitHub Logo

instead of the expected:

callhook
[testPlugin3] Hook 'test_plugins_bug' will be called
[testPlugin1] This hook will delete itself now
[testPlugin2] Message hooked to 'test_plugins_bug' on function 'hook_test'
[testPlugin3] Hook 'test_plugins_bug' was called
callhook
[testPlugin3] Hook 'test_plugins_bug' will be called
[testPlugin2] Message hooked to 'test_plugins_bug' on function 'hook_test'
[testPlugin3] Hook 'test_plugins_bug' was called

The hook on testPlugin2 is not called on the first command use, i don't know if that's a bug or a kore feature, bug I find it strange.

Remove links to SVN

All of the links to the project on SVN should be updated to point to GitHub instead.

Not a code issue, but making this issue here on GitHub anyway for project management / transparency reasons. If anyone wants to take initiative and update things feel free! Otherwise I'll take care of it tomorrow.

  • Wiki home page
  • Forum "links" section
  • IRC topic
  • Wiki SVN page
  • Other major wiki pages
  • SourceForge project page

openkore can't detect player

I've tried to get its recvpacket using PEEK / Packet Extractor V1 also can't, it said that the client is protected

Here's some information that might help :

[Ragnarok]
ip xxx
port 6900
master_version 14
version 30
serverType kRO_RagexeRE_2013_08_07a
serverEncoding Western
private 1
addTableFolders kRo/RagexeRE_2013_08_07a
charBlockSize 144

client file : https://www.dropbox.com/s/f6j6inyrrqrb28b/ragnarok.exe?dl=0

also there is an unknown switch : 09DD & 09DC
Please give me advise, thanks in advance!

re-working the Macro plugin to be even better and more useful

Pros of Macros vs Plugins

  • Delayed execution: running each line on different AI cycles, without losing context.

Pros of Plugins vs Macros

  • Multiple concurrent code sequences (generally triggered by commands and hooks) working together to achieve a common goal.

Adding delayed execution to plugins might be possible with something like Coro or a source filter, but such things are likely to break as the language evolves.

Adding concurrent code sequences (ie, the ability to run another macro while a macro is running) should be totally doable.

Suggestion

  • Move all macro plugin globals into the AI sequence, so multiple macros can be executed without destroying each others' state.
  • Possibly provide a way to wake up a paused macro via another macro command, so that a macro can wait for a hook.
  • Possibly provide a direct way for a macro to wait for a hook to be called (but I worry that doing so would add a lot of conditional code into the main execution path of the macro).
  • Allow macros to run without an AI sequence. (Or maybe a "hidden" AI sequence?)

Open Questions

  • Should macros share any state? Eg, what about variables? Should there be a new syntax for "global" variables? Or a new syntax for "local" variables?

Example

macro quest_killcount {
  $quest_id = $.param1
  $quest_map = $.param2
  $quest_monster = $.param3

  # Go to the given map and kill the given monster.
  do conf lockMap $quest_map
  do conf attackAuto 2
  do mconf $quest_monster 1

  # Hide our AI sequence so that the normal AI will take over.
  # The macro must keep running in the background, even though the AI sequence is gone.
  hide_ai_sequence

  $complete = 0
  while ($complete = 0) {
    wait_for_hook quest_update_mission_hunt
    $complete = @eval( quest_complete($quest_id) )
  }

  # Take over the AI again.
  show_ai_sequence
}

sub quest_complete {
    my @questIds = @_;
    my $ncomplete = 0;
    foreach my $questId ( @questIds ) {
        my $quest = $questList->{$questId};
        next if !$quest;
        next if !$quest->{active};
        my $complete   = 0;
        my $incomplete = 0;
        foreach ( values %{ $quest->{missions} } ) {
            next if !$_->{goal};
            $_->{count} >= $_->{goal} ? $complete++ : $incomplete++;
        }
        $complete++ if $quest->{time} && time >= $quest->{time};
        $ncomplete++ if $complete && !$incomplete;
    }
    return $ncomplete;
}

fRO | buyAuto bug

fRO requires that a packet be sent to acknowledge buy and sell transactions. Until that packet is sent, the character cannot move. As a workaround, the character can either relog or teleport.

This broke sellAuto (and manual sell as well) until a fix was committed:
https://github.com/OpenKore/openkore/blob/master/src/Network/Receive/fRO.pm

But while selling now works, buying is still broken in the same way. It has been confirmed that the exact same packet (09D4) should be sent when buying is complete.

Please fix buyAuto and preferably the "buy" command as well.

autotalkcont bug

On some servers the lag sometimes makes openkore disconnect when talking to npcs if the config key autotalkcont is set to '1'

how to use of PEEK generate data 'PacketLengths.ini' about Shuffle_Packets tag??

hello,in TWRO i got PacketLengths.ini from PEEK.
And this file have 3 tag.
[Packet_Lengths]
[Packet_Keys]
[Shuffle_Packets]
i know [Packet_Lengths] tag data put in to recvpack.txt
[Packet_Keys] tag data put in to cryptKeys .
but i don't really understand hot to use this.

i try do this,
change about /src/Network/Send/tRO.pm
'08AB'

my %packets = (
    '08AB' => ['map_login', 'a4 a4 a4 V C', [qw(accountID charID sessionID tick sex)]],
my %handlers = qw(
    map_login 08AB

is it change this? about Shuffle_Packets?

thanks

Openkore gets stuck

Seems to hav a problem with my bot getting stuck inside buildings cant calculate a way out

Plugins missing

Some of the plugins are optional for installation however we should think about where can we put them.

Servertype for end of 2013 Clients

The Servers have no protection but packet parser unknown switch 09dd or 09db comes up and cant set it to Servetype because I dont know which packets they are can someone add them to the servertype 0

Npcs that need to be touched

Openkore has no good way of managing npcs that start conversation on their own when we get close to them, there should be a way to add this to both talk with them to skip unwanted npc chat (the sign and gael bolt quests) and to add suport for portals that interact this way (rachel airplane, nidhogg instance, rogue quest).

Documenting our new code review process

@allanon and I have been discussing changes we'd like to see in regards to the way that code is submitted into the project. When we were using SVN, anyone with commit access would write code and push it up whenever they felt like it. There was rarely any communication between developers before changes were made or even testing done on different platforms / servers.

We'd like to make the entire development process more reliable and transparent by utilizing pull requests here on GitHub. So far we've already started using it amongst ourselves, but official documentation should be written to replace the old SVN guides like these:

http://wiki.openkore.com/index.php/Patches_Welcome
http://wiki.openkore.com/index.php/Development_Conventions

tldr; Don't push to master. Make a pull request and have it approved by another developer first.

Version detection broken

Because of the migration to git, the automatic version detection no longer works:

*** OpenKore what-will-become-2.1 ( r? ) - Custom Ragnarok Online client ***
***   http://www.openkore.com/   ***

Selectively loading plugins...

We'll need to update the version detection code to use git and ideally provide a partial commit hash as well as a date.

Unknown packet 0a27 and always disconnect when open storage at IDRO

here my screen shoot, this problem at Midgard Server
untitled

i'm solve with 0A27 8 8 1, copy from iRo

and for storage problem at src\network\send\idro.pm i'm adding this

send_equip 00A9
storage_password 023B
sync 0360
character_move 035F
actor_info_request 0368
actor_look_at 0361
item_take 0362
item_drop 0363
storage_item_add 0364
storage_item_remove 0365
storage_password 023B
skill_use_location 0366
party_setting 07D7
buy_bulk_vender 0801

hope this solution could solve another user.

Another unknown packet found
untitled1

fRO moved servers?

We're getting reports from users on IRC that fRO no longer works in OpenKore. According to @hemagx, fRO recently moved servers a couple weeks ago and their IP addresses probably changed.

We should probably update the fRO connection block.

Screenshot of the issue:
openkore connection issue

Managing inventory lists

The way openkore manages inventory lists is very (awful) strange. Character Inventory is a class, storage inventory are two arrays and cart is a hash. I suggest we turn inventoryList into a abstract class with at least 3 subclasses: inventory, storage and cart, and maybe other ones later like vender inventory, deal inventory, buy_store_inventory, etc.

I made something like that last year, it works (at least for me), and it fixes many bugs.
Patch: http://pastebin.com/URRkTnLf

Bugs I remember it fixes:
Wrong item count checking when openkore teleports/changes map (all is 0)
ai_auto_storage not activating when character inventory is empty
character starting auto_storage because of wrong item checking

Note: This patch was apliable for openkore before git migration, it may need some changes now, it was just as axample and needs lots of rewritting and testing, I also never added support for xkore for it.

twRO is going back to Gravity, issue thread

Hello, twRO is now back to official Gravity now. The server just launched today, and we are now facing password login issue. Not sure is this the only issue we will have. If you have time you can have a look to the twRO_New branch. I will keep updating it with the latest Gravity settings.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.