Leaderboard
Popular Content
Showing content with the highest reputation on 03/29/25 in all areas
-
Many people have questions about how to properly set up a newly acquired VPS to run the rAthena emulator. To simplify this process, I created an automated script that handles all the necessary configuration quickly and easily. Most tutorials available online focus on running the emulator on personal computers, but nowadays, the trend is to use a VPS for better performance and stability. With this script, you can set up your environment efficiently, even without advanced server knowledge. For those who want to start a professional rAthena project, here are some tips: 1. Use MariaDB instead of MySQL MariaDB is a community-developed fork of MySQL that offers several performance and optimization advantages, especially for large-scale applications like rAthena. While both database systems are compatible, MariaDB stands out due to its efficiency in handling intensive queries. Benefits of using MariaDB: Better Performance: MariaDB is optimized for handling large volumes of data and executes complex queries faster than MySQL. Improved Storage Engines: Supports advanced engines like Aria and TokuDB, which enhance performance and reduce data fragmentation. Faster Replication: Offers faster and safer master-slave replication, ensuring better data synchronization in distributed environments. Open Source & Active Development: Fully open-source with a more active development cycle, meaning better features and faster bug fixes. Optimized Thread Pooling: Handles multiple simultaneous connections efficiently, reducing CPU overhead and improving query response time. For an rAthena server, this translates to faster character loading, smoother gameplay, and better handling of concurrent player actions. 2. Use nftables instead of iptables nftables is a modern packet filtering framework that replaces the older iptables. It is now the default in most Linux distributions and provides better performance and flexibility when managing network rules, including basic DDoS protection. Benefits of using nftables: Higher Performance: Processes rules faster with a more optimized kernel implementation, reducing the impact on system resources. Simplified Rule Management: Uses a cleaner and unified syntax, making it easier to create and manage complex firewall rules. Better DDoS Mitigation: Supports more efficient rate limiting and packet inspection, allowing you to block basic DDoS attacks with minimal overhead. Dynamic Rules: Allows for dynamic rule adjustments without the need to reload the entire firewall configuration. IPv4/IPv6 Support: Handles both IPv4 and IPv6 rules natively, simplifying firewall management in modern environments. For a professional rAthena project, nftables ensures better network protection, faster packet processing, and more efficient handling of traffic spikes during large player events or attacks. Instructions to Use the Script: Upload the script to your VPS Use an SCP tool or copy-paste the script contents into a file called ubuntu.sh. Make the script executable: chmod +x ubuntu.sh Run the script with root privileges: sudo ./ubuntu.sh Follow the interactive prompts: Choose between MariaDB or MySQL. Input the database name, database user, and password. The script will: Update system packages. Install required dependencies for compiling rAthena. Set up MySQL or MariaDB. Install and configure phpMyAdmin at /phpmyadmin. After completing these steps, your VPS will be ready to compile and run rAthena. ubuntu.sh2 points
-
Hallo there i got it finaly running that my custom created mobs can also enjoy the players carts. rathena/src/map/clif.cpp: void clif_getareachar_unit( map_session_data* sd,struct block_list *bl ){ ..... case BL_MOB: { ..... int carttype = 0; if (md->sc.getSCE(SC_PUSH_CART)) { carttype = md->sc.getSCE(SC_PUSH_CART)->val1; PACKET_ZC_EFST_SET_ENTER p{}; p.packetType = HEADER_ZC_EFST_SET_ENTER; p.targetID = md->bl.id; p.type = status_db.getIcon(SC_PUSH_CART); p.duration = client_tick(9999); #if PACKETVER >= 20120618 p.duration2 = p.duration; #endif p.val1 = carttype / 64 - 1; p.val2 = 0; p.val3 = 0; clif_send(&p, sizeof(p), &sd->bl, AREA); } ... } ... } Here also a script to set it to a bl->id like a spawned monster or npc BUILDIN_DEF(setunitcart, "ii"), BUILDIN_FUNC(setunitcart) { struct block_list* bl = nullptr; int carttype = script_getnum(st, 2); if (carttype < 0 || carttype > MAX_CARTS) return SCRIPT_CMD_SUCCESS; bl = map_id2bl(script_getnum(st, 3)); if (bl) sc_start(bl, bl, SC_PUSH_CART, 100, carttype, 0); return SCRIPT_CMD_SUCCESS; } I hope you'll find it usefull like me. A little hint at the end here... you can get the block id of a mob after spawning them (mob_once_spawn in the mob.cpp returns a int32 with a block id or 0 for failed to spawn)1 point
-
1 point
-
Oh, and one more thing—it was never "Merged branch 'master' into master" during that update. https://github.com/rathena/rathena/pull/9056 Bro are you drunk ? You didnt tried what I said isnt it ? Then most probably you dont know how to use github and how to revert as I said. Your screenshot of file also didnt show you did tried during 9 March until that previous PR as per told. So for what we still discussed here ? I already show what is the rathena script that changed that and revert back to. https://github.com/rathena/rathena/commit/139ea0b5b393c3b19b07103245c16f756a2b8d2d#diff-1d06ccaac468f1155a6018c8ab3271064538967aac6cd396f43af7e642f7a9c0 This is the script which is officially from rAthena but before that commit merged : https://github.com/rathena/rathena/blob/6ac181503f9317692521bde0073cb8e5c6b14fa6/npc/re/merchants/Extended_Ammunition.txt If you didnt know how to use git, learn a bit how to revert and understand why this commit is done. I already told u to download what date rathena. if you download u will understand the issue. Or else, good luck and learn more on how to understand how git works.1 point
-
I didn't find this available anywhere I spent about an hour doing semi-complex algorithms to compare similar and median pixel colors in several of the newer card bmps that have slightly higher quality, and then manually tweaking them to have a clear top to write text and have clean PNGs to base my cards off of. To make the title: I recommend "Sylfaen" font, size 14, all uppercase, with a 1px white outline and 192 opacity. On Paint.net, I use "Sharp (Modern)" text rendering mode with Anti-Aliasing on. It's not identical to the real card title font which is unknown, but it's almost impossible to notice the difference. To make the number at the top right: copy it from an existing card.1 point
-
its on git. so how is it im not sure ? if not just download that rathena 100% from github during that date. did u know u can revert a few commit back ? then do it and try. Download latest rathena, revert 10 commit back, and try. as simple as that. Just make sure u know how to revert 10 commit back and how to use git. So what u should do to get the same result is : 1. Download latest git rathena 2. Revert 10 latest commit. 3. Retry the issue or see the npc file after u revert 10 commit.1 point
-
I already replied to this git comments. And i replied again here why. its already changed 3 weeks ago (9 march 2025) so if people using latest rathena before that commit, will have that issue. https://github.com/rathena/rathena/blob/6ac181503f9317692521bde0073cb8e5c6b14fa6/npc/re/merchants/Extended_Ammunition.txt See that file before that commit. that commit happens 3 weeks ago which is 9 march 2025. it changed this file. https://github.com/rathena/rathena/commit/139ea0b5b393c3b19b07103245c16f756a2b8d2d#diff-1d06ccaac468f1155a6018c8ab3271064538967aac6cd396f43af7e642f7a9c0 They track from official its using close; but in rAthena it doesnt yet supported as Atemo said. Official script uses "callshop" then "close" for these NPCs, but rAthena doesn't currently support this. That's why these scripts have been modified/reverted (hopefully temporarily) in 11d373a So if you are downloading this rathena since before this PR update around 48hours ago till last 3 weeks, the debug warning will appear. If you didnt believe it, try to download rAthena dated around 2 weeks ago, and try. Or try update that rAthena just a few days after 8 March 2025.1 point
-
Well, break time's over, I'm back to it with more crazy new mechanics. I know what you're thinking: "I love the Bard / Dancer class, but I'm a total loser with no friends so the party support aspect of the class isn't useful to me!". Well, there's an easy solution to that problem, we'll just have to make some friends! Not through tedious social interaction, but with a new skill! Introducing Captivate, a new skill for Bard / Dancer. Just find a friendly-looking mob and cast the skill on them to make them your new friend! (This spell does have a lengthy cast time so if you're planning to cast this on a hostile mob or a monster that can cast-detect you might want to find a source of uninterruptable cast) After captivating your target, they'll follow you around and attack things that attack you or that you attack, kind of like a pet. If you'd prefer to take a more active approach, you can also direct them using the Conductor skill: Go my minion! You can even support your new friend with your song and dance abilities to enhance their fighting abilities or heal. Of course, nothing lasts forever. After the skill's duration expires you'll be all alone again. But there's plenty of mobs in the dungeon! Now to have my new friends do my dirty work in PVP. The way this works under the hood is that when you use the spell on a monster, they are despawned and recreated as a minion using "mob_once_spawn_sub", similar to AM_CANNIBALIZE. Most of the heavy lifting is already done by the follower AI, though some tweaks to "battle_check_target" were needed to allow mobs and players to attack them. At any rate, I think this is a fun ability. It's not actually super powerful (of course, you can't use it on bosses or monsters that are higher level than you, and it has a cooldown so if you're going through minions fast you'll have to wait), but it's unique and I think it fits with the character. Speaking of minions, Blacksmith also now has the ability to summon these. Nothing crazy here, this was already a Mechanic ability that has few changes. For Blacksmith, you need the forging abilities to learn this skill, which gives forgers a little more offensive presense. Also, I fixed the Magic ones. In the base game, they're all Yellow, regardless of element, so I recoloured them to match their element. Here are the fire and earth ones. It turns out this is actually super easy. Using Act Editor, you can use the "Quick Palette Edit" to instantly swap out the colours across the entire Act file. It only took a couple minutes to create the palette swaps. I encourage anyone else who wants them recoloured to learn how to do this, because you could easily use this to recolor other sprites too. Makes you wonder why Gravity didn't bother.1 point