Jump to content

eduardoxmenezes

Members
  • Posts

    35
  • Joined

  • Last visited

Everything posted by eduardoxmenezes

  1. Hello As far as I know, by default clones don't use skill. So, configurations can be made on mobskill_use and its availability related to timing/timer. Again, by default it is disabled
  2. Hello all, 'been working with this for some time now. I guess it's time to showcase my @slaveclone mod aka SC. Big thanks to developers!; I just followed their structure & flow -with some additional edits here and there. I apologize for violating the rule. (text to be updated) Preview: Main Use: By using item to call the function Pre-configure SC from battle_config and box of Hotkeys Let the AI run (mob.cpp) Tested Okay so far (on low rate, and 1/2 stored exp gained from 1 mob, per Slaveclone) : Ninja < Lv 90 SM -> Crusader AC -> Hunter & Bard TF -> Assassin & Rogue MC -> Alchemist AL -> Priest & Monk MG -> WIzard & Sage Gunslinger < Lv 60 Summoner < Lv 60 Heckyeah : Killed 1 Phreeoni, 1 Maya Some in-game configuration: battle_conf preview : //slaveclone sceasymode: no //some adjustment such as slaveclone cast can be cancelled if (no) sceasymode. Future: consuming ammo & sync-in with the source account timelimitsc: 1200000 //some adjustment such as slaveclone cast can be cancelled if (no) sceasymode. Future: consuming ammo from its clone-source when (yes) //atc_slave_clone_limit: 50 //max number of active slaveclone being summoned (default 25) //unused more_exp_rate: no //yes = monster level * actual exp prepared more_exp_rate_f: 4 //the bigger the number, the smaller more_exp_rate(yes) affects. 4 is just okay for more_exp_rate(yes) hyperactivesc: yes //hyperactive slaveclone skill call sclonepartyexpdist: yes //unused. party-share exp. IDK, too small exp?. Used: just normal exp retrieval, but parallel for all active char cur_mstat: 10 //stat modifier. 10 means no change. Somehow slaveclone is weaker than the original when 10. IDK. //finally I can avoid to use this!! scskillbyhotkeys: yes //sorting slaveclone stock of skills by active hotkeys. (No) means doing default sorting (all available skills for current char) randskill: yes //(yes) randomizes the decision to choose hotkey index; while (no) repeat the cycle to sort the decision from hotkey index 0 to MAX_HOTKEYS mvp_raid_mode: no //to increase slaveclone attack skill's permillage mvp_raid_mode_m: 3 //some modifier for mvp_raid_mode. I forgot what this number means lol sorry devotion_level_difference: 100 //actually 10 is default retaliate_to_master: no //(No): so that slaveclone fights on its own sake. (but giving EXP to master hahaha) clone_skill_rate: 100 //self explanatory slaveclonepet: yes //yaaay pet is available now. Elemental too. Homun too. Mercenary is not (bcs max level is just 99 so meh). CORRECTION: pet_id is messedup. Fallbakc to No cur_attprob: 60 //only for dev mode //a for attackProbability (attProb) // 100 means always melee attacking // i guess this is not absolute, since even with 100, mobskill_use still is called on some other events. So ya, just normal. // the reason why only lists to the second jobs, because player is assigned its job through the progression, and I assume that style of play between second and third job player is almost the same. // example, Arch Bishop is recognized as novice, acolyte, and priest. // this codes are used when filtering whether a char should melee attacking or should cast skill nv_a: 100 //novice snv_a: 65 //super novice al_a: 50 //acolyte pr_a: 30 //priest ab_a: 30 mo_a: 85 //monk sr_a: 85 . . . .and other jobs //these ones determine combat style. omg i need JSON nv_cc: 1 //novice snv_cc: 1 //super novice al_cc: 1 //acolyte pr_cc: 1 //priest ab_cc: 0 mo_cc: 0 //monk sr_cc: 1 . . . .and other jobs Purpose: Well, to make solo grinding more fun & not lonely. In NOT easymode, I wish to forbid other client to slaveclone each other, although it also fun in a limited number of players. Deliberate changes: Removed restrictions of AL_WARP so you can warp to anywhere Some musical skills's unit edits on the *.yml Activated pet's skills on *.yml Auto-Triggerred skills: SA_CASTCANCEL is prepared/pre-triggered anytime for Sage SC's AM_CALLHOMUN will trigger player's AM_REST, just so you can differ which homun is whose SC's GS_GLITTERING is triggered by mob_dead( ) etc Some Features: "Partner Flute" item, as the gate to access the script to call the modified mob_clone_spawn SP for SC. Did you see the blinking mob (SC) HP down there? Yup, that's SP. I dont know how to use homun's HP SP bar for md / mob. Skills are working hehehe (havent tested passed the Rebirth level) Other extensive @atcommand to control the owned slaveclones Pet, Homun. And trigger to homun's skills, and their attack A single client window opened is enough Stored EXP & Zeny from mob; and Char get its retrieval by logging in (Visual) Merchant's cart, Spirit/Mind Bullet, Spirit Marble, Falcon Battle differentiation on peculiar use of weapon by certain Job. For example, when Hunter equipped with bow it runs offensive (chasing target, etc), but when equipped with not a bow, they run defensive (stay close to main player) and using close-ranged traps Item amount emulated by the clone itself, so it fails to use MG_STONECURSE when 1 Red Gemstone had been used already Changing SC's equipment via atcommand. Example use: when MVP is suddenly changed to be a mob w/ ghost property Applying usage of item to SC (so far ASDP potions) Certain (most) skills are triggered by more specific situations (SM_MAGNUM when SC is surrounded by enemies, AL_BLESSING when noticing MG_STONECURSE-ed teammates, etc) Disdvantages: I understood Ragnarok is designed to be played mainly solo. So this kind of use of slaveclone, perhaps, beat the purpose. However, I thought it would be fun if we imitate speedrun format, in which player should kill 1 Phreeoni as fast as they can, from scratch. Well, since main AI is made by rAthena folks, the way I modify how slaveclone's AI run is probaby not satisfying all type of battle styles. I think with only 1 client, it's not so efficient to move back and forth between Char Kinda mess the screen as I can't even see where my main Char is when all 15 chars are active HEAP Corruption usually appear when using the Partner Flute too fast as soon as we logged in (Windows 8.1). Ignore it. No battle_status applied to MOB, so its attack is slightly lower than original player Main Edits: mob.cpp skill.cpp unit.cpp battle.cpp status.cpp script.cpp pet.cpp, elemental.cpp, homunculus.cpp, intif.cpp pc.cpp clif.cpp atcommand.inc battle_conf.txt, item_db.txt, groups.conf, pet_db.yml, skill_db.yml, abra_db.yml OnPCLoginEvent script Still stuck & confusing: To completely imitate / copy main player (sd)'s inventory, then make the slaveclone independently use them. Perhaps to also sync the amount when re-login. With that said, use of inventory by slaveclone is still impossible, as well as changing equipment of the slaveclone. Dangit, inventory! Now I think I can handle md->inventory hehe Customized movement when battling MVP. Imagine SC can move like in Space Invader, adapting MVP's movement, setting traps at the right time, etc I wish all mobs in MOB_DB had been filled its proper MP value so that Hunter's SP Trap can work on regular mob too Refactor all of my edits into few separated cpp files Other cool way around: Recently I saw another project which has similar purpose of using AI on char. It's also a cool one! :
  3. Update2: Yes, slaveclone could be revived through status_revive, as long as it's not declared dead in mob_dead
  4. Update: Yes, slaveclone could be triggered to resurrect the master, but so far, not the other way around.
  5. @hendra814, https://github.com/llchrisll/ROenglishRE Like i've said earlier, I completely have no idea about login failure. However, as far as I remember, I also upgraded the SQL database (execute/import sql upgrade files on sql-files folder from the github). Some SQLs are failed too (or execute nothing). 5 Enable Proxy Support 9 Disable 1rag1 type parameters (Recommended) 13 Disable Ragexe Filename Check (Recommended) 24 Fix Camera Angles (Recommended) 290 Hide build info in client (Recommended) 34 Enable /showname (Recommended) 291 Hide packets from peek (Recommended) 35 Read Data Folder First 36 Read msgstringtable.txt (Recommended) 38 Remove Gravity Ads (Recommended) 39 Remove Gravity Logo (Recommended) 41 Disable Nagle Algorithm (Recommended) 44 Translate Client (Recommended) 46 Use Normal Guild Brackets (Recommended) 48 Use Plain Text Descriptions (Recommended) 49 Enable Multiple GRFs (Recommended) 50 Skip License Screen 53 Use Ascii on All LangTypes (Recommended) 313 Change MapInfo*.lub path 317 Ignore Quest Errors 320 Ignore Towninfo*.lub Reading 64 @ Bug Fix (Recommended) 65 Load Custom lua file instead of iteminfo*.lub (Recommended) 71 Ignore Resource Errors 72 Ignore Missing Palette Error 73 Remove Hourly Announce (Recommended) 84 Remove Serial Display (Recommended) 90 Enable DNS Support (Recommended) 231 Remove hardcoded address/port (Recommended) 232 Restore old login packet (Recommended) 234 Ignore Lua Errors 239 Ignore /account: command line argument I think, the reason why some ppl have different errors on NEMO, it's caused by different NEMO and/or different client exe file. It might be there's several ways to pass through, until we can play the client on our own PC.
  6. I myself have no idea. Got many options couldn't be picked too here (unlike the tutorial on Youtube), but I can run the game. Maybe it's due to patches or being ignored (Ignore error in NEMO). And I patch the Ragexe RE from the main client that's downloaded first
  7. @hendra814, I use chris' translation, meaning that I put llchrisll Translation Project Ragnarok folder's contents to my own folder. I don't know if this works too with Zack's Translation folder. Well, in grf, we'll see Korean language version of all things. That's why to override this, we intercept with "Read data folder first" from chris.
  8. Thank you, Yes, it's solved now. I also managed by combining files from grf & Translation Project. I found that for example Feint Bomb is maxed to 10 levels, although still listed as max 3 level on Translation. Have fun! @hendra814, check my post:
  9. yaaay!!! Thx for working on these! I stuck on activating 4th job's skill tree here ?
  10. Hello, Here's what I experienced when successfully playing the 20200603: Some skill animation changes kinda smoother visual appearance bigger window I haven't successfully executed 4th job @jobchange yet When I attempted to change few lines regarding DRAGON_KNIGHT (8712) @jobchange, it shows the new sprite. However I have no idea how to go further, as my dragon knight still shows the old structure (no AP), shows no skills at all, zero SP & HP. I noticed that the skill infos could fallback from English (translation project), to Korean (inside grf), whenever I modify the /data/skillinfoz folder In the end, I guess I will be waiting for the ongoing project of 4th job implementation. (e.g : But don't you worry, I am patient. Here are lists I've done before running this newest client: 0. I upgraded the SQL database (execute/import sql upgrade files on sql-files folder from the github). Some SQLs are failed too (or execute nothing). I also had to remove current guild since its structure had to be altered. 1. rsu-kro-renewal-lite patch If I am not mistaken I fetch the patches until there's no newer patch (2020 08 ?). Of course we still cannot run the game as it detects some errors. Perhaps not necessary, but I also ran the other fetching tool on the same folder (the official one I guess?), but not finishing it. 2. Recompile the Solution with #define PACKETVER 20200401 marking. Avoided any significant errors (thx to developers!) 3. DATA.ini [Data] 0=rdata.grf 1=data.grf 2=palettes.grf Of course you can add other grfs in between, if needed. 4. Placing Translation Project's Ragnarok folder to our 2020 folder. (https://github.com/llchrisll/ROenglishRE) 5. NEMO patch profile (the one that's called secret update or something -i forgot). If one NEMO version fails you, try different ones : https://github.com/bgamez23/secretdataz-NEMO https://github.com/MStr3am/NEMO https://github.com/secretdataz/NEMO 5 Enable Proxy Support 9 Disable 1rag1 type parameters (Recommended) 13 Disable Ragexe Filename Check (Recommended) 24 Fix Camera Angles (Recommended) 290 Hide build info in client (Recommended) 34 Enable /showname (Recommended) 291 Hide packets from peek (Recommended) 35 Read Data Folder First 36 Read msgstringtable.txt (Recommended) 38 Remove Gravity Ads (Recommended) 39 Remove Gravity Logo (Recommended) 41 Disable Nagle Algorithm (Recommended) 44 Translate Client (Recommended) 46 Use Normal Guild Brackets (Recommended) 48 Use Plain Text Descriptions (Recommended) 49 Enable Multiple GRFs (Recommended) 53 Use Ascii on All LangTypes (Recommended) 71 Ignore Resource Errors 313 Change MapInfo*.lub path 317 Ignore Quest Errors 320 Ignore Towninfo*.lub Reading 64 @ Bug Fix (Recommended) 65 Load Custom lua file instead of iteminfo*.lub (Recommended) 72 Ignore Missing Palette Error 73 Remove Hourly Announce (Recommended) 84 Remove Serial Display (Recommended) 90 Enable DNS Support (Recommended) 231 Remove hardcoded address/port (Recommended) 232 Restore old login packet (Recommended) 234 Ignore Lua Errors 239 Ignore /account: command line argument The list above is not absolute, as I don't actually know why even though some Recommended patches couldn't be ticked, I still can play the game. Oh ya, besides the Recommended ones, follow the llchrisll Translation Project's lub files swapping. (e.g Read Data folder first, and EN version of things on the System/ folder) 6. A little bit adjustment on the grf files a. Extern error I found that there's a small error return on Externsetting. It should be returned as 0, not -1. MaxLevelTable = { BaseLevel = 99, BaseLevel3rd = 200, BaseLevel4th = . . . . . . . . HomunMaxLvAura_sub = LEVELAURA.EF_LEVEL185_SUB } function GetTableIntValueForC(tableName, keyName) local t = _G[tableName] if nil == t then return 0 end local intValue = t[keyName] if nil == intValue then return 0 else return intValue end end . . function GetTableBoolValueForC(tableName, keyName) . . . end I only changed return value of getTableIntValueForC function. This above is indeed originated from \data\luafiles514\lua files\service_korea\ExternalSettings_kr_sak_2020.lub, therefore I renamed it to be without _2020 ending (wait. or was it without _sak_2020 ?). I guess this is because I chose Korean on sclientinfo.xml. This file above is outside the grf. b. Skill Tab Info crash At this point, I managed to run the new skill animation, mob killing like usual, some menu and tabs. EXCEPT the Skill Tab. To handle this, inside grf, there's data\luafiles514\lua files\skillinfoz\skillinfo_f.lub. I copied the content of this one to outside and make a new lub file then placed it in the respective data folder. I think there's something wrong with skillinfo_f.lub made by Translation Project (but IDK which line). By doing this, the priority to read skillinfo is: 1) data folder ---> 2) rdata.grf ----> 3) data.grf (to be updated)
  11. Does anyone have problem with skill tab? Mine got crashed, but everything else seems fine. Edit: I don't know why many people are having the login error bcs I am not. If your client has the similar problem like mine with Skill Tab, I posted this : https://rathena.org/board/topic/125755-solved-how-i-run-the-20200603-client/ Cheers
  12. maybe by using NEMO and ignore lua error you will bypass that?
  13. In 2020 06 version, I edited some accessible lub files regarding the error shown. New animations, state icons, are okay. I loaded english translation, all seems fine, except: Skill tab. Crashed immediately; and I'm not sure if this caused by the translation.
  14. I guess the idea to nest homun's attack inside pc's attack is a ridiculous idea. So, I step up to where the order to attack for pc is placed, then put also the order for homun. The delay comes from how the attack is timed through timer. So it's also a bad idea to generalize the timer by this homun clone's timer when being changed. Or maybe I am too lazy to make another timer.
  15. Thanks, It's probably caused either by @bodystyle or by my old client. Now trying the 20200401 one.
  16. Figured this out already. Since it's copied by doing: ms = &db->skill[0]; , therefore to access the skill, we need to dive in to db as well. Cheers md->db->skill[index]. And so when I had to use pc_checkskill2, I also had to adjust the passive skills wanted for this function.
  17. Hello, I couldn't find how an active player can resurrect a killed slaveclone; is it actually possible? I mean, healing slaveclone is available, so. Thanks! ps: This probably will be my last question regarding my playing with slaveclone ?
  18. Hello, I'm wondering if there's correct way to implement continuous attack by homunculus. My case is that when slaveclone successfully summon homunculus, it does not run the hoai. So, I attach forcefully the order for homun to attack (unit_attack), inside the function in which any unit attacks (which is unit_attack). The result is that the homun attacks crazily fast. In reverse, when I use 0 instead of 1 of unit_attack parameter, it attacks super slowly. Is there any other way to embed nested unit_attack with moderate frequency of function call, so it attacks relatively-normal? Many thanks!
  19. As far as I remember, there's if (base_exp && md->dmglog[i].flag == MDLF_HOMUN) //tmpsd[i] is null if it has no homunc. hom_gainexp(tmpsd[i]->hd, base_exp); //...... and also: pc_gainexp(tmpsd[i], &md->bl, base_exp, job_exp, 0); in mob.cpp that gives exp to homun & pc. What about play around with this line?
  20. What about just copy the actual running skill, add another case of it right above the default?
  21. Hello, there's pc_checkskill uint8 pc_checkskill(struct map_session_data *sd, uint16 skill_id) { uint16 idx = 0; if (sd == NULL) return 0; if ((idx = skill_get_index(skill_id)) == 0) { ShowError("pc_checkskill: Invalid skill id %d (char_id=%d).\n", skill_id, sd->status.char_id); return 0; } if (SKILL_CHK_GUILD(skill_id) ) { struct guild *g; if( sd->status.guild_id>0 && (g=sd->guild)!=NULL) return guild_checkskill(g,skill_id); return 0; } return (sd->status.skill[idx].id == skill_id) ? sd->status.skill[idx].lv : 0; } and there's skills copy by Skotlex: mob_clone_spawn( .... ){ ... //Skill copy [Skotlex] ms = &db->skill[0]; ... } but I couldn't prove if my md has copied the skills by imitating pc_checkskill : uint8 pc_checkskill2(struct mob_data *md, uint16 skill_id) { uint16 idx = 0; if (md == NULL) return 0; if ((idx = skill_get_index(skill_id)) == 0) { ShowError("pc_checkskill2: Invalid skill id %d (char_id=%d).\n", skill_id, md->charid); return 0; } /*if (SKILL_CHK_GUILD(skill_id) ) { struct guild *g; if( md->status.guild_id>0 && (g=md->guild)!=NULL) return guild_checkskill(g,skill_id); return 0; }*/ ShowMessage(" dane %s %d %d %d %d", md->name, skill_id, idx, md->db->skill[idx].skill_id, md->skill2[idx].id); return (md->db->skill[idx].skill_id == skill_id) ? md->db->skill[idx].skill_lv : 0; } . Though, I already did : memcpy(&md->skill2, &ms, sizeof(struct s_skill)); in my mob_clone_spawn2, it seems like pc_checkskill2 still outputs 0. How would you prove that the skills owned by md can be used in other functions than mob_clone_spawn? My case is to allow a slaveclone Sage to freely move when casting (as pc_checkskill for FREECAST is currently validated for sd, not md). Thanks!
  22. Sorry, I found this and I don't know how to delete question. Hotkeys are stored in: sd->status.hotkeys[i] Cheers
  23. Hello, Is it possible to programmatically call the spell that's stored in the hotkeys list above? (F1, F2... etc) My goal is to actually avoid reading some external txt file as replacement of the quick list; so my slaveclone only refers to the current active hotkeys quick list skills, rather than random-list-ing all of its available skills. For example, I want my slaveclone to choose only Fireball as its favorite, and doesn't give opportunity to casting Firebolt at all. Thanks
  24. I have never encountered that many, but usually before I compile the very first time (or when major error happens), I do these: Retarget solution (right-clicking the Solution). But seeing your errors, are you sure it is cloned from github that's stable already?. I'm suspecting that your source codes are in development (with missing comma, etc), so those errors are expected.
  25. Update: I found that master is not the only thing controlling the AI. It is basically the timer that does it. So, after imitating the flow of homunculus & element creation of an sd, I got that md now is able to do the similar thing, as well as copying the original stats. My thinking about why md is able to do this, is because there's no actually a validation of account_id when interacting with database; which means the list in database is just stored like that, whatever the value is. Therefore, I used the bl.id only to make the value unique as if it were an "account_id". So, yes, md can have homun, or element, with addition of making sd (current active player) as ed->master, and md (current active slaveclone) as ed->master2 so that switch-case-ing this in functions easier. ps: What about 4 elements at once? lol
×
×
  • Create New...