diff options
-rw-r--r-- | Changelog.txt | 1 | ||||
-rw-r--r-- | src/map/atcommand.c | 45 | ||||
-rw-r--r-- | src/map/atcommand.h | 3 | ||||
-rw-r--r-- | src/map/chrif.c | 19 | ||||
-rw-r--r-- | src/map/chrif.h | 1 |
5 files changed, 62 insertions, 7 deletions
diff --git a/Changelog.txt b/Changelog.txt index 30f5883bb..b6fe515b9 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,6 @@ Date Added
11/06
+ * atcommand.c/.h,chrif.c/.h, added @changesex. [MC Cameri]
* mob.c & clif.c: Added & Modified a few parts dealing with monsters and guilds [Codemaster]
* mob.c: Re-did a few parts according to jA's 1057 version. [Codemaster]
11/05
diff --git a/src/map/atcommand.c b/src/map/atcommand.c index a4c6fc745..e243680dd 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -209,6 +209,7 @@ ATCOMMAND_FUNC(send); // by davidsiaw ATCOMMAND_FUNC(setbattleflag); // by MouseJstr
ATCOMMAND_FUNC(unmute); // [Valaris]
ATCOMMAND_FUNC(uptime); // by MC Cameri
+ATCOMMAND_FUNC(changesex); // by MC Cameri
#ifndef TXT_ONLY
ATCOMMAND_FUNC(checkmail); // [Valaris]
@@ -456,6 +457,7 @@ static AtCommandInfo atcommand_info[] = { { AtCommand_SetBattleFlag, "@setbattleflag", 60, atcommand_setbattleflag },
{ AtCommand_UnMute, "@unmute", 60, atcommand_unmute }, // [Valaris]
{ AtCommand_UpTime, "@uptime", 0, atcommand_uptime }, // by MC Cameri
+ { AtCommand_ChangeSex, "@changesex", 1, atcommand_changesex }, // by MC Cameri
#ifndef TXT_ONLY // sql-only commands
{ AtCommand_CheckMail, "@checkmail", 1, atcommand_listmail }, // [Valaris]
@@ -5923,8 +5925,8 @@ int atcommand_repairall( count = 0;
for (i = 0; i < MAX_INVENTORY; i++) {
- if (sd->status.inventory[i].nameid && sd->status.inventory[i].attribute == 1) {
- sd->status.inventory[i].attribute = 0;
+ if (sd->status.inventory[i].nameid && sd->status.inventory[i].broken == 1) {
+ sd->status.inventory[i].broken = 0;
clif_produceeffect(sd, 0, sd->status.inventory[i].nameid);
count++;
}
@@ -7564,6 +7566,45 @@ atcommand_uptime( return 0;
}
+/*==========================================
+ * @changesex <sex>
+ * => Changes one's sex. Argument sex can be
+ * 0 or 1, m or f, male or female.
+ *------------------------------------------
+ */
+int
+atcommand_changesex(
+ const int fd, struct map_session_data* sd,
+ const char* command, const char* message)
+{
+
+// char sex[200], output[200];
+ int isex = (sd->status.sex+1)%2;
+/*
+ if (!message || !*message)
+ return -1;
+ memset(sex, '\0', sizeof(sex));
+ if(sscanf(message, "%99[^\n]", sex) < 1)
+ return -1;
+ str_lower(sex);
+ if (strcmp(sex,"0") == 0 || strcmp(sex,"f") == 0 || strcmp(sex,"female") == 0) {
+ isex = 0;
+ } else if (strcmp(sex,"1") == 0 || strcmp(sex,"m") == 0 || strcmp(sex,"male") == 0) {
+ isex = 1;
+ } else {
+ clif_displaymessage(fd,msg_table[456]);
+ return 0;
+ }
+*/
+// if (isex != sd->sex) {
+ chrif_changesex(sd->status.account_id, isex);
+// } else {
+// sprintf(output,msg_table[460],(isex == 0)?"female":"male");
+// clif_displaymessage(fd,output);
+// }
+ return 0;
+}
+
#ifndef TXT_ONLY /* Begin SQL-Only commands */
/*==========================================
diff --git a/src/map/atcommand.h b/src/map/atcommand.h index 72d57af6a..c5ba3df58 100644 --- a/src/map/atcommand.h +++ b/src/map/atcommand.h @@ -191,7 +191,8 @@ enum AtCommandType { AtCommand_Send,
AtCommand_SetBattleFlag,
AtCommand_UnMute,
- AtCommand_UpTime,
+ AtCommand_UpTime,
+ AtCommand_ChangeSex,
// SQL-only commands start
#ifndef TXT_ONLY
AtCommand_CheckMail, // [Valaris]
diff --git a/src/map/chrif.c b/src/map/chrif.c index 0423d792b..66f496d71 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -415,6 +415,20 @@ int chrif_char_ask_name(int id, char * character_name, short operation_type, int }
/*==========================================
+ * 性別変化要求
+ *------------------------------------------
+ */
+int chrif_changesex(int id, int sex) {
+ WFIFOW(char_fd,0) = 0x2b0c;
+ WFIFOW(char_fd,2) = 9;
+ WFIFOL(char_fd,4) = id;
+ WFIFOB(char_fd,8) = sex;
+ printf("chrif : sended 0x2b0c\n");
+ WFIFOSET(char_fd,9);
+ return 0;
+}
+
+/*==========================================
* Answer after a request about a character name to do some operations (by Yor)
* Used to answer of chrif_char_ask_name.
* type of operation:
@@ -885,9 +899,7 @@ int chrif_parse(int fd) // only char-server can have an access to here.
// so, if it isn't the char-server, we disconnect the session (fd != char_fd).
- if(fd != char_fd)
- session[fd]->eof = 1;
- if(session[fd]->eof) {
+ if (fd != char_fd || session[fd]->eof) {
if (fd == char_fd) {
printf("Map-server can't connect to char-server (connection #%d).\n", fd);
char_fd = -1;
@@ -907,7 +919,6 @@ int chrif_parse(int fd) if (r == 1) continue; // intifで処理した
if (r == 2) return 0; // intifで処理したが、データが足りない
- close(fd); // intifで処理できなかった
session[fd]->eof = 1;
return 0;
}
diff --git a/src/map/chrif.h b/src/map/chrif.h index 3408c89ef..c01afedba 100644 --- a/src/map/chrif.h +++ b/src/map/chrif.h @@ -23,6 +23,7 @@ int chrif_saveaccountreg2(struct map_session_data *sd); int chrif_reloadGMdb(void);
int chrif_ragsrvinfo(int base_rate,int job_rate, int drop_rate);
int chrif_char_offline(struct map_session_data *sd);
+int chrif_changesex(int id, int sex);
int do_init_chrif(void);
|