Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 05/12/23 in all areas

  1. View File Extended Vending 2.0 Extended Vending 2.0 Made in Git Hash: '042b88623bf549b88ba619991aaa186d45f7f998' Description Yet another version of Extended Vending, this one works in actual rA c++. It has a few fixes, including vending tax only working with Zeny as currency. What is new? I tried to improve this amazing mod adding a new feature: Vending Report (Mailbox). Basically... whenever you buy items to a vendor, he receive a report that who bough,what items, how many and total profit of them. You can disable this feature through conf/feature, or If you want to disable it for a specific player you must set the permanent variable called NOVREPORT (by a NPC/Bindatcmd/Idk) For < 2015-05-13 Clients Since old mailbox has 300 characters less than RoDex, I decided to take off items name and amount. So only will send 'who bought' and 'total profit'. Feel free to Donate If you want to support me. Submitter Easycore Submitted 07/10/2018 Category Source Modifications Video Content Author Lilith, Easycore  
    1 point
  2. Heya, This tool parses replay files (rrf) and outputs a readable format. It is used to gather data from official replay files by extracting NPC dialogues, quest status, skill cast time, after-cast delay, etc. Say you want to replicate an official instance, you would get a replay of it and then extract the data using this tool. You'll be able to follow along the mes dialogues, the next statements, etc, when making the actual script. You can save a lot of time doing so. It is a tool I've been using heavily for many years now and it was made to fit my needs, so some stuff may not seem very useful to you. Because of this, I'm making the project public so you're free to add more features/information as you see fit. The source for the Replay format as far as I'm aware is from Dia (from Divine Pride), so huge thanks on that side. Download: https://github.com/Tokeiburu/Rrf-Parser/releases Git repo: https://github.com/Tokeiburu/Rrf-Parser Some replays may not work as this tool was made specifically for kRO replays (and I've been removing support for older versions throughout the years). How it works Change the replay path to your replay and click "Parse Replay" to start the process. Once that's done, you should get the output shown above. Choose the parsing options on the left if you don't want to include useless data. It may be useful for some though. The [output] options are files generated in your folder\output\file.txt. Main output NPC scripts. All the NPCs that have been seen (in order) will be put there with a pre-made script. It will also show "npc_avail" for some very specific NPCs. On kRO, some NPCs don't actually have a view ID but are actually characters with a style. This is what npc_avail is for (though it's not something rAthena supports at the moment). For example: 1@exnw,12,107,3 script ³ªÀÌÆ® ¿öÄ¡#nw3 npc_avail[4306,0,21,7,0,0,0,0,0,0,0],{ end; } Which corresponds to: p.job,p.sex,p.head,p.headpalette,p.weapon,p.shield,p.accessory,p.accessory2,p.accessory3,0,p.bodypalette Equipment. The next entry in the main output is the player equipment with the @item2 command to remake the gears quickly. This only includes equipped items. The other pieces of equipment in the inventory are not included there. Monster spawned. This part will include all the monsters that have spawned and it will not show them more than once. Packet output. That is the main part of the parsed script. It will give you the script lines, cutins, and much more. It will detect cloakoffnpcself, but don't trust the output blindly either. Sometimes kRO just hides a NPC for dumb reasons. Though usually it should be accurate. Parsing options Most of the fields are self-explanatory, so I'll only go over those that aren't. Show raw packets. Outputs the packets in hexadecimals rather than a readable format. Revert instance names. Looks for ###1@name in map names and reverts it back to the original map name. This also changes NPC names that got converted such as something#ins_0o1 to something#ins. Generic packet. This one contains pretty much everything not included in the other options. UnitWalk packet. This one is disabled by default, but you might consider turning it on if you're doing newer instances because kRO uses those a lot lately. When a NPC moves, it will be shown there. mob_data.conf A special file is generated alongside the replay in the output folder called "mob_data.conf" (though it's not a real libconf format). The mob_data.conf file contains data gathered from the mobs inside the replay such as mob level, speed, damage motion, attack motion, boss type, skills used and mob drops. As far as mob drops go however, be careful as the tool makes a lot of estimation there. For example: Mob Death: 148 Drops: 1000364,135 Dropped: 2 The above means the mob has been killed 148 times, and only one drop has been seen (1000364). The estimated drop rate is 1.35%. A drop is defined as an item dropped alongside the unit_dead packet. So it may be wrong, or if the mob is looter type, you'll get a bunch of invalid results. Though usually it's a fair estimation. Tool > Translation helper So if you put the following as the input: select("¾îµð·Î °¡¸é µÇÁÒ?:"); // TICK: 19263 ms, INTERVAL: 0, FORMAT: 0:19 mes "[¸¶¶÷]"; // TICK: 19746 ms, INTERVAL: 433, FORMAT: 0:19 mes "¾ÆÀÌ»þ°¡ ¾îµð¼­ »ì¾ÒÁö? ¾Æ! ÀÌ <NAVI>[À­ÂÊ]<INFO>wolfvill,99,178,0,101,0</INFO></NAVI>¿¡ °¡¸é ¾ÆÀÌ»þÀÇ ÁýÀÌ ÀÖ¾î¿ä."; // TICK: 19746 ms, INTERVAL: 0, FORMAT: 0:19 next; // TICK: 19746 ms, INTERVAL: 0, FORMAT: 0:19 mes "[½ºÄ«´Ï¾Æ]"; // TICK: 20129 ms, INTERVAL: 0, FORMAT: 0:20 mes "ÇÏÁö¸¸ ¸»Çصµ ¼Ò¿ë ¾øÀ» °É¿ä? ¼³µæÇÑ´Ù¸é, ´ç½Å¿¡ ´ëÇÑ ³» »ý°¢µµ ¹Ù²ÙÁÒ."; // TICK: 20129 ms, INTERVAL: 0, FORMAT: 0:20 npctalk "½ºÄ«´Ï¾Æ, ¸ðÇè°¡´ÔÀº ³× »ý°¢À¸·Î °¡Ä¡°¡ Æò°¡µÇ´Â ºÐÀÌ ¾Æ´Ï¼Å.", "¸¶¶÷#wms01"; // TICK: 20129 ms, INTERVAL: 0, FORMAT: 0:20 npctalk "´©°¡ ¹¹·¡? ÀßÇØÁÙ °Å¶ó°í.", "½ºÄ«´Ï¾Æ#wms01"; // TICK: 20129 ms, INTERVAL: 0, FORMAT: 0:20 next; // TICK: 20129 ms, INTERVAL: 0, FORMAT: 0:20 mes "[¸¶¶÷]"; // TICK: 20479 ms, INTERVAL: 33, FORMAT: 0:20 mes "¸ðÇè°¡´Ô, ±×·³ ´Ù³à¿À¼¼¿ä! ³ªµµ À̸¸ °¥°Ô!"; // TICK: 20479 ms, INTERVAL: 0, FORMAT: 0:20 setquest 17510; // State = 1, Time = 0 // TICK: 20479 ms, INTERVAL: 0, FORMAT: 0:20 close; // TICK: 20480 ms, INTERVAL: 1, FORMAT: 0:20 You would get the following as the output: 어디로 가면 되죠? [마람] 아이샤가 어디서 살았지? 아! 이 [윗쪽]에 가면 아이샤의 집이 있어요. <NAVI>[윗쪽]<INFO>wolfvill,99,178,0,101,0</INFO></NAVI> [윗쪽] next; [스카니아] 하지만 말해도 소용 없을 걸요? 설득한다면, 당신에 대한 내 생각도 바꾸죠. 스카니아, 모험가님은 네 생각으로 가치가 평가되는 분이 아니셔. 누가 뭐래? 잘해줄 거라고. next; [마람] 모험가님, 그럼 다녀오세요! 나도 이만 갈게! setquest 17510; close; It extracts the content and puts them in Korean for easier google/papago translate copy paste. The "select" content will be extracted, same for <NAVI> and a few other annoying cases where you end up spending more time removing the tags than actually translating. Tool > Replay simulation This one is meant to "transform" a replay into a script so that you can view it on your own server. The input account ID is your account id, on the test server you'll be on. This is required for the script to work correctly. You will get an output similar to - script REPLAY_SIMULATION -1,{ end; OnTimer1: attachrid(2000012); sendpacket("ff09620006aa010000000000002c0100000000040000008928000000000000000000000000000000000000000000000000000000000000000000000000000024472500000000000000ffffffffffffffff000000b9ccb8aebecf23657031385f7776"); sendpacket("ff09600006a9010000000000002c0100000000040000008828000000000000000000000000000000000000000000000000000000000000000000000000000023c72500000000000000ffffffffffffffff000000b8b6b6f723657031385f7776"); sendpacket("ff09620006ab010000000000002c0100000000000000008b28000000000000000000000000000000000000000000000000000000000000000000000000000023c71500000000000000ffffffffffffffff000000c0ccb9c7b8b123657031385f7776"); end; OnInit: initnpctimer; end; } Then load the script and your character will redo what the replay file was doing. You'll probably have to put your character where the replay starts as otherwise some weird stuff is gonna happen. You'll also need the following script command as well: BUILDIN_DEF(sendpacket,"s"), BUILDIN_FUNC(sendpacket) { const char *input = script_getstr(st,2); struct block_list *bl = map_id2bl(st->rid); unsigned char buf[10000]; int len = strlen(input); int i; for (i = 0; i < len; i += 2) { sscanf(&input[i], "%2hhx", &buf[i/2]); } if (!bl) { npc_timerevent_stop(map_id2nd(st->oid)); st->state = END; return SCRIPT_CMD_FAILURE; } clif_send(buf, len / 2, map_id2bl(st->rid), SELF); return SCRIPT_CMD_SUCCESS; } Notes This is a tool I do not plan on spending a whole lot of time on. It would be a nightmare to maintain in the first place. I will add requested features if any for a short time, but it would be much easier to add such features yourself if you are planning to use this as a base for your own needs. If you want to handle a new packet, simply go in RrfParser\Packet\PacketDecoder.cs and add it as you want. Only those I needed were handled. The display timers are both useful and annoying. Once I'm done with a script, I usually run a quick regex to wipe out all comments and that solves that problem. //.*
    1 point
  3. This is such a minor tweak that I don't even really think it's worth creating a topic for, but my testers reported that this makes the game feel significantly smoother. This change attempts to address a desync issue when attacking. When clicking on a monster that is hostile and is also moving towards you, sometimes your character will fail to begin attacking because the client thinks it is within range to attack, but the character is actually too far away to attack on the server side. It's especially common with monsters that move fast. With this tweak, this situation should no longer happen. The change is in unit.cpp: Find this comment: // Player tries to attack but target is too far, notify client Add this line immediately afterwards: clif_fixpos(src); // synchronize the player's position with the client Don't change anything else. The finished code block should look like this. if(sd && !check_distance_client_bl(src,target,range)) { // Player tries to attack but target is too far, notify client clif_fixpos(src); // synchronize the player's position with the client clif_movetoattack(sd,target); return 1; Then just recompile the code and test it out. Everyone I had test it said it felt instantly noticeable. This does increase the number of packets being sent so this may cause a very minor increase to network traffic, but based on the number of packets that are typically sent back and forth I don't think the effect is very significant.
    1 point
  4. View File Mir 4 Inspired Mining Script Config in OnInit : setarray .reward_id,969,677; // Item ID Rewards set .mineral_count,50; // How many Mineral (*PS : Need to duplicate npc see the bottom script) <-- THIS IS NOT NEEDED IN v1.0.1 set .mining_time,10; // How many Seconds to Mine In v1.0.1 there will be a new command "@startming" you need to run this command 1 time then until you "@reloadscript" or server restart the mining will run correctly ? Submitter ryzenthird Submitted 05/11/2023 Category Games, Events, Quests Video Content Author Ryzen Third  
    1 point
  5. Version 1.0.1

    15 downloads

    Config in OnInit : setarray .reward_id,969,677; // Item ID Rewards set .mineral_count,50; // How many Mineral (*PS : Need to duplicate npc see the bottom script) <-- THIS IS NOT NEEDED IN v1.0.1 set .mining_time,10; // How many Seconds to Mine In v1.0.1 there will be a new command "@startming" you need to run this command 1 time then until you "@reloadscript" or server restart the mining will run correctly ?
    10.00 USD
    1 point
  6. Version v1.5

    358 downloads

    This command sends items to the guild storage without the need of server restart. Example: prontera,100,100,5 script guildgetitem2 100,{ //guildgetitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>}; switch ( guildgetitem2(1218, 1, 1, 1, 10, 4305, 0, 0, 0) ) { case 1: dispbottom "Item added to your guild storage."; end; case 0: dispbottom "Unknown Error."; break; case -1: dispbottom "Cannot open both storages."; break; case -2: dispbottom "Player doesn't have a guild."; break; case -3: dispbottom "Player doesn't have a guild storage."; break; case -4: dispbottom "Guild storage being used by someone else."; break; case -5: dispbottom "Guild storage is full."; break; } end; } Works much like getitem2 and it uses the attached players guildstorage.
    Free
    1 point
  7. Actually just changing the header he won't be able to edit the grf in arkaik. There are many locks, and this one in the header is just one to prevent players from editing grf. My advice is to play like everyone else and stop trying to edit the grf ?
    1 point
  8. View File Find Me! Minigame Adds command @findme for GMs to start the event. First player to touch the GM gets rewarded. Submitter munkrej Submitted 05/09/2023 Category Games, Events, Quests Video Content Author munkrej  
    1 point
  9. Looks like they've changed a couple small things in the code compared to the version I have, I remember why I posted it the way I did the first time now. These kinds of errors typically occur when a method signature has changed, so you just need to swap the affected code with whatever they have in the base version. To fix the first error, in hom_vamporize, find this: if (battle_config.hom_setting&HOMSET_RESET_REUSESKILL_VAPORIZED) memset(hd->blockskill, 0, sizeof(hd->blockskill)); and change it to this: if (battle_config.hom_setting&HOMSET_RESET_REUSESKILL_VAPORIZED) { hd->blockskill.clear(); hd->blockskill.shrink_to_fit(); } For the second, find this in hom_call: if (battle_config.hom_setting&HOMSET_COPY_SPEED) status_calc_bl(&hd->bl, SCB_SPEED); and change it to this: if (battle_config.hom_setting&HOMSET_COPY_SPEED) status_calc_bl(&hd->bl, { SCB_SPEED }); By the way, my version of hom_call is also missing this at the end, as it predates the update where this was done: #ifdef RENEWAL sc_start(&sd->bl, &sd->bl, SC_HOMUN_TIME, 100, 1, skill_get_time(AM_CALLHOMUN, 1)); #endif And similarly this is in hom_vaporize: #ifdef RENEWAL status_change_end(&sd->bl, SC_HOMUN_TIME); #endif You can add this back in if you want (these are responsible for the Homunculi lasting only a certain amount of time). I don't know if this plays nicely with this mod, though.
    1 point
  10. Version 1.0.0

    2344 downloads

    This custom pack was made by Katan in mid-2009, I just made some changes and updates for the new clients. Custom Mobs by Max Dragon Fixed Reploid Bugs Thanks and good luck with your server!
    Free
    1 point
  11. Version 1.0.0

    405 downloads

    October is coming and I'm preparing - I made this sprite in 5 minutes just to go according to the Halloween theme. Use it at your will regards.
    Free
    1 point
  12. https://github.com/rathena/rathena/blob/master/src/map/battle.cpp#L7302 if (flag & BF_SHORT) {//Bounces back part of the damage. if ( (skill_get_inf2(skill_id, INF2_ISTRAP) || !status_reflect) && sd && sd->bonus.short_weapon_damage_return ) { rdamage += damage * sd->bonus.short_weapon_damage_return / 100; rdamage = i64max(rdamage,1); } else if( status_reflect && sc && sc->count ) { if( sc->data[SC_REFLECTSHIELD] ) { struct status_change_entry *sce_d; struct block_list *d_bl = NULL; NO Reflect CT & Desperado if ( (skill_get_inf2(skill_id)&INF2_TRAP || !status_reflect) && sd && sd->bonus.short_weapon_damage_return && skill_id != WS_CARTTERMINATION && skill_id != GS_DESPERADO ) {
    1 point
  13. Hey, y'all! I just wanted to share with you guys a bunch of jobs & wings sprites I found on my ole' treasure box that i've DL'd a long time ago, and i'm not sure if it's still available somewhere. So I figured, why not share it with everyone since it's free(I guess..) and also for the sake of keeping them alive for the public to utilize! Disclaimer I DO NOT own any of these sprites, I am merely uploading a mirror of them. All credits should go to the respective people who made these. Download: 83 Job Class sprite collection Download: 82 Wings sprite collection
    1 point
  14. Hey everyone. <3 It's me from eA. I thought I might as well bring my maps to rA. The fact that these maps are free does not mean that I don't expect credits. Creditting me is all I ask for, though. A tiny favor in exchange for days of hard work, so please! <: Like my maps? Please be kind to consider buying my Purchasable Maps. Thank you! ♥ Don't forget to let me know when the links are dead! - Altzibar - Info: Pretty much a more exotic (though a much smaller) version of Alberta. Youtube: BGM: El Cazador De La Bruja OST 17 - Walk down to your freedom Download: Click Mirror: Click - Crystilia - Info: My first custom town ever, more of a mansion some people said. Kinda random actually. @_@ Youtube: BGM: Strawberry Panic! - Ending (last episode) soundtrack Download: Click Mirror: Click Minimap: ^Download contains minimap! - Flaris - Info: Based on a (part of a) FlyFF map. Youtube: BGM: FlyFF BGM - Flaris Theme Download: Click Mirror: Click - Jazeera - Info: Jazeera means "island" in Arabic, lol that's all the info I'm able to provide. Youtube: BGM: You and I (unfulfilled feelings) - Gundam Seed Destiny Download: Click Mirror: Click - Lunette - Info: This could be the perfect beginners(/Novice) town, especially if your server has some sort of story line. Youtube: BGM: The Last Exile OST - Lost Friend Download: Click Mirror: Click [New] Minimap: Click - Welgaia - Info: An angelic town, big enough to be used as main city for your server. Youtube: BGM: Nana Mizuki - Fiat Lux/Hikari Are (Tales Of Symphonia OST) Download: Click Mirror: Click Minimap: ^Download contains Minimap! That's it for now. If I happen to make more maps in the future I'll add 'em here. Much love, Najara
    1 point
  15. Version 1

    836 downloads

    5 free loading screens and we'll upload more soon.
    Free
    1 point
  16. Version 1.0

    3558 downloads

    Author/Creator: Configuration This is a pack created by eA member Configuration. It includes 100 custom NPCs and a custom mob.
    Free
    1 point
  17. i already register but it seem's the admin is busy he doesn't accept me as a member of brAthena http://www.mediafire.com/download/4kbyvh8hgrdcrug/Happy%27s%20Storage%20%5BHappy%5D.zip
    1 point
  18. ~ Graphical Resources ~ I post here some links to websites who contains sprites for Ragnarok. Those sites gets free-downloads, so check in the website specifics conditions of use. You can of course share your own links to websites that offers free-downloads and release their own work, not stolen one. Links: Green Peach : Website Headgears/Mobs/NPC w/ Recolors Icabit Packs: Exclusives, Sprite Package Collection of Sprites Icabit left on their departure from RO Community. Sasami : Website Alpha RO Client and Assets. Mirror: Google Drive Dead Links: 2020-12-18: @Haziel edit, all broken links moved to Dead Links.
    1 point
×
×
  • Create New...