-
Content Count
174 -
Joined
-
Last visited
-
Days Won
10
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by Naruto
-
Rookie Trying To Play With The Big Boys
Naruto replied to RookieByDesign's question in Database Support
maybe cuz you is linking your renewal database which does not have a constants.txt dawg try rooting the /db/ not the /db/re/ -
I went over it again, trying to get it working on separate ids but had issues with it and just tossed it to the side but fixed it The issue was the re declaration of SD and my CR integer Basically just copy pasting the old chain lightning with my modifications the only difference is here case MR_AUTOAIM_ATK: skill->attack(BF_MAGIC, src, src, target, skl->skill_id, skl->skill_lv, tick, (9-skl->type)); skill->toggle_magicpower(src, skl->skill_id); struct map_session_data *sd = BL_UCAST(BL_PC, src); int cr2 = 25; //cr is amount of bounces if (skl->type < (cr2 + skl->skill_lv - skl->skill_lv) && skl->x < 3) { struct block_list *nbl = battle->get_enemy_area(src, target->x, target->y, (skl->type>2)?1:2, //area BL_CHAR|BL_SKILL, target->id); if (nbl == NULL) skl->x++; else skl->x = 0; //tick is time just modify digit over 50 for visible results skill->addtimerskill(src, tick + 100, (nbl?nbl:target)->id, skl->x, 0, MR_AUTOAIM_ATK, skl->skill_lv, skl->type + 1, skl->flag); } break; case WL_CHAINLIGHTNING_ATK: skill->attack(BF_MAGIC, src, src, target, skl->skill_id, skl->skill_lv, tick, (9-skl->type)); skill->toggle_magicpower(src, skl->skill_id); int cr = 25; //cr is amount of bounces if (skl->type < (cr + skl->skill_lv - skl->skill_lv) && skl->x < 3) { struct block_list *nbl = battle->get_enemy_area(src, target->x, target->y, (skl->type>2)?1:2, //area BL_CHAR|BL_SKILL, target->id); if (nbl == NULL) skl->x++; else skl->x = 0; //tick is time just modify digit over 50 for visible results skill->addtimerskill(src, tick + 100, (nbl?nbl:target)->id, skl->x, 0, WL_CHAINLIGHTNING_ATK, skl->skill_lv, skl->type + 1, skl->flag); } break; the top one is written as struct map_session_data *sd = BL_UCAST(BL_PC, src); int cr2 = 25; i changed the integer we use for bounces and i DONT declare the SD in the ACTUAL chain lightning ( doesnt matter, whichever is on top) Doubt theirs any issues with it, works fine in game One thing though using this YOU HAVE TO make changes to your skillinfolist.lub within your GRF It reads the range, just look it up with my stuff id 1626, 1627 MR_AUTOAIM A few things that it could use is effects... and actor animation change, easily done following other guides skillid.lub skillinfolist.lub skill.c skill.h
-
Thats really cool dude , no clips of auto attack though q-q
-
no its the client thats incompatible with some things... just grab the grf you updated off of kro main website and toss it in your folder check your data.ini and make sure your thing is diffed for multiple grfs if its still not working
-
your location and type is messed up { Id: 2220 AegisName: "Hat" Name: "Army Jacket" Type: "IT_ARMOR" Buy: 1000 Weight: 200 Def: 2 Loc: "EQP_HEAD_MID" ViewSprite: 1 }, Type: Item Type (string, defaults to "IT_ETC") Loc: Equip location (bitmask array, string or int, required value for equipment) try copying an item or fill it out properly
-
get it off of steam
-
atk = battle->calc_base_damage(src, target, skill_id, skill_lv, nk, false, s_ele, ELE_NEUTRAL, EQI_HAND_R, (sc && sc->data[SC_MAXIMIZEPOWER]?1:0)|(sc && sc->data[SC_WEAPONPERFECT]?8:0), md.flag); gonna say its this ELE_NEUTRAL but im not seeing a ELE_WEAPON enum elements { ELE_NEUTRAL=0, ELE_WATER, ELE_EARTH, ELE_FIRE, ELE_WIND, ELE_POISON, ELE_HOLY, ELE_DARK, ELE_GHOST, ELE_UNDEAD, ELE_MAX, ELE_ALL = 0xFF }; might have to re write it or monkey around until it works how you want it the magic damage might be affected ? Any change in damage at all when you swap elements
-
Copy and paste will work... You might blow up your error log and have things to fix though, better you just grab the ones you want
-
if it fails in game that means you dont have it in the associated id in your item_db.conf, re or pre re ... for most of them you can just copy and paste
-
renewal database actually has more then the pre renewal might have to re dif your item info, if you selected recommended its the first thing that pops up, asking you to rename your iteminfo file in your system folder with your client
-
cant stop my client from blowing up doing it with garment, but older clients can probably get away with it, all your have to do is change the structure of it again and add the new one on top if(pos == EQP_ACC) { pos = req_pos&EQP_ACC; if (pos == EQP_ACC && (sd->equip_index[EQP_ACC_L] >= 1)) pos = sd->equip_index[EQP_SHOES] >= 0 ? EQP_GARMENT : EQP_SHOES; else if (pos == EQP_ACC && (sd->equip_index[EQI_ACC_R] >= 1)) pos = sd->equip_index[EQI_ACC_L] >= 0 ? EQP_SHOES : EQP_ACC_L; else if(pos == EQP_ACC) pos = sd->equip_index[EQI_ACC_R] >= 0 ? EQP_ACC_L : EQP_ACC_R; } and again in the pc.h just add EQP_GARMENT to eqp_acc equipwin_bg2.psd
-
Working on my UI and didnt find a practical use for garment slot and a few personal changes , but its a little more complicated to remove and ill save it for the second post so as you see im equiping into the old shoe slot, and once all my slots are filled the shoe slot gets replaced pc.h find #define EQP_ACC (EQP_ACC_L|EQP_ACC_R) replace with #define EQP_ACC (EQP_ACC_L|EQP_ACC_R|EQP_SHOES) pc.c find this, top of a block of code if(pos == EQP_ACC) { pos = req_pos&EQP_ACC; if (pos == EQP_ACC) pos = sd->equip_index[EQI_ACC_R] >= 0 ? EQP_ACC_L : EQP_ACC_R; } replace it with this if(pos == EQP_ACC) { pos = req_pos&EQP_ACC; if (pos == EQP_ACC && (sd->equip_index[EQI_ACC_R] >= 1)) pos = sd->equip_index[EQI_ACC_L] >= 0 ? EQP_SHOES : EQP_ACC_L; else if(pos == EQP_ACC) pos = sd->equip_index[EQI_ACC_R] >= 0 ? EQP_ACC_L : EQP_ACC_R; } Couldnt figure out what the pos = req_pos&eqp_acc .... does but whatever so basically this part is in charge of where the first accessory is place ( on your right looking straight at your equipment window ) pos = sd->equip_index[EQI_ACC_R] >= 0 ? EQP_ACC_L : EQP_ACC_R; and if false, it picks the second slot and replaces it so my addition, takes highest priority, changing the entire structure * * * * if (pos == EQP_ACC && (sd->equip_index[EQI_ACC_R] >= 1)) pos = sd->equip_index[EQI_ACC_L] >= 0 ? EQP_SHOES : EQP_ACC_L; so now we check if the right accessory is filled and if it is, continue with this line now we replace shoe slot instead of right accessory
-
convert it to rsm like you would any 3ds model using the built in feature of browedit btw Im pretty sure if you miss even 1 model not uvmapped you will get errors in game... that shut you down totally
-
Version 1.0.0
86 downloads
I needed something small to add to my map and i thought some playing cards would make good easter eggs at the same time Easily modifiable,.. If you change the ace of hearts, Only the ace of hearts will be changed These are EXTREMELY small and dont look too good big... on the numbers side But the back side , I used an archangeling since this is a ragnarok emulator.... is quite modifiable Dont ask me for any changes and if you need help making lines view this guide https://rathena.org/board/topic/118261-mapping-resources-models-list-making-models-and-textures-list-easily/?tab=comments#comment-357746 -
View File Playing Cards Set I needed something small to add to my map and i thought some playing cards would make good easter eggs at the same time Easily modifiable,.. If you change the ace of hearts, Only the ace of hearts will be changed These are EXTREMELY small and dont look too good big... on the numbers side But the back side , I used an archangeling since this is a ragnarok emulator.... is quite modifiable Dont ask me for any changes and if you need help making lines view this guide https://rathena.org/board/topic/118261-mapping-resources-models-list-making-models-and-textures-list-easily/?tab=comments#comment-357746 Submitter Naruto Submitted 08/30/19 Category Other Graphics
-
So after testing it doesnt seem like the monster with the AI dedicated to setting off a skill when their target is effect by a status Lets go over the code together if( mmd->bl.id == bl->id && !(battle_config.mob_ai&0x10) ) return 0; if( mmd->bl.id == bl->id && !(battle_config.mob_ai&0x10) ) return 0; Quote // 0x010: If set, mob skills defined for friends will also trigger on themselves. Not positive what the first part is about but its not important to my release so lets just delete this entire thing... thinking about it i need to test if it effects themselves without it... really easy to spot though so lets leave it be But It seems like cloaking is messing with my followers... let me know if you notice anything strange though if you plan on using this code
-
Hi im trying to develop some advance monster commands/conditions Having issues... i think linking the sub protocol with the primary function ? But It works fine when i replace it completely in the src mob.c static int mob_getfriendstatus_sub(struct block_list *bl, va_list ap) { int cond1,cond2; struct mob_data **fr = NULL, *md = NULL, *mmd = NULL; int flag=0; nullpo_ret(bl); Assert_ret(bl->type == BL_MOB); md = BL_UCAST(BL_MOB, bl); nullpo_ret(mmd=va_arg(ap,struct mob_data *)); if( mmd->bl.id == bl->id && !(battle_config.mob_ai&0x10) ) return 0; if (battle->check_target(&mmd->bl,bl,BCT_ENEMY)>0) return 0; cond1=va_arg(ap,int); cond2=va_arg(ap,int); fr=va_arg(ap,struct mob_data **); if( cond2==-1 ){ int j; for(j=SC_COMMON_MIN;j<=SC_MAX && !flag;j++){ if ((flag=(md->sc.data[j] != NULL))) //Once an effect was found, break out. [Skotlex] break; } }else flag=( md->sc.data[cond2] != NULL ); if( flag^( cond1==MSC_FRIENDSTATUSOFF ) ) (*fr)=md; return 0; } Lets go over the code together if( mmd->bl.id == bl->id && !(battle_config.mob_ai&0x10) ) return 0; Not positive what the first part is about but its not important to my release so lets just delete this entire thing... thinking about it i need to test if it effects themselves without it... really easy to spot though so lets leave it be if (battle->check_target(&mmd->bl,bl,BCT_ENEMY)>0) return 0; This is what limits it to friends static int mob_getfriendstatus_sub(struct block_list *bl, va_list ap) { int cond1,cond2; struct mob_data **fr = NULL, *md = NULL, *mmd = NULL; int flag=0; nullpo_ret(bl); Assert_ret(bl->type == BL_MOB); md = BL_UCAST(BL_MOB, bl); nullpo_ret(mmd=va_arg(ap,struct mob_data *)); cond1=va_arg(ap,int); cond2=va_arg(ap,int); fr=va_arg(ap,struct mob_data **); if( cond2==-1 ){ int j; for(j=SC_COMMON_MIN;j<=SC_COMMON_MAX && !flag;j++){ if ((flag=(md->sc.data[j] != NULL))) //Once an effect was found, break out. [Skotlex] break; } }else flag=( md->sc.data[cond2] != NULL ); if( flag^( cond1==MSC_FRIENDSTATUSOFF ) ) (*fr)=md; return 0; } so now in your mob skill db nanobot: { NPC_SELFDESTRUCTION: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 10000 Delay: 0 Cancelable: false SkillTarget: "MST_SELF" CastCondition: "MSC_FRIENDSTATUSON" ConditionData: "SC_BERSERK" } } so now we should trigger skills on monster status Now im having an issue with using my CUSTOM status as triggers though... Ive tried adding them to my constants file... Ill let you know if i figure out more BTW: the rest wont bother you.... and i plan on replacing onfriendstatusoff with the old onfriendstatuson . . .
-
https://herc.ws/board/forum/49-paid-services/
-
possibly the same thing here pc.c if ((sd->job & MAPID_BASEMASK) == MAPID_TAEKWON) { // Better check for class rather than skill to prevent "skill resets" from unsetting this sd->mission_mobid = pc_readglobalreg(sd,script->add_variable("TK_MISSION_ID")); sd->mission_count = pc_readglobalreg(sd,script->add_variable("TK_MISSION_COUNT")); }
-
case TK_MISSION: if ((sd->job & MAPID_UPPERMASK) != MAPID_TAEKWON) { // Cannot be used by Non-Taekwon classes clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0); return 0; } break; to case TK_MISSION: if ((sd->job & MAPID_UPPERMASK) != MAPID_TAEKWON || MAPID_STAR_GLADIATOR) { // Cannot be used by Non-Taekwon classes clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0); return 0; } break; something like that i dont use it too often but != means if not taekwon so make it if not taekwon OR sg
-
Updates : case UNT_MOLOTOV: group->unit_id = skill->get_unit_id(GS_DESPERADO, 1); clif->changelook(&su->bl, LOOK_BASE, group->unit_id); group->limit = skill->get_time(group->skill_id,group->skill_lv); su->limit = skill->get_time(group->skill_id,group->skill_lv); break; 2 bottom lines reset the limit timer we used earlier to make the old unt dissipate I was having trouble linking multiple skills together... no idea what to do about it ex: Using hammer fall animation slot ( unt place animation + screen shake) using it like this case BS_HAMMERFALL: if (pc->checkskill(sd, BS_HAMMERFALL) == 1) skill->unitsetting(src,skill_id,skill_lv,x,y,0); if (pc->checkskill(sd, BS_HAMMERFALL) == 2) skill->unitsetting(src,UT_MOLOTOV,skill_lv,x,y,0); break; and trying to get the second bounce to effect skilldata1 time? I can make it dissapear a number of ways but couldnt attach a timer to it... Using it alone like warp portal, making timed skills possible i just couldnt chain it anymoe 😕 probably make some really cool skills using it... I was gonna rip it apart and remove flag for a skill lvl but meh... i dont know about doing both. . .
-
you could change your data.grf compeltly and still be fine on most servers just swap the iteminfo folders in the system folder, would you even get view errors ? dont think hats have a view id in the iteminfo lua I dont believe a word of this though