Rationale:
This is according to our Supported Platforms policy.
For an overview of supported OSes and compilers, please see the wiki page https://github.com/HerculesWS/Hercules/wiki/Supported-Platforms
Contents:
VS2015 is our primary target compiler on Windows, and this merge removes all the warnings that were present when compiling with that version of Visual Studio.
VS2010 isn't one of our supported platforms (and hasn't been for a while), so maintaining its solution inside the repository adds unnecessary work to the dev team.
Impact:
While it's currently still possible to build on VS2010 (download the files `Hercules-10.sln` and `vcproj-10/*` from an older snapshot of the repository such as https://github.com/HerculesWS/Hercules/tree/bbcb040 and put them in your Hercules directory), we offer no support for any build issues causd by future commits, nor we'll update the project/solution files.
Merge Date:
Sun, 24 Apr 2016 13:13:19 +0200
Related Pull Requests:
- #1264 - https://github.com/HerculesWS/Hercules/pull/1264 - V2015 improved compatibility and dropped VS2010 solution [Haru]
Related Commits:
- a92fa36 - https://github.com/HerculesWS/Hercules/commit/a92fa36 - Sun, 17 Apr 2016 13:37:08 +0200 Updated README file [Haru]
- e69e8c5 - https://github.com/HerculesWS/Hercules/commit/e69e8c5 - Sun, 17 Apr 2016 13:43:30 +0200 Removed VS2010 project [Haru]
- 3af03d2 - https://github.com/HerculesWS/Hercules/commit/3af03d2 - Tue, 19 Apr 2016 11:32:04 +0200 Improved parsing of the server name/port in the irc bot configuration [Haru]
- 2b1dce1 - https://github.com/HerculesWS/Hercules/commit/2b1dce1 - Tue, 19 Apr 2016 15:26:36 +0200 Changed map_session_data::chatID to int (and renamed to chat_id) [Haru]
- dc23fd3 - https://github.com/HerculesWS/Hercules/commit/dc23fd3 - Tue, 19 Apr 2016 16:31:57 +0200 Corrected the type for several variables through the code [Haru]
- e4feddf - https://github.com/HerculesWS/Hercules/commit/e4feddf - Wed, 20 Apr 2016 15:40:19 +0200 Corrected the type of the 'length' argument of various broadcast-related functions [Haru]
- d7ffa6a - https://github.com/HerculesWS/Hercules/commit/d7ffa6a - Wed, 20 Apr 2016 17:06:18 +0200 Removed the 'len' argument from clif_disp_onlyself() and clif->disp_message() [Haru]
- 4788c81 - https://github.com/HerculesWS/Hercules/commit/4788c81 - Thu, 21 Apr 2016 20:38:18 +0200 Removed the 'len' argument from various message-related functions [Haru]
- f5b88f9 - https://github.com/HerculesWS/Hercules/commit/f5b88f9 - Wed, 20 Apr 2016 17:23:03 +0200 Corrected the type of the 'length' argument of other message-related functions [Haru]
- 9e58db4 - https://github.com/HerculesWS/Hercules/commit/9e58db4 - Wed, 20 Apr 2016 17:24:37 +0200 Added some files specific to VS2015 (Update 2) to gitignore [Haru]
- 9fdb456 - https://github.com/HerculesWS/Hercules/commit/9fdb456 - Thu, 21 Apr 2016 20:57:56 +0200 HPM Hooks Update [Haru]
- 31e27a1 - https://github.com/HerculesWS/Hercules/commit/31e27a1 - Sun, 24 Apr 2016 13:13:19 +0200 Merge pull request #1264 from HerculesWS/vs2015 [ibrahem Hossam]
File Name: [Freebies] - Facebook Banner and Profile Picture with Logo Font
File Submitter: Daifuku
File Submitted: 23 Apr 2016
File Category: Other Graphics
Rationale: For ages we got awful looking code when it come to work with socket and packet, also this code was totally manually handled. so many possible mistake could happen and lot of hardcoded numbers, now with this update this will not happen anymore and compiler will take care of all of this. also with this update we introduce first Private header, the lclif ( Login Client Interface ) header, the private headers meant for functions should not be accessed from outside the source file, however this still accessible by plugins. this also will prevent a long not needed re-compile time for whole project when the changes only happens in private headers.
Contents: A total new client interface for login server (lclif.c/lclif.h). The first private header which meant for client interface in login server (lclif.p.h).
Impact: The impact of this changes can be huge if you have heavy modified login server as many functions removed, moved or rewrote. please be careful merging this update.
Details: Before we were dealing with packets in so ugly way and unsafe with hardcoded numbers and easy mistakes that were hard to be spoted, also we mixed code to parse packets with code to process them. With this update we separate packet parse and packet processing, and also we started to use structs instead of manual (offset-based) packet parsing and creation!
an example of how we were writing a packet to client before, and now.
Before: Here's an example of the server-list packet being sent to the player upon successful login
WFIFOHEAD(fd,47+32*server_num);
WFIFOW(fd,0) = 0x69;
WFIFOW(fd,2) = 47+32*server_num;
WFIFOL(fd,4) = sd->login_id1;
WFIFOL(fd,8) = sd->account_id;
WFIFOL(fd,12) = sd->login_id2;
WFIFOL(fd,16) = 0; // in old version, that was for ip (not more used)
//memcpy(WFIFOP(fd,20), sd->lastlogin, 24); // in old version, that was for name (not more used)
memset(WFIFOP(fd,20), 0, 24);
WFIFOW(fd,44) = 0; // unknown
WFIFOB(fd,46) = sex_str2num(sd->sex);
for (i = 0, n = 0; i < ARRAYLENGTH(server); ++i) {
uint32 subnet_char_ip;
if (!sockt->session_is_valid(server[i].fd))
continue;
subnet_char_ip = login->lan_subnet_check(ip);
WFIFOL(fd,47+n*32) = htonl((subnet_char_ip) ? subnet_char_ip : server[i].ip);
WFIFOW(fd,47+n*32+4) = sockt->ntows(htons(server[i].port)); // [!] LE byte order here [!]
memcpy(WFIFOP(fd,47+n*32+6), server[i].name, 20);
WFIFOW(fd,47+n*32+26) = server[i].users;
if( server[i].type == CST_PAYING && sd->expiration_time > time(NULL) )
WFIFOW(fd,47+n*32+28) = CST_NORMAL;
else
WFIFOW(fd,47+n*32+28) = server[i].type;
WFIFOW(fd,47+n*32+30) = server[i].new_;
n++;
}
WFIFOSET(fd,47+32*server_num);
So many numbers! And a real mess, imagine the harm that one wrong number can cause! even crash for client or server ! And the code is barely readable or meaningful.
After the update:
length = sizeof(*packet) + sizeof(packet->ServerList[0]) * server_num;
ip = sockt->session[sd->fd]->client_addr;
//Allocate the packet
WFIFOHEAD(sd->fd, length);
packet = WP2PTR(sd->fd);
packet->PacketType = PACKET_ID_AC_ACCEPT_LOGIN;
packet->PacketLength = length;
packet->AuthCode = sd->login_id1;
packet->AID = sd->account_id;
packet->userLevel = sd->login_id2;
packet->lastLoginIP = 0x0;
memset(packet->lastLoginTime, '\0', sizeof(packet->lastLoginTime));
packet->Sex = sex_str2num(sd->sex);
for (i = 0, n = 0; i < ARRAYLENGTH(server); ++i) {
uint32 subnet_char_ip;
if (!sockt->session_is_valid(server[i].fd))
continue;
subnet_char_ip = login->lan_subnet_check(ip);
packet->ServerList[n].ip = htonl((subnet_char_ip) ? subnet_char_ip : server[i].ip);
packet->ServerList[n].port = sockt->ntows(htons(server[i].port)); // [!] LE byte order here [!]
safestrncpy(packet->ServerList[n].name, server[i].name, 20);
packet->ServerList[n].usercount = server[i].users;
if( server[i].type == CST_PAYING && sd->expiration_time > time(NULL) )
packet->ServerList[n].property = CST_NORMAL;
else
packet->ServerList[n].property = server[i].type;
packet->ServerList[n].state = server[i].new_;
++n;
}
WFIFOSET(sd->fd, length);
I bet now you can place everything and know what you're dealing with, with no numbers to mistake with at all!
This is how we build a packet, parsing a packet became easier too.
Before:
version = RFIFOL(fd,2);
safestrncpy(username, (const char*)RFIFOP(fd,6), NAME_LENGTH);
safestrncpy(password, (const char*)RFIFOP(fd,30), NAME_LENGTH);
clienttype = RFIFOB(fd,54);
After:
DEFPACKET(CA_LOGIN)
{
const struct PACKET_CA_LOGIN *packet = RP2PTR(fd);
sd->version = packet->Version;
sd->clienttype = packet->clienttype;
safestrncpy(sd->userid, packet->ID, NAME_LENGTH);
safestrncpy(sd->passwd, packet->Passwd, PASSWD_LEN);
if (login->config->use_md5_passwds)
MD5_String(sd->passwd, sd->passwd);
sd->passwdenc = PWENC_NONE;
login->client_login(fd, sd);
return PACKET_VALID;
}
we just took care of parse packet and give it to login server to process it, just as it should be, the code is cleaner and easier to read and understand.
Offering 2 versions of the grf now. Scroll down for more info. Both data.grf do NOT require rdata.grf.
Option 1: (clean standard kRO GRF)
Download OneDrive
The grf is up-to-date 2018-12-22. Its cleaned up, and optimized. A Lot of invalid content is removed or merged. The size is 1,40gb (1.503.844.793 bytes) compared to the original 2.13gb (2.291.252.926)
Works perfect with all current pre-renewal and/or renewal content (rdata.grf is not needed). You still need the content of the Translation Project in order to use this.
All cutins in this grf are reduced by 35%
Note: This is pure kro data.grf and does not contain any jro/iro/whatever files
Option 2: GRF with the content of all official servers
Download Mediafire Download OneDrive Download Mega
This GRF contains all official files. Its cleaned up, and optimized. A Lot of invalid content is removed or merged. The size is 1,43gb (1.536.478.834 bytes)
The grf is up-to-date 2016-08-04.
Please throw a PM on me if this GRF is missing something! I want this to be the most complete one of all
Small summarize
more than 200 additional maps
more than 700 additional items
more than 60 additional NPC's
more than 130 additionalmobs
more than 900 additional cutins
Instructions:
1. Download the data.7z
2. Extract it
3. Put both (grf + dll) into your RO folder
Changelog:
Fixed Rock Ridge Illustrations use wrong Magenta (200, 238, 120 instead of 200, 240, 120)
Removed chunk
Option 3: Episode 13.2 Pre-Renewal GRF
This one is 775 MB (812.914.794 Bytes) and great for all kind of pre-re servers.
Download OneDrive
All rights and credits belong to Gravity
Note: you can still encrypt your grf with SecureGRF or Tokei's GRF Editor - just use another name than cps.dll for it.
updated thread 2019-01-13
understandable, but apparently it seems common here (and rA), one of the reasons I still don't offer paid services is this bunch of idiots.
I think people won't care for the small "send to friend" fee if they want to buy your package :]
I'm donating 10$ toward you for your loss, the community nowadays is a shame
Offering 2 versions of the grf now. Scroll down for more info. Both data.grf do NOT require rdata.grf.
Option 1: (clean standard kRO GRF)
Download OneDrive
The grf is up-to-date 2018-12-22. Its cleaned up, and optimized. A Lot of invalid content is removed or merged. The size is 1,40gb (1.503.844.793 bytes) compared to the original 2.13gb (2.291.252.926)
Works perfect with all current pre-renewal and/or renewal content (rdata.grf is not needed). You still need the content of the Translation Project in order to use this.
All cutins in this grf are reduced by 35%
Note: This is pure kro data.grf and does not contain any jro/iro/whatever files
Option 2: GRF with the content of all official servers
Download Mediafire Download OneDrive Download Mega
This GRF contains all official files. Its cleaned up, and optimized. A Lot of invalid content is removed or merged. The size is 1,43gb (1.536.478.834 bytes)
The grf is up-to-date 2016-08-04.
Please throw a PM on me if this GRF is missing something! I want this to be the most complete one of all
Small summarize
more than 200 additional maps
more than 700 additional items
more than 60 additional NPC's
more than 130 additionalmobs
more than 900 additional cutins
Instructions:
1. Download the data.7z
2. Extract it
3. Put both (grf + dll) into your RO folder
Changelog:
Fixed Rock Ridge Illustrations use wrong Magenta (200, 238, 120 instead of 200, 240, 120)
Removed chunk
Option 3: Episode 13.2 Pre-Renewal GRF
This one is 775 MB (812.914.794 Bytes) and great for all kind of pre-re servers.
Download OneDrive
All rights and credits belong to Gravity
Note: you can still encrypt your grf with SecureGRF or Tokei's GRF Editor - just use another name than cps.dll for it.
updated thread 2019-01-13
Download counter hits the 15k
Anyways, during the last time I worked a lot on the grf. Right now I am not sure if I will release it, but at least I wanna do a showcase.
It's a data.grf from today (31st march). Everythings working perfect (I still need to test a few things). Special is:
Download counter hits the 15k
Anyways, during the last time I worked a lot on the grf. Right now I am not sure if I will release it, but at least I wanna do a showcase.
It's a data.grf from today (31st march). Everythings working perfect (I still need to test a few things). Special is:
Past dead project: LuminaCP
Reason: School and relationship! XP
Just another control panel that we've been working on.
Phase 1 - Features:
Account management system
Ranking system
Voting system
Donation system (paypal/remittance)
Content management system
Server/woe/player status
Ticketing system
and more......
Phase 1.1 - Features:
Admin Panel
View/Manage characters
Items/Mob db view/search
Vending/Buying store view/search
Character Creation
RSS System
Phase 2 - Features:
Most likely we will adapt some of our features on LuminaCP
Login as Facebook (auto-register as master account)
Status updates
Groups (like Facebook)
Profile picture
Market tabs
Messages/connections
and mini-games.
Demo Link: http://aeva.vbrenth.net/
Admin user: [email protected]
Mod user: [email protected]
Player user: [email protected]
All passwords are: password
Do you think i missed something? If you have any suggestion, pm me.
Oh btw, like Flux we also have /themes so we can apply any design from the default theme.
Example: http://panel.aeva-ro.com/
(NEW)Ragindex v.0.3.1
by : Recca
Hi RO players ! I been working on this for months and the aim is to
make a simple RO Database Search Engine that provide simple mob & item informations
I'm excited/happy that I had finally contributed something to the RO community after 9+ years of Ragnarok.
I hope this can makes your RO life better, and you no longer need to strain your eyes
looking at the chatlog when using @mi , @ii , @whereis
======================== [email protected] ========================
"Hey ****, what's the dumbest thing you ever done in your RO years ?"
"I tried to download RMS for the search engine, it took the whole day and doesn't even work"
"I feel you ;~; say no more.."
+ What's News in v0.3.1: ( Download Link FIXED )
Ragindex's colors can now be change via .ini file ( Personalize your Ragindex )
Ragindex Stylish - GUI to help with easy editing Ragindex color
Included new themes/colors
Reduce space between results
+ Features:
Works offline ( Only for Full Version )
Decent / constant load rate
Renewal / Pre-Renewal Database
New itemInfo.lub with new item's description format
Sorting item drops by percentage in 'Drop By' window from high -> low
On maps info (no respawn time, sorry)
Element Effectiveness chart
NPC Venders information
Free memory
Direct Ratemyserver link
Direct iW Database link
COOL in-game cursor
+ Search Modes:
Item - can be search by : ID , Aegis Name, Screen Name
Mob - can be search by : ID , Sprite Name, kRO Name, iRO Name
Item's description
-Examples of finding stat related items with "Search Item's description"
"STR +" , "drop chance" , "enables use of" , "MaxHP"
"after cast delay" , "cast time" , "`% chance of"
"Demihuman" , "Fire property" , "medium size"
+ ToolTips:
Item's description
Mob's image
*Right Click = On , Left Click = Off ( or just move your mouse away )
+ Customizable:
GUI color
Add new mob
Add new item
Hide-Window hotkey
Element table
Base-EXP, Job-EXP, and drop rates
+ Credits:
All images belong to Gravity and their respective creators.
Taffy for the motivation and feedbacks.
+ DOWNLOAD: (Updated)
FIXED - Ragindex Full (Included Ragindex Stylish) - Ragindex Full ( 30 MB ) ~ Mediafire ( Recommended )
Ragindex Lite - Ragindex Lite ( 1.3 MB ) ~ Mediafire ( More like a demo version, unsupported )
* The differences between the two is that the Lite use online images and the Full use internal images
+ Themes created from Ragindex Stylish: * You can make your own too.
**************************************************************************************************************************************************************************
This application was made with the intention of making Ragnarok item / mob's database easier to access in-game. Especially for slow computers that have trouble running browser and RO client at the same time.
- Any feedback is appreciated !!! and you are more than welcome to share your Ragindex Skin
Offering 2 versions of the grf now. Scroll down for more info. Both data.grf do NOT require rdata.grf.
Option 1: (clean standard kRO GRF)
Download OneDrive
The grf is up-to-date 2018-12-22. Its cleaned up, and optimized. A Lot of invalid content is removed or merged. The size is 1,40gb (1.503.844.793 bytes) compared to the original 2.13gb (2.291.252.926)
Works perfect with all current pre-renewal and/or renewal content (rdata.grf is not needed). You still need the content of the Translation Project in order to use this.
All cutins in this grf are reduced by 35%
Note: This is pure kro data.grf and does not contain any jro/iro/whatever files
Option 2: GRF with the content of all official servers
Download Mediafire Download OneDrive Download Mega
This GRF contains all official files. Its cleaned up, and optimized. A Lot of invalid content is removed or merged. The size is 1,43gb (1.536.478.834 bytes)
The grf is up-to-date 2016-08-04.
Please throw a PM on me if this GRF is missing something! I want this to be the most complete one of all
Small summarize
more than 200 additional maps
more than 700 additional items
more than 60 additional NPC's
more than 130 additionalmobs
more than 900 additional cutins
Instructions:
1. Download the data.7z
2. Extract it
3. Put both (grf + dll) into your RO folder
Changelog:
Fixed Rock Ridge Illustrations use wrong Magenta (200, 238, 120 instead of 200, 240, 120)
Removed chunk
Option 3: Episode 13.2 Pre-Renewal GRF
This one is 775 MB (812.914.794 Bytes) and great for all kind of pre-re servers.
Download OneDrive
All rights and credits belong to Gravity
Note: you can still encrypt your grf with SecureGRF or Tokei's GRF Editor - just use another name than cps.dll for it.
updated thread 2019-01-13
Im usually a quiet person but today ive decided to open my mouth and say something since me and millions of other have had enough of youtube's content ID / copyright strike system which is now clearly doing more harm then good. The past 2 years have been bad and is only getting more and more worse over the passing months.
Its now 2016 and the year started with video's/channels being randomly taken down which turns out to be the work of some brothers who are trying to own the rights to "Reacting" to things. WTF IS THIS SHIT!?!?!?! SERIOUSLY????? Now people are coming out open to the public about whats been happening and out of all of this, youtube (google) doesn't appear to be doing anything. It seems its up to the internet to fix this.
A movement has started as this can not go on any longer. People are now asking "Where's The Fair Use?" as it seems to not exist anymore even tho there's copyright laws that's "supposed" to protect us. But somehow company's are getting through this.
Join the internet and let your voice be herd. #WTFU. Post it, tweet it, talk about it, do whatever you can. Together we can beat this and get things back to the way they used to be. For a better understanding of the situation, watch this video....
Would it possible to add these features?
Adding "To lowercase" and "To UPPERCASE" in the context menu when right-clicking some text would be more practical than using the menus!
Adding "Add text color" in the context menu when right-clicking on some text, this would simply add "^000000" at the beginning and end of the selected text.
Turn on whole word highlighting (when the caret is on a whole word, it is very useful to highlight all other whole word matches).
Volatil searches. When a word is highlighted (from the whole word highlighting), being able to jump to the next or the previous element is very useful. The shortcut in Notepad++ is Ctrl-F3 for the next element and Ctrl-Shift-F3 for the previous element. In VS, the shortcut is Ctrl-Shift-Up and Ctrl-Shift-Down.
Be able to leave autocomplete always turned on and activates as you type.
Other useful shortcuts to have :
Alt-Up / Alt-Down, moves the selected lines up or down. If no text is seleted, it moves the current line.
Shift-Delete, deletes the current line and copy it to the clipboard (or Ctrl-L in Notepad++).
Ctrl-C with no text selected, copies the current line to the clipboard.
Ctrl-X with no text selected, copies the current line to the clipbard and removes it.
Ctrl-K, comment the selected lines.
Ctrl-Shift-K, uncomment the selected lines.
F3, while a search is active, goes to next element. (This is conflicting with Scintilla's default find and replace dialog though, not really important I guess).
Shift-F3, while a search is active, goes to previous element.
Ctrl-U, change the selected text to lower case. Shortcut already exists, never mind.
Ctrl-Shift-U, change the selected text to upper case.
Add/replace code snippets :
f =>
for ($.@i$ = $0$; $.@i$ < $max$; $.@i$++) { $selected$$end$}
w =>
while ($1$) { $selected$$end$}
sc / script =>
$map$,$x$,$y$,$direction$ script $name$ $SPRITE$,{ $selected$$end$}
func =>
function script $name$ { $selected$$end$}
hid (could probably use another name I guess) =>
- script $NAME$ -1,{ $selected$$end$}
menu =>
switch(select("$menu$")) { case 1: $selected$$end$ break;}
dup =>
$map$,$x$,$y$,$direction$ duplicate($name$) $name$#$tag$ $SPRITE$$selected$$end$
Could probably add more snippets, but these are the only ones that come to mind at the moment xD! It would be even better if we could make our own, they're really a time saver. If you're not familiar with snippets, they are used by typing the first letters (func for example) and then pressing tab. It will autocomplete the rest. There is already one for "f" but it's obviously meant for C++ autocompletion code.
And also, when you press Enter, it would be nice if it could use the previous indent (or use indent + 1 if the line ends with { ) to start the new line instead of starting back at the beginning. This is probably the most important feature in all of this, it is somewhat annoying to add the tabs everytime you add a new line.
things like that makes me go nuts lol, developers got a life too, and no, they are not worrying about futile things, they do what their time allows them to do, oboro quest is a futile thing rebellion skills will be released once we got proper info, want to speed up the process? go level up a rebellion in kRO and try to get all skill formulas, seems like you think that developers have all their time available to help us while we don't have a shit back to the community? (I'm speaking for myself now), I try to contribute with the community as much as I can, you should consider doing the same (or even better) instead of just asking for support every damn time, sorry for talking so much but your "do it and that and stop doing futile things" with no love nor respect to the developers made me mad