Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: conf/battle/battle.conf
- ===================================================================
- --- conf/battle/battle.conf (revision 17156)
- +++ conf/battle/battle.conf (working copy)
- @@ -141,3 +141,10 @@
- // range. For example, Sonic Blow requires a 2 cell distance before autocasting is allowed.
- // This setting also affects autospellwhenhit.
- autospell_check_range: no
- +
- +// [Cydh]
- +// If you want to player can't warp, go, recalled, relog on battle for a while
- +// You can use this to give them delay
- +// Battle means while player attacking, using skills, receiving damage
- +// Delay in milisecond
- +prevent_warponbattle: 5000
- Index: conf/msg_conf/map_msg.conf
- ===================================================================
- --- conf/msg_conf/map_msg.conf (revision 17156)
- +++ conf/msg_conf/map_msg.conf (working copy)
- @@ -1409,5 +1409,8 @@
- // @skillid (extension)
- 1398: -- Displaying first %d partial matches:
- +// warpgo delay
- +1399: You must wait %.1f sec. before %s.
- +
- //Custom translations
- import: conf/import/msg_conf.txt
- Index: src/map/atcommand.c
- ===================================================================
- --- src/map/atcommand.c (revision 17156)
- +++ src/map/atcommand.c (working copy)
- @@ -379,6 +379,7 @@
- unsigned short mapindex;
- short x = 0, y = 0;
- int16 m = -1;
- + int diff_tick, tick = gettick(); //warp on battle
- nullpo_retr(-1, sd);
- @@ -392,6 +393,14 @@
- return -1;
- }
- + //warp on battle
- + if((diff_tick = DIFF_TICK(sd->canwarp_tick,tick)) > 0 && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE))
- + {
- + sprintf(atcmd_output, msg_txt(1555), diff_tick/1000., command);
- + clif_displaymessage(fd, atcmd_output);
- + return -1;
- + }
- +
- mapindex = mapindex_name2id(map_name);
- if (mapindex)
- m = map_mapindex2mapid(mapindex);
- @@ -1676,6 +1685,7 @@
- int town;
- char map_name[MAP_NAME_LENGTH];
- int16 m;
- + int diff_tick, tick = gettick(); //warp on battle
- const struct {
- char map[MAP_NAME_LENGTH];
- @@ -1730,6 +1740,14 @@
- return 0;
- }
- + //warp on battle
- + if((diff_tick = DIFF_TICK(sd->canwarp_tick,tick)) > 0 && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE))
- + {
- + sprintf(atcmd_output, msg_txt(1555), diff_tick/1000., command);
- + clif_displaymessage(fd, atcmd_output);
- + return -1;
- + }
- +
- memset(map_name, '\0', sizeof(map_name));
- memset(atcmd_output, '\0', sizeof(atcmd_output));
- @@ -2669,6 +2687,7 @@
- *
- *------------------------------------------*/
- ACMD_FUNC(recall) {
- + int diff_tick, tick = gettick(); //warp on battle
- struct map_session_data *pl_sd = NULL;
- nullpo_retr(-1, sd);
- @@ -2684,6 +2703,14 @@
- return -1;
- }
- + //warp on battle
- + if((diff_tick = DIFF_TICK(sd->canwarp_tick,tick)) > 0 && !pc_has_permission(pl_sd, PC_PERM_WARP_ANYWHERE))
- + {
- + sprintf(atcmd_output, msg_txt(1555), diff_tick/1000., "recall this player");
- + clif_displaymessage(fd, atcmd_output);
- + return -1;
- + }
- +
- if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) )
- {
- clif_displaymessage(fd, msg_txt(81)); // Your GM level doesn't authorize you to preform this action on the specified player.
- Index: src/map/battle.c
- ===================================================================
- --- src/map/battle.c (revision 17156)
- +++ src/map/battle.c (working copy)
- @@ -5898,6 +5898,7 @@
- { "skill_trap_type", &battle_config.skill_trap_type, 0, 0, 1, },
- { "item_restricted_consumption_type", &battle_config.item_restricted_consumption_type,1, 0, 1, },
- { "max_walk_path", &battle_config.max_walk_path, 17, 1, MAX_WALKPATH, },
- + { "prevent_warponbattle", &battle_config.prevent_warponbattle, 10000, 0, INT_MAX, }, //warp on battle
- };
- #ifndef STATS_OPT_OUT
- /**
- Index: src/map/battle.h
- ===================================================================
- --- src/map/battle.h (revision 17156)
- +++ src/map/battle.h (working copy)
- @@ -486,6 +486,8 @@
- int skill_trap_type;
- int item_restricted_consumption_type;
- int max_walk_path;
- +
- + int prevent_warponbattle; //warp on battle
- } battle_config;
- void do_init_battle(void);
- Index: src/map/pc.c
- ===================================================================
- --- src/map/pc.c (revision 17156)
- +++ src/map/pc.c (working copy)
- @@ -982,6 +982,7 @@
- sd->cantalk_tick = tick;
- sd->canskill_tick = tick;
- sd->cansendmail_tick = tick;
- + sd->canwarp_tick = tick; //warp on battle
- for(i = 0; i < MAX_SKILL_LEVEL; i++)
- sd->spirit_timer[i] = INVALID_TIMER;
- @@ -6505,6 +6506,7 @@
- elemental_set_target(sd,src);
- sd->canlog_tick = gettick();
- + sd->canwarp_tick = gettick() + battle_config.prevent_warponbattle; //warp on battle
- }
- /*==========================================
- @@ -6842,6 +6844,11 @@
- //Reset "can log out" tick.
- if( battle_config.prevent_logout )
- sd->canlog_tick = gettick() - battle_config.prevent_logout;
- +
- + //warp on battle
- + if( battle_config.prevent_warponbattle )
- + sd->canwarp_tick = gettick() - battle_config.prevent_warponbattle;
- +
- return 1;
- }
- Index: src/map/pc.h
- ===================================================================
- --- src/map/pc.h (revision 17156)
- +++ src/map/pc.h (working copy)
- @@ -216,6 +216,7 @@
- unsigned int cansendmail_tick; // [Mail System Flood Protection]
- unsigned int ks_floodprotect_tick; // [Kill Steal Protection]
- unsigned int bloodylust_tick; // bloodylust player timer [out/in re full-heal protection]
- + unsigned int canwarp_tick; //delay for player when warp after attacking, receving damage, or using skill. //warp on battle
- struct {
- short nameid;
- Index: src/map/skill.c
- ===================================================================
- --- src/map/skill.c (revision 17156)
- +++ src/map/skill.c (working copy)
- @@ -7276,6 +7276,8 @@
- int dx[9]={-1, 1, 0, 0,-1, 1,-1, 1, 0};
- int dy[9]={ 0, 0, 1,-1, 1,-1,-1, 1, 0};
- int j = 0;
- + int diff_tick, tick = gettick(); //warp on battle
- + char output[CHAT_SIZE_MAX]; //warp on battle
- struct guild *g;
- // i don't know if it actually summons in a circle, but oh well. ;P
- g = sd?sd->state.gmaster_flag:guild_search(status_get_guild_id(src));
- @@ -7287,6 +7289,13 @@
- if ((dstsd = g->member[i].sd) != NULL && sd != dstsd && !dstsd->state.autotrade && !pc_isdead(dstsd)) {
- if (map[dstsd->bl.m].flag.nowarp && !map_flag_gvg2(dstsd->bl.m))
- continue;
- + //warp on battle
- + if((diff_tick = DIFF_TICK(sd->canwarp_tick,tick)) > 0 && !pc_has_permission(dstsd, PC_PERM_WARP_ANYWHERE))
- + {
- + sprintf(output, msg_txt(1555), diff_tick/1000., "get called by EMERGENCY CALL");
- + clif_displaymessage(dstsd->fd, output);
- + continue;
- + }
- if(map_getcell(src->m,src->x+dx[j],src->y+dy[j],CELL_CHKNOREACH))
- dx[j] = dy[j] = 0;
- pc_setpos(dstsd, map_id2index(src->m), src->x+dx[j], src->y+dy[j], CLR_RESPAWN);
- Index: src/map/unit.c
- ===================================================================
- --- src/map/unit.c (revision 17156)
- +++ src/map/unit.c (working copy)
- @@ -1368,6 +1368,9 @@
- else
- skill_castend_id(ud->skilltimer,tick,src->id,0);
- + if(sd) //warp on battle
- + sd->canwarp_tick = gettick() + battle_config.prevent_warponbattle;
- +
- return 1;
- }
- @@ -1505,6 +1508,10 @@
- ud->skilltimer = INVALID_TIMER;
- skill_castend_pos(ud->skilltimer,tick,src->id,0);
- }
- +
- + if(sd) //warp on battle
- + sd->canwarp_tick = gettick() + battle_config.prevent_warponbattle;
- +
- return 1;
- }
- @@ -1586,6 +1593,9 @@
- unit_stop_attack(src);
- return 0;
- }
- + //warp on battle
- + if(battle_config.prevent_warponbattle)
- + sd->canwarp_tick = gettick() + battle_config.prevent_warponbattle;
- }
- if( battle_check_target(src,target,BCT_ENEMY) <= 0 || !status_check_skilluse(src, target, 0, 0) ) {
- unit_unattackable(src);
- @@ -1879,7 +1889,14 @@
- struct block_list *bl;
- bl = map_id2bl(id);
- if(bl && unit_attack_timer_sub(bl, tid, tick) == 0)
- + {
- + //warp on battle
- + TBL_PC* sd = (TBL_PC*)bl;
- + if(sd && battle_config.prevent_warponbattle)
- + sd->canwarp_tick = gettick() + battle_config.prevent_warponbattle;
- +
- unit_unattackable(bl);
- + }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement