* common/mmo.h: changed base_level and job_level to unsigned int to increase max levels
* char/char.c: added a NULL check for the file in parse_friend_txt * map/atcommand.c/.h: added @clearweather (thanks to Dexity) * map/charcommand.c/.h: added #spiritball * map/mob.c: fixed a compiler warning (ln was an int and was supposed to be an unsigned long int) git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@563 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
4bd584774e
commit
6cfcb5f217
@ -1,5 +1,10 @@
|
|||||||
Date Added
|
Date Added
|
||||||
12/14
|
12/14
|
||||||
|
* common/mmo.h: changed base_level and job_level to unsigned int to increase max levels [Codemaster]
|
||||||
|
* char/char.c: added a NULL check for the file in parse_friend_txt [Codemaster]
|
||||||
|
* map/atcommand.c/.h: added @clearweather (thanks to Dexity) [Codemaster]
|
||||||
|
* map/charcommand.c/.h: added #spiritball [Codemaster]
|
||||||
|
* map/mob.c: fixed a compiler warning (ln was an int and was supposed to be an unsigned long int) [Codemaster]
|
||||||
* Added nullpo_retb to nullpo.c - does a break; if null [celest]
|
* Added nullpo_retb to nullpo.c - does a break; if null [celest]
|
||||||
* Replaced some parts in skill.c with nullpo checks [celest]
|
* Replaced some parts in skill.c with nullpo checks [celest]
|
||||||
* Corrected some typos - penaly -> penalty [celest]
|
* Corrected some typos - penaly -> penalty [celest]
|
||||||
|
@ -577,6 +577,9 @@ int parse_friend_txt(struct mmo_charstatus *p)
|
|||||||
|
|
||||||
// Open the file and look for the ID
|
// Open the file and look for the ID
|
||||||
fp = fopen(friends_txt, "r");
|
fp = fopen(friends_txt, "r");
|
||||||
|
|
||||||
|
if(fp == NULL)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
|
||||||
while(fgets(line, sizeof(line)-1, fp)) {
|
while(fgets(line, sizeof(line)-1, fp)) {
|
||||||
|
@ -129,7 +129,7 @@ struct mmo_charstatus {
|
|||||||
short head_top,head_mid,head_bottom;
|
short head_top,head_mid,head_bottom;
|
||||||
|
|
||||||
char name[24];
|
char name[24];
|
||||||
unsigned char base_level,job_level;
|
unsigned int base_level,job_level;
|
||||||
short str,agi,vit,int_,dex,luk;
|
short str,agi,vit,int_,dex,luk;
|
||||||
unsigned char char_num,sex;
|
unsigned char char_num,sex;
|
||||||
|
|
||||||
|
@ -206,6 +206,7 @@ ATCOMMAND_FUNC(trade); // by MouseJstr
|
|||||||
ATCOMMAND_FUNC(send); // by davidsiaw
|
ATCOMMAND_FUNC(send); // by davidsiaw
|
||||||
ATCOMMAND_FUNC(setbattleflag); // by MouseJstr
|
ATCOMMAND_FUNC(setbattleflag); // by MouseJstr
|
||||||
ATCOMMAND_FUNC(unmute); // [Valaris]
|
ATCOMMAND_FUNC(unmute); // [Valaris]
|
||||||
|
ATCOMMAND_FUNC(clearweather); // Dexity
|
||||||
ATCOMMAND_FUNC(uptime); // by MC Cameri
|
ATCOMMAND_FUNC(uptime); // by MC Cameri
|
||||||
ATCOMMAND_FUNC(changesex); // by MC Cameri
|
ATCOMMAND_FUNC(changesex); // by MC Cameri
|
||||||
ATCOMMAND_FUNC(mute); // celest
|
ATCOMMAND_FUNC(mute); // celest
|
||||||
@ -455,6 +456,7 @@ static AtCommandInfo atcommand_info[] = {
|
|||||||
{ AtCommand_Send, "@send", 60, atcommand_send },
|
{ AtCommand_Send, "@send", 60, atcommand_send },
|
||||||
{ AtCommand_SetBattleFlag, "@setbattleflag", 60, atcommand_setbattleflag },
|
{ AtCommand_SetBattleFlag, "@setbattleflag", 60, atcommand_setbattleflag },
|
||||||
{ AtCommand_UnMute, "@unmute", 60, atcommand_unmute }, // [Valaris]
|
{ AtCommand_UnMute, "@unmute", 60, atcommand_unmute }, // [Valaris]
|
||||||
|
{ AtCommand_Clearweather, "@clearweather", 99, atcommand_clearweather }, // Dexity
|
||||||
{ AtCommand_UpTime, "@uptime", 0, atcommand_uptime }, // by MC Cameri
|
{ AtCommand_UpTime, "@uptime", 0, atcommand_uptime }, // by MC Cameri
|
||||||
{ AtCommand_ChangeSex, "@changesex", 1, atcommand_changesex }, // by MC Cameri
|
{ AtCommand_ChangeSex, "@changesex", 1, atcommand_changesex }, // by MC Cameri
|
||||||
{ AtCommand_Mute, "@mute", 99, atcommand_mute }, // [celest]
|
{ AtCommand_Mute, "@mute", 99, atcommand_mute }, // [celest]
|
||||||
@ -7686,6 +7688,27 @@ atcommand_leaves(
|
|||||||
clif_specialeffect(&sd->bl,effno,2);
|
clif_specialeffect(&sd->bl,effno,2);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*==========================================
|
||||||
|
* Clearing Weather Effects by Dexity
|
||||||
|
*------------------------------------------
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
atcommand_clearweather(
|
||||||
|
const int fd, struct map_session_data* sd,
|
||||||
|
const char* command, const char* message)
|
||||||
|
{
|
||||||
|
int effno = 0;
|
||||||
|
nullpo_retr(-1, sd);
|
||||||
|
map[sd->bl.m].flag.rain=0;
|
||||||
|
map[sd->bl.m].flag.snow=0;
|
||||||
|
map[sd->bl.m].flag.sakura=0;
|
||||||
|
map[sd->bl.m].flag.fog=0;
|
||||||
|
map[sd->bl.m].flag.leaves=0;
|
||||||
|
clif_specialeffect(&sd->bl,effno,2);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
*
|
*
|
||||||
*------------------------------------------
|
*------------------------------------------
|
||||||
|
@ -187,6 +187,7 @@ enum AtCommandType {
|
|||||||
AtCommand_Send,
|
AtCommand_Send,
|
||||||
AtCommand_SetBattleFlag,
|
AtCommand_SetBattleFlag,
|
||||||
AtCommand_UnMute,
|
AtCommand_UnMute,
|
||||||
|
AtCommand_Clearweather, // by Dexity
|
||||||
AtCommand_UpTime, // by MC Cameri
|
AtCommand_UpTime, // by MC Cameri
|
||||||
AtCommand_ChangeSex, // by MC Cameri
|
AtCommand_ChangeSex, // by MC Cameri
|
||||||
AtCommand_Mute, // [celest]
|
AtCommand_Mute, // [celest]
|
||||||
|
@ -42,6 +42,7 @@ CCMD_FUNC(option);
|
|||||||
CCMD_FUNC(save);
|
CCMD_FUNC(save);
|
||||||
CCMD_FUNC(stats_all);
|
CCMD_FUNC(stats_all);
|
||||||
CCMD_FUNC(reset);
|
CCMD_FUNC(reset);
|
||||||
|
CCMD_FUNC(spiritball);
|
||||||
|
|
||||||
#ifdef TXT_ONLY
|
#ifdef TXT_ONLY
|
||||||
/* TXT_ONLY */
|
/* TXT_ONLY */
|
||||||
@ -70,6 +71,7 @@ static CharCommandInfo charcommand_info[] = {
|
|||||||
{ CharCommandReset, "#reset", 60, charcommand_reset },
|
{ CharCommandReset, "#reset", 60, charcommand_reset },
|
||||||
{ CharCommandSave, "#save", 60, charcommand_save },
|
{ CharCommandSave, "#save", 60, charcommand_save },
|
||||||
{ CharCommandStatsAll, "#statsall", 40, charcommand_stats_all },
|
{ CharCommandStatsAll, "#statsall", 40, charcommand_stats_all },
|
||||||
|
{ CharCommandSpiritball, "#spiritball", 40, charcommand_spiritball },
|
||||||
|
|
||||||
#ifdef TXT_ONLY
|
#ifdef TXT_ONLY
|
||||||
/* TXT_ONLY */
|
/* TXT_ONLY */
|
||||||
@ -248,8 +250,8 @@ int charcommand_config_read(const char *cfgName) {
|
|||||||
charcommand_config_read(w2);
|
charcommand_config_read(w2);
|
||||||
else if (strcmpi(w1, "command_symbol") == 0 && w2[0] > 31 &&
|
else if (strcmpi(w1, "command_symbol") == 0 && w2[0] > 31 &&
|
||||||
w2[0] != '/' && // symbol of standard ragnarok GM commands
|
w2[0] != '/' && // symbol of standard ragnarok GM commands
|
||||||
w2[0] != '%' && // symbol of party chat speaking
|
w2[0] != '%' // symbol of party chat speaking
|
||||||
w2[0] != '@') // symbol for @commands
|
)
|
||||||
command_symbol = w2[0];
|
command_symbol = w2[0];
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
@ -701,3 +703,44 @@ int charcommand_stats_all(const int fd, struct map_session_data* sd, const char*
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*==========================================
|
||||||
|
* CharSpiritBall Function by PalasX
|
||||||
|
*------------------------------------------
|
||||||
|
*/
|
||||||
|
int charcommand_spiritball(const int fd, struct map_session_data* sd,const char* command, const char* message)
|
||||||
|
{
|
||||||
|
struct map_session_data *pl_sd;
|
||||||
|
char character[100];
|
||||||
|
int spirit = 0;
|
||||||
|
|
||||||
|
memset(character, '\0', sizeof(character));
|
||||||
|
|
||||||
|
if(!message || !*message || sscanf(message, "%d %99[^\n]", &spirit, character) < 2 || spirit < 0 || spirit > 1000) {
|
||||||
|
clif_displaymessage(fd, "Usage: @spiritball <number: 0-1000>) <CHARACTER_NAME>.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((pl_sd = map_nick2sd(character)) != NULL) {
|
||||||
|
if (spirit >= 0 && spirit <= 0x7FFF) {
|
||||||
|
if (pl_sd->spiritball != spirit || spirit > 999) {
|
||||||
|
if (pl_sd->spiritball > 0)
|
||||||
|
pc_delspiritball(pl_sd, pl_sd->spiritball, 1);
|
||||||
|
pl_sd->spiritball = spirit;
|
||||||
|
clif_spiritball(pl_sd);
|
||||||
|
// no message, player can look the difference
|
||||||
|
if (spirit > 1000)
|
||||||
|
clif_displaymessage(fd, msg_table[204]); // WARNING: more than 1000 spiritballs can CRASH your server and/or client!
|
||||||
|
} else {
|
||||||
|
clif_displaymessage(fd, msg_table[205]); // You already have this number of spiritballs.
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
clif_displaymessage(fd, msg_table[37]); // An invalid number was specified.
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
clif_displaymessage(fd, msg_table[3]); // Character not found.
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -11,6 +11,7 @@ enum CharCommandType {
|
|||||||
CharCommandOption,
|
CharCommandOption,
|
||||||
CharCommandSave,
|
CharCommandSave,
|
||||||
CharCommandStatsAll,
|
CharCommandStatsAll,
|
||||||
|
CharCommandSpiritball,
|
||||||
|
|
||||||
#ifdef TXT_ONLY
|
#ifdef TXT_ONLY
|
||||||
/* TXT_ONLY */
|
/* TXT_ONLY */
|
||||||
|
@ -4185,7 +4185,8 @@ void mob_reload(void)
|
|||||||
static int mob_read_sqldb(void)
|
static int mob_read_sqldb(void)
|
||||||
{
|
{
|
||||||
char line[1024];
|
char line[1024];
|
||||||
int i,class,ln=0;
|
int i,class;
|
||||||
|
long unsigned int ln=0;
|
||||||
char *str[55],*p,*np;
|
char *str[55],*p,*np;
|
||||||
|
|
||||||
memset(mob_db,0,sizeof(mob_db));
|
memset(mob_db,0,sizeof(mob_db));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user