Jump to content

Emistry

Support Leaders
  • Content Count

    526
  • Joined

  • Days Won

    21

Posts posted by Emistry


  1. Ever wonder why these random number show up in your RO game client?

    It's called Character Code (C-CODE), an old system that implemented around 2013.

     

    If you enable this system you'll be protected against fraud since it offers a unique additional protection for each player present in-game.

    BcWuMAd.png

     

    SWihnLj.png

     

    As you can see from the screenshot above, there exists an extra set of codes (It show up int he basic information window, and the right-click menu of player object).

    According to KRO, these codes doesn't repeat/overlap and its unique for every players. It offers a unique additional protection for each player present in-game.

     

    wAyGAU9.png

     

    When you right-click on any player object, the C-Code are shown at the last menu ([C-Code] : ### - ###)
    Its ranging from 000-000 ~ 999-999, around 1,000,000 set of codes. 

    However its not confirmed that the numbers won't repeat itself if there are multiple server setup.

     

    YSzF8XH.png

     

    Click on the menu, the C-Code will be copied to clipboard.

    Di7242J.jpg

     

    Open up any text editor or notepad, press on CTRL + V, the codes will be shown in the editor.

    Notes: If you copied the codes, and take a screenshot right away, the codes will be removed from the clipboard.

     

    hVt27ln.png

     

    The codes are shown display behind character's level in the trading window.

     

    Sample of different C-Code for different characters.

    3Pj9ZQt.png GJO8fwO.png

     

    References: home.gamer.com.tw


  2. Hairstyle Package


    Introduction:

    This package are currently contains around 90~100 hairstyles for both male/female character.

    I obtained these from various sources like old eAthena, rAthena, Hercules, TheSpriteRepository and other member who shared these sprites with me etc.

    I don't remember who exactly made each of the sprites, or who even shared these... tell me if you know who are them.

    If any of these hairstyles are custom work that are meant for private use, kindly contact me, so that I could remove it from the listing.

    I do have more than this amount, but since my current test client (2018-06-20) can only support up to 100 sprites, so I randomly picked 100 and only upload it here.

    It included the default 31 hairstyle from kRO, but I think I replaced the 1~20+ hairstyles from JRO which dyed the hair  in dark color, the rest are custom hair styles.

     

    How to use:

    • You can either merge the provided GRF into your own GRF
    • Load it as another individual GRF using the DATA.ini file
    • Extract it and put it in your Data folder

    * Depend on your client hexed with whatever settings. Search forum for all these guides.

     

    Disclaimer:

     You're free to share with everyone but do not monetize the contents in any way! 

    These materials are meant for study or research purpose.

    Use these at your own risk, and always give credit to original author.

    If there exists issue with sprite file, for example: sprite misalignment, error, etc, kindly ask help from any member who have knowledge with sprite edit.

    If there exists issue with palette color file, for example: messed up color, error, etc, kindly ask help from any member who have knowledge with palette color edit.

     

    Fun Fact:

    Do you know you can actually combine all male and female hairstyle (including doram) to create a list of universal hairstyles that could be used by any gender of player and doram? 

     


     


  3. LMPQ - Ludi Maze Party Quest


    Introduction:

    This LMPQ exists in MapleStory, I am just copy the idea of how it work, and try to port it into RO.
    However, its far from perfect, originally I planned to get a custom map with x-mas theme, something like toy factory since it kinda match with MapleStory's Ludibrium town/dungeons. 
    But plan failed, tried to approach several person to help me with some of the client side stuff, but not everyone have the free time or interested or maybe not willing to work on free maps/clientside release nowaday.
    Anyhow, maybe you could just replace with your own custom map, or even better if you could share with everyone like I share the scripts. The more the merrier!

    So, if anyone willing to help me with custom maps/client side edit, let me know  . Sometime collaborating with others could make great contents for release to other member.

     

    How it work:

    • The objective of this party quest is to collect at least a certain tickets by killing monsters and to reach Ludibrium Maze 16 (henceforth known as Room 16). 
    • Navigating through the maze needs a firm foundation of how the rooms operate.
    • When you have successfully entered into the maze, your party will be thrown into a random room.
    • Each type of monster drops a random amount of tickets at certain rate.
    • Some rooms consists of mystery treasure box that summon monsters upon destroyed.
    • These summoned monster has better loot value,  which are important factor to complete the PQ in a short period of time.
    • The more passes you have, the more experience points you will obtain at the end of the PQ.

    There exists trick to conquer this PQ in a very short duration, I'm not gonna reveal/spoil how is it, and l'll just leave it to you to explore it.

     

    Mirror Link : Pastebin

     

     


     


  4. I understand the need for it to trigger the OnNPCKillEvent for these event/quests.

    3 hours ago, AnnieRuru said:

    how many lines in the official scripts you want to change if to enable monster to trigger for OnNPCKillEvent ?
    how many maps needed if made a custom mapflag to run OnNPCKillEvent ?

    as many as we would need, and these efforts i believe it would be just the same if you compare with restructure the db to libconfig and others, just saying the effors

     

    3 hours ago, AnnieRuru said:

    nowadays computer power is superior than before

    true, but it could be still performance killing. If this statement are acceptable, the old mob controller and any other OnPCXXXEvent would have no problem getting it implemented into the emulator in the first place.

     


  5. -1

    using mapflag like that are just a trick ... it's not a solution to solve the issues.

    i would have wish it was implemented with a different parameter in the *monster() for it to enable trigger the event or at least a custom mapflag or zone at least.

    i believe most of us sometime would write script the way we wouldn't want it to trigger server wide...and yet this changes make it trigger server wide...unless it was using the mapflag tricks.

     

     


  6. We talked about clan based instances but the problem was about the leader, since it's a npc so we weren't sure how we should implement it. Right now it would be possible to check if party leader is in a specific (or any) clan, and if yes allow to create an instance. This way it's still party based, but can be restricted to all or specific clans. Let me know if you guys have better ideas

    perhaps a new instance type for clan?

    we got type for char, party, guild, why not a new clan type?

    just attach the clan id, and everyone from the same clan will be able to join.

     

    if you mean who being the leader in the instance, i dont think its a mandatory to have one.


  7. callfunc( "F_CheckWeight", Knife, 1, 1000 );
    
    function	F_CheckWeight	{
    	.@itemid = getarg(0, Knife);
    	.@amount = getarg(1, 1);
    	.@weight = getarg(2, 1000);
    	
    	return (checkweight(.@itemid, .@amount) && MaxWeight - Weight < .@weight);
    }
    

    and

    callfunc( "F_CheckWeight2", .@array_nameid, .@array_amount, 1000 );
    
    function	F_CheckWeight2	{
    	.@weight = getarg(2, 1000);
    	
    	return (checkweight2(getarg(0), getarg(1)) && MaxWeight - Weight < .@weight);
    }
    

    something like these i guess...


  8. Hey, Rokimoki. It's been awhile since I last saw you in forum (probably back in eA forum) :D

     

    Some tips for you to improve it, if you want.

     

    1.

    query_sql("SELECT `char_id` FROM `custom_pvprank` WHERE `char_id` = " + getcharid(0) + ";", .@flag[0]);
    if (!.@flag[0]) { // create kill_count
    	query_sql("INSERT INTO `custom_pvprank` (char_id, kill_count) VALUES ('" + getcharid(0) + "','" + kill_count + "');");
    } else { // update kill_count
    	query_sql("UPDATE `custom_pvprank` SET `kill_count` = " + kill_count + ";");
    }
    

    this part can actually be simplified into 1 query.. which is

    INSERT INTO..... ON DUPLICATE KEY UPDATE .....
    

    but, you have to set the `char_id` as primary key for the table. Since the ladder only store 1 row per characters, so you won't need to worry on duplicate `char_id`.

    Anyway you already made it as primary key...

     

    2.

    cleararray .@players$[0], "", 10; // defining 10 positions
    cleararray .@kill_count[0], 0, 10;
    
    if (strcmp(.@players$[.@i], "") == 0) break; // if some is empty, stop printing
    

    these are not really necessary .... those npc scope variable will be auto cleared once the conversation with the NPC ended.

    char name shall never be empty unless somewhere in your query gone wrong...  but yet you can skip this by adding another checking in the query which is better if you really need it.

    another reason for that would be, IF it happen one of the player having empty name, the ranking display will be a mess. :D

     

    3.

    getmapxy(.@map$,.@x,.@y,0);
    

    since the .@x and .@y variable are not used, you can actually replace the getmapxy() into strcharinfo(3) which work the same, return the current map name.

     

    4.

    if (rid2name(killedrid) == strcharinfo(0)) { // prevent suicide for gaining points
    

    can be replace by this ... 

    if ( killedrid == getcharid(0) ) 
    

     

    5.

    sleep 50;
    

    haha, you dont really need to update the waitingroom display that frequent, it keep resources. 1 seconds are better :D


  9. I found out that the shadow doesn't look good in certain maps.

    Example: dali

     

    McCr277.png

     

    Anyway, it's still a good work. I like it, except the part where shadow look bad in certain map as shown above.

     

    Hopefully you can come with some workaround for this in the future.


  10. Yes, that's exactly what I meant.

    Also, why are you using UNICODE on GRF Editor? o_o

     

    The names are working here... the ASCII.

    i didnt touch anything ... just download and extract the files... then drag the folders into the GRF editor, normally it would auto change to Korean words.


  11. Actually, the palette follows a pattern.

    It means, the white color is always at same position.

     

    Problems we had with palettes before was just that the palette was made to change colors that the jobs didn't use.

    In that case, jRO made the palettes with an bizarre pattern.

     

    I've corrected them, even the Royal Guard, I'll post it on Download section today, they're totally compatible with default palette already.

    you mean it's now compatible with any previous custom recolor palette for their job classes now :D ??

     

    that's great :D

     

     

    but the sprite files name doesn't seem like using proper encoding or the correct korean font ?  

    anyway not really a big issue :D

     

    XcP2RSt.png 

×
×
  • Create New...

Important Information

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