Leaderboard
Popular Content
Showing content with the highest reputation since 06/05/25 in all areas
-
This is a request from Extend whodrops command to include map drops #8017 I'm only enhancing @whodrops command. I've included map_drops.yml in the command extern MapDropDatabase map_drop_db; extern InstanceDatabase instance_db; sprintf(atcmd_output, "Map drops:"); clif_displaymessage(fd, atcmd_output); std::map<std::pair<uint16, double>, std::vector<std::string>> map_drop_groups; bool found_map_drops = false; for (const auto& map_entry : map_drop_db) { std::shared_ptr<s_map_drops> mapdrops = map_entry.second; std::string map_name = map_mapid2mapname(map_entry.first); std::string display_name = map_name; if (map_name.find("@") != std::string::npos) { for (const auto& instance_entry : instance_db) { std::shared_ptr<s_instance_db> instance = instance_entry.second; if (strcmp(map_mapid2mapname(instance->enter.map), map_name.c_str()) == 0) { display_name = instance->name; break; } for (const auto& additional_map : instance->maplist) { if (strcmp(map_mapid2mapname(additional_map), map_name.c_str()) == 0) { display_name = instance->name; break; } } if (display_name != map_name) break; } } for (const auto& global_drop : mapdrops->globals) { if (global_drop.second->nameid == id->nameid) { double rate_percent = (global_drop.second->rate * 100.0) / 100000.0; std::pair<uint16, double> key = std::make_pair(0, rate_percent); map_drop_groups[key].push_back(display_name); found_map_drops = true; } } for (const auto& specific_entry : mapdrops->specific) { uint16 mob_id = specific_entry.first; for (const auto& drop : specific_entry.second) { if (drop.second->nameid == id->nameid) { double rate_percent = (drop.second->rate * 100.0) / 100000.0; std::pair<uint16, double> key = std::make_pair(mob_id, rate_percent); map_drop_groups[key].push_back(display_name); found_map_drops = true; } } } } if (!found_map_drops) { sprintf(atcmd_output, " - Item is not dropped by map-specific drops."); clif_displaymessage(fd, atcmd_output); } else { for (const auto& group : map_drop_groups) { uint16 mob_id = group.first.first; double rate = group.first.second; const std::vector<std::string>& maps = group.second; std::string map_list = ""; for (size_t i = 0; i < maps.size(); ++i) { if (i > 0) map_list += ", "; map_list += maps[i]; } if (mob_id == 0) { sprintf(atcmd_output, "- All monsters: %.2f%% - (%s)", rate, map_list.c_str()); } else { std::shared_ptr<s_mob_db> mob = mob_db.find(mob_id); if (mob) { sprintf(atcmd_output, "- %s (%d): %.2f%% - (%s)", mob->jname.c_str(), mob_id, rate, map_list.c_str()); } } clif_displaymessage(fd, atcmd_output); } } Screenshot: Extend whodrops command to include map drops (#8017).diff5 points
-
Disable GM sprite - hex Search for: C4 04 84 C0 0F 84 C3 00 00 00 Two matches For both occurrences, replace with: C4 04 84 C0 90 E9 C3 00 00 00 Restore model culling hex Search for: 80 BE 54 01 00 00 01 You will find two matches. In both cases, look at the following bytes: 80 BE 54 01 00 00 01 75 1D 80 BE 54 01 00 00 01 75 45 Replace the 75 1D and 75 45 parts with 90 903 points
-
This feature enhances the standard MVP death mechanic by replacing the generic "Tomb" label with the **actual name of the MVP** that was defeated. When an MVP dies on the map, a tombstone NPC appears at the exact spot of death, and instead of showing a generic label, it dynamically displays the **name of the boss** (e.g., "Phreeoni", "Ifrit", "Baphomet"). **How it works for players:** - When an MVP is killed, a tombstone spawns on the map. - The tomb now shows the name of the MVP, not just “Tomb”. - This helps MVP hunters and players identify what boss was recently defeated, even if they arrived late. - It improves both visual clarity and overall immersion in the game. I created a demo video showcasing how this behaves in-game. **Note to fellow developers:** After completing this feature, I discovered that someone had already created a similar concept before me. However, I had no knowledge of that existing implementation during development and did not reference or use any of their code. This version was built independently from scratch based on how I personally wanted it to function. While the **concept is similar**, the **implementation and behavior may differ** between our versions. I still believe this showcases a useful quality-of-life addition for MVP-related mechanics, and I hope it can serve as inspiration or a base for others who wish to implement their own version. Feel free to check out the demo video and let me know your thoughts!2 points
-
2 points
-
File Name: itemoption File Submitter: keitenai File Submitted: 21 Nov 2016 File Category: Utilities Content Author: keitenai @ command itemoption Script Information: This script allows you to apply random option on a selected equipped item. The Option types can be found in const.txt : LINK!! The Value is the rate of the option type effect. eg: `10` = 10% bonus attack Index location is the Option Slot location. 0 = First item option slot 1 = Second item option slot 2 = Third item option slot 3 = Fourth item option slot 4 = Fifth item option slot NOTE that you will not see the Option type's description (Client Side) if the Option Slots are not filled by sequence (missed a slot). With this i added a security check that if you missed/jump an index slot, the script will automatically fix it for you. @ itemoption makes it easier to apply random option in your item quite easily. Compatible with : rAthena 633a642 Download : itemoption.txt Hope you find this useful itemoption.txt1 point
-
Functor, are you okay? I don't know if Gepard Shield 3.0 is still alive. I need its service. Thank you. Please contact me, your internal message can't be sent. Discord can't add you either. I heard that you are in Ukraine, I don't know if you are safe, I sincerely wish the war will end soon, long live world peace!1 point
-
1 point
-
1 point
-
1st is Download the Repo. 2nd Get you your APIKey here: https://aistudio.google.com/apikey, you need a google account. 3. After getting the APIKey, Put your APIKey at myGeminiAPIKey.js 4. Now, its ready to talk to you.1 point
-
Hey everyone, I wanted to showcase a custom MVP mechanic system I've been developing for Ragnarok Online using rAthena. The idea is to bring more dynamic, thematic, and visually appealing mechanics to MVP encounters — moving beyond the usual tank-and-spank format. DISCORD Takechiii#8303 🛠 What does this system do? Allows MVPs to execute custom attack patterns on specific map coordinates. Works on an 11x11 grid centered around the MVP (6x6 coordinate) to trigger precise damage zones. Each MVP’s behavior can be thematically tailored (e.g., feline patterns for Moonlight Flower, curses for Osiris, etc.). Easily reusable and expandable for other bosses or PvE events. This system is inspired by raid-style battles. It’s ideal for: Custom instances MVP events with multiple phases Progressive PvE challenges I’m still refining the system and adding new mechanics and visual effects. I’m open to feedback, suggestions, or even collaborations!Thanks for watching and reading! Video Preview:1 point
-
1 point
-
I modified this src to the latest rathena git singe_soul_link_mod_v1-1.patch i've tried it and no errors occurred1 point
-
View File HanzoBR Free Thor Skin Blue About this file - EN Made for a friend who ended up not using it, so I'm making it available to the community. This Skin has features of WoE Status (On/Off), Server Status (On/Off), Real + Fake Player Count. Please Selling this product is TOTALLY PROHIBITED! Contents Thor Patcher PSD Included - Modify as you wish. WebFiles View - Online Players, Server Status Map, WoE Status - HanzoBR WebFiles Configuration - Server Connection, Server Status and Online Players - Credit @Lawliet - Thanks for this Web Configuration In the Web/status/inc/config.php directory, configure: $Srv_Host = "127.0.0.1"; // Change to your database IP $Srv_Database = "ragnarok"; // Name of your database $Srv_Username = "ragnarok"; // Username $Srv_Password = "ragnarok"; // Password In the Web/status/playeronline.php directory you will find: $playerCount = PlayerCount(); $number = 0; // number of fake users - used only to configure space for the hundreds place in the view or not. // Add the $number to the result of the PlayerCount() function $result = $playerCount + $number; In $number = 0; you can change the value to 50 for example and the user will see $number + $playerCount Assuming you have 15 real players online, the $result will show 65 Players Online (50+15). I created this configuration to measure the space for the hundreds place in the view, so as not to cut the design, however use this function as you wish. In the Web/status/woestatus.php directory you will find: $now = new DateTime("now", new DateTimeZone("America/Sao_Paulo")); Set your Time Zone, find yours in Time Zone PHP, currently it is set to São Paulo-Brazil time Days configuration $allowedDays = [0, 2, 4]; // 0-Sunday, 2-Tuesday, 4-Thursday, In $allowedDays = [0, 2, 4]; - It means that WoE is enabled for 0 = Sunday, 2 = Tuesday, 4 = Thursday "0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday" Hours configuration if (($day == 4 && $hour == 21 && $minute >= 0 && $minute < 60) || (in_array($day, [0, 2]) && $hour == 20 && $minute >= 0 && $minute < 60)) In (($day == 4 && $hour == 21 && $minute >= 0 && $minute < 60) - It means that on day 4 (Thursday) WoE will start at 9:00 pm and will last 60 minutes. And if you have WoE configured for different times, you can configure it without any problem; In (in_array($day, [0, 2]) && $hour == 20 && $minute >= 0 && $minute < 60) - It means that on days 0 (Sunday) and 2 (Tuesday) WoE will start at 8:00 pm and will last 60 minutes. Don't forget to if you liked this. ----------------------------------------------------------------------------------------------------------------------------- Sobre este arquivo PT-BR Feito para um amigo que acabou não utilizando, então estou disponibilizando para comunidade. Esta Skin tem recursos de Status WoE (On/Off), Status Server (On/Off), Contagem de Players reais + fake. Por Favor Venda deste produto está TOTALMENTE PROIBIDA! Conteúdo Thor Patcher PSD Incluso - Modifique como quiser. WebFiles Visualização - Players Online, Status Map Server, WoE Status - HanzoBR WebFiles Configuração - Conexão com servidor, Server Status e Players Online - Crédito @Lawliet - Obrigado pro isso Configuração Web No diretório Web/status/inc/config.php faça a configuração: $Srv_Host = "127.0.0.1"; // Alterar para IP do seu database $Srv_Database = "ragnarok"; // Nome da sua database $Srv_Username = "ragnarok"; // Usuário de acesso $Srv_Password = "ragnarok"; // Senha de acesso No diretório Web/status/playeronline.php você encontrará: $playerCount = PlayerCount(); $numero = 0; // número de usuários fake - utilizado apenas para configuração de espaço para casa de centena na visualização ou não. // Soma o $número ao resultado da função PlayerCount() $resultado = $playerCount + $numero; Em $numero = 0; você pode alterar o valor para 50 por exemplo e irá aparecer para o usuário o $numero + $playerCount Supondo que você tenha 15 players reais online o $resultado irá mostrar 65 Players Online (50+15), eu criei esta configuração para medir o espaço da casa de centena na visualização, para não cortar o design, no entanto use como quiser esta função. No diretório Web/status/woestatus.php você encontrará: $now = new DateTime("now", new DateTimeZone("America/Sao_Paulo")); Configure seu Time Zone, encontre o seu em Time Zone PHP, atualmente está configurado para horário de São Paulo-Brasil Configuração de dias $allowedDays = [0, 2, 4]; // 0-Domingo, 2-Terça-feira, 4-Quinta-feira, Em $allowedDays = [0, 2, 4]; - Significa que a WoE está habilitada para 0 = Domingo, 2 = Terça-Feira, 4 = Quinta-Feira "0=Domingo, 1=Segunda-Feira, 2=Terça-feira, 3=Quarta-Feira, 4=Quinta-feira, 5=Sexta-Feira, 6=Sábado" Configuração de horas if (($day == 4 && $hour == 21 && $minute >= 0 && $minute < 60) || (in_array($day, [0, 2]) && $hour == 20 && $minute >= 0 && $minute < 60)) Em (($day == 4 && $hour == 21 && $minute >= 0 && $minute < 60) - Significa que no dia 4 (Quinta-Feira) a WoE começará às 21:00hrs e terá duração de 60 minutos. E caso você tenha WoE configurada em horários diferentes, poderá configurar sem problema; Em (in_array($day, [0, 2]) && $hour == 20 && $minute >= 0 && $minute < 60) - Significa que nos dias 0 (Domingo) e 2 (Terça-Feira) a WoE comecará às 20:00hrs e terá duração de 60 minutos. Não se esqueça de se você gostou disso. Submitter hanzobr Submitted 03/05/25 Category Patchers Video Content Author HanzoBR1 point
-
Just sharing my max guild capacity by 20 /src/common/mmo.h : From #define MAX_GUILD 16+10*6 to #define MAX_GUILD 10+10*1 // increased max guild members +6 per 1 extension levels [Lupus] and /src/char/int_guild.c : From g->max_member = 16 + guild_checkskill(g, GD_EXTENSION) * 6; to g->max_member = 10 + guild_checkskill(g, GD_EXTENSION) * 1;1 point
-
Cleaned up the script. Got rid of some eA-style code. Removed the index selection dialogue and made the script automatically detect free option slot. itemoption.txt1 point