Increased EVENT_NAME_LENGTH and some more cleanups
Fixed an invalid reference in clif.c(follow up to 008be23) Moved the OnWhisperGlobal name definition to the other special event name declarations Increased EVENT_NAME_LENGTH from 51 to 77 characters because it uses NPCs exname which can be up to 50 characters now Added a warning when an NPCs exname is too long for an OnWhisperEvent
This commit is contained in:
parent
b60f74c3df
commit
e443f846c6
@ -11035,7 +11035,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
|
||||
set_var(sd,variablename,(char *) split_data[i]);
|
||||
}
|
||||
|
||||
safesnprintf(event,sizeof(event),"%s::OnWhisperGlobal", npc->exname);
|
||||
safesnprintf(event,sizeof(event),"%s::%s", npc->exname,script_config.onwhisper_event_name);
|
||||
npc_event(sd,event,0); // Calls the NPC label
|
||||
|
||||
return;
|
||||
@ -14119,7 +14119,7 @@ void clif_friendslist_send(struct map_session_data *sd)
|
||||
for(i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id; i++) {
|
||||
WFIFOL(fd, 4 + 32 * i + 0) = sd->status.friends[i].account_id;
|
||||
WFIFOL(fd, 4 + 32 * i + 4) = sd->status.friends[i].char_id;
|
||||
safestrncpy(WFIFOP(fd, 4 + 32 * i + 8), &sd->status.friends[i].name, NAME_LENGTH);
|
||||
safestrncpy(WFIFOP(fd, 4 + 32 * i + 8), sd->status.friends[i].name, NAME_LENGTH);
|
||||
}
|
||||
|
||||
if (i) {
|
||||
|
@ -211,8 +211,8 @@ enum e_mapid {
|
||||
#define CHATROOM_PASS_SIZE (8 + 1)
|
||||
//Max allowed chat text length
|
||||
#define CHAT_SIZE_MAX (255 + 1)
|
||||
//24 for npc name + 24 for label + 2 for a "::" and 1 for EOS
|
||||
#define EVENT_NAME_LENGTH ( NAME_LENGTH * 2 + 3 )
|
||||
// <NPC_NAME_LENGTH> for npc name + 2 for a "::" + <NAME_LENGTH> for label + 1 for EOS
|
||||
#define EVENT_NAME_LENGTH ( NPC_NAME_LENGTH + 2 + NAME_LENGTH + 1 )
|
||||
|
||||
#define DEFAULT_AUTOSAVE_INTERVAL 5*60*1000
|
||||
|
||||
|
@ -336,6 +336,14 @@ static int npc_event_export(struct npc_data *nd, int i)
|
||||
if ((lname[0] == 'O' || lname[0] == 'o') && (lname[1] == 'N' || lname[1] == 'n')) {
|
||||
struct event_data *ev;
|
||||
char buf[EVENT_NAME_LENGTH];
|
||||
|
||||
// NPC:<name> the prefix uses 4 characters
|
||||
if( !strncasecmp( lname, script_config.onwhisper_event_name, NAME_LENGTH ) && strlen(nd->exname) > ( NAME_LENGTH - 4 ) ){
|
||||
// The client only allows that many character so that NPC could not be whispered by unmodified clients
|
||||
ShowWarning( "Whisper event in npc '"CL_WHITE"%s"CL_RESET"' was ignored, because it's name is too long.\n", nd->exname );
|
||||
return 0;
|
||||
}
|
||||
|
||||
snprintf(buf, ARRAYLENGTH(buf), "%s::%s", nd->exname, lname);
|
||||
// generate the data and insert it
|
||||
CREATE(ev, struct event_data, 1);
|
||||
|
@ -185,6 +185,7 @@ struct Script_Config script_config = {
|
||||
1, // warn_func_mismatch_argtypes
|
||||
1, 65535, 2048, //warn_func_mismatch_paramnum/check_cmdcount/check_gotocount
|
||||
0, INT_MAX, // input_min_value/input_max_value
|
||||
// NOTE: None of these event labels should be longer than <NAME_LENGTH> characters
|
||||
"OnPCDieEvent", //die_event_name
|
||||
"OnPCKillEvent", //kill_pc_event_name
|
||||
"OnNPCKillEvent", //kill_mob_event_name
|
||||
@ -196,6 +197,7 @@ struct Script_Config script_config = {
|
||||
"OnPCStatCalcEvent", //stat_calc_event_name
|
||||
"OnTouch_", //ontouch_name (runs on first visible char to enter area, picks another char if the first char leaves)
|
||||
"OnTouch", //ontouch2_name (run whenever a char walks into the OnTouch area)
|
||||
"OnWhisperGlobal", //onwhisper_event_name (is executed when a player sends a whisper message to the NPC)
|
||||
};
|
||||
|
||||
static jmp_buf error_jump;
|
||||
|
@ -160,6 +160,7 @@ extern struct Script_Config {
|
||||
|
||||
const char* ontouch_name;
|
||||
const char* ontouch2_name;
|
||||
const char* onwhisper_event_name;
|
||||
} script_config;
|
||||
|
||||
typedef enum c_op {
|
||||
|
Loading…
x
Reference in New Issue
Block a user