Jump to content

Capuche

Developer
  • Posts

    2407
  • Joined

  • Last visited

  • Days Won

    51

Everything posted by Capuche

  1. Well there is no setting like Akkarin said, but this change in map.cpp should allow you to walk on cell where the npcs are hidden/disabled/invisible (untested) @@ -553,6 +553,11 @@ int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) if (type&~BL_MOB) for( bl = mapdata->block[bx+by*mapdata->bxs] ; bl != NULL ; bl = bl->next ) if(bl->x == x && bl->y == y && bl->type&type) { + if (bl->type == BL_NPC) { + struct npc_data *nd = (struct npc_data *)bl; + if (nd && (nd->sc.option&(OPTION_INVISIBLE|OPTION_HIDE) || nd->class_ == JT_FAKENPC || nd->class_ == JT_HIDDEN_WARP_NPC)) + continue; + } if(flag&1) { struct unit_data *ud = unit_bl2ud(bl); if(!ud || ud->walktimer == INVALID_TIMER)
  2. https://github.com/rathena/rathena/blob/bdd63022a9c479df833304add9537eca7f39b331/conf/battle/items.conf#L139 set to 0
  3. Some spots are supposed to spawn monsters endlessly (with a delay of 30 seconds) until the Commander is killed. Did you check if the monsters respawn?
  4. if (getequipid(EQI_HAND_R) != -1) breakequip(EQI_HAND_R); end; Shorter ? xD *breakequip <equipment slot>{,<char_id>}; This command will break and unequip whatever is currently equipped in the invoking character's specified equipment slot. For a full list of possible equipment slots see 'getequipid'. This command will return 1 if an item was broken and 0 otherwise.
  5. This kind of issue often happens with attachrid command. Avoid attachrid until it gets a fix.
  6. https://github.com/rathena/rathena/commit/80810e24f820d0f5f92c3c62345de60a863eaf5a
  7. The monsters of yours instance probably have their own label. monster "place",60,100,"Poring",1002,1; // call OnNPCKillEvent on monster dead monster "place",60,100,"Poring",1002,1,"NPCNAME::OnLabel"; // call OnLabel on monster dead (not OnNPCKillEvent)
  8. If you're using a version after https://github.com/rathena/rathena/commit/26720f041a3cd0edbaa975bfc70345a30e9bf706 change getmapxy( .@map$,.@x,.@y,0 ); to getmapxy( .@map$,.@x,.@y,BL_PC );
  9. .. and search # for the maps without @ in the original name ! https://github.com/rathena/rathena/blob/fce885e81e9ef0d0b152309e8a0046f80fabe92c/src/map/map.cpp#L2731
  10. Simple note that I merged a version in the main repo while updating eden_iro.txt in https://github.com/rathena/rathena/commit/339e6c67182e5cb344fcd614329f2b7fb048d8bf#diff-ad177424d33f756ef2d34a911a9fb86aR1168
  11. *unitskilluseid <GID>,<skill id>,<skill lvl>{,<target id>,<casttime>}; *unitskilluseid <GID>,"<skill name>",<skill lvl>{,<target id>,<casttime>}; *unitskillusepos <GID>,<skill id>,<skill lvl>,<x>,<y>{,<casttime>}; *unitskillusepos <GID>,"<skill name>",<skill lvl>,<x>,<y>{,<casttime>}; This is the replacement of the older commands, these use the same values for GID as the other unit* commands (See 'GID'). Skill ID is the ID of the skill, skill level is the level of the skill. Cast time is the amount of seconds to add or remove from the skill. Use a positive value to add and negative value to subtract. Using 0 or no value will use the default skill cast time. For the position, the x and y are given in the UnitSkillUsePos. Using 0 or no value will use the default skill cast time. Read the docs !
  12. Copie the auto-spell you want to remove on your combo but put the rates as negative. For example for amon ra card 4236,Amon_Ra_Card,Amon Ra Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAllStats,1; bonus3 bAutoSpellWhenHit,"PR_KYRIE",10,(30+70*(readparam(bInt)>=99)); },{},{} To remove the auto-spell from another item script the rate "(30+70*(readparam(bInt)>=99))" must be negative bonus3 bAutoSpellWhenHit,"PR_KYRIE",10,-(30+70*(readparam(bInt)>=99));
  13. https://github.com/rathena/rathena/pull/4161/files
  14. The structure has been changed, MAX_QUEST_DB has been removed and the limit is now ~2m entries (to simplify)
  15. ? maybe : alberta,97,53,0 script Fabian2 84,{ setarray .@sub_string_1$[0], "pay_", "moc_", "cmd_"; setarray .@sub_string_2$[0], "fild", "dun"; setarray .@sub_string_3$[0], "00", "01", "02"; setarray .@menu_list_1$[0], "Apple", "Banana", "Orange"; setarray .@menu_list_2$[0], "Cat", "Dog"; setarray .@menu_list_3$[0], "Eat the", "Steal the", "Dream of"; .@s[1] = select( implode(.@menu_list_1$, ":") ) -1; .@s[2] = select( implode(.@menu_list_2$, ":") ) -1; .@s[3] = select( implode(.@menu_list_3$, ":") ) -1; mes "Do you really want to go where the " + .@menu_list_2$[ .@s[2] ] + " " + .@menu_list_3$[ .@s[3] ] + " " + .@menu_list_1$[ .@s[1] ] + "?"; next; if (select("No", "Yes") == 1) close; .@map_name$ = .@sub_string_1$[ .@s[1] ] + .@sub_string_2$[ .@s[2] ] + .@sub_string_3$[ .@s[3] ]; // a list of available map should be created to prevent console message about unknown map warp .@map_name$,0,0; end; }
  16. Maybe you mean that? alberta,97,51,0 script Fabian 84,{ .@map$ = "hu_fild05"; // word to split .@step = 3; // how many words .@len = getstrlen(.@map$); for ( .@start = 0; .@start < .@len; .@start += .@step ) { if ((.@start + .@step) < .@len) .@end = .@start + .@step - 1; else .@end = .@len - 1; .@word$[.@size] = substr( .@map$, .@start, .@end ); .@size++; } // simple shuffle .@tmp_size = .@size; for ( .@i = 0; .@i < .@size; .@i++ ) { .@r = rand(.@tmp_size); .@tmp_word$ = .@word$[.@r]; .@word$[.@r] = .@word$[ .@tmp_size-1 ]; .@word$[ .@tmp_size-1 ] = .@tmp_word$; .@tmp_size--; } .@menu$ = implode( .@word$, ":" ); for ( .@i = 0; .@i < .@step; .@i++ ) { .@s = select(.@menu$) - 1; .@current_word$ += .@word$[.@s]; mes "Word: " + .@current_word$; } if (.@current_word$ == .@map$) { mes "Grat!"; warp .@map$,0,0; } close; }
  17. The last hash https://github.com/rathena/rathena/commit/a548f20c940036a7c05c561c1363cb51a5849922 only go up to level 175. First you need to get the exp from 175 to 185 if they leaked the exp table somewhere or you can grab the exp playing on KRO, then you need to share the result to the community and only after that you need to update the max level on your emulator using https://gist.github.com/cydh/d82a06472f12c4ec7f38ab3de22fe86b
  18. Maybe the query of this script need to be updated depending of your server but it will be your homework.
  19. The additional damages given by item produced are hard coded. You can start from here : https://github.com/rathena/rathena/blob/7f772c32d3be201861946bb64720c231828465ac/src/map/status.cpp#L3651
  20. I don't see a clean way to force to end a specific npc instance. The easiest way seems to add a check after every 'next' and co.
  21. How about https://gist.github.com/Atemo/7b741b940ce324c2fa17b8ccdcd84133/revisions The random options are randomly given when purchasing in the script btw. Mark the shop number as random option shop in // ----------------------------------------------------------- // List of Shop ID using random option system. // ----------------------------------------------------------- Shop_Random_Option(1,2); // shop 1 and 2 are using random option system. Set the option given randomly for each slot in function get_option_id { // opt slot 1 .@optid[0] = F_Rand( RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET, RDMOPT_DAMAGE_PROPERTY_POISON_TARGET, RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET, RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET, RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET, RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET, RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET, RDMOPT_DAMAGE_PROPERTY_WIND_TARGET, RDMOPT_DAMAGE_PROPERTY_WATER_TARGET, RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET ); // opt slot 2 .@optid[1] = F_Rand( RDMOPT_RACE_DAMAGE_NOTHING, RDMOPT_RACE_DAMAGE_UNDEAD, RDMOPT_RACE_DAMAGE_INSECT, RDMOPT_RACE_DAMAGE_HUMAN, RDMOPT_RACE_DAMAGE_DRAGON, RDMOPT_RACE_DAMAGE_ANGEL, RDMOPT_RACE_DAMAGE_PLANT, RDMOPT_RACE_DAMAGE_DEVIL, RDMOPT_RACE_DAMAGE_ANIMAL, RDMOPT_RACE_DAMAGE_FISHS ); // opt slot 3 // .@optid[2] = // opt slot 4 // .@optid[3] = setarray getarg(0), .@optid[0], .@optid[1], .@optid[2], .@optid[3]; return; } and set the value for each option ID in // return a random value depending of the option ID function get_option_value { .@size_of_optid = getarraysize( getarg(1) ); for ( .@i = 0; .@i < .@size_of_optid; .@i++ ) { .@id = getelementofarray( getarg(1), .@i ); switch(.@id) { case RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET: case RDMOPT_DAMAGE_PROPERTY_POISON_TARGET: case RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET: case RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET: case RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET: case RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET: case RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET: case RDMOPT_DAMAGE_PROPERTY_WIND_TARGET: case RDMOPT_DAMAGE_PROPERTY_WATER_TARGET: case RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET: .@val = rand(1,20); break; case RDMOPT_RACE_DAMAGE_NOTHING: case RDMOPT_RACE_DAMAGE_UNDEAD: case RDMOPT_RACE_DAMAGE_INSECT: case RDMOPT_RACE_DAMAGE_HUMAN: case RDMOPT_RACE_DAMAGE_DRAGON: case RDMOPT_RACE_DAMAGE_ANGEL: case RDMOPT_RACE_DAMAGE_PLANT: case RDMOPT_RACE_DAMAGE_DEVIL: case RDMOPT_RACE_DAMAGE_ANIMAL: case RDMOPT_RACE_DAMAGE_FISHS: .@val = rand(1,20); break; } set getelementofarray( getarg(0), .@i ), .@val; } return; }
  22. delequip could do the work too *delequip <equipment slot>{,<char_id>}; This command will destroy whatever is currently equipped in the invoking character's specified equipment slot. For a full list of possible equipment slots see 'getequipid'. This command will return 1 if an item was deleted and 0 otherwise. if (getequipid(EQI_ARMOR) == 2304 && getequiprefinerycnt(EQI_ARMOR) == 7) delequip EQI_ARMOR;
  23. getmapxy has been updated https://github.com/rathena/rathena/commit/26720f041a3cd0edbaa975bfc70345a30e9bf706 You need to update the script depending of your emulator date
  24. You were right https://github.com/rathena/rathena/commit/cc11869a93571f0e0355917ba113d1bd98d42d48 Next time open an issue on GitHub thanks !
×
×
  • Create New...