Leaderboard
Popular Content
Showing content with the highest reputation on 11/03/17 in all areas
-
October Digest 2017 The following digest covers the month of October, 2017. Staff Changes None. Development Highlights CORE: Migrated mob.c to mob.cpp (593ac627, 215aa158) Migrated skill.c to skill.cpp (2606cf97) Prefer static_casts instead of C casts (a5719e72) Fixes homunculus being able to attack from Manhole (6b671774) Corrected Overed Boost behavior (53ba373c) Fixed a bug where refine bonuses was being incorrectly parsed (872cb42a) Corrected character slot movement (fe75aeab, ae0da362) Fixed a couple of warnings (fb882c4a, ff6722c9) Removed SCRIPT_CALLFUNC_CHECK ifdef-directives (b8562932) Resolved Skill Unit Database parsing issue (54a119c5) Added a duplicate name check for the itemdb (828f7832, 48fcc92a) Updated callshop selling list variables (fa425b83) Updated Convex Mirror to match official behavior (951ff555) Moved some remaining constants into src (f42c2ff2, b196b46b) Added support for 3 new hat effects (8c2f727f) Fixes required equipment check for skills (db37fc7d) Adjusted script command bindatcmd (b4106eb9) Implemented round,floor,ceil script commands (2830183e) Added support for October clients (7dc6f757) Fixed an import issue in mapindex (caf31521) Enabled import for translations by default (3b219565) Added 2 new NPC constants (93ad3a13) Adjusted Item Shop trade restriction (5208d169) Add check in configure to ensure C++ compiler (feb1ab9d) Fixed searchstore for vendings with item id > 32k (18e0f0ab) Fixed duplicated condition check (9772639a) Fixed cmake (611dee07) DATABASE: Added AB_RENOVATIO as reproducible skill (2df18b12) Implemented Terra Gloria cards (091738ac) Implemented cards for Moscovia monsters (fc8534f7, b8844a09, 75653d9d) Fixed missing comma in /db/re/item_db.txt (77a7bc2d) Corrected Aegis names (7f9747c1, 0791adb4) Fixed a duplicate Aegis name (319fc4d1) Fixed Zaha Doll Hat not being refinable (800fd3da) Fixed several item positions (3e78cc1c) Added Mob DB placeholders (705cc5a8) Updated Rebellion class (6a2c1229, 3ab39c4c) Corrected Endure hit count behavior (ea0b54e0) Added new 2016 Wedding skills (c73e10cb, 828f7d6e) Fixed Crimson Saber equip class requirement (b90df893) Added new Intro map for Renewal (c7d5b614, cb760a0a) Corrected Dark Claw behavior (2c1df58b) Corrected St. Patrick's Hat and Green Ale (d15b5fc5) SCRIPT: Updated Job Master NPC (2676d053) Corrected some refiner checks (76923ac5) Added an option to disable Baby Novice on Job Master (7991f47a) Added missing warps from dali to dali02, dali02 to dali (f07ceced) Added MC_CARTDECORATE as Platinum skill (10d40570) Initial release of Sarah and Fenrir memorial (5ed21132, c9ee8eb6) Added new Global Function `F_GetPlatinumSkills` (c76f3675) OTHERS: Updated .sql files to fix Random Options with negative values being stored as 0 in database (f20ac015) Updated the contributing documentation (2c8ab4ff, 9210bf5d, 00682683) Statistics Excluding merges, 12 authors have pushed 84 commits to master and 168 commits to all branches. On master, 128 files have changed. There have been 12,094 additions and 5,820 deletions. There are 38 merged Pull Requests and 14 Proposed Pull Requests. There are 15 new Issues and 51 Closed Issues. List of Contributors @4144, @Akkarinage, @Aleos89, @anacondaqq, @Atemo, @Braniff, @cydh, @Daegaladh, @dastgir, @esu1214, @Everade, @exneval, @feltenc, @Haikenz, @hc3490, @hendra814, @jenkijo, @Jeybla, @joelolopez, @kaninhot004, @Lemongrass3110, @lunixoid, @M4karov, @mazvi, @Mickosis, @Mikegyver, @MuzTank, @RagnarokNova, @Ridley8819, @rpdigos, @Rytech2, @secretdataz, @shushusao, @Stolao, @ToiletMaster, @TokeiBuru, @uddevil, @Yuchinin Show your support to rAthena by submitting your Issue or Pull Requests! By providing enough useful info (Git Hash, Client Date, RE/Pre-RE, crashdump, how to reproduce, etc) you will help us to solve the issues faster5 points
-
View File GRF Editor Hello everyone, GRF Editor is an open-source tool for editing GRF files (https://github.com/Tokeiburu/GRFEditor). It offers a wide variety of features and customizations. The software is very stable and responsive, it can handle large operations without lagging your computer. How to install Download the zip archive provided from the download link at the bottom of this description or directly from there: http://www.mediafire.com/?aflylbhblrzpz0h Install the application with GRF Editor Installer.exe; if you are missing a .NET Framework you will be prompted to download it. Once you are done, you can start the program from the link on your desktop. Key features Overall speed is faster (or at least equal) than any GRF tool. Common operations: add, delete, merge, extract, preview, save. Undo and redo for any operation. It can open any GRF file format. Clean and very interactive interface. Saving formats supported : 0x300, 0x200, 0x103 and 0x102 (through the Settings page) and conversion to the Thor format. Instant filter and search options (example : "map .gat"). File association and context menus integration for .grf, .gpf, .rgz and .thor (through the Settings page). Can rebuild separated images into one file easily. Drag and drop (with the ALT key, can be modified in the Settings page). This is a big part of the software; most of the items can be moved around within the application itself or from/to Windows Explorer. If drag and drop does not work, it is most likely because you've started the program using administrator privileges. GRF Editor does not requires administrator privileges to run. Tools Grf validation: allows you to validate a GRF with multiple settings. It can detect corrupted GRF entries, invalid sprites, empty files, non-GRF files, duplicate files and a lot more. Flat maps maker: generates flat maps from .gat and .rsw files. Useful to generate WoE maps or to fasten up the loading time. Patch maker: generates a GRF patch based on two different GRFs. Hash viewer: shows the hash code (both CRC32 and MD5) for files. Image converter: converts an image to any format requested (BMP, PNG, JPG, TGA). GrfCL: used to create batch files (.bat) which can automate tasks on GRF files. See the content in GrfCL.rar in the download for more information. This tool can be customized from the sources as well. Grf encryption The encryption feature has been enabled again. It's similar to what it used to be and it has been tested on client versions ranging from 2012-08-01 to 2024-01-01. Some error messages will be displayed if necessary. If you have an issue, copy the error message (with the code, if there's one) and send me the client executable with the cps.dll file generated by GRF Editor. There shouldn't be compatibility issues anymore though! Thor files Thor files are patches used by Thor Patcher ( https://github.com/rathena/rathena/wiki/Thor-Patcher ). Because of their similarity with the GRF file structure, they have been integrated within GRF Editor. The primary utility of this feature is that it allows you to add encrypted files to a Thor patch. All the other options can be achieved by using Thor Maker. You'll find the necessary steps below, but test your patches before sending them off to players (I've done a lot of testing on my end, but better be safe). If you're using SecureGRF, then make a new GRF, add the files and encrypt it. In GRF Editor, open the encrypted GRF you just made, use "Save as" and name the new file with a .thor extension. That's it, if you want to change the output directory, click on Edit > Edit Grf/Thor settings. You can select the output mode and the GRF to merge the patch with. Simply save again if you change these properties. If you're using GRF Editor's encryption, then make a new Thor file (File > New > New Thor) and add the files you want to patch it with. Right-click on the files you want to encrypt and use Encryption > Encrypt. Technical stuff Requires .Net Framework 4.0 to run (4.0 or more will work as well). Automatically converts file name encoding to the currently selected encoding (you can change the encoding in the Settings page). Data virtualization is used as much as possible to preview files, meaning the files aren't completely loaded. Right-clicking an item will bring up the available options with that file. Preview file formats: txt, log, xml, lua, lub, bmp, png, tga, jpp, db, ebm, pal, gnd, rsw, gat, rsm, str, spr, act, imf, fna, bson, csv, ezv and wav. Services are "crash ready", meaning that you will be warned about a failed operation and no work will be lost (the application won't close and crash). It tries to continue operating even if it meets unsual conditions. Operations can be cancelled by clicking on the button near the progress bar. The warning level can be changed to avoid messages like "Please select a folder first." When prompted with an error, use Ctrl-C to copy the current dialog's content. Some screenshots! 1) Previewing an act file, while showing the search feature 2) Preview of a model file (rsm or rsm2) 3) Preview of GrfCL 4) Preview of maps 5) Preview of Grf validation 6) Search feature (press Ctrl-F or Ctrl-H to bring up within a text editor) Got a feedback? I'd gladly hear you out and fix issues you have with the program. Submitter Tokei Submitted 01/11/13 Category GRF Files Video Content Author Tokeiburu1 point
-
Hi Sir Functor Hm is the gepard monthy only? for starting server sir.. thanks hope u rep asap...1 point
-
//===== Criado Por: ============================================== //= Euphy //===== Compatível Com: ========================================== //= BRathena -- Tradução por: Julinhobrow //===== Descrição: =============================================== //= Troca sua classe sem necessidade de quest. //===== Comentários Adicionais: ================================== //= com classes 3rd //= administre no final do arquivo. //================================================================ prontera,147,189,6 script Mestra das Classes 4_F_NACORURI,{ function Job_Menu; function A_An; mes "[^8A2BE2Mestre das Classes^000000]"; if (Class > Job_Soul_Linker) { mes "Não existem mais expansões para sua classe?"; close; } if (checkfalcon() || checkcart() || checkmount() || hascashmount()) { mes "Por favor remova seu "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkmount() || hascashmount())?"mount":"") +" para continuar."; close; } if (.skill_point_check && SkillPoint > 0) { mes "Por favor use todos os seus pontos de habilidade para continuar."; close; } .@eac = eaclass(); .@base = .third_classes ? roclass(.@eac&EAJ_UPPERMASK) : Class; if (.@base >= Job_Knight && .@base <= Job_Crusader2) { if (BaseLevel < .rebirth_blevel || JobLevel < .rebirth_jlevel) { .@blvl = .rebirth_blevel - BaseLevel; .@jlvl = .rebirth_jlevel - JobLevel; mes "Você precisa de mais" + (BaseLevel < .rebirth_blevel ? ((.rebirth_blevel - BaseLevel) +" base levels "+ (JobLevel < .rebirth_jlevel ? "e " : "")) : "") + (JobLevel < .rebirth_jlevel ? (.rebirth_jlevel - JobLevel) +" job levels " : "") + "para continuar."; close; } if (Class > Job_Crusader2) { mes "Avançar para a Terceira Classe?"; next; Job_Menu(roclass(.@eac|EAJL_THIRD)); close; } while (true) { mes "Selecione uma opção."; next; .@choice = select(" ~ ^0055FFRenascer^000000:"+(.third_classes ? " ~ ^FF0000Terceira Classe^000000" : "")+": ~ ^777777Sair^000000"); if (.@choice == 3) close; mes "[^8A2BE2Mestre das Classes^000000]"; mes "Você tem certeza?"; next; if (.@choice == 1) Job_Menu(Job_Novice_High); else Job_Menu(roclass(.@eac|EAJL_THIRD)); mes "[^8A2BE2Mestre das Classes^000000]"; } } .@job1 = roclass(.@eac|EAJL_2_1); .@job2 = roclass(.@eac|EAJL_2_2); if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) { .@newclass = roclass(.@eac|EAJL_THIRD); .@required_jlevel = 99; } else if (Class == Job_Ninja || Class == Job_Gunslinger) { .@newclass = .@job1; .@required_jlevel = 70; } if (.@newclass && .third_classes) { if (BaseLevel < .rebirth_blevel || JobLevel < .@required_jlevel) { mes "Você precisa de mais " + (BaseLevel < .rebirth_blevel ? ((.rebirth_blevel - BaseLevel) +" base levels "+ (JobLevel < .@required_jlevel ? "e " : "")) : "") + (JobLevel < .@required_jlevel ? (.@required_jlevel - JobLevel) +" job levels " : "") + "para continuar."; close; } mes "Mudar para "+jobname(.@newclass)+"?"; next; Job_Menu(.@newclass); close; } if (.@eac&EAJL_2) if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) { mes "Não existem mais expansões para sua classe."; close; } if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) { if (JobLevel < .jobchange_first) { mes "Um job level de "+.jobchange_first+" é necessário para mudar para 1st Classe."; } else if (Class == Job_Novice_High && .linear_jobchange && lastJob) { mes "Mudar de Classe agora?"; next; Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER)); } else if (Class == Job_Novice) { Job_Menu(Job_Swordman, Job_Mage, Job_Archer, Job_Acolyte, Job_Merchant, Job_Thief, Job_SuperNovice, Job_Taekwon, Job_Gunslinger, Job_Ninja, Job_Baby); } else if (Class == Job_Novice_High) { Job_Menu(Job_Swordman_High, Job_Mage_High, Job_Archer_High, Job_Acolyte_High, Job_Merchant_High, Job_Thief_High); } else if (Class == Job_Baby) { Job_Menu(Job_Baby_Swordman, Job_Baby_Mage, Job_Baby_Archer, Job_Baby_Acolyte, Job_Baby_Merchant, Job_Baby_Thief, Job_Super_Baby); } else { mes "Ocorreu um erro."; } close; } if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1) { mes "No more jobs are available."; } else if (!(.@eac&EAJL_2) && JobLevel < .jobchange_second) { mes "É necessário possuir nível de classe "+.jobchange_second+" para mudar para a Segunda Classe."; } else if (.linear_jobchange && lastJob && (.@eac&EAJL_UPPER)) { mes "Mudar de classe agora?"; next; Job_Menu(lastJob+Job_Novice_High); } else { Job_Menu(.@job1, .@job2); } close; function Job_Menu { while (true) { if (getargcount() > 1) { mes "Selecione uma classe."; .@menu$ = ""; for (.@i = 0; .@i < getargcount(); ++.@i) .@menu$ += " ~ "+jobname(getarg(.@i))+":"; .@menu$ += " ~ ^777777Cancelar^000000"; next; .@newjob = getarg(select(.@menu$)-1, 0); if (!.@newjob) close; if ((.@newjob == Job_SuperNovice || .@newjob == Job_Super_Baby) && BaseLevel < .supernovice_level) { mes "[^8A2BE2Mestre das Classes^000000]"; mes "É necessário possuir nível de classe "+.supernovice_level+" para tornar-se "+jobname(.@newjob)+"."; close; } mes "[^8A2BE2Mestre das Classes^000000]"; mes "Tem certeza?"; next; } else { .@newjob = getarg(0); } if (select(" ~ Mudar para classe ^0055FF"+jobname(.@newjob)+"^000000 : ~ ^777777"+(getargcount() > 1 ? "Voltar" : "Cancelar")+"^000000") == 1) { mes "[^8A2BE2Mestre das Classes^000000]"; mes "Agora você é "+A_An(jobname(.@newjob))+"!"; if (.@newjob == Job_Novice_High && .linear_jobchange) lastJob = Class; // Note: This is incompatible with the Valkyrie rebirth script. jobchange .@newjob; if (.@newjob == Job_Novice_High) { query_sql("SELECT CAST(`char_id` AS SIGNED), `quest_id` FROM `quest` WHERE `char_id` = '"+getcharid(0)+"'",.@cid, .@quest_id); for(.@x = 0; .@x < getarraysize(.@cid); .@x++) { erasequest .@quest_id[.@x]; } resetlvl(1); } if (.@newjob == Job_Baby) { resetlvl(4); SkillPoint = 0; } specialeffect2 EF_ANGEL2; specialeffect2 EF_ELECTRIC; if (.platinum) callsub Get_Platinum; close; } if (getargcount() == 1) return; mes "[^8A2BE2Mestre das Classes^000000]"; } end; } function A_An { setarray .@vowels$, "a", "e", "i", "o", "u"; .@firstletter$ = strtolower(charat(getarg(0), 0)); for (.@i = 0; .@i < getarraysize(.@vowels); ++.@i) { if (.@vowels$[.@i] == .@firstletter$) return "an "+getarg(0); } return "a "+getarg(0); } Get_Platinum: skill NV_FIRSTAID, 1, 0; if (BaseClass == Job_Novice) { if (Class != Job_SuperNovice) skill NV_TRICKDEAD, 1, 0; } else if (BaseClass == Job_Swordman) { skill SM_MOVINGRECOVERY, 1, 0; skill SM_FATALBLOW, 1, 0; skill SM_AUTOBERSERK, 1, 0; } else if (BaseClass == Job_Mage) { skill MG_ENERGYCOAT, 1, 0; } else if (BaseClass == Job_Archer) { skill AC_MAKINGARROW, 1, 0; skill AC_CHARGEARROW, 1, 0; } else if (BaseClass == Job_Acolyte) { skill AL_HOLYLIGHT, 1, 0; } else if (BaseClass == Job_Merchant) { skill MC_CARTREVOLUTION, 1, 0; skill MC_CHANGECART, 1, 0; skill MC_LOUD, 1, 0; } else if (BaseClass == Job_Thief) { skill TF_SPRINKLESAND, 1, 0; skill TF_BACKSLIDING, 1, 0; skill TF_PICKSTONE, 1, 0; skill TF_THROWSTONE, 1, 0; } if (BaseJob == Job_Knight) { skill KN_CHARGEATK, 1, 0; } else if (BaseJob == Job_Priest) { skill PR_REDEMPTIO, 1, 0; } else if (BaseJob == Job_Wizard) { skill WZ_SIGHTBLASTER, 1, 0; } else if (BaseJob == Job_Blacksmith) { skill BS_UNFAIRLYTRICK, 1, 0; skill BS_GREED, 1, 0; } else if (BaseJob == Job_Hunter) { skill HT_PHANTASMIC, 1, 0; } else if (BaseJob == Job_Assassin) { skill AS_SONICACCEL, 1, 0; skill AS_VENOMKNIFE, 1, 0; } else if (BaseJob == Job_Crusader) { skill CR_SHRINK, 1, 0; } else if (BaseJob == Job_Monk) { skill MO_KITRANSLATION, 1, 0; skill MO_BALKYOUNG, 1, 0; } else if (BaseJob == Job_Sage) { skill SA_CREATECON, 1, 0; skill SA_ELEMENTWATER, 1, 0; skill SA_ELEMENTGROUND, 1, 0; skill SA_ELEMENTFIRE, 1, 0; skill SA_ELEMENTWIND, 1, 0; } else if (BaseJob == Job_Rogue) { skill RG_CLOSECONFINE, 1, 0; } else if (BaseJob == Job_Alchemist) { skill AM_BIOETHICS, 1, 0; } else if (BaseJob == Job_Bard) { skill BA_PANGVOICE, 1, 0; } else if (BaseJob == Job_Dancer) { skill DC_WINKCHARM, 1, 0; } return; OnInit: .rebirth_blevel = 99; // Minimum base level to reborn OR change to third class .rebirth_jlevel = 50; // Minimum base job level to reborn OR change to third class .jobchange_first = 10; // Minimum job level to turn into 1st class .jobchange_second = 40; // Minimum job level to turn into 2nd class .third_classes = 0; // Enable third classes/Extended Classes? (1: yes / 0: no) .supernovice_level = 45; // Minimum base level to turn into Super Novice .linear_jobchange = 1; // Enforce linear class changes? (1: yes / 0: no) .skill_point_check = 1; // Force player to use up all skill points? (1: yes / 0: no) .platinum = 1; // Get platinum skills automatically? (1: yes / 0: no) end; }1 point
-
Hello, I would like to share my code for a C++ Athena-like server I started to develop some time ago. It's a rewrite from scratch retaining Athena's interfaces (like internal network protocol, etc.) Basically all skeleton functionality is ready except the game mechanics itself: account, character and zone servers accept client up to login to the map, SQL database is abstracted, 99% of all network code is ready. I am not actively developing it now and I don't know if it is of any interest to anyone, but I suspect that at least it's code can be reused in other projects. I published it here: https://github.com/elelel/ares1 point
-
This is a clientside limit(hardcoded). I dont think there are any diffs for this yet.1 point
-
I have hex editing my client (2015/09/16), thank you for taking the time to help me with this problem. Problem Solved !1 point
-
1 point
-
1 point
-
1 point