diff options
author | shennetsind <ind@henn.et> | 2013-05-17 13:53:41 -0300 |
---|---|---|
committer | shennetsind <ind@henn.et> | 2013-05-17 13:53:41 -0300 |
commit | 9080a58e2184eeb36b30e6dc653ec5459b3acfb1 (patch) | |
tree | e7bc8f866c29ab876b18fd17c165ac47becfe43c | |
parent | 3820bd7e7715bc84f458cf1bf466e6377a2d2e46 (diff) | |
download | hercules-9080a58e2184eeb36b30e6dc653ec5459b3acfb1.tar.gz hercules-9080a58e2184eeb36b30e6dc653ec5459b3acfb1.tar.bz2 hercules-9080a58e2184eeb36b30e6dc653ec5459b3acfb1.tar.xz hercules-9080a58e2184eeb36b30e6dc653ec5459b3acfb1.zip |
MOTD redesign
much more flexible, as per community suggestion in
http://hercules.ws/board/topic/320-motd-change-suggestion/
dropped motd_type config
new motd is at npc/MOTD.txt
dropped @motd, @gmotd commands
Signed-off-by: shennetsind <ind@henn.et>
-rw-r--r-- | conf/battle/client.conf | 3 | ||||
-rw-r--r-- | conf/help.txt | 1 | ||||
-rw-r--r-- | conf/motd.txt | 2 | ||||
-rw-r--r-- | db/pre-re/map_zone_db.conf | 4 | ||||
-rw-r--r-- | db/re/map_zone_db.conf | 4 | ||||
-rw-r--r-- | npc/MOTD.txt | 15 | ||||
-rw-r--r-- | npc/scripts_athena.conf | 1 | ||||
-rw-r--r-- | src/map/atcommand.c | 54 | ||||
-rw-r--r-- | src/map/battle.c | 1 | ||||
-rw-r--r-- | src/map/battle.h | 1 | ||||
-rw-r--r-- | src/map/chrif.c | 2 | ||||
-rw-r--r-- | src/map/map.c | 4 | ||||
-rw-r--r-- | src/map/map.h | 1 | ||||
-rw-r--r-- | src/map/npc.c | 9 | ||||
-rw-r--r-- | src/map/npc.h | 16 | ||||
-rw-r--r-- | src/map/pc.c | 76 | ||||
-rw-r--r-- | src/map/pc.h | 1 |
17 files changed, 49 insertions, 146 deletions
diff --git a/conf/battle/client.conf b/conf/battle/client.conf index 086932d4b..e638ed0a0 100644 --- a/conf/battle/client.conf +++ b/conf/battle/client.conf @@ -87,9 +87,6 @@ summer_ignorepalette: no // Set this to yes if your cloth palettes pack doesn't has Hanbok palettes (or has less than the other jobs) hanbok_ignorepalette: no -// Set this to 1 if your clients have langtype problems and can't display motd properly -motd_type: 0 - // Show Hercules version to users when the login? display_version: no diff --git a/conf/help.txt b/conf/help.txt index 6f202091e..16e7c2981 100644 --- a/conf/help.txt +++ b/conf/help.txt @@ -7,7 +7,6 @@ help: "Params: <command>\n" "Shows help for specified command." noask: "Auto rejects deals/invites." -gmotd: "Broadcasts the Message of The Day to all players." me: "Params: <message>\n" "Displays normal text as a message in this format: *name message* (like /me in mIRC)." fakename: "Params: <name>\n" "Changes your name to your choice temporarily." npctalk: "Params: <NPC name> <message>\n" "Forces a NPC to display a message in normal chat." diff --git a/conf/motd.txt b/conf/motd.txt deleted file mode 100644 index 445fac937..000000000 --- a/conf/motd.txt +++ /dev/null @@ -1,2 +0,0 @@ -// Internal default is limited to 128 lines. If you need more, you will need to modify the MOTD_LINE_SIZE definition in pc.c -Welcome to Hercules! Enjoy! Please report any bugs you find. diff --git a/db/pre-re/map_zone_db.conf b/db/pre-re/map_zone_db.conf index ea995b712..96dbd0c7a 100644 --- a/db/pre-re/map_zone_db.conf +++ b/db/pre-re/map_zone_db.conf @@ -47,8 +47,8 @@ zones: ( skill_damage_cap: { //Exemple Below caps firebolt damage in maps within this zone to a maximum 50 damage, // (depends on HMAP_ZONE_DAMAGE_CAP_TYPE in src/config/core.h) - // to players and monsters. - //MG_FIREBOLT: (50,"PLAYER | MONSTER") + // when cast vs players and monsters. + //MG_COLDBOLT: (50,"PLAYER | MONSTER") } }, { diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf index ea995b712..96dbd0c7a 100644 --- a/db/re/map_zone_db.conf +++ b/db/re/map_zone_db.conf @@ -47,8 +47,8 @@ zones: ( skill_damage_cap: { //Exemple Below caps firebolt damage in maps within this zone to a maximum 50 damage, // (depends on HMAP_ZONE_DAMAGE_CAP_TYPE in src/config/core.h) - // to players and monsters. - //MG_FIREBOLT: (50,"PLAYER | MONSTER") + // when cast vs players and monsters. + //MG_COLDBOLT: (50,"PLAYER | MONSTER") } }, { diff --git a/npc/MOTD.txt b/npc/MOTD.txt new file mode 100644 index 000000000..7b2f086b4 --- /dev/null +++ b/npc/MOTD.txt @@ -0,0 +1,15 @@ +//==================================================== +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//= +//= http://hercules.ws/board/ +//==================================================== +// run when any character logs in, attached to them. +- script HerculesMOTD -1,{ +message strcharinfo(0),"Welcome to Hercules! Enjoy! Please report any bugs you find."; +end; +}
\ No newline at end of file diff --git a/npc/scripts_athena.conf b/npc/scripts_athena.conf index e8265d0c0..c405aff88 100644 --- a/npc/scripts_athena.conf +++ b/npc/scripts_athena.conf @@ -1,3 +1,4 @@ +npc: npc/MOTD.txt // -------------------------------------------------------------- // - Core Scripts - // -------------------------------------------------------------- diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 8a6399568..1f234911e 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -3714,16 +3714,6 @@ ACMD(reloadpcdb) } /*========================================== - * @reloadmotd - reloads motd.txt - *------------------------------------------*/ -ACMD(reloadmotd) -{ - pc_read_motd(); - clif->message(fd, msg_txt(268)); - return true; -} - -/*========================================== * @reloadscript - reloads all scripts (npcs, warps, mob spawns, ...) *------------------------------------------*/ ACMD(reloadscript) @@ -6593,47 +6583,7 @@ ACMD(identify) return true; } -/*========================================== - * @gmotd (Global MOTD) - * by davidsiaw :P - *------------------------------------------*/ -ACMD(gmotd) -{ - FILE* fp; - - if( ( fp = fopen(motd_txt, "r") ) != NULL ) - { - char buf[CHAT_SIZE_MAX]; - size_t len; - - while( fgets(buf, sizeof(buf), fp) ) - { - if( buf[0] == '/' && buf[1] == '/' ) - { - continue; - } - - len = strlen(buf); - - while( len && ( buf[len-1] == '\r' || buf[len-1] == '\n' ) ) - {// strip trailing EOL characters - len--; - } - - if( len ) - { - buf[len] = 0; - - intif_broadcast(buf, len+1, 0); - } - } - fclose(fp); - } - return true; -} - -ACMD(misceffect) -{ +ACMD(misceffect) { int effect = 0; nullpo_retr(-1, sd); if (!message || !*message) @@ -9553,7 +9503,6 @@ void atcommand_basecommands(void) { ACMD_DEF(reloadbattleconf), ACMD_DEF(reloadstatusdb), ACMD_DEF(reloadpcdb), - ACMD_DEF(reloadmotd), ACMD_DEF(mapinfo), ACMD_DEF(dye), ACMD_DEF2("hairstyle", hair_style), @@ -9615,7 +9564,6 @@ void atcommand_basecommands(void) { ACMD_DEF(refresh), ACMD_DEF(refreshall), ACMD_DEF(identify), - ACMD_DEF(gmotd), ACMD_DEF(misceffect), ACMD_DEF(mobsearch), ACMD_DEF(cleanmap), diff --git a/src/map/battle.c b/src/map/battle.c index f6fba5ca5..370adcd02 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -5820,7 +5820,6 @@ static const struct _battle_data { { "mobs_level_up_exp_rate", &battle_config.mobs_level_up_exp_rate, 1, 1, INT_MAX, }, { "pk_min_level", &battle_config.pk_min_level, 55, 1, INT_MAX, }, { "skill_steal_max_tries", &battle_config.skill_steal_max_tries, 0, 0, UCHAR_MAX, }, - { "motd_type", &battle_config.motd_type, 0, 0, 1, }, { "finding_ore_rate", &battle_config.finding_ore_rate, 100, 0, INT_MAX, }, { "exp_calc_type", &battle_config.exp_calc_type, 0, 0, 1, }, { "exp_bonus_attacker", &battle_config.exp_bonus_attacker, 25, 0, INT_MAX, }, diff --git a/src/map/battle.h b/src/map/battle.h index 0975d978d..9d578d224 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -322,7 +322,6 @@ struct Battle_Config { int mobs_level_up_exp_rate; // [Valaris] int pk_min_level; // [celest] int skill_steal_max_tries; //max steal skill tries on a mob. if 0, then w/o limit [Lupus] - int motd_type; // [celest] int finding_ore_rate; // orn int exp_calc_type; int exp_bonus_attacker; diff --git a/src/map/chrif.c b/src/map/chrif.c index 05f56029b..3ba5a20f6 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -1245,7 +1245,7 @@ int chrif_load_scdata(int fd) { } /*========================================== - * Send rates and motd to char server [Wizputer] + * Send rates to char server [Wizputer] * S 2b16 <base rate>.L <job rate>.L <drop rate>.L *------------------------------------------*/ int chrif_ragsrvinfo(int base_rate, int job_rate, int drop_rate) { diff --git a/src/map/map.c b/src/map/map.c index 49aef6c4c..ddd2a9c82 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -151,7 +151,6 @@ struct map_cache_map_info { }; char db_path[256] = "db"; -char motd_txt[256] = "conf/motd.txt"; char help_txt[256] = "conf/help.txt"; char help2_txt[256] = "conf/help2.txt"; char charhelp_txt[256] = "conf/charhelp.txt"; @@ -3340,8 +3339,6 @@ int map_config_read(char *cfgName) minsave_interval = 1; } else if (strcmpi(w1, "save_settings") == 0) save_settings = atoi(w2); - else if (strcmpi(w1, "motd_txt") == 0) - strcpy(motd_txt, w2); else if (strcmpi(w1, "help_txt") == 0) strcpy(help_txt, w2); else if (strcmpi(w1, "help2_txt") == 0) @@ -5206,6 +5203,7 @@ void load_defaults(void) { ircbot_defaults(); log_defaults(); map_defaults(); + npc_defaults(); script_defaults(); searchstore_defaults(); skill_defaults(); diff --git a/src/map/map.h b/src/map/map.h index a7bcb08db..f524e8840 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -705,7 +705,6 @@ extern int night_flag; // 0=day, 1=night [Yor] extern int enable_spy; //Determines if @spy commands are active. extern char db_path[256]; -extern char motd_txt[]; extern char help_txt[]; extern char help2_txt[]; extern char charhelp_txt[]; diff --git a/src/map/npc.c b/src/map/npc.c index 77ee8d486..913c13e0b 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -3899,6 +3899,8 @@ int npc_reload(void) { map_zone_init(); + npc->motd = npc_name2id("HerculesMOTD"); /* [Ind/Hercules] */ + //Re-read the NPC Script Events cache. npc_read_event_script(); @@ -4031,6 +4033,8 @@ int do_init_npc(void) map_zone_init(); + npc->motd = npc_name2id("HerculesMOTD"); /* [Ind/Hercules] */ + // set up the events cache memset(script_event, 0, sizeof(script_event)); npc_read_event_script(); @@ -4062,3 +4066,8 @@ int do_init_npc(void) return 0; } +void npc_defaults(void) { + npc = &npc_s; + + npc->motd = NULL; +} diff --git a/src/map/npc.h b/src/map/npc.h index 8800b4e5b..8a8b14d6e 100644 --- a/src/map/npc.h +++ b/src/map/npc.h @@ -1,5 +1,6 @@ -// Copyright (c) Athena Dev Teams - Licensed under GNU GPL -// For more information, see LICENCE in the main folder +// Copyright (c) Hercules Dev Team, licensed under GNU GPL. +// See the LICENSE file +// Portions Copyright (c) Athena Dev Teams #ifndef _NPC_H_ #define _NPC_H_ @@ -188,4 +189,15 @@ int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const c bool npc_unloadfile( const char* path ); +/* npc.c interface (barely started/WIP) */ +struct npc_interface { + /* */ + struct npc_data *motd; + /* */ +} npc_s; + +struct npc_interface *npc; + +void npc_defaults(void); + #endif /* _NPC_H_ */ diff --git a/src/map/pc.c b/src/map/pc.c index 9b1545c51..0f221f298 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -68,9 +68,6 @@ struct fame_list taekwon_fame_list[MAX_FAME_LIST]; static unsigned short equip_pos[EQI_MAX]={EQP_ACC_L,EQP_ACC_R,EQP_SHOES,EQP_GARMENT,EQP_HEAD_LOW,EQP_HEAD_MID,EQP_HEAD_TOP,EQP_ARMOR,EQP_HAND_L,EQP_HAND_R,EQP_COSTUME_HEAD_TOP,EQP_COSTUME_HEAD_MID,EQP_COSTUME_HEAD_LOW,EQP_COSTUME_GARMENT,EQP_AMMO}; -#define MOTD_LINE_SIZE 128 -static char motd_text[MOTD_LINE_SIZE][CHAT_SIZE_MAX]; // Message of the day buffer [Valaris] - //Links related info to the sd->hate_mob[]/sd->feel_map[] entries const struct sg_data sg_info[MAX_PC_FEELHATE] = { { SG_SUN_ANGER, SG_SUN_BLESS, SG_SUN_COMFORT, "PC_FEEL_SUN", "PC_HATE_MOB_SUN", is_day_of_sun }, @@ -1067,15 +1064,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim sprintf(buf,"Unknown Version"); clif->message(sd->fd, buf); } - - // Message of the Day [Valaris] - for(i=0; motd_text[i][0] && i < MOTD_LINE_SIZE; i++) { - if (battle_config.motd_type) - clif->disp_onlyself(sd,motd_text[i],strlen(motd_text[i])); - else - clif->message(sd->fd, motd_text[i]); - } - + // message of the limited time of the account if (expiration_time != 0) { // don't display if it's unlimited or unknow value char tmpstr[1024]; @@ -1254,6 +1243,8 @@ int pc_reg_received(struct map_session_data *sd) clif->changeoption(&sd->bl); } + if( npc->motd ) /* [Ind/Hercules] */ + run_script(npc->motd->u.scr.script, 0, sd->bl.id, fake_nd->bl.id); return 1; } @@ -9732,66 +9723,6 @@ int pc_readdb(void) return 0; } -// Read MOTD on startup. [Valaris] -int pc_read_motd(void) -{ - FILE* fp; - - // clear old MOTD - memset(motd_text, 0, sizeof(motd_text)); - - // read current MOTD - if( ( fp = fopen(motd_txt, "r") ) != NULL ) - { - char* buf, * ptr; - unsigned int lines = 0, entries = 0; - size_t len; - - while( entries < MOTD_LINE_SIZE && fgets(motd_text[entries], sizeof(motd_text[entries]), fp) ) - { - lines++; - - buf = motd_text[entries]; - - if( buf[0] == '/' && buf[1] == '/' ) - { - continue; - } - - len = strlen(buf); - - while( len && ( buf[len-1] == '\r' || buf[len-1] == '\n' ) ) - {// strip trailing EOL characters - len--; - } - - if( len ) - { - buf[len] = 0; - - if( ( ptr = strstr(buf, " :") ) != NULL && ptr-buf >= NAME_LENGTH ) - {// crashes newer clients - ShowWarning("Found sequence '"CL_WHITE" :"CL_RESET"' on line '"CL_WHITE"%u"CL_RESET"' in '"CL_WHITE"%s"CL_RESET"'. This can cause newer clients to crash.\n", lines, motd_txt); - } - } - else - {// empty line - buf[0] = ' '; - buf[1] = 0; - } - entries++; - } - fclose(fp); - - ShowStatus("Done reading '"CL_WHITE"%u"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", entries, motd_txt); - } - else - { - ShowWarning("File '"CL_WHITE"%s"CL_RESET"' not found.\n", motd_txt); - } - - return 0; -} void pc_itemcd_do(struct map_session_data *sd, bool load) { int i,cursor = 0; struct item_cd* cd = NULL; @@ -9843,7 +9774,6 @@ int do_init_pc(void) { itemcd_db = idb_alloc(DB_OPT_RELEASE_DATA); pc_readdb(); - pc_read_motd(); // Read MOTD [Valaris] add_timer_func_list(pc_invincible_timer, "pc_invincible_timer"); add_timer_func_list(pc_eventtimer, "pc_eventtimer"); diff --git a/src/map/pc.h b/src/map/pc.h index 014f93d99..b1fa3e741 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -939,7 +939,6 @@ void pc_inventory_rentals(struct map_session_data *sd); int pc_inventory_rental_clear(struct map_session_data *sd); void pc_inventory_rental_add(struct map_session_data *sd, int seconds); -int pc_read_motd(void); // [Valaris] int pc_disguise(struct map_session_data *sd, int class_); bool pc_isautolooting(struct map_session_data *sd, int nameid); |