Jump to content

Lighta

Members
  • Posts

    737
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by Lighta

  1. 100% parity is the main goal. Altough few cleanup of really old / unused feature might be done. It is not our goal but if it take more time to convert / ensure an unused feature then to nicely drop it why would we not ? (at best we could #ifdef _cplusplus it). For the linux part, is all done. There was only a small moment where the cmake/makefile/src wasn't fully compatible with linux (e.g like 1 commit using invalide include or thing thing of that kind). We always supported linux and always be. I'd love to see your benchmark test. If you want you could try against : https://github.com/lighta/rathena/tree/refactor/rA-cpp-bleeding-edge User, Please there is lot a talk about the migration on discord and that link is in no way a beta or anything. It's just a mere test.
  2. do a "/configure && make clean server" see if the error disapear. Otherwise it seem the status.c is not compiled or at least the linker doesn't found those symboles definition from the given object. Please send / display the full log.
  3. @phit666, wanna share ? from my understanding the src/common had evdp_epoll.c which altough isnot libevent look somewhat the same concept. I would be interesting to see some metric. How much gain is done by this. In the same veins, I tough we could replace our inter-serv communication with grpc. Which will translate on better compression for packet. currently we have none =(.
  4. I like the idea I heard someone ask what major issue was remaining. Well I would say we need a test framework. As even if I have confidence in the dev. The most time consuming thing was : 1) Understand / reproduce the issues. (but github look way better now =) ) 2) Implement that feature with limited tool of C / current spagetthi. 3) Test and hope for no side effect. <= Here is the main bug creator. side effect. So if any one would help I would say try the branch and maybe let work on some kind of test framework. NB : About Rust and GO, if we ever go there I think the simpliest way would be to create some dll about our current implementation. Use it into a Go/Rust wrapper. then transform bit by bit the dll to the new langage. But honestly Go is much slower but yeah Rust look miamy but right now switching to c++ is the "simpliest" way to go.
  5. Nice to see it finally release =) you guys did a tons of job on it
  6. could you put the result of 'gdb stacktrace' in here as well ? Now I won't be able to reproduce cause I don't have macOS but at least we could try to see what causing that.
  7. ah ? maybe here then : https://paste.fedoraproject.org/293513/
  8. clydelion, no is the same call. The issue here is that itemdb_search return the id of a dummy_item instead 0 so that check is useless.. The correct and faster call should be "itemdb_exists(nameid)", so like this you'll have the correct subsequent message : https://rathena.org/board/pastebin/19dg8iaqszh/ Please test then report this as a bug/feature in the tracker. Ty
  9. Fair question but chillout you have to learn the difference of a warning and an error / issue. (I don't wantto talk semantique here but a warning is just meant so you can have a look..) Anyway about your question in particular the best place to look this is the tracker, and see if there any comment related at the time of the change. Now matter of fact there is not 1 but 2 thread for this : https://github.com/rathena/rathena/commit/4342221a1e2b28c8731524c77090ba9a0aecf0d8 https://github.com/rathena/rathena/issues/760 Hope that enlighted you. (So just to be more clear, that warning is in resolution we're just looking the best way to do so)
  10. look like a wanIP misconfiguration. the message "Closed connection from 127.0.0.1" is normal. That mean the login server as finish authentificate you and you should be connected to char-server. (only that your charserver is on 192.168.1.4 wich may or may not be 127.0.0.1 in any case he's probably not binded on that interface so you fail to connect to char and receive that message ! To fix it ? put 192.168.1.4 in clientinfo instead 127.0.0.1 that should work.
  11. Change toolset to vc_120 or vc_110 for all project, then you should be able tocompile fine. (this will make you compile with vs2013 or vs2012 sdk, wich we know are working well). Right now you probably on vs_140 (vs2015) wich had some other function prototype wich create errror, last time I checked.
  12. He's complaining that you have no value for 'character_slots' for account number 2000008. Do a query on the longin table see if that the case.
  13. stop_server => 'alias ra_stop='/path/to/ra/athena-start stop' start_server => 'alias ra_start='/path/to/ra/athena-start start' restart_server => 'alias ra_restart='/path/to/ra/athena-start restart' update_server => 'alias ra_upd='/path/to/ra/tools/update.pl' Once all alias are define you could simply create some desktop file, to match the alias command. Or simply create some desktop file with the full command like I gave you. Both should work fine.
  14. strange. could you try to launch it without athena-start. (just trying to see who's the culprint here). Also what's your OS env ? Try to run it like this : ./login-server & ./char-server & ./map-server &
  15. Lighta

    Auto Installer

    ye I just look the script it's fine. Altought the git repository you using for the clone if not the one I'd expect : git clone https://github.com/xcoryakx/rathena.git I think it's better if you clone from the main ra/herc git instead of your fork. Just so they have the latest upd. 1 last thing you might want to take a look at : https://github.com/rathena/rathena/blob/master/tools/config.pl Not for saying your are bad or anything but you might be interested in improving this one he currently go deeper then your sh for the installation / configuration. The perl was choosing to be OS independant, as you can see that setup was tested on FreeBSD,Ubuntu/Debian, Fedora/CentOS. Bad point is that you need perl.
  16. I don't want to say ok I'll do it cause I have lot of old diff waiting to be finish. For what I remeber when I was playing with vip, which was altering the numbr of char available the sequence was at follow. Login_serv read group int logchrif_send_accdata(int fd, uint32 aid) => send to char how many Char this account couldhave depending on login.howmanychar_perAccount.conf and VIP. chlogif_parse_reqaccdata => verify that value cap it chclif_mmo_send082d() or chclif_mmo_send006b() => display the availables char to client. Ok now since all the data are being transfered you could read it anywhere, (login or char). Now the only difficulty here is reading group.conf (I mean for you, for us to implent it to rA we have to besure all combinaison is working fine and since idk what the max character isanymore that my issue.) Ok so to read a config file it's easy and could be done like so config_setting_t *groups = NULL; //struct to hold conf reading const char *config_filename = "conf/groups.conf"; // specify your conf file if (conf_read_file(&pc_group_config, config_filename)) //dump your conf file into a struct return; groups = config_lookup(&pc_group_config, "groups"); //read the group name 'group' if (groups != NULL) { group_count = config_setting_length(groups); //get number of group defined (admin+player+support.... for (i = 0; i < group_count; ++i) { //loop for each of them int char_pergroup = 0, int id=0; //declaration of the data we looking on the conf config_setting_t *cur_group = config_setting_get_elem(groups, i); config_setting_lookup_int(group, "id", &id)); reading the group_id config_setting_lookup_int(group, "char_pergroup", &char_pergroup); //reading field char_pergroup and put it into char_pergroup variable idb_put(group_db, id, char_pergroup); //retain hashset <groupid,char_pergroup> into a db. } } Now do not I only read id and char_pergroup from this group.conf. Also to retain I used a DB name group_db, this one have to be created before trying to read group.conf (I suggest into a do_init somewhere, and don't forget to destroy it also (in do_final)) Once you have that value it's simply a matter of sending the correct value from the different function I have listed for you in the sequence.
  17. sad but true. We need to work on automated tested, so at least we weel be confident when pushing something
  18. Almost feel this should be part of rA with an MACRO on/off flag.
  19. Ye I talked with Cydh last night about this. I think will go with his way to use only 1 set of key for server and ask client to be diffed to match it. Those who really need may do the little change in packet_db structure to handle multiple set of key in same time. (I mean if there some demand I'll do a quick diff about it). Otherwise I look Cydh/Napster diff and it look quite good so I suppose it's on good way for implementation.
  20. See src/map/pc_group.c. Either you copy the read_config part, or you move that file into common/ so login could access it. Note that moving stuff to common will make 1 object for all the 3 serv.
  21. oh ye look quite nice idea =) You just need the login_serv to parse group.conf with those values. Also you need to handle the case of vip_increase.
  22. is it possible to develop this feature without looking into multi-client support? Yes, but the main reason why it wasn't done like this is because when we do half support about something is not sure when we will come back to make it tidy and clean. So most of time it's stay still and becoming a nightmare later on... Now just to try to explain the multiclient issue. The way it's currently working it's that your client have a keys and your server as well. The packet are encrypted and decrypted with those keys which are constatly updated. (To prevent packet duplication). So unlike Hercule where you build your emulator to support only 1 specific client at the time we would need to support a list of keys and encode/decode depending on the client version connected. Another reason was that it was planned to remove lot of those supported clients from the release. (They could still be arround as an archive or simply with git history but we don't really need to support 20 differents client like now). So all in all is not very tought just long (mainly du to tests)
  23. Lighta

    cap_value

    You could use a skill_inf3, to mark all skill you wish to be capped, that would be the best way to do it imo, otherwise here a simple solution for you. switch(skill_num){ case RK_HUNDREDSPEAR: case RK_DEATHBOUND: case KN_BOWLINGBASH: //... do not break, list of capped skill return cap_value(damage,0,36000); default: return dammage; //other are not capped }
  24. Other advantages for this would be, we can make a script for a schedule to restart the like every weekend. You can already do this with a cronjob on linux, and a schedule task on windows. Which software are you referring too ? It would be possible but necessitate that you launch the servers with a special command like athena-start or such. (which is the program that will perform the restart command). Otherwise right now you could do : './athena-start watch' and make an atcommand to shutdown server, (the watch will relaunch it just like you wished)
  25. I suppose it's due to db user. I doubt you should have 2 @ following each other. ragnarok@@ec2-54.... I'll give a try with a remote sql db connection. Altough even so if the connection fail we shouldn't have login-serv crash but a gracefully shutdown instead.
×
×
  • Create New...