• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

密猟オンラインクライアントプログラム JAVAベース


Commit MetaInfo

Revision7 (tree)
Time2016-01-27 18:39:59
Authormanjihq

Log Message

サーバーに実装された管理者用機能に対応するコマンドを実装

Change Summary

Incremental Difference

--- trunk/src/hunton/SendTask.java (revision 6)
+++ trunk/src/hunton/SendTask.java (revision 7)
@@ -131,6 +131,11 @@
131131 Hunt.view_help(this);
132132 break;
133133
134+ case '#': /* administrator command */
135+
136+ doAdministratorCommand(s);
137+ break;
138+
134139 default:
135140 MesgBox.MessageBox((Frame) Hunt.getMessageView(),
136141 Hunt.getBundle().
@@ -1122,6 +1127,134 @@
11221127 return session.send_packet_c(buffer, 0);
11231128 }
11241129
1130+ /* parse administrator command */
1131+ public void doAdministratorCommand(String s) {
1132+ byte[] pusername;
1133+ int nlen;
1134+ int n;
1135+ StringBuffer work = new StringBuffer();
1136+ s = Hunt.getToken(s, " ,", work);
1137+ switch (work.charAt(2)) {
1138+ case 'D':
1139+ /* delete user */
1140+ Hunt.getToken(s, " ,", work);
1141+ try {
1142+ pusername = work.toString().getBytes(Hunt.SYSTEM_CHARSET);
1143+ } catch (UnsupportedEncodingException e) {
1144+ return;
1145+ }
1146+ nlen = Array.getLength(pusername);
1147+ n = 2;
1148+ buffer[0] = Hunt.HCLIT_DELUSER;
1149+ if (nlen > Hunt.USERNAME_LEN) {
1150+ nlen = Hunt.USERNAME_LEN;
1151+ }
1152+ System.arraycopy(pusername, 0, buffer, n, nlen);
1153+ n += nlen;
1154+ for (; nlen < Hunt.USERNAME_LEN; nlen++) {
1155+ buffer[n++] = 0;
1156+ }
1157+ if (session.send_packet_c(buffer, n) == false) {
1158+ System.out.println(Hunt.getBundle().
1159+ getString("ERRMESG_SENDPACKET"));
1160+ Hunt.abort();
1161+ }
1162+ break;
1163+ case 'S':
1164+ /* shutdown server */
1165+ buffer[0] = Hunt.HCLIT_SHUTDOWN;
1166+ if (session.send_packet_c(buffer, 2) == false) {
1167+ System.out.println(Hunt.getBundle().
1168+ getString("ERRMESG_SENDPACKET"));
1169+ Hunt.abort();
1170+ }
1171+ break;
1172+ case 'P':
1173+ /* get score */
1174+ Hunt.getToken(s, " ,", work);
1175+ n = 2;
1176+ buffer[0] = Hunt.HCLIT_ADMINCMD;
1177+ buffer[n++] = 1;
1178+ Hunt.htonl(Long.parseLong(work.toString()), buffer, n);
1179+ n += 4;
1180+ if (session.send_packet_c(buffer, n) == false) {
1181+ System.out.println(Hunt.getBundle().
1182+ getString("ERRMESG_SENDPACKET"));
1183+ Hunt.abort();
1184+ }
1185+ break;
1186+ case 'H':
1187+ /* get HP */
1188+ Hunt.getToken(s, " ,", work);
1189+ n = 2;
1190+ buffer[0] = Hunt.HCLIT_ADMINCMD;
1191+ buffer[n++] = 2;
1192+ Hunt.htonl(Long.parseLong(work.toString()), buffer, n);
1193+ n += 4;
1194+ if (session.send_packet_c(buffer, n) == false) {
1195+ System.out.println(Hunt.getBundle().
1196+ getString("ERRMESG_SENDPACKET"));
1197+ Hunt.abort();
1198+ }
1199+ break;
1200+ case 'L':
1201+ /* block user account */
1202+ Hunt.getToken(s, " ,", work);
1203+ try {
1204+ pusername = work.toString().getBytes(Hunt.SYSTEM_CHARSET);
1205+ } catch (UnsupportedEncodingException e) {
1206+ return;
1207+ }
1208+ nlen = Array.getLength(pusername);
1209+ n = 2;
1210+ buffer[0] = Hunt.HCLIT_JAILUSER;
1211+ if (nlen > Hunt.USERNAME_LEN) {
1212+ nlen = Hunt.USERNAME_LEN;
1213+ }
1214+ System.arraycopy(pusername, 0, buffer, n, nlen);
1215+ n += nlen;
1216+ for (; nlen < Hunt.USERNAME_LEN; nlen++) {
1217+ buffer[n++] = 0;
1218+ }
1219+ buffer[n++] = 1;
1220+ if (session.send_packet_c(buffer, n) == false) {
1221+ System.out.println(Hunt.getBundle().
1222+ getString("ERRMESG_SENDPACKET"));
1223+ Hunt.abort();
1224+ }
1225+ break;
1226+ case 'R':
1227+ /* recover user account */
1228+ Hunt.getToken(s, " ,", work);
1229+ try {
1230+ pusername = work.toString().getBytes(Hunt.SYSTEM_CHARSET);
1231+ } catch (UnsupportedEncodingException e) {
1232+ return;
1233+ }
1234+ nlen = Array.getLength(pusername);
1235+ n = 2;
1236+ buffer[0] = Hunt.HCLIT_JAILUSER;
1237+ if (nlen > Hunt.USERNAME_LEN) {
1238+ nlen = Hunt.USERNAME_LEN;
1239+ }
1240+ System.arraycopy(pusername, 0, buffer, n, nlen);
1241+ n += nlen;
1242+ for (; nlen < Hunt.USERNAME_LEN; nlen++) {
1243+ buffer[n++] = 0;
1244+ }
1245+ buffer[n++] = 0;
1246+ if (session.send_packet_c(buffer, n) == false) {
1247+ System.out.println(Hunt.getBundle().
1248+ getString("ERRMESG_SENDPACKET"));
1249+ Hunt.abort();
1250+ }
1251+ break;
1252+
1253+ default:
1254+ /* illegal command */
1255+ break;
1256+ }
1257+ }
11251258 }
11261259
11271260
--- trunk/src/hunton/Hunt.java (revision 6)
+++ trunk/src/hunton/Hunt.java (revision 7)
@@ -86,6 +86,9 @@
8686 public static final byte HCLIT_LOGOFF = 0x3a;
8787 public static final byte HCLIT_NEWUSER = 0x3b;
8888 public static final byte HCLIT_DELUSER = 0x3c;
89+ public static final byte HCLIT_JAILUSER = 0x3d;
90+ public static final byte HCLIT_ADMINCMD = 0x3e;
91+ public static final byte HCLIT_SHUTDOWN = 0x3f;
8992
9093 /* map data */
9194 public static final byte HCLIT_MAP_INVALID = '?';
@@ -638,7 +641,6 @@
638641 }
639642
640643 /* make client */
641-
642644 static void make_client() {
643645 Rectangle r;
644646 mainWnd = new Frame(MessageFormat.format(Hunt.getBundle().