Jump to content

trickyloki3

Members
  • Posts

    17
  • Joined

  • Last visited

  • Days Won

    1

trickyloki3 last won the day on June 16 2020

trickyloki3 had the most liked content!

Profile Information

Recent Profile Visitors

2508 profile views

trickyloki3's Achievements

Poring

Poring (1/15)

15

Reputation

  1. Thanks! I updated the yaml scanner to accept UTF-8 characters. The tool uses templates to generate the item descriptions. If you translate the templates to another language, then the tool would generate item descriptions in another language. Also, I only support rAthena in Renewal mode. If you are running rAthena in Pre-renewal mode, then you might have to update the item descriptions, e.g. the fixed and variable cast time bonuses. If you have a different max base level or job level or status points, then you have to change some of the YAML files. For example, if your server uses a different max base level, then alter constant_data.yml. - identifier: BaseLevel variable: true tag: Base Level range: - min: 0 max: 150 If your server uses a different max refine rate, then alter statement.yml. - identifier: getrefine print: Refine range: - min: 0 max: 15 - identifier: getequiprefinerycnt print: {0|equip} Refine range: - min: 0 max: 15
  2. Yup. I started this project around 2009 for educational purposes. And I am going to be supporting this version moving forward.
  3. Source: https://github.com/trickyloki3/pj59 Platform: Linux / OSX Requirement: make, flex, bison, gcc This tool is use for translating item scripts into item descriptions. { bonus bAtkEle,Ele_Dark; bonus2 bAddEle,Ele_Ghost,15; bonus3 bAutoSpell,"MG_STONECURSE",3,100; bonus2 bAddEff,Eff_Stone,10; bonus bDex,3; } - id: 1138 name: Mysteltainn bonus: | Weapon endowed with Dark property. +15% Physical Damage vs. Ghost enemies. Add 10% chance to cast Level 3 Stone Curse for each weapon attack. Add 0.10% chance to inflict Stone on enemy for each weapon attack. DEX +3 Note: the item descriptions are based on rAthena in Renewal mode. The item descriptions can be changed by altering the template files, i.e. statement.yml, bonus.yml, sc_start.yml, etc. I realized that a specialty tool like this can be difficult to use. If you need help, then feel free to ask. I appreciate any feedback. If you want to see what the output looks like, then checkout the attached file. output.yml
  4. The project is close to completion. I still have to integrate the lua library and write the source for updating an existing itemInfo file. I don't know if anyone was able to get this project to work by themselves. If so, then I would love to hear your feedback. I have attached a text file containing the item descriptions generated by i2d. (using the renewal item database from dd0842) If you are interested in this project, then feel free to message me. I want to make this project easy to use, accessible, and free for everyone. output.txt
  5. Last time I did flavor text, I just pick among a few sources for the best translation and stored it in a sqlite3 database, which can be found here. Then I combine the flavor text with what I generated from the item scripts and properties. Imo, flavor text could be an optional feature since I don't want to go through that process again. The primary goal of i2d is to translate item script to item description. (See the attached file; output.txt.) To be honest, a separate program could always do the final itemInfo.lua generation. Here is a few samples from output.txt 4658 - Nightmare Verit Card [script] { bonus2 bMagicAddClass,Class_All,5; if(getrefine()>6) { bonus2 bMagicAddClass,Class_All,3; } if(getrefine()>8) { bonus2 bMagicAddClass,Class_All,2; } } => Increase magic damage by 5% against normal, boss, guardian, and battlefield enemies. [Refine Count is 7 - 15] Increase magic damage by 3% against normal, boss, guardian, and battlefield enemies. [Refine Count is 9 - 15] Increase magic damage by 2% against normal, boss, guardian, and battlefield enemies. 12225 - Sweet Candy Cane [script] { pet 1245; } => Tame a Christmas Goblin. [Pet Script] Add a 5% (+5% when loyal) chance to cast level 5 Sight. [Loyal Pet Script] Max HP +30 Reduce damage by 1% from water property. 4653 - Nightmare Arclouse Card [script] { bonus2 bSubRace,RC_Brute,20; bonus2 bSubRace,RC_Undead,20; } => Reduce damage by 20% from brute enemies. Reduce damage by 20% from undead enemies. [combo] [Nightmare Arclouse Card, Nightmare Mimic Card Combo] Reduce damage by 5% from brute enemies. Reduce damage by 5% from undead enemies. Pierce magic defense by 50% of brute enemies. Pierce magic defense by 50% of undead enemies. [Nightmare Arclouse Card, Nightmare Minorous Card Combo] Reduce damage by 5% from brute enemies. Reduce damage by 5% from undead enemies. Pierce physical defense by 50% of brute enemies. Pierce physical defense by 50% of undead enemies. It is not perfect, but it does a great job for simple code structures. output.txt
  6. @iwilnot Thank you for the links. Do you mean comparing the different flavor text? Otherwise, I only check whether or not the generated item description is semantically equivalent to the item script.
  7. Hey guys, I'm working on a project that translates item scripts into item descriptions. The source is available at github. The idea is simple. For example, the item script from item id 1310 (Glorious Cleaver) { bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(.@r>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; } } is converted into Increase physical damage by 75% against demihuman enemies. Increase physical damage by 75% against player enemies. Pierce physical defense by 20% of demihuman enemies. Pierce physical defense by 20% of player enemies. Weapon is indestructible. [Refine Count is 6 - 15] Increase physical damage by 6% ~ 15% (Refine Count) against demihuman enemies. Increase physical damage by 6% ~ 15% (Refine Count) against player enemies. Pierce physical defense by 5% of demihuman enemies. Pierce physical defense by 5% of player enemies. Attack Speed +5% [Refine Count is 9 - 15] Attack Speed +5% Add a 5% chance to cast Critical Wounds of level 1 on each normal attack. Add a 20% chance to cast Critical Wounds of level 2 when using Mammonite. Another example, the item script from item id 1311 (Vecer Axe) { if(readparam(bLuk)>=90) { bonus bBaseAtk,20; } if(readparam(bDex)>=90) { bonus bCritical,5; } if(readparam(bDex)>=90&&readparam(bLuk)>=90) { bonus2 bSkillAtk,"MC_MAMMONITE",15; } } is converted into [LUK is 90 - 150] Base ATK +20 [DEX is 90 - 150] Critical +5 [DEX is 90 - 150 and LUK is 90 - 150] Increase damage of Mammonite by 15%. The tool has a few limitations regarding non-trivial code structures and unsupported statements, functions, and etc. However, the tool's one major advantage is that there is no mismatch between the server's item scripts and client's item descriptions. If this sounds familiar, then you may remember me from this thread. Unlike the previous project, you can translate the json data files into another language, which is used to generate item descriptions. Project Language: C License: Public Domain Platform: Windows, Linux, Mac OS X Dependency: jansson (MIT License) Build: Visual Studio 2017, makefile Support: rAthena (renewal) To Do lua format flavour text [optional] I Need Help I need multiple sources for flavor text in English. If you have any links or files, then feel free to send them to [email protected]. For example, the item id 1186 (Death Guidance) has the flavor text (from RMS). All present for the destruction of weapons that exist cursed. The sword is the curse of his master, and is the owner and make someone unhappy.
  8. You need to pull down the librbt and libsort submodules; i.e. my red black tree and quick sort implementation. git submodule init git submodule foreach --recursive git pull origin masterIf you have visual studio 2014, then you can compile on windows without problems.On linux, you'll need to make liblua.a and sqlite.a separately. I still need to work on the makefile. >.>
  9. Updated result.txt and result2.txt. 03/07/2016 Hiya e1 :D I came to share the fruits of my labor. Attach below are item scripts translated into item descriptions. From rathena's item database on revision 1abb02c to be exact. There are still a few things left to do. See https://github.com/trickyloki3/eadb.compiler if you're interested. Everything is open source and available for compilation on OS X, Linux, and Windows. (Uses ANSI C libraries and libc.) Here are some samples: Sword Guardian Card (getiteminfo predicate generation) getiteminfo(getequipid(EQI_HAND_R),11)==2 || getiteminfo(getequipid(EQI_HAND_R),11)==3 [4427] [Right Hand's Weapon Type is One-handed Sword, Two-handed Sword] HIT +5 CRIT +5 +25% Bowling Bash damage.Glorious Spear (multi-level if-else generation w/ set blocks) * fixed [1426] +95% physical damage against demi-human enemies +95% physical damage against player enemies pierce +20% physical defense of demi-human enemies pierce +20% physical defense of player enemies weapon is indestructible [Refine Level 6 ~ 15] +16% ~ +121% physical damage against demi-human enemies +16% ~ +121% physical damage against player enemies pierce +5% physical defense of demi-human enemies pierce +5% physical defense of player enemies ASPD +10% [Refine Level 9 ~ 15] [Knight] +20% chance of casting level 2 Critical Wounds when using Pierce [Crusader] +10% chance of casting level 5 Gloria Domini when attacking Glorious Pistol (bonus generation) * fixed [13110] +55% physical damage against demi-human enemies +55% physical damage against player enemies pierce +20% physical defense of demi-human enemies pierce +20% physical defense of player enemies weapon is indestructible [Refine Level 6 ~ 15] +16% ~ +121% physical damage against demi-human enemies +16% ~ +121% physical damage against player enemies pierce +5% physical defense of demi-human enemies pierce +5% physical defense of player enemies [Refine Level 9 ~ 15] +100% chance of casting level 1 Flip the Coin when using Rapid Shower +0% ~ +30% (Refine Level) Rapid Shower damage.Vanberk Card (autobonus generation) [4411] STR +2 Add 0.50% chance to activate on meelee and range phyiscal attacks for 5 seconds. CRIT +100Enhanced Soldier Skeleton Card (predicate generation) [4634] [Base Level 1 ~ 99] CRIT +9 [Base Level 100 ~ 175] CRIT +10 +5% critical damage [15061] All Status +1 [Mage, Archer, Acolyte] +50% silence status resistance [Swordsman, Merchant, Thief] +50% stun status resistance Blue Box (item group generation) [603] Select 1 item from Blue Box group. * 52 healing items * 44 usable items * 423 etc items * 210 armor items * 239 weapon items * 20 pet equipment items * 28 ammo items * 6 delay usable items result.txt result2.txt
  10. There are VS 2015 projects for db, and ic; including the dependencies sqlite3, libconfig, and lua5. db converts eathena, rathena, and hercules databases to sqlite3 databases. ic uses the sqlite3 database from db to generate the descriptions. There will be a third tool that generates the txt and lua file format after the descriptions are generated. See the proj folder for the VS 2015 projects. Currently, the ic project is under development again; main function is in src/ic.c. You can uncomment a few things to see what it is outputting. src/db_search.c; search sqlite3 database to get information. src/script.c; primary source file for generating description src/range.c; data structure for representing min and max values src/name_range.c; data structure for representing logic trees build from AND and OR operators (build on top of range.c) src/util.c; for string, sorting, and error handling. Currently, most bonuses generate nonsense, since I am still working on redoing them and accidentally chopped off the offsets for the format string. (see res/bonus_db.txt) Q.Q
  11. Sorry for the late response. I've been rewriting large portions of the project for the past few months and updating all of the project's resources. And I've been spending a great deal of time reading the battle.c, status.c, pc.c, and map.c source for accurate status and bonus translations. 1. Revise all +200 bonus format and translation in res/bonus_db.txt. 2. Recognize and interpret script engine variables in expressions. 3. Implement compound assignment, increment, and decrement operators. 4. Re-implement processing of conditions for if, if-else, ? operator, and for statements. 5. Re-implement scheme for complex expressions show players how bonuses are calculated. 6. Re-implement .txt and .lua generation. 7. Develop a user interface for Windows. 8. Rewrite build script and packaging for Linux / OS X systems. I work on this project for fun and to improve my skills. But, I hope this project will be useful and serve as a decent contribution to the community. The next release will only be for eAthena and rAthena because I don't have time to develop the resources for Hercules.
  12. Todo * Create Visual Studio project for compilation on Windows. * Create Autotools for compilation on Unix and Linux. * Write guides on how to use the stupid program.
  13. Yup, I'm still working on it. I'll definitely support whatever you commit Nana
  14. Due to all the fixes made to the item database. The item database can be compile with ABSOLUTELY NO ERRORS on the most recent repository pulled @ 3/14/2015. Project Update: I am going to integrate lua and use it to do the item format rules, I'm looking towards creating a final usable item info (lua) or item description table (txt). Keep an eye out! Also checked out the item script to English translation. item.txt
  15. Yeah, I'm currently working on the autotools so that the project can be compiled on Unix, OSX, and Windows (with MinGW or Cygwin). In addition, I might setup a homebrew formula for OSX, rpm packages for red hat Linux, and VS project for Windows, but this will depend on demand. And since the only dependencies are standard C library, sqlite3, and libconfig (Hercules only), it should be fairly portable. Yeah, the ternary condition (? operator) has been fixed. If you look at the item 13110: bonus2 bAddRace,RC_DemiHuman,pow(((getrefine()>14)?14:getrefine())-4,2) compiles down to [Refine Rate 6 ~ 15] -> Increase +4% ~ +100% (based on Refine Level) physical damage on demi-human enemy. The compiler figures out that ((getrefine()>14)?14:getrefine()) will only be ever have a range of 6~14 and subtract 4 will be 2~10, then pow with 2 will get 4 ~ 100.
×
×
  • Create New...