Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 05/06/23 in all areas

  1. Version 1.2.0

    622 downloads

    Good day! I've been an observer since the beginning of time and I want to share this script hoping that it will help fellow human beings who need it. This was a paid script of mine and I hired @sader1992 to help me finish it in 2020. I'm hoping someone will improve the code in the near future with other stuff to give another flavor for Endless Tower. This works with the latest version of rAthena. Requirement: Y'all need this patch for +damage to work setunitdata script command monster stat recaulculation fixes #3968 About the script: It is simply Endless Tower with Easy, Veteran, Nightmare, Hell & Torment Difficulties. You can edit the values I pre-assigned: This part is for the difficulty settings and adding stats to the monsters: This part is for the rewards: It gives #INSTANCEPOINTS and EXP depending on the difficulty you're on. I assigned a monster (1613 : metalling) to show us that the stats boost really works: PS: I'm also integrating this to other instances. Maybe I'll post it if people requests it.
    Free
    2 points
  2. in src\map\script_constants.hpp Find: export_constant(MF_NODYNAMICNPC); Change To: export_constant(MF_NODYNAMICNPC); export_constant(MF_VIEW_HPMETER); in src\map\map.hpp Find: MF_NODYNAMICNPC, MF_MAX Change To: MF_NODYNAMICNPC, MF_VIEW_HPMETER, MF_MAX in src\map\npc.cpp Find: switch( mapflag ){ case MF_INVALID: Change To: switch( mapflag ){ case MF_VIEW_HPMETER: if (state) { union u_mapflag_args args = {}; if (sscanf(w4, "%11d", &args.flag_val) < 1) args.flag_val = 0; // No level specified, allow everyone. map_setmapflag_sub(m, MF_VIEW_HPMETER, true, &args); } else map_setmapflag(m, MF_VIEW_HPMETER, false); break; case MF_INVALID: in src\map\map.cpp Find: case MF_NOCOMMAND: if (status) { nullpo_retr(false, args); mapdata->flag[mapflag] = ((args->flag_val <= 0) ? 100 : args->flag_val); } else mapdata->flag[mapflag] = false; break; Change To: case MF_NOCOMMAND: case MF_VIEW_HPMETER: if (status) { nullpo_retr(false, args); mapdata->flag[mapflag] = ((args->flag_val <= 0 && mapflag != MF_VIEW_HPMETER) ? 100 : args->flag_val); } else mapdata->flag[mapflag] = false; break; Find: // additional mapflag data mapdata->zone = 0; // restricted mapflag zone mapdata->flag[MF_NOCOMMAND] = false; // nocommand mapflag level Change To: // additional mapflag data mapdata->zone = 0; // restricted mapflag zone mapdata->flag[MF_NOCOMMAND] = false; // nocommand mapflag level mapdata->flag[MF_VIEW_HPMETER] = 99; // viewhpmeter mapflag level (Blocks everyone except Admin by default) in src\map\atcommand.cpp Find: if (map_getmapflag(m_id, MF_NOCOSTUME)) strcat(atcmd_output, " NoCostume |"); clif_displaymessage(fd, atcmd_output); Change To: if (map_getmapflag(m_id, MF_NOCOSTUME)) strcat(atcmd_output, " NoCostume |"); if (map_getmapflag(m_id, MF_VIEW_HPMETER)) strcat(atcmd_output, " ViewHPMeter |"); clif_displaymessage(fd, atcmd_output); in src\map\pc.cpp Find: /*========================================== * pc Init/Terminate *------------------------------------------*/ void do_final_pc(void) { Change To: bool pc_can_view_hpmeter(struct map_session_data *sd){ if(!sd) return false; if(pc_has_permission(sd,PC_PERM_VIEW_HPMETER) && pc_get_group_level(sd) >= map_getmapflag(sd->bl.m, MF_VIEW_HPMETER)) return true; return false; } /*========================================== * pc Init/Terminate *------------------------------------------*/ void do_final_pc(void) { in src\map\pc.hpp Find: #endif /* PC_HPP */ Change To: bool pc_can_view_hpmeter(struct map_session_data *sd); #endif /* PC_HPP */ in src\map\clif.cpp Find: if( pc_has_permission( tsd, PC_PERM_VIEW_HPMETER ) ){ clif_hpmeter_single( *tsd, sd->status.account_id, sd->battle_status.hp, sd->battle_status.max_hp ); } Change to: if( pc_can_view_hpmeter( tsd ) ){ clif_hpmeter_single( *tsd, sd->status.account_id, sd->battle_status.hp, sd->battle_status.max_hp ); } Find: if( (sd->status.party_id && dstsd->status.party_id == sd->status.party_id) || //Party-mate, or hpdisp setting. (sd->bg_id && sd->bg_id == dstsd->bg_id) || //BattleGround pc_has_permission(sd, PC_PERM_VIEW_HPMETER) ) Change To: if( (sd->status.party_id && dstsd->status.party_id == sd->status.party_id) || //Party-mate, or hpdisp setting. (sd->bg_id && sd->bg_id == dstsd->bg_id) || //BattleGround pc_can_view_hpmeter(sd) ) Find: if( pc_has_permission(sd,PC_PERM_VIEW_HPMETER) ) { mapdata->hpmeter_visible++; sd->state.hpmeter_visible = 1; } Change To: if( pc_can_view_hpmeter(sd) ) { mapdata->hpmeter_visible++; sd->state.hpmeter_visible = 1; } Usage: <mapname><tab>mapflag<tab>view_hpmeter<tab><group_level> This should set a map with the mapflag to enable view_hpmeter that players with higher or equal to the specified group_level can bypass. To block everyone set the group_level to 100. ***Note: You still need to add "view_hpmeter: true" to the group permissions on the groups.yml file.***
    1 point
  3. Version 1.4

    1424 downloads

    Report all error/bugs in the forum post not in the PM for faster fix, Thanks! By downloading this file, you agree with my Terms of Service: • You are not allowed remove my signature from any of the included files. • You are not allowed claim my work as yours. • I can give you support, but please, do not message me. If you like it, give me a
    Free
    1 point
  4. @Tokei made a mapcache editor that superseded weemapcache. If you really need weemapcache I have it. WeeMapCache.exe
    1 point
×
×
  • Create New...