戦場システムで使うよくわからないこれの移植について(・艸・`*)
追加したスクリプトの使い方!(・艸・`*)
bg_updatescore関数
bg_updatescore <gatname>,<num1>,<num2>
<gatname> マップ名
<num1> 数値
<num2> 数値
<gatname>におけるスコアを設定する
※battlegroundというmapflagを各自で追加してから以下を追加してください※
map.h
L900あたり
map_data構造体の中に追加
int npc_num;
int users;
//------------------追加-------------by mame-------
short bgscore_lion, bgscore_eagle; // Battleground ScoreBoard
//---------------------ここまで--------------------
clif.h
#endifの上あたりに
//------------------追加-------------by mame-------
int clif_bg_updatescore(int m);
int clif_bg_updatescore_single(struct map_session_data *sd);
void clif_set01D6(struct map_session_data* sd, int mode); //---------------------ここまで--------------------
clif.c
適当なところに以下を追加
//------------------追加-------------by mame-------
int clif_bg_updatescore(int m)
{
struct block_list bl;
unsigned char buf[6];
bl.id = 0;
bl.type = BL_NUL;
bl.m = m;
WBUFW(buf,0) = 0x2de;
WBUFW(buf,2) = map[m].bgscore_lion;
WBUFW(buf,4) = map[m].bgscore_eagle;
clif_send(buf,6,&bl,ALL_SAMEMAP);
return 0;
}
int clif_bg_updatescore_single(struct map_session_data *sd)
{
int fd;
nullpo_retr(0,sd);
fd = sd->fd;
WFIFOW(fd,0) = 0x2de;
WFIFOW(fd,2) = map[sd->bl.m].bgscore_lion;
WFIFOW(fd,4) = map[sd->bl.m].bgscore_eagle;
WFIFOSET(fd,6);
return 0;
}
void clif_set01D6(struct map_session_data* sd, int mode)
{
int fd;
nullpo_retv(sd);
fd = sd->fd;
WFIFOW(fd,0)=0x1D6;
WFIFOW(fd,2)=mode;
WFIFOSET(fd,packet_db[0x1D6].len);
}//---------------------ここまで--------------------
clif_parse_LoadEndAck関数
L11500あたり
if(map[sd->bl.m].flag.pk) {
sd->pvp_timer = -1;
clif_set0199(sd->fd,4);
if(battle_config.pk_noshift)
sd->status.karma = 1;
} else if(map[sd->bl.m].flag.pvp) {
sd->pvp_timer = add_timer(gettick()+200,pc_calc_pvprank_timer,sd->bl.id,NULL);
sd->pvp_rank = 0;
sd->pvp_lastusers = 0;
sd->pvp_point = 5;
clif_set0199(sd->fd,1);
} else {
sd->pvp_timer = -1;
}
//------------------追加-------------by mame-------
if(map[sd->bl.m].flag.battleground )
{
clif_set01D6(sd,19); // Battleground Mode
clif_bg_updatescore_single(sd);
}//---------------------ここまで--------------------
if(map[sd->bl.m].flag.gvg)
clif_set0199(sd->fd,3);
if(battle_config.pk_noshift && !map[sd->bl.m].flag.pk)
sd->status.karma = 0;
scripct.c
L3700
//埋め込み関数 とかいてあるところの↓に追加
int buildin_bg_updatescore(struct script_state *st);function buildin_func構造体の中に適当に追加
{buildin_bg_updatescore,"bg_updatescore","sii"},わかりやすいところに追加
/*==========================================
* 鳥さんと虎さんの表示更新
*------------------------------------------
*/
int buildin_bg_updatescore(struct script_state *st)
{
const char *str;
int m;
str = conv_str(st,& (st->stack->stack_data[st->start+2]));
if( (m = map_mapname2mapid(str)) < 0 )
return 0;
map[m].bgscore_lion = conv_num(st,& (st->stack->stack_data[st->start+3]));
map[m].bgscore_eagle = conv_num(st,& (st->stack->stack_data[st->start+4]));
clif_bg_updatescore(m);
return 0;
}
PVPで使用したい場合は、
flag.battleground を
flag.pvp に変えて使用してください
このスコアのライオンの画像って何ともいたたまれない寂しい画像ですよね・・・・・・・・・・
完全に横たわってお亡くなりになっているような・・・・・・