Jump to content

hemagx

Core Developers
  • Content Count

    248
  • Joined

  • Days Won

    10

Everything posted by hemagx

  1. Please update your visual studio, it's sense less to use 6 years old compiler. - For an overview of supported OSes and compilers, please see the wiki page https://github.com/HerculesWS/Hercules/wiki/Supported-Platforms
  2. Then probably it's just your server can't handle this connections amount
  3. Hello, the default for most linux distro is 1024, it would be better if you can give screenshots with any error/warning that explains the issue. or you can enable epoll
  4. You're lucky that i'm facing serious issue right now and i can't continue what i'm working on. Gonna work on this plugin now
  5. Interesting, Please put it in http://herc.ws/board/tracker/ also do you have any custom code?
  6. While I'm not sure of solution for this issue, but you deserve a thump up for most Clean and Informed Help topic I've ever seen in eA/rA/Hercules.
  7. Please report this at our issues tracker, Developer doesn't check forum for this purpose and also issue tracker help us a lot in managing our work. https://github.com/H...Hercules/issues
  8. Please report this at our issues tracker, Developer doesn't check forum for this purpose and also issue tracker help us a lot in managing our work. https://github.com/HerculesWS/Hercules/issues
  9. hemagx

    brACP

    English translation is coming soon :3 Justify: The main project language is Portuguese... We don't stop to create the english translation yet because there some features that we must finish... after it, we pull the trigger and start the translation file and documentations. I'm excited and waiting !
  10. hemagx

    brACP

    I would say it's pretty interesting to see, pretty good work, wish for English translation tho so it can be more used by others. (i can also see some good documentations !)
  11. Hello ~ Rationale: For long time we had many functions or variables that were supposed to be kept privately used, but because of the design of our header files were kept a public access. This caused, on one hand, poor design choices (too much binding between separate components), and on the other hand, excessively long long re-compile for the whole project if anything changed in this headers (because cause any or all files can be affected). Now with private headers only the file meant to use this header will be recompiled resulting in less compile times, waaay less! Contents: The login server client interface (lclif) was chosen as a working prototype of this, and now has a private interface (lclif.p.h) alongside its public interface (lclif.h). Details: Currently we will start limit the private function/variable/databases to a private interface under a private header only meant to be used by the module itself. This will stop other modules from accessing the private function/variable/databases (lclif.p.h should only be included by lclif.c, but never included by other .c files), however plugins will still be able to access it if they need to (the private interface is fully HPM and HPMHooking compliant). The private interface is exposed through an opaque pointer inside the public interface. the private data can be accessed through the interface through the private interface pointer interface->p->private_function(); //General example lclif->p->parse_sub(fd, sd); // Example for login client interface to be able to use the private interface into your plugin please make sure to include the private header ! It's recommended to still include the public interface as well. //General example #include "project/file.h" #include "project/file.p.h" // Example to include Login Client Interface Private header #include "login/lclif.h" #include "login/lclif.p.h" Merge Date:Sat, 16 Apr 2016 15:37:47 +0200 Related Pull Requests: - #1255 - https://github.com/HerculesWS/Hercules/pull/1255 - Login clif rewrite [hemagx] Related Commits: - 79d9ace - https://github.com/HerculesWS/Hercules/commit/79d9ace - Wed, 30 Mar 2016 23:58:17 +0200 Added support for private headers to the HPMDataCheck/HPMHooking generators [Haru] - c0178d2 - https://github.com/HerculesWS/Hercules/commit/c0178d2 - Thu, 31 Mar 2016 00:16:02 +0200 HPM Hooks Update [Haru] - ab42483 - https://github.com/HerculesWS/Hercules/commit/ab42483 - Thu, 31 Mar 2016 14:42:56 +0200 Updated GNU Make build system to support private headers [Haru] - 7555700 - https://github.com/HerculesWS/Hercules/commit/7555700 - Mon, 28 Mar 2016 21:54:46 +0200 Rewrite client interface for login server (part 7) [hemagx] - 37cc46c - https://github.com/HerculesWS/Hercules/commit/37cc46c - Thu, 31 Mar 2016 00:16:48 +0200 HPM Hooks Update [Haru] - 15c9710 - https://github.com/HerculesWS/Hercules/commit/15c9710 - Sat, 16 Apr 2016 15:21:18 +0200 Moved packet_db to the private interface of lclif [Haru] - 8448e3f - https://github.com/HerculesWS/Hercules/commit/8448e3f - Sat, 16 Apr 2016 15:22:21 +0200 HPM Hooks Update [Haru] - bbcb040 - https://github.com/HerculesWS/Hercules/commit/bbcb040 - Sat, 16 Apr 2016 15:37:47 +0200 Merge pull request #1255 from HerculesWS/login-clif_rewrite [ibrahem Hossam]
  12. Debian 8 would be great.
  13. Hello ~ Want your name to be in the glorious history of ragnarok online servers emulators ? here's your chance if you have an high-end or many characters in any official server that can perform tests and such to help us implement new systems. currently we're having many unfinished system or open bug-reports waiting to be confirmed and tested on official servers or so, unfortunately we don't have enough testers usually and so it delay many systems to be added or bugs to be resolved, however we now ask YOU to help us and bring your name to the glorious history of ragnarok servers emulators. Requirements ~ to have an account on any official servers (preferred iRO, fRO, kRO). this accounts can be high end or not, all kind of characters or classes we may need also the more access to different places the easier for you and us to do tasks. How to apply ~ You can send me a Private message on forums with server name and available characters to perform tasks, please explain job and level and builds if possible, i will be making lists to make it easy for us to chose the one who should do the task or so. or you can join our IRC Channel for Hercules Official server testers #Hercules-Testers on Rizon network, and have little discussion with me there! How it will work ? ~ whenever we face bug or new system need to be tested we will be sending an private message to all testers who can perform the task, as soon as you get it you will have to answer if you can take it or not, then all testers who will do the task and give us results will be thanked and credited of helping in this bug/feature! Don't miss the chance ! Thank you. Here we go!
  14. it's the settings the server compiled with, it help us developers if you report core bugs to include it !
  15. you actually won a free source modification from me
  16. 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. Merge Date: Sat, 16 Apr 2016 15:37:47 +0200 Related Pull Requests: - #1255 - https://github.com/H...cules/pull/1255 - Login clif rewrite [hemagx] Related Commits: - bbcb040 - https://github.com/HerculesWS/Hercules/commit/bbcb040 - Sat, 16 Apr 2016 15:37:47 +0200 Merge pull request #1255 from HerculesWS/login-clif_rewrite [ibrahem Hossam] - 8448e3f - https://github.com/HerculesWS/Hercules/commit/8448e3f - Sat, 16 Apr 2016 15:22:21 +0200 HPM Hooks Update [Haru] - 15c9710 - https://github.com/HerculesWS/Hercules/commit/15c9710 - Sat, 16 Apr 2016 15:21:18 +0200 Moved packet_db to the private interface of lclif [Haru] - 45bbb3d - https://github.com/HerculesWS/Hercules/commit/45bbb3d - Sat, 16 Apr 2016 03:33:31 +0200 Added missing documentation [Haru] - 6de2242 - https://github.com/HerculesWS/Hercules/commit/6de2242 - Sat, 16 Apr 2016 03:33:20 +0200 HPM Hooks Update [Haru] - fb26278 - https://github.com/HerculesWS/Hercules/commit/fb26278 - Fri, 15 Apr 2016 20:14:43 +0200 Added lclif packet handlers to the lclif interface [Haru] - 37cc46c - https://github.com/HerculesWS/Hercules/commit/37cc46c - Thu, 31 Mar 2016 00:16:48 +0200 HPM Hooks Update [Haru] - 7555700 - https://github.com/HerculesWS/Hercules/commit/7555700 - Mon, 28 Mar 2016 21:54:46 +0200 Rewrite client interface for login server (part 7) [hemagx] - ceef84e - https://github.com/HerculesWS/Hercules/commit/ceef84e - Thu, 14 Apr 2016 13:38:12 +0200 HPM Hooks Update [Haru] - c8ff1e7 - https://github.com/HerculesWS/Hercules/commit/c8ff1e7 - Tue, 12 Apr 2016 14:35:21 +0200 Rewrite client interface for login server (part 6) [hemagx] - d8da35d - https://github.com/HerculesWS/Hercules/commit/d8da35d - Tue, 12 Apr 2016 15:25:50 +0200 Rewrite client interface for login server (part 5) [hemagx] - c765365 - https://github.com/HerculesWS/Hercules/commit/c765365 - Tue, 12 Apr 2016 15:24:30 +0200 Rewrite client interface for login server (part 4) [hemagx] - d60ef91 - https://github.com/HerculesWS/Hercules/commit/d60ef91 - Mon, 28 Mar 2016 21:54:46 +0200 Rewrite client interface for login server (part 3) [hemagx] - 9defcee - https://github.com/HerculesWS/Hercules/commit/9defcee - Mon, 28 Mar 2016 21:54:46 +0200 Rewrite client interface for login server (part 2) [hemagx] - 480e959 - https://github.com/HerculesWS/Hercules/commit/480e959 - Mon, 28 Mar 2016 21:54:46 +0200 Rewrite client interface for login server (part 1) [hemagx]
  17. hemagx

    3ceam info

    we do not support 3Ceam but only host them boards. please keep questions about 3ceam in them own area.
  18. it's not possible to get duplicated unique_id unless it's a stackable item
  19. did you bypass the limits by edit system headers ?
  20. hemagx

    @cashreload

    actually, it should be possible to reload cashshop without need to kick player will see if my workaround works when i go back work soon!
  21. official patcher can't delete files but overwrite ~
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.