Jump to content

Mad Walker

Members
  • Posts

    177
  • Joined

  • Last visited

Everything posted by Mad Walker

  1. New 3rd job skills are not yet implemented in rAthena. If you want a working copy go to hercules.ws
  2. I always wondered if olrox was a human or a demi-god. Oh I can incorporate my change race to demi-god.
  3. 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
  4. 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
  5. 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
  6. 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.
  7. 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.
  8. thanks for the share Emistry! oh man tsr has the rarest sprites ever. I should have downloaded everything back then. =_=
  9. alright thanks for the support though.
  10. 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
  11. ‘Have you found joy in your life?’ 'Has your life brought joy to others?

  12. ./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
  13. http://rathena.org/wiki/Edit_Max_Level Try to search next time.
  14. 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?
  15. well we're just telling stories here and past experiences. No harm done.
  16. 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?
  17. provide the version that you are using as well as the client date.
  18. 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...?
  19. 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$ + ":"; }
  20. nop, you can add as many as you can. Study the post mate, you'll realize that.
  21. 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...
×
×
  • Create New...