-
Posts
177 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Mad Walker
-
New 3rd job skills are not yet implemented in rAthena. If you want a working copy go to hercules.ws
-
[Showcase] Konoha Village from Naruto
Mad Walker replied to Olrox's topic in Maps & 3D Modeling Showcase
I always wondered if olrox was a human or a demi-god. Oh I can incorporate my change race to demi-god. -
Textures: Cash Shop Window
Mad Walker replied to Candy Crush's topic in Maps & 3D Resources Downloads
should be kRO right? -
What emulator are you using? If eathena then follow that eathena post that you're saying, else follow that link. I don't think there is a support 2012 though, but try to use the search bar. You might find something rather than waiting
-
http://rathena.org/board/topic/61039-help-max-guild-member/ Setting Max Guild Member http://rathena.org/board/topic/82726-2013-ragexe-and-diff-up-to-date-2013-08-07/ 2013 Clients Support Spaces on Guild Names
-
I think Lighta is right.
-
Item script that will change a player's race (instead of element)
Mad Walker replied to retroflav's question in Database Requests
yeah this is possible, it's a src and item bonus. I already implemented it on my test server. Eqpoque's Expansion pack has it, I just re coded mine just to make it compatible -
you are cute Yoona. LOL anyway yudi91: You need to gather information first, setting up this and that blah blah. Try to go here http://rathena.org/board/topic/59824-video-series-sharpienero-setting-up-your-rathena-private-server/ . It may take some time to learn but hey at least you will learn. Aboout port forwarding, you have to go to your router's control panel http://rathena.org/board/topic/75761-port-forwarding/ Advise: Purchase a virtual host dedicated for ragnarok servers. In that way no more port forwarding.
-
Reduce damage of skill to player wearing it
Mad Walker replied to xienne15's question in Database Requests
xienne15: Maybe you can revert the src codes of this bonus^. As helvetica mentioned it is applied to the person using the skill. Maybe reverting may come up to the bonus that you need. -
thanks for the share Emistry! oh man tsr has the rarest sprites ever. I should have downloaded everything back then. =_=
-
alright thanks for the support though.
-
oh god I'm using hercules. >.< well I'll still try though. Thanks Skorm! i'll let you know if it works on hercules. -->oh and by the way does this work on // Turn this on to allow a player to level up more than once from a kill. (Note 1) multi_level_up: yes
-
Pano mag start ng ragnarok server sa VPS?
Mad Walker replied to Chrollo's topic in Tulong para sa 3rd Party Application
./athena-start start ./athena-start stop ./athena-start restart // just in case you started and it says bind socket blah blah in use, try: killall -9 char-server_sql killall -9 map-server_sql killall -9 login-server_sql also try to make the permission 777 to athena-start so you won't have a problem on starting your ragna server for the first time -
http://rathena.org/wiki/Edit_Max_Level Try to search next time.
-
Skorm: Hi, I was wondering to change your script to an automated ones? When the player reaches level 10, 99 and 175 they'll get their free items. Can you help me with that? Also we can set multiple items at a time right?
-
well we're just telling stories here and past experiences. No harm done.
-
attack speed formula on pRO is pre renewal if I'm not mistaken. Just make a comparison on rAthena's renewal aspd and pRO's aspd. You might crack something right?
-
SOMEONE HELP ME TO FIX MY ERROR PROBLEM IN TO BODYRELOC
Mad Walker replied to rham101494's topic in Tulong para sa Server
provide the version that you are using as well as the client date. -
oh hello goddameit, this is the code for mob_clone_spawn int class_; int i,j,inf,skill_id, fd; struct mob_data *md; struct mob_skill *ms; struct mob_db* db; struct status_data *status; nullpo_ret(sd); if(pc_isdead(sd) && master_id && flag&1) return 0; ARR_FIND( MOB_CLONE_START, MOB_CLONE_END, class_, mob_db_data[class_] == NULL ); if(class_ >= MOB_CLONE_END) return 0; db = mob_db_data[class_]=(struct mob_db*)aCalloc(1, sizeof(struct mob_db)); status = &db->status; strcpy(db->sprite,sd->status.name); strcpy(db->name,sd->status.name); strcpy(db->jname,sd->status.name); db->lv=status_get_lv(&sd->bl); memcpy(status, &sd->base_status, sizeof(struct status_data)); status->rhw.atk2= status->dex + status->rhw.atk + status->rhw.atk2; //Max ATK status->rhw.atk = status->dex; //Min ATK if (status->lhw.atk) { status->lhw.atk2= status->dex + status->lhw.atk + status->lhw.atk2; //Max ATK status->lhw.atk = status->dex; //Min ATK } if (mode) //User provided mode. status->mode = mode; else if (flag&1) //Friendly Character, remove looting. status->mode &= ~MD_LOOTER; status->hp = status->max_hp; status->sp = status->max_sp; memcpy(&db->vd, &sd->vd, sizeof(struct view_data)); db->base_exp=1; db->job_exp=1; db->range2=AREA_SIZE; //Let them have the same view-range as players. db->range3=AREA_SIZE; //Min chase of a screen. db->option=sd->sc.option; //Skill copy [Skotlex] ms = &db->skill[0]; /** * We temporarily disable sd's fd so it doesn't receive the messages from skill_check_condition_castbegin **/ fd = sd->fd; sd->fd = 0; //Go Backwards to give better priority to advanced skills. for (i=0,j = MAX_SKILL_TREE-1;j>=0 && i< MAX_MOBSKILL ;j--) { skill_id = skill_tree[pc_class2idx(sd->status.class_)][j].id; if (!skill_id || sd->status.skill[skill_id].lv < 1 || (skill_get_inf2(skill_id)&(INF2_WEDDING_SKILL|INF2_GUILD_SKILL)) || skill_get_nocast(skill_id)&16 ) continue; //Normal aggressive mob, disable skills that cannot help them fight //against players (those with flags UF_NOMOB and UF_NOPC are specific //to always aid players!) [Skotlex] if (!(flag&1) && skill_get_unit_id(skill_id, 0) && skill_get_unit_flag(skill_id)&(UF_NOMOB|UF_NOPC)) continue; /** * The clone should be able to cast the skill (e.g. have the required weapon) bugreport:5299) **/ if( !skill_check_condition_castbegin(sd,skill_id,sd->status.skill[skill_id].lv) ) continue; memset (&ms[i], 0, sizeof(struct mob_skill)); ms[i].skill_id = skill_id; ms[i].skill_lv = sd->status.skill[skill_id].lv; ms[i].state = MSS_ANY; ms[i].permillage = 500*battle_config.mob_skill_rate/100; //Default chance of all skills: 5% ms[i].emotion = -1; ms[i].cancel = 0; ms[i].casttime = skill_castfix(&sd->bl,skill_id, ms[i].skill_lv); ms[i].delay = 5000+skill_delayfix(&sd->bl,skill_id, ms[i].skill_lv); inf = skill_get_inf(skill_id); if (inf&INF_ATTACK_SKILL) { ms[i].target = MST_TARGET; ms[i].cond1 = MSC_ALWAYS; if (skill_get_range(skill_id, ms[i].skill_lv) > 3) ms[i].state = MSS_ANYTARGET; else ms[i].state = MSS_BERSERK; } else if(inf&INF_GROUND_SKILL) { if (skill_get_inf2(skill_id)&INF2_TRAP) { //Traps! ms[i].state = MSS_IDLE; ms[i].target = MST_AROUND2; ms[i].delay = 60000; } else if (skill_get_unit_target(skill_id) == BCT_ENEMY) { //Target Enemy ms[i].state = MSS_ANYTARGET; ms[i].target = MST_TARGET; ms[i].cond1 = MSC_ALWAYS; } else { //Target allies ms[i].target = MST_FRIEND; ms[i].cond1 = MSC_FRIENDHPLTMAXRATE; ms[i].cond2 = 95; } } else if (inf&INF_SELF_SKILL) { if (skill_get_inf2(skill_id)&INF2_NO_TARGET_SELF) { //auto-select target skill. ms[i].target = MST_TARGET; ms[i].cond1 = MSC_ALWAYS; if (skill_get_range(skill_id, ms[i].skill_lv) > 3) { ms[i].state = MSS_ANYTARGET; } else { ms[i].state = MSS_BERSERK; } } else { //Self skill ms[i].target = MST_SELF; ms[i].cond1 = MSC_MYHPLTMAXRATE; ms[i].cond2 = 90; ms[i].permillage = 2000; //Delay: Remove the stock 5 secs and add half of the support time. ms[i].delay += -5000 +(skill_get_time(skill_id, ms[i].skill_lv) + skill_get_time2(skill_id, ms[i].skill_lv))/2; if (ms[i].delay < 5000) ms[i].delay = 5000; //With a minimum of 5 secs. } } else if (inf&INF_SUPPORT_SKILL) { ms[i].target = MST_FRIEND; ms[i].cond1 = MSC_FRIENDHPLTMAXRATE; ms[i].cond2 = 90; if (skill_id == AL_HEAL) ms[i].permillage = 5000; //Higher skill rate usage for heal. else if (skill_id == ALL_RESURRECTION) ms[i].cond2 = 1; //Delay: Remove the stock 5 secs and add half of the support time. ms[i].delay += -5000 +(skill_get_time(skill_id, ms[i].skill_lv) + skill_get_time2(skill_id, ms[i].skill_lv))/2; if (ms[i].delay < 2000) ms[i].delay = 2000; //With a minimum of 2 secs. if (i+1 < MAX_MOBSKILL) { //duplicate this so it also triggers on self. memcpy(&ms[i+1], &ms[i], sizeof(struct mob_skill)); db->maxskill = ++i; ms[i].target = MST_SELF; ms[i].cond1 = MSC_MYHPLTMAXRATE; } } else { switch (skill_id) { //Certain Special skills that are passive, and thus, never triggered. case MO_TRIPLEATTACK: case TF_DOUBLE: case GS_CHAINACTION: ms[i].state = MSS_BERSERK; ms[i].target = MST_TARGET; ms[i].cond1 = MSC_ALWAYS; ms[i].permillage = skill_id==MO_TRIPLEATTACK?(3000-ms[i].skill_lv*100):(ms[i].skill_lv*500); ms[i].delay -= 5000; //Remove the added delay as these could trigger on "all hits". break; default: //Untreated Skill continue; } } if (battle_config.mob_skill_rate!= 100) ms[i].permillage = ms[i].permillage*battle_config.mob_skill_rate/100; if (battle_config.mob_skill_delay != 100) ms[i].delay = ms[i].delay*battle_config.mob_skill_delay/100; db->maxskill = ++i; } /** * We grant the session it's fd value back. **/ sd->fd = fd; //Finally, spawn it. md = mob_once_spawn_sub(&sd->bl, m, x, y, "--en--", class_, event, SZ_SMALL, AI_NONE); if (!md) return 0; //Failed? md->special_state.clone = 1; if (master_id || flag || duration) { //Further manipulate crafted char. if (flag&1) //Friendly Character md->special_state.ai = AI_ATTACK; if (master_id) //Attach to Master md->master_id = master_id; if (duration) //Auto Delete after a while. { if( md->deletetimer != INVALID_TIMER ) delete_timer(md->deletetimer, mob_timer_delete); md->deletetimer = add_timer (gettick() + duration, mob_timer_delete, md->bl.id, 0); } } mob_spawn(md); return md->bl.id; can you help me find the information that are essential to make a skill spawn a duplicate of your character just like @clone...?
-
Utility: Customizible Enchant NPC(WIP)
Mad Walker replied to Lil Troll's topic in Utility Script Releases
setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2"; set .@menu$,""; for(set .@i,1; .@i<=10; set .@i,.@i+1) { if(getequipisequiped(.@i)) set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; set .@menu$, .@menu$ + ":"; } -
[GUIDE] Custom Wings at robe place.
Mad Walker replied to madtoyz's topic in Spriting & Palette Showcase
nop, you can add as many as you can. Study the post mate, you'll realize that. -
Wing: Randgris Wings Animated by MxR
Mad Walker replied to GMxR's topic in Sprites & Pallette Downloads
we're you the real MxR? sorry stupid question -
Utility: Customizible Enchant NPC(WIP)
Mad Walker replied to Lil Troll's topic in Utility Script Releases
orochimakoto, I have a modified version wherein you can enchant on any part of the alt q(armor, headgear, access... etc). Lil Troll: this line if(countitem(.item_id)<= .item_req[.@enchant]) { should be if(countitem(.item_id)< .item_req[.@enchant]) { like this if I'm not mistaken...