I've beenresearchinghow to putpvpin just oneareaof map,such asthe center ofPronterafounda change in eAthenaallowingleaves anareainPK modewhich is veryfunctional, but I wish it waspvpinstead ofPK.wanted someoneto help me leaveitsopvp.
ModificationsofSRC
//battle.c
//find this
int battle_check_target( struct block_list *src, struct block_list *target,int flag)
//add this before it
bool cell_pk_check(struct block_list *t_bl, struct block_list *s_bl, int m)
{
if(t_bl->type == BL_PC && map[m].cell[s_bl->x+s_bl->y*map[m].xs].pk == true && map[m].cell[t_bl->x+t_bl->y*map[m].xs].pk == true)
{
if(status_get_party_id(t_bl)==status_get_party_id(s_bl))
if(map[m].flag.pvp_noparty)
return true;
else
return false;
if(status_get_guild_id(t_bl)==status_get_guild_id(s_bl))
if(map[m].flag.pvp_noguild && map[m].flag.gvg)
return true;
else
return false;
return true;
}
return false;
}
//+++++++++++++++++++++++++++++++++//
//find this
else if(( sd->duel_group && !((!battle_config.duel_allow_pvp && map[m].flag.p
//use this to replace
else if(( sd->duel_group && !((!battle_config.duel_allow_pvp && map[m].flag.pvp) || (!battle_config.duel_allow_gvg&& map_flag_gvg(m))))||( cell_pk_check(t_bl, s_bl, m) == true ))
//+++++++++++++++++++++++++++++++++//
//map.c
void map_setcell(int m, int x, int y, cell_t cell, bool flag)
{
int j;
if( m < 0 || m >= map_num || x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys )
return;
j = x + y*map[m].xs;
switch( cell ) {
case CELL_WALKABLE: map[m].cell[j].walkable = flag; break;
case CELL_SHOOTABLE: map[m].cell[j].shootable = flag; break;
case CELL_WATER: map[m].cell[j].water = flag; break;
case CELL_NPC: map[m].cell[j].npc = flag; break;
case CELL_BASILICA: map[m].cell[j].basilica = flag; break;
case CELL_LANDPROTECTOR: map[m].cell[j].landprotector = flag; break;
case CELL_NOVENDING: map[m].cell[j].novending = flag; break;
case CELL_NOCHAT: map[m].cell[j].nochat = flag; break;
case CELL_PK: map[m].cell[j].pk = flag; break;//<---add this
default:
ShowWarning("map_setcell: invalid cell type '%d'\n", (int)cell);
break;
}
}
//+++++++++++++++++++++++++++++++++//
//map.h
typedef enum {
CELL_WALKABLE,
CELL_SHOOTABLE,
CELL_WATER,
CELL_NPC,
CELL_BASILICA,
CELL_LANDPROTECTOR,
CELL_NOVENDING,
CELL_NOCHAT,
CELL_PK,//<---add this
} cell_t;
//+++++++++++++++++++++++++++++++++//
struct mapcell
{
// terrain flags
unsigned char
walkable : 1,
shootable : 1,
water : 1;
// dynamic flags
unsigned char
npc : 1,
basilica : 1,
landprotector : 1,
novending : 1,
nochat : 1,
pk : 1;//<---add this
//+++++++++++++++++++++++++++++++++//
//db\const.txt
cell_walkable 0
cell_shootable 1
cell_water 2
cell_npc 3
cell_basilica 4
cell_landprotector 5
cell_novending 6
cell_nochat 7
cell_pk 8//<---add this
//+++++++++++++++++++++++++++++++++//
Question
Scofield
I've been researching how to put pvp in just one area of
map, such as the center of Prontera found a change in
eAthena allowing leaves an area in PK mode which is very functional, but
I wish it was pvp instead of PK. wanted someone to help me
leave it so pvp.
Modifications of SRC
Example of how the script would
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.