git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@334 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
3af0e7d98a
commit
d2afe2f5fb
@ -1,12 +1,14 @@
|
|||||||
Date Added
|
Date Added
|
||||||
11/23
|
11/23
|
||||||
|
* @charoption is now #option [MC Cameri]
|
||||||
|
* @charpetfriendly is now #petfriendly [MC Cameri]
|
||||||
|
* @charstats is now #stats [MC Cameri]
|
||||||
* Skill Updates: [celest]
|
* Skill Updates: [celest]
|
||||||
- Added some code for the new guild skills (10%) and Moonlit Petals (5%)
|
- Added some code for the new guild skills (10%) and Moonlit Petals (5%)
|
||||||
- Notes to other devs: Guild skills with id's 10000-10014 will be stored in
|
- Notes to other devs: Guild skills with id's 10000-10014 will be stored in
|
||||||
skill_db[500-514]
|
skill_db[500-514]
|
||||||
- Corrected Hilt Binding
|
- Corrected Hilt Binding
|
||||||
- Corrected Assassin Cross' dual wield
|
- Corrected Assassin Cross' dual wield
|
||||||
|
|
||||||
11/22
|
11/22
|
||||||
* (TXT)Stripped some code off read_gm_accounts() and made with it addGM() [MC Cameri]
|
* (TXT)Stripped some code off read_gm_accounts() and made with it addGM() [MC Cameri]
|
||||||
-Usage: addGM(account_id,level);
|
-Usage: addGM(account_id,level);
|
||||||
|
@ -11,3 +11,4 @@ job: 60
|
|||||||
jobchange: 60
|
jobchange: 60
|
||||||
petrename: 50
|
petrename: 50
|
||||||
petfriendly: 50
|
petfriendly: 50
|
||||||
|
stats: 40
|
@ -104,7 +104,6 @@ ATCOMMAND_FUNC(hatch);
|
|||||||
ATCOMMAND_FUNC(petfriendly);
|
ATCOMMAND_FUNC(petfriendly);
|
||||||
ATCOMMAND_FUNC(pethungry);
|
ATCOMMAND_FUNC(pethungry);
|
||||||
ATCOMMAND_FUNC(petrename);
|
ATCOMMAND_FUNC(petrename);
|
||||||
ATCOMMAND_FUNC(charpetrename); // by Yor
|
|
||||||
ATCOMMAND_FUNC(recall);
|
ATCOMMAND_FUNC(recall);
|
||||||
ATCOMMAND_FUNC(recallall);
|
ATCOMMAND_FUNC(recallall);
|
||||||
ATCOMMAND_FUNC(revive);
|
ATCOMMAND_FUNC(revive);
|
||||||
@ -327,9 +326,7 @@ static AtCommandInfo atcommand_info[] = {
|
|||||||
{ AtCommand_PetRename, "@petrename", 1, atcommand_petrename },
|
{ AtCommand_PetRename, "@petrename", 1, atcommand_petrename },
|
||||||
{ AtCommand_Recall, "@recall", 60, atcommand_recall }, // + /recall
|
{ AtCommand_Recall, "@recall", 60, atcommand_recall }, // + /recall
|
||||||
{ AtCommand_Revive, "@revive", 60, atcommand_revive },
|
{ AtCommand_Revive, "@revive", 60, atcommand_revive },
|
||||||
{ AtCommand_CharacterStats, "@charstats", 40, atcommand_character_stats },
|
|
||||||
{ AtCommand_CharacterStatsAll, "@charstatsall", 40, atcommand_character_stats_all },
|
{ AtCommand_CharacterStatsAll, "@charstatsall", 40, atcommand_character_stats_all },
|
||||||
{ AtCommand_CharacterOption, "@charoption", 60, atcommand_character_option },
|
|
||||||
{ AtCommand_CharacterSave, "@charsave", 60, atcommand_character_save },
|
{ AtCommand_CharacterSave, "@charsave", 60, atcommand_character_save },
|
||||||
{ AtCommand_Night, "@night", 80, atcommand_night },
|
{ AtCommand_Night, "@night", 80, atcommand_night },
|
||||||
{ AtCommand_Day, "@day", 80, atcommand_day },
|
{ AtCommand_Day, "@day", 80, atcommand_day },
|
||||||
@ -4058,64 +4055,6 @@ int atcommand_revive(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
|
||||||
*
|
|
||||||
*------------------------------------------
|
|
||||||
*/
|
|
||||||
int atcommand_character_stats(
|
|
||||||
const int fd, struct map_session_data* sd,
|
|
||||||
const char* command, const char* message)
|
|
||||||
{
|
|
||||||
char character[100];
|
|
||||||
char job_jobname[100];
|
|
||||||
char output[200];
|
|
||||||
struct map_session_data *pl_sd;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
memset(character, '\0', sizeof(character));
|
|
||||||
memset(job_jobname, '\0', sizeof(job_jobname));
|
|
||||||
memset(output, '\0', sizeof(output));
|
|
||||||
|
|
||||||
if (!message || !*message || sscanf(message, "%99[^\n]", character) < 1) {
|
|
||||||
clif_displaymessage(fd, "Please, enter a player name (usage: @charstats <char name>).");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pl_sd = map_nick2sd(character)) != NULL) {
|
|
||||||
struct {
|
|
||||||
const char* format;
|
|
||||||
int value;
|
|
||||||
} output_table[] = {
|
|
||||||
{ "Base Level - %d", pl_sd->status.base_level },
|
|
||||||
{ job_jobname, pl_sd->status.job_level },
|
|
||||||
{ "Hp - %d", pl_sd->status.hp },
|
|
||||||
{ "MaxHp - %d", pl_sd->status.max_hp },
|
|
||||||
{ "Sp - %d", pl_sd->status.sp },
|
|
||||||
{ "MaxSp - %d", pl_sd->status.max_sp },
|
|
||||||
{ "Str - %3d", pl_sd->status.str },
|
|
||||||
{ "Agi - %3d", pl_sd->status.agi },
|
|
||||||
{ "Vit - %3d", pl_sd->status.vit },
|
|
||||||
{ "Int - %3d", pl_sd->status.int_ },
|
|
||||||
{ "Dex - %3d", pl_sd->status.dex },
|
|
||||||
{ "Luk - %3d", pl_sd->status.luk },
|
|
||||||
{ "Zeny - %d", pl_sd->status.zeny },
|
|
||||||
{ NULL, 0 }
|
|
||||||
};
|
|
||||||
sprintf(job_jobname, "Job - %s %s", job_name(pl_sd->status.class), "(level %d)");
|
|
||||||
sprintf(output, msg_table[53], pl_sd->status.name); // '%s' stats:
|
|
||||||
clif_displaymessage(fd, output);
|
|
||||||
for (i = 0; output_table[i].format != NULL; i++) {
|
|
||||||
sprintf(output, output_table[i].format, output_table[i].value);
|
|
||||||
clif_displaymessage(fd, output);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
clif_displaymessage(fd, msg_table[3]); // Character not found.
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
*
|
*
|
||||||
*------------------------------------------
|
*------------------------------------------
|
||||||
@ -4161,75 +4100,6 @@ int atcommand_character_stats_all(const int fd, struct map_session_data* sd, con
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
|
||||||
*
|
|
||||||
*------------------------------------------
|
|
||||||
*/
|
|
||||||
int atcommand_character_option(
|
|
||||||
const int fd, struct map_session_data* sd,
|
|
||||||
const char* command, const char* message)
|
|
||||||
{
|
|
||||||
char character[100];
|
|
||||||
int opt1 = 0, opt2 = 0, opt3 = 0;
|
|
||||||
struct map_session_data* pl_sd;
|
|
||||||
|
|
||||||
memset(character, '\0', sizeof(character));
|
|
||||||
|
|
||||||
if (!message || !*message || sscanf(message, "%d %d %d %99[^\n]", &opt1, &opt2, &opt3, character) < 4 || opt1 < 0 || opt2 < 0 || opt3 < 0) {
|
|
||||||
clif_displaymessage(fd, "Please, enter valid options and a player name (usage: @charoption <param1> <param2> <param3> <charname>).");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pl_sd = map_nick2sd(character)) != NULL) {
|
|
||||||
if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change option only to lower or same level
|
|
||||||
pl_sd->opt1 = opt1;
|
|
||||||
pl_sd->opt2 = opt2;
|
|
||||||
pl_sd->status.option = opt3;
|
|
||||||
// fix pecopeco display
|
|
||||||
if (pl_sd->status.class == 13 || pl_sd->status.class == 21 || pl_sd->status.class == 4014 || pl_sd->status.class == 4022) {
|
|
||||||
if (!pc_isriding(pl_sd)) { // pl_sd have the new value...
|
|
||||||
if (pl_sd->status.class == 13)
|
|
||||||
pl_sd->status.class = pl_sd->view_class = 7;
|
|
||||||
else if (pl_sd->status.class == 21)
|
|
||||||
pl_sd->status.class = pl_sd->view_class = 14;
|
|
||||||
else if (pl_sd->status.class == 4014)
|
|
||||||
pl_sd->status.class = pl_sd->view_class = 4008;
|
|
||||||
else if (pl_sd->status.class == 4022)
|
|
||||||
pl_sd->status.class = pl_sd->view_class = 4015;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (pc_isriding(pl_sd)) { // pl_sd have the new value...
|
|
||||||
if (pl_sd->disguise > 0) { // temporary prevention of crash caused by peco + disguise, will look into a better solution [Valaris] (code added by [Yor])
|
|
||||||
pl_sd->status.option &= ~0x0020;
|
|
||||||
} else {
|
|
||||||
if (pl_sd->status.class == 7)
|
|
||||||
pl_sd->status.class = pl_sd->view_class = 13;
|
|
||||||
else if (pl_sd->status.class == 14)
|
|
||||||
pl_sd->status.class = pl_sd->view_class = 21;
|
|
||||||
else if (pl_sd->status.class == 4008)
|
|
||||||
pl_sd->status.class = pl_sd->view_class = 4014;
|
|
||||||
else if (pl_sd->status.class == 4015)
|
|
||||||
pl_sd->status.class = pl_sd->view_class = 4022;
|
|
||||||
else
|
|
||||||
pl_sd->status.option &= ~0x0020;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
clif_changeoption(&pl_sd->bl);
|
|
||||||
pc_calcstatus(pl_sd, 0);
|
|
||||||
clif_displaymessage(fd, msg_table[58]); // Character's options changed.
|
|
||||||
} else {
|
|
||||||
clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player.
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
clif_displaymessage(fd, msg_table[3]); // Character not found.
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* charchangesex command (usage: charchangesex <player_name>)
|
* charchangesex command (usage: charchangesex <player_name>)
|
||||||
*------------------------------------------
|
*------------------------------------------
|
||||||
|
@ -78,13 +78,13 @@ enum AtCommandType {
|
|||||||
AtCommand_PetFriendly,
|
AtCommand_PetFriendly,
|
||||||
AtCommand_PetHungry,
|
AtCommand_PetHungry,
|
||||||
AtCommand_PetRename,
|
AtCommand_PetRename,
|
||||||
AtCommand_CharPetRename, // by Yor
|
// AtCommand_CharPetRename, // by Yor, Now #petrename
|
||||||
AtCommand_Recall,
|
AtCommand_Recall,
|
||||||
// AtCommand_CharacterJob, // Now #jobchange
|
// AtCommand_CharacterJob, // Now #jobchange
|
||||||
AtCommand_Revive,
|
AtCommand_Revive,
|
||||||
AtCommand_CharacterStats,
|
AtCommand_CharacterStats,
|
||||||
AtCommand_CharacterStatsAll,
|
AtCommand_CharacterStatsAll,
|
||||||
AtCommand_CharacterOption,
|
// AtCommand_CharacterOption, // Now #option
|
||||||
AtCommand_CharacterSave,
|
AtCommand_CharacterSave,
|
||||||
AtCommand_CharacterLoad,
|
AtCommand_CharacterLoad,
|
||||||
AtCommand_Night,
|
AtCommand_Night,
|
||||||
@ -250,6 +250,7 @@ int atcommand_config_read(const char *cfgName);
|
|||||||
int msg_config_read(const char *cfgName);
|
int msg_config_read(const char *cfgName);
|
||||||
|
|
||||||
char *str_lower(char *str);
|
char *str_lower(char *str);
|
||||||
|
char * job_name(int class);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -32,10 +32,13 @@ static char command_symbol = '#';
|
|||||||
|
|
||||||
static char msg_table[1000][1024]; // Server messages (0-499 reserved for GM commands, 500-999 reserved for others)
|
static char msg_table[1000][1024]; // Server messages (0-499 reserved for GM commands, 500-999 reserved for others)
|
||||||
|
|
||||||
#define CHARCOMMAND_FUNC(x) int charcommand_ ## x (const int fd, struct map_session_data* sd, const char* command, const char* message)
|
#define CCMD_FUNC(x) int charcommand_ ## x (const int fd, struct map_session_data* sd, const char* command, const char* message)
|
||||||
|
|
||||||
CHARCOMMAND_FUNC(jobchange);
|
CCMD_FUNC(jobchange);
|
||||||
CHARCOMMAND_FUNC(petrename);
|
CCMD_FUNC(petrename);
|
||||||
|
CCMD_FUNC(petfriendly);
|
||||||
|
CCMD_FUNC(stats);
|
||||||
|
CCMD_FUNC(option);
|
||||||
|
|
||||||
#ifdef TXT_ONLY
|
#ifdef TXT_ONLY
|
||||||
/* TXT_ONLY */
|
/* TXT_ONLY */
|
||||||
@ -58,6 +61,9 @@ static CharCommandInfo charcommand_info[] = {
|
|||||||
{ CharCommandJobChange, "#job", 60, charcommand_jobchange },
|
{ CharCommandJobChange, "#job", 60, charcommand_jobchange },
|
||||||
{ CharCommandJobChange, "#jobchange", 60, charcommand_jobchange },
|
{ CharCommandJobChange, "#jobchange", 60, charcommand_jobchange },
|
||||||
{ CharCommandPetRename, "#petrename", 50, charcommand_petrename },
|
{ CharCommandPetRename, "#petrename", 50, charcommand_petrename },
|
||||||
|
{ CharCommandPetFriendly, "#petfriendly", 50, charcommand_petfriendly },
|
||||||
|
{ CharCommandStats, "#stats", 40, charcommand_stats },
|
||||||
|
{ CharCommandOption, "#option", 60, charcommand_option },
|
||||||
|
|
||||||
#ifdef TXT_ONLY
|
#ifdef TXT_ONLY
|
||||||
/* TXT_ONLY */
|
/* TXT_ONLY */
|
||||||
@ -126,12 +132,12 @@ is_charcommand(const int fd, struct map_session_data* sd, const char* message, i
|
|||||||
p++;
|
p++;
|
||||||
|
|
||||||
if (type == CharCommand_Unknown || info.proc == NULL) {
|
if (type == CharCommand_Unknown || info.proc == NULL) {
|
||||||
sprintf(output, msg_table[153], command); // %s is Unknown Command.
|
snprintf(output, sizeof(output),msg_txt(153), command); // %s is Unknown Command.
|
||||||
clif_displaymessage(fd, output);
|
clif_displaymessage(fd, output);
|
||||||
} else {
|
} else {
|
||||||
if (info.proc(fd, sd, command, p) != 0) {
|
if (info.proc(fd, sd, command, p) != 0) {
|
||||||
// Command can not be executed
|
// Command can not be executed
|
||||||
sprintf(output, msg_table[154], command); // %s failed.
|
snprintf(output, sizeof(output), msg_txt(154), command); // %s failed.
|
||||||
clif_displaymessage(fd, output);
|
clif_displaymessage(fd, output);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -213,7 +219,7 @@ int charcommand_config_read(const char *cfgName) {
|
|||||||
FILE* fp;
|
FILE* fp;
|
||||||
|
|
||||||
if ((fp = fopen(cfgName, "r")) == NULL) {
|
if ((fp = fopen(cfgName, "r")) == NULL) {
|
||||||
printf("Char commands configuration file not found: %s\n", cfgName);
|
printf("CharCommands configuration file not found: %s\n", cfgName);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,19 +251,6 @@ int charcommand_config_read(const char *cfgName) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*==========================================
|
|
||||||
// # command processing functions
|
|
||||||
*------------------------------------------
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
charcommand_test (const int fd, struct map_session_data* sd,
|
|
||||||
const char* command, const char* message) {
|
|
||||||
clif_displaymessage(fd,"Works!");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* 対象キャラクターを転職させる upper指定で転生や養子も可能
|
* 対象キャラクターを転職させる upper指定で転生や養子も可能
|
||||||
*------------------------------------------
|
*------------------------------------------
|
||||||
@ -373,7 +366,7 @@ int charcommand_petrename(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
clif_displaymessage(fd, msg_table[3]); // Character not found.
|
clif_displaymessage(fd, msg_txt(3)); // Character not found.
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -398,7 +391,7 @@ int charcommand_petfriendly(
|
|||||||
if (!message || !*message || sscanf(message,"%d %s",&friendly,character) < 2) {
|
if (!message || !*message || sscanf(message,"%d %s",&friendly,character) < 2) {
|
||||||
clif_displaymessage(fd, "Please, enter a valid value (usage: "
|
clif_displaymessage(fd, "Please, enter a valid value (usage: "
|
||||||
"#petfriendly <0-1000> <player>).");
|
"#petfriendly <0-1000> <player>).");
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((pl_sd = map_nick2sd(character)) != NULL) && pc_isGM(sd)>pc_isGM(pl_sd)) {
|
if (((pl_sd = map_nick2sd(character)) != NULL) && pc_isGM(sd)>pc_isGM(pl_sd)) {
|
||||||
@ -431,6 +424,64 @@ int charcommand_petfriendly(
|
|||||||
} else {
|
} else {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
clif_displaymessage(fd, msg_txt(3)); // Character not found.
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*==========================================
|
||||||
|
*
|
||||||
|
*------------------------------------------
|
||||||
|
*/
|
||||||
|
int charcommand_stats(
|
||||||
|
const int fd, struct map_session_data* sd,
|
||||||
|
const char* command, const char* message)
|
||||||
|
{
|
||||||
|
char character[100];
|
||||||
|
char job_jobname[100];
|
||||||
|
char output[200];
|
||||||
|
struct map_session_data *pl_sd;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
memset(character, '\0', sizeof(character));
|
||||||
|
memset(job_jobname, '\0', sizeof(job_jobname));
|
||||||
|
memset(output, '\0', sizeof(output));
|
||||||
|
|
||||||
|
if (!message || !*message || sscanf(message, "%99[^\n]", character) < 1) {
|
||||||
|
clif_displaymessage(fd, "Please, enter a player name (usage: #stats <char name>).");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((pl_sd = map_nick2sd(character)) != NULL) {
|
||||||
|
struct {
|
||||||
|
const char* format;
|
||||||
|
int value;
|
||||||
|
} output_table[] = {
|
||||||
|
{ "Base Level - %d", pl_sd->status.base_level },
|
||||||
|
{ job_jobname, pl_sd->status.job_level },
|
||||||
|
{ "Hp - %d", pl_sd->status.hp },
|
||||||
|
{ "MaxHp - %d", pl_sd->status.max_hp },
|
||||||
|
{ "Sp - %d", pl_sd->status.sp },
|
||||||
|
{ "MaxSp - %d", pl_sd->status.max_sp },
|
||||||
|
{ "Str - %3d", pl_sd->status.str },
|
||||||
|
{ "Agi - %3d", pl_sd->status.agi },
|
||||||
|
{ "Vit - %3d", pl_sd->status.vit },
|
||||||
|
{ "Int - %3d", pl_sd->status.int_ },
|
||||||
|
{ "Dex - %3d", pl_sd->status.dex },
|
||||||
|
{ "Luk - %3d", pl_sd->status.luk },
|
||||||
|
{ "Zeny - %d", pl_sd->status.zeny },
|
||||||
|
{ NULL, 0 }
|
||||||
|
};
|
||||||
|
sprintf(job_jobname, "Job - %s %s", job_name(pl_sd->status.class), "(level %d)");
|
||||||
|
sprintf(output, msg_table[53], pl_sd->status.name); // '%s' stats:
|
||||||
|
clif_displaymessage(fd, output);
|
||||||
|
for (i = 0; output_table[i].format != NULL; i++) {
|
||||||
|
sprintf(output, output_table[i].format, output_table[i].value);
|
||||||
|
clif_displaymessage(fd, output);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
clif_displaymessage(fd, msg_table[3]); // Character not found.
|
clif_displaymessage(fd, msg_table[3]); // Character not found.
|
||||||
return -1;
|
return -1;
|
||||||
@ -439,3 +490,73 @@ int charcommand_petfriendly(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*==========================================
|
||||||
|
*
|
||||||
|
*------------------------------------------
|
||||||
|
*/
|
||||||
|
int charcommand_option(
|
||||||
|
const int fd, struct map_session_data* sd,
|
||||||
|
const char* command, const char* message)
|
||||||
|
{
|
||||||
|
char character[100];
|
||||||
|
int opt1 = 0, opt2 = 0, opt3 = 0;
|
||||||
|
struct map_session_data* pl_sd;
|
||||||
|
|
||||||
|
memset(character, '\0', sizeof(character));
|
||||||
|
|
||||||
|
if (!message || !*message ||
|
||||||
|
sscanf(message, "%d %d %d %99[^\n]", &opt1, &opt2, &opt3, character) < 4 ||
|
||||||
|
opt1 < 0 || opt2 < 0 || opt3 < 0) {
|
||||||
|
clif_displaymessage(fd, "Please, enter valid options and a player name (usage: #option <param1> <param2> <param3> <charname>).");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((pl_sd = map_nick2sd(character)) != NULL) {
|
||||||
|
if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change option only to lower or same level
|
||||||
|
pl_sd->opt1 = opt1;
|
||||||
|
pl_sd->opt2 = opt2;
|
||||||
|
pl_sd->status.option = opt3;
|
||||||
|
// fix pecopeco display
|
||||||
|
if (pl_sd->status.class == 13 || pl_sd->status.class == 21 || pl_sd->status.class == 4014 || pl_sd->status.class == 4022) {
|
||||||
|
if (!pc_isriding(pl_sd)) { // pl_sd have the new value...
|
||||||
|
if (pl_sd->status.class == 13)
|
||||||
|
pl_sd->status.class = pl_sd->view_class = 7;
|
||||||
|
else if (pl_sd->status.class == 21)
|
||||||
|
pl_sd->status.class = pl_sd->view_class = 14;
|
||||||
|
else if (pl_sd->status.class == 4014)
|
||||||
|
pl_sd->status.class = pl_sd->view_class = 4008;
|
||||||
|
else if (pl_sd->status.class == 4022)
|
||||||
|
pl_sd->status.class = pl_sd->view_class = 4015;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (pc_isriding(pl_sd)) { // pl_sd have the new value...
|
||||||
|
if (pl_sd->disguise > 0) { // temporary prevention of crash caused by peco + disguise, will look into a better solution [Valaris] (code added by [Yor])
|
||||||
|
pl_sd->status.option &= ~0x0020;
|
||||||
|
} else {
|
||||||
|
if (pl_sd->status.class == 7)
|
||||||
|
pl_sd->status.class = pl_sd->view_class = 13;
|
||||||
|
else if (pl_sd->status.class == 14)
|
||||||
|
pl_sd->status.class = pl_sd->view_class = 21;
|
||||||
|
else if (pl_sd->status.class == 4008)
|
||||||
|
pl_sd->status.class = pl_sd->view_class = 4014;
|
||||||
|
else if (pl_sd->status.class == 4015)
|
||||||
|
pl_sd->status.class = pl_sd->view_class = 4022;
|
||||||
|
else
|
||||||
|
pl_sd->status.option &= ~0x0020;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
clif_changeoption(&pl_sd->bl);
|
||||||
|
pc_calcstatus(pl_sd, 0);
|
||||||
|
clif_displaymessage(fd, msg_table[58]); // Character's options changed.
|
||||||
|
} else {
|
||||||
|
clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player.
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
clif_displaymessage(fd, msg_table[3]); // Character not found.
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -6,6 +6,8 @@ enum CharCommandType {
|
|||||||
CharCommandJobChange,
|
CharCommandJobChange,
|
||||||
CharCommandPetRename,
|
CharCommandPetRename,
|
||||||
CharCommandPetFriendly,
|
CharCommandPetFriendly,
|
||||||
|
CharCommandStats,
|
||||||
|
CharCommandOption,
|
||||||
|
|
||||||
#ifdef TXT_ONLY
|
#ifdef TXT_ONLY
|
||||||
/* TXT_ONLY */
|
/* TXT_ONLY */
|
||||||
|
@ -2282,10 +2282,10 @@ int do_init(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
battle_config_read(BATTLE_CONF_FILENAME);
|
battle_config_read(BATTLE_CONF_FILENAME);
|
||||||
|
msg_config_read(MSG_CONF_NAME);
|
||||||
atcommand_config_read(ATCOMMAND_CONF_FILENAME);
|
atcommand_config_read(ATCOMMAND_CONF_FILENAME);
|
||||||
charcommand_config_read(CHARCOMMAND_CONF_FILENAME);
|
charcommand_config_read(CHARCOMMAND_CONF_FILENAME);
|
||||||
script_config_read(SCRIPT_CONF_NAME);
|
script_config_read(SCRIPT_CONF_NAME);
|
||||||
msg_config_read(MSG_CONF_NAME);
|
|
||||||
#ifndef TXT_ONLY
|
#ifndef TXT_ONLY
|
||||||
sql_config_read(SQL_CONF_NAME);
|
sql_config_read(SQL_CONF_NAME);
|
||||||
log_config_read(LOG_CONF_NAME);
|
log_config_read(LOG_CONF_NAME);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user