- Implementing official battleground "emblem" crossed swords icon.
- Removing the custom guild packets from Battleground as they are not needed anymore. - Scripts updated. - In this way, you get "battle cursor" over your same team, but that's how official does. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13635 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
6578f10ffa
commit
5ddd4d08fe
@ -42,17 +42,3 @@ bg_flee_penalty: 20
|
||||
|
||||
// Interval before updating the bg-member map mini-dots (milliseconds)
|
||||
bg_update_interval: 1000
|
||||
|
||||
// Reserved Guild ID's for battlegrounds
|
||||
// Please take care of this configuration, you need to take 2 guild ids manually created
|
||||
// in your guild database (txt or sql). Only the ID's are required.
|
||||
// Take care this this "Fake guilds" will be never used by players.
|
||||
bg_guild_id1: 998
|
||||
bg_guild_id2: 999
|
||||
|
||||
// ** BattleGround Emblems **
|
||||
// In the folder /db you will find 2 files:
|
||||
// bgemblem_1.ebm (used for General Guillaume Marollo)
|
||||
// bgemblem_2.ebm (used for Prince Croix Marollo)
|
||||
// You can set your own emblems for battleground, using files from the _tmpEmblem folder
|
||||
// in your client files, just remember to keep the names.
|
||||
|
@ -1,2 +0,0 @@
|
||||
xœí‘ÝoSeÇ?}[ß¶<C39F>Ývº1úvX»nt´]OéeÝèª<C3A8>°BÆ`PÛ` ,ÑùÂôZCôʯá<02>óB/Œ11b‚FCô’Ä$r¥‰ÁxS¼œçéYºøð9yžßs>Ï÷9ÏÉóŒM5Ñ e†~z¶š[Ãç<C383>àrêM“¼¡ÇÙÔž ²¹¹IÊàäþ®
|
||||
M.þ"ÁUzéÄÌ=¢ÔGùÔ³<C394>Û#K”åm˜¸«pKÛím%Ï ¶Ï¬·„Hµí žZæ»ÎQîÊã<²¤y<C2A4>¨ñ}D"~Ï®`ÇHÙä“ä,\ýH¦&>ê›ä<E280BA>ž4ýÓüRX%Ô܉l±óu«Êõös¸¹¥V¹çL“6KØMêC§¹:P仩»&;\¬s,Z{¹Ö%@<13>æ-«ÂÇþ'¼qê#—¹é+Òn±±*qÉ«òCá"?†S´¸ùÞ1LÞíç7bø-|›eƹ“´ÕM½gŠzÿËÚɬöón¼ÂMÂ|Ù½Ÿå+¨N{Z=üò«wЏEbÃæ=S<>ËÔkìÕ2N§“£<>?,*sù‰¾õ—¸aàoÛ÷bÞ`Î,³`”9ä‰p„v>ïÎòsn‰÷Pq°"G‰Ûº Øl|Õ‘cÃ¥r;q’»m#LÐÊsŒ7!¾ðŽS²v1<31>ùSž"0ÕmTMÿá±×—V«>Q¤'¼H<C2BC>O¯Oz-gb«lËÓè^lÿ¯¼Ö7þIÿ¤èžßÉãÍúEÄb#±F<vt:/|@™ ·åó]‰VE£T<néþäØQU)óŠÎùS§RÂ{GŸ™QŸYScº÷Ÿu /_Êç_ß!˫ݗȻ„_P”Ú¾x<~¬¯¶µàظðAŸO½òœÆþ’îká<>—í¥#ÎÐìì³>I§¹YøAÏñšgª³üâK}b½{IøäË)<29>œð
$÷è~oò5áÏ.KRÓÐÁ•ÅœÝÞð™Å³Â¯ˆñ‰žÓ¯jŸ†Y’æ„å‚[Ú=™ÍfÏõvd¤ŒíœQº,¼cøPCkLÎWæVk¥bªn»ô«ÿ?þŸÉ
|
Binary file not shown.
@ -11,7 +11,7 @@ OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG1_id1, waitingroom2bg("bat_b01",390,10,0,"Flavius_BG1::OnGuillaumeQuit","");
|
||||
set $@FlaviusBG1_id1, waitingroom2bg("bat_b01",390,10,"Flavius_BG1::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG1_id2, waitingroom2bg("bat_b01",10,290,1,"Flavius_BG1::OnCroixQuit","");
|
||||
set $@FlaviusBG1_id2, waitingroom2bg("bat_b01",10,290,"Flavius_BG1::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,7 @@ OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG2_id1, waitingroom2bg("bat_b02",390,10,0,"Flavius_BG2::OnGuillaumeQuit","");
|
||||
set $@FlaviusBG2_id1, waitingroom2bg("bat_b02",390,10,"Flavius_BG2::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG2_id2, waitingroom2bg("bat_b02",10,290,1,"Flavius_BG2::OnCroixQuit","");
|
||||
set $@FlaviusBG2_id2, waitingroom2bg("bat_b02",10,290,"Flavius_BG2::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,7 @@ OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG1_id1, waitingroom2bg("bat_a01",50,374,0,"Tierra_BG1::OnGuillaumeQuit","");
|
||||
set $@TierraBG1_id1, waitingroom2bg("bat_a01",50,374,"Tierra_BG1::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG1_id2, waitingroom2bg("bat_a01",42,16,1,"Tierra_BG1::OnCroixQuit","");
|
||||
set $@TierraBG1_id2, waitingroom2bg("bat_a01",42,16,"Tierra_BG1::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,7 @@ OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG2_id1, waitingroom2bg("bat_a02",50,374,0,"Tierra_BG2::OnGuillaumeQuit","");
|
||||
set $@TierraBG2_id1, waitingroom2bg("bat_a02",50,374,"Tierra_BG2::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG2_id2, waitingroom2bg("bat_a02",42,16,1,"Tierra_BG2::OnCroixQuit","");
|
||||
set $@TierraBG2_id2, waitingroom2bg("bat_a02",42,16,"Tierra_BG2::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
|
@ -3829,8 +3829,6 @@ static const struct _battle_data {
|
||||
{ "display_status_timers", &battle_config.display_status_timers, 1, 0, 1, },
|
||||
// BattleGround Settings
|
||||
{ "bg_update_interval", &battle_config.bg_update_interval, 1000, 100, INT_MAX, },
|
||||
{ "bg_guild_id1", &battle_config.bg_guild_id1, 0, 0, INT_MAX, },
|
||||
{ "bg_guild_id2", &battle_config.bg_guild_id2, 0, 0, INT_MAX, },
|
||||
{ "bg_short_attack_damage_rate", &battle_config.bg_short_damage_rate, 80, 0, INT_MAX, },
|
||||
{ "bg_long_attack_damage_rate", &battle_config.bg_long_damage_rate, 80, 0, INT_MAX, },
|
||||
{ "bg_weapon_attack_damage_rate", &battle_config.bg_weapon_damage_rate, 60, 0, INT_MAX, },
|
||||
|
@ -464,8 +464,6 @@ extern struct Battle_Config
|
||||
int display_status_timers; //Show or hide skill buff/delay timers in recent clients [Sara]
|
||||
// [BattleGround Settings]
|
||||
int bg_update_interval;
|
||||
int bg_guild_id1;
|
||||
int bg_guild_id2;
|
||||
int bg_short_damage_rate;
|
||||
int bg_long_damage_rate;
|
||||
int bg_weapon_damage_rate;
|
||||
|
@ -24,7 +24,6 @@
|
||||
|
||||
static DBMap* bg_team_db; // int bg_id -> struct battleground_data*
|
||||
static unsigned int bg_team_counter = 0; // Next bg_id
|
||||
struct guild bg_guild[2]; // Temporal fake guild information
|
||||
|
||||
struct battleground_data* bg_team_search(int bg_id)
|
||||
{ // Search a BG Team using bg_id
|
||||
@ -45,7 +44,6 @@ int bg_team_delete(int bg_id)
|
||||
int i;
|
||||
struct map_session_data *sd;
|
||||
struct battleground_data *bg = bg_team_search(bg_id);
|
||||
struct guild *g;
|
||||
|
||||
if( bg == NULL ) return 0;
|
||||
for( i = 0; i < MAX_BG_MEMBERS; i++ )
|
||||
@ -55,19 +53,6 @@ int bg_team_delete(int bg_id)
|
||||
|
||||
bg_send_dot_remove(sd);
|
||||
sd->state.bg_id = 0;
|
||||
if( sd->status.guild_id && (g = guild_search(sd->status.guild_id)) != NULL )
|
||||
{
|
||||
clif_guild_belonginfo(sd,g);
|
||||
clif_guild_basicinfo(sd);
|
||||
clif_guild_allianceinfo(sd);
|
||||
clif_guild_memberlist(sd);
|
||||
clif_guild_skillinfo(sd);
|
||||
}
|
||||
else
|
||||
clif_bg_leave_single(sd, sd->status.name, "Leaving Battleground...");
|
||||
|
||||
clif_charnameupdate(sd);
|
||||
clif_guild_emblem_area(&sd->bl);
|
||||
}
|
||||
idb_remove(bg_team_db, bg_id);
|
||||
return 1;
|
||||
@ -108,25 +93,15 @@ int bg_team_join(int bg_id, struct map_session_data *sd)
|
||||
bg->count++;
|
||||
|
||||
guild_send_dot_remove(sd);
|
||||
clif_bg_belonginfo(sd);
|
||||
// clif_bg_emblem(sd, bg->g);
|
||||
clif_charnameupdate(sd);
|
||||
|
||||
for( i = 0; i < MAX_BG_MEMBERS; i++ )
|
||||
{
|
||||
if( (pl_sd = bg->members[i].sd) == NULL )
|
||||
continue;
|
||||
clif_guild_basicinfo(pl_sd);
|
||||
clif_bg_emblem(pl_sd, bg->g);
|
||||
clif_bg_memberlist(pl_sd);
|
||||
if( pl_sd != sd )
|
||||
if( (pl_sd = bg->members[i].sd) != NULL && pl_sd != sd )
|
||||
clif_hpmeter_single(sd->fd, pl_sd->bl.id, pl_sd->battle_status.hp, pl_sd->battle_status.max_hp);
|
||||
}
|
||||
|
||||
clif_guild_emblem_area(&sd->bl);
|
||||
clif_bg_hp(sd);
|
||||
clif_bg_xy(sd);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -134,52 +109,28 @@ int bg_team_leave(struct map_session_data *sd, int flag)
|
||||
{ // Single Player leaves team
|
||||
int i, bg_id;
|
||||
struct battleground_data *bg;
|
||||
struct map_session_data *pl_sd;
|
||||
struct guild *g;
|
||||
char output[128];
|
||||
|
||||
if( sd == NULL || !sd->state.bg_id )
|
||||
return 0;
|
||||
|
||||
// Packets
|
||||
clif_bg_leave_single(sd, sd->status.name, "Leaving Battle...");
|
||||
bg_send_dot_remove(sd);
|
||||
bg_id = sd->state.bg_id;
|
||||
sd->state.bg_id = 0;
|
||||
|
||||
if( sd->status.guild_id && (g = guild_search(sd->status.guild_id)) != NULL )
|
||||
{ // Refresh Guild Information
|
||||
clif_guild_belonginfo(sd, g);
|
||||
clif_guild_basicinfo(sd);
|
||||
clif_guild_allianceinfo(sd);
|
||||
clif_guild_memberlist(sd);
|
||||
clif_guild_skillinfo(sd);
|
||||
clif_guild_emblem(sd, g);
|
||||
}
|
||||
|
||||
clif_charnameupdate(sd);
|
||||
clif_guild_emblem_area(&sd->bl);
|
||||
|
||||
if( (bg = bg_team_search(bg_id)) == NULL )
|
||||
return 0;
|
||||
|
||||
ARR_FIND(0, MAX_BG_MEMBERS, i, bg->members[i].sd == sd);
|
||||
if( i < MAX_BG_MEMBERS ) // Removes member from BG
|
||||
memset(&bg->members[i], 0, sizeof(bg->members[0]));
|
||||
|
||||
bg->count--;
|
||||
for( i = 0; i < MAX_BG_MEMBERS; i++ )
|
||||
{ // Update other BG members
|
||||
if( (pl_sd = bg->members[i].sd) == NULL )
|
||||
continue;
|
||||
if( flag )
|
||||
clif_bg_expulsion_single(pl_sd, sd->status.name, "User has quit the game...");
|
||||
else
|
||||
clif_bg_leave_single(pl_sd, sd->status.name, "Leaving Battle...");
|
||||
|
||||
clif_guild_basicinfo(pl_sd);
|
||||
clif_bg_emblem(pl_sd, bg->g);
|
||||
clif_bg_memberlist(pl_sd);
|
||||
}
|
||||
if( flag )
|
||||
sprintf(output, "Server : %s has quit the game...", sd->status.name);
|
||||
else
|
||||
sprintf(output, "Server : %s is leaving the battlefield...", sd->status.name);
|
||||
clif_bg_message(bg, "Server", output, strlen(output) + 1);
|
||||
|
||||
if( bg->logout_event[0] && flag )
|
||||
npc_event(sd, bg->logout_event, 0);
|
||||
@ -200,14 +151,7 @@ int bg_member_respawn(struct map_session_data *sd)
|
||||
return 1; // Warped
|
||||
}
|
||||
|
||||
struct guild* bg_guild_get(int bg_id)
|
||||
{ // Return Fake Guild for BG Members
|
||||
struct battleground_data *bg = bg_team_search(bg_id);
|
||||
if( bg == NULL ) return NULL;
|
||||
return bg->g;
|
||||
}
|
||||
|
||||
int bg_create(unsigned short mapindex, short rx, short ry, int guild_index, const char *ev, const char *dev)
|
||||
int bg_create(unsigned short mapindex, short rx, short ry, const char *ev, const char *dev)
|
||||
{
|
||||
struct battleground_data *bg;
|
||||
bg_team_counter++;
|
||||
@ -215,7 +159,6 @@ int bg_create(unsigned short mapindex, short rx, short ry, int guild_index, cons
|
||||
CREATE(bg, struct battleground_data, 1);
|
||||
bg->bg_id = bg_team_counter;
|
||||
bg->count = 0;
|
||||
bg->g = &bg_guild[guild_index];
|
||||
bg->mapindex = mapindex;
|
||||
bg->x = rx;
|
||||
bg->y = ry;
|
||||
@ -299,53 +242,11 @@ int bg_send_xy_timer(int tid, unsigned int tick, int id, intptr data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void bg_guild_build_data(void)
|
||||
{
|
||||
int i, j;
|
||||
memset(&bg_guild, 0, sizeof(bg_guild));
|
||||
for( i = 1; i <= 2; i++ )
|
||||
{ // Emblem Data
|
||||
FILE* fp = NULL;
|
||||
char path[256];
|
||||
|
||||
j = i - 1;
|
||||
sprintf(path, "%s/bgemblem_%d.ebm", db_path, i);
|
||||
if( (fp = fopen(path, "rb")) == NULL )
|
||||
continue;
|
||||
|
||||
bg_guild[j].emblem_id = 1;
|
||||
fseek(fp, 0, SEEK_END);
|
||||
bg_guild[j].emblem_len = ftell(fp);
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
fread(&bg_guild[j].emblem_data, 1, bg_guild[j].emblem_len, fp);
|
||||
fclose(fp);
|
||||
|
||||
ShowStatus("Done reading '"CL_WHITE"%s"CL_RESET"' emblem data file.\n", path);
|
||||
}
|
||||
|
||||
// Guild Data - Guillaume
|
||||
strncpy(bg_guild[0].name, "Blue Team", NAME_LENGTH);
|
||||
strncpy(bg_guild[0].master, "General Guillaume Marollo", NAME_LENGTH);
|
||||
bg_guild[0].guild_id = battle_config.bg_guild_id1;
|
||||
bg_guild[0].guild_lv = 1;
|
||||
strncpy(bg_guild[0].position[0].name, "Blue Team", NAME_LENGTH);
|
||||
bg_guild[0].max_member = MAX_BG_MEMBERS;
|
||||
|
||||
// Guild Data - Croix
|
||||
strncpy(bg_guild[1].name, "Red Team", NAME_LENGTH);
|
||||
strncpy(bg_guild[1].master, "Prince Croix Marollo", NAME_LENGTH);
|
||||
bg_guild[1].guild_id = battle_config.bg_guild_id2;
|
||||
bg_guild[1].guild_lv = 1;
|
||||
strncpy(bg_guild[1].position[0].name, "Red Team", NAME_LENGTH);
|
||||
bg_guild[1].max_member = MAX_BG_MEMBERS;
|
||||
}
|
||||
|
||||
void do_init_battleground(void)
|
||||
{
|
||||
bg_team_db = idb_alloc(DB_OPT_RELEASE_DATA);
|
||||
add_timer_func_list(bg_send_xy_timer, "bg_send_xy_timer");
|
||||
add_timer_interval(gettick() + battle_config.bg_update_interval, bg_send_xy_timer, 0, 0, battle_config.bg_update_interval);
|
||||
bg_guild_build_data();
|
||||
}
|
||||
|
||||
void do_final_battleground(void)
|
||||
|
@ -19,8 +19,6 @@ struct battleground_data {
|
||||
unsigned int bg_id;
|
||||
unsigned char count;
|
||||
struct battleground_member_data members[MAX_BG_MEMBERS];
|
||||
// Fake Guild Link
|
||||
struct guild *g;
|
||||
// BG Cementery
|
||||
unsigned short mapindex, x, y;
|
||||
// Logout Event
|
||||
@ -28,18 +26,15 @@ struct battleground_data {
|
||||
char die_event[50];
|
||||
};
|
||||
|
||||
extern struct guild bg_guild[];
|
||||
|
||||
void do_init_battleground(void);
|
||||
void do_final_battleground(void);
|
||||
|
||||
struct battleground_data* bg_team_search(int bg_id);
|
||||
struct guild* bg_guild_get(int bg_id);
|
||||
int bg_send_dot_remove(struct map_session_data *sd);
|
||||
int bg_team_get_id(struct block_list *bl);
|
||||
struct map_session_data* bg_getavailablesd(struct battleground_data *bg);
|
||||
|
||||
int bg_create(unsigned short mapindex, short rx, short ry, int guild_index, const char *ev, const char *dev);
|
||||
int bg_create(unsigned short mapindex, short rx, short ry, const char *ev, const char *dev);
|
||||
int bg_team_join(int bg_id, struct map_session_data *sd);
|
||||
int bg_team_delete(int bg_id);
|
||||
int bg_team_leave(struct map_session_data *sd, int flag);
|
||||
|
264
src/map/clif.c
264
src/map/clif.c
@ -812,8 +812,8 @@ static int clif_set_unit_idle(struct block_list* bl, unsigned char* buffer, bool
|
||||
|
||||
if( bl->type == BL_NPC && vd->class_ == FLAG_CLASS )
|
||||
{ //The hell, why flags work like this?
|
||||
WBUFL(buf,22) = clif_visual_emblem_id(bl);
|
||||
WBUFL(buf,26) = clif_visual_guild_id(bl);
|
||||
WBUFL(buf,22) = status_get_emblem_id(bl);
|
||||
WBUFL(buf,26) = status_get_guild_id(bl);
|
||||
}
|
||||
|
||||
WBUFW(buf,28) = vd->hair_color;
|
||||
@ -827,8 +827,8 @@ static int clif_set_unit_idle(struct block_list* bl, unsigned char* buffer, bool
|
||||
WBUFB(buf,40) = 0;
|
||||
return packet_len(0x7c);
|
||||
}
|
||||
WBUFL(buf,34) = clif_visual_guild_id(bl);
|
||||
WBUFW(buf,38) = clif_visual_emblem_id(bl);
|
||||
WBUFL(buf,34) = status_get_guild_id(bl);
|
||||
WBUFW(buf,38) = status_get_emblem_id(bl);
|
||||
WBUFW(buf,40) = (sd)? sd->status.manner : 0;
|
||||
#if PACKETVER >= 7
|
||||
if (!type) {
|
||||
@ -908,8 +908,8 @@ static int clif_set_unit_walking(struct block_list* bl, struct unit_data* ud, un
|
||||
WBUFW(buf,32) = vd->hair_color;
|
||||
WBUFW(buf,34) = vd->cloth_color;
|
||||
WBUFW(buf,36) = (sd)? sd->head_dir : 0;
|
||||
WBUFL(buf,38) = clif_visual_guild_id(bl);
|
||||
WBUFW(buf,42) = clif_visual_emblem_id(bl);
|
||||
WBUFL(buf,38) = status_get_guild_id(bl);
|
||||
WBUFW(buf,42) = status_get_emblem_id(bl);
|
||||
WBUFW(buf,44) = (sd)? sd->status.manner : 0;
|
||||
#if PACKETVER < 7
|
||||
WBUFW(buf,46) = (sc)? sc->opt3 : 0;
|
||||
@ -1062,6 +1062,8 @@ int clif_spawn(struct block_list *bl)
|
||||
clif_specialeffect(bl,423,AREA);
|
||||
else if(sd->state.size==1)
|
||||
clif_specialeffect(bl,421,AREA);
|
||||
if( sd->state.bg_id && map[sd->bl.m].flag.battleground )
|
||||
clif_sendbgemblem_area(sd);
|
||||
}
|
||||
break;
|
||||
case BL_MOB:
|
||||
@ -3484,6 +3486,8 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
|
||||
clif_specialeffect_single(bl,423,sd->fd);
|
||||
else if(tsd->state.size==1)
|
||||
clif_specialeffect_single(bl,421,sd->fd);
|
||||
if( tsd->state.bg_id && map[tsd->bl.m].flag.battleground )
|
||||
clif_sendbgemblem_single(sd->fd,tsd);
|
||||
}
|
||||
break;
|
||||
case BL_MER: // Devotion Effects
|
||||
@ -6200,8 +6204,6 @@ int clif_guild_belonginfo(struct map_session_data *sd, struct guild *g)
|
||||
{
|
||||
int ps,fd;
|
||||
nullpo_retr(0, sd);
|
||||
if( sd->state.bg_id )
|
||||
return clif_bg_belonginfo(sd);
|
||||
nullpo_retr(0, g);
|
||||
|
||||
fd=sd->fd;
|
||||
@ -6302,24 +6304,18 @@ int clif_guild_basicinfo(struct map_session_data *sd)
|
||||
int fd,i,t;
|
||||
struct guild *g;
|
||||
struct guild_castle *gc = NULL;
|
||||
struct battleground_data *bg = NULL;
|
||||
|
||||
nullpo_retr(0, sd);
|
||||
fd = sd->fd;
|
||||
|
||||
if( sd->state.bg_id && (g = bg_guild_get(sd->state.bg_id)) != NULL )
|
||||
bg = bg_team_search(sd->state.bg_id);
|
||||
else
|
||||
g = guild_search(sd->status.guild_id);
|
||||
|
||||
if( g == NULL )
|
||||
if( (g = guild_search(sd->status.guild_id)) == NULL )
|
||||
return 0;
|
||||
|
||||
WFIFOHEAD(fd,packet_len(0x1b6));
|
||||
WFIFOW(fd, 0)=0x1b6;//0x150;
|
||||
WFIFOL(fd, 2)=g->guild_id;
|
||||
WFIFOL(fd, 6)=g->guild_lv;
|
||||
WFIFOL(fd,10)=bg?bg->count:g->connect_member;
|
||||
WFIFOL(fd,10)=g->connect_member;
|
||||
WFIFOL(fd,14)=g->max_member;
|
||||
WFIFOL(fd,18)=g->average_lv;
|
||||
WFIFOL(fd,22)=g->exp;
|
||||
@ -6352,10 +6348,7 @@ int clif_guild_allianceinfo(struct map_session_data *sd)
|
||||
struct guild *g;
|
||||
|
||||
nullpo_retr(0, sd);
|
||||
if( !sd->state.bg_id || (g = bg_guild_get(sd->state.bg_id)) == NULL )
|
||||
g = guild_search(sd->status.guild_id);
|
||||
|
||||
if( g == NULL )
|
||||
if( (g = guild_search(sd->status.guild_id)) == NULL )
|
||||
return 0;
|
||||
|
||||
fd = sd->fd;
|
||||
@ -6387,8 +6380,6 @@ int clif_guild_memberlist(struct map_session_data *sd)
|
||||
|
||||
if( (fd = sd->fd) == 0 )
|
||||
return 0;
|
||||
if( sd->state.bg_id )
|
||||
return clif_bg_memberlist(sd);
|
||||
if( (g = guild_search(sd->status.guild_id)) == NULL )
|
||||
return 0;
|
||||
|
||||
@ -6425,10 +6416,7 @@ int clif_guild_positionnamelist(struct map_session_data *sd)
|
||||
struct guild *g;
|
||||
|
||||
nullpo_retr(0, sd);
|
||||
if( !sd->state.bg_id || (g = bg_guild_get(sd->state.bg_id)) == NULL )
|
||||
g = guild_search(sd->status.guild_id);
|
||||
|
||||
if( g == NULL )
|
||||
if( (g = guild_search(sd->status.guild_id)) == NULL )
|
||||
return 0;
|
||||
|
||||
fd = sd->fd;
|
||||
@ -6451,10 +6439,7 @@ int clif_guild_positioninfolist(struct map_session_data *sd)
|
||||
struct guild *g;
|
||||
|
||||
nullpo_retr(0, sd);
|
||||
if( !sd->state.bg_id || (g = bg_guild_get(sd->state.bg_id)) == NULL )
|
||||
g = guild_search(sd->status.guild_id);
|
||||
|
||||
if( g == NULL )
|
||||
if( (g = guild_search(sd->status.guild_id)) == NULL )
|
||||
return 0;
|
||||
|
||||
fd = sd->fd;
|
||||
@ -6545,8 +6530,8 @@ void clif_guild_emblem_area(struct block_list* bl)
|
||||
// (emblem in the flag npcs and emblem over the head in agit maps) [FlavioJS]
|
||||
WBUFW(buf,0) = 0x1B4;
|
||||
WBUFL(buf,2) = bl->id;
|
||||
WBUFL(buf,6) = clif_visual_guild_id(bl);
|
||||
WBUFW(buf,10) = clif_visual_emblem_id(bl);
|
||||
WBUFL(buf,6) = status_get_guild_id(bl);
|
||||
WBUFW(buf,10) = status_get_emblem_id(bl);
|
||||
clif_send(buf, 12, bl, AREA_WOS);
|
||||
}
|
||||
|
||||
@ -6560,10 +6545,7 @@ int clif_guild_skillinfo(struct map_session_data* sd)
|
||||
int i,c;
|
||||
|
||||
nullpo_retr(0, sd);
|
||||
if( !sd->state.bg_id || (g = bg_guild_get(sd->state.bg_id)) == NULL )
|
||||
g = guild_search(sd->status.guild_id);
|
||||
|
||||
if( g == NULL )
|
||||
if( (g = guild_search(sd->status.guild_id)) == NULL )
|
||||
return 0;
|
||||
|
||||
fd = sd->fd;
|
||||
@ -6697,10 +6679,7 @@ int clif_guild_expulsionlist(struct map_session_data *sd)
|
||||
struct guild *g;
|
||||
|
||||
nullpo_retr(0, sd);
|
||||
if( !sd->state.bg_id || (g = bg_guild_get(sd->state.bg_id)) == NULL )
|
||||
g = guild_search(sd->status.guild_id);
|
||||
|
||||
if( g == NULL )
|
||||
if( (g = guild_search(sd->status.guild_id)) == NULL )
|
||||
return 0;
|
||||
|
||||
fd = sd->fd;
|
||||
@ -7271,12 +7250,7 @@ int clif_charnameack (int fd, struct block_list *bl)
|
||||
if (ssd->status.party_id > 0)
|
||||
p = party_search(ssd->status.party_id);
|
||||
|
||||
if (ssd->state.bg_id > 0)
|
||||
{
|
||||
g = bg_guild_get(ssd->state.bg_id);
|
||||
ps = 0;
|
||||
}
|
||||
else if( ssd->status.guild_id > 0 && (g = guild_search(ssd->status.guild_id)) != NULL )
|
||||
if( ssd->status.guild_id > 0 && (g = guild_search(ssd->status.guild_id)) != NULL )
|
||||
{
|
||||
ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id);
|
||||
if( i < g->max_member ) ps = g->member[i].position;
|
||||
@ -7317,8 +7291,6 @@ int clif_charnameack (int fd, struct block_list *bl)
|
||||
case BL_MOB:
|
||||
{
|
||||
struct mob_data *md = (struct mob_data *)bl;
|
||||
struct guild *g;
|
||||
struct battleground_data *bg;
|
||||
nullpo_retr(0, md);
|
||||
|
||||
memcpy(WBUFP(buf,6), md->name, NAME_LENGTH);
|
||||
@ -7329,13 +7301,6 @@ int clif_charnameack (int fd, struct block_list *bl)
|
||||
memcpy(WBUFP(buf,54), md->guardian_data->guild_name, NAME_LENGTH);
|
||||
memcpy(WBUFP(buf,78), md->guardian_data->castle->castle_name, NAME_LENGTH);
|
||||
}
|
||||
else if( md->state.bg_id && (bg = bg_team_search(md->state.bg_id)) != NULL && (g = bg->g) != NULL )
|
||||
{
|
||||
WBUFW(buf, 0) = cmd = 0x195;
|
||||
WBUFB(buf,30) = 0;
|
||||
memcpy(WBUFP(buf,54), g->name, NAME_LENGTH);
|
||||
memcpy(WBUFP(buf,78), g->position[0].name, NAME_LENGTH);
|
||||
}
|
||||
else if( battle_config.show_mob_info )
|
||||
{
|
||||
char mobhp[50], *str_p = mobhp;
|
||||
@ -7401,12 +7366,7 @@ int clif_charnameupdate (struct map_session_data *ssd)
|
||||
if( ssd->status.party_id > 0 )
|
||||
p = party_search(ssd->status.party_id);
|
||||
|
||||
if( ssd->state.bg_id > 0 )
|
||||
{
|
||||
g = bg_guild_get(ssd->state.bg_id);
|
||||
ps = 0;
|
||||
}
|
||||
else if( ssd->status.guild_id > 0 && (g = guild_search(ssd->status.guild_id)) != NULL )
|
||||
if( ssd->status.guild_id > 0 && (g = guild_search(ssd->status.guild_id)) != NULL )
|
||||
{
|
||||
ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id);
|
||||
if( i < g->max_member ) ps = g->member[i].position;
|
||||
@ -8024,10 +7984,11 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
|
||||
}
|
||||
|
||||
if( sd->state.bg_id ) clif_bg_hp(sd); // BattleGround System
|
||||
if( sd->state.changemap && map[sd->bl.m].flag.battleground == 2 )
|
||||
if( sd->state.changemap && map[sd->bl.m].flag.battleground )
|
||||
{
|
||||
clif_set01D6(sd,19); // Battleground Mode
|
||||
clif_bg_updatescore_single(sd);
|
||||
if( map[sd->bl.m].flag.battleground == 2 )
|
||||
clif_bg_updatescore_single(sd);
|
||||
}
|
||||
|
||||
if(map[sd->bl.m].flag.pvp) {
|
||||
@ -8057,7 +8018,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
|
||||
}
|
||||
}
|
||||
|
||||
if( map_flag_gvg(sd->bl.m) || map[sd->bl.m].flag.battleground )
|
||||
if( map_flag_gvg(sd->bl.m) )
|
||||
{
|
||||
clif_set0199(sd,3);
|
||||
if( battle_config.gvg_flee_penalty != 100 || battle_config.bg_flee_penalty != 100 )
|
||||
@ -10418,10 +10379,6 @@ void clif_parse_GuildRequestEmblem(int fd,struct map_session_data *sd)
|
||||
|
||||
if( (g = guild_search(guild_id)) != NULL )
|
||||
clif_guild_emblem(sd,g);
|
||||
else if( guild_id == battle_config.bg_guild_id1 )
|
||||
clif_bg_emblem(sd, &bg_guild[0]);
|
||||
else if( guild_id == battle_config.bg_guild_id2 )
|
||||
clif_bg_emblem(sd, &bg_guild[1]);
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
@ -12947,135 +12904,6 @@ int clif_bg_xy_remove(struct map_session_data *sd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clif_bg_belonginfo(struct map_session_data *sd)
|
||||
{
|
||||
int fd;
|
||||
struct guild *g;
|
||||
nullpo_retr(0, sd);
|
||||
|
||||
if( !sd->state.bg_id || (g = bg_guild_get(sd->state.bg_id)) == NULL )
|
||||
return 0;
|
||||
|
||||
fd = sd->fd;
|
||||
WFIFOHEAD(fd,packet_len(0x16c));
|
||||
memset(WFIFOP(fd,0),0,packet_len(0x16c));
|
||||
WFIFOW(fd,0) = 0x16c;
|
||||
WFIFOL(fd,2) = g->guild_id;
|
||||
WFIFOL(fd,6) = g->emblem_id;
|
||||
WFIFOL(fd,10) = 0;
|
||||
memcpy(WFIFOP(fd,19), g->name, NAME_LENGTH);
|
||||
WFIFOSET(fd,packet_len(0x16c));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int clif_visual_guild_id(struct block_list *bl)
|
||||
{
|
||||
struct battleground_data *bg;
|
||||
int bg_id;
|
||||
nullpo_retr(0, bl);
|
||||
|
||||
if( (bg_id = bg_team_get_id(bl)) > 0 && (bg = bg_team_search(bg_id)) != NULL && bg->g )
|
||||
return bg->g->guild_id;
|
||||
else
|
||||
return status_get_guild_id(bl);
|
||||
}
|
||||
|
||||
int clif_visual_emblem_id(struct block_list *bl)
|
||||
{
|
||||
struct battleground_data *bg;
|
||||
int bg_id;
|
||||
nullpo_retr(0, bl);
|
||||
|
||||
if( (bg_id = bg_team_get_id(bl)) > 0 && (bg = bg_team_search(bg_id)) != NULL && bg->g )
|
||||
return bg->g->emblem_id;
|
||||
else
|
||||
return status_get_emblem_id(bl);
|
||||
}
|
||||
|
||||
int clif_bg_emblem(struct map_session_data *sd, struct guild *g)
|
||||
{
|
||||
int fd;
|
||||
|
||||
nullpo_retr(0, sd);
|
||||
nullpo_retr(0, g);
|
||||
fd = sd->fd;
|
||||
|
||||
if( g->emblem_len <= 0 )
|
||||
return 0;
|
||||
|
||||
WFIFOHEAD(fd,g->emblem_len+12);
|
||||
WFIFOW(fd,0)=0x152;
|
||||
WFIFOW(fd,2)=g->emblem_len+12;
|
||||
WFIFOL(fd,4)=g->guild_id;
|
||||
WFIFOL(fd,8)=g->emblem_id;
|
||||
memcpy(WFIFOP(fd,12),g->emblem_data,g->emblem_len);
|
||||
WFIFOSET(fd,WFIFOW(fd,2));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clif_bg_memberlist(struct map_session_data *sd)
|
||||
{
|
||||
int fd, i, c;
|
||||
struct battleground_data *bg;
|
||||
struct map_session_data *psd;
|
||||
nullpo_retr(0, sd);
|
||||
|
||||
if( (fd = sd->fd) == 0 )
|
||||
return 0;
|
||||
if( !sd->state.bg_id || (bg = bg_team_search(sd->state.bg_id)) == NULL )
|
||||
return 0;
|
||||
|
||||
WFIFOHEAD(fd,bg->count * 104 + 4);
|
||||
WFIFOW(fd,0) = 0x154;
|
||||
for( i = 0, c = 0; i < bg->count; i++ )
|
||||
{
|
||||
if( (psd = bg->members[i].sd) == NULL )
|
||||
continue;
|
||||
WFIFOL(fd,c*104+ 4) = psd->status.account_id;
|
||||
WFIFOL(fd,c*104+ 8) = psd->status.char_id;
|
||||
WFIFOW(fd,c*104+12) = psd->status.hair;
|
||||
WFIFOW(fd,c*104+14) = psd->status.hair_color;
|
||||
WFIFOW(fd,c*104+16) = psd->status.sex;
|
||||
WFIFOW(fd,c*104+18) = psd->status.class_;
|
||||
WFIFOW(fd,c*104+20) = psd->status.base_level;
|
||||
WFIFOL(fd,c*104+22) = 0;
|
||||
WFIFOL(fd,c*104+26) = 1;
|
||||
WFIFOL(fd,c*104+30) = c;
|
||||
memset(WFIFOP(fd,c*104+34),0,50);
|
||||
memcpy(WFIFOP(fd,c*104+84),psd->status.name,NAME_LENGTH);
|
||||
c++;
|
||||
}
|
||||
WFIFOW(fd, 2)=c*104+4;
|
||||
WFIFOSET(fd,WFIFOW(fd,2));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clif_bg_leave(struct map_session_data *sd, const char *name, const char *mes)
|
||||
{
|
||||
unsigned char buf[128];
|
||||
nullpo_retr(0, sd);
|
||||
|
||||
WBUFW(buf,0)=0x15a;
|
||||
memcpy(WBUFP(buf, 2),name,NAME_LENGTH);
|
||||
memcpy(WBUFP(buf,26),mes,40);
|
||||
clif_send(buf,packet_len(0x15a),&sd->bl,BG);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clif_bg_leave_single(struct map_session_data *sd, const char *name, const char *mes)
|
||||
{
|
||||
int fd;
|
||||
nullpo_retr(0, sd);
|
||||
|
||||
fd = sd->fd;
|
||||
WFIFOHEAD(fd,66);
|
||||
WFIFOW(fd,0) = 0x15a;
|
||||
memcpy(WFIFOP(fd,2), name, NAME_LENGTH);
|
||||
memcpy(WFIFOP(fd,26), mes, 40);
|
||||
WFIFOSET(fd,66);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clif_bg_message(struct battleground_data *bg, const char *name, const char *mes, int len)
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
@ -13096,21 +12924,6 @@ int clif_bg_message(struct battleground_data *bg, const char *name, const char *
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clif_bg_expulsion_single(struct map_session_data *sd, const char *name, const char *mes)
|
||||
{
|
||||
int fd;
|
||||
nullpo_retr(0, sd);
|
||||
|
||||
fd = sd->fd;
|
||||
WFIFOHEAD(fd, 90);
|
||||
WFIFOW(fd,0) = 0x15c;
|
||||
safestrncpy((char*)WFIFOP(fd,2), name, NAME_LENGTH);
|
||||
safestrncpy((char*)WFIFOP(fd,26), mes, 40);
|
||||
safestrncpy((char*)WFIFOP(fd,66), "", NAME_LENGTH);
|
||||
WFIFOSET(fd,90);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
* Validates and processes battlechat messages [pakpil]
|
||||
* S 0x2db <packet len>.w <text>.?B (<name> : <message>) 00
|
||||
@ -13173,6 +12986,31 @@ int clif_bg_updatescore_single(struct map_session_data *sd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clif_sendbgemblem_area(struct map_session_data *sd)
|
||||
{
|
||||
unsigned char buf[33];
|
||||
nullpo_retr(0,sd);
|
||||
|
||||
WBUFW(buf, 0) = 0x2dd;
|
||||
WBUFL(buf,2) = sd->bl.id;
|
||||
safestrncpy((char*)WBUFP(buf,6), sd->status.name, NAME_LENGTH); // name don't show in screen.
|
||||
WBUFW(buf,30) = sd->state.bg_id;
|
||||
clif_send(buf,packet_len(0x2dd), &sd->bl, AREA);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int clif_sendbgemblem_single(int fd, struct map_session_data *sd)
|
||||
{
|
||||
nullpo_retr(0,sd);
|
||||
WFIFOHEAD(fd,32);
|
||||
WFIFOW(fd,0) = 0x2dd;
|
||||
WFIFOL(fd,2) = sd->bl.id;
|
||||
safestrncpy((char*)WFIFOP(fd,6), sd->status.name, NAME_LENGTH);
|
||||
WFIFOW(fd,30) = sd->state.bg_id;
|
||||
WFIFOSET(fd,packet_len(0x2dd));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
* ƒpƒPƒbƒgƒfƒoƒbƒO
|
||||
*------------------------------------------*/
|
||||
@ -13442,7 +13280,7 @@ static int packetdb_readdb(void)
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 0, 0, 0, 0,
|
||||
//#0x02C0
|
||||
0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 6, -1, 10, 10, 0, 0, -1, -1, 6, 0,
|
||||
0, 0, 0, 0, 0, 0, 6, -1, 10, 10, 0, 0, -1, 32, 6, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
|
@ -343,17 +343,11 @@ int clif_guild_xy_remove(struct map_session_data *sd);
|
||||
int clif_bg_hp(struct map_session_data *sd);
|
||||
int clif_bg_xy(struct map_session_data *sd);
|
||||
int clif_bg_xy_remove(struct map_session_data *sd);
|
||||
int clif_bg_belonginfo(struct map_session_data *sd);
|
||||
int clif_visual_guild_id(struct block_list *bl);
|
||||
int clif_visual_emblem_id(struct block_list *bl);
|
||||
int clif_bg_emblem(struct map_session_data *sd, struct guild *g);
|
||||
int clif_bg_memberlist(struct map_session_data *sd);
|
||||
int clif_bg_leave(struct map_session_data *sd, const char *name, const char *mes);
|
||||
int clif_bg_leave_single(struct map_session_data *sd, const char *name, const char *mes);
|
||||
int clif_bg_message(struct battleground_data *bg, const char *name, const char *mes, int len);
|
||||
int clif_bg_expulsion_single(struct map_session_data *sd, const char *name, const char *mes);
|
||||
int clif_bg_updatescore(int m);
|
||||
int clif_bg_updatescore_single(struct map_session_data *sd);
|
||||
int clif_sendbgemblem_area(struct map_session_data *sd);
|
||||
int clif_sendbgemblem_single(int fd, struct map_session_data *sd);
|
||||
|
||||
// atcommand
|
||||
int clif_displaymessage(const int fd,const char* mes);
|
||||
|
@ -13372,7 +13372,7 @@ BUILDIN_FUNC(waitingroom2bg)
|
||||
struct npc_data *nd;
|
||||
struct chat_data *cd;
|
||||
const char *map_name, *ev = "", *dev = "";
|
||||
int x, y, i, mapindex = 0, guild_index, bg_id, n;
|
||||
int x, y, i, mapindex = 0, bg_id, n;
|
||||
struct map_session_data *sd;
|
||||
|
||||
if( script_hasdata(st,8) )
|
||||
@ -13399,12 +13399,10 @@ BUILDIN_FUNC(waitingroom2bg)
|
||||
|
||||
x = script_getnum(st,3);
|
||||
y = script_getnum(st,4);
|
||||
guild_index = script_getnum(st,5);
|
||||
ev = script_getstr(st,6); // Logout Event
|
||||
dev = script_getstr(st,7); // Die Event
|
||||
ev = script_getstr(st,5); // Logout Event
|
||||
dev = script_getstr(st,6); // Die Event
|
||||
|
||||
guild_index = cap_value(guild_index, 0, 1);
|
||||
if( (bg_id = bg_create(mapindex, x, y, guild_index, ev, dev)) == 0 )
|
||||
if( (bg_id = bg_create(mapindex, x, y, ev, dev)) == 0 )
|
||||
{ // Creation failed
|
||||
script_pushint(st,0);
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user