Jump to content

anacondaq

Members
  • Posts

    1096
  • Joined

  • Days Won

    38

Everything posted by anacondaq

  1. @Cydh I was found a lot of different bugs, and warnings inside this system. Some of bugs reported below i was manually fix. Imposible to compile because of missing #include defines under linux, at windows this mod you can compile without errors or problems I was review code, and i found for a lot of missing scopes, or wrong typo, (check examples below) I was found a lot of not used variable / structures (or there is a logic typo) Btw, i was make it work a little bit, but when you @ipblock or @ipban character -> he did't kicked from the game, you need manually kick him / her from the game to apply ban (after kick, he can't connect) A lot of problems with sql tables from the start. Suggestions Please Fix bugs with this system (there are a lot of them, and check & review your code, (because for now this application is very dangerous for production)) Please add separate diff for code, and separate sql tables which we need to add to the game (with diff for ready tables, and with how tables must looks like (to make easy it to isntall) Test it on linux, you will find a lot of strange things with this system. THank you!
  2. @tokei Dear Tokei, please take a look about problem above. The problem in next: when i use grf encryption for grfs i can't run game client (exe 2012-04-10) if it located at any folder with russian characters (non english) How reproduce 1. Create folder: D:\какая-то папка\something\RO 2. Place your encrypted files inside 3. Run Client -> it wont run, because of russian characters in path name.... But, if you rename "какая-то папка" to "some folder", you able to run game client with encrypted grfs again...
  3. i hope, now rAthena will not have so many downtimes like at previous time...
  4. but you technically deal damage to the boss monster while you dead.
  5. Some players reported about this one: https://rathena.org/board/tracker/issue-1598-autoloot-bug/ Problem: Enable @autoloot 100 When you die after hitting the mob and you killing the mob while you dead, the drop from this mob will be sent to the ground, not to the player who deal damage to mvp. How reproduce: @autoloot 100 Spawn any mvp cast for example asura strike on the mob mob must kill you a moment before you finish asura to mob (good example -> Atroce) when you die by monster, and you after death deal damage to monster - all items dropped to the ground, not to the player because of @autoloot I was check sources... I'm talking about this function: https://github.com/rathena/rathena/blob/master/src/map/mob.c#L1934 And about this logic: https://github.com/rathena/rathena/blob/master/src/map/mob.c#L1946 In mob_dead function: https://github.com/rathena/rathena/blob/master/src/map/mob.c#L1946 Is it official behavior? Or nope? Because i found this: https://rathena.org/board/tracker/issue-1598-autoloot-bug/ And i can't find any official information (eathena is totally dead) And i'm lazy to grow Aegis to test it. Can anyone confirm that issue? Or it's wrong?
  6. why 07_07? 06_18 much better (without costume system)
  7. or mapflag gvg are you using guild_vs* maps?
  8. not tested iz_ac01,100,39,4 script Captain Joe 470,{ switch( BaseClass ) { case Job_Novice: mes "Welcome,"; mes "this is the"; mes "Prontera Chivalry."; mes "What brings you here?"; next; callsub S_NoviceMenu; break; case Job_Swordman: mes "Ah, a member of our Chivalry."; mes "I hope you are living up to my expectations. We have vowed to be strong for our kingdom, even if death is upon us..."; mes "What brings you here?"; next; callsub S_SwordmanMenu; break; case Job_Knight: mes "Welcome. We, the proud Knights of the Prontera Chivalry, will give our lives for king and country! Please enjoy your stay."; break; } end; S_NoviceMenu: switch(select("I want to change my job to Swordman.", + "I want to change my job to a Knight.", + "Just visiting." )) { // Swordman case 1: mes "[Captain Joe]"; mes "I see."; mes "A Swordman, you say?"; mes "You've come to the right place, "+((Sex)?"lad":"lass")+"."; mes "but you dont need any quest if you want to become one!"; mes "I sense great honor and pride in you so I can change you now into a swordsman."; next; callfunc "Job_Change",Job_Swordsman; callfunc "F_ClearJobVar"; // Clears all job variables for the current player mes "[Captain Joe]"; mes "I hereby declare"; mes "you a member of"; mes "the Prontera Chivalry."; mes "Protect the weak and"; mes "live with honor."; next; getitem 656,7; //Awakening_Potion mes "[Captain Herman]"; mes "Oh..."; mes "We have prepared a small gift to congratulate you on your job change. Please use it when you are in battle as you honorably protect others."; next; mes "[Captain Herman]"; mes "Go forth!"; mes "The future of"; mes "Rune-Midgard"; mes "rests on your"; mes "shoulders!"; break; // Knight case 2: mes "[Captain Herman]"; mes "Ah, I see that you have great ambition. But you must first become a Swordman before becoming"; mes "a Knight. One step at a time..."; next; mes "[Captain Herman]"; mes "First, visit the Swordman guild in Izlude. Then, come visit us again once you have become a well experienced Swordman."; break; // Just visiting case 3: mes "[Captain Herman]"; mes "Aha~"; mes "You must have lots of free time. Why don't you go hunt some monsters instead of wandering about aimlessly?"; break; } return; end; S_SwordmanMenu: switch( select( "I want to change my job to a Knight.", "Just visiting." ) ) { case 1: mes "[Captain Joe]"; mes "I see."; mes "A Knight?, you say?"; mes "You've come to the right place, "+((Sex)?"lad":"lass")+"."; mes "but you dont need any quest if you want to become one!"; mes "I sense great honor and pride in you so I can change you now into a knight."; next; callfunc "Job_Change",Job_Knight; callfunc "F_ClearJobVar"; // Clears all job variables for the current player mes "[Captain Joe]"; mes "I hereby declare"; mes "you a member of"; mes "the Prontera Chivalry."; mes "Protect the weak and"; mes "live with honor."; next; getitem 656,7; //Awakening_Potion mes "[Captain Herman]"; mes "Oh..."; mes "We have prepared a small gift to congratulate you on your job change. Please use it when you are in battle as you honorably protect others."; next; mes "[Captain Herman]"; mes "Go forth!"; mes "The future of"; mes "Rune-Midgard"; mes "rests on your"; mes "shoulders!"; break; case 2: mes "[Captain Herman]"; mes "Ah, I see you can look around here for some quest in the mean time"; mes "Good luck, Honorable Knight."; break; } return; end; }
  9. what a reason to run multiple login-servers around the world? You will not reduce delay for gameplay, because finally the guy will be connected to the map-server, and the important delay to map-server. Char-server required to save your character data. The better in another structure. Place your server somewhere in USA Make proxy servers which will connect to your login / char / map-server around the world.
  10. https://github.com/rathena/rathena/blob/master/conf/login_athena.conf#L159 I still don't understand, how to get md5 hash of my client bro ? this is client feature. You need just diff your game client. (please check NEMO) "Force Send Client Hash" - working from 2010-07-** game exe - up to current clients. I already diff, my mean i want to know how to know my 'md5 hash number' client @@ For example by this: http://onlinemd5.com/
  11. in flux? Debian / Ubuntu dpkg-reconfigure tzdata or inside flux: 'ServerName' => 'FluxRO', // Global database configuration (excludes logs database configuration). 'DbConfig' => array( //'Socket' => '/tmp/mysql.sock', //'Port' => 3306, //'Encoding' => 'utf8', // Connection encoding -- use whatever here your MySQL tables collation is. 'Convert' => 'utf8', // -- 'Convert' option only works when 'Encoding' option is specified and iconv (http://php.net/iconv) is available. // -- It specifies the encoding to convert your MySQL data to on the website (most likely needs to be utf8) 'Hostname' => '127.0.0.1', 'Username' => 'ragnarok', 'Password' => 'ragnarok', 'Database' => 'ragnarok', 'Persistent' => true, 'Timezone' => null // Example: '+0:00' is UTC.
  12. *getinventorylist {<char_id>}; This command sets a bunch of arrays with a complete list of whatever the invoking character has in their inventory, including all the data needed to recreate these items perfectly if they are destroyed. Here's what you get: @inventorylist_id[] - array of item ids. @inventorylist_amount[] - their corresponding item amounts. @inventorylist_equip[] - whether the item is equipped or not. @inventorylist_refine[] - for how much it is refined. @inventorylist_identify[] - whether it is identified. @inventorylist_attribute[] - whether it is broken. @inventorylist_card1[] - These four arrays contain card data for the items. @inventorylist_card2[] These data slots are also used to store names @inventorylist_card3[] inscribed on the items, so you can explicitly check @inventorylist_card4[] if the character owns an item made by a specific craftsman. @inventorylist_expire[] - expire time (Unix time stamp). 0 means never expires. @inventorylist_bound[] - whether it is bound to the character @inventorylist_count - the number of items in these lists. This could be handy to save/restore a character's inventory, since no other command returns such a complete set of data, and could also be the only way to correctly handle an NPC trader for carded and named items who could resell them - since NPC objects cannot own items, so they have to store item data in variables and recreate the items. Notice that the variables this command generates are all temporary, attached to the character, and integer. Be sure to use @inventorylist_count to go through these arrays, and not 'getarraysize', because the arrays are not automatically cleared between runs of 'getinventorylist'. getinventorylist; @inventorylist_expire[] - expire time (Unix time stamp). 0 means never expires.
  13. https://github.com/rathena/rathena/blob/master/conf/login_athena.conf#L159 I still don't understand, how to get md5 hash of my client bro ? this is client feature. You need just diff your game client. (please check NEMO) "Force Send Client Hash" - working from 2010-07-** game exe - up to current clients.
  14. https://github.com/rathena/rathena/blob/master/conf/login_athena.conf#L159
  15. have you tried to change servicetype & langtype to another values? And check pm please.
  16. Oh, this is my old video. Please, show all of your options inside clientinfo.xml / packet_db.txt The issue related to some wrong config, i was already solve it, but do not remember how. But it was very easy.
  17. Hi Dear Tokei! I have a question related to lzma & grf encryption by GRF Editor + console application + hashield. As you know, hashield using something (or your work, i do not know really) to patch grfs. I want to do next: 1.) Repack with lzma data.grf & all other game grfs from my client with lzma + apply grf encryption. My question: Is will it work? Is it have some extra notes which i must to know? I planning to do next: 1.) Repack data.grf with Grf Editor & lzma algorithm 2.) Repack my own grf with GRF Editor & lzma algorithm 3.) Setup GRF Editor encryption & patch cps.dll 4.) When i will have need to do some changes with my own grf, what i should to do? How to apply patch? (if i can premade rgz & rgp files with hashield)
  18. Hi Dear Digos, after few months, i got the answers a lot, your problem is the similar as yours, and i found a ways to solve it at network level without modify client and server-side. From the box we have all what we need (proxy diff at client) and binding the emulator to all interfaces. My idea was about "if you recieve ddos, automaticly replace player to another live host". But after long testing with hiring some network engeneirs i got simple answer: with tcp it's imposible to do. BUT! You can do that with GRE / IPIP Tunnels and advanced routing policy. Ragnarok Online exe support it, and it works well: Game Host: 50.50.50.50 PlayerIP: 60.60.60.60 GRE1, IP 1.1.1.1 GRE2, IP 2.2.2.2 GRE3, IP 3.3.3.3 60.60.60.60 -> 1.1.1.1 -> 50.50.50.50 with saving 60.60.60.60 -> OK 60.60.60.60 -> 2.2.2.2 -> 50.50.50.50 with saving 60.60.60.60 -> OK 60.60.60.60 -> 3.3.3.3 -> 50.50.50.50 with saving 60.60.60.60 -> OK So, just google about it. Sorry for stupid answer, but there is nothing to do with rAthena, because this feature is available out the box, and request advanced network education. (it's already work on my projects very fine). About DDOS Protection: There is the end of the DDoS attacks at 2015 & 2016. The peak were at 2012 - 2014. The ddos attacks related to cogent (they sell a very big uplinks for very cheap price, for now they do not sell it anymore after a lot of abuse). Each online shit which can generate up to 60-70 Gbit/s at 2012 - 2014, and at early 2015 at nowdays can generate maximum 190.000 pps at UDP & 120k pps at TCP. You can avoid it with syncookies + some of the cheap DDoS protected server by hard limiting protocols to your server. Sorry, this is not bla bla bla from me, i have a projects where i got attacks very big for every week to destroy my project, and i tried a lot of things since 2012...
  19. Sorry, but the guy above is totally true. With enabled dyn_mobs: ~ 300-400 MB Map-server load with online 300. With disabled dyn_mobs 900+ MB. I think, people feel difference.
  20. This feature is very good, but i strongly suggest to add a option to enable / disable this feature in config. Because some servers have a little bit different row structure in tables, and some upgrade_**.sql files can damage database.
  21. Dear Stein, just try, do not ask, you will see features by yourself. Both emulators rock solid, but i like rathena more.
×
×
  • Create New...