Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
720d57adc3 | ||
|
|
596fa9ccc8 | ||
|
|
346f9868d5 | ||
|
|
8b005a7816 | ||
|
|
ecef26cdf0 | ||
|
|
be567fc68c | ||
|
|
176cdae3e5 | ||
|
|
3005b30403 | ||
|
|
f0e4f51c50 | ||
|
|
9d25d5cc73 | ||
|
|
f7f468dad6 | ||
|
|
4e1c2fdcfd | ||
|
|
556ef530fd | ||
|
|
4b61d3dc9c | ||
|
|
0332cfb428 | ||
|
|
21dd42cb71 | ||
|
|
a85148790a | ||
|
|
27a00b339b | ||
|
|
96caef8f43 | ||
|
|
4c8b0df8b0 | ||
|
|
ba88642ab8 | ||
|
|
db846c9bc2 | ||
|
|
42f31ce46e | ||
|
|
796fbcce1a | ||
|
|
e15f964f81 | ||
|
|
41234fd502 | ||
|
|
e54cdfdb13 | ||
|
|
556d6be15e | ||
|
|
b19bd263a7 | ||
|
|
163709e1c0 | ||
|
|
e6286c711d | ||
|
|
ac2d7b6289 | ||
|
|
5a3764b418 | ||
|
|
ed28cabb16 | ||
|
|
f522a6cefd | ||
|
|
923d7f5178 | ||
|
|
f8ab617e4c | ||
|
|
022d6e94e3 | ||
|
|
25b414325d | ||
|
|
15aaf04093 | ||
|
|
bd896d1530 | ||
|
|
42ff8adee8 | ||
|
|
07dc78784e | ||
|
|
e3e009fe5b | ||
|
|
893688459c | ||
|
|
0aa6120530 | ||
|
|
85aa7ea71f | ||
|
|
208a75dc16 | ||
|
|
15453d0704 | ||
|
|
c77e89ca0d | ||
|
|
45ce1220dc | ||
|
|
37740bbf41 | ||
|
|
06959db5e5 | ||
|
|
1fa0cf8d32 | ||
|
|
ea50e53718 | ||
|
|
eb6b7ce84a | ||
|
|
d8f4056f46 | ||
|
|
240085834a | ||
|
|
be735c0990 | ||
|
|
58ae76f4c8 | ||
|
|
afa08e9170 | ||
|
|
af3a60590e | ||
|
|
497d118627 | ||
|
|
bad7ed2772 | ||
|
|
74efa5c502 | ||
|
|
f014dae6af | ||
|
|
b692eccd08 | ||
|
|
613a0c00e8 | ||
|
|
2cdf00af50 | ||
|
|
3a68cf07b3 | ||
|
|
484d939cea | ||
|
|
67d224c37e | ||
|
|
0793559831 | ||
|
|
b919a09d33 | ||
|
|
90b51d5a21 | ||
|
|
4e97c6f7a2 | ||
|
|
575e03c0fc | ||
|
|
300c364545 | ||
|
|
fa13145e23 | ||
|
|
dc0281d359 | ||
|
|
bbf916f28c | ||
|
|
0cf255702e | ||
|
|
7c8c4447cb | ||
|
|
1240ce2a02 | ||
|
|
1cc9aa967f | ||
|
|
a4883f5b0e | ||
|
|
f57fc6abbc | ||
|
|
e168399908 | ||
|
|
7462e135fa | ||
|
|
ef339566a5 | ||
|
|
3d6f8c6304 | ||
|
|
5b58e2efa5 | ||
|
|
6650cd2e41 | ||
|
|
f6fbb94ecc | ||
|
|
8730ab3377 | ||
|
|
1b24b06eba | ||
|
|
e3d62397a3 | ||
|
|
105ca78639 | ||
|
|
71ca5a3947 | ||
|
|
d7fc024c04 | ||
|
|
5b89f66758 | ||
|
|
01e2702491 | ||
|
|
ebe7ac1cfc | ||
|
|
0b29589055 | ||
|
|
5fb93afb24 | ||
|
|
6cdf442aa7 | ||
|
|
5626b9e626 | ||
|
|
5b043eb6a4 | ||
|
|
d5748a7950 | ||
|
|
df067be0b9 | ||
|
|
94b146d7bd | ||
|
|
868cf6c64b | ||
|
|
59b6a9e86e | ||
|
|
622c639e44 | ||
|
|
a0c9168791 | ||
|
|
d4c1c05b3c | ||
|
|
711d8161f6 | ||
|
|
b7eaba73b5 | ||
|
|
c269b4938d | ||
|
|
71dced5790 | ||
|
|
c0aea98e03 | ||
|
|
96e1e45696 | ||
|
|
bb922f987e | ||
|
|
fefc66ebe9 | ||
|
|
307d08d898 | ||
|
|
ce2f97e738 | ||
|
|
5a675ad048 | ||
|
|
d866989bc6 | ||
|
|
0f635c6dd0 | ||
|
|
a8b2ae5862 | ||
|
|
d9f8ad9db8 | ||
|
|
877d77f28b | ||
|
|
b26b8bdb98 | ||
|
|
1cac4fc4c0 | ||
|
|
fc0c81e2ca | ||
|
|
5db3bdcef9 | ||
|
|
793183cbea | ||
|
|
a68b530a9d | ||
|
|
0ebb105387 | ||
|
|
e9019418f0 | ||
|
|
3e4e25dee6 | ||
|
|
d3e9c8d692 | ||
|
|
bd1f7adc0c | ||
|
|
099bcdaf8f | ||
|
|
b9582b0dd2 | ||
|
|
f2fe9feb3a | ||
|
|
b99f3a3053 | ||
|
|
3e3677987c | ||
|
|
0cba30a202 | ||
|
|
9c08398d87 | ||
|
|
1a30da6726 | ||
|
|
30326825f0 | ||
|
|
a90baffda6 | ||
|
|
61ce23f7f9 | ||
|
|
0dcc973b2f | ||
|
|
10d07c8974 | ||
|
|
a79abfeab8 | ||
|
|
b6a7b35555 | ||
|
|
0adfee68db | ||
|
|
d0ece51fbb | ||
|
|
5471672ee5 | ||
|
|
470672e367 | ||
|
|
03a0c67209 | ||
|
|
0660180c53 | ||
|
|
499a2ee472 | ||
|
|
8ccedb598b | ||
|
|
c3f1457fce | ||
|
|
5c3dc0c2a5 | ||
|
|
590dfe90c3 | ||
|
|
f22a013079 | ||
|
|
e72975f552 | ||
|
|
77a2e2b2d5 | ||
|
|
8c36e9444a | ||
|
|
04b2b1cafe | ||
|
|
7de089dbbb | ||
|
|
c30965055c | ||
|
|
70cdb945f5 | ||
|
|
433b4e8c44 | ||
|
|
4bfb5b63c9 | ||
|
|
fad8358096 | ||
|
|
d23c17d172 | ||
|
|
426e68693a | ||
|
|
6712f88037 | ||
|
|
c351ecc299 | ||
|
|
b06b89dd86 | ||
|
|
cc48326977 | ||
|
|
2f8b368ae8 | ||
|
|
29b13f6b9c | ||
|
|
c6db4cd545 | ||
|
|
2c00ad098c | ||
|
|
bac0d93ccb | ||
|
|
6678e87cbf | ||
|
|
adbe14fd30 | ||
|
|
9b86aaa1bd | ||
|
|
2969ed2edc | ||
|
|
41d5df60f4 | ||
|
|
cfbaf60989 | ||
|
|
4178927b6f | ||
|
|
291976893a | ||
|
|
cde55ab574 | ||
|
|
77b78d05ac | ||
|
|
1fa32554d8 | ||
|
|
f1e79699a4 | ||
|
|
c628f9237f | ||
|
|
6a83d1ce25 | ||
|
|
081d40cf82 | ||
|
|
b23004c184 | ||
|
|
bc58f48752 | ||
|
|
1ac255a556 | ||
|
|
fb3cbbd924 | ||
|
|
1b29c7e463 | ||
|
|
6003c19b32 | ||
|
|
b54bf240a0 | ||
|
|
505bbda675 | ||
|
|
26bd37af31 | ||
|
|
bf13ccdcd3 | ||
|
|
645fc877e6 | ||
|
|
6ac021ff12 | ||
|
|
5d8e2c16f5 | ||
|
|
83a3ebb583 | ||
|
|
481e23fce0 | ||
|
|
be33ca69f8 | ||
|
|
bd54681d78 | ||
|
|
f0ffd3356d | ||
|
|
8a0b248caf | ||
|
|
bc71ce73cf | ||
|
|
de93966192 | ||
|
|
a4e8221508 | ||
|
|
36c37e97e0 | ||
|
|
03993052a3 | ||
|
|
3ef5c2aa6d | ||
|
|
02d84bada0 | ||
|
|
25332f2728 | ||
|
|
70e64e261e | ||
|
|
4ed88d33b1 | ||
|
|
3414241a71 | ||
|
|
e36a46b1cb | ||
|
|
df09a5227c | ||
|
|
1b1fcebeed | ||
|
|
33d9eb4c6d | ||
|
|
347c0a1275 | ||
|
|
1320c1fa58 | ||
|
|
0ce101f038 | ||
|
|
d56a0a8789 | ||
|
|
8da0e685c8 | ||
|
|
786306e32a | ||
|
|
4e20bf1d1c | ||
|
|
06797a78a7 | ||
|
|
1f3bc6baa6 | ||
|
|
ab0442cb59 | ||
|
|
e02a836063 | ||
|
|
8dfebd055c | ||
|
|
219c7028a7 | ||
|
|
4c21da5373 | ||
|
|
b2585137a5 | ||
|
|
2d585611a5 | ||
|
|
bc2dfc5403 | ||
|
|
071271b7dd | ||
|
|
bd05d5b650 | ||
|
|
f0839ade88 | ||
|
|
0b287be006 | ||
|
|
b0e928fc27 | ||
|
|
5cd2e9712e | ||
|
|
cafde950a4 | ||
|
|
34321ad89f | ||
|
|
3c09e77fba | ||
|
|
8a899c9afe | ||
|
|
865d3c89bb | ||
|
|
a3ce526854 | ||
|
|
f5b33dbbc7 | ||
|
|
83eb58fffa | ||
|
|
5e5d2d5c91 | ||
|
|
af06fc460b | ||
|
|
f874bf564d | ||
|
|
1ab5fcb36f | ||
|
|
e30aff8ca2 | ||
|
|
b2211ac4e0 | ||
|
|
0ad9347122 | ||
|
|
d48f71fc75 | ||
|
|
11adb5ddf0 | ||
|
|
8d3a15b117 | ||
|
|
dd2afb7609 | ||
|
|
08488cae4a | ||
|
|
ef6cb065d5 | ||
|
|
2880a37595 | ||
|
|
44afd72e8c | ||
|
|
6a2804ad79 | ||
|
|
d8af8f143a | ||
|
|
c6540b4fea | ||
|
|
e1897964e8 | ||
|
|
37212c9392 | ||
|
|
a4e8edce73 | ||
|
|
9da82dd205 | ||
|
|
1c15b1fdb2 | ||
|
|
27e02f22cc | ||
|
|
08178dd3aa | ||
|
|
9dc842c6e9 | ||
|
|
b706fd468d | ||
|
|
3d2489b51a | ||
|
|
f7121e25f6 | ||
|
|
307cf5eeae | ||
|
|
a6ae77cebf | ||
|
|
3d1f16bfc2 | ||
|
|
60fdef9d3f | ||
|
|
8d90a00d0e | ||
|
|
0169861c2a | ||
|
|
0f4304dcd4 | ||
|
|
64cb898d13 | ||
|
|
d3ac47356d | ||
|
|
054e58504f | ||
|
|
66ad3cc587 | ||
|
|
386cc074e3 | ||
|
|
0b1f491d16 | ||
|
|
5ce6035192 | ||
|
|
8d322a51db | ||
|
|
46d3c2bb69 | ||
|
|
92e8c5f0ce | ||
|
|
8a458eb96a | ||
|
|
e3e98f9844 | ||
|
|
89a6d6c2ac | ||
|
|
0627466308 | ||
|
|
163fea111b | ||
|
|
b8eb56ac71 | ||
|
|
e07b64339a | ||
|
|
df0c8b3c92 | ||
|
|
d4be69d44f | ||
|
|
cd0b98ee3c | ||
|
|
d1a80241f5 | ||
|
|
4f3d3b0be8 | ||
|
|
6f16d9413c | ||
|
|
2b5f38ca52 | ||
|
|
9dec0ad916 | ||
|
|
0c5118780c | ||
|
|
6e6f58ed94 | ||
|
|
00c31597c2 | ||
|
|
91b16159b7 | ||
|
|
840ab27570 | ||
|
|
0d53277fcc | ||
|
|
0218ac969b | ||
|
|
2f62d2bc14 | ||
|
|
d46d281dcf | ||
|
|
c812e24d8f | ||
|
|
7c120ee253 | ||
|
|
acbbe2c353 | ||
|
|
5b6e15c5fd | ||
|
|
dfdbeac8e4 | ||
|
|
dcf65d47a3 | ||
|
|
75fdc5368e | ||
|
|
af1d8a3041 | ||
|
|
6b0999d09b | ||
|
|
1efad18661 | ||
|
|
4d3fe5aafa | ||
|
|
c50ee44433 | ||
|
|
83c71bec25 | ||
|
|
4c2dabe4cc | ||
|
|
cf631491e8 | ||
|
|
5b026e3c5c | ||
|
|
4d136a022c | ||
|
|
f0a8efb5ad | ||
|
|
fc94177340 | ||
|
|
3b29e17696 | ||
|
|
a64431add8 | ||
|
|
c90820e6e2 | ||
|
|
46f3709f09 | ||
|
|
8e0b908b5e | ||
|
|
a5f8aa6d17 | ||
|
|
1d821480fc | ||
|
|
eaeb97baf0 | ||
|
|
e2cc446c71 | ||
|
|
02b3fe2f25 | ||
|
|
16b1bece2b | ||
|
|
4c41486e1c | ||
|
|
da71280a8d | ||
|
|
6da30c5723 | ||
|
|
aeabb05a9d | ||
|
|
2538dc5071 | ||
|
|
c7219eeb33 | ||
|
|
c493640dae | ||
|
|
0e7edad020 | ||
|
|
b7328a56ae | ||
|
|
b34e17d69a | ||
|
|
0fec301f61 | ||
|
|
82c8441e1d | ||
|
|
e845777735 | ||
|
|
f9b592fec7 | ||
|
|
55de2d3f62 | ||
|
|
ad6cae561a | ||
|
|
6256867fa0 | ||
|
|
7f4205601d | ||
|
|
d50c409315 | ||
|
|
4ee6946828 | ||
|
|
e1df980ece | ||
|
|
be1198b4a1 | ||
|
|
976c0bee6b | ||
|
|
4fc2fc1128 | ||
|
|
d3a455b955 | ||
|
|
0b815f89d6 | ||
|
|
e6cdf1ee7c | ||
|
|
aa12604481 | ||
|
|
872e0f565a | ||
|
|
f21b15f2db | ||
|
|
9aecca4cef | ||
|
|
553f9d46ba | ||
|
|
91079d9d40 | ||
|
|
6f6360d501 | ||
|
|
5a8ca16e34 | ||
|
|
9476c54eaa | ||
|
|
edd5752de2 | ||
|
|
a560ee6f0a | ||
|
|
3c28ceb701 | ||
|
|
527a0895f5 | ||
|
|
731f1e0226 | ||
|
|
6aa6a2e119 | ||
|
|
91fac6972c | ||
|
|
9fd754f3bb | ||
|
|
a922f90046 | ||
|
|
0c206c3835 | ||
|
|
bdf6d38f5d | ||
|
|
cf0a74a9d3 | ||
|
|
2d0c19271b | ||
|
|
3858f54fc5 | ||
|
|
d58b9a211f | ||
|
|
ffde727d68 | ||
|
|
6c3b9aafc1 | ||
|
|
872755e57f | ||
|
|
07c20af53b | ||
|
|
0a4a7863f1 | ||
|
|
a5738acc85 | ||
|
|
fb308b560b | ||
|
|
6639356f88 | ||
|
|
f45e0c9c4b | ||
|
|
7648563b00 | ||
|
|
32ac719663 | ||
|
|
f07ece9dd6 | ||
|
|
4b703f2790 | ||
|
|
0e350c28c7 | ||
|
|
50387cdbf5 | ||
|
|
49fcfa61f2 | ||
|
|
cd053d6a87 | ||
|
|
74ed82f592 | ||
|
|
10f23db843 | ||
|
|
89ec5861b5 | ||
|
|
ab614e4545 | ||
|
|
6559b3ba1b | ||
|
|
b70debeffa | ||
|
|
2a386e9c8b | ||
|
|
cf3f40b578 | ||
|
|
a18500dd9b | ||
|
|
3998d10bba | ||
|
|
1372874ab4 | ||
|
|
cbce448f35 | ||
|
|
b715918998 | ||
|
|
b4605958ad | ||
|
|
40a20a55d3 | ||
|
|
835e5ccc2b | ||
|
|
85fdbbd0ba | ||
|
|
6173e6c0f4 | ||
|
|
22d28f88c9 | ||
|
|
8d759ddd0a | ||
|
|
393078fb5f | ||
|
|
3d2ce8bf49 | ||
|
|
a653cedb16 | ||
|
|
f3538fbcb7 | ||
|
|
4b44f378ee | ||
|
|
5efba2aa10 | ||
|
|
ce43221767 | ||
|
|
69654fa96d | ||
|
|
16d0509262 | ||
|
|
e1a4ed67f4 | ||
|
|
5abe949006 | ||
|
|
bbb9a01130 | ||
|
|
5c589f0b39 | ||
|
|
dd37ea1295 | ||
|
|
7535f8b34c | ||
|
|
3dcf76467e | ||
|
|
dd8c1f3ec8 | ||
|
|
327ef6a39b | ||
|
|
742b70a5f0 | ||
|
|
fbf0610ff7 | ||
|
|
a06c15f469 | ||
|
|
ef96c7d074 | ||
|
|
a437675781 | ||
|
|
af0b10db40 | ||
|
|
60b5b0bf8d | ||
|
|
88237d369d | ||
|
|
3433810ed0 | ||
|
|
863a67516e | ||
|
|
531b04b2ff | ||
|
|
603f93025f | ||
|
|
51d4c4cdc9 | ||
|
|
f69a2be045 | ||
|
|
07b49dca49 | ||
|
|
f7ea1e3b99 | ||
|
|
8ecb42206f | ||
|
|
057f89ce01 | ||
|
|
dc8472323d | ||
|
|
974747b297 | ||
|
|
6a8cc2a505 | ||
|
|
4bcdbde5bc | ||
|
|
8f2770be95 | ||
|
|
7933336c25 | ||
|
|
5e1267bc64 | ||
|
|
dc835b86e9 | ||
|
|
ca49fc368a | ||
|
|
0475359eff | ||
|
|
119228c0b4 | ||
|
|
f06adcb15d | ||
|
|
1ed27c4c94 | ||
|
|
d57880510c | ||
|
|
c24b9cc0d0 | ||
|
|
2747f10901 | ||
|
|
20202ee75e | ||
|
|
58a43f5534 | ||
|
|
c186f05dd3 | ||
|
|
f2182c195b | ||
|
|
066c6bd1cd | ||
|
|
690df52019 | ||
|
|
533ba87ef4 | ||
|
|
b8581e3cec | ||
|
|
d7a7751480 | ||
|
|
e816f7126d | ||
|
|
6315dff17b | ||
|
|
826d9fcf6a | ||
|
|
4e642fe3d3 | ||
|
|
2012bbdbc1 | ||
|
|
96e14fd6fc | ||
|
|
1449d31e34 | ||
|
|
a3a2a62819 | ||
|
|
c59019f5f7 | ||
|
|
6bf09ff6da | ||
|
|
3a76d7df3a | ||
|
|
1d516f08b3 | ||
|
|
656245ce6a | ||
|
|
91d26db055 | ||
|
|
a354d60b77 | ||
|
|
3112ac7f9a | ||
|
|
5351496d6e | ||
|
|
794f766db8 | ||
|
|
3fb5423fda | ||
|
|
260cee9b38 | ||
|
|
c4a6735d60 | ||
|
|
28ad1b6c9d | ||
|
|
f609e2b628 | ||
|
|
3ef363a01e | ||
|
|
9e68bc90c2 | ||
|
|
4a36ac6a04 | ||
|
|
d2590607c2 | ||
|
|
2bce6e4f02 | ||
|
|
53e95bfadf | ||
|
|
6450629d70 | ||
|
|
8261b85b86 | ||
|
|
1c985e227f | ||
|
|
4efb380a61 | ||
|
|
e64812da72 | ||
|
|
14bbcd0617 | ||
|
|
ca4888ecae | ||
|
|
e3251b352f | ||
|
|
a532e73b52 | ||
|
|
b11aa4e633 | ||
|
|
1c66cf83bf | ||
|
|
4cbe3354e1 | ||
|
|
1ae7ba6bbb | ||
|
|
8d28478b10 | ||
|
|
c1fb8c619f | ||
|
|
eb250f91cb | ||
|
|
4ea2b963fa | ||
|
|
372b4bbb3f | ||
|
|
7577b1a958 | ||
|
|
7590c0241a | ||
|
|
68b00733e3 | ||
|
|
0cf1c48f2a | ||
|
|
8dbaa4c175 | ||
|
|
9085ed7ab0 | ||
|
|
26c3fea611 | ||
|
|
6008cc3831 | ||
|
|
f9d71a741f | ||
|
|
6affe95aea | ||
|
|
e83fe7f8ff | ||
|
|
4926577eeb | ||
|
|
584a9ba06c | ||
|
|
c8f5f671a9 | ||
|
|
cc852e5aad | ||
|
|
1bb37ede87 | ||
|
|
8eaee091ea | ||
|
|
90340c5be8 | ||
|
|
34258475f5 | ||
|
|
445c7a0472 | ||
|
|
541710ba1e | ||
|
|
27b6caf77d | ||
|
|
460c131c1e | ||
|
|
6aff22ae35 | ||
|
|
355021ba2d | ||
|
|
946fbc0933 | ||
|
|
7bebc7da8d | ||
|
|
cd33ac3c3e | ||
|
|
32f98ac079 | ||
|
|
fad54d4627 | ||
|
|
8ac6daff95 | ||
|
|
342f20a5a6 | ||
|
|
b02bf2e596 | ||
|
|
3961ff5185 | ||
|
|
90c696776c | ||
|
|
d697d42c4e | ||
|
|
b52604cb1d | ||
|
|
ee1639bbef | ||
|
|
59b09fa084 | ||
|
|
2d1a001c0f | ||
|
|
cb6d78eccb | ||
|
|
65949cccfa | ||
|
|
2d2c4d8ae4 | ||
|
|
a22005cf8c | ||
|
|
d5c88f2bc0 | ||
|
|
a7b816dd05 | ||
|
|
c84924c23c | ||
|
|
faa37756dc | ||
|
|
61ed7b167a | ||
|
|
cd6347a23a | ||
|
|
6cc37dedd2 | ||
|
|
1496fbe0b7 | ||
|
|
738758d753 | ||
|
|
7cd40fca03 | ||
|
|
266da98a73 | ||
|
|
2a17d357a1 | ||
|
|
b081e3e011 | ||
|
|
09f885ee68 | ||
|
|
d1568a3b2c | ||
|
|
f913a86dae | ||
|
|
5c56b5aacf | ||
|
|
096b87d4e3 | ||
|
|
6e3d3584a1 | ||
|
|
b0e7221950 | ||
|
|
92458fb1b3 | ||
|
|
80541abe9f | ||
|
|
d7851e5ec9 | ||
|
|
16a50d6271 | ||
|
|
72a58827bf | ||
|
|
85b806283e | ||
|
|
15037edbde | ||
|
|
17c83f8db9 | ||
|
|
e7dcc84afc | ||
|
|
8eaa940d4e | ||
|
|
9997675b1d | ||
|
|
9ef566f11f | ||
|
|
e3c3afe809 | ||
|
|
5b14ca6b12 | ||
|
|
c4676fecda | ||
|
|
a2872ef5b7 | ||
|
|
dea12f0e5e | ||
|
|
a518a6e67d | ||
|
|
325f2c28f7 | ||
|
|
dc470402e7 | ||
|
|
a029322aae | ||
|
|
e4a9953af4 | ||
|
|
57dc70f1bc | ||
|
|
dd83874d83 | ||
|
|
1ef2b7398e | ||
|
|
a89696afbb | ||
|
|
1ac03ba6e5 | ||
|
|
7e4068a244 | ||
|
|
c31a867bde | ||
|
|
f1252fa4e2 | ||
|
|
dd52766449 | ||
|
|
8f3c778b80 | ||
|
|
9aa1b25a56 | ||
|
|
b4d7acb827 | ||
|
|
b306601c72 | ||
|
|
5310c2e7f6 | ||
|
|
859f49eb10 | ||
|
|
ccfb73c19b | ||
|
|
b35c40c5a6 | ||
|
|
288107c8bc | ||
|
|
f9b56c7de2 | ||
|
|
b48734ebfa | ||
|
|
1aa944c3e1 | ||
|
|
0399b73c73 | ||
|
|
bcbd69e1b9 | ||
|
|
14fc85db51 | ||
|
|
0c50c49555 | ||
|
|
d37c254812 | ||
|
|
9d3e83e1ba | ||
|
|
2df98c614d | ||
|
|
ef7655101f | ||
|
|
b1f33e84b9 | ||
|
|
be27328404 | ||
|
|
f33a3989ea | ||
|
|
174cef80c0 | ||
|
|
b2dc9dc113 | ||
|
|
7e161684e9 | ||
|
|
a25654a1c2 | ||
|
|
8f1fb5df6c | ||
|
|
e9393a2e8e | ||
|
|
91a4989ef3 | ||
|
|
bbc70469e5 | ||
|
|
eb4ad1af46 | ||
|
|
0a42d7381c | ||
|
|
0165cfb3ac | ||
|
|
f44d45c992 | ||
|
|
38037978a2 | ||
|
|
e909a6927b | ||
|
|
85574ed40c | ||
|
|
7e9181d935 | ||
|
|
87b3f3ed27 | ||
|
|
9ac3763bdd | ||
|
|
5b4567b9ff | ||
|
|
201080e6ff | ||
|
|
5d1d7da498 | ||
|
|
c6f831aa38 | ||
|
|
fad7af19a7 | ||
|
|
4327f9529a | ||
|
|
d100030da6 | ||
|
|
3632d2c3ef | ||
|
|
a430a1dc0c | ||
|
|
739660e6ca | ||
|
|
1a18dc23b9 | ||
|
|
55f37f856b | ||
|
|
c1df8d2ed3 | ||
|
|
6c92b2dd2e | ||
|
|
3e35dec9fa | ||
|
|
187db3d011 | ||
|
|
0116e86fcc | ||
|
|
aaa3f1aa88 | ||
|
|
84f54b4b8a | ||
|
|
8c7ec533bf | ||
|
|
9de1f95360 | ||
|
|
cdefb96a8c | ||
|
|
e25b6c9232 | ||
|
|
eae58b59c9 | ||
|
|
4afedd5c88 | ||
|
|
6e5cc7fc6c | ||
|
|
1b6c2152d3 | ||
|
|
1fc022bc60 | ||
|
|
858777606b | ||
|
|
b4fe75af95 | ||
|
|
e8d94fd116 | ||
|
|
d6ab066152 | ||
|
|
54b7cb2c88 | ||
|
|
90b2623b9d | ||
|
|
8782836d7b | ||
|
|
e3aa26a41a | ||
|
|
54b1fb739f | ||
|
|
9983b719d6 | ||
|
|
c70df7102b | ||
|
|
f335b6837b | ||
|
|
19892a00f4 | ||
|
|
c6d753080a | ||
|
|
28547b32a0 | ||
|
|
8aae688fb0 | ||
|
|
38a688f918 | ||
|
|
6f9cb12dd8 | ||
|
|
5c20d6c3f6 | ||
|
|
a09511defb | ||
|
|
189db2a051 | ||
|
|
8f9d695ca6 | ||
|
|
cfc897055b | ||
|
|
f74a7b31c3 | ||
|
|
1860e1dc43 | ||
|
|
c5e6225e7f | ||
|
|
8e985ed413 | ||
|
|
392c627925 | ||
|
|
cd9a4887fd | ||
|
|
22f856668f | ||
|
|
0f926fc701 | ||
|
|
4ab5202ef2 | ||
|
|
26c316a47a | ||
|
|
b25c2547b2 | ||
|
|
64b041ea05 | ||
|
|
0ddc8588f8 | ||
|
|
b4e274682a | ||
|
|
76ce203272 | ||
|
|
7116efd65d | ||
|
|
a9b2dcb49e | ||
|
|
e804b6afb2 | ||
|
|
772d37131d | ||
|
|
ec30c46d7e | ||
|
|
b5705e6ec3 | ||
|
|
4e0479262f | ||
|
|
9a8088495e | ||
|
|
983c5eb544 | ||
|
|
58fdbc4054 | ||
|
|
3673632089 | ||
|
|
87e61c8920 | ||
|
|
d67e7a3b4d | ||
|
|
954995b3ef | ||
|
|
f591849b8d | ||
|
|
4c44b751e3 | ||
|
|
648ad23dcf | ||
|
|
c46c8a010f | ||
|
|
832536f403 | ||
|
|
f0067a1c04 | ||
|
|
f732a4b545 | ||
|
|
38cf897ae1 | ||
|
|
8ca365da7b | ||
|
|
cbe8b4012b | ||
|
|
522f5c8a86 | ||
|
|
ac5d2268e5 | ||
|
|
3d0effb912 | ||
|
|
90b970115a | ||
|
|
0f5ba4ef5b | ||
|
|
bd428fa352 | ||
|
|
00b57b2ff9 | ||
|
|
bd69e3dcc3 | ||
|
|
275d492f39 | ||
|
|
f55f302306 | ||
|
|
650225ad00 | ||
|
|
631f5ed99c | ||
|
|
b9664dc710 | ||
|
|
bd66871b0e | ||
|
|
dccc880ef5 | ||
|
|
0ccad9df90 | ||
|
|
c75fbc5f00 | ||
|
|
e257bed6de | ||
|
|
e56a550cff | ||
|
|
3d1ced386f | ||
|
|
eb90b33485 | ||
|
|
215a7501a6 | ||
|
|
9f228b6235 | ||
|
|
72e6132895 | ||
|
|
fbe520d381 | ||
|
|
108f47c90d | ||
|
|
c65c34469a | ||
|
|
b21845440a | ||
|
|
4ce642629c | ||
|
|
68262d8abb | ||
|
|
093002db14 | ||
|
|
b85f7915f4 | ||
|
|
e70315354e | ||
|
|
0867a234c2 | ||
|
|
4e962bba09 | ||
|
|
279b0cd0c5 | ||
|
|
3dc3dc8cbe | ||
|
|
38131f26be | ||
|
|
0e38412510 | ||
|
|
848279404f | ||
|
|
6e77c8b8fc | ||
|
|
33438263ab | ||
|
|
bbe4e6d7ed | ||
|
|
69387b6444 | ||
|
|
bf7ffda252 | ||
|
|
10c2f222e1 | ||
|
|
b0a0bfa4ac | ||
|
|
b573130ab7 | ||
|
|
cd5468f55c | ||
|
|
83407e0c8d | ||
|
|
e1466fe160 | ||
|
|
94a6a26b48 | ||
|
|
f205c82d90 | ||
|
|
f9e61e7ea0 | ||
|
|
9462d32f83 | ||
|
|
da8203e64d | ||
|
|
83ebd55a15 | ||
|
|
0c3e9eb716 | ||
|
|
bc72a8f083 | ||
|
|
14a68d5806 | ||
|
|
86dc78b63a | ||
|
|
5dd0a758d4 | ||
|
|
e959b1edc2 | ||
|
|
7533f6239c | ||
|
|
71636a4ce6 | ||
|
|
72e4cf3d10 | ||
|
|
a8c849a305 | ||
|
|
ce0a941e2d | ||
|
|
af899b3ca8 | ||
|
|
742234c757 | ||
|
|
15b8140690 | ||
|
|
89cd881397 | ||
|
|
75fd905829 | ||
|
|
5d77e227e9 | ||
|
|
1da46f1615 | ||
|
|
09bcf05b04 | ||
|
|
5c590f4ad8 | ||
|
|
1feb66dc86 | ||
|
|
e83ebc2581 | ||
|
|
c97889f249 | ||
|
|
5f1a8b406a | ||
|
|
3781d43fa8 | ||
|
|
d950315e5a | ||
|
|
fae10ae979 | ||
|
|
c1cc453761 | ||
|
|
52aad2db2a | ||
|
|
777d2dae40 | ||
|
|
6c2388633c | ||
|
|
9ade8f69fd | ||
|
|
aded799b81 | ||
|
|
34bcd946e9 | ||
|
|
791db54746 | ||
|
|
5c2d9dddb0 | ||
|
|
b4d5fbcb61 | ||
|
|
7a9ea55100 | ||
|
|
b6eaf30829 | ||
|
|
ee778e6a09 | ||
|
|
df5c4cefeb | ||
|
|
de8c0b6d09 | ||
|
|
86dcf290a6 | ||
|
|
cd9bfba7c6 | ||
|
|
aa5b8740fd | ||
|
|
869a31abf0 | ||
|
|
f8fa10389a | ||
|
|
553efb890e | ||
|
|
4b276370dc | ||
|
|
2d739a956d | ||
|
|
66dbc0366c | ||
|
|
553ee02387 | ||
|
|
8e5c65f03b | ||
|
|
2bb8f969dc | ||
|
|
e46f5ea1bf | ||
|
|
6549c5d1a0 | ||
|
|
1710dc9c72 | ||
|
|
1e963ee1d8 | ||
|
|
a133dfc722 | ||
|
|
42c3c6ff46 | ||
|
|
a62cd40fc0 | ||
|
|
b0dcf14d96 | ||
|
|
780169962d | ||
|
|
99d6c8c879 | ||
|
|
ed6d19e8ab | ||
|
|
c02581978d | ||
|
|
1feb732ebc | ||
|
|
1029acab75 | ||
|
|
db00b65e3c | ||
|
|
10533dcba2 | ||
|
|
773ae2bfe3 | ||
|
|
fd4d10e6e7 | ||
|
|
14e267b4b0 | ||
|
|
60d04b1bdf | ||
|
|
bebe535d94 | ||
|
|
d7d084b57a | ||
|
|
265200b5bc | ||
|
|
3b60d9ba77 | ||
|
|
3baf761b3b | ||
|
|
6623e5cb2d | ||
|
|
13f5cb1539 | ||
|
|
6e19722742 | ||
|
|
d083dc36b2 | ||
|
|
8eb2380542 | ||
|
|
aac7391d28 | ||
|
|
691ac56723 | ||
|
|
009e310a75 | ||
|
|
90cb9d58a4 | ||
|
|
7501570cea | ||
|
|
c5486f3e77 | ||
|
|
dbf376d400 | ||
|
|
2da6108d19 | ||
|
|
4f3c2e8adc | ||
|
|
ea9a0130db | ||
|
|
ff0fd9e20f | ||
|
|
ad868f1df3 | ||
|
|
7104d983cd | ||
|
|
ff9db8ff5a | ||
|
|
231df0b15b | ||
|
|
f978e528de | ||
|
|
cc73c7c0b6 | ||
|
|
15701a4a90 | ||
|
|
f8d6204f0c | ||
|
|
c3ceef836a | ||
|
|
de44c416f6 | ||
|
|
25d2824478 | ||
|
|
62872b34c2 | ||
|
|
ddbe6f4683 | ||
|
|
d3922804eb | ||
|
|
ce8fdb1595 | ||
|
|
b000ee7745 | ||
|
|
69a7ef2318 | ||
|
|
d6e09a6738 | ||
|
|
9d642bf941 | ||
|
|
1f4d543fe1 | ||
|
|
93363ec2e3 | ||
|
|
a5ec1c886a | ||
|
|
cb4d467f8e | ||
|
|
3c9add272a | ||
|
|
73a3cacfbd | ||
|
|
6149a12180 | ||
|
|
790ef81101 | ||
|
|
5cc57110c1 | ||
|
|
d54adf7ca9 | ||
|
|
195a590de3 | ||
|
|
5f8056fad6 | ||
|
|
87bfa7f0f3 | ||
|
|
dc645ff08f | ||
|
|
c72e0d5ea3 | ||
|
|
97261e2ee9 | ||
|
|
3cbc018f25 | ||
|
|
e0c908d88f | ||
|
|
562c69307e | ||
|
|
9a6b5d8e66 | ||
|
|
8f1845b334 | ||
|
|
5703db8c2b | ||
|
|
42b59f0471 | ||
|
|
76b8f8743d | ||
|
|
a3779ff1e1 | ||
|
|
f93739c0e0 | ||
|
|
1d6bd5acf6 | ||
|
|
592903f3f8 | ||
|
|
c17f905ed2 | ||
|
|
44e1bb10c3 | ||
|
|
77248ad4d8 | ||
|
|
f25f5008f1 | ||
|
|
666da255b8 | ||
|
|
60f9d4b3a3 | ||
|
|
115c6dd178 | ||
|
|
a1142100ab | ||
|
|
6b2ebe2f0e | ||
|
|
0ec8c74015 | ||
|
|
8baa24a539 | ||
|
|
6141a6b467 | ||
|
|
02f8dd928a | ||
|
|
31baa7fa85 | ||
|
|
207758482f | ||
|
|
0293e3a40a | ||
|
|
5445be2056 | ||
|
|
ce5ad89d5e | ||
|
|
83e8cfc2cc | ||
|
|
44d9818e97 | ||
|
|
ce4bece9ed | ||
|
|
18e2323cf4 | ||
|
|
8ebd6df41a | ||
|
|
c30dd01377 | ||
|
|
e84dc0120f | ||
|
|
47ea0cd282 | ||
|
|
e928b19b47 | ||
|
|
3f42024ffd | ||
|
|
0d1c168cbe | ||
|
|
3e32904c4b | ||
|
|
1c4697c2eb | ||
|
|
0cb73199b8 | ||
|
|
8cc406260d | ||
|
|
9a6f9f0a5e | ||
|
|
ee9483a291 | ||
|
|
c8d2050c7a | ||
|
|
ef5dd47604 | ||
|
|
f7a123c10b | ||
|
|
34fb3d9cd9 | ||
|
|
d712d53020 | ||
|
|
ac6b2ef4b4 | ||
|
|
9fd1f620d3 | ||
|
|
6de1a523bc | ||
|
|
37bface3a7 | ||
|
|
3e0a8618fd | ||
|
|
5d15141ae9 | ||
|
|
908863c076 | ||
|
|
628530dcff | ||
|
|
ff36369e57 | ||
|
|
366cba2102 | ||
|
|
39ea45eb51 | ||
|
|
07a1a3b469 | ||
|
|
b888be9dad | ||
|
|
c2ed6b8b08 | ||
|
|
90de11f4c9 | ||
|
|
083f26f3c4 | ||
|
|
4283d94edc | ||
|
|
46dece1b50 | ||
|
|
15e1ba7c05 | ||
|
|
9ea1b15753 | ||
|
|
07e186bc5f | ||
|
|
1bb5525c84 | ||
|
|
b0f47d70f1 | ||
|
|
8e4ee05bc1 | ||
|
|
51b04b68de | ||
|
|
6ec86fba1c | ||
|
|
e14a4382e5 | ||
|
|
a7ef197510 | ||
|
|
12f75688ff | ||
|
|
a1fd1acb86 | ||
|
|
d521bcede7 | ||
|
|
46eaa35718 | ||
|
|
2d905f9862 | ||
|
|
6ab2f99182 | ||
|
|
324b2f524c | ||
|
|
64973e46dd | ||
|
|
1980ef8e33 | ||
|
|
3852f644b8 | ||
|
|
dc780bd5fe | ||
|
|
11057154a7 | ||
|
|
215796bcaf | ||
|
|
cc70cb44ab | ||
|
|
b9833c49d1 | ||
|
|
685461b70f | ||
|
|
227b0a08ed | ||
|
|
2c45d38a66 | ||
|
|
c2364e3508 | ||
|
|
5aea034a17 | ||
|
|
73aa2bd158 | ||
|
|
79b3e6882a | ||
|
|
8208a3c3e3 | ||
|
|
71e52e0b65 | ||
|
|
79919802c9 | ||
|
|
5ac4fcc4fc | ||
|
|
902b22afac | ||
|
|
f33c293b1d | ||
|
|
86ae97e63c | ||
|
|
116aa5a508 | ||
|
|
9b4bdc8e33 | ||
|
|
5cc2d74128 | ||
|
|
22938a9d90 | ||
|
|
38020740d8 | ||
|
|
1e5ad5ad09 | ||
|
|
9382ad5809 | ||
|
|
8357180b78 | ||
|
|
0e0ee29cb6 | ||
|
|
c347ee1974 | ||
|
|
a0bc9c996d | ||
|
|
0ff098c2dd | ||
|
|
bf651ecad2 | ||
|
|
b516b704bb | ||
|
|
7a051d2587 | ||
|
|
d9dbedfded | ||
|
|
1f0590eff5 | ||
|
|
3b0b0e1cd5 | ||
|
|
9280cc841c | ||
|
|
57591444a9 | ||
|
|
704307c062 | ||
|
|
4bde1ba9f3 | ||
|
|
4524de492d | ||
|
|
1998d80162 | ||
|
|
8fb8e6f75e | ||
|
|
2455b14cc0 | ||
|
|
ef3e94edd3 | ||
|
|
cf06d79e8d | ||
|
|
b1ad327d16 | ||
|
|
223eaf7ee8 | ||
|
|
b7ed51ed49 | ||
|
|
7805c4eee6 | ||
|
|
5176d9a97d | ||
|
|
225199f264 | ||
|
|
70703e6952 | ||
|
|
c9ff23f243 | ||
|
|
127cbf1509 | ||
|
|
3de14c7c4c | ||
|
|
41ec5f262f | ||
|
|
773d772f8e | ||
|
|
8f700af029 | ||
|
|
0360bd168c | ||
|
|
8f438f95d0 | ||
|
|
0b825f58cf | ||
|
|
5893d853aa | ||
|
|
cf7a4a82f3 | ||
|
|
3c7bee32f8 | ||
|
|
6b9157f1d4 | ||
|
|
e229b207c1 | ||
|
|
6af3c1d523 | ||
|
|
51f24748a9 | ||
|
|
3a44782b05 | ||
|
|
8d41dead5d | ||
|
|
c611e98cf7 | ||
|
|
b98df58c76 | ||
|
|
feee4b2022 | ||
|
|
0dc061611f | ||
|
|
27aa1c1973 | ||
|
|
c1bf3a773f | ||
|
|
57ba12834a | ||
|
|
16f2c9fb42 | ||
|
|
b8c28e0a89 | ||
|
|
5e2f722e1c | ||
|
|
df67c0540c | ||
|
|
f26fb3cdf8 | ||
|
|
083dcb3647 | ||
|
|
a01fa3bc54 | ||
|
|
a53a69d374 | ||
|
|
98e0a48226 | ||
|
|
2c8e33b643 | ||
|
|
224a9e5cd8 | ||
|
|
4de249efa0 | ||
|
|
cbe341ff2c | ||
|
|
a4595a6592 | ||
|
|
b1c458bdc4 | ||
|
|
3fd747febf | ||
|
|
598f12a90a | ||
|
|
bd88cbfe64 | ||
|
|
5a2c21f956 | ||
|
|
09d28eff90 | ||
|
|
d540cd0a77 | ||
|
|
4e5caa7b8b | ||
|
|
968655c9cd | ||
|
|
1470793b52 | ||
|
|
e99832e2f0 | ||
|
|
327f85fdcc | ||
|
|
3b57965f8b | ||
|
|
baf697a134 | ||
|
|
8c900e5ca0 | ||
|
|
e6c37c0d1e | ||
|
|
b116741e25 | ||
|
|
0087d5784b | ||
|
|
8f95d4b279 | ||
|
|
baba2d34dd | ||
|
|
42e8f8f610 | ||
|
|
b739bfa01e | ||
|
|
a68b9643fc | ||
|
|
8d87c9bb19 | ||
|
|
287dd241e7 | ||
|
|
287dfded0e | ||
|
|
db5892b983 | ||
|
|
7c7caf98c1 | ||
|
|
869dd8d5a8 | ||
|
|
e5a4074c03 | ||
|
|
0ee8913199 | ||
|
|
ef94478db8 | ||
|
|
bb65e2c5c1 | ||
|
|
6cd5cb7ed0 | ||
|
|
3c0bb7ca41 | ||
|
|
48d5c2c772 | ||
|
|
9e7b8bb6b2 | ||
|
|
553e0fdbe3 | ||
|
|
38bef005f7 | ||
|
|
1bc468095c | ||
|
|
23089d2288 | ||
|
|
0fe8b3f671 | ||
|
|
61c1221b5e | ||
|
|
7fe04eee5a | ||
|
|
744c24b032 | ||
|
|
00d3105aad | ||
|
|
42bb937e68 | ||
|
|
86e58437aa | ||
|
|
89a6769385 | ||
|
|
d7989ab34d | ||
|
|
d291d38b38 | ||
|
|
6722de4173 | ||
|
|
c63085be15 | ||
|
|
5a1003ad71 | ||
|
|
29c7e3696a | ||
|
|
28c3ebb5f9 | ||
|
|
573d313cc8 | ||
|
|
33c7b4c440 | ||
|
|
4abf43e0ca | ||
|
|
12529b2c41 | ||
|
|
144b0c651c | ||
|
|
a4f7514220 | ||
|
|
22edba6c43 | ||
|
|
987450d880 | ||
|
|
107263d061 | ||
|
|
f667eb1500 | ||
|
|
50d7fa684f | ||
|
|
09ae205e37 | ||
|
|
68aeafaa0b | ||
|
|
cb1ac4541b | ||
|
|
073759612a | ||
|
|
2ea726518e | ||
|
|
7e5a1d385c | ||
|
|
1a9168e824 | ||
|
|
3c247e2156 | ||
|
|
6e80561f32 | ||
|
|
fb752f6ade | ||
|
|
497f848b70 | ||
|
|
8ce33b10a3 | ||
|
|
e77d40c4c2 | ||
|
|
323cf47417 | ||
|
|
026d72d68a | ||
|
|
617ca22f2d | ||
|
|
46acfe9470 | ||
|
|
5df66ede36 | ||
|
|
9b4d512429 | ||
|
|
c48b0c17ba | ||
|
|
969306822f | ||
|
|
01d3e6c03d | ||
|
|
61da4e56c1 | ||
|
|
614cd1c96f | ||
|
|
53a3767829 | ||
|
|
5eec7f9bbc | ||
|
|
6f722f9ead | ||
|
|
4c3cc8547c | ||
|
|
2ff74a2b68 | ||
|
|
793ee2acbe | ||
|
|
7abcbcda15 | ||
|
|
674f3b95c5 | ||
|
|
42eb107ecb | ||
|
|
107f28ca93 | ||
|
|
b180fa901d | ||
|
|
72682a3dd1 | ||
|
|
549114ae1f | ||
|
|
ead0e14350 | ||
|
|
1a69ee2b2c | ||
|
|
fe32958d59 | ||
|
|
a0215586f2 | ||
|
|
d18f795202 | ||
|
|
125d33d6b7 | ||
|
|
378d2e043f | ||
|
|
1d4a2c5863 | ||
|
|
109d6300ab | ||
|
|
9483035056 | ||
|
|
f69de0db21 | ||
|
|
2fa5c1a67c | ||
|
|
cbe47aea1b | ||
|
|
f40c9199fc | ||
|
|
890ecf5846 | ||
|
|
23d4136096 | ||
|
|
97d5f68072 | ||
|
|
53cebd7d2f | ||
|
|
21d06c00aa | ||
|
|
95487bba48 | ||
|
|
a544f4349f | ||
|
|
22b57f39ef | ||
|
|
4fdcc0221d | ||
|
|
2a78622529 | ||
|
|
21d21f4261 | ||
|
|
7dd519565b | ||
|
|
2e06b28e5a | ||
|
|
85409263c8 | ||
|
|
91b5a1e44a | ||
|
|
08373b76a2 | ||
|
|
3386d2f637 | ||
|
|
c047d23c69 | ||
|
|
31ec481d46 | ||
|
|
6a1cb8c597 | ||
|
|
653d1460a3 | ||
|
|
ff5ab5ab1d | ||
|
|
af2eee17fe | ||
|
|
ae02bbcce7 | ||
|
|
7d3ec1368f | ||
|
|
3267595bc5 | ||
|
|
750788d300 | ||
|
|
ff528cbbaf | ||
|
|
210f77c46e | ||
|
|
d77ee9b638 | ||
|
|
2a5e73a48a | ||
|
|
b3fb20df58 | ||
|
|
1d7bf20f96 | ||
|
|
08ecd47cf0 | ||
|
|
c14fcf29e8 | ||
|
|
e7b526455c | ||
|
|
5c2b4f03f3 | ||
|
|
832750ec57 | ||
|
|
8149df1e34 | ||
|
|
3b60a5d3c4 | ||
|
|
14e074a64f | ||
|
|
b04f1643c9 | ||
|
|
14904a2958 | ||
|
|
d43ea9bedd | ||
|
|
d397cdf0f6 | ||
|
|
93104a21f3 | ||
|
|
d3f36f9b71 | ||
|
|
fdb46534ab | ||
|
|
ee2f6e9c13 | ||
|
|
cc9706c413 | ||
|
|
13d3db0516 | ||
|
|
2ee0ad157d | ||
|
|
2dbbf052d2 | ||
|
|
453f5681dd | ||
|
|
afeaf01fdb | ||
|
|
bbfe5c2ab0 | ||
|
|
c8422421ab | ||
|
|
477ec440bc | ||
|
|
ef40f299ef | ||
|
|
fe2a076558 | ||
|
|
b32eb07d1e | ||
|
|
723150b755 | ||
|
|
d398f903f8 | ||
|
|
44142be28e | ||
|
|
5de5a77902 | ||
|
|
5d1b39ca49 | ||
|
|
d2cce02669 | ||
|
|
05b5a33eee | ||
|
|
8f1884349a | ||
|
|
8ece1a3454 | ||
|
|
3f2cf23f47 | ||
|
|
9268ca51da | ||
|
|
5da29ba148 | ||
|
|
0c64b506c2 | ||
|
|
da5fc417c5 | ||
|
|
186df66e81 | ||
|
|
f52865ce98 | ||
|
|
9ad8d70cf7 | ||
|
|
2765e1c923 | ||
|
|
44e0067e34 | ||
|
|
066e62c0aa | ||
|
|
1a0e84e6d7 | ||
|
|
03510ee1e7 | ||
|
|
cc1b61e522 | ||
|
|
af61d13bb3 | ||
|
|
3038e9309d | ||
|
|
668206af1c | ||
|
|
a0a4e52fca | ||
|
|
3064a13450 | ||
|
|
df1221ba74 | ||
|
|
71ce5c4dcb | ||
|
|
e6e0a4bd7d | ||
|
|
bda3cac24b | ||
|
|
d7522d0dc1 | ||
|
|
ae3688577d | ||
|
|
11077b1042 | ||
|
|
396db36829 | ||
|
|
f8f09a3654 | ||
|
|
7eb6f42bee | ||
|
|
447efc2174 | ||
|
|
b809a577ff | ||
|
|
9d63453130 | ||
|
|
8dd55ae036 | ||
|
|
6250f2ab28 | ||
|
|
59583d48d7 | ||
|
|
b8daf9882b | ||
|
|
587f2754d4 | ||
|
|
b247af7af6 | ||
|
|
15facbc291 | ||
|
|
e919ddb83c | ||
|
|
9dd7d96266 | ||
|
|
7191a9273c | ||
|
|
3aefbf71a9 | ||
|
|
e5d544e583 | ||
|
|
d5a845c3e1 | ||
|
|
cbe1248e0c | ||
|
|
fec23b56eb | ||
|
|
8f3e6d8c77 | ||
|
|
1649e5115d | ||
|
|
509904b7a5 | ||
|
|
8d51b76ca2 | ||
|
|
f5c833882d | ||
|
|
9989e76ef7 | ||
|
|
53e6c69b54 | ||
|
|
9bf7b0184b | ||
|
|
ccec652adc | ||
|
|
23a5ce6874 | ||
|
|
8027d4922b | ||
|
|
6dcafc3129 | ||
|
|
c99935bf2e | ||
|
|
90d5ced632 | ||
|
|
11c9edaf98 | ||
|
|
2ac53142b5 | ||
|
|
95a0b1d77e | ||
|
|
694a68c7f8 | ||
|
|
56b26822a2 | ||
|
|
075904616a | ||
|
|
8e0d3ec4d0 | ||
|
|
ef092bfefb | ||
|
|
b16dce7343 | ||
|
|
cda257a971 | ||
|
|
89dc1c45d7 | ||
|
|
c43cdcd5de | ||
|
|
32d56503fc | ||
|
|
157a04ef76 | ||
|
|
679bf22b74 | ||
|
|
cb97c00611 | ||
|
|
b36262b167 | ||
|
|
54c9279734 | ||
|
|
ee6b45894f | ||
|
|
112adf47be | ||
|
|
ac98f51356 | ||
|
|
139f5cf7b3 | ||
|
|
4dbb58af64 | ||
|
|
8167d7b6ae | ||
|
|
f2aefb1d39 | ||
|
|
167e76897f | ||
|
|
b47f21feaf | ||
|
|
9e2f7981fb | ||
|
|
cf78a30d89 | ||
|
|
61fa82a4fe | ||
|
|
e5347e6ee3 | ||
|
|
1396f960b0 | ||
|
|
6221ee164f | ||
|
|
309d18bebc | ||
|
|
ec22926189 | ||
|
|
084c6d24e2 | ||
|
|
de96aad086 | ||
|
|
f6eae2274f | ||
|
|
c9ee477c08 | ||
|
|
18aef77c4a | ||
|
|
9a78eac0ff | ||
|
|
74f20c2a5d | ||
|
|
9106d1f39b | ||
|
|
1c56fe0f1a | ||
|
|
3dd4e06fbe | ||
|
|
d21e696892 | ||
|
|
a1556212bc | ||
|
|
0eab965933 | ||
|
|
0c82f97880 | ||
|
|
4e6b9dbdb4 | ||
|
|
1ba9526e0b | ||
|
|
568ff4b366 | ||
|
|
16a82a28ae | ||
|
|
2d56f33b60 | ||
|
|
8db39d2e6b | ||
|
|
cd31768b5e | ||
|
|
077ce1b0a7 | ||
|
|
c990aa410e | ||
|
|
6a1848e814 | ||
|
|
ff8c876274 | ||
|
|
2126a4067b | ||
|
|
a9e58df64d | ||
|
|
e038620878 | ||
|
|
4468e5fa06 | ||
|
|
59922480fa | ||
|
|
29a140cb00 | ||
|
|
0843da7a7c | ||
|
|
50edd7dfbe | ||
|
|
37bfb7d936 | ||
|
|
fc349e9865 | ||
|
|
bec8b4d1b2 | ||
|
|
3a48483700 | ||
|
|
363278089d | ||
|
|
7d426fbfa9 | ||
|
|
3f45a0dbc9 | ||
|
|
69d00d1a4d | ||
|
|
92ca904748 | ||
|
|
33034118f2 | ||
|
|
dcd0ec9f29 | ||
|
|
467d53db81 | ||
|
|
f8a890c579 | ||
|
|
881bf08aee | ||
|
|
297767a42b | ||
|
|
f81a88abbf | ||
|
|
f335c882ba | ||
|
|
27ad4b9eb9 | ||
|
|
23f71d1ec8 | ||
|
|
5c120c3fc2 | ||
|
|
db56b74475 | ||
|
|
6576bffa52 | ||
|
|
594de74a88 | ||
|
|
395d58009e | ||
|
|
48adea0d16 | ||
|
|
dce24681e2 | ||
|
|
eecac2b007 | ||
|
|
53d5b6c37f | ||
|
|
6a8196b42c | ||
|
|
9e801f9ced | ||
|
|
4955edf69c | ||
|
|
0ab6cc9b75 | ||
|
|
5f29fe3c4f | ||
|
|
a2ab0a1173 | ||
|
|
d37b9c3c26 | ||
|
|
82dbb39568 | ||
|
|
23f2f96361 | ||
|
|
dfa585467f | ||
|
|
33b914fd4b | ||
|
|
18100867c5 | ||
|
|
d4bd27cb38 | ||
|
|
d4f682dadb | ||
|
|
f8bb7aaf30 | ||
|
|
6b02384fb8 | ||
|
|
65724bcaa7 | ||
|
|
4fa9346652 | ||
|
|
bc1459f107 | ||
|
|
9f11d7ec88 | ||
|
|
369271b29f | ||
|
|
4d34009d32 | ||
|
|
0d2c469ad9 | ||
|
|
a8bf85906a | ||
|
|
99369da128 | ||
|
|
648b3772a1 | ||
|
|
db45bfd07d | ||
|
|
06d88d3fe5 | ||
|
|
177d0a2de3 | ||
|
|
1bc08930be | ||
|
|
cc853a0632 | ||
|
|
3e89b8f781 | ||
|
|
6a928cd83a | ||
|
|
358ec17c61 | ||
|
|
765991b32e | ||
|
|
1c11a22347 | ||
|
|
b74244652e | ||
|
|
b6f76562e2 | ||
|
|
fa2e3f18d6 | ||
|
|
7a5efa938b | ||
|
|
b7b755a79d | ||
|
|
29e562259d | ||
|
|
fa74b2a084 | ||
|
|
f2d2d287f5 | ||
|
|
8d701e46df | ||
|
|
3a17e1f9b2 | ||
|
|
6d0306444d | ||
|
|
02e37eaf88 | ||
|
|
17daf67662 | ||
|
|
1ee3c49011 | ||
|
|
e3af89b001 | ||
|
|
c8f5ac4d25 | ||
|
|
ba841ce1b7 | ||
|
|
5f0258022a | ||
|
|
006ab00f20 | ||
|
|
94bc074f0d | ||
|
|
a99941d7dc | ||
|
|
a763681d2e | ||
|
|
32bc143589 | ||
|
|
b422cac734 | ||
|
|
9f9a7b9c4b | ||
|
|
5416978da5 | ||
|
|
8d6c4ed713 | ||
|
|
1ddce7ac2e | ||
|
|
6d642139d1 | ||
|
|
eb845a1eb7 | ||
|
|
18d11b2c6a | ||
|
|
00bbf4eae2 | ||
|
|
3cf9d39cf2 | ||
|
|
8ee2def02a | ||
|
|
51e9de0e79 | ||
|
|
bd3e886d7e | ||
|
|
37eafa54cc | ||
|
|
ca6e97be65 | ||
|
|
22bcef1310 | ||
|
|
900f307847 | ||
|
|
5602653ba9 | ||
|
|
c209dbd90b | ||
|
|
1c87db1faf | ||
|
|
73cd675dc9 | ||
|
|
dc374df350 | ||
|
|
9485725df5 | ||
|
|
81e59d5fe4 | ||
|
|
bcc9741fbe | ||
|
|
1151572814 | ||
|
|
c648bb71f5 | ||
|
|
be7dbc0e51 | ||
|
|
10a4350cae | ||
|
|
b15f2fc49b | ||
|
|
b793b81e4d | ||
|
|
ac6be74471 | ||
|
|
4103831401 | ||
|
|
7e87b4bed3 | ||
|
|
6fc05cb587 | ||
|
|
eaa9e6d840 | ||
|
|
e5da1905c6 | ||
|
|
864b94f62a | ||
|
|
cac19cad4d | ||
|
|
7b68309301 | ||
|
|
af9cbb47ef | ||
|
|
8bb9ed8a18 | ||
|
|
0813f48fce | ||
|
|
130d079c90 | ||
|
|
caf503faa3 | ||
|
|
ae817daa8e | ||
|
|
86659896da | ||
|
|
70ae6d612c | ||
|
|
cfa2d29a4b | ||
|
|
ca22dfec3a | ||
|
|
bbfecf1b47 | ||
|
|
7f949472f7 | ||
|
|
379c75aab6 | ||
|
|
23481318a2 | ||
|
|
5ceb2ea1c9 | ||
|
|
2af4c94817 | ||
|
|
f6333ba304 | ||
|
|
1d3e29cea2 | ||
|
|
2e462f39f7 | ||
|
|
c5868b7e5a | ||
|
|
2651e81cd3 | ||
|
|
db7a2d8768 | ||
|
|
d0d17d0033 | ||
|
|
3ebfb57527 | ||
|
|
b485dddfa2 | ||
|
|
979d7e3662 | ||
|
|
5de9859a1e | ||
|
|
5b96cc9b0a | ||
|
|
7886682f7c | ||
|
|
f95ba3f61c | ||
|
|
c6cb3190cf | ||
|
|
c8c026af16 | ||
|
|
e9012adaa4 | ||
|
|
e769b70099 | ||
|
|
0bfc7d430b | ||
|
|
8a04fc058d | ||
|
|
288e6eae00 | ||
|
|
84f4a022ed | ||
|
|
76079f24c0 | ||
|
|
0c5d62a0dd | ||
|
|
13d2e91914 | ||
|
|
9f0b2c570e | ||
|
|
1d5d72967a | ||
|
|
ba8bae67ae | ||
|
|
c68de36bce | ||
|
|
6c86fcf6fa | ||
|
|
f594a84664 | ||
|
|
b89e14f78d | ||
|
|
a872d10770 | ||
|
|
390cfa6058 | ||
|
|
613e10a2cf | ||
|
|
4ce23aee6e | ||
|
|
2534e5f668 | ||
|
|
16cc281a22 | ||
|
|
5fdcffc97d | ||
|
|
55abaf0dae | ||
|
|
8ece68a3c7 | ||
|
|
0ff3817c28 | ||
|
|
12d0ec2cf6 | ||
|
|
13fab5ebe4 | ||
|
|
2cc0150bec | ||
|
|
8be7a7e67d | ||
|
|
41ef70c1e4 | ||
|
|
26991b21ce | ||
|
|
3d79f39600 | ||
|
|
be940a32f5 | ||
|
|
fb2d3d6151 | ||
|
|
5180266f01 | ||
|
|
e00e160f35 | ||
|
|
077bd3b538 | ||
|
|
8e8eda1012 | ||
|
|
40e0adfefe | ||
|
|
7ef11cb05f | ||
|
|
d05ed7a26c | ||
|
|
b39befc111 | ||
|
|
d6a81e320b | ||
|
|
4fbbb63712 | ||
|
|
8858287469 | ||
|
|
08bff5d7df | ||
|
|
3cc437a17f | ||
|
|
c71a92302a | ||
|
|
6e5faa8cc1 | ||
|
|
b6db653f41 | ||
|
|
05fcb5397e | ||
|
|
18ae2f121a | ||
|
|
3536b01981 | ||
|
|
0b2bc922bb | ||
|
|
5226ee0343 | ||
|
|
af94f87196 | ||
|
|
743c8172e8 | ||
|
|
0816d14264 | ||
|
|
dde5bcbfe1 | ||
|
|
220e98b2cc | ||
|
|
337424cb96 | ||
|
|
a5c3a2fc79 | ||
|
|
642ad6f6f4 | ||
|
|
f592eb66a3 | ||
|
|
6297314c4a | ||
|
|
37bec05857 | ||
|
|
2b3886617e | ||
|
|
8c93d35ca9 | ||
|
|
f501eea00a | ||
|
|
13f7398761 | ||
|
|
d9c2111961 | ||
|
|
5bf206c933 | ||
|
|
26a0983860 | ||
|
|
c8add882f8 | ||
|
|
77a13d0f2b | ||
|
|
0b63dba86d | ||
|
|
376abd10a7 | ||
|
|
6239486361 | ||
|
|
a949a38bdf | ||
|
|
06f1085b89 | ||
|
|
708b05a9bd | ||
|
|
bc21d78217 | ||
|
|
2217d678e4 | ||
|
|
719922c7db | ||
|
|
6db3d92e2d | ||
|
|
3f65424d99 | ||
|
|
7cfc8f0269 | ||
|
|
bf788d4f6e | ||
|
|
d76b970d85 | ||
|
|
b7ac53b7ea | ||
|
|
a379f2d441 | ||
|
|
5c9cdd0524 | ||
|
|
2e5612697f | ||
|
|
921d3d0894 | ||
|
|
b76b467436 | ||
|
|
290c302352 | ||
|
|
8de8a156b8 | ||
|
|
1953b95732 | ||
|
|
b5b161e0d3 | ||
|
|
f8ead0093d | ||
|
|
a3d27c634e | ||
|
|
00f0b97ccb | ||
|
|
c342b4dd9a | ||
|
|
04b9d47a47 | ||
|
|
7aa7b4b6dd | ||
|
|
4baac981c2 | ||
|
|
c596c2768c | ||
|
|
50e97109b9 | ||
|
|
6970ea1ccc | ||
|
|
22d31661cb | ||
|
|
a61d8bae53 | ||
|
|
4fb542d5ee | ||
|
|
9a021e5687 | ||
|
|
168d302892 | ||
|
|
c98aed68da | ||
|
|
2cb7a5174b | ||
|
|
629d63f5e2 | ||
|
|
2bd894f53f | ||
|
|
63ed05fafb | ||
|
|
935473823a | ||
|
|
89ecbe34ed | ||
|
|
731a6e9587 | ||
|
|
a02454e2b4 | ||
|
|
082c376dde | ||
|
|
98cfc8a748 | ||
|
|
e8e405648f | ||
|
|
432318226e | ||
|
|
77c3385f93 | ||
|
|
36e45ecf68 | ||
|
|
a90096ab3c | ||
|
|
414717cebf | ||
|
|
b50a2125e4 | ||
|
|
e647f8405d | ||
|
|
613b374dcb | ||
|
|
2f28d5b327 | ||
|
|
5400eb0e32 | ||
|
|
34083c1798 | ||
|
|
eeb67d5e57 | ||
|
|
4d22814b95 | ||
|
|
c0fc922597 | ||
|
|
093cd0a050 | ||
|
|
a2caf2e971 | ||
|
|
a5fcf837bb | ||
|
|
0d152fafc7 | ||
|
|
5bba050403 | ||
|
|
b0264db0e6 | ||
|
|
e0497d9481 | ||
|
|
86d4706efc | ||
|
|
cf973847ab | ||
|
|
863fd2bdb5 | ||
|
|
8cbb637690 | ||
|
|
938fd98717 | ||
|
|
3030e0d874 | ||
|
|
88e3eb1d2c | ||
|
|
174214b096 | ||
|
|
aa5bf600ef | ||
|
|
a14f6e1455 | ||
|
|
849b0b2a27 | ||
|
|
b95ff07f61 | ||
|
|
ab3dcff023 | ||
|
|
b257672717 | ||
|
|
59a220ee51 | ||
|
|
ac3784c732 | ||
|
|
fde07c539b | ||
|
|
01c0ea13b9 | ||
|
|
d1fe9ca364 | ||
|
|
69197e6bf7 | ||
|
|
2c092997ba | ||
|
|
fab148d168 | ||
|
|
38af755e56 | ||
|
|
94f30ab40a | ||
|
|
4596a16a8c | ||
|
|
f478b5a688 | ||
|
|
47634f7f4e | ||
|
|
865dd9a2c7 | ||
|
|
4d81af640a | ||
|
|
ffbd3eb38a | ||
|
|
893f063ffa | ||
|
|
d3dccd3a8e | ||
|
|
aeb5e93548 | ||
|
|
998cf86d1a | ||
|
|
4248e6ee89 | ||
|
|
eba2bb33bb | ||
|
|
3d61dad2c7 | ||
|
|
14966a88c2 | ||
|
|
a44ea2c791 | ||
|
|
7ce1b0a6be | ||
|
|
d3d3242e0b | ||
|
|
44b3c6fb51 | ||
|
|
8a374e1963 | ||
|
|
51fdc2d920 | ||
|
|
f919e6eb43 | ||
|
|
0dfd010685 | ||
|
|
558e3ab493 | ||
|
|
105ddf93e0 | ||
|
|
a15be024a6 | ||
|
|
b10cf6e461 | ||
|
|
71d2102c4c | ||
|
|
eece42480a | ||
|
|
0e9de6e1bb | ||
|
|
178e0c4840 | ||
|
|
7232b0e48e | ||
|
|
732528ce85 | ||
|
|
7b71a1cf20 | ||
|
|
f9d45e05a9 | ||
|
|
1eafc96b35 | ||
|
|
7520a21b43 | ||
|
|
0e244c52e9 | ||
|
|
8fb48127fe | ||
|
|
39ff1921ec | ||
|
|
7c470dcd24 | ||
|
|
bd44e24398 | ||
|
|
96b8b8fd07 | ||
|
|
2a461e53b1 | ||
|
|
a1102599d7 | ||
|
|
8c491201df | ||
|
|
9139582ecd | ||
|
|
262f50cdeb | ||
|
|
177b5ea7ac | ||
|
|
7b3144b76a | ||
|
|
118877534d | ||
|
|
4566f2c172 | ||
|
|
62aa4ae53d | ||
|
|
b35b231d1a | ||
|
|
d981265f12 | ||
|
|
145a6636ca | ||
|
|
8192674948 | ||
|
|
1efef1fdcd | ||
|
|
5655568070 | ||
|
|
0ac08df532 | ||
|
|
26f3f320b8 | ||
|
|
cffbfc0f04 | ||
|
|
190769569c | ||
|
|
6c28f0e213 | ||
|
|
77ada220d5 | ||
|
|
a7872d4c33 | ||
|
|
c523711577 | ||
|
|
9a5d5a75ed | ||
|
|
f8a5ce44cf | ||
|
|
49e5e3b66e | ||
|
|
b315d80838 | ||
|
|
cebc8b77bf | ||
|
|
18055ce244 | ||
|
|
bdbb81cbd7 | ||
|
|
3e5eb9cf2d | ||
|
|
338f309f47 | ||
|
|
58d4000359 | ||
|
|
fb7b6ba7e5 | ||
|
|
5956c8cb84 | ||
|
|
75619befef | ||
|
|
1596269848 | ||
|
|
7737cdd4d5 | ||
|
|
4620b93752 | ||
|
|
0d7c5d898d | ||
|
|
a6a2c77416 | ||
|
|
4b4fc84d66 | ||
|
|
4ef725106c | ||
|
|
a1988aa18c | ||
|
|
0fc7c457bf | ||
|
|
16e219a629 | ||
|
|
36cbd21101 | ||
|
|
63ea8500b6 | ||
|
|
0ae4fc1113 | ||
|
|
661275c934 | ||
|
|
e392207c5a | ||
|
|
1529913ae4 | ||
|
|
be35cac6ae | ||
|
|
9c15dbd673 | ||
|
|
1301b37901 | ||
|
|
1fe3bfd0f3 | ||
|
|
c216c6d8ae | ||
|
|
8082eb2dec | ||
|
|
c56ee45397 | ||
|
|
2873856a63 | ||
|
|
49adfc9675 | ||
|
|
476de90ca7 | ||
|
|
5e0834b0c6 | ||
|
|
fcd04032f7 | ||
|
|
27295d69c3 | ||
|
|
e8dab58dec | ||
|
|
0fec47cbff | ||
|
|
3ada2df618 | ||
|
|
b8445347d9 | ||
|
|
844d394b14 | ||
|
|
0a888b0d0e | ||
|
|
e7ed58ea2b | ||
|
|
65241b1038 | ||
|
|
43f561ce11 | ||
|
|
e74d042dcf | ||
|
|
7bab771555 | ||
|
|
fb55312056 | ||
|
|
940c615458 | ||
|
|
e4cfebb044 | ||
|
|
cf443e8531 | ||
|
|
7f8c339c0f | ||
|
|
e78dc083e3 | ||
|
|
df69ebf90e | ||
|
|
f23b87c334 | ||
|
|
73a885a79e | ||
|
|
af544ab7c9 | ||
|
|
45e3aeaed4 | ||
|
|
d7b2272a20 | ||
|
|
9460291eef | ||
|
|
37f86a7622 | ||
|
|
593ebd3d6e | ||
|
|
c9788c31d3 | ||
|
|
21744c6880 | ||
|
|
c6cc92dbdf | ||
|
|
613425855d | ||
|
|
e2ee292e47 | ||
|
|
1f6e7e06da | ||
|
|
e8b3132e18 | ||
|
|
8d6aa28af4 | ||
|
|
1548ef0aa3 | ||
|
|
d1bf893b4f | ||
|
|
2fd2a3a6eb | ||
|
|
3a4103ac60 | ||
|
|
604d85f894 | ||
|
|
86a24ae44b | ||
|
|
4f926b3746 | ||
|
|
abcf7dfc97 | ||
|
|
6464f741e4 | ||
|
|
aab4ee2f30 | ||
|
|
845a2c63c9 | ||
|
|
b380f2d804 | ||
|
|
6a32606762 | ||
|
|
de2ef2033d | ||
|
|
e9d5380eba | ||
|
|
e9e9a69cec | ||
|
|
15b9cecfc6 | ||
|
|
665a8cab31 | ||
|
|
434468ca65 | ||
|
|
44c59f2236 | ||
|
|
81d12ce928 | ||
|
|
dd778d5c3a | ||
|
|
60ef249b5e | ||
|
|
9e687a34cc | ||
|
|
7889c429d9 | ||
|
|
1da3623c03 | ||
|
|
8ed76b4bd7 | ||
|
|
568e1b2923 | ||
|
|
bc92c2e8c4 | ||
|
|
3f63440b93 | ||
|
|
fca433f447 | ||
|
|
b166f2a469 | ||
|
|
0a9537ab07 | ||
|
|
08417f6f41 | ||
|
|
632e62e5e3 | ||
|
|
2146db9600 | ||
|
|
c93fa92c7d | ||
|
|
f594d594d3 | ||
|
|
c2bd6bcce8 | ||
|
|
8d84ccd2cc | ||
|
|
52875fb7fa | ||
|
|
119cf123fe | ||
|
|
b90d61dc15 | ||
|
|
40f35f0809 | ||
|
|
b9a8202762 | ||
|
|
ef17f7ba2c | ||
|
|
81bb511c07 | ||
|
|
400d21cdc5 | ||
|
|
7a31b57667 | ||
|
|
5fdea3ce2b | ||
|
|
e11d9f0e5c | ||
|
|
1cb1ef0fea | ||
|
|
fe5a3f9d5a | ||
|
|
29bb3df160 | ||
|
|
2773bf9888 | ||
|
|
1941cdf9cc | ||
|
|
edfced294a | ||
|
|
836f6dffd0 | ||
|
|
c437f4e2c1 | ||
|
|
6787279542 | ||
|
|
f123a17fcc | ||
|
|
a4ffe4e16c | ||
|
|
a145562535 | ||
|
|
f186441900 | ||
|
|
abdcf40aad | ||
|
|
e172219c2a | ||
|
|
4521711106 | ||
|
|
f81e249a47 | ||
|
|
369aef624f | ||
|
|
3925a92d84 | ||
|
|
27d09aab61 | ||
|
|
bfcdeb069f | ||
|
|
b1b3afa073 | ||
|
|
ef79553121 | ||
|
|
4d4cb59b80 | ||
|
|
20935af299 | ||
|
|
79d1c61494 | ||
|
|
5c40b84c8c | ||
|
|
415791dddd | ||
|
|
a5be15e453 | ||
|
|
9f34b82135 | ||
|
|
3d88ecdeed | ||
|
|
3a35c84b57 | ||
|
|
69310a2b72 | ||
|
|
8a512f6f19 | ||
|
|
8dab02a5e0 | ||
|
|
7217eea23e | ||
|
|
7120bf8d3b | ||
|
|
65718024e5 | ||
|
|
ef3c2b85f7 | ||
|
|
2ca4abcf11 | ||
|
|
07d02f3abe | ||
|
|
1ad2e62287 | ||
|
|
74c8e82e02 | ||
|
|
98062c24ff | ||
|
|
26b1dbd02b | ||
|
|
720e6b8fbd | ||
|
|
52d82b141f | ||
|
|
e6595a5e77 | ||
|
|
a478200549 | ||
|
|
faf79e4331 | ||
|
|
3d28ef1386 | ||
|
|
f188bc0d09 | ||
|
|
e003cd5276 | ||
|
|
e9c965ff7f | ||
|
|
afdfcdd465 | ||
|
|
ae8ccfe3a1 | ||
|
|
1e01f2a749 | ||
|
|
66adfb99b4 | ||
|
|
f59e21d20e | ||
|
|
d54c128ad6 | ||
|
|
689b48af78 | ||
|
|
c41dbf3f4c | ||
|
|
434842c22b | ||
|
|
be65031af4 | ||
|
|
537416190e | ||
|
|
47478f3899 | ||
|
|
d76d1f913a | ||
|
|
4bc78dba1e | ||
|
|
0cca2d5bda | ||
|
|
bc33e6fe66 | ||
|
|
40547088f6 | ||
|
|
ce8ab00a37 | ||
|
|
8fbbd15dbe | ||
|
|
3a805a7fcf | ||
|
|
a2f853fb76 | ||
|
|
8de42c3b25 | ||
|
|
534684a796 | ||
|
|
971f53c7bf | ||
|
|
4abe8ae005 | ||
|
|
55d6414497 | ||
|
|
ed9ccca134 | ||
|
|
1296f0fe23 | ||
|
|
5e2d8ef1e7 | ||
|
|
1a7a41e131 | ||
|
|
10335fbf16 | ||
|
|
f1243e3d5b | ||
|
|
d5214d616c | ||
|
|
5a167b05f0 | ||
|
|
302c09c4cb | ||
|
|
c4fc6856cd | ||
|
|
f1ec28c663 | ||
|
|
2d2f177773 | ||
|
|
2504a03211 | ||
|
|
467d03d0e5 | ||
|
|
d5581eb8b8 | ||
|
|
ca18648917 | ||
|
|
0eada14ea9 | ||
|
|
adaa1592f8 | ||
|
|
5bd0db2257 | ||
|
|
3d462c9948 | ||
|
|
39450d9e89 | ||
|
|
418213dbfc | ||
|
|
83cfe9fdb5 | ||
|
|
dbf7daa17e | ||
|
|
cab159921d | ||
|
|
421765c40d | ||
|
|
e8e5c4f023 | ||
|
|
f69d90276e | ||
|
|
20aaf3a319 | ||
|
|
e693541c88 | ||
|
|
e3ae63eb4a | ||
|
|
b5bf1beffa | ||
|
|
7d8fea286a | ||
|
|
7c4fefe672 | ||
|
|
238fa407d5 | ||
|
|
811218d30c | ||
|
|
46eed584fb | ||
|
|
1a25cccc0b | ||
|
|
2a3ebae4ae | ||
|
|
4acb6304df | ||
|
|
12fabb31f3 | ||
|
|
67d89a2558 | ||
|
|
8253edcf1a | ||
|
|
342242f6e4 | ||
|
|
2a9ebeb8dc | ||
|
|
5b3dccff52 | ||
|
|
24746c8395 | ||
|
|
8df67e8243 | ||
|
|
5df3078125 | ||
|
|
792e9717b2 | ||
|
|
7b0cffcf30 | ||
|
|
3e81a4e3fe | ||
|
|
8c4dbbfb90 | ||
|
|
55a2250efc | ||
|
|
4868fa3655 | ||
|
|
5370cbd7a1 | ||
|
|
5b69890cae | ||
|
|
815f440833 | ||
|
|
79e2b5a70b | ||
|
|
77de32a64f | ||
|
|
02cd3e66d8 | ||
|
|
3503d66773 | ||
|
|
46b902a802 | ||
|
|
fc5e0de386 | ||
|
|
3d480e950a | ||
|
|
998d27bd39 | ||
|
|
9c199161fe | ||
|
|
865fe23a64 | ||
|
|
7a8cd04447 | ||
|
|
340360d024 | ||
|
|
4cbe278bec | ||
|
|
acdc74969e | ||
|
|
95ac9a215c | ||
|
|
d3f6047d3b | ||
|
|
1776cfc3a8 | ||
|
|
c703c48d0f | ||
|
|
3b77fddade | ||
|
|
e83559e971 | ||
|
|
ed243ea56c | ||
|
|
f3fb9d884c | ||
|
|
027e39a081 | ||
|
|
6a6db1a4fc | ||
|
|
3de6687f4e | ||
|
|
c50642dd95 | ||
|
|
283b4f7d00 | ||
|
|
7906ea7c2e | ||
|
|
fa7035510b | ||
|
|
472db24705 | ||
|
|
abeba9384f | ||
|
|
a7c3f50a08 | ||
|
|
b010808618 | ||
|
|
07a4517079 | ||
|
|
b5caa2d6b0 | ||
|
|
175744c545 | ||
|
|
80fe42c741 | ||
|
|
a0aed33b3c | ||
|
|
9b9a17ba65 | ||
|
|
a4731e612e | ||
|
|
bdedb488e4 | ||
|
|
14989d0088 | ||
|
|
7925434603 | ||
|
|
537ae51750 | ||
|
|
4bcf729a80 | ||
|
|
de217eb9db | ||
|
|
16ac951eae | ||
|
|
a634423266 | ||
|
|
c2ce4ab43d | ||
|
|
80c224d43b | ||
|
|
f3921d130a | ||
|
|
63c1c13cd7 | ||
|
|
229ecfc6a2 | ||
|
|
dfd5940d51 | ||
|
|
d3d3a56d58 | ||
|
|
a7001ff6a2 | ||
|
|
a4c583361c | ||
|
|
fec6ff29d7 | ||
|
|
ca1e102949 | ||
|
|
403d914193 | ||
|
|
62520fb7fe | ||
|
|
53c880e9c0 | ||
|
|
badf89c660 | ||
|
|
5d7f916ee9 | ||
|
|
1f291853d6 | ||
|
|
a45ef44d0f | ||
|
|
96239aea0b | ||
|
|
4e7d213f19 | ||
|
|
8bdfb8a814 | ||
|
|
5cd4e0528a | ||
|
|
70a3b6f65a | ||
|
|
3af73b35b8 | ||
|
|
1d640ab9ce | ||
|
|
c2c4c63542 | ||
|
|
4ebd2ba5dc | ||
|
|
60f4ad7716 | ||
|
|
47594b2cd7 | ||
|
|
7911c7473a | ||
|
|
d75aa7e8dc | ||
|
|
b6cd004117 | ||
|
|
4cd901cf8e | ||
|
|
fe4d370f60 | ||
|
|
d774d8bbd0 | ||
|
|
f0103356ba | ||
|
|
dd38d1ca23 | ||
|
|
d6d45fe9cb | ||
|
|
9e24d08ab6 | ||
|
|
f0b9a8df5f | ||
|
|
e8a23f701a | ||
|
|
46e32154d7 | ||
|
|
359da4026f | ||
|
|
76786882ff | ||
|
|
d165dbdca4 | ||
|
|
791e8b02c3 | ||
|
|
53c61fe2d0 | ||
|
|
1eb73eb005 | ||
|
|
96c79a4404 | ||
|
|
26a8dcafce | ||
|
|
bb0575a35d | ||
|
|
99e29a586e | ||
|
|
d1af971d9a | ||
|
|
dc9c586dc8 | ||
|
|
f2486e7470 | ||
|
|
5364e2008c | ||
|
|
9b4b835c08 | ||
|
|
14d9b0dd31 | ||
|
|
51b376add2 | ||
|
|
aad7ddbc04 | ||
|
|
3007f1ba97 | ||
|
|
2b712baa50 | ||
|
|
b02d5b368d | ||
|
|
0e5b321e58 | ||
|
|
100bb00739 | ||
|
|
39c774625d | ||
|
|
49606adcf9 | ||
|
|
6324563acd | ||
|
|
1b5d39afcf | ||
|
|
21740b76e6 | ||
|
|
19e979769d | ||
|
|
0f0bea61d0 | ||
|
|
97ceaf221c | ||
|
|
4d0808efea | ||
|
|
efc287a3b9 | ||
|
|
2daef4e9bc | ||
|
|
6b2b8fd3c2 | ||
|
|
3780dbb2bb | ||
|
|
517fe05567 | ||
|
|
4f279c49c8 | ||
|
|
1ed1078979 | ||
|
|
46075cf317 | ||
|
|
87bdd06037 | ||
|
|
015487b800 | ||
|
|
95f5375288 | ||
|
|
5763bd5628 | ||
|
|
181a7e6f8e | ||
|
|
cac02fc2e8 | ||
|
|
f6315a5b46 | ||
|
|
5caeef134a | ||
|
|
b5dacced35 | ||
|
|
a42387948a | ||
|
|
a76dc6436f | ||
|
|
657900feb6 | ||
|
|
27f36ca508 | ||
|
|
bcb8696384 | ||
|
|
b4e72d56c7 | ||
|
|
8bd6bc4f60 | ||
|
|
0b20c34fb3 | ||
|
|
1cdb367081 | ||
|
|
c879a81a95 | ||
|
|
3c47f8c1a4 | ||
|
|
0f4b97daf8 | ||
|
|
a086cab252 | ||
|
|
11219a0073 | ||
|
|
4a609c81ee | ||
|
|
8d495051d7 | ||
|
|
734b8a2ddb | ||
|
|
a03a7d5ae9 | ||
|
|
e40ec7664e | ||
|
|
b9a0e7f3fa | ||
|
|
1001d4bd9d | ||
|
|
b33d39d475 | ||
|
|
5357402bf1 | ||
|
|
1539321521 | ||
|
|
addc8fc404 | ||
|
|
44c0601414 | ||
|
|
33c7dc29da | ||
|
|
756b0de34b | ||
|
|
b5ee605b30 | ||
|
|
a619ca4e72 | ||
|
|
b1fe39ccb0 | ||
|
|
3b7912e2d5 | ||
|
|
86e29c4579 | ||
|
|
0762ca8e4f | ||
|
|
974edf710c | ||
|
|
1c69656d2c | ||
|
|
bf1575e92b | ||
|
|
93c8ef0259 | ||
|
|
4c5ed4ce86 | ||
|
|
2fdc8e179e | ||
|
|
f5f06dbd3e | ||
|
|
f707da3601 | ||
|
|
e74851b289 | ||
|
|
356eb8a8b5 | ||
|
|
f7b7acc1d5 | ||
|
|
64ff1439b9 | ||
|
|
6147e207a1 | ||
|
|
b534da34ad | ||
|
|
c4f5962c7e | ||
|
|
330d9650c5 | ||
|
|
8e26910343 | ||
|
|
2add3944d3 | ||
|
|
6031ec2578 | ||
|
|
69ff5393ef | ||
|
|
fba0f67181 | ||
|
|
3998bddaca | ||
|
|
4645679d47 | ||
|
|
ead76e2486 | ||
|
|
e4f53b50fd | ||
|
|
931d291e65 | ||
|
|
230df2cec0 | ||
|
|
3a33d0cbc2 | ||
|
|
61911bdd28 | ||
|
|
bed4b87a54 | ||
|
|
3a37b35cee | ||
|
|
df7d568c2e | ||
|
|
d9e5a8224d | ||
|
|
69031f6da5 | ||
|
|
6089c449bf | ||
|
|
469fea321d | ||
|
|
85b7e6ad17 | ||
|
|
b47cbcb925 | ||
|
|
39b5362442 | ||
|
|
b5ba1c4e4f | ||
|
|
0f5790c5e6 | ||
|
|
1b6820664b | ||
|
|
2a872397f6 | ||
|
|
eff9ce8a70 | ||
|
|
a602d2d6a2 | ||
|
|
d878c7add7 | ||
|
|
3023032524 | ||
|
|
903d0cc021 | ||
|
|
11973e02e8 | ||
|
|
0f342270dc | ||
|
|
bc03a2885a | ||
|
|
0020cf7364 | ||
|
|
2af3070449 | ||
|
|
4727da6acf | ||
|
|
688936fd66 | ||
|
|
8c0103f83d | ||
|
|
8628f90592 | ||
|
|
fd90bb6c9b | ||
|
|
581212b8f7 | ||
|
|
351f84c6e6 | ||
|
|
cfbb4863c4 | ||
|
|
394e486ecb | ||
|
|
26459665c6 | ||
|
|
240268c7dd | ||
|
|
3ed0a4d794 | ||
|
|
c12e7821ec | ||
|
|
1388137158 | ||
|
|
3380970f6f | ||
|
|
2f7105f518 | ||
|
|
7c4b9536cd | ||
|
|
3e4995ae84 | ||
|
|
090aeed9f9 | ||
|
|
4a7b2d04c2 | ||
|
|
5556815d46 | ||
|
|
1baa00b4ff | ||
|
|
78d5323345 | ||
|
|
83396dec59 | ||
|
|
7248e65cba |
No files matched your search
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"presets": [
|
||||||
|
[
|
||||||
|
"@babel/preset-env",
|
||||||
|
{
|
||||||
|
"useBuiltIns": "usage",
|
||||||
|
"corejs": 3,
|
||||||
|
"modules": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"plugins": [
|
||||||
|
"lodash"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
parser: "vue-eslint-parser",
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"es2021": true
|
||||||
|
},
|
||||||
|
ignorePatterns: ['*.test.ts', '.eslintrc.cjs', 'postcss.config.cjs', 'webpack.config.cjs', '*.js'],
|
||||||
|
overrides: [{
|
||||||
|
files: ['*.ts', '*.tsx', "*.vue"],
|
||||||
|
}],
|
||||||
|
plugins: [
|
||||||
|
"@typescript-eslint"
|
||||||
|
],
|
||||||
|
|
||||||
|
extends: [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:vue/vue3-essential",
|
||||||
|
"plugin:@typescript-eslint/recommended"
|
||||||
|
],
|
||||||
|
parserOptions: {
|
||||||
|
"sourceType": "module",
|
||||||
|
"project": "./tsconfig.json",
|
||||||
|
"ecmaVersion": 2021,
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
extraFileExtensions: ['.vue']
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'@typescript-eslint/no-floating-promises': 'error',
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
'import/resolver': {
|
||||||
|
alias: {
|
||||||
|
map: [
|
||||||
|
['@', './hwe/ts'],
|
||||||
|
['@util', './hwe/ts/util'],
|
||||||
|
['@scss', './hwe/scss'],
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
@@ -4,8 +4,7 @@
|
|||||||
!.vscode/launch.json
|
!.vscode/launch.json
|
||||||
!.vscode/extensions.json
|
!.vscode/extensions.json
|
||||||
|
|
||||||
|
/node_modules
|
||||||
|
|
||||||
|
|
||||||
# 체섭 ignore
|
# 체섭 ignore
|
||||||
*.log
|
*.log
|
||||||
@@ -16,25 +15,37 @@ d_log/*.zip
|
|||||||
sess_*
|
sess_*
|
||||||
*/logs/*.txt
|
*/logs/*.txt
|
||||||
*/logs/*/*.txt
|
*/logs/*/*.txt
|
||||||
|
*/logs/preserved
|
||||||
err.txt
|
err.txt
|
||||||
che/.htaccess
|
|
||||||
kwe/.htaccess
|
|
||||||
pwe/.htaccess
|
|
||||||
twe/.htaccess
|
|
||||||
hwe/.htaccess
|
hwe/.htaccess
|
||||||
|
|
||||||
d_shared
|
d_shared
|
||||||
|
|
||||||
|
/d_pic
|
||||||
d_pic/*.jpg
|
d_pic/*.jpg
|
||||||
d_pic/*.gif
|
d_pic/*.gif
|
||||||
d_pic/*.png
|
d_pic/*.png
|
||||||
|
d_pic/*.webp
|
||||||
|
d_pic/uploaded_image
|
||||||
|
|
||||||
|
*/dist_misc/*
|
||||||
|
*/dist_js/*
|
||||||
|
*/dist_css/*
|
||||||
|
/dist_misc/*
|
||||||
|
/dist_js/*
|
||||||
|
/dist_css/*
|
||||||
|
|
||||||
d_setting/*.php
|
d_setting/*.php
|
||||||
*/d_setting/*.php
|
*/d_setting/*.php
|
||||||
|
*/d_setting/*.json
|
||||||
*/d_setting/templates/*.php
|
*/d_setting/templates/*.php
|
||||||
|
!*.orig.php
|
||||||
|
|
||||||
|
*/data/file_cache
|
||||||
|
|
||||||
**/old/*
|
**/old/*
|
||||||
test.php
|
test.*
|
||||||
|
|
||||||
/che
|
/che
|
||||||
/kwe
|
/kwe
|
||||||
@@ -43,5 +54,13 @@ test.php
|
|||||||
/pya
|
/pya
|
||||||
/twe
|
/twe
|
||||||
|
|
||||||
|
/hwe/data
|
||||||
|
|
||||||
|
/vendor
|
||||||
phpinfo.php
|
phpinfo.php
|
||||||
vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/*
|
*.sqlite3
|
||||||
|
|
||||||
|
ingame/js/*
|
||||||
|
ingame/css/*
|
||||||
|
gateway/js/*
|
||||||
|
gateway/css/*
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"extension": ["ts"],
|
||||||
|
"spec": "hwe/test-ts/**/*.test.ts",
|
||||||
|
"require": [
|
||||||
|
"ts-node/register",
|
||||||
|
"tsconfig-paths/register"
|
||||||
|
],
|
||||||
|
"node-option": [
|
||||||
|
"experimental-specifier-resolution=node",
|
||||||
|
"loader=ts-node/esm"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -2,44 +2,145 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* This configuration will be read and overlaid on top of the
|
* This configuration will be read and overlaid on top of the
|
||||||
* default configuration. Command line arguments will be applied
|
* default configuration. Command-line arguments will be applied
|
||||||
* after this file is read.
|
* after this file is read.
|
||||||
*/
|
*/
|
||||||
return [
|
return [
|
||||||
|
// Supported values: `'5.6'`, `'7.0'`, `'7.1'`, `'7.2'`, `'7.3'`,
|
||||||
// Supported values: '7.0', '7.1', '7.2', null.
|
// `'7.4'`, `'8.0'`, `'8.1'`, `null`.
|
||||||
// If this is set to null,
|
// If this is set to `null`,
|
||||||
// then Phan assumes the PHP version which is closest to the minor version
|
// then Phan assumes the PHP version which is closest to the minor version
|
||||||
// of the php executable used to execute phan.
|
// of the php executable used to execute Phan.
|
||||||
"target_php_version" => '7.0',
|
//
|
||||||
'backward_compatibility_checks ' => false,
|
// Note that the **only** effect of choosing `'5.6'` is to infer
|
||||||
'ignore_undeclared_variables_in_global_scope' => false,
|
// that functions removed in php 7.0 exist.
|
||||||
'minimum_severity'=>\Phan\Issue::SEVERITY_LOW,
|
// (See `backward_compatibility_checks` for additional options)
|
||||||
|
"target_php_version" => '8.0',
|
||||||
|
'backward_compatibility_checks ' => true,
|
||||||
|
'minimum_severity' => \Phan\Issue::SEVERITY_NORMAL,
|
||||||
|
|
||||||
'file_list' => [
|
'file_list' => [
|
||||||
'f_config/config.php',
|
'f_config/config.php',
|
||||||
'hwe/MYDB.php',
|
'hwe/_119_b.php',
|
||||||
'hwe/lib.php',
|
'hwe/_119.php',
|
||||||
|
'hwe/a_bestGeneral.php',
|
||||||
|
'hwe/_admin1.php',
|
||||||
|
'hwe/_admin1_submit.php',
|
||||||
|
'hwe/_admin2.php',
|
||||||
|
'hwe/_admin2_submit.php',
|
||||||
|
'hwe/_admin4.php',
|
||||||
|
'hwe/_admin4_submit.php',
|
||||||
|
'hwe/_admin5.php',
|
||||||
|
'hwe/_admin5_submit.php',
|
||||||
|
'hwe/_admin7.php',
|
||||||
|
'hwe/_admin8.php',
|
||||||
|
'hwe/_admin_force_rehall.php',
|
||||||
|
'hwe/a_emperior_detail.php',
|
||||||
|
'hwe/a_emperior.php',
|
||||||
|
'hwe/a_genList.php',
|
||||||
|
'hwe/a_hallOfFame.php',
|
||||||
|
'hwe/a_history.php',
|
||||||
|
'hwe/a_kingdomList.php',
|
||||||
|
'hwe/a_npcList.php',
|
||||||
|
'hwe/api.php',
|
||||||
|
'hwe/a_status.php',
|
||||||
|
'hwe/a_traffic.php',
|
||||||
|
'hwe/a_vote.php',
|
||||||
|
'hwe/battle_simulator.php',
|
||||||
|
'hwe/b_auction.php',
|
||||||
|
'hwe/b_battleCenter.php',
|
||||||
|
'hwe/b_betting.php',
|
||||||
|
'hwe/v_chiefCenter.php',
|
||||||
|
'hwe/b_currentCity.php',
|
||||||
|
'hwe/v_nationStratFinan.php',
|
||||||
|
'hwe/b_diplomacy.php',
|
||||||
|
'hwe/b_genList.php',
|
||||||
|
'hwe/b_myBossInfo.php',
|
||||||
|
'hwe/b_myCityInfo.php',
|
||||||
|
'hwe/b_myGenInfo.php',
|
||||||
|
'hwe/b_myKingdomInfo.php',
|
||||||
|
'hwe/b_myPage.php',
|
||||||
|
'hwe/v_processing.php',
|
||||||
|
'hwe/b_tournament.php',
|
||||||
|
'hwe/b_troop.php',
|
||||||
|
'hwe/c_auction.php',
|
||||||
|
'hwe/c_tournament.php',
|
||||||
|
'hwe/c_vote.php',
|
||||||
'hwe/func_auction.php',
|
'hwe/func_auction.php',
|
||||||
'hwe/func_command.php',
|
'hwe/func_command.php',
|
||||||
'hwe/func_converter.php',
|
'hwe/func_converter.php',
|
||||||
'hwe/func_diplomacy.php',
|
|
||||||
'hwe/func_gamerule.php',
|
'hwe/func_gamerule.php',
|
||||||
'hwe/func_history.php',
|
'hwe/func_history.php',
|
||||||
'hwe/func_legacy.php',
|
'hwe/func_legacy.php',
|
||||||
'hwe/func_map.php',
|
'hwe/func_map.php',
|
||||||
'hwe/func_message.php',
|
'hwe/func_message.php',
|
||||||
'hwe/func_npc.php',
|
'hwe/func.php',
|
||||||
'hwe/func_process_chief.php',
|
|
||||||
'hwe/func_process_personnel.php',
|
|
||||||
'hwe/func_process_sabotage.php',
|
|
||||||
'hwe/func_process.php',
|
'hwe/func_process.php',
|
||||||
'hwe/func_string.php',
|
'hwe/func_string.php',
|
||||||
'hwe/func_template.php',
|
'hwe/func_template.php',
|
||||||
'hwe/func_time_event.php',
|
'hwe/func_time_event.php',
|
||||||
'hwe/func_tournament.php',
|
'hwe/func_tournament.php',
|
||||||
|
'hwe/index.php',
|
||||||
|
'hwe/install_db.php',
|
||||||
|
'hwe/install.php',
|
||||||
|
'hwe/j_adjust_icon.php',
|
||||||
|
'hwe/j_autoreset.php',
|
||||||
|
'hwe/j_basic_info.php',
|
||||||
|
'hwe/j_betting.php',
|
||||||
|
'hwe/j_board_article_add.php',
|
||||||
|
'hwe/j_board_comment_add.php',
|
||||||
|
'hwe/j_board_get_articles.php',
|
||||||
|
'hwe/j_die_immediately.php',
|
||||||
|
'hwe/j_diplomacy_destroy_letter.php',
|
||||||
|
'hwe/j_diplomacy_get_letter.php',
|
||||||
|
'hwe/j_diplomacy_respond_letter.php',
|
||||||
|
'hwe/j_diplomacy_rollback_letter.php',
|
||||||
|
'hwe/j_diplomacy_send_letter.php',
|
||||||
|
'hwe/j_export_simulator_object.php',
|
||||||
|
'hwe/j_general_log_old.php',
|
||||||
|
'hwe/j_general_set_permission.php',
|
||||||
|
'hwe/j_get_basic_general_list.php',
|
||||||
|
'hwe/j_get_city_list.php',
|
||||||
|
'hwe/j_get_general_list.php',
|
||||||
|
'hwe/j_get_nation_general_list.php',
|
||||||
|
'hwe/j_get_select_npc_token.php',
|
||||||
|
'hwe/j_get_select_pool.php',
|
||||||
|
'hwe/j_image_upload.php',
|
||||||
|
'hwe/j_install_db.php',
|
||||||
|
'hwe/j_install.php',
|
||||||
|
'hwe/j_load_scenarios.php',
|
||||||
|
'hwe/j_map_history.php',
|
||||||
|
'hwe/j_map.php',
|
||||||
|
'hwe/j_map_recent.php',
|
||||||
|
'hwe/j_msg_contact_list.php',
|
||||||
|
'hwe/j_msg_decide_opt.php',
|
||||||
|
'hwe/j_msg_delete.php',
|
||||||
|
'hwe/j_msg_get_old.php',
|
||||||
|
'hwe/j_msg_get_recent.php',
|
||||||
|
'hwe/j_msg_submit.php',
|
||||||
|
'hwe/j_myBossInfo.php',
|
||||||
|
'hwe/j_raise_event.php',
|
||||||
|
'hwe/j_select_npc.php',
|
||||||
|
'hwe/j_select_picked_general.php',
|
||||||
|
'hwe/j_server_basic_info.php',
|
||||||
|
'hwe/j_set_my_setting.php',
|
||||||
|
'hwe/j_set_npc_control.php',
|
||||||
|
'hwe/j_simulate_battle.php',
|
||||||
|
'hwe/j_troop.php',
|
||||||
|
'hwe/j_update_picked_general.php',
|
||||||
|
'hwe/j_vacation.php',
|
||||||
|
'hwe/lib.php',
|
||||||
'hwe/process_war.php',
|
'hwe/process_war.php',
|
||||||
'hwe/func.php'
|
'hwe/proc.php',
|
||||||
|
'hwe/readme.php',
|
||||||
|
'hwe/recent_map.php',
|
||||||
|
'hwe/select_general_from_pool.php',
|
||||||
|
'hwe/select_npc.php',
|
||||||
|
'hwe/t_diplomacy.php',
|
||||||
|
'hwe/v_board.php',
|
||||||
|
'hwe/v_inheritPoint.php',
|
||||||
|
'hwe/v_join.php',
|
||||||
|
'hwe/v_NPCControl.php',
|
||||||
],
|
],
|
||||||
|
|
||||||
// A list of directories that should be parsed for class and
|
// A list of directories that should be parsed for class and
|
||||||
@@ -74,6 +175,11 @@ return [
|
|||||||
'vendor/'
|
'vendor/'
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'suppress_issue_types' => [
|
||||||
|
'PhanUnreferencedUseNormal',
|
||||||
|
'PhanTypeArraySuspiciousNullable',
|
||||||
|
],
|
||||||
|
|
||||||
// A list of plugin files to execute.
|
// A list of plugin files to execute.
|
||||||
// See https://github.com/phan/phan/tree/master/.phan/plugins for even more.
|
// See https://github.com/phan/phan/tree/master/.phan/plugins for even more.
|
||||||
// (Pass these in as relative paths.
|
// (Pass these in as relative paths.
|
||||||
|
|||||||
@@ -25,4 +25,8 @@
|
|||||||
"/pya":true,
|
"/pya":true,
|
||||||
"/twe":true,
|
"/twe":true,
|
||||||
},
|
},
|
||||||
|
"cSpell.words": [
|
||||||
|
"josa",
|
||||||
|
"sammo"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>닫혀 있습니다.</title>
|
||||||
|
<script>
|
||||||
|
setTimeout(function(){
|
||||||
|
window.location.href = '../';
|
||||||
|
}, 5000);
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
html, body{
|
||||||
|
background-color:black;
|
||||||
|
color:yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
서버가 닫혀있습니다.<br>
|
||||||
|
잠시 뒤에 입구로 이동합니다.
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
The MIT License
|
The MIT License
|
||||||
|
|
||||||
Copyright (c) 2018 Hide_D, 62che
|
Copyright (c) 2022 Hide_D, 62che
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -5,34 +5,44 @@
|
|||||||
|
|
||||||
## 요구사항
|
## 요구사항
|
||||||
|
|
||||||
* Apache2
|
* Apache2 또는 nginx
|
||||||
* <code>mpm_event</code> 권장
|
* Apache2인 경우 `mpm_event` 권장
|
||||||
* PHP 7.2 이상
|
* PHP 8.0 이상
|
||||||
* <code>php-fpm</code> 권장
|
* `php-fpm` 권장
|
||||||
* php에서 curl을 실행가능해야 합니다.
|
* php에서 curl, pdo-sqlite을 실행가능해야 합니다.
|
||||||
* MySQL 5.6 이상, 또는 MariaDB 10.0 이상
|
* mysqli, mysqlnd
|
||||||
* <code>git</code>
|
* gd
|
||||||
* <code>curl</code>
|
* mbstring
|
||||||
|
* NodeJS 14 이상
|
||||||
|
* 내부의 git을 통해 upgrade 때 `webpack build` 용도로 필요합니다.
|
||||||
|
* MariaDB 10.2.1 이상
|
||||||
|
* 현재 MySQL은 지원하지 않습니다.
|
||||||
|
* `git`
|
||||||
|
* `curl`
|
||||||
|
|
||||||
Linux는 Ubuntu 16.04, Windows는 Windows 10에서 XAMPP를 사용한 환경에서 테스트되었습니다.
|
Linux는 Ubuntu 18.04, 20.04, Windows는 WSL2를 사용한 환경에서 테스트되었습니다.
|
||||||
|
|
||||||
Docker를 이용한 설치는 계획중입니다.
|
Docker를 이용한 설치도 제공하고 있습니다.
|
||||||
|
|
||||||
## 설치
|
## Docker를 이용한 설치
|
||||||
|
|
||||||
|
https://storage.hided.net/gitea/devsam/docker 를 참고해 주세요.
|
||||||
|
|
||||||
|
## 수동 설치
|
||||||
|
|
||||||
본 게임은 <code>git</code>을 이용한 업그레이드 시스템을 구현하였으므로, <code>git</code>이 필요합니다.
|
본 게임은 <code>git</code>을 이용한 업그레이드 시스템을 구현하였으므로, <code>git</code>이 필요합니다.
|
||||||
또한 웹 서비스 데몬을 운영중인 사용자(일반적으로 <code>www-data</code>, <code>apache</code>)에게 디렉토리 권한이 주어져야합니다.
|
또한 웹 서비스 데몬을 운영중인 사용자(일반적으로 <code>www-data</code>)에게 디렉토리 권한이 주어져야합니다.
|
||||||
|
|
||||||
### 다운로드
|
### 다운로드
|
||||||
|
|
||||||
웹 데몬 user가 <code>www-data</code>인 경우 다음과 같이 입력하여 최신 배포버전과 이미지 파일을 얻을 수 있습니다.
|
웹 데몬 user가 <code>www-data</code>인 경우 다음과 같이 입력하여 최신 배포버전과 이미지 파일을 얻을 수 있습니다.
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo -u www-data git clone ssh://git@storage.hided.net:2525/devsam/core.git
|
sudo -u www-data git clone https://storage.hided.net/gitea/devsam/core.git
|
||||||
git clone ssh://git@storage.hided.net:2525/devsam/image.git
|
sudo -u www-data git clone https://storage.hided.net/gitea/devsam/image.git
|
||||||
```
|
```
|
||||||
|
|
||||||
> 이미지는 git hook을 이용한 업데이트 기능을 제공하지만 아직 범용성 있는 설계가 되어있진 않습니다.
|
> 이미지는 hook/git_hook.php을 통해 동기화되며, 서버 설치 과정에 이미지 갱신 키를 지정하는 것으로 '훼' 서버 업데이트 시 동기화됩니다. 이미지 서버가 게임 서버와 별개여도 동작하나, php와 git을 지원해야합니다.
|
||||||
|
|
||||||
### 설치
|
### 설치
|
||||||
|
|
||||||
@@ -45,9 +55,9 @@ Database 수는 로그인 관리 서버 1개, 내부 서버 7개로, 총 8개의
|
|||||||
|
|
||||||
## 카카오로그인 연동
|
## 카카오로그인 연동
|
||||||
|
|
||||||
현재 카카오로그인 API KEY를 입력하는 작업이 설치과정에 추가되어있지 않습니다.
|
서버 설치 시 카카오 로그인 연동을 위한 API KEY를 입력받습니다.
|
||||||
|
|
||||||
<code>f_install/templates/KakaoKey.orig.php</code> 를 <code>d_setting/KakaoKey.php</code>로 복사한 후 API 키를 입력하여야 합니다.
|
만약 설치 이후 API KEY를 변경하고자 하는 경우 <code>d_setting/KakaoKey.php</code>에서 API키를 변경해야 합니다.
|
||||||
|
|
||||||
|
|
||||||
## 라이선스
|
## 라이선스
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
require(__DIR__ . '/vendor/autoload.php');
|
||||||
|
|
||||||
|
|
||||||
|
if (!class_exists('\\sammo\\RootDB')) {
|
||||||
|
Json::dieWithReason('No DB');
|
||||||
|
}
|
||||||
|
|
||||||
|
APIHelper::launch(dirname(__FILE__), $_GET['path']??null);
|
||||||
@@ -6,12 +6,16 @@
|
|||||||
"GPL-2.0-or-later",
|
"GPL-2.0-or-later",
|
||||||
"proprietary"
|
"proprietary"
|
||||||
],
|
],
|
||||||
|
"config": {
|
||||||
|
"platform": {
|
||||||
|
"php": "8.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"brandonwamboldt/utilphp": "^1.1",
|
"brandonwamboldt/utilphp": "^1.1",
|
||||||
"sergeytsalkov/meekrodb": "^2.3",
|
"sergeytsalkov/meekrodb": "^2.3",
|
||||||
"league/plates": "^3.3",
|
"league/plates": "^3.3",
|
||||||
"guzzlehttp/guzzle": "^6.3",
|
"guzzlehttp/guzzle": "^6.3",
|
||||||
"leafo/scssphp": "^0.7.5",
|
|
||||||
"monolog/monolog": "^1.23",
|
"monolog/monolog": "^1.23",
|
||||||
"firephp/firephp-core": "^0.4.0",
|
"firephp/firephp-core": "^0.4.0",
|
||||||
"vlucas/valitron": "^1.4",
|
"vlucas/valitron": "^1.4",
|
||||||
@@ -19,26 +23,34 @@
|
|||||||
"pguardiario/phpuri": "^1.0",
|
"pguardiario/phpuri": "^1.0",
|
||||||
"symfony/lock": "^4.1",
|
"symfony/lock": "^4.1",
|
||||||
"ezyang/htmlpurifier": "^4.10",
|
"ezyang/htmlpurifier": "^4.10",
|
||||||
"xemlock/htmlpurifier-html5": "^0.1.7"
|
"xemlock/htmlpurifier-html5": "^0.1.7",
|
||||||
|
"catfan/medoo": "^1.5",
|
||||||
|
"phan/phan": "*",
|
||||||
|
"erusev/parsedown-extra": "^0.8.1",
|
||||||
|
"nette/caching": "^3.0",
|
||||||
|
"illuminate/database": "^8.61",
|
||||||
|
"illuminate/events": "^8.61",
|
||||||
|
"spatie/data-transfer-object": "^3.7"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"sammo\\": [
|
"sammo\\": [
|
||||||
|
"d_setting",
|
||||||
"src/sammo"
|
"src/sammo"
|
||||||
],
|
],
|
||||||
"kakao\\": [
|
"kakao\\": [
|
||||||
|
"d_setting",
|
||||||
"src/kakao"
|
"src/kakao"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"classmap": [
|
|
||||||
"d_setting/"
|
|
||||||
],
|
|
||||||
"exclude-from-classmap": [
|
"exclude-from-classmap": [
|
||||||
"**/*.orig.php"
|
"**/*.orig.php"
|
||||||
],
|
],
|
||||||
"files":[
|
"files":[
|
||||||
"f_config/config.php"
|
"f_config/config.php"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9.5"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,24 +1,37 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
body {
|
body {
|
||||||
color:white; background-color:black; font-family: '맑은 고딕';
|
color: white;
|
||||||
|
background-color: black;
|
||||||
|
font-family: 'Pretendard';
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
border: solid 1px; border-spacing: 0px; border-collapse: separate; border-top-color: gray; border-left-color: gray; border-right-color: black; border-bottom-color: black;
|
border: solid 1px;
|
||||||
|
border-spacing: 0px;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-top-color: gray;
|
||||||
|
border-left-color: gray;
|
||||||
|
border-right-color: black;
|
||||||
|
border-bottom-color: black;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
font-size: 13px;
|
font-size: 14px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: '맑은 고딕';
|
|
||||||
}
|
}
|
||||||
th, td {
|
|
||||||
border: solid 1px; border-spacing: 0px; border-collapse: separate; border-top-color: gray; border-left-color: gray; border-right-color: black; border-bottom-color: black;
|
th,
|
||||||
|
td {
|
||||||
|
border: solid 1px;
|
||||||
|
border-spacing: 0px;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-top-color: gray;
|
||||||
|
border-left-color: gray;
|
||||||
|
border-right-color: black;
|
||||||
|
border-bottom-color: black;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
font-size: 13px;
|
font-size: 14px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: '맑은 고딕';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
a.just_link {
|
a.just_link {
|
||||||
@@ -39,19 +52,25 @@ a.just_link {
|
|||||||
.section_title {
|
.section_title {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
line-height: 50px;
|
line-height: 50px;
|
||||||
font-size: 30px; font-weight: bold;
|
font-size: 30px;
|
||||||
|
font-weight: bold;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: white;
|
color: white;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.legacy_layout div {
|
.legacy_layout div {
|
||||||
border: solid 1px; border-spacing: 0px; border-collapse: separate; border-top-color: gray; border-left-color: gray; border-right-color: black; border-bottom-color: black;
|
border: solid 1px;
|
||||||
|
border-spacing: 0px;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-top-color: gray;
|
||||||
|
border-left-color: gray;
|
||||||
|
border-right-color: black;
|
||||||
|
border-bottom-color: black;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
font-size: 13px;
|
font-size: 14px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: '맑은 고딕';;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.obj_fill {
|
.obj_fill {
|
||||||
@@ -61,9 +80,10 @@ a.just_link {
|
|||||||
}
|
}
|
||||||
|
|
||||||
button.with_skin {
|
button.with_skin {
|
||||||
background-color: black; color: white;
|
padding: 0 4px;
|
||||||
font-family: '맑은 고딕';
|
background-color: black;
|
||||||
font-size: 13px;
|
color: white;
|
||||||
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
button.with_skin:disabled {
|
button.with_skin:disabled {
|
||||||
@@ -71,27 +91,43 @@ button.with_skin:disabled {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input.with_skin {
|
input.with_skin {
|
||||||
background-color: black; color: white;
|
background-color: black;
|
||||||
font-family: '맑은 고딕';
|
color: white;
|
||||||
font-size: 13px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
input.with_skin:disabled {
|
input.with_skin:disabled {
|
||||||
background-color: #333333;
|
background-color: #333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.font0 { font-size: 10px; }
|
.font0 {
|
||||||
.font1 { font-size: 13px; }
|
font-size: 10px;
|
||||||
.font2 { font-size: 15px; }
|
}
|
||||||
.font3 { font-size: 20px; }
|
|
||||||
.font4 { font-size: 30px; }
|
.font1 {
|
||||||
.font5 { font-size: 50px; }
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.font2 {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.font3 {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.font4 {
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.font5 {
|
||||||
|
font-size: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
caption.section_title {
|
caption.section_title {
|
||||||
caption-side: top;
|
caption-side: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.samButton {
|
.samButton {
|
||||||
float: left;
|
float: left;
|
||||||
display: block;
|
display: block;
|
||||||
@@ -122,7 +158,6 @@ a.samButton.disabled {
|
|||||||
border: inset 2px white;
|
border: inset 2px white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.samButtonInner {
|
.samButtonInner {
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
@@ -164,3 +199,37 @@ a.samButton.disabled {
|
|||||||
.samCommandButton.disabled>.samButtonOuter>.samButtonInner::after {
|
.samCommandButton.disabled>.samButtonOuter>.samButtonInner::after {
|
||||||
content: '】'
|
content: '】'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tooltip_copyable_info .tooltiptext {
|
||||||
|
display: inline;
|
||||||
|
color: rgba(0, 0, 0, 0);
|
||||||
|
font-size: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltiptext {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden_but_copyable {
|
||||||
|
color: rgba(0, 0, 0, 0);
|
||||||
|
font-size: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vertical_flex {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vertical_flex .item {
|
||||||
|
display: block;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fill_box {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
body {
|
body {
|
||||||
line-height: 1.3;
|
line-height: 1.3;
|
||||||
}
|
}
|
||||||
@@ -25,18 +24,6 @@ body{
|
|||||||
height: 66px;
|
height: 66px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#server_list .server_create_and_select .general_create,
|
|
||||||
#server_list .server_create_and_select .general_select {
|
|
||||||
width: 120px; height: 33px;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#server_list .general_create,
|
|
||||||
#server_list .general_login {
|
|
||||||
width: 120px; height: 66px;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ignore_border {
|
.ignore_border {
|
||||||
border: 0;
|
border: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@@ -45,10 +32,10 @@ body{
|
|||||||
|
|
||||||
#user_info {
|
#user_info {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
width: 800px; height: 130px;
|
width: 800px;
|
||||||
|
height: 130px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#user_info button {
|
#user_info button {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
@@ -60,82 +47,110 @@ body{
|
|||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerList {
|
.Entrance_ServerList {
|
||||||
width: 800px; height: 64px;
|
width: 800px;
|
||||||
|
height: 64px;
|
||||||
border: none;
|
border: none;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListServer {
|
.Entrance_ServerListServer {
|
||||||
width: 98px; height: 64px;
|
width: 98px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListDown {
|
.Entrance_ServerListDown {
|
||||||
width: 698px; height: 64px;
|
width: 698px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListInfo {
|
.Entrance_ServerListInfo {
|
||||||
width: 398px; height: 64px;
|
width: 398px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListBlock {
|
.Entrance_ServerListBlock {
|
||||||
width: 298px; height: 64px;
|
width: 298px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
line-height: 64px;
|
line-height: 64px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListCharacter {
|
.Entrance_ServerListCharacter {
|
||||||
width: 64px; height: 64px;
|
width: 64px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListName {
|
.Entrance_ServerListName {
|
||||||
width: 112px; height: 64px;
|
width: 112px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
line-height: 64px;
|
line-height: 64px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.Entrance_ServerListSelect {
|
.Entrance_ServerListSelect {
|
||||||
width: 120px; height: 32px;
|
width: 120px;
|
||||||
|
height: 32px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#Entrance_000003 {
|
#Entrance_000003 {
|
||||||
width: 798px; height: 155px;
|
width: 798px;
|
||||||
|
height: 155px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Alert {
|
.Entrance_Alert {
|
||||||
color: red; font-size: 15px; font-weight: bold;
|
color: red;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Che {
|
.Entrance_Che {
|
||||||
color: white; font-size: 15px; font-weight: bold;
|
color: white;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Kwe {
|
.Entrance_Kwe {
|
||||||
color: yellow; font-size: 15px; font-weight: bold;
|
color: yellow;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Pwe {
|
.Entrance_Pwe {
|
||||||
color: orange; font-size: 15px; font-weight: bold;
|
color: orange;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Twe {
|
.Entrance_Twe {
|
||||||
color: magenta; font-size: 15px; font-weight: bold;
|
color: magenta;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Nya {
|
.Entrance_Nya {
|
||||||
color: #e67e22; font-size: 15px; font-weight: bold;
|
color: #e67e22;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Pya {
|
.Entrance_Pya {
|
||||||
color: #9b59b6; font-size: 15px; font-weight: bold;
|
color: #9b59b6;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Hwe {
|
.Entrance_Hwe {
|
||||||
color: red; font-size: 15px; font-weight: bold;
|
color: red;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.BtnPlate {
|
||||||
|
height: inherit;
|
||||||
}
|
}
|
||||||
@@ -9,7 +9,7 @@ body, html{
|
|||||||
|
|
||||||
h1.title {
|
h1.title {
|
||||||
font-size: 50px;
|
font-size: 50px;
|
||||||
font-family: 'Passion One', cursive;
|
font-family: 'Pretendard', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic';
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
h1.title {
|
h1.title {
|
||||||
font-size: 50px;
|
font-size: 50px;
|
||||||
font-family: 'Passion One', cursive;
|
font-family: 'Pretendard', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic';
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,116 +0,0 @@
|
|||||||
body, html{
|
|
||||||
height: 100%;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main{
|
|
||||||
margin-top: 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1.title {
|
|
||||||
font-size: 50px;
|
|
||||||
font-family: 'Passion One', cursive;
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr{
|
|
||||||
width: 10%;
|
|
||||||
/*color: #fff;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group{
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
label{
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
input,
|
|
||||||
input::-webkit-input-placeholder {
|
|
||||||
font-size: 11px;
|
|
||||||
padding-top: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main-login{
|
|
||||||
/*background-color: #fff;*/
|
|
||||||
/* shadows and rounded borders */
|
|
||||||
-moz-border-radius: 2px;
|
|
||||||
-webkit-border-radius: 2px;
|
|
||||||
border-radius: 2px;
|
|
||||||
-moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
|
|
||||||
-webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
|
|
||||||
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.main-center{
|
|
||||||
margin-top: 30px;
|
|
||||||
margin: 0 auto;
|
|
||||||
max-width: 330px;
|
|
||||||
padding: 40px 40px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-button{
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-register{
|
|
||||||
font-size: 11px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.col-form-label{
|
|
||||||
text-align:center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.terms{
|
|
||||||
max-height: 200px; overflow-y: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.terms pre{
|
|
||||||
width:100%;
|
|
||||||
white-space: pre-wrap; /* Since CSS 2.1 */
|
|
||||||
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
|
|
||||||
white-space: -pre-wrap; /* Opera 4-6 */
|
|
||||||
white-space: -o-pre-wrap; /* Opera 7 */
|
|
||||||
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
|
||||||
}
|
|
||||||
|
|
||||||
.vertical-center {
|
|
||||||
min-height: 100%; /* Fallback for browsers do NOT support vh unit */
|
|
||||||
min-height: 100vh; /* These two lines are counted as one :-) */
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#btn_kakao_login{
|
|
||||||
cursor: pointer;
|
|
||||||
height:46px;
|
|
||||||
width:116px;
|
|
||||||
background-color: transparent;
|
|
||||||
color:transparent;
|
|
||||||
border:0;
|
|
||||||
background-size: 100%; /* To fill the dimensions of container (button), or */
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: bottom center;
|
|
||||||
margin-top:5px;
|
|
||||||
background-image:url('../oauth_kakao/kakao_login_join.png');
|
|
||||||
}
|
|
||||||
|
|
||||||
#btn_kakao_login:hover {
|
|
||||||
background-image:url('../oauth_kakao/kakao_login_join_ov.png');
|
|
||||||
}
|
|
||||||
|
|
||||||
#bottom_box{
|
|
||||||
position:fixed;
|
|
||||||
bottom:0;
|
|
||||||
width:100%;
|
|
||||||
left:0;
|
|
||||||
}
|
|
||||||
#bottom_box .container{
|
|
||||||
text-align:center;
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/*! Select2 4.0.5 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k<a.length;k++)if("."===(m=a[k]))a.splice(k,1),k-=1;else if(".."===m){if(0===k||1===k&&".."===a[2]||".."===a[k-1])continue;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[Line truncated
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{displayLine truncated
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
#user_info_container{
|
#user_info_container{
|
||||||
width:500px;
|
width:550px;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
left:50%;
|
left:50%;
|
||||||
margin-left:-250px;
|
margin-left:-250px;
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Bootstrap v4.1.0 (https://getbootstrap.com/)
|
|
||||||
* Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e(t.bootstrap={},t.jQuery)}(this,function(t,e){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function c(r){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},e=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),e.forEach(function(t){var e,n,i;e=r,i=o[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return r}for(var r,n,o,a,l,f,h,u,d,p,g,m,_,v,E,y,b,T,C,w,I,D,A,S,O,N,k,L,P,x,j,R,M,H,W,F,U,B,K,V,Q,Y,G,q,z,X,J,Z,$,tt,et,nt,it,rt,ot,st,at,lt,ct,ft,ht,ut,dt,pt,gt=function(i){var e="transitionend";function t(t){var e=this,n=!1;return i(this).one(l.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||l.triggerTransitionEnd(e)},t),this}var l={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");e&&"#"!==e||(e=t.getAttribute("href")||"");try{return 0<i(document).find(e).length?e:null}cLine truncated
|
|
||||||
//# sourceMappingURL=bootstrap.bundle.min.js.map
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"sources":["../../rollupPluginBabelHelpers","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/index.js"],"names":["_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_objectSpread","arguments","source","ownKeys","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","forEach","obj","value","$","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","ClassName","Alert","DATA_API_KEY","Selector","Button","Default","DefaultType","Direction","Carousel","Dimension","Collapse","Util","TRANSITION_END","transitionEndEmulator","duration","_this","this","called","one","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","find","err","getTransitionDurationFromElement","transitionDuration","css","parseFloat","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","nodeType","typeCheckConfig","componentName","config","configTypes","property","hasOwnProperty","call","expectedLine truncated
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Bootswatch v4.1.1
|
|
||||||
* Homepage: https://bootswatch.com
|
|
||||||
* Copyright 2012-2018 Thomas Park
|
|
||||||
* Licensed under MIT
|
|
||||||
* Based on Bootstrap
|
|
||||||
*//*!
|
|
||||||
* Bootstrap v4.1.1 (https://getbootstrap.com/)
|
|
||||||
* Copyright 2011-2018 The Bootstrap Authors
|
|
||||||
* Copyright 2011-2018 Twitter, Inc.
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
||||||
*/@import url("https://fonts.googleapis.com/css?family=Lato:400,700,400italic");:root{--blue:#375a7f;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#E74C3C;--orange:#fd7e14;--yellow:#F39C12;--green:#00bc8c;--teal:#20c997;--cyan:#3498DB;--white:#fff;--gray:#999;--gray-dark:#303030;--primary:#375a7f;--secondary:#444;--success:#00bc8c;--info:#3498DB;--warning:#F39C12;--danger:#E74C3C;--light:#303030;--dark:#303030;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:0.9375rem;font-weight:400;line-height:1.5;color:#fff;text-align:left;background-color:#222}[tabindex="-1"]:focus{outline:0 !Line truncated
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_forms.scss","../../scss/mixins/_gradients.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_resetLine truncated
|
|
||||||
|
Before Width: | Height: | Size: 341 B |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 386 B |
|
Before Width: | Height: | Size: 346 B |
|
Before Width: | Height: | Size: 396 B |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
@@ -1,2 +0,0 @@
|
|||||||
/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
|
|
||||||
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=Line truncated
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
/*! jQuery UI - v1.12.1 - 2018-06-28
|
|
||||||
* http://jqueryui.com
|
|
||||||
* Includes: draggable.css, core.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
|
|
||||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=mint-choc&cornerRadiusShadow=8px&offsetLeftShadow=-8px&offsetTopShadow=-8px&thicknessShadow=8px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=aaaaaa&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=f1fd86&fcError=ffffff&borderColorError=5f391b&bgImgOpacityError=15&bgTextureError=glass&bgColorError=5f391b&iconColorHighlight=ffffff&fcHighlight=ffffff&borderColorHighlight=add978&bgImgOpacityHighlight=20&bgTextureHighlight=highlight_soft&bgColorHighlight=619226&iconColorActive=e3ddc9&fcActive=e3ddc9&borderColorActive=9c947c&bgImgOpacityActive=20&bgTextureActive=highlight_soft&bgColorActive=201913&iconColorHover=add978&fcHover=baec7e&borderColorHover=9c947c&bgImgOpacityHover=30&bgTextureHover=gloss_wave&bgColorHover=44372c&iconColorDefault=9bcc60&fcDefault=9bcc60&borderColorDefault=695444&bgImgOpacityDefault=20&bgTextureDefault=gloss_wave&bgColorDefault=1c160d&iconColorContent=222222&fcContent=ffffff&borderColorContent=9c947c&bgImgOpacityContent=10&bgTextureContent=inset_soft&bgColorContent=201913&iconColorHeader=e3ddc9&fcHeader=e3ddc9&borderColorHeader=695649&bgImgOpacityHeader=25&bgTextureHeader=gloss_wave&bgColorHeader=453326&cornerRadius=4px&fsDefault=1.1em&fwDefault=bold&ffDefault=Segoe%20UI%2CHelvetica%2CArial%2Csans-serif
|
|
||||||
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
|
||||||
|
|
||||||
.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizLine truncated
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
/*! jQuery UI - v1.12.1 - 2018-06-28
|
|
||||||
* http://jqueryui.com
|
|
||||||
* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/selectmenu.js, widgets/slider.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js
|
|
||||||
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
|
||||||
|
|
||||||
(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMLine truncated
|
|
||||||
},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),l=t.pageX,h=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(l=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(h=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(l=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(h=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,h=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,l=i?oLine truncated
|
|
||||||
t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,l="number"==typeof s.grid?[s.grid,s.grid]:s.grid,h=l[0]||1,c=l[1]||1,u=Math.round((n.width-o.width)/h)*h,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=l,_&&(p+=h),v&&(f+=c),g&&(p-=h),m&&(f-=c),/^(se|Line truncated
|
|
||||||
},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_Line truncated
|
|
||||||
},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode==Line truncated
|
|
||||||
break;case U[1]-1:I+=" ui-datepicker-group-last",T=" ui-corner-"+(B?"left":"right");break;default:I+=" ui-datepicker-group-middle",T=""}I+="'>"}for(I+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+T+"'>"+(/all|left/.test(T)&&0===k?B?o:s:"")+(/all|right/.test(T)&&0===k?B?s:o:"")+this._generateMonthYearHeader(t,Z,te,J,Q,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",M=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)P=(w+c)%7,M+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[P]+"'>"+p[P]+"</span></th>";for(I+=M+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),N=(this._getFirstDayOfMonth(te,Z)-c+7)%7,H=Math.ceil((N+S)/7),z=$?this.maxRows>H?this.maxRows:H:H,this.maxRows=z,A=this._daylightSavingAdjust(new Date(te,Z,1-N)),O=0;z>O;O++){for(I+="<tr>",E=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;7>w;w++)W=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!W[0]||J&&J>A||Q&&A>Q,E+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+W[1]+(A.getTime(Line truncated
|
|
||||||
},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,l,h,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),l=o.offset(),h=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=h?{left:0,top:0}:{left:e.pageX-l.left-o.width()/2,top:e.pageY-l.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,thisLine truncated
|
|
||||||
}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip;var f="ui-effects-",g="ui-effects-style",m="ui-effects-animated",_=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}fuLine truncated
|
|
||||||
@@ -1,152 +0,0 @@
|
|||||||
/*
|
|
||||||
jQuery Redirect v1.1.1
|
|
||||||
|
|
||||||
Copyright (c) 2013-2017 Miguel Galante
|
|
||||||
Copyright (c) 2011-2013 Nemanja Avramovic, www.avramovic.info
|
|
||||||
|
|
||||||
Licensed under CC BY-SA 4.0 License: http://creativecommons.org/licenses/by-sa/4.0/
|
|
||||||
|
|
||||||
This means everyone is allowed to:
|
|
||||||
|
|
||||||
Share - copy and redistribute the material in any medium or format
|
|
||||||
Adapt - remix, transform, and build upon the material for any purpose, even commercially.
|
|
||||||
Under following conditions:
|
|
||||||
|
|
||||||
Attribution - You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
|
|
||||||
ShareAlike - If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
|
|
||||||
|
|
||||||
*/
|
|
||||||
(function ($) {
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* jQuery Redirect
|
|
||||||
* @param {string} url - Url of the redirection
|
|
||||||
* @param {Object} values - (optional) An object with the data to send. If not present will look for values as QueryString in the target url.
|
|
||||||
* @param {string} method - (optional) The HTTP verb can be GET or POST (defaults to POST)
|
|
||||||
* @param {string} target - (optional) The target of the form. "_blank" will open the url in a new window.
|
|
||||||
* @param {boolean} traditional - (optional) This provides the same function as jquery's ajax function. The brackets are omitted on the field name if its an array. This allows arrays to work with MVC.net among others.
|
|
||||||
* @param {boolean} redirectTop - (optional) If its called from a iframe, force to navigate the top window.
|
|
||||||
*/
|
|
||||||
$.redirect = function (url, values, method, target, traditional, redirectTop) {
|
|
||||||
redirectTop = redirectTop || false;
|
|
||||||
var generatedForm = $.redirect.getForm(url, values, method, target, traditional);
|
|
||||||
$('body', redirectTop ? window.top.document : undefined).append(generatedForm.form);
|
|
||||||
generatedForm.submit();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
$.redirect.getForm = function (url, values, method, target, traditional) {
|
|
||||||
method = (method && ["GET", "POST", "PUT", "DELETE"].indexOf(method.toUpperCase()) !== -1) ? method.toUpperCase() : 'POST';
|
|
||||||
|
|
||||||
url = url.split("#");
|
|
||||||
var hash = url[1] ? ("#" + url[1]) : "";
|
|
||||||
url = url[0];
|
|
||||||
|
|
||||||
if (!values) {
|
|
||||||
var obj = $.parseUrl(url);
|
|
||||||
url = obj.url;
|
|
||||||
values = obj.params;
|
|
||||||
}
|
|
||||||
|
|
||||||
values = removeNulls(values);
|
|
||||||
|
|
||||||
var form = $('<form>')
|
|
||||||
.attr("method", method)
|
|
||||||
.attr("action", url + hash);
|
|
||||||
|
|
||||||
|
|
||||||
if (target) {
|
|
||||||
form.attr("target", target);
|
|
||||||
}
|
|
||||||
|
|
||||||
var submit = form[0].submit;
|
|
||||||
iterateValues(values, [], form, null, traditional);
|
|
||||||
|
|
||||||
return { form: form, submit: function () { submit.call(form[0]); } };
|
|
||||||
}
|
|
||||||
//Utility Functions
|
|
||||||
/**
|
|
||||||
* Url and QueryString Parser.
|
|
||||||
* @param {string} url - a Url to parse.
|
|
||||||
* @returns {object} an object with the parsed url with the following structure {url: URL, params:{ KEY: VALUE }}
|
|
||||||
*/
|
|
||||||
$.parseUrl = function (url) {
|
|
||||||
|
|
||||||
if (url.indexOf('?') === -1) {
|
|
||||||
return {
|
|
||||||
url: url,
|
|
||||||
params: {}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
var parts = url.split('?'),
|
|
||||||
query_string = parts[1],
|
|
||||||
elems = query_string.split('&');
|
|
||||||
url = parts[0];
|
|
||||||
|
|
||||||
var i, pair, obj = {};
|
|
||||||
for (i = 0; i < elems.length; i += 1) {
|
|
||||||
pair = elems[i].split('=');
|
|
||||||
obj[pair[0]] = pair[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
url: url,
|
|
||||||
params: obj
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
//Private Functions
|
|
||||||
var getInput = function (name, value, parent, array, traditional) {
|
|
||||||
var parentString;
|
|
||||||
if (parent.length > 0) {
|
|
||||||
parentString = parent[0];
|
|
||||||
var i;
|
|
||||||
for (i = 1; i < parent.length; i += 1) {
|
|
||||||
parentString += "[" + parent[i] + "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (array) {
|
|
||||||
if (traditional)
|
|
||||||
name = parentString;
|
|
||||||
else
|
|
||||||
name = parentString + "[" + name + "]";
|
|
||||||
} else {
|
|
||||||
name = parentString + "[" + name + "]";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $("<input>").attr("type", "hidden")
|
|
||||||
.attr("name", name)
|
|
||||||
.attr("value", value);
|
|
||||||
};
|
|
||||||
|
|
||||||
var iterateValues = function (values, parent, form, isArray, traditional) {
|
|
||||||
var i, iterateParent = [];
|
|
||||||
Object.keys(values).forEach(function (i) {
|
|
||||||
if (typeof values[i] === "object") {
|
|
||||||
iterateParent = parent.slice();
|
|
||||||
iterateParent.push(i);
|
|
||||||
iterateValues(values[i], iterateParent, form, Array.isArray(values[i]), traditional);
|
|
||||||
} else {
|
|
||||||
form.append(getInput(i, values[i], parent, isArray, traditional));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var removeNulls = function (values) {
|
|
||||||
var propNames = Object.getOwnPropertyNames(values);
|
|
||||||
for (var i = 0; i < propNames.length; i++) {
|
|
||||||
var propName = propNames[i];
|
|
||||||
if (values[propName] === null || values[propName] === undefined) {
|
|
||||||
delete values[propName];
|
|
||||||
} else if (typeof values[propName] === 'object') {
|
|
||||||
values[propName] = removeNulls(values[propName]);
|
|
||||||
} else if (values[propName].length < 1) {
|
|
||||||
delete values[propName];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return values;
|
|
||||||
};
|
|
||||||
|
|
||||||
}(window.jQuery || window.Zepto || window.jqlite));
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
/*! jQuery Validation Plugin - v1.17.0 - 7/29/2017
|
|
||||||
* https://jqueryvalidation.org/
|
|
||||||
* Copyright (c) 2017 Jörn Zaefferer; Licensed MIT */
|
|
||||||
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!c.settings.submitHandler||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(null!=j&&(!j.form&&j.hasAttributeLine truncated
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
TODO : adobdb5, phpmailer5(?), plates, utilphp
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(n){return"너무 깁니다. "+(n.input.length-n.maximum)+" 글자 지워주세요."},inputTooShort:function(n){return"너무 짧습니다. "+(n.minimum-n.input.length)+" 글자 더 입력해주세요."},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(n){return"최대 "+n.maximum+"개까지만 선택 가능합니다."},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"},removeAllItems:function(){return"모든 항목 삭제"}}}),n.define,n.require}();
|
||||||
@@ -0,0 +1,553 @@
|
|||||||
|
/* select2-bootstrap4 with Darkly */
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection {
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
color: #495057;
|
||||||
|
font-size: 1rem;
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection.form-control {
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-search--dropdown .select2-search__field {
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
color: #495057;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-search__field {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-search__field::-webkit-input-placeholder {
|
||||||
|
color: #6c757d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-search__field:-moz-placeholder {
|
||||||
|
color: #6c757d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-search__field::-moz-placeholder {
|
||||||
|
color: #6c757d;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-search__field:-ms-input-placeholder {
|
||||||
|
color: #6c757d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option {
|
||||||
|
padding: 0.75rem 0.375rem;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option[role=group] {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option[aria-disabled=true] {
|
||||||
|
color: #6c757d;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option[aria-selected=true] {
|
||||||
|
background-color: #f8f9fa;
|
||||||
|
color: #16181b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option--highlighted[aria-selected] {
|
||||||
|
background-color: #007bff;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option .select2-results__option {
|
||||||
|
padding: 0.75rem 0.375rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__group {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -0.375rem;
|
||||||
|
padding-left: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -0.75rem;
|
||||||
|
padding-left: 1.125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -1.125rem;
|
||||||
|
padding-left: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -1.5rem;
|
||||||
|
padding-left: 1.875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -1.875rem;
|
||||||
|
padding-left: 2.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results__group {
|
||||||
|
color: #6c757d;
|
||||||
|
display: block;
|
||||||
|
padding: 0.75rem 0.375rem;
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 1;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4.select2-container--focus .select2-selection,
|
||||||
|
.select2-container--bootstrap4.select2-container--open .select2-selection {
|
||||||
|
transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
|
||||||
|
border-color: #80bdff;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (prefers-reduced-motion: reduce) {
|
||||||
|
.select2-container--bootstrap4.select2-container--focus .select2-selection,
|
||||||
|
.select2-container--bootstrap4.select2-container--open .select2-selection {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4.select2-container--open .select2-selection .select2-selection__arrow b {
|
||||||
|
border-color: transparent transparent #6c757d transparent;
|
||||||
|
border-width: 0 0.25rem 0.25rem 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4.select2-container--open.select2-container--below .select2-selection {
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4.select2-container--open.select2-container--above .select2-selection {
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-top-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection__clear {
|
||||||
|
color: #6c757d;
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection__clear:hover {
|
||||||
|
color: #343a40;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4.select2-container--disabled .select2-selection {
|
||||||
|
border-color: #ced4da;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4.select2-container--disabled .select2-selection,
|
||||||
|
.select2-container--bootstrap4.select2-container--disabled .select2-search__field {
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4.select2-container--disabled .select2-selection,
|
||||||
|
.select2-container--bootstrap4.select2-container--disabled .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #e9ecef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4.select2-container--disabled .select2-selection__clear,
|
||||||
|
.select2-container--bootstrap4.select2-container--disabled .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-dropdown {
|
||||||
|
border-color: #80bdff;
|
||||||
|
border-width: 1px;
|
||||||
|
overflow-x: hidden;
|
||||||
|
margin-top: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-dropdown--above {
|
||||||
|
margin-top: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-results>.select2-results__options {
|
||||||
|
max-height: 200px;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--single {
|
||||||
|
height: calc(2.25rem + 2px);
|
||||||
|
line-height: 1;
|
||||||
|
padding: 0.75rem 1.125rem 0.75rem 0.375rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0.375rem;
|
||||||
|
top: 0;
|
||||||
|
width: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-color: #6c757d transparent transparent transparent;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 0.25rem 0.25rem 0 0.25rem;
|
||||||
|
height: 0;
|
||||||
|
left: 0;
|
||||||
|
margin-left: -0.25rem;
|
||||||
|
margin-top: -0.125rem;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered {
|
||||||
|
color: #495057;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--single .select2-selection__placeholder {
|
||||||
|
color: #6c757d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple {
|
||||||
|
min-height: calc(2.25rem + 2px);
|
||||||
|
padding: 0;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__rendered {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: block;
|
||||||
|
line-height: 1;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0.75rem 0.375rem 0 0.75rem;
|
||||||
|
width: 100%;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__placeholder {
|
||||||
|
color: #6c757d;
|
||||||
|
float: left;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice {
|
||||||
|
color: #495057;
|
||||||
|
background: transparent;
|
||||||
|
border: 1px solid #343a40;
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
cursor: default;
|
||||||
|
float: left;
|
||||||
|
margin: -0.25rem 0 0 0.1875rem;
|
||||||
|
padding: 0 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field {
|
||||||
|
background: transparent;
|
||||||
|
padding: 0 0.375rem;
|
||||||
|
height: calc(2.25rem + 2px)-2;
|
||||||
|
line-height: 1;
|
||||||
|
margin-top: 0;
|
||||||
|
min-width: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
color: #6c757d;
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 0.375rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice__remove:hover {
|
||||||
|
color: #343a40;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear {
|
||||||
|
margin-top: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--single.input-sm,
|
||||||
|
.input-group-sm .select2-container--bootstrap4 .select2-selection--single,
|
||||||
|
.form-group-sm .select2-container--bootstrap4 .select2-selection--single {
|
||||||
|
border-radius: 0.2rem;
|
||||||
|
font-size: 75%;
|
||||||
|
height: calc(1.8125rem + 2px);
|
||||||
|
line-height: 1;
|
||||||
|
padding: 0.5rem 1rem 0.5rem 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--single.input-sm .select2-selection__arrow b,
|
||||||
|
.input-group-sm .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b,
|
||||||
|
.form-group-sm .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b {
|
||||||
|
margin-left: -0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple.input-sm,
|
||||||
|
.input-group-sm .select2-container--bootstrap4 .select2-selection--multiple,
|
||||||
|
.form-group-sm .select2-container--bootstrap4 .select2-selection--multiple {
|
||||||
|
min-height: calc(1.8125rem + 2px);
|
||||||
|
border-radius: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-selection__rendered,
|
||||||
|
.input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__rendered,
|
||||||
|
.form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__rendered {
|
||||||
|
padding: 0.5rem 0.25rem 0 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-selection__choice,
|
||||||
|
.input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice,
|
||||||
|
.form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice {
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 1;
|
||||||
|
margin: 0 0 0 0.125rem;
|
||||||
|
padding: 0 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-search--inline .select2-search__field,
|
||||||
|
.input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field,
|
||||||
|
.form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field {
|
||||||
|
padding: 0 0.25rem;
|
||||||
|
font-size: 75%;
|
||||||
|
height: calc(1.8125rem + 2px)-2;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-selection__clear,
|
||||||
|
.input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear,
|
||||||
|
.form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear {
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--single.input-lg,
|
||||||
|
.input-group-lg .select2-container--bootstrap4 .select2-selection--single,
|
||||||
|
.form-group-lg .select2-container--bootstrap4 .select2-selection--single {
|
||||||
|
border-radius: 0.3rem;
|
||||||
|
font-size: 1.25rem;
|
||||||
|
height: calc(2.875rem + 2px);
|
||||||
|
line-height: 1;
|
||||||
|
padding: 1rem 1.4375rem 1rem 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--single.input-lg .select2-selection__arrow,
|
||||||
|
.input-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow,
|
||||||
|
.form-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow {
|
||||||
|
width: 0.3125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--single.input-lg .select2-selection__arrow b,
|
||||||
|
.input-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b,
|
||||||
|
.form-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-width: 0.3125rem 0.3125rem 0 0.3125rem;
|
||||||
|
margin-left: -0.3125rem;
|
||||||
|
margin-left: -1rem;
|
||||||
|
margin-top: -0.15625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple.input-lg,
|
||||||
|
.input-group-lg .select2-container--bootstrap4 .select2-selection--multiple,
|
||||||
|
.form-group-lg .select2-container--bootstrap4 .select2-selection--multiple {
|
||||||
|
min-height: calc(2.875rem + 2px);
|
||||||
|
border-radius: 0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple.input-lg .select2-selection__choice,
|
||||||
|
.input-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice,
|
||||||
|
.form-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
line-height: 1;
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
margin: 0rem 0 0 0.25rem;
|
||||||
|
padding: 0 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple.input-lg .select2-search--inline .select2-search__field,
|
||||||
|
.input-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field,
|
||||||
|
.form-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field {
|
||||||
|
padding: 0 0.5rem;
|
||||||
|
font-size: 1.25rem;
|
||||||
|
height: calc(2.875rem + 2px)-2;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection--multiple.input-lg .select2-selection__clear,
|
||||||
|
.input-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear,
|
||||||
|
.form-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear {
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4 .select2-selection.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-color: transparent transparent #6c757d transparent;
|
||||||
|
border-width: 0 0.3125rem 0.3125rem 0.3125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group-lg .select2-container--bootstrap4 .select2-selection.select2-container--open .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-color: transparent transparent #6c757d transparent;
|
||||||
|
border-width: 0 0.3125rem 0.3125rem 0.3125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4[dir="rtl"] .select2-selection--single {
|
||||||
|
padding-left: 1.125rem;
|
||||||
|
padding-right: 0.375rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4[dir="rtl"] .select2-selection--single .select2-selection__rendered {
|
||||||
|
padding-right: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4[dir="rtl"] .select2-selection--single .select2-selection__clear {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4[dir="rtl"] .select2-selection--single .select2-selection__arrow {
|
||||||
|
left: 0.375rem;
|
||||||
|
right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4[dir="rtl"] .select2-selection--single .select2-selection__arrow b {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4[dir="rtl"] .select2-selection--multiple .select2-selection__choice,
|
||||||
|
.select2-container--bootstrap4[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,
|
||||||
|
.select2-container--bootstrap4[dir="rtl"] .select2-selection--multiple .select2-search--inline {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0.1875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--bootstrap4[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-warning .select2-dropdown,
|
||||||
|
.has-warning .select2-selection {
|
||||||
|
border-color: #ffc107;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-warning .select2-container--focus .select2-selection,
|
||||||
|
.has-warning .select2-container--open .select2-selection {
|
||||||
|
border-color: #d39e00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-warning.select2-drop-active {
|
||||||
|
border-color: #d39e00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-warning.select2-drop-active.select2-drop.select2-drop-above {
|
||||||
|
border-top-color: #d39e00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-error .select2-dropdown,
|
||||||
|
.has-error .select2-selection {
|
||||||
|
border-color: #dc3545;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-error .select2-container--focus .select2-selection,
|
||||||
|
.has-error .select2-container--open .select2-selection {
|
||||||
|
border-color: #bd2130;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-error.select2-drop-active {
|
||||||
|
border-color: #bd2130;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-error.select2-drop-active.select2-drop.select2-drop-above {
|
||||||
|
border-top-color: #bd2130;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-success .select2-dropdown,
|
||||||
|
.has-success .select2-selection {
|
||||||
|
border-color: #28a745;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-success .select2-container--focus .select2-selection,
|
||||||
|
.has-success .select2-container--open .select2-selection {
|
||||||
|
border-color: #1e7e34;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-success.select2-drop-active {
|
||||||
|
border-color: #1e7e34;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-success.select2-drop-active.select2-drop.select2-drop-above {
|
||||||
|
border-top-color: #1e7e34;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap4>.selection>.select2-selection,
|
||||||
|
.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap4>.selection>.select2-selection.form-control {
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap4:not(:last-child)>.selection>.select2-selection,
|
||||||
|
.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap4:not(:last-child)>.selection>.select2-selection.form-control {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap4:last-child>.selection>.select2-selection,
|
||||||
|
.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap4:last-child>.selection>.select2-selection.form-control {
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group>.select2-container--bootstrap4 {
|
||||||
|
display: table;
|
||||||
|
table-layout: fixed;
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group>.select2-container--bootstrap4>.selection>.select2-selection.form-control {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group>.select2-container--bootstrap4.select2-container--open,
|
||||||
|
.input-group>.select2-container--bootstrap4.select2-container--focus {
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group>.select2-container--bootstrap4,
|
||||||
|
.input-group>.select2-container--bootstrap4 .input-group-btn,
|
||||||
|
.input-group>.select2-container--bootstrap4 .input-group-btn .btn {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control.select2-hidden-accessible {
|
||||||
|
position: absolute !important;
|
||||||
|
width: 1px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 576px) {
|
||||||
|
.form-inline .select2-container--bootstrap4 {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,481 @@
|
|||||||
|
.select2-container {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0;
|
||||||
|
position: relative;
|
||||||
|
vertical-align: middle; }
|
||||||
|
.select2-container .select2-selection--single {
|
||||||
|
box-sizing: border-box;
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
height: 28px;
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-select: none; }
|
||||||
|
.select2-container .select2-selection--single .select2-selection__rendered {
|
||||||
|
display: block;
|
||||||
|
padding-left: 8px;
|
||||||
|
padding-right: 20px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap; }
|
||||||
|
.select2-container .select2-selection--single .select2-selection__clear {
|
||||||
|
position: relative; }
|
||||||
|
.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
|
||||||
|
padding-right: 8px;
|
||||||
|
padding-left: 20px; }
|
||||||
|
.select2-container .select2-selection--multiple {
|
||||||
|
box-sizing: border-box;
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
min-height: 32px;
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-select: none; }
|
||||||
|
.select2-container .select2-selection--multiple .select2-selection__rendered {
|
||||||
|
display: inline-block;
|
||||||
|
overflow: hidden;
|
||||||
|
padding-left: 8px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap; }
|
||||||
|
.select2-container .select2-search--inline {
|
||||||
|
float: left; }
|
||||||
|
.select2-container .select2-search--inline .select2-search__field {
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: none;
|
||||||
|
font-size: 100%;
|
||||||
|
margin-top: 5px;
|
||||||
|
padding: 0; }
|
||||||
|
.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
|
||||||
|
-webkit-appearance: none; }
|
||||||
|
|
||||||
|
.select2-dropdown {
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: -100000px;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 1051; }
|
||||||
|
|
||||||
|
.select2-results {
|
||||||
|
display: block; }
|
||||||
|
|
||||||
|
.select2-results__options {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0; }
|
||||||
|
|
||||||
|
.select2-results__option {
|
||||||
|
padding: 6px;
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-select: none; }
|
||||||
|
.select2-results__option[aria-selected] {
|
||||||
|
cursor: pointer; }
|
||||||
|
|
||||||
|
.select2-container--open .select2-dropdown {
|
||||||
|
left: 0; }
|
||||||
|
|
||||||
|
.select2-container--open .select2-dropdown--above {
|
||||||
|
border-bottom: none;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--open .select2-dropdown--below {
|
||||||
|
border-top: none;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-search--dropdown {
|
||||||
|
display: block;
|
||||||
|
padding: 4px; }
|
||||||
|
.select2-search--dropdown .select2-search__field {
|
||||||
|
padding: 4px;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box; }
|
||||||
|
.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
|
||||||
|
-webkit-appearance: none; }
|
||||||
|
.select2-search--dropdown.select2-search--hide {
|
||||||
|
display: none; }
|
||||||
|
|
||||||
|
.select2-close-mask {
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: block;
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
min-height: 100%;
|
||||||
|
min-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
width: auto;
|
||||||
|
opacity: 0;
|
||||||
|
z-index: 99;
|
||||||
|
background-color: #fff;
|
||||||
|
filter: alpha(opacity=0); }
|
||||||
|
|
||||||
|
.select2-hidden-accessible {
|
||||||
|
border: 0 !important;
|
||||||
|
clip: rect(0 0 0 0) !important;
|
||||||
|
-webkit-clip-path: inset(50%) !important;
|
||||||
|
clip-path: inset(50%) !important;
|
||||||
|
height: 1px !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
position: absolute !important;
|
||||||
|
width: 1px !important;
|
||||||
|
white-space: nowrap !important; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-selection--single {
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px; }
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__rendered {
|
||||||
|
color: #444;
|
||||||
|
line-height: 28px; }
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__clear {
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
font-weight: bold; }
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__placeholder {
|
||||||
|
color: #999; }
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__arrow {
|
||||||
|
height: 26px;
|
||||||
|
position: absolute;
|
||||||
|
top: 1px;
|
||||||
|
right: 1px;
|
||||||
|
width: 20px; }
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-color: #888 transparent transparent transparent;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 5px 4px 0 4px;
|
||||||
|
height: 0;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -4px;
|
||||||
|
margin-top: -2px;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
width: 0; }
|
||||||
|
|
||||||
|
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
|
||||||
|
float: left; }
|
||||||
|
|
||||||
|
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
|
||||||
|
left: 1px;
|
||||||
|
right: auto; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--disabled .select2-selection--single {
|
||||||
|
background-color: #eee;
|
||||||
|
cursor: default; }
|
||||||
|
.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
|
||||||
|
display: none; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-color: transparent transparent #888 transparent;
|
||||||
|
border-width: 0 4px 5px 4px; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-selection--multiple {
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: text; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__rendered {
|
||||||
|
box-sizing: border-box;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 5px;
|
||||||
|
width: 100%; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__rendered li {
|
||||||
|
list-style: none; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__clear {
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-right: 10px;
|
||||||
|
padding: 1px; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #e4e4e4;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: default;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
margin-top: 5px;
|
||||||
|
padding: 0 5px; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
color: #999;
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 2px; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
|
||||||
|
color: #333; }
|
||||||
|
|
||||||
|
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
|
||||||
|
float: right; }
|
||||||
|
|
||||||
|
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: auto; }
|
||||||
|
|
||||||
|
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: auto; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--focus .select2-selection--multiple {
|
||||||
|
border: solid black 1px;
|
||||||
|
outline: 0; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--disabled .select2-selection--multiple {
|
||||||
|
background-color: #eee;
|
||||||
|
cursor: default; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--disabled .select2-selection__choice__remove {
|
||||||
|
display: none; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-search--dropdown .select2-search__field {
|
||||||
|
border: 1px solid #aaa; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-search--inline .select2-search__field {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
outline: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
-webkit-appearance: textfield; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results > .select2-results__options {
|
||||||
|
max-height: 200px;
|
||||||
|
overflow-y: auto; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__option[role=group] {
|
||||||
|
padding: 0; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__option[aria-disabled=true] {
|
||||||
|
color: #999; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__option[aria-selected=true] {
|
||||||
|
background-color: #ddd; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option {
|
||||||
|
padding-left: 1em; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__group {
|
||||||
|
padding-left: 0; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -1em;
|
||||||
|
padding-left: 2em; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -2em;
|
||||||
|
padding-left: 3em; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -3em;
|
||||||
|
padding-left: 4em; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -4em;
|
||||||
|
padding-left: 5em; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -5em;
|
||||||
|
padding-left: 6em; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__option--highlighted[aria-selected] {
|
||||||
|
background-color: #5897fb;
|
||||||
|
color: white; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__group {
|
||||||
|
cursor: default;
|
||||||
|
display: block;
|
||||||
|
padding: 6px; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-selection--single {
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
outline: 0;
|
||||||
|
background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
|
||||||
|
background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
|
||||||
|
background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
|
||||||
|
.select2-container--classic .select2-selection--single:focus {
|
||||||
|
border: 1px solid #5897fb; }
|
||||||
|
.select2-container--classic .select2-selection--single .select2-selection__rendered {
|
||||||
|
color: #444;
|
||||||
|
line-height: 28px; }
|
||||||
|
.select2-container--classic .select2-selection--single .select2-selection__clear {
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 10px; }
|
||||||
|
.select2-container--classic .select2-selection--single .select2-selection__placeholder {
|
||||||
|
color: #999; }
|
||||||
|
.select2-container--classic .select2-selection--single .select2-selection__arrow {
|
||||||
|
background-color: #ddd;
|
||||||
|
border: none;
|
||||||
|
border-left: 1px solid #aaa;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
height: 26px;
|
||||||
|
position: absolute;
|
||||||
|
top: 1px;
|
||||||
|
right: 1px;
|
||||||
|
width: 20px;
|
||||||
|
background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
|
||||||
|
.select2-container--classic .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-color: #888 transparent transparent transparent;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 5px 4px 0 4px;
|
||||||
|
height: 0;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -4px;
|
||||||
|
margin-top: -2px;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
width: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
|
||||||
|
float: left; }
|
||||||
|
|
||||||
|
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
|
||||||
|
border: none;
|
||||||
|
border-right: 1px solid #aaa;
|
||||||
|
border-radius: 0;
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
left: 1px;
|
||||||
|
right: auto; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open .select2-selection--single {
|
||||||
|
border: 1px solid #5897fb; }
|
||||||
|
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
|
||||||
|
background: transparent;
|
||||||
|
border: none; }
|
||||||
|
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-color: transparent transparent #888 transparent;
|
||||||
|
border-width: 0 4px 5px 4px; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
|
||||||
|
border-top: none;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
|
||||||
|
background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
|
||||||
|
background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
|
||||||
|
border-bottom: none;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-selection--multiple {
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: text;
|
||||||
|
outline: 0; }
|
||||||
|
.select2-container--classic .select2-selection--multiple:focus {
|
||||||
|
border: 1px solid #5897fb; }
|
||||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__rendered {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 5px; }
|
||||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__clear {
|
||||||
|
display: none; }
|
||||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #e4e4e4;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: default;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
margin-top: 5px;
|
||||||
|
padding: 0 5px; }
|
||||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
color: #888;
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 2px; }
|
||||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
|
||||||
|
color: #555; }
|
||||||
|
|
||||||
|
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
|
||||||
|
float: right;
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: auto; }
|
||||||
|
|
||||||
|
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: auto; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open .select2-selection--multiple {
|
||||||
|
border: 1px solid #5897fb; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
|
||||||
|
border-top: none;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
|
||||||
|
border-bottom: none;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-search--dropdown .select2-search__field {
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
outline: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-search--inline .select2-search__field {
|
||||||
|
outline: 0;
|
||||||
|
box-shadow: none; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-dropdown {
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid transparent; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-dropdown--above {
|
||||||
|
border-bottom: none; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-dropdown--below {
|
||||||
|
border-top: none; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results > .select2-results__options {
|
||||||
|
max-height: 200px;
|
||||||
|
overflow-y: auto; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__option[role=group] {
|
||||||
|
padding: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__option[aria-disabled=true] {
|
||||||
|
color: grey; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__option--highlighted[aria-selected] {
|
||||||
|
background-color: #3875d7;
|
||||||
|
color: white; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__group {
|
||||||
|
cursor: default;
|
||||||
|
display: block;
|
||||||
|
padding: 6px; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open .select2-dropdown {
|
||||||
|
border-color: #5897fb; }
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(d){var e=function(){if(d&&d.fn&&d.fn.select2&&d.fn.select2.amd)var e=d.fn.select2.amd;var t,n,i,h,o,s,f,g,m,v,y,_,r,a,w,l;function b(e,t){return r.call(e,t)}function c(e,t){var n,i,r,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&w.test(e[s])&&(e[s]=e[s].replace(w,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u<e.length;u++)if("."===(p=e[u]))e.splice(u,1),u-=1;else if(".."===p){if(0===u||1===u&&".."===e[2]||".."===e[u-1])continue;0<u&&(e.splice(u-1,2),u-=2)}e=e.join("/")}if((h||g)&&f){for(u=(n=e.split("/")).length;0<u;u-=1){if(i=n.slice(0,u).join("/"),h)for(d=h.length;0<d;d-=1)if(r=(r=f[h.slice(0,d).join("/")])&&r[i]){o=r,a=u;break}if(o)break;!l&&g&&g[i]&&(l=g[i],c=u)}!o&&l&&(o=l,a=c),o&&(n.splice(0,a,o),e=n.join("/"))}return e}function A(t,n){return function(){var e=a.call(arguments,0);return"string"!=typeof e[0]&&1===e.length&&e.push(null),s.apply(h,e.concat([t,n]))}}function x(t){return function(e){m[t]=e}}function D(e){if(b(v,e)){var t=v[e];delete v[e],_[e]=!0,o.apply(h,t)}if(!b(m,e)&&!b(_,e))throw new Error("No "+e);return m[e]}function u(e){var t,n=e?e.indexOf("!"):-1;return-1<n&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{displayLine truncated
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(u){var e=function(){if(u&&u.fn&&u.fn.select2&&u.fn.select2.amd)var e=u.fn.select2.amd;var t,n,r,h,o,s,f,g,m,v,y,_,i,a,b;function w(e,t){return i.call(e,t)}function l(e,t){var n,r,i,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&b.test(e[s])&&(e[s]=e[s].replace(b,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u<e.length;u++)if("."===(p=e[u]))e.splice(u,1),u-=1;else if(".."===p){if(0===u||1===u&&".."===e[2]||".."===e[u-1])continue;0<u&&(e.splice(u-1,2),u-=2)}e=e.join("/")}if((h||g)&&f){for(u=(n=e.split("/")).length;0<u;u-=1){if(r=n.slice(0,u).join("/"),h)for(d=h.length;0<d;d-=1)if(i=(i=f[h.slice(0,d).join("/")])&&i[r]){o=i,a=u;break}if(o)break;!l&&g&&g[r]&&(l=g[r],c=u)}!o&&l&&(o=l,a=c),o&&(n.splice(0,a,o),e=n.join("/"))}return e}function A(t,n){return function(){var e=a.call(arguments,0);return"string"!=typeof e[0]&&1===e.length&&e.push(null),s.apply(h,e.concat([t,n]))}}function x(t){return function(e){m[t]=e}}function D(e){if(w(v,e)){var t=v[e];delete v[e],_[e]=!0,o.apply(h,t)}if(!w(m,e)&&!w(_,e))throw new Error("No "+e);return m[e]}function c(e){var t,n=e?e.indexOf("!"):-1;return-1<n&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[tLine truncated
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
/*
|
|
||||||
* [js-sha512]{@link https://github.com/emn178/js-sha512}
|
|
||||||
*
|
|
||||||
* @version 0.7.1
|
|
||||||
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
|
||||||
* @copyright Chen, Yi-Cyuan 2014-2017
|
|
||||||
* @license MIT
|
|
||||||
*/
|
|
||||||
!function(){"use strict";function h(h,t){t?(p[0]=p[1]=p[2]=p[3]=p[4]=p[5]=p[6]=p[7]=p[8]=p[9]=p[10]=p[11]=p[12]=p[13]=p[14]=p[15]=p[16]=p[17]=p[18]=p[19]=p[20]=p[21]=p[22]=p[23]=p[24]=p[25]=p[26]=p[27]=p[28]=p[29]=p[30]=p[31]=p[32]=0,this.blocks=p):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],384==h?(this.h0h=3418070365,this.h0l=3238371032,this.h1h=1654270250,this.h1l=914150663,this.h2h=2438529370,this.h2l=812702999,this.h3h=355462360,this.h3l=4144912697,this.h4h=1731405415,this.h4l=4290775857,this.h5h=2394180231,this.h5l=1750603025,this.h6h=3675008525,this.h6l=1694076839,this.h7h=1203062813,this.h7l=3204075428):256==h?(this.h0h=573645204,this.h0l=4230739756,this.h1h=2673172387,this.h1l=3360449730,this.h2h=596883563,this.h2l=1867755857,this.h3h=2520282905,this.h3l=1497426621,this.h4h=2519219938,this.h4l=2827943907,this.h5h=3193839141,this.h5l=1401305490,this.h6h=721525244,this.h6l=746961066,this.h7h=246885852,this.h7l=2177182882):224==h?(this.h0h=2352822216,this.h0l=424955298,this.h1h=1944164710,this.h1l=2312950998,this.h2h=502970286,this.h2l=855612546,this.h3h=1738396948,this.h3l=1479516111,this.h4h=258812777,this.h4l=2077511080,this.h5h=2011393907,this.h5l=79989058,this.h6h=1067287976,this.h6l=1780299464,this.h7h=286451373,this.h7l=2446758561):(this.h0h=1779033703,this.h0l=4089235720,this.h1h=3144134277,this.h1l=2227873595,this.h2h=1013904242,this.h2l=4271175723,this.h3h=2773480762,this.h3l=1595750129,this.h4h=1359893119,this.h4l=291756Line truncated
|
|
||||||
@@ -1,20 +1,20 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
define('ROOT', realpath(__dir__.'/..'));
|
define('ROOT', realpath(__DIR__ . '/..'));
|
||||||
setlocale(LC_ALL, 'ko_KR.UTF-8');
|
setlocale(LC_ALL, 'ko_KR.UTF-8');
|
||||||
date_default_timezone_set('Asia/Seoul');
|
date_default_timezone_set('Asia/Seoul');
|
||||||
mb_internal_encoding("UTF-8");
|
mb_internal_encoding("UTF-8");
|
||||||
mb_http_output('UTF-8');
|
mb_http_output('UTF-8');
|
||||||
mb_regex_encoding('UTF-8');
|
mb_regex_encoding('UTF-8');
|
||||||
|
|
||||||
ini_set("session.cache_expire", 10080); // minutes
|
ini_set("session.cache_expire", '10080'); // minutes
|
||||||
ini_set("session.gc_maxlifetime", 604800); // seconds
|
ini_set("session.gc_maxlifetime", '604800'); // seconds
|
||||||
|
|
||||||
function getFriendlyErrorType($type)
|
function getFriendlyErrorType($type)
|
||||||
{
|
{
|
||||||
switch($type)
|
switch ($type) {
|
||||||
{
|
|
||||||
case E_ERROR: // 1 //
|
case E_ERROR: // 1 //
|
||||||
return 'E_ERROR';
|
return 'E_ERROR';
|
||||||
case E_WARNING: // 2 //
|
case E_WARNING: // 2 //
|
||||||
@@ -49,41 +49,130 @@ function getFriendlyErrorType($type)
|
|||||||
return "{$type}";
|
return "{$type}";
|
||||||
}
|
}
|
||||||
|
|
||||||
function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext){
|
function getExceptionTraceAsString($exception)
|
||||||
|
{
|
||||||
|
//https://gist.github.com/abtris/1437966
|
||||||
|
$rtn = "";
|
||||||
|
$count = 0;
|
||||||
|
$rtn = [];
|
||||||
|
foreach ($exception->getTrace() as $frame) {
|
||||||
|
$args = "";
|
||||||
|
if (isset($frame['args'])) {
|
||||||
|
$args = array();
|
||||||
|
foreach ($frame['args'] as $arg) {
|
||||||
|
if (is_string($arg)) {
|
||||||
|
$args[] = "'" . $arg . "'";
|
||||||
|
} elseif (is_array($arg)) {
|
||||||
|
$args[] = "Array";
|
||||||
|
} elseif (is_null($arg)) {
|
||||||
|
$args[] = 'NULL';
|
||||||
|
} elseif (is_bool($arg)) {
|
||||||
|
$args[] = ($arg) ? "true" : "false";
|
||||||
|
} elseif (is_object($arg)) {
|
||||||
|
$args[] = get_class($arg);
|
||||||
|
} elseif (is_resource($arg)) {
|
||||||
|
$args[] = get_resource_type($arg);
|
||||||
|
} else {
|
||||||
|
$args[] = $arg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$args = join(", ", $args);
|
||||||
|
}
|
||||||
|
$rtn[] = sprintf(
|
||||||
|
"#%s %s:%s %s(%s)",
|
||||||
|
$count,
|
||||||
|
isset($frame['file']) ? $frame['file'] : 'unknown file',
|
||||||
|
isset($frame['line']) ? $frame['line'] : 'unknown line',
|
||||||
|
(isset($frame['class'])) ? $frame['class'] . $frame['type'] . $frame['function'] : $frame['function'],
|
||||||
|
$args
|
||||||
|
);
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
return $rtn;
|
||||||
|
}
|
||||||
|
|
||||||
|
function logError(string $err, string $errstr, string $errpath, array $trace)
|
||||||
|
{
|
||||||
|
$fdb = FileDB::db(ROOT . '/d_log/err_log.sqlite3', ROOT . '/f_install/sql/err_log.sql');
|
||||||
|
$date = date("Ymd_His");
|
||||||
|
|
||||||
|
$errpath = str_replace(ROOT, '{ROOT}', $errpath);
|
||||||
|
$trace = array_map(function (string $text) {
|
||||||
|
return str_replace(ROOT, '{ROOT}', $text);
|
||||||
|
}, $trace);
|
||||||
|
|
||||||
|
$owner = Util::get_client_ip();
|
||||||
|
$session = Session::getInstance();
|
||||||
|
if ($session->isLoggedIn(true)) {
|
||||||
|
$owner .= '(' . $session->getUserID() . ',' . $session->userName . ')';
|
||||||
|
}
|
||||||
|
|
||||||
|
$fdb->insert('err_log', [
|
||||||
|
'date' => $date,
|
||||||
|
'err' => $err,
|
||||||
|
'errstr' => $errstr,
|
||||||
|
'errpath' => $errpath,
|
||||||
|
'trace' => Json::encode($trace),
|
||||||
|
'webuser' => $owner
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext=null)
|
||||||
|
{
|
||||||
if (!(error_reporting() & $errno)) {
|
if (!(error_reporting() & $errno)) {
|
||||||
// This error code is not included in error_reporting, so let it fall
|
// This error code is not included in error_reporting, so let it fall
|
||||||
// through to the standard PHP error handler
|
// through to the standard PHP error handler
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$date = date("Ymd_His");
|
|
||||||
$e = new \Exception();
|
$e = new \Exception();
|
||||||
|
|
||||||
$data = Json::encode([
|
logError(
|
||||||
'date'=>$date,
|
getFriendlyErrorType($errno),
|
||||||
'err'=>getFriendlyErrorType($errno),
|
$errstr,
|
||||||
'errstr'=>$errstr,
|
$errfile . ':' . $errline,
|
||||||
'trace'=>explode("\n", $e->getTraceAsString())
|
getExceptionTraceAsString($e)
|
||||||
], Json::PRETTY);
|
);
|
||||||
|
|
||||||
file_put_contents(ROOT.'/d_log/err_log.txt',"$data\n", FILE_APPEND);
|
|
||||||
}
|
}
|
||||||
set_error_handler("\sammo\logErrorByCustomHandler");
|
set_error_handler("\\sammo\\logErrorByCustomHandler");
|
||||||
|
|
||||||
|
|
||||||
function logExceptionByCustomHandler(\Throwable $e){
|
function logExceptionByCustomHandler(\Throwable $e)
|
||||||
|
{
|
||||||
|
|
||||||
$date = date("Ymd_His");
|
logError(
|
||||||
|
get_class($e),
|
||||||
|
$e->getMessage(),
|
||||||
|
$e->getFile() . ':' . $e->getLine(),
|
||||||
|
getExceptionTraceAsString($e)
|
||||||
|
);
|
||||||
|
|
||||||
$data = Json::encode([
|
|
||||||
'date'=>$date,
|
|
||||||
'err'=>get_class($e),
|
|
||||||
'errstr'=>$e->getMessage(),
|
|
||||||
'trace'=>explode("\n", $e->getTraceAsString())
|
|
||||||
], Json::PRETTY);
|
|
||||||
|
|
||||||
file_put_contents(ROOT.'/d_log/err_log.txt',"$data\n", FILE_APPEND);
|
|
||||||
echo $e->getTraceAsString();
|
echo $e->getTraceAsString();
|
||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
set_exception_handler('\\sammo\\logExceptionByCustomHandler');
|
set_exception_handler('\\sammo\\logExceptionByCustomHandler');
|
||||||
|
|
||||||
|
function getAPIExecutorClass($path){
|
||||||
|
|
||||||
|
static $basePath = __NAMESPACE__.'\\API\\';
|
||||||
|
if(is_string($path)){
|
||||||
|
}
|
||||||
|
else if(is_array($path)){
|
||||||
|
$path = join('\\', $path);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
throw new \InvalidArgumentException("{$path}는 올바른 API 지시자가 아님");
|
||||||
|
}
|
||||||
|
|
||||||
|
$classPath = str_replace('/', '\\', $basePath.$path);
|
||||||
|
|
||||||
|
if(class_exists($classPath)){
|
||||||
|
return $classPath;
|
||||||
|
}
|
||||||
|
throw new \InvalidArgumentException("{$path}는 올바른 API 경로가 아님");
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildAPIExecutorClass($type, string $rootPath, array $args):\sammo\BaseAPI{
|
||||||
|
$class = getAPIExecutorClass($type);
|
||||||
|
return new $class($rootPath, $args);
|
||||||
|
}
|
||||||
@@ -1,25 +1,32 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
require(__dir__.'/../vendor/autoload.php');
|
require(__DIR__ . '/../vendor/autoload.php');
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko">
|
<html lang="ko">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>설치</title>
|
<title>설치</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?php /* NOTE: 설치 이전에는 ServConfig가 준비되어있지 않으므로 예외로 수동 지정 */ ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery.validate.min.js')?>
|
<?= WebUtil::printJS('../dist_js/gateway/vendors.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/sha512.min.js')?>
|
<?= WebUtil::printCSS('../dist_js/gateway/vendor.css') ?>
|
||||||
<?=WebUtil::printJS('../js/common.js')?>
|
<?= WebUtil::printJS('../dist_js/gateway/common_ts.js') ?>
|
||||||
<?=WebUtil::printJS('../js/install.js')?>
|
<?= WebUtil::printCSS('../dist_js/gateway/common_ts.css') ?>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
<?= WebUtil::printJS('../dist_js/gateway/install.js') ?>
|
||||||
|
<?= WebUtil::printCSS('../dist_js/gateway/install.css') ?>
|
||||||
|
|
||||||
<?= WebUtil::printCSS('../css/install.css') ?>
|
<?= WebUtil::printCSS('../css/install.css') ?>
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe 설치</h1>
|
<h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe 설치</h1>
|
||||||
@@ -35,16 +42,14 @@ require(__dir__.'/../vendor/autoload.php');
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="db_host" class="col-sm-4 col-form-label">DB호스트</label>
|
<label for="db_host" class="col-sm-4 col-form-label">DB호스트</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="db_host" id="db_host"
|
<input type="text" class="form-control" name="db_host" id="db_host" placeholder="호스트" value="localhost" />
|
||||||
placeholder="호스트" value="localhost" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="db_port" class="col-sm-4 col-form-label">DB포트</label>
|
<label for="db_port" class="col-sm-4 col-form-label">DB포트</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="db_port" id="db_port"
|
<input type="text" class="form-control" name="db_port" id="db_port" placeholder="접속 포트" value="3306" />
|
||||||
placeholder="접속 포트" value="3306" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -59,55 +64,74 @@ require(__dir__.'/../vendor/autoload.php');
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="db_pw" class="col-sm-4 col-form-label">DB비밀번호</label>
|
<label for="db_pw" class="col-sm-4 col-form-label">DB비밀번호</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="password" class="form-control" name="db_pw" id="db_pw"
|
<input type="password" class="form-control" name="db_pw" id="db_pw" placeholder="DB비밀번호" />
|
||||||
placeholder="DB비밀번호"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="db_name" class="col-sm-4 col-form-label">DB명</label>
|
<label for="db_name" class="col-sm-4 col-form-label">DB명</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="db_name" id="db_name"
|
<input type="text" class="form-control" name="db_name" id="db_name" placeholder="DB명(예:sammo)" />
|
||||||
placeholder="DB명(예:sammo)"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="serv_host" class="col-sm-4 col-form-label">접속 경로</label>
|
<label for="serv_host" class="col-sm-4 col-form-label">접속 경로</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="serv_host" id="serv_host"
|
<input type="text" class="form-control" name="serv_host" id="serv_host" placeholder="접속경로(예:http://www.example.com)" />
|
||||||
placeholder="접속경로(예:http://www.example.com)"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="shared_icon_path" class="col-sm-4 col-form-label">공용 아이콘 주소</label>
|
<label for="shared_icon_path" class="col-sm-4 col-form-label">공용 아이콘 주소</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="shared_icon_path" id="shared_icon_path"
|
<input type="text" class="form-control" name="shared_icon_path" id="shared_icon_path" placeholder="공용 아이콘 주소(웹 주소, 또는 접속 경로에 따른 상대 주소)" value="../image/icons" />
|
||||||
placeholder="공용 아이콘 주소(웹 주소, 또는 접속 경로에 따른 상대 주소)"
|
|
||||||
value="../image/icons" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="game_image_path" class="col-sm-4 col-form-label">게임 이미지 주소</label>
|
<label for="game_image_path" class="col-sm-4 col-form-label">게임 이미지 주소</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="game_image_path" id="game_image_path"
|
<input type="text" class="form-control" name="game_image_path" id="game_image_path" placeholder="게임 이미지 주소(웹 주소, 또는 접속 경로에 따른 상대 주소)" value="../image/game" />
|
||||||
placeholder="게임 이미지 주소(웹 주소, 또는 접속 경로에 따른 상대 주소)"
|
</div>
|
||||||
value="../image/game" />
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="image_request_key" class="col-sm-4 col-form-label">이미지 갱신 키</label>
|
||||||
|
<div class="input-group col-sm-8">
|
||||||
|
<input type="text" class="form-control" name="image_request_key" id="image_request_key" placeholder="이미지 서버의 hook/HashKey.php의 값과 동일하게" value="" />
|
||||||
|
<div class="input-group-text">
|
||||||
|
<button id="btn_random_generate_key" class="btn btn-secondary" type="button">랜덤 생성</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr style="width:100%; border-top: 1px solid lightgray;">
|
||||||
|
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="kakao_rest_key" class="col-sm-4 col-form-label">카카오 API Rest Key</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input type="text" class="form-control" name="kakao_rest_key" id="kakao_rest_key" placeholder="카카오톡 API의 Rest Key" value="" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="kakao_admin_key" class="col-sm-4 col-form-label">카카오 API Admin Key</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input type="text" class="form-control" name="kakao_admin_key" id="kakao_admin_key" placeholder="카카오톡 API의 Admin Key" value="" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-sm-4"></div>
|
<div class="col-sm-4"></div>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<button type="submit"
|
<button type="submit" class="btn btn-primary btn-lg btn-block login-button">설정 파일 생성</button>
|
||||||
class="btn btn-primary btn-lg btn-block login-button">설정 파일 생성</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div><!--DB 폼 끝-->
|
</div>
|
||||||
|
<!--DB 폼 끝-->
|
||||||
|
|
||||||
<div class="card" id="admin_form_card" style="display:none">
|
<div class="card" id="admin_form_card" style="display:none">
|
||||||
<h3 class="card-header">
|
<h3 class="card-header">
|
||||||
@@ -118,8 +142,7 @@ require(__dir__.'/../vendor/autoload.php');
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="username" class="col-sm-3 col-form-label">계정명</label>
|
<label for="username" class="col-sm-3 col-form-label">계정명</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input type="text" class="form-control" name="username" id="username"
|
<input type="text" class="form-control" name="username" id="username" placeholder="계정명" />
|
||||||
placeholder="계정명"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -127,24 +150,21 @@ require(__dir__.'/../vendor/autoload.php');
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="password" class="col-sm-3 col-form-label">비밀번호</label>
|
<label for="password" class="col-sm-3 col-form-label">비밀번호</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input type="password" class="form-control" name="password" id="password"
|
<input type="password" class="form-control" name="password" id="password" placeholder="비밀번호" />
|
||||||
placeholder="비밀번호"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="confirm_password" class="col-sm-3 col-form-label">비밀번호 확인</label>
|
<label for="confirm_password" class="col-sm-3 col-form-label">비밀번호 확인</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input type="password" class="form-control" name="confirm_password" id="confirm_password"
|
<input type="password" class="form-control" name="confirm_password" id="confirm_password" placeholder="비밀번호 확인" />
|
||||||
placeholder="비밀번호 확인"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="nickname" class="col-sm-3 col-form-label">닉네임</label>
|
<label for="nickname" class="col-sm-3 col-form-label">닉네임</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input type="text" class="form-control" name="nickname" id="nickname"
|
<input type="text" class="form-control" name="nickname" id="nickname" placeholder="닉네임" value="운영자" />
|
||||||
placeholder="닉네임" value="운영자"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -153,13 +173,13 @@ require(__dir__.'/../vendor/autoload.php');
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-sm-3"></div>
|
<div class="col-sm-3"></div>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<button type="submit"
|
<button type="submit" class="btn btn-primary btn-lg btn-block login-button">관리자 계정 생성</button>
|
||||||
class="btn btn-primary btn-lg btn-block login-button">관리자 계정 생성</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div><!--ADMIN 폼 끝-->
|
</div>
|
||||||
|
<!--ADMIN 폼 끝-->
|
||||||
|
|
||||||
<!-- TODO: conf_kakao.php -->
|
<!-- TODO: conf_kakao.php -->
|
||||||
|
|
||||||
@@ -167,4 +187,5 @@ require(__dir__.'/../vendor/autoload.php');
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,14 +1,15 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
require(__dir__.'/../vendor/autoload.php');
|
require(__DIR__ . '/../vendor/autoload.php');
|
||||||
|
|
||||||
session_start();
|
session_start();
|
||||||
session_destroy();
|
session_destroy();
|
||||||
|
|
||||||
$username = mb_strtolower(Util::getReq('username'), 'utf-8');
|
$username = mb_strtolower(Util::getPost('username'), 'utf-8');
|
||||||
$password = Util::getReq('password', 'string');
|
$password = Util::getPost('password', 'string');
|
||||||
$nickname = Util::getReq('nickname');
|
$nickname = Util::getPost('nickname');
|
||||||
|
|
||||||
if (!$username || !$password || !$nickname) {
|
if (!$username || !$password || !$nickname) {
|
||||||
Json::die([
|
Json::die([
|
||||||
@@ -46,12 +47,13 @@ if($memberCnt > 0){
|
|||||||
|
|
||||||
$userSalt = bin2hex(random_bytes(8));
|
$userSalt = bin2hex(random_bytes(8));
|
||||||
$finalPassword = Util::hashPassword($userSalt, $password);
|
$finalPassword = Util::hashPassword($userSalt, $password);
|
||||||
$nowDate = TimeUtil::DatetimeNow();
|
$nowDate = TimeUtil::now();
|
||||||
|
|
||||||
$rootDB->insert('member', [
|
$rootDB->insert('member', [
|
||||||
'oauth_type' => 'NONE',
|
'oauth_type' => 'NONE',
|
||||||
'id' => $username,
|
'id' => $username,
|
||||||
'email' => null,
|
'email' => null,
|
||||||
|
'token_valid_until' => '2999-01-01 00:00:00',
|
||||||
'pw' => $finalPassword,
|
'pw' => $finalPassword,
|
||||||
'salt' => $userSalt,
|
'salt' => $userSalt,
|
||||||
'grade' => 6,
|
'grade' => 6,
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
require(__dir__.'/../vendor/autoload.php');
|
if(!file_exists(__DIR__ . '/../vendor/autoload.php')){
|
||||||
|
http_response_code(503);
|
||||||
|
die('not_ready');
|
||||||
|
}
|
||||||
|
|
||||||
|
require(__DIR__ . '/../vendor/autoload.php');
|
||||||
|
|
||||||
if (!class_exists('\\sammo\\RootDB')) {
|
if (!class_exists('\\sammo\\RootDB')) {
|
||||||
Json::die([
|
Json::die([
|
||||||
|
|||||||
@@ -1,16 +1,22 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
require(__dir__.'/../vendor/autoload.php');
|
require(__DIR__ . '/../vendor/autoload.php');
|
||||||
|
|
||||||
|
$host = Util::getPost('db_host');
|
||||||
|
$port = Util::getPost('db_port', 'int');
|
||||||
|
$username = Util::getPost('db_id');
|
||||||
|
$password = Util::getPost('db_pw');
|
||||||
|
$dbName = Util::getPost('db_name');
|
||||||
|
$servHost = Util::getPost('serv_host');
|
||||||
|
$sharedIconPath = Util::getPost('shared_icon_path');
|
||||||
|
$gameImagePath = Util::getPost('game_image_path');
|
||||||
|
$imageRequestKey = Util::getPost('image_request_key');
|
||||||
|
|
||||||
|
$kakaoRESTKey = Util::getPost('kakao_rest_key', 'string', '');
|
||||||
|
$kakaoAdminKey = Util::getPost('kakao_admin_key', 'string', '');
|
||||||
|
|
||||||
$host = Util::getReq('db_host');
|
|
||||||
$port = Util::getReq('db_port', 'int');
|
|
||||||
$username = Util::getReq('db_id');
|
|
||||||
$password = Util::getReq('db_pw');
|
|
||||||
$dbName = Util::getReq('db_name');
|
|
||||||
$servHost = Util::getReq('serv_host');
|
|
||||||
$sharedIconPath = Util::getReq('shared_icon_path');
|
|
||||||
$gameImagePath = Util::getReq('game_image_path');
|
|
||||||
|
|
||||||
if (!$host || !$port || !$username || !$password || !$dbName || !$servHost || !$sharedIconPath || !$gameImagePath) {
|
if (!$host || !$port || !$username || !$password || !$dbName || !$servHost || !$sharedIconPath || !$gameImagePath) {
|
||||||
Json::die([
|
Json::die([
|
||||||
@@ -69,7 +75,8 @@ if (file_exists(ROOT.'/d_setting') && !is_dir(ROOT.'/d_setting')) {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!file_exists(ROOT.'/d_log')
|
if (
|
||||||
|
!file_exists(ROOT . '/d_log')
|
||||||
|| !file_exists(ROOT . '/d_shared')
|
|| !file_exists(ROOT . '/d_shared')
|
||||||
|| !file_exists(ROOT . '/d_setting')
|
|| !file_exists(ROOT . '/d_setting')
|
||||||
|| !file_exists(AppConf::getUserIconPathFS())
|
|| !file_exists(AppConf::getUserIconPathFS())
|
||||||
@@ -160,7 +167,7 @@ $rootDB->error_handler = function ($params) {
|
|||||||
|
|
||||||
$mysqli_obj = $rootDB->get(); //로그인에 실패할 경우 자동으로 dbConnFail()이 실행됨.
|
$mysqli_obj = $rootDB->get(); //로그인에 실패할 경우 자동으로 dbConnFail()이 실행됨.
|
||||||
|
|
||||||
if ($mysqli_obj->multi_query(file_get_contents(__dir__.'/sql/common_schema.sql'))) {
|
if ($mysqli_obj->multi_query(file_get_contents(__DIR__ . '/sql/common_schema.sql'))) {
|
||||||
while (true) {
|
while (true) {
|
||||||
if (!$mysqli_obj->more_results()) {
|
if (!$mysqli_obj->more_results()) {
|
||||||
break;
|
break;
|
||||||
@@ -174,8 +181,8 @@ if ($mysqli_obj->multi_query(file_get_contents(__dir__.'/sql/common_schema.sql')
|
|||||||
$rootDB->insert('system', array(
|
$rootDB->insert('system', array(
|
||||||
'REG' => 'N',
|
'REG' => 'N',
|
||||||
'LOGIN' => 'N',
|
'LOGIN' => 'N',
|
||||||
'CRT_DATE' => TimeUtil::DatetimeNow(),
|
'CRT_DATE' => TimeUtil::now(),
|
||||||
'MDF_DATE' => TimeUtil::DatetimeNow()
|
'MDF_DATE' => TimeUtil::now()
|
||||||
));
|
));
|
||||||
|
|
||||||
$globalSalt = bin2hex(random_bytes(16));
|
$globalSalt = bin2hex(random_bytes(16));
|
||||||
@@ -186,18 +193,34 @@ $globalSalt = bin2hex(random_bytes(16));
|
|||||||
|
|
||||||
$sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost);
|
$sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost);
|
||||||
$gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost);
|
$gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost);
|
||||||
|
$imageRequestPath = WebUtil::resolveRelativePath($gameImagePath . '/../hook/git_pull.php', $servHost);
|
||||||
|
$imageKeyInstallPath = WebUtil::resolveRelativePath($gameImagePath . '/../hook/InstallKey.php', $servHost);
|
||||||
|
|
||||||
$result = Util::generateFileUsingSimpleTemplate(
|
$result = Util::generateFileUsingSimpleTemplate(
|
||||||
__dir__.'/templates/ServConfig.orig.php',
|
__DIR__ . '/templates/ServConfig.orig.php',
|
||||||
ROOT . '/d_setting/ServConfig.php',
|
ROOT . '/d_setting/ServConfig.php',
|
||||||
[
|
[
|
||||||
'serverBasePath' => $servHost,
|
'serverBasePath' => $servHost,
|
||||||
'sharedIconPath' => $sharedIconPath,
|
'sharedIconPath' => $sharedIconPath,
|
||||||
'gameImagePath'=>$gameImagePath
|
'gameImagePath' => $gameImagePath,
|
||||||
|
'imageRequestPath' => $imageRequestPath,
|
||||||
|
'imageRequestKey' => $imageRequestKey,
|
||||||
|
'serverList' => [
|
||||||
|
['che', '체', 'white'],
|
||||||
|
['kwe', '퀘', 'yellow'],
|
||||||
|
['pwe', '풰', 'orange'],
|
||||||
|
['twe', '퉤', 'magenta'],
|
||||||
|
['nya', '냐', '#e67e22'],
|
||||||
|
['pya', '퍄', '#9b59b6']
|
||||||
|
]
|
||||||
],
|
],
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if ($imageRequestKey) {
|
||||||
|
@file_get_contents($imageKeyInstallPath . '?key=' . $imageRequestKey);
|
||||||
|
}
|
||||||
|
|
||||||
if ($result !== true) {
|
if ($result !== true) {
|
||||||
Json::die([
|
Json::die([
|
||||||
'result' => false,
|
'result' => false,
|
||||||
@@ -206,7 +229,7 @@ if ($result !== true) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$result = Util::generateFileUsingSimpleTemplate(
|
$result = Util::generateFileUsingSimpleTemplate(
|
||||||
__dir__.'/templates/common_path.orig.js',
|
__DIR__ . '/templates/common_path.orig.js',
|
||||||
ROOT . '/d_shared/common_path.js',
|
ROOT . '/d_shared/common_path.js',
|
||||||
[
|
[
|
||||||
'serverBasePath' => $servHost,
|
'serverBasePath' => $servHost,
|
||||||
@@ -217,8 +240,8 @@ $result = Util::generateFileUsingSimpleTemplate(
|
|||||||
);
|
);
|
||||||
|
|
||||||
$result = Util::generateFileUsingSimpleTemplate(
|
$result = Util::generateFileUsingSimpleTemplate(
|
||||||
__dir__.'/templates/menu.orig.js',
|
__DIR__ . '/templates/menu.orig.json',
|
||||||
ROOT.'/d_shared/menu.js',
|
ROOT . '/d_shared/menu.json',
|
||||||
[],
|
[],
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
@@ -232,7 +255,7 @@ if ($result !== true) {
|
|||||||
|
|
||||||
|
|
||||||
$result = Util::generateFileUsingSimpleTemplate(
|
$result = Util::generateFileUsingSimpleTemplate(
|
||||||
__dir__.'/templates/common.orig.css',
|
__DIR__ . '/templates/common.orig.css',
|
||||||
ROOT . '/d_shared/common.css',
|
ROOT . '/d_shared/common.css',
|
||||||
[
|
[
|
||||||
'serverBasePath' => $servHost,
|
'serverBasePath' => $servHost,
|
||||||
@@ -251,7 +274,7 @@ if ($result !== true) {
|
|||||||
|
|
||||||
|
|
||||||
$result = Util::generateFileUsingSimpleTemplate(
|
$result = Util::generateFileUsingSimpleTemplate(
|
||||||
__dir__.'/templates/RootDB.orig.php',
|
__DIR__ . '/templates/RootDB.orig.php',
|
||||||
ROOT . '/d_setting/RootDB.php',
|
ROOT . '/d_setting/RootDB.php',
|
||||||
[
|
[
|
||||||
'host' => $host,
|
'host' => $host,
|
||||||
@@ -263,6 +286,19 @@ $result = Util::generateFileUsingSimpleTemplate(
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$kakaoRedirectURI = WebUtil::resolveRelativePath('oauth_kakao/oauth.php', $servHost . '/');
|
||||||
|
|
||||||
|
Util::generateFileUsingSimpleTemplate(
|
||||||
|
__DIR__ . '/templates/KakaoKey.orig.php',
|
||||||
|
ROOT . '/d_setting/KakaoKey.php',
|
||||||
|
[
|
||||||
|
'REST_API_KEY' => $kakaoRESTKey,
|
||||||
|
'ADMIN_KEY' => $kakaoAdminKey,
|
||||||
|
'REDIRECT_URI' => $kakaoRedirectURI
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
if ($result !== true) {
|
if ($result !== true) {
|
||||||
Json::die([
|
Json::die([
|
||||||
'result' => false,
|
'result' => false,
|
||||||
@@ -272,5 +308,6 @@ if ($result !== true) {
|
|||||||
|
|
||||||
Json::die([
|
Json::die([
|
||||||
'result' => true,
|
'result' => true,
|
||||||
'reason'=>'success'
|
'reason' => 'success',
|
||||||
|
'globalSalt' => $globalSalt
|
||||||
]);
|
]);
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
require(__DIR__ . '/../vendor/autoload.php');
|
||||||
|
|
||||||
|
$session = Session::requireLogin([])->setReadOnly();
|
||||||
|
if ($session->userGrade < 6) {
|
||||||
|
Json::die([
|
||||||
|
'result' => false,
|
||||||
|
'reason' => '관리자 아님'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$servHost = Util::getPost('serv_host');
|
||||||
|
$sharedIconPath = Util::getPost('shared_icon_path');
|
||||||
|
$gameImagePath = Util::getPost('game_image_path');
|
||||||
|
|
||||||
|
if ($servHost) {
|
||||||
|
if (!$sharedIconPath || $gameImagePath) {
|
||||||
|
Json::die([
|
||||||
|
'result' => false,
|
||||||
|
'reason' => 'serv_host가 지정된 경우, sharedIconPath와 gameImagePath가 모두 지정되어야합니다.'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost);
|
||||||
|
$gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost);
|
||||||
|
|
||||||
|
$result = Util::generateFileUsingSimpleTemplate(
|
||||||
|
__DIR__ . '/templates/ServConfig.orig.php',
|
||||||
|
ROOT . '/d_setting/ServConfig.php',
|
||||||
|
[
|
||||||
|
'serverBasePath' => $servHost,
|
||||||
|
'sharedIconPath' => $sharedIconPath,
|
||||||
|
'gameImagePath' => $gameImagePath
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($result !== true) {
|
||||||
|
Json::die([
|
||||||
|
'result' => false,
|
||||||
|
'reason' => $result
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
} else if ($sharedIconPath || $gameImagePath) {
|
||||||
|
$servHost = ServConfig::$serverWebPath;
|
||||||
|
if ($sharedIconPath) {
|
||||||
|
$sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost);
|
||||||
|
} else {
|
||||||
|
$sharedIconPath = ServConfig::$sharedIconPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($gameImagePath) {
|
||||||
|
$gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost);
|
||||||
|
} else {
|
||||||
|
$gameImagePath = ServConfig::$gameImagePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = Util::generateFileUsingSimpleTemplate(
|
||||||
|
__DIR__ . '/templates/ServConfig.orig.php',
|
||||||
|
ROOT . '/d_setting/ServConfig.php',
|
||||||
|
[
|
||||||
|
'serverBasePath' => $servHost,
|
||||||
|
'sharedIconPath' => $sharedIconPath,
|
||||||
|
'gameImagePath' => $gameImagePath
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($result !== true) {
|
||||||
|
Json::die([
|
||||||
|
'result' => false,
|
||||||
|
'reason' => $result
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$servHost = ServConfig::$serverWebPath;
|
||||||
|
$sharedIconPath = ServConfig::$sharedIconPath;
|
||||||
|
$gameImagePath = ServConfig::$gameImagePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$result = Util::generateFileUsingSimpleTemplate(
|
||||||
|
__DIR__ . '/templates/common_path.orig.js',
|
||||||
|
ROOT . '/d_shared/common_path.js',
|
||||||
|
[
|
||||||
|
'serverBasePath' => $servHost,
|
||||||
|
'sharedIconPath' => $sharedIconPath,
|
||||||
|
'gameImagePath' => $gameImagePath
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
$result = Util::generateFileUsingSimpleTemplate(
|
||||||
|
__DIR__ . '/templates/common.orig.css',
|
||||||
|
ROOT . '/d_shared/common.css',
|
||||||
|
[
|
||||||
|
'serverBasePath' => $servHost,
|
||||||
|
'sharedIconPath' => $sharedIconPath,
|
||||||
|
'gameImagePath' => $gameImagePath
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($result !== true) {
|
||||||
|
Json::die([
|
||||||
|
'result' => false,
|
||||||
|
'reason' => $result
|
||||||
|
]);
|
||||||
|
}
|
||||||
@@ -14,22 +14,25 @@ CREATE TABLE `system` (
|
|||||||
`MDF_DATE` DATETIME NULL DEFAULT NULL,
|
`MDF_DATE` DATETIME NULL DEFAULT NULL,
|
||||||
PRIMARY KEY (`NO`)
|
PRIMARY KEY (`NO`)
|
||||||
)
|
)
|
||||||
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
-- 회원 테이블
|
-- 회원 테이블
|
||||||
CREATE TABLE `member` (
|
CREATE TABLE `member` (
|
||||||
`NO` INT(11) NOT NULL AUTO_INCREMENT,
|
`NO` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`oauth_id` BIGINT(20) NULL DEFAULT NULL,
|
`oauth_id` BIGINT(20) NULL DEFAULT NULL,
|
||||||
`oauth_type` ENUM('NONE','KAKAO') NOT NULL,
|
|
||||||
`ID` VARCHAR(64) NOT NULL,
|
`ID` VARCHAR(64) NOT NULL,
|
||||||
`EMAIL` VARCHAR(64) NULL DEFAULT NULL,
|
`EMAIL` VARCHAR(64) NULL DEFAULT NULL,
|
||||||
|
`oauth_type` ENUM('NONE','KAKAO') NOT NULL,
|
||||||
|
`oauth_info` TEXT NOT NULL DEFAULT '{}',
|
||||||
|
`token_valid_until` DATETIME NULL DEFAULT NULL,
|
||||||
`PW` CHAR(128) NOT NULL,
|
`PW` CHAR(128) NOT NULL,
|
||||||
`salt` CHAR(16) NOT NULL,
|
`salt` CHAR(16) NOT NULL,
|
||||||
`third_use` INT(1) NOT NULL DEFAULT '0',
|
`third_use` INT(1) NOT NULL DEFAULT '0',
|
||||||
`NAME` VARCHAR(64) NOT NULL,
|
`NAME` VARCHAR(64) NOT NULL,
|
||||||
`PICTURE` VARCHAR(64) NULL DEFAULT 'default.jpg',
|
`PICTURE` VARCHAR(64) NULL DEFAULT 'default.jpg',
|
||||||
`IMGSVR` INT(1) NULL DEFAULT '0',
|
`IMGSVR` INT(1) NULL DEFAULT '0',
|
||||||
`acl` text NOT NULL DEFAULT '{}' COMMENT 'json',
|
`acl` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
|
`penalty` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin',
|
||||||
`GRADE` INT(1) NULL DEFAULT '1',
|
`GRADE` INT(1) NULL DEFAULT '1',
|
||||||
`REG_NUM` INT(3) NULL DEFAULT '0',
|
`REG_NUM` INT(3) NULL DEFAULT '0',
|
||||||
`REG_DATE` DATETIME NOT NULL,
|
`REG_DATE` DATETIME NOT NULL,
|
||||||
@@ -40,9 +43,12 @@ CREATE TABLE `member` (
|
|||||||
UNIQUE INDEX `ID` (`ID`),
|
UNIQUE INDEX `ID` (`ID`),
|
||||||
UNIQUE INDEX `EMAIL` (`EMAIL`),
|
UNIQUE INDEX `EMAIL` (`EMAIL`),
|
||||||
UNIQUE INDEX `kauth_id` (`oauth_id`),
|
UNIQUE INDEX `kauth_id` (`oauth_id`),
|
||||||
INDEX `delete_after` (`delete_after`)
|
INDEX `delete_after` (`delete_after`),
|
||||||
|
CONSTRAINT `json1` CHECK (json_valid(`acl`)),
|
||||||
|
CONSTRAINT `json2` CHECK (json_valid(`penalty`))
|
||||||
)
|
)
|
||||||
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
COLLATE='utf8mb4_general_ci'
|
||||||
|
ENGINE=Aria;
|
||||||
|
|
||||||
-- 로그인 로그 테이블
|
-- 로그인 로그 테이블
|
||||||
CREATE TABLE `member_log` (
|
CREATE TABLE `member_log` (
|
||||||
@@ -50,12 +56,14 @@ CREATE TABLE `member_log` (
|
|||||||
`member_no` INT(11) NOT NULL,
|
`member_no` INT(11) NOT NULL,
|
||||||
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
`action_type` ENUM('reg','try_login','login','logout','oauth','change_pw','make_general','access_server','delete') NOT NULL,
|
`action_type` ENUM('reg','try_login','login','logout','oauth','change_pw','make_general','access_server','delete') NOT NULL,
|
||||||
`action` TEXT NULL DEFAULT NULL COMMENT 'JSON',
|
`action` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
INDEX `action` (`member_no`, `action_type`, `date`),
|
INDEX `action` (`member_no`, `action_type`, `date`),
|
||||||
INDEX `member` (`member_no`, `date`)
|
INDEX `member` (`member_no`, `date`),
|
||||||
|
CONSTRAINT `json` CHECK (json_valid(`action`))
|
||||||
)
|
)
|
||||||
ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
|
COLLATE='utf8mb4_general_ci'
|
||||||
|
ENGINE=Aria;
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# KV storage
|
# KV storage
|
||||||
@@ -66,7 +74,22 @@ CREATE TABLE if not exists `storage` (
|
|||||||
`key` VARCHAR(40) NOT NULL,
|
`key` VARCHAR(40) NOT NULL,
|
||||||
`value` TEXT NOT NULL,
|
`value` TEXT NOT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE INDEX `key` (`namespace`, `key`)
|
UNIQUE INDEX `key` (`namespace`, `key`),
|
||||||
|
CONSTRAINT `json` CHECK (json_valid(`value`))
|
||||||
|
)
|
||||||
|
COLLATE='utf8mb4_bin'
|
||||||
|
ENGINE=Aria;
|
||||||
|
|
||||||
|
CREATE TABLE `login_token` (
|
||||||
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`user_id` INT(11) NOT NULL,
|
||||||
|
`base_token` VARCHAR(20) NOT NULL COLLATE 'utf8mb4_general_ci',
|
||||||
|
`reg_ip` VARCHAR(40) NOT NULL COLLATE 'utf8mb4_general_ci',
|
||||||
|
`reg_date` DATETIME NOT NULL,
|
||||||
|
`expire_date` DATETIME NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE INDEX `by_token` (`base_token`),
|
||||||
|
INDEX `by_date` (`user_id`, `expire_date`)
|
||||||
)
|
)
|
||||||
COLLATE='utf8mb4_general_ci'
|
COLLATE='utf8mb4_general_ci'
|
||||||
ENGINE=MyISAM
|
ENGINE=Aria;
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS `err_log` (
|
||||||
|
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
`date` TEXT NOT NULL,
|
||||||
|
`err` TEXT NOT NULL,
|
||||||
|
`errstr` TEXT NOT NULL,
|
||||||
|
`errpath` TEXT NOT NULL,
|
||||||
|
`trace` TEXT NOT NULL,
|
||||||
|
`webuser` TEXT NULL
|
||||||
|
);
|
||||||
|
CREATE INDEX IF NOT EXISTS `date` ON `err_log` (
|
||||||
|
`date` DESC
|
||||||
|
);
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace kakao;
|
namespace kakao;
|
||||||
|
|
||||||
|
// @suppress PhanRedefineClass
|
||||||
class KakaoKey{
|
class KakaoKey{
|
||||||
const REST_KEY = '_tK_REST_API_KEY_';
|
const REST_KEY = '_tK_REST_API_KEY_';
|
||||||
const ADMIN_KEY = '_tK_ADMIN_KEY_';
|
const ADMIN_KEY = '_tK_ADMIN_KEY_';
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
|
//https://hub.packtpub.com/eloquent-without-laravel/
|
||||||
|
use Illuminate\Database\Capsule\Manager as Capsule;
|
||||||
|
use Illuminate\Events\Dispatcher;
|
||||||
|
use Illuminate\Container\Container;
|
||||||
|
|
||||||
class RootDB
|
class RootDB
|
||||||
{
|
{
|
||||||
private static $uDB = null;
|
private static $uDB = null;
|
||||||
|
private static ?Capsule $uIlluminate = null;
|
||||||
|
|
||||||
private static $host = '_tK_host_';
|
private static $host = '_tK_host_';
|
||||||
private static $user = '_tK_user_';
|
private static $user = '_tK_user_';
|
||||||
@@ -11,6 +18,8 @@ class RootDB
|
|||||||
private static $dbName = '_tK_dbName_';
|
private static $dbName = '_tK_dbName_';
|
||||||
private static $port = _tK_port_;
|
private static $port = _tK_port_;
|
||||||
private static $encoding = 'utf8mb4';
|
private static $encoding = 'utf8mb4';
|
||||||
|
private static $collation = 'utf8mb4_general_ci';
|
||||||
|
|
||||||
|
|
||||||
private static $globalSalt = '_tK_globalSalt_';
|
private static $globalSalt = '_tK_globalSalt_';
|
||||||
|
|
||||||
@@ -18,6 +27,29 @@ class RootDB
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function illuminate(): Capsule
|
||||||
|
{
|
||||||
|
if(self::$uIlluminate !== null){
|
||||||
|
return self::$uIlluminate;
|
||||||
|
}
|
||||||
|
$capsule = new Capsule;
|
||||||
|
|
||||||
|
$capsule->addConnection([
|
||||||
|
'driver' => 'mysql',
|
||||||
|
'host' => self::$host,
|
||||||
|
'database' => self::$dbName,
|
||||||
|
'username' => self::$user,
|
||||||
|
'password' => self::$password,
|
||||||
|
'charset' => self::$encoding,
|
||||||
|
'collation' => self::$collation,
|
||||||
|
], 'root');
|
||||||
|
|
||||||
|
$capsule->setEventDispatcher(new Dispatcher(new Container));
|
||||||
|
$capsule->bootEloquent();
|
||||||
|
self::$uIlluminate = $capsule;
|
||||||
|
return $capsule;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DB 객체 생성
|
* DB 객체 생성
|
||||||
*
|
*
|
||||||
@@ -30,7 +62,8 @@ class RootDB
|
|||||||
self::$uDB = new \MeekroDB(self::$host, self::$user, self::$password, self::$dbName, self::$port, self::$encoding);
|
self::$uDB = new \MeekroDB(self::$host, self::$user, self::$password, self::$dbName, self::$port, self::$encoding);
|
||||||
self::$uDB->connect_options[MYSQLI_OPT_INT_AND_FLOAT_NATIVE] = true;
|
self::$uDB->connect_options[MYSQLI_OPT_INT_AND_FLOAT_NATIVE] = true;
|
||||||
|
|
||||||
self::$uDB->error_handler= function(){};
|
self::$uDB->error_handler = function () {
|
||||||
|
};
|
||||||
self::$uDB->throw_exception_on_error = true;
|
self::$uDB->throw_exception_on_error = true;
|
||||||
self::$uDB->throw_exception_on_nonsql_error = true;
|
self::$uDB->throw_exception_on_nonsql_error = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
class ServConfig
|
class ServConfig
|
||||||
@@ -10,6 +11,9 @@ class ServConfig
|
|||||||
public static $serverWebPath = '_tK_serverBasePath_';
|
public static $serverWebPath = '_tK_serverBasePath_';
|
||||||
public static $sharedIconPath = '_tK_sharedIconPath_';
|
public static $sharedIconPath = '_tK_sharedIconPath_';
|
||||||
public static $gameImagePath = "_tK_gameImagePath_";
|
public static $gameImagePath = "_tK_gameImagePath_";
|
||||||
|
public static $imageRequestPath = "_tK_imageRequestPath_";
|
||||||
|
public static $imageRequestKey = '_tK_imageRequestKey_';
|
||||||
|
private static $serverList = null;
|
||||||
|
|
||||||
public static function getSharedIconPath(string $filepath = ''): string
|
public static function getSharedIconPath(string $filepath = ''): string
|
||||||
{
|
{
|
||||||
@@ -32,6 +36,31 @@ class ServConfig
|
|||||||
return static::$gameImagePath;
|
return static::$gameImagePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getImagePullURI(): string
|
||||||
|
{
|
||||||
|
$now = time();
|
||||||
|
$req_hash = Util::hashPassword(sprintf("%016x", $now), static::$imageRequestKey);
|
||||||
|
return static::$imageRequestPath . "?req={$req_hash}&time={$now}";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 서버 설정 반환
|
||||||
|
*
|
||||||
|
* @return \sammo\Setting[]
|
||||||
|
*/
|
||||||
|
public static function getServerList(): array{
|
||||||
|
$servKeyList = [/*_tK_serverList_*/];
|
||||||
|
$servKeyList[] = ['hwe', '훼', 'red'];
|
||||||
|
|
||||||
|
if (self::$serverList === null) {
|
||||||
|
self::$serverList = [];
|
||||||
|
foreach($servKeyList as [$servKey, $servNick, $servColor]){
|
||||||
|
self::$serverList[$servKey] = new Setting(ROOT.'/'.$servKey, $servNick, $servColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return self::$serverList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 서버 주소 반환. 서버의 경로가 하부 디렉토리인 경우에 하부 디렉토리까지 포함
|
* 서버 주소 반환. 서버의 경로가 하부 디렉토리인 경우에 하부 디렉토리까지 포함
|
||||||
|
|||||||
@@ -6,11 +6,6 @@
|
|||||||
|
|
||||||
.img_back {background-image:url('_tK_gameImagePath_/back.jpg'); }
|
.img_back {background-image:url('_tK_gameImagePath_/back.jpg'); }
|
||||||
|
|
||||||
/* 레거시. */
|
|
||||||
#bg0 { background-image:url('_tK_gameImagePath_/back_walnut.jpg'); }
|
|
||||||
#bg1 { background-image:url('_tK_gameImagePath_/back_green.jpg'); }
|
|
||||||
#bg2 { background-image:url('_tK_gameImagePath_/back_blue.jpg'); }
|
|
||||||
|
|
||||||
.map_detail .map_title{
|
.map_detail .map_title{
|
||||||
background:
|
background:
|
||||||
url('_tK_gameImagePath_/ltitle.jpg') no-repeat left,
|
url('_tK_gameImagePath_/ltitle.jpg') no-repeat left,
|
||||||
@@ -41,18 +36,132 @@
|
|||||||
url('_tK_gameImagePath_/winter.gif') no-repeat right;
|
url('_tK_gameImagePath_/winter.gif') no-repeat right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.map_spring .map_body{
|
/*체 지도*/
|
||||||
background: url('_tK_gameImagePath_/map1.jpg') no-repeat;
|
.map_theme_che.map_spring .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_spring.jpg') no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.map_summer .map_body{
|
.map_theme_che.map_summer .map_bglayer1{
|
||||||
background: url('_tK_gameImagePath_/map2.jpg') no-repeat;
|
background: url('_tK_gameImagePath_/map/che/bg_summer.jpg') no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.map_fall .map_body{
|
.map_theme_che.map_fall .map_bglayer1{
|
||||||
background: url('_tK_gameImagePath_/map3.jpg') no-repeat;
|
background: url('_tK_gameImagePath_/map/che/bg_fall.jpg') no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.map_winter .map_body{
|
.map_theme_che.map_winter .map_bglayer1{
|
||||||
background: url('_tK_gameImagePath_/map4.jpg') no-repeat;
|
background: url('_tK_gameImagePath_/map/che/bg_winter.jpg') no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_che .map_bgroad{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/che_road.png') no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*미니체 지도*/
|
||||||
|
.map_theme_miniche.map_spring .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_spring.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche.map_summer .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_summer.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche.map_fall .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_fall.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche.map_winter .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_winter.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche .map_bgroad{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/miniche_road.png') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*미니체 지도*/
|
||||||
|
.map_theme_miniche_b.map_spring .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_spring.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche_b.map_summer .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_summer.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche_b.map_fall .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_fall.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche_b.map_winter .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_winter.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche_b .map_bgroad{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/miniche_road.png') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*미니체 지도*/
|
||||||
|
.map_theme_miniche_clean.map_spring .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_spring.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche_clean.map_summer .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_summer.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche_clean.map_fall .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_fall.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche_clean.map_winter .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/bg_winter.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_miniche_clean .map_bgroad{
|
||||||
|
background: url('_tK_gameImagePath_/map/che/miniche_road.png') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*루드라사움 지도*/
|
||||||
|
.map_theme_ludo_rathowm .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/ludo_rathowm/back.jpg') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map_theme_ludo_rathowm .map_bgroad{
|
||||||
|
background: url('_tK_gameImagePath_/map/ludo_rathowm/road.png') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.world_map.map_theme_ludo_rathowm .map_title .map_title_text::before {
|
||||||
|
color:white;
|
||||||
|
content:'LP';
|
||||||
|
margin-right:1ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*체스판 지도*/
|
||||||
|
.map_theme_chess .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/chess/chessboard.png') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*포켓몬 v1 지도*/
|
||||||
|
.map_theme_pokemon_v1 .map_bglayer1{
|
||||||
|
background: url('_tK_gameImagePath_/map/pokemon_v1/back_pal8.png') no-repeat;
|
||||||
|
background-size: 700px 500px;
|
||||||
}
|
}
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
window.sammo_menu = [
|
|
||||||
['/bbs/board', '삼모게시판', '_blank'],
|
|
||||||
['/bbs/tip', '팁/강좌', '_blank'],
|
|
||||||
['/bbs/news', '삼국 일보', '_blank'],
|
|
||||||
['/bbs/history2', '개인 열전', '_blank'],
|
|
||||||
['/bbs/history3', '국가 열전', '_blank'],
|
|
||||||
['/bbs/patch', '패치 내역', '_blank']
|
|
||||||
];
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[
|
||||||
|
["/bbs/board", "삼모게시판", "_blank"],
|
||||||
|
["/bbs/tip", "팁/강좌", "_blank"],
|
||||||
|
["/bbs/news", "삼국 일보", "_blank"],
|
||||||
|
["/bbs/history2", "개인 열전", "_blank"],
|
||||||
|
["/bbs/history3", "국가 열전", "_blank"],
|
||||||
|
["/bbs/patch", "패치 내역", "_blank"]
|
||||||
|
]
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace sammo;
|
|
||||||
|
|
||||||
function MYDB_query($query, $connect)
|
|
||||||
{
|
|
||||||
return mysqli_query($connect, $query);
|
|
||||||
}
|
|
||||||
|
|
||||||
function MYDB_num_rows(\mysqli_result $result) : int
|
|
||||||
{
|
|
||||||
return mysqli_num_rows($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return mixed[]
|
|
||||||
*/
|
|
||||||
function MYDB_fetch_array(\mysqli_result $result)
|
|
||||||
{
|
|
||||||
return mysqli_fetch_array($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
function MYDB_fetch_row(\mysqli_result $result)
|
|
||||||
{
|
|
||||||
return mysqli_fetch_row($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
function MYDB_error($connect)
|
|
||||||
{
|
|
||||||
return mysqli_error($connect);
|
|
||||||
}
|
|
||||||
@@ -6,35 +6,15 @@ include "func.php";
|
|||||||
|
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
if($session->userGrade < 4) {
|
if($session->userGrade < 4) {
|
||||||
?>
|
die(requireAdminPermissionHTML());
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>관리메뉴</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
관리자가 아닙니다.<br>
|
|
||||||
<?=banner()?>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<?php
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
[$turntime, $tnmt_time] = $gameStor->getValuesAsArray(['turntime','tnmt_time']);
|
[$turntime, $tnmt_time] = $gameStor->getValuesAsArray(['turntime','tnmt_time']);
|
||||||
|
|
||||||
$query = "select plock from plock";
|
$plock = $db->queryFirstField('SELECT plock FROM plock');
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$plock = MYDB_fetch_array($result);
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
@@ -44,15 +24,15 @@ $plock = MYDB_fetch_array($result);
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<form action=_119_b.php method=post>
|
<form action=_119_b.php method=post>
|
||||||
시간조정 : <input type=text size=3 name=minute><input type=submit name=btn value='분당김'><input type=submit name=btn value='분지연'> 최종갱신 : <?=$turntime?><br>
|
시간조정 : <input type=text size=3 name=minute><input type=submit name=btn value='분당김'><input type=submit name=btn value='분지연'> 최종갱신 : <?=$turntime?><br>
|
||||||
시간조정 : <input type=text size=3 name=minute2><input type=submit name=btn value='토너분당김'><input type=submit name=btn value='토너분지연'> 토너먼트 : <?=$tnmt_time?><br>
|
시간조정 : <input type=text size=3 name=minute2><input type=submit name=btn value='토너분당김'><input type=submit name=btn value='토너분지연'> 토너먼트 : <?=$tnmt_time?><br>
|
||||||
봉급지급 : <input type=submit name=btn value='금지급'><input type=submit name=btn value='쌀지급'><br>
|
봉급지급 : <input type=submit name=btn value='금지급'><input type=submit name=btn value='쌀지급'><br>
|
||||||
락 풀 기 : <input type=submit name=btn value='락걸기'><input type=submit name=btn value='락풀기'> 현재 : <?=$plock['plock']>0?"동결중":"가동중"?><br>
|
락 풀 기 : <input type=submit name=btn value='락걸기'><input type=submit name=btn value='락풀기'> 현재 : <?=$plock>0?"동결중":"가동중"?><br>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -20,39 +21,57 @@ if(!$v->validate()){
|
|||||||
Error($v->errorStr());
|
Error($v->errorStr());
|
||||||
}
|
}
|
||||||
|
|
||||||
$btn = Util::getReq('btn');
|
$btn = Util::getPost('btn');
|
||||||
$minute = Util::getReq('minute', 'int');
|
$minute = Util::getPost('minute', 'int');
|
||||||
$minute2 = Util::getReq('minute2', 'int');
|
$minute2 = Util::getPost('minute2', 'int');
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
switch ($btn) {
|
switch ($btn) {
|
||||||
case "분당김":
|
case "분당김":
|
||||||
|
$locked = false;
|
||||||
|
for ($i = 0; $i < 10; $i++) {
|
||||||
|
if (tryLock()) {
|
||||||
|
$locked = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
usleep(500000);
|
||||||
|
}
|
||||||
|
|
||||||
$gameStor->cacheValues(['turntime', 'starttime', 'tnmt_time']);
|
$gameStor->cacheValues(['turntime', 'starttime', 'tnmt_time']);
|
||||||
$turntime = (new \DateTimeImmutable($gameStor->turntime))->sub(new \DateInterval("PT{$minute}M"));
|
$turntime = (new \DateTimeImmutable($gameStor->turntime))->sub(new \DateInterval("PT{$minute}M"));
|
||||||
$starttime = (new \DateTimeImmutable($gameStor->starttime))->sub(new \DateInterval("PT{$minute}M"));
|
$starttime = (new \DateTimeImmutable($gameStor->starttime))->sub(new \DateInterval("PT{$minute}M"));
|
||||||
$tnmt_time = (new \DateTimeImmutable($gameStor->tnmt_time))->sub(new \DateInterval("PT{$minute}M"));
|
$tnmt_time = (new \DateTimeImmutable($gameStor->tnmt_time))->sub(new \DateInterval("PT{$minute}M"));
|
||||||
|
|
||||||
$gameStor->turntime = $turntime->format('Y-m-d H:i:s');
|
$gameStor->turntime = $turntime->format('Y-m-d H:i:s.u');
|
||||||
$gameStor->starttime = $starttime->format('Y-m-d H:i:s');
|
$gameStor->starttime = $starttime->format('Y-m-d H:i:s');
|
||||||
$gameStor->tnmt_time = $tnmt_time->format('Y-m-d H:i:s');
|
$gameStor->tnmt_time = $tnmt_time->format('Y-m-d H:i:s');
|
||||||
|
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'turntime'=>$db->sqleval('DATE_ADD(turntime, INTERVAL %i MINUTE)', $minute)
|
'turntime' => $db->sqleval('DATE_SUB(turntime, INTERVAL %i MINUTE)', $minute)
|
||||||
], true);
|
], true);
|
||||||
$db->update('auction', [
|
$db->update('auction', [
|
||||||
'expire'=>$db->sqleval('DATE_ADD(expire, INTERVAL %i MINUTE)', $minute)
|
'expire' => $db->sqleval('DATE_SUB(expire, INTERVAL %i MINUTE)', $minute)
|
||||||
], true);
|
], true);
|
||||||
|
if ($locked) {
|
||||||
|
unlock();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "분지연":
|
case "분지연":
|
||||||
|
$locked = false;
|
||||||
|
for ($i = 0; $i < 5; $i++) {
|
||||||
|
if (tryLock()) {
|
||||||
|
$locked = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
usleep(500000);
|
||||||
|
}
|
||||||
$gameStor->cacheValues(['turntime', 'starttime', 'tnmt_time']);
|
$gameStor->cacheValues(['turntime', 'starttime', 'tnmt_time']);
|
||||||
$turntime = (new \DateTimeImmutable($gameStor->turntime))->add(new \DateInterval("PT{$minute}M"));
|
$turntime = (new \DateTimeImmutable($gameStor->turntime))->add(new \DateInterval("PT{$minute}M"));
|
||||||
$starttime = (new \DateTimeImmutable($gameStor->starttime))->add(new \DateInterval("PT{$minute}M"));
|
$starttime = (new \DateTimeImmutable($gameStor->starttime))->add(new \DateInterval("PT{$minute}M"));
|
||||||
$tnmt_time = (new \DateTimeImmutable($gameStor->tnmt_time))->add(new \DateInterval("PT{$minute}M"));
|
$tnmt_time = (new \DateTimeImmutable($gameStor->tnmt_time))->add(new \DateInterval("PT{$minute}M"));
|
||||||
|
|
||||||
$gameStor->turntime = $turntime->format('Y-m-d H:i:s');
|
$gameStor->turntime = $turntime->format('Y-m-d H:i:s.u');
|
||||||
$gameStor->starttime = $starttime->format('Y-m-d H:i:s');
|
$gameStor->starttime = $starttime->format('Y-m-d H:i:s');
|
||||||
$gameStor->tnmt_time = $tnmt_time->format('Y-m-d H:i:s');
|
$gameStor->tnmt_time = $tnmt_time->format('Y-m-d H:i:s');
|
||||||
|
|
||||||
@@ -62,6 +81,9 @@ case "분지연":
|
|||||||
$db->update('auction', [
|
$db->update('auction', [
|
||||||
'expire' => $db->sqleval('DATE_ADD(expire, INTERVAL %i MINUTE)', $minute)
|
'expire' => $db->sqleval('DATE_ADD(expire, INTERVAL %i MINUTE)', $minute)
|
||||||
], true);
|
], true);
|
||||||
|
if ($locked) {
|
||||||
|
unlock();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "토너분당김":
|
case "토너분당김":
|
||||||
$tnmt_time = new \DateTime($gameStor->tnmt_time);
|
$tnmt_time = new \DateTime($gameStor->tnmt_time);
|
||||||
@@ -80,11 +102,17 @@ case "쌀지급":
|
|||||||
processRiceIncome();
|
processRiceIncome();
|
||||||
break;
|
break;
|
||||||
case "락걸기":
|
case "락걸기":
|
||||||
$db->update('plock', ['plock'=>1], true);
|
for ($i = 0; $i < 10; $i++) {
|
||||||
|
if (tryLock()) {
|
||||||
|
$locked = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
usleep(500000);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "락풀기":
|
case "락풀기":
|
||||||
$db->update('plock', ['plock'=>0], true);
|
unlock();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
header('Location:_119.php');
|
header('Location:_119.php', true, 303);
|
||||||
@@ -7,28 +7,10 @@ include "func.php";
|
|||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if($session->userGrade < 5) {
|
if($session->userGrade < 5) {
|
||||||
?>
|
die(requireAdminPermissionHTML());
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>관리메뉴</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
관리자가 아닙니다.<br>
|
|
||||||
<?=banner()?>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<?php
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
$admin = getAdmin();
|
$admin = getAdmin();
|
||||||
?>
|
?>
|
||||||
@@ -40,7 +22,8 @@ $admin = getAdmin();
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class="tb_layout bg0">
|
<table align=center width=1000 class="tb_layout bg0">
|
||||||
@@ -56,7 +39,7 @@ $admin = getAdmin();
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=110 align=right>시작시간변경</td>
|
<td width=110 align=right>시작시간변경</td>
|
||||||
<td width=285><input type=text size=20 maxlength=20 style=color:white;background-color:black;text-align:right; name=starttime value='<?=$admin['starttime']?>'><input type=submit name=btn value=변경1></td>
|
<td width=285><input type=text size=20 maxlength=20 style=color:white;background-color:black;text-align:right; name=starttime value='<?=substr($admin['starttime'], 0, 19)?>'><input type=submit name=btn value=변경1></td>
|
||||||
<td width=110 align=right>현재도시훈사</td>
|
<td width=110 align=right>현재도시훈사</td>
|
||||||
<td width=285><?=$admin['city_rate']?></td>
|
<td width=285><?=$admin['city_rate']?></td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -66,12 +49,6 @@ $admin = getAdmin();
|
|||||||
<td width=110 align=right>최대 국가</td>
|
<td width=110 align=right>최대 국가</td>
|
||||||
<td width=285><input type=text size=3 maxlength=2 style=color:white;background-color:black;text-align:right; name=maxnation value=<?=$admin['maxnation']?>><input type=submit name=btn value=변경3></td>
|
<td width=285><input type=text size=3 maxlength=2 style=color:white;background-color:black;text-align:right; name=maxnation value=<?=$admin['maxnation']?>><input type=submit name=btn value=변경3></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td width=110 align=right></td>
|
|
||||||
<td width=285></td>
|
|
||||||
<td width=110 align=right>현재 수입률</td>
|
|
||||||
<td width=285><?=$admin['gold_rate']?>%</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td width=110 align=right>시작 년도</td>
|
<td width=110 align=right>시작 년도</td>
|
||||||
<td width=285><input type=text size=3 maxlength=3 style=color:white;background-color:black;text-align:right; name=startyear value='<?=$admin['startyear']?>'><input type=submit name=btn value=변경4></td>
|
<td width=285><input type=text size=3 maxlength=3 style=color:white;background-color:black;text-align:right; name=startyear value='<?=$admin['startyear']?>'><input type=submit name=btn value=변경4></td>
|
||||||
|
|||||||
@@ -22,19 +22,16 @@ if (!$v->validate()) {
|
|||||||
Error($v->errorStr());
|
Error($v->errorStr());
|
||||||
}
|
}
|
||||||
|
|
||||||
$msg = Util::getReq('msg');
|
$msg = Util::getPost('msg');
|
||||||
$btn = Util::getReq('btn');
|
$btn = Util::getPost('btn');
|
||||||
$log = Util::getReq('log');
|
$log = Util::getPost('log');
|
||||||
$starttime = Util::getReq('starttime', 'string', (new \DateTime())->format('Y-m-d H:i:s'));
|
$starttime = Util::getPost('starttime', 'string', (new \DateTime())->format('Y-m-d H:i:s'));
|
||||||
$maxgeneral = Util::getReq('maxgeneral', 'int', GameConst::$defaultMaxGeneral);
|
$maxgeneral = Util::getPost('maxgeneral', 'int', GameConst::$defaultMaxGeneral);
|
||||||
$maxnation = Util::getReq('maxnation', 'int', GameConst::$defaultMaxNation);
|
$maxnation = Util::getPost('maxnation', 'int', GameConst::$defaultMaxNation);
|
||||||
$startyear = Util::getReq('startyear', 'int', GameConst::$defaultStartYear);
|
$startyear = Util::getPost('startyear', 'int', GameConst::$defaultStartYear);
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
$admin = getAdmin();
|
$admin = getAdmin();
|
||||||
|
|
||||||
@@ -43,11 +40,7 @@ switch ($btn) {
|
|||||||
$gameStor->msg = $msg;
|
$gameStor->msg = $msg;
|
||||||
break;
|
break;
|
||||||
case "로그쓰기":
|
case "로그쓰기":
|
||||||
$lognum = $admin['historyindex'] + 1;
|
pushGlobalHistoryLog(["<R>★</><S>{$log}</>"]);
|
||||||
if ($lognum >= 29) {
|
|
||||||
$lognum = 0;
|
|
||||||
}
|
|
||||||
pushWorldHistory(["<R>★</><S>{$log}</>"]);
|
|
||||||
break;
|
break;
|
||||||
case "변경1":
|
case "변경1":
|
||||||
$gameStor->starttime = (new \DateTime($starttime))->format('Y-m-d H:i:s');
|
$gameStor->starttime = (new \DateTime($starttime))->format('Y-m-d H:i:s');
|
||||||
@@ -69,6 +62,7 @@ switch ($btn) {
|
|||||||
case "30분턴":
|
case "30분턴":
|
||||||
case "60분턴":
|
case "60분턴":
|
||||||
case "120분턴":
|
case "120분턴":
|
||||||
|
$admin = $gameStor->getValues(['turntime', 'turnterm', 'year', 'startyear', 'month']);
|
||||||
switch ($btn) {
|
switch ($btn) {
|
||||||
case "1분턴": $turnterm = 1; break;
|
case "1분턴": $turnterm = 1; break;
|
||||||
case "2분턴": $turnterm = 2; break;
|
case "2분턴": $turnterm = 2; break;
|
||||||
@@ -79,40 +73,28 @@ switch ($btn) {
|
|||||||
case "60분턴": $turnterm = 60; break;
|
case "60분턴": $turnterm = 60; break;
|
||||||
case "120분턴": $turnterm = 120; break;
|
case "120분턴": $turnterm = 120; break;
|
||||||
}
|
}
|
||||||
|
$oldunit = $admin['turnterm'] * 60;
|
||||||
$unit = $turnterm * 60;
|
$unit = $turnterm * 60;
|
||||||
|
|
||||||
|
$unitDiff = $unit / $oldunit;
|
||||||
|
|
||||||
|
$servTurnTime = new \DateTimeImmutable($admin['turntime']);
|
||||||
|
foreach ($db->query('SELECT no,turntime FROM general') as $gen) {
|
||||||
|
$genTurnTime = new \DateTimeImmutable($gen['turntime']);
|
||||||
|
$timeDiff = TimeUtil::DateIntervalToSeconds($genTurnTime->diff($servTurnTime));
|
||||||
|
$timeDiff *= $unitDiff;
|
||||||
|
$newGenTurnTime = $servTurnTime->add(TimeUtil::secondsToDateInterval($timeDiff));
|
||||||
|
|
||||||
|
$db->update('general', [
|
||||||
|
'turntime'=>$newGenTurnTime->format('Y-m-d H:i:s.u')
|
||||||
|
], 'no=%i', $gen['no']);
|
||||||
|
}
|
||||||
$turn = ($admin['year'] - $admin['startyear']) * 12 + $admin['month'] - 1;
|
$turn = ($admin['year'] - $admin['startyear']) * 12 + $admin['month'] - 1;
|
||||||
$starttime = date("Y-m-d H:i:s", strtotime($admin['turntime']) - $turn * $unit);
|
$starttime = $servTurnTime->sub(TimeUtil::secondsToDateInterval($turn * $unit))->format('Y-m-d H:i:s');
|
||||||
$starttime = cutTurn($starttime, $turnterm);
|
$starttime = cutTurn($starttime, $turnterm, false);
|
||||||
$gameStor->turnterm = $turnterm;
|
$gameStor->turnterm = $turnterm;
|
||||||
$gameStor->starttime = $starttime;
|
$gameStor->starttime = $starttime;
|
||||||
// 턴시간이 길어지는 경우 랜덤턴 배정
|
pushGlobalHistoryLog(["<R>★</>턴시간이 <C>$btn</>으로 변경됩니다."]);
|
||||||
if ($turnterm < $admin['turnterm']) {
|
|
||||||
$query = "select no from general";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$count = MYDB_num_rows($result);
|
|
||||||
for ($i=0; $i < $count; $i++) {
|
|
||||||
$gen = MYDB_fetch_array($result);
|
|
||||||
$turntime = getRandTurn($turnterm);
|
|
||||||
$query = "update general set turntime='$turntime' where no='{$gen['no']}'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
}
|
|
||||||
// 턴시간이 너무 멀리 떨어진 선수 제대로 보정
|
|
||||||
} else {
|
|
||||||
$query = "select no,turntime from general";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$count = MYDB_num_rows($result);
|
|
||||||
for ($i=0; $i < $count; $i++) {
|
|
||||||
$gen = MYDB_fetch_array($result);
|
|
||||||
$num = intdiv((strtotime($gen['turntime']) - strtotime($admin['turntime'])), $unit);
|
|
||||||
if ($num > 0) {
|
|
||||||
$gen['turntime'] = date("Y-m-d H:i:s", strtotime($gen['turntime']) - $unit * $num);
|
|
||||||
$query = "update general set turntime='{$gen['turntime']}' where no='{$gen['no']}'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pushWorldHistory(["<R>★</>턴시간이 <C>$btn</>으로 변경됩니다."]);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -7,24 +8,7 @@ include "func.php";
|
|||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if ($session->userGrade < 5) {
|
if ($session->userGrade < 5) {
|
||||||
?>
|
die(requireAdminPermissionHTML());
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>관리메뉴</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
관리자가 아닙니다.<br>
|
|
||||||
<?=banner()?>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<?php
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
@@ -32,17 +16,22 @@ $db = DB::db();
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>회원관리</title>
|
<title>회원관리</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>회 원 관 리<br><?=backButton()?></td></tr>
|
<tr>
|
||||||
|
<td>회 원 관 리<br><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<form name=form1 method=post action=_admin2_submit.php>
|
<form name=form1 method=post action=_admin2_submit.php>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
@@ -53,19 +42,28 @@ $db = DB::db();
|
|||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=80 align=center rowspan=12>회원선택<br><br><font color=cyan>NPC</font><br><font color=skyblue>NPC유저</font><br><font color=red>접속제한</font><br><b style=background-color:red;>블럭회원</b></td>
|
<td width=80 align=center rowspan=12>회원선택<br><br>
|
||||||
|
<font color=cyan>NPC</font><br>
|
||||||
|
<font color=skyblue>NPC유저</font><br>
|
||||||
|
<font color=red>접속제한</font><br><b style=background-color:red;>블럭회원</b>
|
||||||
|
</td>
|
||||||
<td width=105 rowspan=12>
|
<td width=105 rowspan=12>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<select name=genlist[] size=20 multiple style='color:white;background-color:black;font-size:13px'>";
|
<select name=genlist[] size=20 multiple style='color:white;background-color:black;font-size:14px'>";
|
||||||
$generalList = $db->query('SELECT `no`, `name`, npc, `block` FROM general ORDER BY npc, binary(`name`)');
|
$generalList = $db->query('SELECT `no`, `name`, npc, `block` FROM general ORDER BY npc, binary(`name`)');
|
||||||
|
|
||||||
foreach ($generalList as $general) {
|
foreach ($generalList as $general) {
|
||||||
$style = "style=;";
|
$style = "style=;";
|
||||||
if($general['block'] > 0) { $style .= "background-color:red;"; }
|
if ($general['block'] > 0) {
|
||||||
if($general['npc'] >= 2) { $style .= "color:cyan;"; }
|
$style .= "background-color:red;";
|
||||||
elseif($general['npc'] == 1) { $style .= "color:skyblue;"; }
|
}
|
||||||
|
|
||||||
|
$npcColor = getNPCColor($general['npc']);
|
||||||
|
if($npcColor !== null){
|
||||||
|
$style .= "color:{$npcColor};";
|
||||||
|
}
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<option value={$general['no']} $style>{$general['name']}</option>";
|
<option value={$general['no']} $style>{$general['name']}</option>";
|
||||||
@@ -76,7 +74,18 @@ echo "
|
|||||||
</td>
|
</td>
|
||||||
<td width=100 align=center>아이템 지급</td>
|
<td width=100 align=center>아이템 지급</td>
|
||||||
<td width=504>
|
<td width=504>
|
||||||
<select name=weap size=1 style='color:white;background-color:black;font-size:13px'>";
|
<select name=weapon size=1 style='color:white;background-color:black;font-size:14px'>";
|
||||||
|
foreach (GameConst::$allItems as $itemCategories) {
|
||||||
|
foreach ($itemCategories as $item => $cnt) {
|
||||||
|
if ($cnt == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$itemObj = buildItemClass($item);
|
||||||
|
if ($itemObj->isBuyable()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
for ($i = 0; $i < 27; $i++) {
|
for ($i = 0; $i < 27; $i++) {
|
||||||
echo "
|
echo "
|
||||||
<option value={$i}>{$i}</option>";
|
<option value={$i}>{$i}</option>";
|
||||||
@@ -113,12 +122,12 @@ for($i=0; $i < 27; $i++) {
|
|||||||
<td><input type=submit name=btn value='접속 허용'><input type=submit name=btn value='접속 제한'></td>
|
<td><input type=submit name=btn value='접속 허용'><input type=submit name=btn value='접속 제한'></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center>턴설정</td>
|
<td align=center>턴 시각 설정</td>
|
||||||
<td><input type=submit name=btn value='00턴'><input type=submit name=btn value='랜덤턴'></td>
|
<td><input type=submit name=btn value='00턴'><input type=submit name=btn value='랜덤턴'></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center>NPC해제</td>
|
<td align=center>명령 설정</td>
|
||||||
<td><input type=submit name=btn value='NPC해제'><input type=submit name=btn value='하야입력'><input type=submit name=btn value='방랑해산'><input type=submit name=btn value='NPC설정'></td>
|
<td><input type=submit name=btn value='하야입력'><input type=submit name=btn value='방랑해산'></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center>메세지 전달</td>
|
<td align=center>메세지 전달</td>
|
||||||
@@ -127,8 +136,13 @@ for($i=0; $i < 27; $i++) {
|
|||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
$btn = Util::getReq('btn');
|
$btn = Util::getPost('btn');
|
||||||
$weap = Util::getReq('weap', 'int');
|
$item = Util::getPost('item', 'string');
|
||||||
|
$genlist = Util::getPost('genlist', 'array_int');
|
||||||
extractMissingPostToGlobals();
|
$msg = Util::getPost('msg', 'string');
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireLogin()->loginGame()->setReadOnly();
|
$session = Session::requireLogin()->loginGame()->setReadOnly();
|
||||||
@@ -24,10 +25,15 @@ if(!$generalID){
|
|||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
$src = MessageTarget::buildQuick($session->generalID);
|
$src = MessageTarget::buildQuick($session->generalID);
|
||||||
|
|
||||||
|
$genObjList = [];
|
||||||
|
$env = [];
|
||||||
|
if ($genlist) {
|
||||||
|
$genObjList = General::createGeneralObjListFromDB($genlist);
|
||||||
|
$env = $gameStor->cacheAll();
|
||||||
|
}
|
||||||
switch ($btn) {
|
switch ($btn) {
|
||||||
case "전체 접속허용":
|
case "전체 접속허용":
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
@@ -46,7 +52,7 @@ switch($btn) {
|
|||||||
DB::db()->query('update general set block=0 where no IN %li', $genlist);
|
DB::db()->query('update general set block=0 where no IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "1단계 블럭":
|
case "1단계 블럭":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = TimeUtil::now();
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'block' => 1,
|
'block' => 1,
|
||||||
'killturn' => 24
|
'killturn' => 24
|
||||||
@@ -58,7 +64,7 @@ switch($btn) {
|
|||||||
], 'id IN %li', $uid);
|
], 'id IN %li', $uid);
|
||||||
break;
|
break;
|
||||||
case "2단계 블럭":
|
case "2단계 블럭":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = TimeUtil::now();
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'gold' => 0,
|
'gold' => 0,
|
||||||
'rice' => 0,
|
'rice' => 0,
|
||||||
@@ -72,7 +78,7 @@ switch($btn) {
|
|||||||
], 'id IN %li', $uid);
|
], 'id IN %li', $uid);
|
||||||
break;
|
break;
|
||||||
case "3단계 블럭":
|
case "3단계 블럭":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = TimeUtil::now();
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'gold' => 0,
|
'gold' => 0,
|
||||||
'rice' => 0,
|
'rice' => 0,
|
||||||
@@ -91,30 +97,36 @@ switch($btn) {
|
|||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "강제 사망":
|
case "강제 사망":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = TimeUtil::now(true);
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'turn0'=>0,
|
|
||||||
'killturn' => 0,
|
'killturn' => 0,
|
||||||
'turntime' => $date,
|
'turntime' => $date,
|
||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
|
$db->update('general_turn', [
|
||||||
|
'action' => '휴식',
|
||||||
|
'arg' => '{}',
|
||||||
|
'brief' => '휴식',
|
||||||
|
], 'general_id IN %li AND turn_idx = 0', $genlist);
|
||||||
break;
|
break;
|
||||||
case "특기 부여":
|
case "특기 부여":
|
||||||
[$year, $month] = $gameStor->getValuesAsArray(['year', 'month']);
|
[$year, $month] = $gameStor->getValuesAsArray(['year', 'month']);
|
||||||
$text = "특기 부여!";
|
$text = "특기 부여!";
|
||||||
|
|
||||||
foreach($db->query("SELECT `no`,leader,power,intel,dex0,dex10,dex20,dex30,dex40 FROM general WHERE `no` IN %li", $genlist) as $general){
|
foreach ($db->query("SELECT `no`,leadership,strength,intel,dex1,dex2,dex3,dex4,dex5 FROM general WHERE `no` IN %li", $genlist) as $general) {
|
||||||
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($general['no']), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($general['no']), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
$msg->send(true);
|
$msg->send(true);
|
||||||
|
|
||||||
$specialWar = SpecialityConst::pickSpecialWar($general);
|
$specialWar = SpecialityHelper::pickSpecialWar($general);
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'specage2' => $db->sqleval('age'),
|
'specage2' => $db->sqleval('age'),
|
||||||
'special2' => $specialWar
|
'special2' => $specialWar
|
||||||
], 'no=%i', $general['no']);
|
], 'no=%i', $general['no']);
|
||||||
$specialWarName = SpecialityConst::WAR[$specialWar][0];
|
$specialWarName = buildGeneralSpecialWarClass($specialWar)->getName();
|
||||||
$josaUl = JosaUtil::pick($specialWarName, '을');
|
$josaUl = JosaUtil::pick($specialWarName, '을');
|
||||||
pushGeneralHistory($general, "<C>●</>{$year}년 {$month}월:특기 【<b><C>{$specialWarName}</></b>】{$josaUl} 습득");
|
$logger = new ActionLogger($general['no'], 0, $year, $month);
|
||||||
pushGenLog($general, ["<C>●</>특기 【<b><L>{$specialWarName}</></b>】{$josaUl} 익혔습니다!"]);
|
$logger->pushGeneralHistoryLog("특기 【<b><C>{$specialWarName}</></b>】{$josaUl} 습득");
|
||||||
|
$logger->pushGeneralActionLog("특기 【<b><L>{$specialWarName}</></b>】{$josaUl} 익혔습니다!",ActionLogger::PLAIN);
|
||||||
|
$logger->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -147,7 +159,7 @@ switch($btn) {
|
|||||||
$msg->send(true);
|
$msg->send(true);
|
||||||
}
|
}
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'dex0'=>$db->sqleval('dex0+10000')
|
'dex1' => $db->sqleval('dex1+10000')
|
||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "궁숙10000":
|
case "궁숙10000":
|
||||||
@@ -157,7 +169,7 @@ switch($btn) {
|
|||||||
$msg->send(true);
|
$msg->send(true);
|
||||||
}
|
}
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'dex10'=>$db->sqleval('dex10+10000')
|
'dex2' => $db->sqleval('dex2+10000')
|
||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "기숙10000":
|
case "기숙10000":
|
||||||
@@ -168,7 +180,7 @@ switch($btn) {
|
|||||||
$msg->send(true);
|
$msg->send(true);
|
||||||
}
|
}
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'dex20'=>$db->sqleval('dex20+10000')
|
'dex3' => $db->sqleval('dex3+10000')
|
||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "귀숙10000":
|
case "귀숙10000":
|
||||||
@@ -179,7 +191,7 @@ switch($btn) {
|
|||||||
$msg->send(true);
|
$msg->send(true);
|
||||||
}
|
}
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'dex30'=>$db->sqleval('dex30+10000')
|
'dex4' => $db->sqleval('dex4+10000')
|
||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "차숙10000":
|
case "차숙10000":
|
||||||
@@ -190,7 +202,7 @@ switch($btn) {
|
|||||||
$msg->send(true);
|
$msg->send(true);
|
||||||
}
|
}
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'dex40'=>$db->sqleval('dex40+10000')
|
'dex5' => $db->sqleval('dex5+10000')
|
||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "접속 허용":
|
case "접속 허용":
|
||||||
@@ -204,7 +216,7 @@ switch($btn) {
|
|||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "메세지 전달":
|
case "메세지 전달":
|
||||||
$text = $msg;
|
$text = $msg ?? '';
|
||||||
foreach ($genlist as $generalID) {
|
foreach ($genlist as $generalID) {
|
||||||
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
$msg->send(true);
|
$msg->send(true);
|
||||||
@@ -212,11 +224,10 @@ switch($btn) {
|
|||||||
break;
|
break;
|
||||||
case "무기지급":
|
case "무기지급":
|
||||||
|
|
||||||
if($weap == 0) {
|
if ($item == 'None') {
|
||||||
$text = "무기 회수!";
|
$text = "무기 회수!";
|
||||||
}
|
} else {
|
||||||
else {
|
$text = getItemName($item) . " 지급!";
|
||||||
$text = getWeapName($weap)." 지급!";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($genlist as $generalID) {
|
foreach ($genlist as $generalID) {
|
||||||
@@ -224,23 +235,21 @@ switch($btn) {
|
|||||||
$msg->send(true);
|
$msg->send(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($weap == 0){
|
if ($item === 'None') {
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'weap'=>0
|
'weapon' => 'None'
|
||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'weap'=>$weap
|
'weapon' => $item
|
||||||
], '`no` IN %li AND weap < %i', $genlist, $weap);
|
], '`no` IN %li', $genlist, $item);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "책지급":
|
case "책지급":
|
||||||
if($weap == 0) {
|
if ($item == 'None') {
|
||||||
$text = "책 회수!";
|
$text = "책 회수!";
|
||||||
}
|
} else {
|
||||||
else {
|
$text = getItemName($item) . " 지급!";
|
||||||
$text = getBookName($weap)." 지급!";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($genlist as $generalID) {
|
foreach ($genlist as $generalID) {
|
||||||
@@ -248,23 +257,21 @@ switch($btn) {
|
|||||||
$msg->send(true);
|
$msg->send(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($weap == 0){
|
if ($item == 'None') {
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'book'=>0
|
'book' => 'None'
|
||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'book'=>$weap
|
'book' => $item
|
||||||
], '`no` IN %li AND book < %i', $genlist, $weap);
|
], '`no` IN %li', $genlist);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "말지급":
|
case "말지급":
|
||||||
if($weap == 0) {
|
if ($item == 'None') {
|
||||||
$text = "말 회수!";
|
$text = "말 회수!";
|
||||||
}
|
} else {
|
||||||
else {
|
$text = getItemName($item) . " 지급!";
|
||||||
$text = getHorseName($weap)." 지급!";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($genlist as $generalID) {
|
foreach ($genlist as $generalID) {
|
||||||
@@ -272,23 +279,21 @@ switch($btn) {
|
|||||||
$msg->send(true);
|
$msg->send(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($weap == 0){
|
if ($item == 'None') {
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'horse'=>0
|
'horse' => 'None'
|
||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'horse'=>$weap
|
'horse' => $item
|
||||||
], '`no` IN %li AND horse < %i', $genlist, $weap);
|
], '`no` IN %li', $genlist);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "도구지급":
|
case "도구지급":
|
||||||
if($weap == 0) {
|
if ($item == 'None') {
|
||||||
$text = "특수도구 회수!";
|
$text = "특수도구 회수!";
|
||||||
}
|
} else {
|
||||||
else {
|
$text = getItemName($item) . " 지급!";
|
||||||
$text = getItemName($weap)." 지급!";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($genlist as $generalID) {
|
foreach ($genlist as $generalID) {
|
||||||
@@ -296,37 +301,34 @@ switch($btn) {
|
|||||||
$msg->send(true);
|
$msg->send(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($weap == 0){
|
if ($item == 'None') {
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'item'=>0
|
'item' => 'None'
|
||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'item'=>$weap
|
'item' => $item
|
||||||
], '`no` IN %li AND item < %i', $genlist, $weap);
|
], '`no` IN %li AND item < %i', $genlist, $item);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "NPC해제":
|
|
||||||
$db->update('general', [
|
|
||||||
'npc'=>1
|
|
||||||
], '`no` IN %li', $genlist);
|
|
||||||
break;
|
|
||||||
case "하야입력":
|
case "하야입력":
|
||||||
$db->update('general', [
|
$db->update('general_turn', [
|
||||||
'turn0'=>'00000000000045'
|
'action' => 'che_하야',
|
||||||
], '`no` IN %li', $genlist);
|
'arg' => '{}',
|
||||||
|
'brief' => '하야',
|
||||||
|
], 'general_id IN %li AND turn_idx = 0', $genlist);
|
||||||
break;
|
break;
|
||||||
case "방랑해산":
|
case "방랑해산":
|
||||||
$db->update('general', [
|
$db->update('general_turn', [
|
||||||
'turn0'=>'00000000000047',
|
'action' => 'che_방랑',
|
||||||
'turn1'=>'00000000000056'
|
'arg' => '{}',
|
||||||
], '`no` IN %li', $genlist);
|
'brief' => '방랑',
|
||||||
break;
|
], 'general_id IN %li AND turn_idx = 0', $genlist);
|
||||||
case "NPC설정":
|
$db->update('general_turn', [
|
||||||
$db->update('general', [
|
'action' => 'che_해산',
|
||||||
'npc'=>2
|
'arg' => '{}',
|
||||||
], '`no` IN %li', $genlist);
|
'brief' => '해산',
|
||||||
|
], 'general_id IN %li AND turn_idx = 1', $genlist);
|
||||||
break;
|
break;
|
||||||
case "00턴":
|
case "00턴":
|
||||||
$turnterm = $gameStor->turnterm;
|
$turnterm = $gameStor->turnterm;
|
||||||
@@ -335,11 +337,12 @@ switch($btn) {
|
|||||||
$turntime = getRandTurn($turnterm);
|
$turntime = getRandTurn($turnterm);
|
||||||
$cutTurn = cutTurn($turntime, $turnterm);
|
$cutTurn = cutTurn($turntime, $turnterm);
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'turntime'=>$curTurn
|
'turntime' => $cutTurn
|
||||||
], '`no` IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "랜덤턴":
|
case "랜덤턴":
|
||||||
|
$turnterm = $gameStor->turnterm;
|
||||||
foreach ($genlist as $generalID) {
|
foreach ($genlist as $generalID) {
|
||||||
$turntime = getRandTurn($turnterm);
|
$turntime = getRandTurn($turnterm);
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -7,62 +8,73 @@ include "func.php";
|
|||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if ($session->userGrade < 5) {
|
if ($session->userGrade < 5) {
|
||||||
?>
|
die(requireAdminPermissionHTML());
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>관리메뉴</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
관리자가 아닙니다.<br>
|
|
||||||
<?=banner()?>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<?php
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
$conlimit = $gameStor->conlimit;
|
$conlimit = $gameStor->conlimit;
|
||||||
|
|
||||||
|
$ipGroupList = Util::arrayGroupBy(
|
||||||
|
$db->query(
|
||||||
|
'SELECT name,ip,lastconnect,owner,block,substring_index(ip,".",3) as ip_c from general WHERE ip!="" and npc<2'
|
||||||
|
),
|
||||||
|
'ip_c'
|
||||||
|
);
|
||||||
|
|
||||||
|
function colorBlockedName($general)
|
||||||
|
{
|
||||||
|
if (!$general['blocked']) {
|
||||||
|
return $general['name'];
|
||||||
|
}
|
||||||
|
return "<span style='color:magenta;'>{$general['name']}</span>";
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>멀티관리</title>
|
<title>멀티관리</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>멀 티 관 리<br><?=backButton()?></td></tr>
|
<tr>
|
||||||
|
<td>멀 티 관 리<br><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<form name=form1 method=post action=_admin4_submit.php>
|
<form name=form1 method=post action=_admin4_submit.php>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=80 align=center rowspan=3>회원선택<br><br><font color=cyan>NPC</font><br><font color=skyblue>NPC유저</font><br><font color=red>접속제한</font><br><b style=background-color:red;>블럭회원</b></td>
|
<td width=80 align=center rowspan=3>회원선택<br><br>
|
||||||
|
<font color=cyan>NPC</font><br>
|
||||||
|
<font color=skyblue>NPC유저</font><br>
|
||||||
|
<font color=red>접속제한</font><br><b style=background-color:red;>블럭회원</b>
|
||||||
|
</td>
|
||||||
<td width=105 rowspan=3>
|
<td width=105 rowspan=3>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<select name=genlist[] size=20 multiple style='color:white;background-color:black;font-size:13px'>";
|
<select name=genlist[] size=20 multiple style='color:white;background-color:black;font-size:14px'>";
|
||||||
|
|
||||||
foreach ($db->query('SELECT no,name,npc,block,con from general where ip!=\'\' order by npc,ip') as $general) {
|
foreach ($db->query('SELECT no,name,npc,block,con from general where ip!=\'\' order by npc,ip') as $general) {
|
||||||
$style = "style=;";
|
$style = "style=;";
|
||||||
if($general['block'] > 0) { $style .= "background-color:red;"; }
|
if ($general['block'] > 0) {
|
||||||
if($general['npc'] >= 2) { $style .= "color:cyan;"; }
|
$style .= "background-color:red;";
|
||||||
elseif($general['npc'] == 1) { $style .= "color:skyblue;"; }
|
}
|
||||||
if($general['con'] > $conlimit) { $style .= "color:red;"; }
|
|
||||||
|
$npcColor = getNPCColor($general['npc']);
|
||||||
|
if($npcColor !== null){
|
||||||
|
$style .= "color:{$npcColor};";
|
||||||
|
}
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<option value={$general['no']} $style>{$general['name']}</option>";
|
<option value={$general['no']} $style>{$general['name']}</option>";
|
||||||
@@ -94,49 +106,27 @@ echo "
|
|||||||
<td align=center width=129>IP</td>
|
<td align=center width=129>IP</td>
|
||||||
<td align=center width=100>ID</td>
|
<td align=center width=100>ID</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<?php foreach ($ipGroupList as $ipGroupC => $users) : ?>
|
||||||
<tr>
|
<tr>
|
||||||
<?php
|
<td><?= join('<br>', array_map('\sammo\colorBlockedName', $users)) ?></td>
|
||||||
$query = "select substring_index(ip,'.',3) as ip2 from general where ip!='' and npc<2 group by ip2 having count(*)>1";
|
<td><?= join('<br>', array_column($users, 'lastconnect')) ?></td>
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
<td><?= join('<br>', array_column($users, 'ip')) ?></td>
|
||||||
$ipCount = MYDB_num_rows($result);
|
<td><?= join('<br>', array_column($users, 'owner')) ?></td>
|
||||||
$genName = "";
|
|
||||||
$genDate = "";
|
|
||||||
$genIP = "";
|
|
||||||
$genID = "";
|
|
||||||
for($i=0; $i < $ipCount; $i++) {
|
|
||||||
$ip = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$query = "select name,ip,lastconnect,owner,block from general where ip like '{$ip['ip2']}%' and npc<2 order by ip";
|
|
||||||
$genResult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$genCount = MYDB_num_rows($genResult);
|
|
||||||
for($k=0; $k < $genCount; $k++) {
|
|
||||||
$gen = MYDB_fetch_array($genResult);
|
|
||||||
if($gen['block'] > 0) $genName .= "<font color=magenta>{$gen['name']}</font><br>";
|
|
||||||
else $genName .= $gen['name']."<br>";
|
|
||||||
$genDate .= $gen['lastconnect']."<br>";
|
|
||||||
$genIP .= $gen['ip']."<br>";
|
|
||||||
$genID .= $gen['owner']."<br>";
|
|
||||||
}
|
|
||||||
$genName .= "<br>";
|
|
||||||
$genDate .= "<br>";
|
|
||||||
$genIP .= "<br>";
|
|
||||||
$genID .= "<br>";
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
<td align=right>$genName</td>
|
|
||||||
<td>$genDate</td>
|
|
||||||
<td>$genIP</td>
|
|
||||||
<td>$genID</td>";
|
|
||||||
?>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
</table>
|
</table>
|
||||||
<?php
|
<?php
|
||||||
//NOTE: password의 md5 해시가 같은지 확인하는 방식으로는 앞으로 잡아낼 수 없다. 폐기
|
//NOTE: password의 md5 해시가 같은지 확인하는 방식으로는 앞으로 잡아낼 수 없다. 폐기
|
||||||
?>
|
?>
|
||||||
</form>
|
</form>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -11,11 +12,9 @@ if($session->userGrade < 5) {
|
|||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
$btn = Util::getReq('btn');
|
$btn = Util::getPost('btn');
|
||||||
$genlist = Util::getReq('genlist', 'array_int');
|
$genlist = Util::getPost('genlist', 'array_int');
|
||||||
$msg = Util::getReq('msg','string', '메시지');
|
$msg = Util::getPost('msg', 'string', '메시지');
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
|
|
||||||
@@ -26,7 +25,7 @@ switch($btn) {
|
|||||||
DB::db()->query('update general set block=0 where no IN %li', $genlist);
|
DB::db()->query('update general set block=0 where no IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "1단계 블럭":
|
case "1단계 블럭":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = TimeUtil::now();
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$db->query('update general set block=1,killturn=24 where no IN %li', $genlist);
|
$db->query('update general set block=1,killturn=24 where no IN %li', $genlist);
|
||||||
//FIXME: subquery로 하는게 더 빠를 듯.
|
//FIXME: subquery로 하는게 더 빠를 듯.
|
||||||
@@ -34,14 +33,14 @@ switch($btn) {
|
|||||||
RootDB::db()->query('update member set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
|
RootDB::db()->query('update member set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
|
||||||
break;
|
break;
|
||||||
case "2단계 블럭":
|
case "2단계 블럭":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = TimeUtil::now();
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$db->query('update general set block=2,killturn=24 where no IN %li', $genlist);
|
$db->query('update general set block=2,killturn=24 where no IN %li', $genlist);
|
||||||
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
|
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
|
||||||
RootDB::db()->query('update member set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
|
RootDB::db()->query('update member set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
|
||||||
break;
|
break;
|
||||||
case "3단계 블럭":
|
case "3단계 블럭":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = TimeUtil::now();
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$db->query('update general set block=3,killturn=24 where no IN %li', $genlist);
|
$db->query('update general set block=3,killturn=24 where no IN %li', $genlist);
|
||||||
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
|
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
|
||||||
@@ -51,20 +50,27 @@ switch($btn) {
|
|||||||
DB::db()->query('update general set killturn=8000 where no IN %li', $genlist);
|
DB::db()->query('update general set killturn=8000 where no IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "강제 사망":
|
case "강제 사망":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = TimeUtil::now(true);
|
||||||
DB::db()->query('update general set turn0=0,killturn=0,turntime=%s where no IN %li',$date, $genlist);
|
$db->update('general', [
|
||||||
|
'killturn' => 0,
|
||||||
|
'turntime' => $date,
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
|
$db->update('general_turn', [
|
||||||
|
'action' => '휴식',
|
||||||
|
'arg' => '{}',
|
||||||
|
'brief' => '휴식'
|
||||||
|
], 'general_id IN %li AND turn_idx = 0', $genlist);
|
||||||
break;
|
break;
|
||||||
case "메세지 전달":
|
case "메세지 전달":
|
||||||
//TODO:새 갠메 시스템으로 변경
|
$date = TimeUtil::now();
|
||||||
$date = date('Y-m-d H:i:s');
|
|
||||||
$src = MessageTarget::buildQuick($session->generalID);
|
$src = MessageTarget::buildQuick($session->generalID);
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
foreach($genlist as $generalID){
|
||||||
$msgObj = new Message(
|
$msgObj = new Message(
|
||||||
Message::MSGTYPE_PRIVATE,
|
Message::MSGTYPE_PRIVATE,
|
||||||
$src,
|
$src,
|
||||||
MessageTarget::buildQuick($genlist[$i]),
|
MessageTarget::buildQuick($generalID),
|
||||||
$msg,
|
$msg,
|
||||||
new DateTime(),
|
new \DateTime(),
|
||||||
new \DateTime('9999-12-31'),
|
new \DateTime('9999-12-31'),
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
@@ -76,4 +82,3 @@ switch($btn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
header('location:_admin4.php');
|
header('location:_admin4.php');
|
||||||
|
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
$type = Util::getReq('type', 'int', 0);
|
$type = Util::getPost('type', 'int', 0);
|
||||||
$type2 = Util::getReq('type2', 'int', 0);
|
$type2 = Util::getPost('type2', 'int', 0);
|
||||||
|
|
||||||
if ($type < 0 || $type > 17) {
|
if ($type < 0 || $type > 17) {
|
||||||
$type = 0;
|
$type = 0;
|
||||||
@@ -14,34 +15,14 @@ if($type2 < 0 || $type2 > 6){
|
|||||||
$type2 = 0;
|
$type2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if ($session->userGrade < 5) {
|
if ($session->userGrade < 5) {
|
||||||
?>
|
die(requireAdminPermissionHTML());
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>관리메뉴</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
관리자가 아닙니다.<br>
|
|
||||||
<?=banner()?>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<?php
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
$sel = [];
|
$sel = [];
|
||||||
$sel2 = [];
|
$sel2 = [];
|
||||||
@@ -51,18 +32,24 @@ $sel2[$type2] = "selected";
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>일제정보</title>
|
<title>일제정보</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>일 제 정 보<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td>일 제 정 보<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<form name=form1 method=post>정렬순서 :
|
<form name=form1 method=post>정렬순서 :
|
||||||
<select name=type size=1>
|
<select name=type size=1>
|
||||||
<option <?= $sel[0] ?? '' ?> value=0>국력</option>
|
<option <?= $sel[0] ?? '' ?> value=0>국력</option>
|
||||||
@@ -99,11 +86,7 @@ $sel2[$type2] = "selected";
|
|||||||
<select name=nation size=1 style=color:white;background-color:black>";
|
<select name=nation size=1 style=color:white;background-color:black>";
|
||||||
<option value=0>재야</option>";
|
<option value=0>재야</option>";
|
||||||
<?php
|
<?php
|
||||||
$query = "select nation,name,color,scout,scoutmsg,gennum from nation order by power";
|
foreach ($db->query('SELECT nation,name,color,scout,gennum from nation order by power DESC') as $nation) {
|
||||||
$result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),"");
|
|
||||||
$count = MYDB_num_rows($result);
|
|
||||||
for($i=1; $i <= $count; $i++) {
|
|
||||||
$nation = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<option value={$nation['nation']}>{$nation['name']}</option>";
|
<option value={$nation['nation']}>{$nation['name']}</option>";
|
||||||
@@ -112,16 +95,16 @@ for($i=1; $i <= $count; $i++) {
|
|||||||
</select>
|
</select>
|
||||||
<input type=submit name=btn value='국가변경'>
|
<input type=submit name=btn value='국가변경'>
|
||||||
</form>
|
</form>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table align=center width=1600 class="tb_layout bg0">
|
<table align=center width=1600 class="tb_layout bg0">
|
||||||
<tr id=bg1>
|
<tr class='bg1'>
|
||||||
<td align=center>국명</td>
|
<td align=center>국명</td>
|
||||||
<td align=center>접률</td>
|
<td align=center>접률</td>
|
||||||
<td align=center>단접</td>
|
<td align=center>단접</td>
|
||||||
<td align=center>국력</td>
|
<td align=center>국력</td>
|
||||||
<td align=center>단합</td>
|
|
||||||
<td align=center>장수</td>
|
<td align=center>장수</td>
|
||||||
<td align=center>속령</td>
|
<td align=center>속령</td>
|
||||||
<td align=center>기술</td>
|
<td align=center>기술</td>
|
||||||
@@ -155,73 +138,101 @@ SELECT
|
|||||||
A.nation,
|
A.nation,
|
||||||
A.name,
|
A.name,
|
||||||
A.power,
|
A.power,
|
||||||
A.chemi,
|
|
||||||
A.color,
|
A.color,
|
||||||
A.tech,
|
A.tech,
|
||||||
A.sabotagelimit,
|
A.strategic_cmd_limit,
|
||||||
A.gold,
|
A.gold,
|
||||||
A.rice,
|
A.rice,
|
||||||
COUNT(B.nation) AS gennum,
|
COUNT(B.nation) AS gennum,
|
||||||
ROUND(AVG(B.connect), 1) AS connect,
|
ROUND(AVG(B.connect), 1) AS connect,
|
||||||
ROUND(AVG(B.con), 1) AS con,
|
ROUND(AVG(B.con), 1) AS con,
|
||||||
ROUND(AVG(B.dex0)) AS dex0,
|
ROUND(AVG(B.dex1)) AS dex1,
|
||||||
ROUND(AVG(B.dex10)) AS dex10,
|
ROUND(AVG(B.dex2)) AS dex2,
|
||||||
ROUND(AVG(B.dex20)) AS dex20,
|
ROUND(AVG(B.dex3)) AS dex3,
|
||||||
ROUND(AVG(B.dex30)) AS dex30,
|
ROUND(AVG(B.dex4)) AS dex4,
|
||||||
ROUND(AVG(B.dex40)) AS dex40
|
ROUND(AVG(B.dex5)) AS dex5
|
||||||
FROM nation A, general B
|
FROM nation A, general B
|
||||||
WHERE A.nation=B.nation
|
WHERE A.nation=B.nation
|
||||||
GROUP BY B.nation
|
GROUP BY B.nation
|
||||||
";
|
";
|
||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 0: $query .= " order by power desc"; break;
|
case 0:
|
||||||
case 1: $query .= " order by gennum desc"; break;
|
$query .= " order by power desc";
|
||||||
case 2: $query .= " order by A.tech desc"; break;
|
break;
|
||||||
case 3: $query .= " order by A.gold desc"; break;
|
case 1:
|
||||||
case 4: $query .= " order by A.rice desc"; break;
|
$query .= " order by gennum desc";
|
||||||
case 5: $query .= " order by avg(B.gold) desc"; break;
|
break;
|
||||||
case 6: $query .= " order by avg(B.rice) desc"; break;
|
case 2:
|
||||||
case 7: $query .= " order by avg(B.leader) desc"; break;
|
$query .= " order by A.tech desc";
|
||||||
case 8: $query .= " order by avg(B.power) desc"; break;
|
break;
|
||||||
case 9: $query .= " order by avg(B.intel) desc"; break;
|
case 3:
|
||||||
case 10: $query .= " order by avg(B.explevel) desc"; break;
|
$query .= " order by A.gold desc";
|
||||||
case 11: $query .= " order by avg(B.connect) desc"; break;
|
break;
|
||||||
case 12: $query .= " order by avg(B.con) desc"; break;
|
case 4:
|
||||||
case 13: $query .= " order by avg(B.dex0) desc"; break;
|
$query .= " order by A.rice desc";
|
||||||
case 14: $query .= " order by avg(B.dex10) desc"; break;
|
break;
|
||||||
case 15: $query .= " order by avg(B.dex20) desc"; break;
|
case 5:
|
||||||
case 16: $query .= " order by avg(B.dex30) desc"; break;
|
$query .= " order by avg(B.gold) desc";
|
||||||
case 17: $query .= " order by avg(B.dex40) desc"; break;
|
break;
|
||||||
|
case 6:
|
||||||
|
$query .= " order by avg(B.rice) desc";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$query .= " order by avg(B.leadership) desc";
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
$query .= " order by avg(B.strength) desc";
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
$query .= " order by avg(B.intel) desc";
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
$query .= " order by avg(B.explevel) desc";
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
$query .= " order by avg(B.connect) desc";
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
$query .= " order by avg(B.con) desc";
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
$query .= " order by avg(B.dex1) desc";
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
$query .= " order by avg(B.dex2) desc";
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
$query .= " order by avg(B.dex3) desc";
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
$query .= " order by avg(B.dex4) desc";
|
||||||
|
break;
|
||||||
|
case 17:
|
||||||
|
$query .= " order by avg(B.dex5) desc";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
foreach ($db->query($query) as $nation) {
|
||||||
$nationCount = MYDB_num_rows($result);
|
$gen = $db->queryFirstRow('SELECT COUNT(*) as cnt,
|
||||||
for($i=0; $i < $nationCount; $i++) {
|
|
||||||
$nation = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$query = "select COUNT(*) as cnt,
|
|
||||||
ROUND(AVG(gold)) as avgg,
|
ROUND(AVG(gold)) as avgg,
|
||||||
ROUND(AVG(rice)) as avgr,
|
ROUND(AVG(rice)) as avgr,
|
||||||
SUM(leader) as leader, ROUND(AVG(leader), 1) as avgl,
|
SUM(leadership) as leadership, ROUND(AVG(leadership), 1) as avgl,
|
||||||
ROUND(AVG(power), 1) as avgp,
|
ROUND(AVG(strength), 1) as avgs,
|
||||||
ROUND(AVG(intel), 1) as avgi,
|
ROUND(AVG(intel), 1) as avgi,
|
||||||
ROUND(AVG(explevel), 1) as avge,
|
ROUND(AVG(explevel), 1) as avge,
|
||||||
SUM(crew) as crew
|
SUM(crew) as crew
|
||||||
from general where nation='{$nation['nation']}'";
|
from general where nation=%i', $nation['nation']);
|
||||||
$genResult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$gen = MYDB_fetch_array($genResult);
|
|
||||||
|
|
||||||
$query = "select COUNT(*) as cnt,
|
$city = $db->queryFirstRow('SELECT COUNT(*) as cnt,
|
||||||
SUM(pop) as pop, SUM(pop2) as pop2,
|
SUM(pop) as pop, SUM(pop_max) as pop_max,
|
||||||
ROUND(SUM(pop)/SUM(pop2)*100, 2) as rate,
|
ROUND(SUM(pop)/SUM(pop_max)*100, 2) as rate,
|
||||||
ROUND(SUM(agri)/SUM(agri2)*100, 2) as agri,
|
trust,
|
||||||
ROUND(SUM(comm)/SUM(comm2)*100, 2) as comm,
|
ROUND(SUM(agri)/SUM(agri_max)*100, 2) as agri,
|
||||||
ROUND(SUM(secu)/SUM(secu2)*100, 2) as secu,
|
ROUND(SUM(comm)/SUM(comm_max)*100, 2) as comm,
|
||||||
ROUND(SUM(wall)/SUM(wall2)*100, 2) as wall,
|
ROUND(SUM(secu)/SUM(secu_max)*100, 2) as secu,
|
||||||
ROUND(SUM(def)/SUM(def2)*100, 2) as def
|
ROUND(SUM(wall)/SUM(wall_max)*100, 2) as wall,
|
||||||
from city where nation='{$nation['nation']}'";
|
ROUND(SUM(def)/SUM(def_max)*100, 2) as def
|
||||||
$cityResult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
from city where nation=%i', $nation['nation']);
|
||||||
$city = MYDB_fetch_array($cityResult);
|
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<tr>
|
<tr>
|
||||||
@@ -229,27 +240,26 @@ for($i=0; $i < $nationCount; $i++) {
|
|||||||
<td align=center> {$nation['connect']} </td>
|
<td align=center> {$nation['connect']} </td>
|
||||||
<td align=center> {$nation['con']} </td>
|
<td align=center> {$nation['con']} </td>
|
||||||
<td align=center> {$nation['power']} </td>
|
<td align=center> {$nation['power']} </td>
|
||||||
<td align=center> {$nation['chemi']} </td>
|
|
||||||
<td align=center> {$gen['cnt']} </td>
|
<td align=center> {$gen['cnt']} </td>
|
||||||
<td align=center> {$city['cnt']} </td>
|
<td align=center> {$city['cnt']} </td>
|
||||||
<td align=center> {$nation['tech']} </td>
|
<td align=right> " . sprintf('%.1f', $nation['tech']) . " </td>
|
||||||
<td align=center> {$nation['sabotagelimit']} </td>
|
<td align=center> {$nation['strategic_cmd_limit']} </td>
|
||||||
<td align=center> {$nation['gold']} </td>
|
<td align=center> {$nation['gold']} </td>
|
||||||
<td align=center> {$nation['rice']} </td>
|
<td align=center> {$nation['rice']} </td>
|
||||||
<td align=center> {$gen['avgg']} </td>
|
<td align=right> {$gen['avgg']} </td>
|
||||||
<td align=center> {$gen['avgr']} </td>
|
<td align=right> {$gen['avgr']} </td>
|
||||||
<td align=center> {$gen['avgl']} </td>
|
<td align=right> {$gen['avgl']} </td>
|
||||||
<td align=center> {$gen['avgp']} </td>
|
<td align=right> {$gen['avgs']} </td>
|
||||||
<td align=center> {$gen['avgi']} </td>
|
<td align=right> {$gen['avgi']} </td>
|
||||||
<td align=center> {$gen['avge']} </td>
|
<td align=right> {$gen['avge']} </td>
|
||||||
<td align=center> {$nation['dex0']} </td>
|
<td align=right> {$nation['dex1']} </td>
|
||||||
<td align=center> {$nation['dex10']} </td>
|
<td align=right> {$nation['dex2']} </td>
|
||||||
<td align=center> {$nation['dex20']} </td>
|
<td align=right> {$nation['dex3']} </td>
|
||||||
<td align=center> {$nation['dex30']} </td>
|
<td align=right> {$nation['dex4']} </td>
|
||||||
<td align=center> {$nation['dex40']} </td>
|
<td align=right> {$nation['dex5']} </td>
|
||||||
<td align=center> {$gen['crew']}/{$gen['leader']}00 </td>
|
<td align=right> {$gen['crew']}/{$gen['leadership']}00 </td>
|
||||||
<td align=center> {$city['pop']}/{$city['pop2']} </td>
|
<td align=center> {$city['pop']}/{$city['pop_max']} </td>
|
||||||
<td align=center> {$city['rate']}% </td>
|
<td align=center> " . sprintf('%.1f', $city['pop'] / Util::valueFit($city['pop_max'], 1) * 100) . "% </td>
|
||||||
<td align=center> {$city['agri']}% </td>
|
<td align=center> {$city['agri']}% </td>
|
||||||
<td align=center> {$city['comm']}% </td>
|
<td align=center> {$city['comm']}% </td>
|
||||||
<td align=center> {$city['secu']}% </td>
|
<td align=center> {$city['secu']}% </td>
|
||||||
@@ -263,11 +273,13 @@ for($i=0; $i < $nationCount; $i++) {
|
|||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=getSabotageLogRecent(20)?></td></tr>
|
<tr>
|
||||||
|
<td><?= getSabotageLogRecent(20) ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table align=center width=1760 class="tb_layout bg0">
|
<table align=center width=1760 class="tb_layout bg0">
|
||||||
<tr id=bg1>
|
<tr class='bg1'>
|
||||||
<td width=30 align=center>년</td>
|
<td width=30 align=center>년</td>
|
||||||
<td width=30 align=center>월</td>
|
<td width=30 align=center>월</td>
|
||||||
<td width=50 align=center>국가수</td>
|
<td width=50 align=center>국가수</td>
|
||||||
@@ -275,23 +287,32 @@ for($i=0; $i < $nationCount; $i++) {
|
|||||||
<?php
|
<?php
|
||||||
switch ($type2) {
|
switch ($type2) {
|
||||||
default:
|
default:
|
||||||
case 0: echo "<td width=1600>국력(국력,장수수,도시수,인구/100,최대인구/100,국가자원/100,장수자원/100,능력치,숙련/1000,경험공헌/100)</td>"; break;
|
case 0:
|
||||||
case 1: echo "<td width=1600>국가별성향</td>"; break;
|
echo "<td width=1600>국력(국력,장수수,도시수,인구/100,최대인구/100,국가자원/100,장수자원/100,능력치,숙련/1000,경험공헌/100)</td>";
|
||||||
case 2: echo "<td width=1600>국가성향</td>"; break;
|
break;
|
||||||
case 3: echo "<td width=1600>장수성격</td>"; break;
|
case 1:
|
||||||
case 4: echo "<td width=1600>장수특기</td>"; break;
|
echo "<td width=1600>국가별성향</td>";
|
||||||
case 5: echo "<td width=1600>병종수</td>"; break;
|
break;
|
||||||
case 6: echo "<td width=1600>기타</td>"; break;
|
case 2:
|
||||||
|
echo "<td width=1600>국가성향</td>";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
echo "<td width=1600>장수성격</td>";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
echo "<td width=1600>장수특기</td>";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
echo "<td width=1600>병종수</td>";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
echo "<td width=1600>기타</td>";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
$query = "select * from statistic where month=1 or no=1";
|
foreach ($db->query('SELECT * from statistic where month=1 or no=1') as $stat) {
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$count = MYDB_num_rows($result);
|
|
||||||
for($i=0; $i < $count; $i++) {
|
|
||||||
$stat = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center>{$stat['year']}</td>
|
<td align=center>{$stat['year']}</td>
|
||||||
@@ -301,13 +322,27 @@ for($i=0; $i < $count; $i++) {
|
|||||||
";
|
";
|
||||||
switch ($type2) {
|
switch ($type2) {
|
||||||
default:
|
default:
|
||||||
case 0: echo "<td>{$stat['power_hist']}</td>"; break;
|
case 0:
|
||||||
case 1: echo "<td>{$stat['nation_name']}</td>"; break;
|
echo "<td>{$stat['power_hist']}</td>";
|
||||||
case 2: echo "<td>{$stat['nation_hist']}</td>"; break;
|
break;
|
||||||
case 3: echo "<td>{$stat['personal_hist']}</td>"; break;
|
case 1:
|
||||||
case 4: echo "<td>{$stat['special_hist']}</td>"; break;
|
echo "<td>{$stat['nation_name']}</td>";
|
||||||
case 5: echo "<td>{$stat['crewtype']}</td>"; break;
|
break;
|
||||||
case 6: echo "<td>{$stat['etc']}</td>"; break;
|
case 2:
|
||||||
|
echo "<td>{$stat['nation_hist']}</td>";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
echo "<td>{$stat['personal_hist']}</td>";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
echo "<td>{$stat['special_hist']}</td>";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
echo "<td>{$stat['crewtype']}</td>";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
echo "<td>{$stat['etc']}</td>";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
@@ -318,8 +353,13 @@ for($i=0; $i < $count; $i++) {
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,13 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
$btn = Util::getReq('btn');
|
$btn = Util::getPost('btn');
|
||||||
$nation = Util::getReq('nation', 'int');
|
$nation = Util::getPost('nation', 'int');
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
@@ -19,24 +18,32 @@ if($session->userGrade < 5) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
switch ($btn) {
|
switch ($btn) {
|
||||||
case "국가변경":
|
case "국가변경":
|
||||||
|
$oldNation = $db->queryFirstField('SELECT nation FROM general WHERE owner=%i', $userID);
|
||||||
if ($nation == 0) {
|
if ($nation == 0) {
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'nation' => 0,
|
'nation' => 0,
|
||||||
'level'=>0,
|
'officer_level' => 0,
|
||||||
|
'officer_city' => 0
|
||||||
], 'owner=%i', $userID);
|
], 'owner=%i', $userID);
|
||||||
} else {
|
} else {
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'nation' => $nation,
|
'nation' => $nation,
|
||||||
'level'=>1,
|
'officer_level' => 1,
|
||||||
|
'officer_city' => 0
|
||||||
], 'owner=%i', $userID);
|
], 'owner=%i', $userID);
|
||||||
|
$db->update('nation', [
|
||||||
|
'gennum' => $db->sqleval('gennum + 1')
|
||||||
|
], 'nation=%i', $oldNation);
|
||||||
|
}
|
||||||
|
if ($oldNation != 0) {
|
||||||
|
$db->update('nation', [
|
||||||
|
'gennum' => $db->sqleval('gennum - 1')
|
||||||
|
], 'nation=%i', $oldNation);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
header('location:_admin5.php');
|
header('location:_admin5.php');
|
||||||
|
|
||||||
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace sammo;
|
|
||||||
|
|
||||||
include "lib.php";
|
|
||||||
include "func.php";
|
|
||||||
|
|
||||||
$type = Util::getReq('type', 'int', 0);
|
|
||||||
if($type < 0 || $type > 4){
|
|
||||||
$type = 0;
|
|
||||||
}
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
//로그인 검사
|
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
|
||||||
|
|
||||||
if($session->userGrade < 5) {
|
|
||||||
?>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>관리메뉴</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
관리자가 아닙니다.<br>
|
|
||||||
<?=banner()?>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<?php
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
$db = DB::db();
|
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
$sel[$type] = "selected";
|
|
||||||
|
|
||||||
?>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>접속정보</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr><td>접 속 정 보<br><?=closeButton()?></td></tr>
|
|
||||||
<tr><td><form name=form1 method=post>정렬순서 :
|
|
||||||
<select name=type size=1>
|
|
||||||
<option <?=$sel[0]??''?> value=0>접속률</option>
|
|
||||||
<option <?=$sel[1]??''?> value=1>총갱신</option>
|
|
||||||
<option <?=$sel[2]??''?> value=2>갱신/턴</option>
|
|
||||||
<option <?=$sel[3]??''?> value=3>총로그인</option>
|
|
||||||
<option <?=$sel[4]??''?> value=4>갱신/로그인</option>
|
|
||||||
</select>
|
|
||||||
<input type=submit value='정렬하기'></form>
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
<table align=center class='tb_layout bg0'>
|
|
||||||
<tr id=bg1>
|
|
||||||
<td align=center width=120>장수명</td>
|
|
||||||
<td align=center width=50>접속률</td>
|
|
||||||
<td align=center width=40>시작연령</td>
|
|
||||||
<td align=center width=40>연령</td>
|
|
||||||
<td align=center width=80>총갱신</td>
|
|
||||||
<td align=center width=80>갱신/턴</td>
|
|
||||||
<td align=center width=80>총로그인</td>
|
|
||||||
<td align=center width=100>갱신/로그인</td>
|
|
||||||
</tr>
|
|
||||||
<?php
|
|
||||||
switch($type) {
|
|
||||||
case 0: $query = "select name,connect,startage,age,refcnt,logcnt,refcnt/(age-startage+1)/12 as ref,refcnt/logcnt as log from general order by connect desc limit 0,30"; break;
|
|
||||||
case 1: $query = "select name,connect,startage,age,refcnt,logcnt,refcnt/(age-startage+1)/12 as ref,refcnt/logcnt as log from general order by refcnt desc limit 0,30"; break;
|
|
||||||
case 2: $query = "select name,connect,startage,age,refcnt,logcnt,refcnt/(age-startage+1)/12 as ref,refcnt/logcnt as log from general order by ref desc limit 0,30"; break;
|
|
||||||
case 3: $query = "select name,connect,startage,age,refcnt,logcnt,refcnt/(age-startage+1)/12 as ref,refcnt/logcnt as log from general order by logcnt desc limit 0,30"; break;
|
|
||||||
case 4: $query = "select name,connect,startage,age,refcnt,logcnt,refcnt/(age-startage+1)/12 as ref,refcnt/logcnt as log from general order by log desc limit 0,30"; break;
|
|
||||||
}
|
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$gencount = MYDB_num_rows($genresult);
|
|
||||||
|
|
||||||
for($i=0; $i < $gencount; $i++) {
|
|
||||||
$gen = MYDB_fetch_array($genresult);
|
|
||||||
echo "
|
|
||||||
<tr>
|
|
||||||
<td align=center>{$gen['name']}</td>
|
|
||||||
<td align=center>{$gen['connect']}</td>
|
|
||||||
<td align=center>{$gen['startage']}</td>
|
|
||||||
<td align=center>{$gen['age']}</td>
|
|
||||||
<td align=center>".round($gen['refcnt']/2, 1)."</td>
|
|
||||||
<td align=center>".round($gen['ref']/2,1)."</td>
|
|
||||||
<td align=center>{$gen['logcnt']}</td>
|
|
||||||
<td align=center>".round($gen['log']/2,1)."</td>
|
|
||||||
</tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
|
||||||
<tr><td><?=banner()?> </td></tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,147 +1,179 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
$btn = Util::getReq('btn');
|
$btn = Util::getPost('btn');
|
||||||
$gen = Util::getReq('gen', 'int', 0);
|
$gen = Util::getPost('gen', 'int', 0);
|
||||||
$type = Util::getReq('type', 'int', 0);
|
$reqQueryType = Util::getPost('query_type', 'string', null);
|
||||||
|
|
||||||
if($type < 0 || $type > 3){
|
// $queryTypeText, $reqArgType(0=>None, 1=>AdditionalColumn, 2=>rankVal, 3=>aux), $comp
|
||||||
$type = 0;
|
$queryMap = [
|
||||||
|
'turntime' => ['최근턴', 0, function ($lhs, $rhs) {
|
||||||
|
return - ($lhs['turntime'] <=> $rhs['turntime']);
|
||||||
|
}],
|
||||||
|
'recent_war' => ['최근전투', 1, function ($lhs, $rhs) {
|
||||||
|
return - ($lhs['recent_war'] <=> $rhs['recent_war']);
|
||||||
|
}],
|
||||||
|
'name' => ['장수명', 0, function ($lhs, $rhs) {
|
||||||
|
if ($lhs['npc'] !== $rhs['npc']) {
|
||||||
|
return $lhs['npc'] <=> $rhs['npc'];
|
||||||
}
|
}
|
||||||
|
return $lhs['name'] <=> $rhs['name'];
|
||||||
|
}],
|
||||||
|
'warnum' => ['전투수', 2, function ($lhs, $rhs) {
|
||||||
|
return - ($lhs['warnum'] <=> $rhs['warnum']);
|
||||||
|
}]
|
||||||
|
];
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
if ($reqQueryType === null || !key_exists($reqQueryType, $queryMap)) {
|
||||||
|
$reqQueryType = Util::array_first_key($queryMap);
|
||||||
|
}
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if ($session->userGrade < 5) {
|
if ($session->userGrade < 5) {
|
||||||
?>
|
die(requireAdminPermissionHTML());
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>관리메뉴</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
관리자가 아닙니다.<br>
|
|
||||||
<?=banner()?>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<?php
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
if ($btn == '정렬하기') {
|
if ($btn == '정렬하기') {
|
||||||
$gen = 0;
|
$gen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$sel[$type] = "selected";
|
[$queryTypeText, $reqArgType, $comp] = $queryMap[$reqQueryType];
|
||||||
|
if ($reqArgType === 0) {
|
||||||
|
$generalBasicList = $db->query('SELECT no, name, nation, npc, turntime FROM general');
|
||||||
|
} else if ($reqArgType === 1) {
|
||||||
|
$generalBasicList = $db->query('SELECT no, name, nation, npc, turntime, %b FROM general', $reqQueryType);
|
||||||
|
} else if ($reqArgType === 2) {
|
||||||
|
$generalBasicList = $db->query(
|
||||||
|
'SELECT no, name, nation, npc, turntime, value as %b
|
||||||
|
FROM general LEFT JOIN rank_data
|
||||||
|
ON general.no = rank_data.general_id
|
||||||
|
WHERE rank_data.type = %s',
|
||||||
|
$reqQueryType,
|
||||||
|
$reqQueryType
|
||||||
|
);
|
||||||
|
} else if ($reqArgType === 3) {
|
||||||
|
$generalBasicList = array_map(function ($arr) {
|
||||||
|
$arr['aux'] = Json::decode($arr['aux']);
|
||||||
|
return $arr;
|
||||||
|
}, $db->query('SELECT no, name, nation, npc, turntime, aux FROM general'));
|
||||||
|
} else {
|
||||||
|
throw new \sammo\MustNotBeReachedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
usort($generalBasicList, $comp);
|
||||||
|
|
||||||
|
if (!$gen) {
|
||||||
|
$gen = $generalBasicList[0]['no'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$generalObj = General::createGeneralObjFromDB($gen);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>로그정보</title>
|
<title>로그정보</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>로 그 정 보<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td>로 그 정 보<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<form name=form1 method=post>
|
<form name=form1 method=post>
|
||||||
정렬순서 :
|
정렬순서 :
|
||||||
<select name=type size=1>
|
<select name='query_type' size=1>
|
||||||
<option <?=$sel[0]??''?> value=0>최근턴</option>
|
<?php foreach ($queryMap as $queryType => [$queryTypeText,]) : ?>
|
||||||
<option <?=$sel[1]??''?> value=1>최근전투</option>
|
<option <?= $queryType == $reqQueryType ? 'selected' : '' ?> value='<?= $queryType ?>'><?= $queryTypeText ?></option>
|
||||||
<option <?=$sel[2]??''?> value=2>장수명</option>
|
<?php endforeach; ?>
|
||||||
<option <?=$sel[3]??''?> value=3>전투수</option>
|
|
||||||
</select>
|
</select>
|
||||||
<input type=submit name=btn value='정렬하기'>
|
<input type=submit name=btn value='정렬하기'>
|
||||||
대상장수 :
|
대상장수 :
|
||||||
<select name=gen size=1>
|
<select name=gen size=1>
|
||||||
<?php
|
<?php foreach ($generalBasicList as $general) : ?>
|
||||||
switch($type) {
|
<option <?= $gen == $general['no'] ? 'selected' : '' ?> value='<?= $general['no'] ?>'><?= $general['name'] ?> (<?= substr($general['turntime'], 14, 5) ?>)</option>
|
||||||
case 0: $query = "select no,name from general order by turntime desc"; break;
|
<?php endforeach; ?>
|
||||||
case 1: $query = "select no,name from general order by recwar desc"; break;
|
|
||||||
case 2: $query = "select no,name from general order by npc,binary(name)"; break;
|
|
||||||
case 3: $query = "select no,name from general order by warnum desc"; break;
|
|
||||||
}
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$gencount = MYDB_num_rows($result);
|
|
||||||
|
|
||||||
for($i=0; $i < $gencount; $i++) {
|
|
||||||
$general = MYDB_fetch_array($result);
|
|
||||||
// 선택 없으면 맨 처음 장수
|
|
||||||
if($gen == 0) {
|
|
||||||
$gen = $general['no'];
|
|
||||||
}
|
|
||||||
if($gen == $general['no']) {
|
|
||||||
echo "
|
|
||||||
<option selected value={$general['no']}>{$general['name']}</option>";
|
|
||||||
} else {
|
|
||||||
echo "
|
|
||||||
<option value={$general['no']}>{$general['name']}</option>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</select>
|
</select>
|
||||||
<input type=submit name=btn value='조회하기'>
|
<input type=submit name=btn value='조회하기'>
|
||||||
</form>
|
</form>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table width=1000 align=center class='tb_layout bg0'>
|
<table width=1000 align=center class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=50% align=center id=bg1><font color=skyblue size=3>장 수 정 보</font></td>
|
<td width=50% align=center class='bg1'>
|
||||||
<td width=50% align=center id=bg1><font color=orange size=3>-</font></td>
|
<font color=skyblue size=3>장 수 정 보</font>
|
||||||
|
</td>
|
||||||
|
<td width=50% align=center class='bg1'>
|
||||||
|
<font color=orange size=3>-</font>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
<?php generalInfo($gen); generalInfo2($gen); ?>
|
<?php generalInfo($generalObj);
|
||||||
|
generalInfo2($generalObj); ?>
|
||||||
</td>
|
</td>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1><font color=skyblue size=3>개인 기록</font></td>
|
<td align=center class='bg1'>
|
||||||
<td align=center id=bg1><font color=orange size=3>전투 기록</font></td>
|
<font color=skyblue size=3>개인 기록</font>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td valign=top>
|
|
||||||
<?=getGenLogRecent($gen, 24)?>
|
|
||||||
</td>
|
</td>
|
||||||
<td valign=top>
|
<td align=center class='bg1'>
|
||||||
<?=getBatLogRecent($gen, 24)?>
|
<font color=orange size=3>전투 기록</font>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1><font color=skyblue size=3>장수 열전</font></td>
|
<td valign=top>
|
||||||
<td align=center id=bg1><font color=orange size=3>전투 결과</font></td>
|
<?= formatHistoryToHTML(getGeneralActionLogRecent($gen, 24)) ?>
|
||||||
|
</td>
|
||||||
|
<td valign=top>
|
||||||
|
<?= formatHistoryToHTML(getBattleDetailLogRecent($gen, 24)) ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align=center class='bg1'>
|
||||||
|
<font color=skyblue size=3>장수 열전</font>
|
||||||
|
</td>
|
||||||
|
<td align=center class='bg1'>
|
||||||
|
<font color=orange size=3>전투 결과</font>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
<?=getGeneralHistoryAll($gen)?>
|
<?= formatHistoryToHTML(getGeneralHistoryLogAll($gen)) ?>
|
||||||
</td>
|
</td>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
<?=getBatResRecent($gen, 24)?>
|
<?= formatHistoryToHTML(getBattleResultRecent($gen, 24)) ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,41 +1,22 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
$btn = Util::getReq('btn');
|
$btn = Util::getPost('btn');
|
||||||
$gen = Util::getReq('gen', 'int', 0);
|
$gen = Util::getPost('gen', 'int', 0);
|
||||||
$type = 0;
|
$type = 0;
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if ($session->userGrade < 5) {
|
if ($session->userGrade < 5) {
|
||||||
?>
|
die(requireAdminPermissionHTML());
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>관리메뉴</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
관리자가 아닙니다.<br>
|
|
||||||
<?=banner()?>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<?php
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
if ($btn == '정렬하기') {
|
if ($btn == '정렬하기') {
|
||||||
$gen = 0;
|
$gen = 0;
|
||||||
@@ -45,18 +26,24 @@ $sel[$type] = "selected";
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>외교정보</title>
|
<title>외교정보</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>외 교 정 보<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td>외 교 정 보<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<form name=form1 method=post>
|
<form name=form1 method=post>
|
||||||
정렬순서 :
|
정렬순서 :
|
||||||
<select name=type size=1>
|
<select name=type size=1>
|
||||||
@@ -64,16 +51,18 @@ $sel[$type] = "selected";
|
|||||||
</select>
|
</select>
|
||||||
<input type=submit name=btn value='정렬하기'>
|
<input type=submit name=btn value='정렬하기'>
|
||||||
</form>
|
</form>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table width=1000 align=center class='tb_layout bg0'>
|
<table width=1000 align=center class='tb_layout bg0'>
|
||||||
<tr><td colspan=9 align=center bgcolor=blue>외 교 관 계</td></tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td width=130 align=center id=bg1>국 가 명</td>
|
<td colspan=9 align=center bgcolor=blue>외 교 관 계</td>
|
||||||
<td width=130 align=center id=bg1>국 가 명</td>
|
</tr>
|
||||||
<td width=80 align=center id=bg1>상 태</td>
|
<tr>
|
||||||
<td width=60 align=center id=bg1>기 간</td>
|
<td width=130 align=center class='bg1'>국 가 명</td>
|
||||||
<td align=center id=bg1>비 고</td>
|
<td width=130 align=center class='bg1'>국 가 명</td>
|
||||||
|
<td width=80 align=center class='bg1'>상 태</td>
|
||||||
|
<td width=60 align=center class='bg1'>기 간</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
@@ -85,67 +74,30 @@ foreach (getAllNationStaticInfo() as $nation) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$query = "select * from diplomacy where me < you order by state desc";
|
foreach ($db->query('SELECT * from diplomacy where me < you order by state desc') as $dip) {
|
||||||
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$dipcount = MYDB_num_rows($result);
|
|
||||||
for ($i=0; $i < $dipcount; $i++) {
|
|
||||||
$dip = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$me = $dip['me'];
|
$me = $dip['me'];
|
||||||
$you = $dip['you'];
|
$you = $dip['you'];
|
||||||
|
|
||||||
$query = "select reserved,showing from diplomacy where you='$me' and me='$you'";
|
if ($dip['state'] == 2) {
|
||||||
$result2 = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$dip2 = MYDB_fetch_array($result2);
|
|
||||||
|
|
||||||
if ($dip['state'] == 2 && $dip['fixed'] == "" && $dip['reserved'] == "" && $dip2['reserved'] == "") {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($dip['state']) {
|
switch ($dip['state']) {
|
||||||
case 0: $state = "<font color=red>교 전</font>"; break;
|
case 0:
|
||||||
case 1: $state = "<font color=magenta>선포중</font>"; break;
|
$state = "<font color=red>교 전</font>";
|
||||||
case 2: $state = "통 상"; break;
|
break;
|
||||||
case 3: $state = "<font color=cyan>통합수락중</font>"; break;
|
case 1:
|
||||||
case 4: $state = "<font color=cyan>통합제의중</font>"; break;
|
$state = "<font color=magenta>선포중</font>";
|
||||||
case 5: $state = "<font color=cyan>합병수락중</font>"; break;
|
break;
|
||||||
case 6: $state = "<font color=cyan>합병제의중</font>"; break;
|
case 2:
|
||||||
case 7: $state = "<font color=green>불가침</font>"; break;
|
$state = "통 상";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$state = "<font color=green>불가침</font>";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = TimeUtil::now();
|
||||||
$note = "";
|
|
||||||
if ($dip['fixed'] != "") {
|
|
||||||
if ($dip['state'] == 7) {
|
|
||||||
$note .= $dip['fixed'];
|
|
||||||
} else {
|
|
||||||
$note .= "<font color=gray>{$dip['fixed']}</font>";
|
|
||||||
}
|
|
||||||
if ($dip['reserved'] != "" || $dip2['reserved'] != "") {
|
|
||||||
$note .= "<br>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($dip['reserved'] != "") {
|
|
||||||
if ($dip['showing'] >= $date) {
|
|
||||||
$note .= "<font color=skyblue>아국측 제의</font>: {$dip['reserved']}";
|
|
||||||
} else {
|
|
||||||
$note .= "<font color=gray>아국측 제의: {$dip['reserved']}</font>";
|
|
||||||
}
|
|
||||||
if ($dip2['reserved'] != "") {
|
|
||||||
$note .= "<br>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($dip2['reserved'] != "") {
|
|
||||||
if ($dip2['showing'] >= $date) {
|
|
||||||
$note .= "<font color=limegreen>상대측 제의</font>: {$dip2['reserved']}";
|
|
||||||
} else {
|
|
||||||
$note .= "<font color=gray>상대측 제의: {$dip2['reserved']}</font>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($note == "") {
|
|
||||||
$note = " ";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<tr>
|
<tr>
|
||||||
@@ -153,14 +105,18 @@ for ($i=0; $i < $dipcount; $i++) {
|
|||||||
<td align=center style=color:" . newColor($nationColor[$you]) . ";background-color:{$nationColor[$you]};>$nationName[$you]</td>
|
<td align=center style=color:" . newColor($nationColor[$you]) . ";background-color:{$nationColor[$you]};>$nationName[$you]</td>
|
||||||
<td align=center>$state</td>
|
<td align=center>$state</td>
|
||||||
<td align=center>{$dip['term']} 개월</td>
|
<td align=center>{$dip['term']} 개월</td>
|
||||||
<td align=left style=font-size:7px;>{$note}</td>
|
|
||||||
</tr>";
|
</tr>";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
include "lib.php";
|
||||||
|
include "func.php";
|
||||||
|
//로그인 검사
|
||||||
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
|
if ($session->userGrade < 5) {
|
||||||
|
die('권한 부족');
|
||||||
|
}
|
||||||
|
|
||||||
|
$db = DB::db();
|
||||||
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
|
if (!$gameStor->isunited) {
|
||||||
|
die('아직 천통하지 않았습니다');
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($db->queryFirstColumn(
|
||||||
|
'SELECT no FROM general WHERE npc < 2 and age >= %i',
|
||||||
|
40
|
||||||
|
) as $generalNo) {
|
||||||
|
CheckHall($generalNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(General::createGeneralObjListFromDB($db->queryFirstColumn('SELECT `no` FROM general WHERE npc = 0')) as $genObj){
|
||||||
|
$genObj->mergeTotalInheritancePoint(true);
|
||||||
|
applyInheritanceUser($genObj->getVar('owner'));
|
||||||
|
$genObj->clearInheritancePoint();
|
||||||
|
}
|
||||||
@@ -1,1660 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace sammo;
|
|
||||||
|
|
||||||
include "lib.php";
|
|
||||||
include "func.php";
|
|
||||||
|
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
|
||||||
$userID = Session::getUserID();
|
|
||||||
|
|
||||||
//로그인 검사
|
|
||||||
|
|
||||||
$isgen = Util::getReq('isgen');
|
|
||||||
|
|
||||||
$leader1 = Util::getReq('leader1', 'int', 0);
|
|
||||||
$power1 = Util::getReq('power1', 'int', 0);
|
|
||||||
$intel1 = Util::getReq('intel1', 'int', 0);
|
|
||||||
$type1 = Util::getReq('type1', 'int', 0);
|
|
||||||
$crew1 = Util::getReq('crew1', 'int', 0);
|
|
||||||
$train1 = Util::getReq('train1', 'int', 0);
|
|
||||||
$atmos1 = Util::getReq('atmos1', 'int', 0);
|
|
||||||
$level1 = Util::getReq('level1', 'int', 0);
|
|
||||||
$explevel1 = Util::getReq('explevel1', 'int', 0);
|
|
||||||
$tech1 = Util::getReq('tech1', 'int', 0);
|
|
||||||
|
|
||||||
$dex10 = Util::getReq('dex10', 'int', 0);
|
|
||||||
$dex110 = Util::getReq('dex110', 'int', 0);
|
|
||||||
$dex120 = Util::getReq('dex120', 'int', 0);
|
|
||||||
$dex130 = Util::getReq('dex130', 'int', 0);
|
|
||||||
$dex140 = Util::getReq('dex140', 'int', 0);
|
|
||||||
|
|
||||||
$dx10 = array_fill(0, 20, '');
|
|
||||||
$dx110 = array_fill(0, 20, '');
|
|
||||||
$dx120 = array_fill(0, 20, '');
|
|
||||||
$dx130 = array_fill(0, 20, '');
|
|
||||||
$dx140 = array_fill(0, 20, '');
|
|
||||||
|
|
||||||
$leader2 = Util::getReq('leader2', 'int', 0);
|
|
||||||
$power2 = Util::getReq('power2', 'int', 0);
|
|
||||||
$intel2 = Util::getReq('intel2', 'int', 0);
|
|
||||||
$type2 = Util::getReq('type2', 'int', 0);
|
|
||||||
$crew2 = Util::getReq('crew2', 'int', 0);
|
|
||||||
$train2 = Util::getReq('train2', 'int', 0);
|
|
||||||
$atmos2 = Util::getReq('atmos2', 'int', 0);
|
|
||||||
$level2 = Util::getReq('level2', 'int', 0);
|
|
||||||
$explevel2 = Util::getReq('explevel2', 'int', 0);
|
|
||||||
$tech2 = Util::getReq('tech2', 'int', 0);
|
|
||||||
|
|
||||||
$dex20 = Util::getReq('dex20', 'int', 0);
|
|
||||||
$dex210 = Util::getReq('dex210', 'int', 0);
|
|
||||||
$dex220 = Util::getReq('dex220', 'int', 0);
|
|
||||||
$dex230 = Util::getReq('dex230', 'int', 0);
|
|
||||||
$dex240 = Util::getReq('dex240', 'int', 0);
|
|
||||||
|
|
||||||
$dx20 = array_fill(0, 20, '');
|
|
||||||
$dx210 = array_fill(0, 20, '');
|
|
||||||
$dx220 = array_fill(0, 20, '');
|
|
||||||
$dx230 = array_fill(0, 20, '');
|
|
||||||
$dx240 = array_fill(0, 20, '');
|
|
||||||
|
|
||||||
$def = Util::getReq('def', 'int', 0);
|
|
||||||
$wall = Util::getReq('wall', 'int', 0);
|
|
||||||
$atmos3 = Util::getReq('atmos3', 'int', 0);
|
|
||||||
$train3 = Util::getReq('train3', 'int', 0);
|
|
||||||
|
|
||||||
$sellevel1 = array_fill(0, 13, '');
|
|
||||||
$sel1 = array_fill(0,44, '');
|
|
||||||
$tch1 = array_fill(0,11, '');
|
|
||||||
|
|
||||||
$sellevel2 = array_fill(0, 13, '');
|
|
||||||
$sel2 = array_fill(0,44, '');
|
|
||||||
$tch2 = array_fill(0,11, '');
|
|
||||||
|
|
||||||
$dec = 0;
|
|
||||||
$rice = 0;
|
|
||||||
|
|
||||||
$db = DB::db();
|
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
|
||||||
$connect=$db->get();
|
|
||||||
increaseRefresh("시뮬", 2);
|
|
||||||
|
|
||||||
$query = "select no,tournament,con,turntime from general where owner='{$userID}'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$admin = $gameStor->getAll();
|
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
|
||||||
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
|
|
||||||
|
|
||||||
if($session->userGrade < 3) {
|
|
||||||
echo "특별회원이 아닙니다.";
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
$mydeathnumSum = 0;
|
|
||||||
$mykillnumSum = 0;
|
|
||||||
$expSum = 0;
|
|
||||||
$ricingSum = 0;
|
|
||||||
$expSum2 = 0;
|
|
||||||
$ricingSum2 = 0;
|
|
||||||
|
|
||||||
if($isgen == "장수평균" || $isgen == "성벽평균") {
|
|
||||||
$simulCount = 1000;
|
|
||||||
} else {
|
|
||||||
$simulCount = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
$general = [
|
|
||||||
'no'=>1
|
|
||||||
];
|
|
||||||
$oppose = [
|
|
||||||
'no'=>2
|
|
||||||
];
|
|
||||||
$city = [
|
|
||||||
'gen1'=>0,
|
|
||||||
'gen2'=>0,
|
|
||||||
'gen3'=>0,
|
|
||||||
];
|
|
||||||
|
|
||||||
if($isgen == "장수공격" || $isgen == "성벽공격" || $isgen == "장수평균" || $isgen == "성벽평균") {
|
|
||||||
$msg2 = "";
|
|
||||||
for($i=0; $i < $simulCount; $i++) {
|
|
||||||
$general['leader'] = $leader1;
|
|
||||||
$general['power'] = $power1;
|
|
||||||
$general['intel'] = $intel1;
|
|
||||||
$general['crewtype'] = $type1;
|
|
||||||
$general['crew'] = $crew1;
|
|
||||||
$general['train'] = $train1;
|
|
||||||
$general['atmos'] = $atmos1;
|
|
||||||
$general['level'] = $level1;
|
|
||||||
$general['explevel'] = $explevel1;
|
|
||||||
$general['dex0'] = $dex10;
|
|
||||||
$general['dex10'] = $dex110;
|
|
||||||
$general['dex20'] = $dex120;
|
|
||||||
$general['dex30'] = $dex130;
|
|
||||||
$general['dex40'] = $dex140;
|
|
||||||
|
|
||||||
$general['injury'] = 0;
|
|
||||||
$general['horse'] = 0;
|
|
||||||
$general['weap'] = 0;
|
|
||||||
$general['book'] = 0;
|
|
||||||
|
|
||||||
$oppose['leader'] = $leader2;
|
|
||||||
$oppose['power'] = $power2;
|
|
||||||
$oppose['intel'] = $intel2;
|
|
||||||
$oppose['crewtype'] = $type2;
|
|
||||||
$oppose['crew'] = $crew2;
|
|
||||||
$oppose['train'] = $train2;
|
|
||||||
$oppose['atmos'] = $atmos2;
|
|
||||||
$oppose['level'] = $level2;
|
|
||||||
$oppose['explevel'] = $explevel2;
|
|
||||||
$oppose['dex0'] = $dex20;
|
|
||||||
$oppose['dex10'] = $dex210;
|
|
||||||
$oppose['dex20'] = $dex220;
|
|
||||||
$oppose['dex30'] = $dex230;
|
|
||||||
$oppose['dex40'] = $dex240;
|
|
||||||
|
|
||||||
$oppose['injury'] = 0;
|
|
||||||
$oppose['horse'] = 0;
|
|
||||||
$oppose['weap'] = 0;
|
|
||||||
$oppose['book'] = 0;
|
|
||||||
|
|
||||||
$city['def'] = $def;
|
|
||||||
$city['wall'] = $wall;
|
|
||||||
$city['agri'] = 0;
|
|
||||||
$city['comm'] = 0;
|
|
||||||
$city['secu'] = 0;
|
|
||||||
|
|
||||||
if($isgen == "장수공격" || $isgen == "장수평균") {
|
|
||||||
$opposecount = 1;
|
|
||||||
} else {
|
|
||||||
$opposecount = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
$warphase = getRate($admin, $general['crewtype'], "spd"); //병종간 페이즈 수 얻기
|
|
||||||
|
|
||||||
// 우선 스케일링
|
|
||||||
$city['def'] *= 10;
|
|
||||||
$city['wall'] *= 10;
|
|
||||||
|
|
||||||
$msg = "";
|
|
||||||
$msg .= "<C>●</>1월:공격장수가 <R>공격</>합니다.<br>";
|
|
||||||
|
|
||||||
$exp = 0; //병사 소진 시킨 만큼
|
|
||||||
$opexp = 0;
|
|
||||||
$exp2 = 1; //능력경험치
|
|
||||||
$phase = 0;
|
|
||||||
while($phase < $warphase) {
|
|
||||||
// 장수가 없어서 도시 공격
|
|
||||||
if($opposecount == 0) {
|
|
||||||
$josaRo = JosaUtil::pick(GameUnitConst::byID($general['crewtype'])->name, '로');
|
|
||||||
$msg .= "<C>●</>".GameUnitConst::byID($general['crewtype'])->name."{$josaRo} 성을 <M>공격</>합니다.<br>";
|
|
||||||
|
|
||||||
$mykillnum = 0; $mydeathnum = 0;
|
|
||||||
while($phase < $warphase) {
|
|
||||||
$phase++;
|
|
||||||
$myAtt = getAtt($general, $tech1, 0);
|
|
||||||
$myDef = getDef($general, $tech1);
|
|
||||||
$cityAtt = getCityAtt($city);
|
|
||||||
$cityDef = getCityDef($city);
|
|
||||||
|
|
||||||
// 감소할 병사 수
|
|
||||||
$cityCrew = GameConst::$armperphase + $myAtt - $cityDef;
|
|
||||||
$myCrew = GameConst::$armperphase + $cityAtt - $myDef;
|
|
||||||
$cityweight = $myAtt - $cityDef;
|
|
||||||
$myweight = $cityAtt - $myDef;
|
|
||||||
|
|
||||||
//훈련 사기따라
|
|
||||||
$myCrew = getCrew($myCrew, $atmos3, $general['train']);
|
|
||||||
$cityCrew = getCrew($cityCrew, $general['atmos'], $train3);
|
|
||||||
//숙련도 따라
|
|
||||||
$genDexAtt = getGenDex($general, $general['crewtype']);
|
|
||||||
$genDexDef = getGenDex($general, 40);
|
|
||||||
$cityCrew *= getDexLog($genDexAtt, ($train3-60)*7200);
|
|
||||||
$myCrew *= getDexLog(($atmos3-60)*7200, $genDexDef);
|
|
||||||
|
|
||||||
$avoid = 1;
|
|
||||||
// 병종간 특성
|
|
||||||
if(intdiv($general['crewtype'], 10) == 3) { // 귀병
|
|
||||||
$int = $general['intel'] + getBookEff($general['book']);
|
|
||||||
if($general['crewtype'] == 30) {
|
|
||||||
$ratio2 = $int * 5; // 0~500 즉 50%
|
|
||||||
} elseif($general['crewtype'] == 31) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($general['crewtype'] == 32) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($general['crewtype'] == 33) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($general['crewtype'] == 34) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($general['crewtype'] == 35) {
|
|
||||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
|
||||||
} elseif($general['crewtype'] == 36) {
|
|
||||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
|
||||||
} elseif($general['crewtype'] == 37) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($general['crewtype'] == 38) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
}
|
|
||||||
$ratio = rand() % 1000; // 0~999
|
|
||||||
if($ratio <= $ratio2) {
|
|
||||||
$ratio = rand() % 100; // 0~99
|
|
||||||
if($ratio >= 30) {
|
|
||||||
$type = rand() % 3;
|
|
||||||
switch($type) {
|
|
||||||
case 0:
|
|
||||||
$msg .= "<C>●</><D>급습</>을 <C>성공</>했다!<br>";
|
|
||||||
$cityCrew *= 1.2;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
$msg .= "<C>●</><D>위보</>를 <C>성공</>했다!<br>";
|
|
||||||
$cityCrew *= 1.4;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
$msg .= "<C>●</><D>혼란</>을 <C>성공</>했다!<br>";
|
|
||||||
$cityCrew *= 1.6;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$type = rand() % 3;
|
|
||||||
switch($type) {
|
|
||||||
case 0:
|
|
||||||
$msg .= "<C>●</><D>급습</>을 <R>실패</>했다!<br>";
|
|
||||||
$cityCrew /= 1.2;
|
|
||||||
$myCrew *= 1.2;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
$msg .= "<C>●</><D>위보</>를 <R>실패</>했다!<br>";
|
|
||||||
$cityCrew /= 1.4;
|
|
||||||
$myCrew *= 1.4;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
$msg .= "<C>●</><D>혼란</>을 <R>실패</>했다!<br>";
|
|
||||||
$cityCrew /= 1.6;
|
|
||||||
$myCrew *= 1.6;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} elseif($general['crewtype'] == 40) { // 정란
|
|
||||||
$cityCrew = $cityCrew * 1.5;
|
|
||||||
} elseif($general['crewtype'] == 41) { // 충차
|
|
||||||
$cityCrew = $cityCrew * 2.0;
|
|
||||||
} elseif($general['crewtype'] == 42) { // 벽력거
|
|
||||||
$cityCrew = $cityCrew * 1.5;
|
|
||||||
}
|
|
||||||
//군주, 참모, 장군 공격 보정 5%
|
|
||||||
if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 10 || $general['level'] == 8 || $general['level'] == 6) {
|
|
||||||
$cityCrew = $cityCrew * 1.05;
|
|
||||||
}
|
|
||||||
//레벨 보정
|
|
||||||
$cityCrew = $cityCrew * (100 + $general['explevel']/6)/100;
|
|
||||||
|
|
||||||
//크리
|
|
||||||
$rd = rand() % 100; // 0 ~ 99
|
|
||||||
$ratio = CriticalRatio3($general['leader'], $general['power'], $general['intel']);
|
|
||||||
if($ratio >= $rd && $avoid == 1) {
|
|
||||||
$msg .= "<C>●</><C>필살</>공격!</><br>";
|
|
||||||
$cityCrew = CriticalScore2($cityCrew);
|
|
||||||
$avoid = 0;
|
|
||||||
}
|
|
||||||
//회피
|
|
||||||
$ratio = rand() % 100; // 0 ~ 99
|
|
||||||
$ratio2 = getRate($admin, $general['crewtype'], "avd"); //회피율
|
|
||||||
if($ratio < $ratio2 && $avoid == 1) {
|
|
||||||
$msg .= "<C>●</><C>회피</>했다!</><br>";
|
|
||||||
$myCrew /= 10; // 10%만 소모
|
|
||||||
$avoid = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//랜타추가
|
|
||||||
$cityCrew *= (rand() % 21 + 90)/100; // 90~110%
|
|
||||||
$myCrew *= (rand() % 21 + 90)/100; // 90~110%
|
|
||||||
|
|
||||||
$general['crew'] -= Util::round($myCrew);
|
|
||||||
$city['def'] -= Util::round($cityCrew);
|
|
||||||
$city['wall'] -= Util::round($cityCrew);
|
|
||||||
|
|
||||||
$tempMyCrew = $myCrew; $tempCityCrew = $cityCrew;
|
|
||||||
$tempGeneralCrew = $general['crew']; $tempCityDef = $city['def'];
|
|
||||||
|
|
||||||
if($city['wall'] <= 0) { $city['wall'] = 0; }
|
|
||||||
|
|
||||||
if($city['def'] < 0) {
|
|
||||||
$offset = Util::round($tempCityDef*$tempMyCrew/$tempCityCrew);
|
|
||||||
$myCrew += $offset;
|
|
||||||
$general['crew'] -= $offset;
|
|
||||||
$cityCrew += $tempCityDef;
|
|
||||||
$city['def'] = 0;
|
|
||||||
}
|
|
||||||
if($general['crew'] < 0) {
|
|
||||||
$offset = Util::round($tempGeneralCrew*$tempCityCrew/$tempMyCrew);
|
|
||||||
$cityCrew += $offset;
|
|
||||||
$city['def'] -= $offset;
|
|
||||||
$myCrew += $tempGeneralCrew;
|
|
||||||
$general['crew'] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
$exp += $cityCrew;
|
|
||||||
$opexp += $myCrew;
|
|
||||||
$general['crew'] = Util::round($general['crew']);
|
|
||||||
$cityCrew = Util::round($cityCrew);
|
|
||||||
$myCrew = Util::round($myCrew);
|
|
||||||
$myAtt = round($myAtt, 2);
|
|
||||||
$myDef = round($myDef, 2);
|
|
||||||
$cityAtt = round($cityAtt, 2);
|
|
||||||
$cityDef = round($cityDef, 2);
|
|
||||||
$msg .= "<C>●</> $phase : <Y1>【공격장수】</> <C>{$general['crew']} (-$myCrew)</> VS <C>{$city['def']} (-$cityCrew)</> <Y1>【성벽】</><br>";
|
|
||||||
|
|
||||||
$mykillnum += $cityCrew; $mydeathnum += $myCrew;
|
|
||||||
|
|
||||||
if($city['def'] <= 0) { break; }
|
|
||||||
if($general['crew'] <= 0) { break; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// 도시쌀 소모 계산
|
|
||||||
$opexp = Util::round($opexp / 50);
|
|
||||||
$rice = Util::round($opexp * 4 * getCrewtypeRice(0, 0) * ($train3/100 - 0.2));
|
|
||||||
|
|
||||||
//원래대로 스케일링
|
|
||||||
$city['def'] = Util::round($city['def'] / 10);
|
|
||||||
$city['wall'] = Util::round($city['wall'] / 10);
|
|
||||||
//내정 감소
|
|
||||||
$dec = Util::round($cityCrew / 10);
|
|
||||||
$city['agri'] -= $dec;
|
|
||||||
$city['comm'] -= $dec;
|
|
||||||
$city['secu'] -= $dec;
|
|
||||||
if($city['agri'] < 0) { $city['agri'] = 0; }
|
|
||||||
if($city['comm'] < 0) { $city['comm'] = 0; }
|
|
||||||
if($city['secu'] < 0) { $city['secu'] = 0; }
|
|
||||||
$msg .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</><br>";
|
|
||||||
$msg .= "<R>★</>【성벽】내정 감소량 : $dec 【성벽】쌀 소모 : $rice<br>";
|
|
||||||
|
|
||||||
// $msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</> ";
|
|
||||||
// $msg2 .= "<R>★</>【성벽】내정 감소량 : $dec 【성벽】쌀 소모 : $rice<br>";
|
|
||||||
|
|
||||||
if($city['def'] == 0 || $general['crew'] == 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// 장수 대결
|
|
||||||
} else {
|
|
||||||
$josaUl = JosaUtil::pick(GameUnitConst::byID($oppose['crewtype'])->name, '을');
|
|
||||||
$josaRo = JosaUtil::pick(GameUnitConst::byID($general['crewtype'])->name, '로');
|
|
||||||
$msg .= "<C>●</>".GameUnitConst::byID($general['crewtype'])->name."{$josaRo} <Y>수비장수</>의 ".GameUnitConst::byID($oppose['crewtype'])->name."{$josaUl} 공격합니다.<br>";
|
|
||||||
|
|
||||||
$mykillnum = 0; $mydeathnum = 0;
|
|
||||||
while($phase < $warphase) {
|
|
||||||
$phase++;
|
|
||||||
|
|
||||||
$myAtt = getAtt($general, $tech1, 0);
|
|
||||||
$myDef = getDef($general, $tech1);
|
|
||||||
$opAtt = getAtt($oppose, $tech2, 0);
|
|
||||||
$opDef = getDef($oppose, $tech2);
|
|
||||||
// 감소할 병사 수
|
|
||||||
$myCrew = GameConst::$armperphase + $opAtt - $myDef;
|
|
||||||
$opCrew = GameConst::$armperphase + $myAtt - $opDef;
|
|
||||||
//훈련 사기따라
|
|
||||||
$myCrew = getCrew($myCrew, $oppose['atmos'], $general['train']);
|
|
||||||
$opCrew = getCrew($opCrew, $general['atmos'], $oppose['train']);
|
|
||||||
//숙련도 따라
|
|
||||||
$genDexAtt = getGenDex($general, $general['crewtype']);
|
|
||||||
$genDexDef = getGenDex($general, $oppose['crewtype']);
|
|
||||||
$oppDexAtt = getGenDex($oppose, $oppose['crewtype']);
|
|
||||||
$oppDexDef = getGenDex($oppose, $general['crewtype']);
|
|
||||||
$opCrew *= getDexLog($genDexAtt, $oppDexDef);
|
|
||||||
$myCrew *= getDexLog($oppDexAtt, $genDexDef);
|
|
||||||
|
|
||||||
$myAvoid = 1;
|
|
||||||
$opAvoid = 1;
|
|
||||||
// 병종간 특성
|
|
||||||
if(intdiv($general['crewtype'], 10) == 3) { // 귀병
|
|
||||||
$int = $general['intel'] + getBookEff($general['book']);
|
|
||||||
if($general['crewtype'] == 30) {
|
|
||||||
$ratio2 = $int * 5; // 0~500 즉 50%
|
|
||||||
} elseif($general['crewtype'] == 31) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($general['crewtype'] == 32) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($general['crewtype'] == 33) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($general['crewtype'] == 34) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($general['crewtype'] == 35) {
|
|
||||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
|
||||||
} elseif($general['crewtype'] == 36) {
|
|
||||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
|
||||||
} elseif($general['crewtype'] == 37) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($general['crewtype'] == 38) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
}
|
|
||||||
$ratio = rand() % 1000; // 0~999
|
|
||||||
if($ratio <= $ratio2) {
|
|
||||||
$ratio = rand() % 100;
|
|
||||||
if($ratio >= 30) {
|
|
||||||
$type = rand() % 5; // 0~4
|
|
||||||
switch($type) {
|
|
||||||
case 0:
|
|
||||||
$msg .= "<C>●</><D>위보</>를 <C>성공</>했다!<br>";
|
|
||||||
$opCrew *= 1.2;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
$msg .= "<C>●</><D>매복</>을 <C>성공</>했다!<br>";
|
|
||||||
$opCrew *= 1.4;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
$msg .= "<C>●</><D>반목</>을 <C>성공</>했다!<br>";
|
|
||||||
$opCrew *= 1.6;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
$msg .= "<C>●</><D>화계</>를 <C>성공</>했다!<br>";
|
|
||||||
$opCrew *= 1.8;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
$msg .= "<C>●</><D>혼란</>을 <C>성공</>했다!<br>";
|
|
||||||
$opCrew *= 2.0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$type = rand() % 5; // 0~4
|
|
||||||
switch($type) {
|
|
||||||
case 0:
|
|
||||||
$msg .= "<C>●</><D>위보</>를 <R>실패</>했다!<br>";
|
|
||||||
$opCrew /= 1.1;
|
|
||||||
$myCrew *= 1.1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
$msg .= "<C>●</><D>매복</>을 <R>실패</>했다!<br>";
|
|
||||||
$opCrew /= 1.2;
|
|
||||||
$myCrew *= 1.2;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
$msg .= "<C>●</><D>반목</>을 <R>실패</>했다!<br>";
|
|
||||||
$opCrew /= 1.3;
|
|
||||||
$myCrew *= 1.3;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
$msg .= "<C>●</><D>화계</>를 <R>실패</>했다!<br>";
|
|
||||||
$opCrew /= 1.4;
|
|
||||||
$myCrew *= 1.4;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
$msg .= "<C>●</><D>혼란</>을 <R>실패</>했다!<br>";
|
|
||||||
$opCrew /= 1.5;
|
|
||||||
$myCrew *= 1.5;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 상대 장수 병종간 특성
|
|
||||||
if(intdiv($oppose['crewtype'], 10) == 3) { // 귀병
|
|
||||||
$int = $oppose['intel'] + getBookEff($oppose['book']);
|
|
||||||
if($oppose['crewtype'] == 30) {
|
|
||||||
$ratio2 = $int * 5; // 0~500 즉 50%
|
|
||||||
} elseif($oppose['crewtype'] == 31) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($oppose['crewtype'] == 32) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($oppose['crewtype'] == 33) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($oppose['crewtype'] == 34) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($oppose['crewtype'] == 35) {
|
|
||||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
|
||||||
} elseif($oppose['crewtype'] == 36) {
|
|
||||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
|
||||||
} elseif($oppose['crewtype'] == 37) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
} elseif($oppose['crewtype'] == 38) {
|
|
||||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
|
||||||
}
|
|
||||||
$ratio = rand() % 1000; // 0~999
|
|
||||||
if($ratio <= $ratio2) {
|
|
||||||
$ratio = rand() % 100;
|
|
||||||
if($ratio >= 30) {
|
|
||||||
$type = rand() % 5; // 0~4
|
|
||||||
switch($type) {
|
|
||||||
case 0:
|
|
||||||
$msg .= "<C>●</><D>위보</>에 당했다!<br>";
|
|
||||||
$myCrew *= 1.2;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
$msg .= "<C>●</><D>매복</>에 당했다!<br>";
|
|
||||||
$myCrew *= 1.4;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
$msg .= "<C>●</><D>반목</>에 당했다!<br>";
|
|
||||||
$myCrew *= 1.6;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
$msg .= "<C>●</><D>화계</>에 당했다!<br>";
|
|
||||||
$myCrew *= 1.8;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
$msg .= "<C>●</><D>혼란</>에 당했다!<br>";
|
|
||||||
$myCrew *= 2.0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$type = rand() % 5; // 0~4
|
|
||||||
switch($type) {
|
|
||||||
case 0:
|
|
||||||
$msg .= "<C>●</><D>위보</>를 간파했다!<br>";
|
|
||||||
$myCrew /= 1.1;
|
|
||||||
$opCrew *= 1.1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
$msg .= "<C>●</><D>매복</>을 간파했다!<br>";
|
|
||||||
$myCrew /= 1.2;
|
|
||||||
$opCrew *= 1.2;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
$msg .= "<C>●</><D>반목</>을 간파했다!<br>";
|
|
||||||
$myCrew /= 1.3;
|
|
||||||
$opCrew *= 1.3;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
$msg .= "<C>●</><D>화계</>를 간파했다!<br>";
|
|
||||||
$myCrew /= 1.4;
|
|
||||||
$opCrew *= 1.4;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
$msg .= "<C>●</><D>혼란</>을 간파했다!<br>";
|
|
||||||
$myCrew /= 1.5;
|
|
||||||
$opCrew *= 1.5;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if($oppose['crewtype'] == 43) { // 목우
|
|
||||||
$r = 0;
|
|
||||||
$r += $oppose['atmos'];
|
|
||||||
$r += $oppose['train'];
|
|
||||||
$ratio = rand() % 400; // 최대 50% 저지
|
|
||||||
if($ratio < $r && $opAvoid == 1) {
|
|
||||||
$msg .= "<C>●</><R>저지</>당했다!</><br>";
|
|
||||||
$opAvoid = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// my 입장 상성
|
|
||||||
// 보병계열 > 궁병계열
|
|
||||||
if(intdiv($general['crewtype'], 10) == 0 && intdiv($oppose['crewtype'], 10) == 1) {
|
|
||||||
$myCrew *= 0.8;
|
|
||||||
$opCrew *= 1.2;
|
|
||||||
}
|
|
||||||
// 궁병계열 > 기병계열
|
|
||||||
if(intdiv($general['crewtype'], 10) == 1 && intdiv($oppose['crewtype'], 10) == 2) {
|
|
||||||
$myCrew *= 0.8;
|
|
||||||
$opCrew *= 1.2;
|
|
||||||
}
|
|
||||||
// 기병계열 > 보병계열
|
|
||||||
if(intdiv($general['crewtype'], 10) == 2 && intdiv($oppose['crewtype'], 10) == 0) {
|
|
||||||
$myCrew *= 0.8;
|
|
||||||
$opCrew *= 1.2;
|
|
||||||
}
|
|
||||||
// 차병계열
|
|
||||||
if(intdiv($general['crewtype'], 10) == 4) {
|
|
||||||
$myCrew *= 1.2;
|
|
||||||
$opCrew *= 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
// op 입장 상성
|
|
||||||
// 보병계열 > 궁병계열
|
|
||||||
if(intdiv($oppose['crewtype'], 10) == 0 && intdiv($general['crewtype'], 10) == 1) {
|
|
||||||
$opCrew *= 0.8;
|
|
||||||
$myCrew *= 1.2;
|
|
||||||
}
|
|
||||||
// 궁병계열 > 기병계열
|
|
||||||
if(intdiv($oppose['crewtype'], 10) == 1 && intdiv($general['crewtype'], 10) == 2) {
|
|
||||||
$opCrew *= 0.8;
|
|
||||||
$myCrew *= 1.2;
|
|
||||||
}
|
|
||||||
// 기병계열 > 보병계열
|
|
||||||
if(intdiv($oppose['crewtype'], 10) == 2 && intdiv($general['crewtype'], 10) == 0) {
|
|
||||||
$opCrew *= 0.8;
|
|
||||||
$myCrew *= 1.2;
|
|
||||||
}
|
|
||||||
// 차병계열
|
|
||||||
if(intdiv($oppose['crewtype'], 10) == 4) {
|
|
||||||
$opCrew *= 1.2;
|
|
||||||
$myCrew *= 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
//군주, 참모, 장군 공격 보정 5%
|
|
||||||
if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 10 || $general['level'] == 8 || $general['level'] == 6) {
|
|
||||||
$opCrew = $opCrew * 1.05;
|
|
||||||
}
|
|
||||||
//상대장수 관직 보정
|
|
||||||
//군주, 참모, 모사 방어 보정 5%
|
|
||||||
if($oppose['level'] == 12 || $oppose['level'] == 11 || $oppose['level'] == 9 || $oppose['level'] == 7 || $oppose['level'] == 5) {
|
|
||||||
$opCrew = $opCrew * 0.95;
|
|
||||||
} elseif($oppose['level'] == 4 && $oppose['no'] == $city['gen1']) { // 태수 보정
|
|
||||||
$opCrew = $opCrew * 0.95;
|
|
||||||
} elseif($oppose['level'] == 3 && $oppose['no'] == $city['gen2']) { // 군사 보정
|
|
||||||
$opCrew = $opCrew * 0.95;
|
|
||||||
} elseif($oppose['level'] == 2 && $oppose['no'] == $city['gen3']) { // 시중 보정
|
|
||||||
$opCrew = $opCrew * 0.95;
|
|
||||||
}
|
|
||||||
|
|
||||||
//레벨 보정
|
|
||||||
$myCrew = $myCrew * ((100 - $general['explevel']/3)/100);
|
|
||||||
$opCrew = $opCrew / ((100 - $general['explevel']/3)/100);
|
|
||||||
$myCrew = $myCrew / ((100 - $oppose['explevel']/3)/100);
|
|
||||||
$opCrew = $opCrew * ((100 - $oppose['explevel']/3)/100);
|
|
||||||
|
|
||||||
//크리
|
|
||||||
$rd = rand() % 100; // 0 ~ 99
|
|
||||||
$ratio = CriticalRatio3($general['leader'], $general['power'], $general['intel']);
|
|
||||||
if($ratio >= $rd && $myAvoid == 1) {
|
|
||||||
$msg .= "<C>●</><C>필살</>공격!</><br>";
|
|
||||||
$opCrew = CriticalScore2($opCrew);
|
|
||||||
$myAvoid = 0;
|
|
||||||
}
|
|
||||||
//크리
|
|
||||||
$rd = rand() % 100; // 0 ~ 99
|
|
||||||
$ratio = CriticalRatio3($oppose['leader'], $oppose['power'], $oppose['intel']);
|
|
||||||
if($ratio >= $rd && $opAvoid == 1) {
|
|
||||||
$msg .= "<C>●</>상대의 <R>필살</>공격!</><br>";
|
|
||||||
$myCrew = CriticalScore2($myCrew);
|
|
||||||
$opAvoid = 0;
|
|
||||||
}
|
|
||||||
//회피
|
|
||||||
$ratio = rand() % 100; // 0 ~ 99
|
|
||||||
$ratio2 = getRate($admin, $general['crewtype'], "avd"); //회피율
|
|
||||||
if($ratio < $ratio2 && $myAvoid == 1) {
|
|
||||||
$msg .= "<C>●</><C>회피</>했다!</><br>";
|
|
||||||
$myCrew /= 10; // 10%만 소모
|
|
||||||
$myAvoid = 0;
|
|
||||||
}
|
|
||||||
//회피
|
|
||||||
$ratio = rand() % 100; // 0 ~ 99
|
|
||||||
$ratio2 = getRate($admin, $oppose['crewtype'], "avd"); //회피율
|
|
||||||
if($ratio < $ratio2 && $opAvoid == 1) {
|
|
||||||
$msg .= "<C>●</>상대가 <R>회피</>했다!</><br>";
|
|
||||||
$opCrew /= 10; // 10%만 소모
|
|
||||||
$opAvoid = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//랜타추가
|
|
||||||
$opCrew *= (rand() % 21 + 90)/100; // 90~110%
|
|
||||||
$myCrew *= (rand() % 21 + 90)/100; // 90~110%
|
|
||||||
|
|
||||||
$general['crew'] -= Util::round($myCrew);
|
|
||||||
$oppose['crew'] -= Util::round($opCrew);
|
|
||||||
$tempMyCrew = $myCrew; $tempOpCrew = $opCrew;
|
|
||||||
$tempGeneralCrew = $general['crew']; $tempOpposeCrew = $oppose['crew'];
|
|
||||||
if($general['crew'] <= 0 && $oppose['crew'] <= 0) {
|
|
||||||
$r1 = $tempGeneralCrew / $tempMyCrew;
|
|
||||||
$r2 = $tempOpposeCrew / $tempOpCrew;
|
|
||||||
|
|
||||||
if($r1 > $r2) {
|
|
||||||
$offset = Util::round($tempOpposeCrew*$tempMyCrew/$tempOpCrew);
|
|
||||||
$myCrew += $offset;
|
|
||||||
$general['crew'] -= $offset;
|
|
||||||
$opCrew += $tempOpposeCrew;
|
|
||||||
$oppose['crew'] = 0;
|
|
||||||
} else {
|
|
||||||
$offset = Util::round($tempGeneralCrew*$tempOpCrew/$tempMyCrew);
|
|
||||||
$opCrew += $offset;
|
|
||||||
$oppose['crew'] -= $offset;
|
|
||||||
$myCrew += $tempGeneralCrew;
|
|
||||||
$general['crew'] = 0;
|
|
||||||
}
|
|
||||||
} elseif($general['crew'] * $oppose['crew'] <= 0) {
|
|
||||||
if($oppose['crew'] < 0) {
|
|
||||||
$offset = Util::round($tempOpposeCrew*$tempMyCrew/$tempOpCrew);
|
|
||||||
$myCrew += $offset;
|
|
||||||
$general['crew'] -= $offset;
|
|
||||||
$opCrew += $tempOpposeCrew;
|
|
||||||
$oppose['crew'] = 0;
|
|
||||||
}
|
|
||||||
if($general['crew'] < 0) {
|
|
||||||
$offset = Util::round($tempGeneralCrew*$tempOpCrew/$tempMyCrew);
|
|
||||||
$opCrew += $offset;
|
|
||||||
$oppose['crew'] -= $offset;
|
|
||||||
$myCrew += $tempGeneralCrew;
|
|
||||||
$general['crew'] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$exp += $opCrew;
|
|
||||||
$opexp += $myCrew;
|
|
||||||
$general['crew'] = Util::round($general['crew']);
|
|
||||||
$oppose['crew'] = Util::round($oppose['crew']);
|
|
||||||
$myCrew = Util::round($myCrew);
|
|
||||||
$opCrew = Util::round($opCrew);
|
|
||||||
$myAtt = round($myAtt, 2);
|
|
||||||
$myDef = round($myDef, 2);
|
|
||||||
$opAtt = round($opAtt, 2);
|
|
||||||
$opDef = round($opDef, 2);
|
|
||||||
$msg .= "<C>●</> $phase : <Y1>【공격장수】</> <C>{$general['crew']} (-$myCrew)</> VS <C>{$oppose['crew']} (-$opCrew)</> <Y1>【수비장수】</><br>";
|
|
||||||
|
|
||||||
$mykillnum += $opCrew; $mydeathnum += $myCrew;
|
|
||||||
|
|
||||||
if($oppose['crew'] <= 0) { break; }
|
|
||||||
if($general['crew'] <= 0) { break; }
|
|
||||||
}
|
|
||||||
|
|
||||||
$msg .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</><br>";
|
|
||||||
// $msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</> ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 공헌, 명성 상승
|
|
||||||
$exp = Util::round($exp / 50);
|
|
||||||
$ricing = ($exp * 5 * getCrewtypeRice($general['crewtype'], $tech1));
|
|
||||||
$msg .= "★ 【공격장수】공헌 상승 : $exp 쌀 소비 : {$exp}x5x".getCrewtypeRice($general['crewtype'], $tech1)." = $ricing<br>";
|
|
||||||
// $msg2 .= "★ 【공격장수】공헌 상승 : $exp 쌀 소비 : {$exp}x5x".getCrewtypeRice($general['crewtype'], $tech1)." = $ricing<br>";
|
|
||||||
|
|
||||||
$msg = ConvertLog($msg, 1);
|
|
||||||
|
|
||||||
$mydeathnumSum += $mydeathnum;
|
|
||||||
$mykillnumSum += $mykillnum;
|
|
||||||
$expSum += $exp;
|
|
||||||
$ricingSum += $ricing;
|
|
||||||
$expSum2 += $dec;
|
|
||||||
$ricingSum2 += $rice;
|
|
||||||
}
|
|
||||||
|
|
||||||
$mydeathnumSum /= $simulCount;
|
|
||||||
$mykillnumSum /= $simulCount;
|
|
||||||
$expSum /= $simulCount;
|
|
||||||
$ricingSum /= $simulCount;
|
|
||||||
$expSum2 /= $simulCount;
|
|
||||||
$ricingSum2 /= $simulCount;
|
|
||||||
if($isgen == "성벽평균") {
|
|
||||||
$msg2 .= "{$simulCount}회 평균<br>";
|
|
||||||
$msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnumSum</> vs <C>-$mykillnumSum</> ";
|
|
||||||
$msg2 .= "<R>★</>【성벽】내정 감소량 : $expSum2 【성벽】쌀 소모 : $ricingSum2<br>";
|
|
||||||
$msg2 .= "★ 【공격장수】공헌 상승 : $expSum 쌀 소비 : {$expSum}x5x".getCrewtypeRice($general['crewtype'], $tech1)." = $ricingSum<br>";
|
|
||||||
} elseif($isgen == "장수평균") {
|
|
||||||
$msg2 .= "{$simulCount}회 평균<br>";
|
|
||||||
$msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnumSum</> vs <C>-$mykillnumSum</> ";
|
|
||||||
$msg2 .= "★ 【공격장수】공헌 상승 : $expSum 쌀 소비 : {$expSum}x5x".getCrewtypeRice($general['crewtype'], $tech1)." = $ricingSum<br>";
|
|
||||||
}
|
|
||||||
|
|
||||||
$msg2 = ConvertLog($msg2, 1);
|
|
||||||
} else {
|
|
||||||
$leader1 = 70;
|
|
||||||
$power1 = 70;
|
|
||||||
$intel1 = 10;
|
|
||||||
$type1 = 0;
|
|
||||||
$crew1 = 7000;
|
|
||||||
$train1 = 100;
|
|
||||||
$atmos1 = 100;
|
|
||||||
$level1 = 1;
|
|
||||||
$explevel1 = 20;
|
|
||||||
|
|
||||||
$leader2 = 70;
|
|
||||||
$power2 = 70;
|
|
||||||
$intel2 = 10;
|
|
||||||
$type2 = 0;
|
|
||||||
$crew2 = 7000;
|
|
||||||
$train2 = 100;
|
|
||||||
$atmos2 = 100;
|
|
||||||
$level2 = 1;
|
|
||||||
$explevel2 = 20;
|
|
||||||
|
|
||||||
$def = 7000;
|
|
||||||
$wall = 7000;
|
|
||||||
$train3 = $admin['city_rate'];
|
|
||||||
$atmos3 = $admin['city_rate'];
|
|
||||||
}
|
|
||||||
|
|
||||||
switch($level1) {
|
|
||||||
case 12: $sellevel1[12] = "selected"; break;
|
|
||||||
case 11: $sellevel1[11] = "selected"; break;
|
|
||||||
case 10: $sellevel1[10] = "selected"; break;
|
|
||||||
case 9: $sellevel1[9] = "selected"; break;
|
|
||||||
case 8: $sellevel1[8] = "selected"; break;
|
|
||||||
case 7: $sellevel1[7] = "selected"; break;
|
|
||||||
case 6: $sellevel1[6] = "selected"; break;
|
|
||||||
case 5: $sellevel1[5] = "selected"; break;
|
|
||||||
case 1: $sellevel1[1] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($level2) {
|
|
||||||
case 12: $sellevel2[12] = "selected"; break;
|
|
||||||
case 11: $sellevel2[11] = "selected"; break;
|
|
||||||
case 10: $sellevel2[10] = "selected"; break;
|
|
||||||
case 9: $sellevel2[9] = "selected"; break;
|
|
||||||
case 8: $sellevel2[8] = "selected"; break;
|
|
||||||
case 7: $sellevel2[7] = "selected"; break;
|
|
||||||
case 6: $sellevel2[6] = "selected"; break;
|
|
||||||
case 5: $sellevel2[5] = "selected"; break;
|
|
||||||
case 1: $sellevel2[1] = "selected"; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch($type1) {
|
|
||||||
case 0: $sel1[0] = "selected"; break;
|
|
||||||
case 1: $sel1[1] = "selected"; break;
|
|
||||||
case 2: $sel1[2] = "selected"; break;
|
|
||||||
case 3: $sel1[3] = "selected"; break;
|
|
||||||
case 4: $sel1[4] = "selected"; break;
|
|
||||||
case 5: $sel1[5] = "selected"; break;
|
|
||||||
case 10: $sel1[10] = "selected"; break;
|
|
||||||
case 11: $sel1[11] = "selected"; break;
|
|
||||||
case 12: $sel1[12] = "selected"; break;
|
|
||||||
case 13: $sel1[13] = "selected"; break;
|
|
||||||
case 14: $sel1[14] = "selected"; break;
|
|
||||||
case 20: $sel1[20] = "selected"; break;
|
|
||||||
case 21: $sel1[21] = "selected"; break;
|
|
||||||
case 22: $sel1[22] = "selected"; break;
|
|
||||||
case 23: $sel1[23] = "selected"; break;
|
|
||||||
case 24: $sel1[24] = "selected"; break;
|
|
||||||
case 25: $sel1[25] = "selected"; break;
|
|
||||||
case 26: $sel1[26] = "selected"; break;
|
|
||||||
case 27: $sel1[27] = "selected"; break;
|
|
||||||
case 30: $sel1[30] = "selected"; break;
|
|
||||||
case 31: $sel1[31] = "selected"; break;
|
|
||||||
case 32: $sel1[32] = "selected"; break;
|
|
||||||
case 33: $sel1[33] = "selected"; break;
|
|
||||||
case 34: $sel1[34] = "selected"; break;
|
|
||||||
case 35: $sel1[35] = "selected"; break;
|
|
||||||
case 36: $sel1[36] = "selected"; break;
|
|
||||||
case 37: $sel1[37] = "selected"; break;
|
|
||||||
case 38: $sel1[38] = "selected"; break;
|
|
||||||
case 40: $sel1[40] = "selected"; break;
|
|
||||||
case 41: $sel1[41] = "selected"; break;
|
|
||||||
case 42: $sel1[42] = "selected"; break;
|
|
||||||
case 43: $sel1[43] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($type2) {
|
|
||||||
case 0: $sel2[0] = "selected"; break;
|
|
||||||
case 1: $sel2[1] = "selected"; break;
|
|
||||||
case 2: $sel2[2] = "selected"; break;
|
|
||||||
case 3: $sel2[3] = "selected"; break;
|
|
||||||
case 4: $sel2[4] = "selected"; break;
|
|
||||||
case 5: $sel2[5] = "selected"; break;
|
|
||||||
case 10: $sel2[10] = "selected"; break;
|
|
||||||
case 11: $sel2[11] = "selected"; break;
|
|
||||||
case 12: $sel2[12] = "selected"; break;
|
|
||||||
case 13: $sel2[13] = "selected"; break;
|
|
||||||
case 14: $sel2[14] = "selected"; break;
|
|
||||||
case 20: $sel2[20] = "selected"; break;
|
|
||||||
case 21: $sel2[21] = "selected"; break;
|
|
||||||
case 22: $sel2[22] = "selected"; break;
|
|
||||||
case 23: $sel2[23] = "selected"; break;
|
|
||||||
case 24: $sel2[24] = "selected"; break;
|
|
||||||
case 25: $sel2[25] = "selected"; break;
|
|
||||||
case 26: $sel2[26] = "selected"; break;
|
|
||||||
case 27: $sel2[27] = "selected"; break;
|
|
||||||
case 30: $sel2[30] = "selected"; break;
|
|
||||||
case 31: $sel2[31] = "selected"; break;
|
|
||||||
case 32: $sel2[32] = "selected"; break;
|
|
||||||
case 33: $sel2[33] = "selected"; break;
|
|
||||||
case 34: $sel2[34] = "selected"; break;
|
|
||||||
case 35: $sel2[35] = "selected"; break;
|
|
||||||
case 36: $sel2[36] = "selected"; break;
|
|
||||||
case 37: $sel2[37] = "selected"; break;
|
|
||||||
case 38: $sel2[38] = "selected"; break;
|
|
||||||
case 40: $sel2[40] = "selected"; break;
|
|
||||||
case 41: $sel2[41] = "selected"; break;
|
|
||||||
case 42: $sel2[42] = "selected"; break;
|
|
||||||
case 43: $sel2[43] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($tech1) {
|
|
||||||
case 0: $tch1[0] = "selected"; break;
|
|
||||||
case 1000: $tch1[1] = "selected"; break;
|
|
||||||
case 2000: $tch1[2] = "selected"; break;
|
|
||||||
case 3000: $tch1[3] = "selected"; break;
|
|
||||||
case 4000: $tch1[4] = "selected"; break;
|
|
||||||
case 5000: $tch1[5] = "selected"; break;
|
|
||||||
case 6000: $tch1[6] = "selected"; break;
|
|
||||||
case 7000: $tch1[7] = "selected"; break;
|
|
||||||
case 8000: $tch1[8] = "selected"; break;
|
|
||||||
case 9000: $tch1[9] = "selected"; break;
|
|
||||||
case 10000: $tch1[10] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($tech2) {
|
|
||||||
case 0: $tch2[0] = "selected"; break;
|
|
||||||
case 1000: $tch2[1] = "selected"; break;
|
|
||||||
case 2000: $tch2[2] = "selected"; break;
|
|
||||||
case 3000: $tch2[3] = "selected"; break;
|
|
||||||
case 4000: $tch2[4] = "selected"; break;
|
|
||||||
case 5000: $tch2[5] = "selected"; break;
|
|
||||||
case 6000: $tch2[6] = "selected"; break;
|
|
||||||
case 7000: $tch2[7] = "selected"; break;
|
|
||||||
case 8000: $tch2[8] = "selected"; break;
|
|
||||||
case 9000: $tch2[9] = "selected"; break;
|
|
||||||
case 10000: $tch2[10] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($dex10) {
|
|
||||||
case 0: $dx10[0] = "selected"; break;
|
|
||||||
case 2500: $dx10[1] = "selected"; break;
|
|
||||||
case 7500: $dx10[2] = "selected"; break;
|
|
||||||
case 15000: $dx10[3] = "selected"; break;
|
|
||||||
case 25000: $dx10[4] = "selected"; break;
|
|
||||||
case 37500: $dx10[5] = "selected"; break;
|
|
||||||
case 52500: $dx10[6] = "selected"; break;
|
|
||||||
case 70000: $dx10[7] = "selected"; break;
|
|
||||||
case 90000: $dx10[8] = "selected"; break;
|
|
||||||
case 112500: $dx10[9] = "selected"; break;
|
|
||||||
case 137500: $dx10[10] = "selected"; break;
|
|
||||||
case 165000: $dx10[11] = "selected"; break;
|
|
||||||
case 195000: $dx10[12] = "selected"; break;
|
|
||||||
case 227500: $dx10[13] = "selected"; break;
|
|
||||||
case 262500: $dx10[14] = "selected"; break;
|
|
||||||
case 300000: $dx10[15] = "selected"; break;
|
|
||||||
case 340000: $dx10[16] = "selected"; break;
|
|
||||||
case 382500: $dx10[17] = "selected"; break;
|
|
||||||
case 427500: $dx10[18] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($dex110) {
|
|
||||||
case 0: $dx110[0] = "selected"; break;
|
|
||||||
case 2500: $dx110[1] = "selected"; break;
|
|
||||||
case 7500: $dx110[2] = "selected"; break;
|
|
||||||
case 15000: $dx110[3] = "selected"; break;
|
|
||||||
case 25000: $dx110[4] = "selected"; break;
|
|
||||||
case 37500: $dx110[5] = "selected"; break;
|
|
||||||
case 52500: $dx110[6] = "selected"; break;
|
|
||||||
case 70000: $dx110[7] = "selected"; break;
|
|
||||||
case 90000: $dx110[8] = "selected"; break;
|
|
||||||
case 112500: $dx110[9] = "selected"; break;
|
|
||||||
case 137500: $dx110[10] = "selected"; break;
|
|
||||||
case 165000: $dx110[11] = "selected"; break;
|
|
||||||
case 195000: $dx110[12] = "selected"; break;
|
|
||||||
case 227500: $dx110[13] = "selected"; break;
|
|
||||||
case 262500: $dx110[14] = "selected"; break;
|
|
||||||
case 300000: $dx110[15] = "selected"; break;
|
|
||||||
case 340000: $dx110[16] = "selected"; break;
|
|
||||||
case 382500: $dx110[17] = "selected"; break;
|
|
||||||
case 427500: $dx110[18] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($dex120) {
|
|
||||||
case 0: $dx120[0] = "selected"; break;
|
|
||||||
case 2500: $dx120[1] = "selected"; break;
|
|
||||||
case 7500: $dx120[2] = "selected"; break;
|
|
||||||
case 15000: $dx120[3] = "selected"; break;
|
|
||||||
case 25000: $dx120[4] = "selected"; break;
|
|
||||||
case 37500: $dx120[5] = "selected"; break;
|
|
||||||
case 52500: $dx120[6] = "selected"; break;
|
|
||||||
case 70000: $dx120[7] = "selected"; break;
|
|
||||||
case 90000: $dx120[8] = "selected"; break;
|
|
||||||
case 112500: $dx120[9] = "selected"; break;
|
|
||||||
case 137500: $dx120[10] = "selected"; break;
|
|
||||||
case 165000: $dx120[11] = "selected"; break;
|
|
||||||
case 195000: $dx120[12] = "selected"; break;
|
|
||||||
case 227500: $dx120[13] = "selected"; break;
|
|
||||||
case 262500: $dx120[14] = "selected"; break;
|
|
||||||
case 300000: $dx120[15] = "selected"; break;
|
|
||||||
case 340000: $dx120[16] = "selected"; break;
|
|
||||||
case 382500: $dx120[17] = "selected"; break;
|
|
||||||
case 427500: $dx120[18] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($dex130) {
|
|
||||||
case 0: $dx130[0] = "selected"; break;
|
|
||||||
case 2500: $dx130[1] = "selected"; break;
|
|
||||||
case 7500: $dx130[2] = "selected"; break;
|
|
||||||
case 15000: $dx130[3] = "selected"; break;
|
|
||||||
case 25000: $dx130[4] = "selected"; break;
|
|
||||||
case 37500: $dx130[5] = "selected"; break;
|
|
||||||
case 52500: $dx130[6] = "selected"; break;
|
|
||||||
case 70000: $dx130[7] = "selected"; break;
|
|
||||||
case 90000: $dx130[8] = "selected"; break;
|
|
||||||
case 112500: $dx130[9] = "selected"; break;
|
|
||||||
case 137500: $dx130[10] = "selected"; break;
|
|
||||||
case 165000: $dx130[11] = "selected"; break;
|
|
||||||
case 195000: $dx130[12] = "selected"; break;
|
|
||||||
case 227500: $dx130[13] = "selected"; break;
|
|
||||||
case 262500: $dx130[14] = "selected"; break;
|
|
||||||
case 300000: $dx130[15] = "selected"; break;
|
|
||||||
case 340000: $dx130[16] = "selected"; break;
|
|
||||||
case 382500: $dx130[17] = "selected"; break;
|
|
||||||
case 427500: $dx130[18] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($dex140) {
|
|
||||||
case 0: $dx140[0] = "selected"; break;
|
|
||||||
case 2500: $dx140[1] = "selected"; break;
|
|
||||||
case 7500: $dx140[2] = "selected"; break;
|
|
||||||
case 15000: $dx140[3] = "selected"; break;
|
|
||||||
case 25000: $dx140[4] = "selected"; break;
|
|
||||||
case 37500: $dx140[5] = "selected"; break;
|
|
||||||
case 52500: $dx140[6] = "selected"; break;
|
|
||||||
case 70000: $dx140[7] = "selected"; break;
|
|
||||||
case 90000: $dx140[8] = "selected"; break;
|
|
||||||
case 112500: $dx140[9] = "selected"; break;
|
|
||||||
case 137500: $dx140[10] = "selected"; break;
|
|
||||||
case 165000: $dx140[11] = "selected"; break;
|
|
||||||
case 195000: $dx140[12] = "selected"; break;
|
|
||||||
case 227500: $dx140[13] = "selected"; break;
|
|
||||||
case 262500: $dx140[14] = "selected"; break;
|
|
||||||
case 300000: $dx140[15] = "selected"; break;
|
|
||||||
case 340000: $dx140[16] = "selected"; break;
|
|
||||||
case 382500: $dx140[17] = "selected"; break;
|
|
||||||
case 427500: $dx140[18] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($dex20) {
|
|
||||||
case 0: $dx20[0] = "selected"; break;
|
|
||||||
case 2500: $dx20[1] = "selected"; break;
|
|
||||||
case 7500: $dx20[2] = "selected"; break;
|
|
||||||
case 15000: $dx20[3] = "selected"; break;
|
|
||||||
case 25000: $dx20[4] = "selected"; break;
|
|
||||||
case 37500: $dx20[5] = "selected"; break;
|
|
||||||
case 52500: $dx20[6] = "selected"; break;
|
|
||||||
case 70000: $dx20[7] = "selected"; break;
|
|
||||||
case 90000: $dx20[8] = "selected"; break;
|
|
||||||
case 112500: $dx20[9] = "selected"; break;
|
|
||||||
case 137500: $dx20[10] = "selected"; break;
|
|
||||||
case 165000: $dx20[11] = "selected"; break;
|
|
||||||
case 195000: $dx20[12] = "selected"; break;
|
|
||||||
case 227500: $dx20[13] = "selected"; break;
|
|
||||||
case 262500: $dx20[14] = "selected"; break;
|
|
||||||
case 300000: $dx20[15] = "selected"; break;
|
|
||||||
case 340000: $dx20[16] = "selected"; break;
|
|
||||||
case 382500: $dx20[17] = "selected"; break;
|
|
||||||
case 427500: $dx20[18] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($dex210) {
|
|
||||||
case 0: $dx210[0] = "selected"; break;
|
|
||||||
case 2500: $dx210[1] = "selected"; break;
|
|
||||||
case 7500: $dx210[2] = "selected"; break;
|
|
||||||
case 15000: $dx210[3] = "selected"; break;
|
|
||||||
case 25000: $dx210[4] = "selected"; break;
|
|
||||||
case 37500: $dx210[5] = "selected"; break;
|
|
||||||
case 52500: $dx210[6] = "selected"; break;
|
|
||||||
case 70000: $dx210[7] = "selected"; break;
|
|
||||||
case 90000: $dx210[8] = "selected"; break;
|
|
||||||
case 112500: $dx210[9] = "selected"; break;
|
|
||||||
case 137500: $dx210[10] = "selected"; break;
|
|
||||||
case 165000: $dx210[11] = "selected"; break;
|
|
||||||
case 195000: $dx210[12] = "selected"; break;
|
|
||||||
case 227500: $dx210[13] = "selected"; break;
|
|
||||||
case 262500: $dx210[14] = "selected"; break;
|
|
||||||
case 300000: $dx210[15] = "selected"; break;
|
|
||||||
case 340000: $dx210[16] = "selected"; break;
|
|
||||||
case 382500: $dx210[17] = "selected"; break;
|
|
||||||
case 427500: $dx210[18] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($dex220) {
|
|
||||||
case 0: $dx220[0] = "selected"; break;
|
|
||||||
case 2500: $dx220[1] = "selected"; break;
|
|
||||||
case 7500: $dx220[2] = "selected"; break;
|
|
||||||
case 15000: $dx220[3] = "selected"; break;
|
|
||||||
case 25000: $dx220[4] = "selected"; break;
|
|
||||||
case 37500: $dx220[5] = "selected"; break;
|
|
||||||
case 52500: $dx220[6] = "selected"; break;
|
|
||||||
case 70000: $dx220[7] = "selected"; break;
|
|
||||||
case 90000: $dx220[8] = "selected"; break;
|
|
||||||
case 112500: $dx220[9] = "selected"; break;
|
|
||||||
case 137500: $dx220[10] = "selected"; break;
|
|
||||||
case 165000: $dx220[11] = "selected"; break;
|
|
||||||
case 195000: $dx220[12] = "selected"; break;
|
|
||||||
case 227500: $dx220[13] = "selected"; break;
|
|
||||||
case 262500: $dx220[14] = "selected"; break;
|
|
||||||
case 300000: $dx220[15] = "selected"; break;
|
|
||||||
case 340000: $dx220[16] = "selected"; break;
|
|
||||||
case 382500: $dx220[17] = "selected"; break;
|
|
||||||
case 427500: $dx220[18] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($dex230) {
|
|
||||||
case 0: $dx230[0] = "selected"; break;
|
|
||||||
case 2500: $dx230[1] = "selected"; break;
|
|
||||||
case 7500: $dx230[2] = "selected"; break;
|
|
||||||
case 15000: $dx230[3] = "selected"; break;
|
|
||||||
case 25000: $dx230[4] = "selected"; break;
|
|
||||||
case 37500: $dx230[5] = "selected"; break;
|
|
||||||
case 52500: $dx230[6] = "selected"; break;
|
|
||||||
case 70000: $dx230[7] = "selected"; break;
|
|
||||||
case 90000: $dx230[8] = "selected"; break;
|
|
||||||
case 112500: $dx230[9] = "selected"; break;
|
|
||||||
case 137500: $dx230[10] = "selected"; break;
|
|
||||||
case 165000: $dx230[11] = "selected"; break;
|
|
||||||
case 195000: $dx230[12] = "selected"; break;
|
|
||||||
case 227500: $dx230[13] = "selected"; break;
|
|
||||||
case 262500: $dx230[14] = "selected"; break;
|
|
||||||
case 300000: $dx230[15] = "selected"; break;
|
|
||||||
case 340000: $dx230[16] = "selected"; break;
|
|
||||||
case 382500: $dx230[17] = "selected"; break;
|
|
||||||
case 427500: $dx230[18] = "selected"; break;
|
|
||||||
}
|
|
||||||
switch($dex240) {
|
|
||||||
case 0: $dx240[0] = "selected"; break;
|
|
||||||
case 2500: $dx240[1] = "selected"; break;
|
|
||||||
case 7500: $dx240[2] = "selected"; break;
|
|
||||||
case 15000: $dx240[3] = "selected"; break;
|
|
||||||
case 25000: $dx240[4] = "selected"; break;
|
|
||||||
case 37500: $dx240[5] = "selected"; break;
|
|
||||||
case 52500: $dx240[6] = "selected"; break;
|
|
||||||
case 70000: $dx240[7] = "selected"; break;
|
|
||||||
case 90000: $dx240[8] = "selected"; break;
|
|
||||||
case 112500: $dx240[9] = "selected"; break;
|
|
||||||
case 137500: $dx240[10] = "selected"; break;
|
|
||||||
case 165000: $dx240[11] = "selected"; break;
|
|
||||||
case 195000: $dx240[12] = "selected"; break;
|
|
||||||
case 227500: $dx240[13] = "selected"; break;
|
|
||||||
case 262500: $dx240[14] = "selected"; break;
|
|
||||||
case 300000: $dx240[15] = "selected"; break;
|
|
||||||
case 340000: $dx240[16] = "selected"; break;
|
|
||||||
case 382500: $dx240[17] = "selected"; break;
|
|
||||||
case 427500: $dx240[18] = "selected"; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<title>전투시뮬레이션</title>
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
<style type="text/css">
|
|
||||||
select { background-color:black;color:white; }
|
|
||||||
input { background-color:black;color:white; }
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<form method=post action=_simul.php>
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr id=bg1>
|
|
||||||
<td>공격장수</td>
|
|
||||||
<td>상대장수</td>
|
|
||||||
<td>상대성벽</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>관직
|
|
||||||
<select name=level1 size=1>
|
|
||||||
<option <?=$sellevel1[1]?> value=1>일반</option>
|
|
||||||
<option <?=$sellevel1[5]?> value=5>제3모사</option>
|
|
||||||
<option <?=$sellevel1[6]?> value=6>제3장군</option>
|
|
||||||
<option <?=$sellevel1[7]?> value=7>제2모사</option>
|
|
||||||
<option <?=$sellevel1[8]?> value=8>제2장군</option>
|
|
||||||
<option <?=$sellevel1[9]?> value=9>제1모사</option>
|
|
||||||
<option <?=$sellevel1[10]?> value=10>제1장군</option>
|
|
||||||
<option <?=$sellevel1[11]?> value=11>참모</option>
|
|
||||||
<option <?=$sellevel1[12]?> value=12>군주</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td>관직
|
|
||||||
<select name=level2 size=1>
|
|
||||||
<option <?=$sellevel2[1]?> value=1>일반</option>
|
|
||||||
<option <?=$sellevel2[5]?> value=5>제3모사</option>
|
|
||||||
<option <?=$sellevel2[6]?> value=6>제3장군</option>
|
|
||||||
<option <?=$sellevel2[7]?> value=7>제2모사</option>
|
|
||||||
<option <?=$sellevel2[8]?> value=8>제2장군</option>
|
|
||||||
<option <?=$sellevel2[9]?> value=9>제1모사</option>
|
|
||||||
<option <?=$sellevel2[10]?> value=10>제1장군</option>
|
|
||||||
<option <?=$sellevel2[11]?> value=11>참모</option>
|
|
||||||
<option <?=$sellevel2[12]?> value=12>군주</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td>-</td>
|
|
||||||
<tr>
|
|
||||||
<td>Lv <input size=2 maxlength=2 name=explevel1 value=<?=$explevel1?>></td>
|
|
||||||
<td>Lv <input size=2 maxlength=2 name=explevel2 value=<?=$explevel2?>></td>
|
|
||||||
<td>-</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>통솔 <input size=3 maxlength=3 name=leader1 value=<?=$leader1?>></td>
|
|
||||||
<td>통솔 <input size=3 maxlength=3 name=leader2 value=<?=$leader2?>></td>
|
|
||||||
<td>-</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>무력 <input size=3 maxlength=3 name=power1 value=<?=$power1?>></td>
|
|
||||||
<td>무력 <input size=3 maxlength=3 name=power2 value=<?=$power2?>></td>
|
|
||||||
<td>-</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>지력 <input size=3 maxlength=3 name=intel1 value=<?=$intel1?>></td>
|
|
||||||
<td>지력 <input size=3 maxlength=3 name=intel2 value=<?=$intel2?>></td>
|
|
||||||
<td>-</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>병종
|
|
||||||
<select name=type1 size=1>
|
|
||||||
<option value=0>--------</option>
|
|
||||||
<option <?=$sel1[0]?> value=0>보병</option>
|
|
||||||
<option <?=$sel1[1]?> value=1>청주병</option>
|
|
||||||
<option <?=$sel1[2]?> value=2>수병</option>
|
|
||||||
<option <?=$sel1[3]?> value=3>자객병</option>
|
|
||||||
<option <?=$sel1[4]?> value=4>근위병</option>
|
|
||||||
<option <?=$sel1[5]?> value=5>등갑병</option>
|
|
||||||
<option value=0>--------</option>
|
|
||||||
<option <?=$sel1[10]?> value=10>궁병</option>
|
|
||||||
<option <?=$sel1[11]?> value=11>궁기병</option>
|
|
||||||
<option <?=$sel1[12]?> value=12>연노병</option>
|
|
||||||
<option <?=$sel1[13]?> value=13>강궁병</option>
|
|
||||||
<option <?=$sel1[14]?> value=14>석궁병</option>
|
|
||||||
<option value=0>--------</option>
|
|
||||||
<option <?=$sel1[20]?> value=20>기병</option>
|
|
||||||
<option <?=$sel1[21]?> value=21>백마병</option>
|
|
||||||
<option <?=$sel1[22]?> value=22>중장기병</option>
|
|
||||||
<option <?=$sel1[23]?> value=23>돌격기병</option>
|
|
||||||
<option <?=$sel1[24]?> value=24>철기병</option>
|
|
||||||
<option <?=$sel1[25]?> value=25>수렵기병</option>
|
|
||||||
<option <?=$sel1[26]?> value=26>맹수병</option>
|
|
||||||
<option <?=$sel1[27]?> value=27>호표기병</option>
|
|
||||||
<option value=0>--------</option>
|
|
||||||
<option <?=$sel1[30]?> value=30>귀병</option>
|
|
||||||
<option <?=$sel1[31]?> value=31>신귀병</option>
|
|
||||||
<option <?=$sel1[32]?> value=32>백귀병</option>
|
|
||||||
<option <?=$sel1[33]?> value=33>흑귀병</option>
|
|
||||||
<option <?=$sel1[34]?> value=34>악귀병</option>
|
|
||||||
<option <?=$sel1[35]?> value=35>남귀병</option>
|
|
||||||
<option <?=$sel1[36]?> value=36>황귀병</option>
|
|
||||||
<option <?=$sel1[37]?> value=37>천귀병</option>
|
|
||||||
<option <?=$sel1[38]?> value=38>마귀병</option>
|
|
||||||
<option value=0>--------</option>
|
|
||||||
<option <?=$sel1[40]?> value=40>정란</option>
|
|
||||||
<option <?=$sel1[41]?> value=41>충차</option>
|
|
||||||
<option <?=$sel1[42]?> value=42>벽력거</option>
|
|
||||||
<option <?=$sel1[43]?> value=43>목우</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td>병종
|
|
||||||
<select name=type2 size=1>
|
|
||||||
<option value=0>--------</option>
|
|
||||||
<option <?=$sel2[0]?> value=0>보병</option>
|
|
||||||
<option <?=$sel2[1]?> value=1>청주병</option>
|
|
||||||
<option <?=$sel2[2]?> value=2>수병</option>
|
|
||||||
<option <?=$sel2[3]?> value=3>자객병</option>
|
|
||||||
<option <?=$sel2[4]?> value=4>근위병</option>
|
|
||||||
<option <?=$sel2[5]?> value=5>등갑병</option>
|
|
||||||
<option value=0>--------</option>
|
|
||||||
<option <?=$sel2[10]?> value=10>궁병</option>
|
|
||||||
<option <?=$sel2[11]?> value=11>궁기병</option>
|
|
||||||
<option <?=$sel2[12]?> value=12>연노병</option>
|
|
||||||
<option <?=$sel2[13]?> value=13>강궁병</option>
|
|
||||||
<option <?=$sel2[14]?> value=14>석궁병</option>
|
|
||||||
<option value=0>--------</option>
|
|
||||||
<option <?=$sel2[20]?> value=20>기병</option>
|
|
||||||
<option <?=$sel2[21]?> value=21>백마병</option>
|
|
||||||
<option <?=$sel2[22]?> value=22>중장기병</option>
|
|
||||||
<option <?=$sel2[23]?> value=23>돌격기병</option>
|
|
||||||
<option <?=$sel2[24]?> value=24>철기병</option>
|
|
||||||
<option <?=$sel2[25]?> value=25>수렵기병</option>
|
|
||||||
<option <?=$sel2[26]?> value=26>맹수병</option>
|
|
||||||
<option <?=$sel2[27]?> value=27>호표기병</option>
|
|
||||||
<option value=0>--------</option>
|
|
||||||
<option <?=$sel2[30]?> value=30>귀병</option>
|
|
||||||
<option <?=$sel2[31]?> value=31>신귀병</option>
|
|
||||||
<option <?=$sel2[32]?> value=32>백귀병</option>
|
|
||||||
<option <?=$sel2[33]?> value=33>흑귀병</option>
|
|
||||||
<option <?=$sel2[34]?> value=34>악귀병</option>
|
|
||||||
<option <?=$sel2[35]?> value=35>남귀병</option>
|
|
||||||
<option <?=$sel2[36]?> value=36>황귀병</option>
|
|
||||||
<option <?=$sel2[37]?> value=37>천귀병</option>
|
|
||||||
<option <?=$sel2[38]?> value=38>마귀병</option>
|
|
||||||
<option value=0>--------</option>
|
|
||||||
<option <?=$sel2[40]?> value=40>정란</option>
|
|
||||||
<option <?=$sel2[41]?> value=41>충차</option>
|
|
||||||
<option <?=$sel2[42]?> value=42>벽력거</option>
|
|
||||||
<option <?=$sel2[43]?> value=43>목우</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td>성벽 <input size=4 maxlength=4 name=wall value=<?=$wall?>></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>병력 <input size=5 maxlength=5 name=crew1 value=<?=$crew1?>></td>
|
|
||||||
<td>병력 <input size=5 maxlength=5 name=crew2 value=<?=$crew2?>></td>
|
|
||||||
<td>수비 <input size=4 maxlength=4 name=def value=<?=$def?>></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>훈련 <input size=3 maxlength=3 name=train1 value=<?=$train1?>></td>
|
|
||||||
<td>훈련 <input size=3 maxlength=3 name=train2 value=<?=$train2?>></td>
|
|
||||||
<td>훈련 <input size=3 maxlength=3 name=train3 value=<?=$train3?>></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>사기 <input size=3 maxlength=3 name=atmos1 value=<?=$atmos1?>></td>
|
|
||||||
<td>사기 <input size=3 maxlength=3 name=atmos2 value=<?=$atmos2?>></td>
|
|
||||||
<td>사기 <input size=3 maxlength=3 name=atmos3 value=<?=$atmos3?>></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>기술
|
|
||||||
<select name=tech1 size=1>
|
|
||||||
<option <?=$tch1[0]?> value=0>0등급</option>
|
|
||||||
<option <?=$tch1[1]?> value=1000>1등급</option>
|
|
||||||
<option <?=$tch1[2]?> value=2000>2등급</option>
|
|
||||||
<option <?=$tch1[3]?> value=3000>3등급</option>
|
|
||||||
<option <?=$tch1[4]?> value=4000>4등급</option>
|
|
||||||
<option <?=$tch1[5]?> value=5000>5등급</option>
|
|
||||||
<option <?=$tch1[6]?> value=6000>6등급</option>
|
|
||||||
<option <?=$tch1[7]?> value=7000>7등급</option>
|
|
||||||
<option <?=$tch1[8]?> value=8000>8등급</option>
|
|
||||||
<option <?=$tch1[9]?> value=9000>9등급</option>
|
|
||||||
<option <?=$tch1[10]?> value=10000>10등급</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td>기술
|
|
||||||
<select name=tech2 size=1>
|
|
||||||
<option <?=$tch2[0]?> value=0>0등급</option>
|
|
||||||
<option <?=$tch2[1]?> value=1000>1등급</option>
|
|
||||||
<option <?=$tch2[2]?> value=2000>2등급</option>
|
|
||||||
<option <?=$tch2[3]?> value=3000>3등급</option>
|
|
||||||
<option <?=$tch2[4]?> value=4000>4등급</option>
|
|
||||||
<option <?=$tch2[5]?> value=5000>5등급</option>
|
|
||||||
<option <?=$tch2[6]?> value=6000>6등급</option>
|
|
||||||
<option <?=$tch2[7]?> value=7000>7등급</option>
|
|
||||||
<option <?=$tch2[8]?> value=8000>8등급</option>
|
|
||||||
<option <?=$tch2[9]?> value=9000>9등급</option>
|
|
||||||
<option <?=$tch2[10]?> value=10000>10등급</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td>-</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>보
|
|
||||||
<select name=dex10 size=1>
|
|
||||||
<option <?=$dx10[0]?> value=0>F</option>
|
|
||||||
<option <?=$dx10[1]?> value=2500>E-</option>
|
|
||||||
<option <?=$dx10[2]?> value=7500>E</option>
|
|
||||||
<option <?=$dx10[3]?> value=15000>E+</option>
|
|
||||||
<option <?=$dx10[4]?> value=25000>D-</option>
|
|
||||||
<option <?=$dx10[5]?> value=37500>D</option>
|
|
||||||
<option <?=$dx10[6]?> value=52500>D+</option>
|
|
||||||
<option <?=$dx10[7]?> value=70000>C-</option>
|
|
||||||
<option <?=$dx10[8]?> value=90000>C</option>
|
|
||||||
<option <?=$dx10[9]?> value=112500>C+</option>
|
|
||||||
<option <?=$dx10[10]?> value=137500>B-</option>
|
|
||||||
<option <?=$dx10[11]?> value=165000>B</option>
|
|
||||||
<option <?=$dx10[12]?> value=195000>B+</option>
|
|
||||||
<option <?=$dx10[13]?> value=227500>A-</option>
|
|
||||||
<option <?=$dx10[14]?> value=262500>A</option>
|
|
||||||
<option <?=$dx10[15]?> value=300000>A+</option>
|
|
||||||
<option <?=$dx10[16]?> value=340000>S</option>
|
|
||||||
<option <?=$dx10[17]?> value=382500>SS</option>
|
|
||||||
<option <?=$dx10[18]?> value=427500>SSS</option>
|
|
||||||
</select>
|
|
||||||
궁
|
|
||||||
<select name=dex110 size=1>
|
|
||||||
<option <?=$dx110[0]?> value=0>F</option>
|
|
||||||
<option <?=$dx110[1]?> value=2500>E-</option>
|
|
||||||
<option <?=$dx110[2]?> value=7500>E</option>
|
|
||||||
<option <?=$dx110[3]?> value=15000>E+</option>
|
|
||||||
<option <?=$dx110[4]?> value=25000>D-</option>
|
|
||||||
<option <?=$dx110[5]?> value=37500>D</option>
|
|
||||||
<option <?=$dx110[6]?> value=52500>D+</option>
|
|
||||||
<option <?=$dx110[7]?> value=70000>C-</option>
|
|
||||||
<option <?=$dx110[8]?> value=90000>C</option>
|
|
||||||
<option <?=$dx110[9]?> value=112500>C+</option>
|
|
||||||
<option <?=$dx110[10]?> value=137500>B-</option>
|
|
||||||
<option <?=$dx110[11]?> value=165000>B</option>
|
|
||||||
<option <?=$dx110[12]?> value=195000>B+</option>
|
|
||||||
<option <?=$dx110[13]?> value=227500>A-</option>
|
|
||||||
<option <?=$dx110[14]?> value=262500>A</option>
|
|
||||||
<option <?=$dx110[15]?> value=300000>A+</option>
|
|
||||||
<option <?=$dx110[16]?> value=340000>S</option>
|
|
||||||
<option <?=$dx110[17]?> value=382500>SS</option>
|
|
||||||
<option <?=$dx110[18]?> value=427500>SSS</option>
|
|
||||||
</select>
|
|
||||||
기
|
|
||||||
<select name=dex120 size=1>
|
|
||||||
<option <?=$dx120[0]?> value=0>F</option>
|
|
||||||
<option <?=$dx120[1]?> value=2500>E-</option>
|
|
||||||
<option <?=$dx120[2]?> value=7500>E</option>
|
|
||||||
<option <?=$dx120[3]?> value=15000>E+</option>
|
|
||||||
<option <?=$dx120[4]?> value=25000>D-</option>
|
|
||||||
<option <?=$dx120[5]?> value=37500>D</option>
|
|
||||||
<option <?=$dx120[6]?> value=52500>D+</option>
|
|
||||||
<option <?=$dx120[7]?> value=70000>C-</option>
|
|
||||||
<option <?=$dx120[8]?> value=90000>C</option>
|
|
||||||
<option <?=$dx120[9]?> value=112500>C+</option>
|
|
||||||
<option <?=$dx120[10]?> value=137500>B-</option>
|
|
||||||
<option <?=$dx120[11]?> value=165000>B</option>
|
|
||||||
<option <?=$dx120[12]?> value=195000>B+</option>
|
|
||||||
<option <?=$dx120[13]?> value=227500>A-</option>
|
|
||||||
<option <?=$dx120[14]?> value=262500>A</option>
|
|
||||||
<option <?=$dx120[15]?> value=300000>A+</option>
|
|
||||||
<option <?=$dx120[16]?> value=340000>S</option>
|
|
||||||
<option <?=$dx120[17]?> value=382500>SS</option>
|
|
||||||
<option <?=$dx120[18]?> value=427500>SSS</option>
|
|
||||||
</select>
|
|
||||||
귀
|
|
||||||
<select name=dex130 size=1>
|
|
||||||
<option <?=$dx130[0]?> value=0>F</option>
|
|
||||||
<option <?=$dx130[1]?> value=2500>E-</option>
|
|
||||||
<option <?=$dx130[2]?> value=7500>E</option>
|
|
||||||
<option <?=$dx130[3]?> value=15000>E+</option>
|
|
||||||
<option <?=$dx130[4]?> value=25000>D-</option>
|
|
||||||
<option <?=$dx130[5]?> value=37500>D</option>
|
|
||||||
<option <?=$dx130[6]?> value=52500>D+</option>
|
|
||||||
<option <?=$dx130[7]?> value=70000>C-</option>
|
|
||||||
<option <?=$dx130[8]?> value=90000>C</option>
|
|
||||||
<option <?=$dx130[9]?> value=112500>C+</option>
|
|
||||||
<option <?=$dx130[10]?> value=137500>B-</option>
|
|
||||||
<option <?=$dx130[11]?> value=165000>B</option>
|
|
||||||
<option <?=$dx130[12]?> value=195000>B+</option>
|
|
||||||
<option <?=$dx130[13]?> value=227500>A-</option>
|
|
||||||
<option <?=$dx130[14]?> value=262500>A</option>
|
|
||||||
<option <?=$dx130[15]?> value=300000>A+</option>
|
|
||||||
<option <?=$dx130[16]?> value=340000>S</option>
|
|
||||||
<option <?=$dx130[17]?> value=382500>SS</option>
|
|
||||||
<option <?=$dx130[18]?> value=427500>SSS</option>
|
|
||||||
</select>
|
|
||||||
차
|
|
||||||
<select name=dex140 size=1>
|
|
||||||
<option <?=$dx140[0]?> value=0>F</option>
|
|
||||||
<option <?=$dx140[1]?> value=2500>E-</option>
|
|
||||||
<option <?=$dx140[2]?> value=7500>E</option>
|
|
||||||
<option <?=$dx140[3]?> value=15000>E+</option>
|
|
||||||
<option <?=$dx140[4]?> value=25000>D-</option>
|
|
||||||
<option <?=$dx140[5]?> value=37500>D</option>
|
|
||||||
<option <?=$dx140[6]?> value=52500>D+</option>
|
|
||||||
<option <?=$dx140[7]?> value=70000>C-</option>
|
|
||||||
<option <?=$dx140[8]?> value=90000>C</option>
|
|
||||||
<option <?=$dx140[9]?> value=112500>C+</option>
|
|
||||||
<option <?=$dx140[10]?> value=137500>B-</option>
|
|
||||||
<option <?=$dx140[11]?> value=165000>B</option>
|
|
||||||
<option <?=$dx140[12]?> value=195000>B+</option>
|
|
||||||
<option <?=$dx140[13]?> value=227500>A-</option>
|
|
||||||
<option <?=$dx140[14]?> value=262500>A</option>
|
|
||||||
<option <?=$dx140[15]?> value=300000>A+</option>
|
|
||||||
<option <?=$dx140[16]?> value=340000>S</option>
|
|
||||||
<option <?=$dx140[17]?> value=382500>SS</option>
|
|
||||||
<option <?=$dx140[18]?> value=427500>SSS</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td>보
|
|
||||||
<select name=dex20 size=1>
|
|
||||||
<option <?=$dx20[0]?> value=0>F</option>
|
|
||||||
<option <?=$dx20[1]?> value=2500>E-</option>
|
|
||||||
<option <?=$dx20[2]?> value=7500>E</option>
|
|
||||||
<option <?=$dx20[3]?> value=15000>E+</option>
|
|
||||||
<option <?=$dx20[4]?> value=25000>D-</option>
|
|
||||||
<option <?=$dx20[5]?> value=37500>D</option>
|
|
||||||
<option <?=$dx20[6]?> value=52500>D+</option>
|
|
||||||
<option <?=$dx20[7]?> value=70000>C-</option>
|
|
||||||
<option <?=$dx20[8]?> value=90000>C</option>
|
|
||||||
<option <?=$dx20[9]?> value=112500>C+</option>
|
|
||||||
<option <?=$dx20[10]?> value=137500>B-</option>
|
|
||||||
<option <?=$dx20[11]?> value=165000>B</option>
|
|
||||||
<option <?=$dx20[12]?> value=195000>B+</option>
|
|
||||||
<option <?=$dx20[13]?> value=227500>A-</option>
|
|
||||||
<option <?=$dx20[14]?> value=262500>A</option>
|
|
||||||
<option <?=$dx20[15]?> value=300000>A+</option>
|
|
||||||
<option <?=$dx20[16]?> value=340000>S</option>
|
|
||||||
<option <?=$dx20[17]?> value=382500>SS</option>
|
|
||||||
<option <?=$dx20[18]?> value=427500>SSS</option>
|
|
||||||
</select>
|
|
||||||
궁
|
|
||||||
<select name=dex210 size=1>
|
|
||||||
<option <?=$dx210[0]?> value=0>F</option>
|
|
||||||
<option <?=$dx210[1]?> value=2500>E-</option>
|
|
||||||
<option <?=$dx210[2]?> value=7500>E</option>
|
|
||||||
<option <?=$dx210[3]?> value=15000>E+</option>
|
|
||||||
<option <?=$dx210[4]?> value=25000>D-</option>
|
|
||||||
<option <?=$dx210[5]?> value=37500>D</option>
|
|
||||||
<option <?=$dx210[6]?> value=52500>D+</option>
|
|
||||||
<option <?=$dx210[7]?> value=70000>C-</option>
|
|
||||||
<option <?=$dx210[8]?> value=90000>C</option>
|
|
||||||
<option <?=$dx210[9]?> value=112500>C+</option>
|
|
||||||
<option <?=$dx210[10]?> value=137500>B-</option>
|
|
||||||
<option <?=$dx210[11]?> value=165000>B</option>
|
|
||||||
<option <?=$dx210[12]?> value=195000>B+</option>
|
|
||||||
<option <?=$dx210[13]?> value=227500>A-</option>
|
|
||||||
<option <?=$dx210[14]?> value=262500>A</option>
|
|
||||||
<option <?=$dx210[15]?> value=300000>A+</option>
|
|
||||||
<option <?=$dx210[16]?> value=340000>S</option>
|
|
||||||
<option <?=$dx210[17]?> value=382500>SS</option>
|
|
||||||
<option <?=$dx210[18]?> value=427500>SSS</option>
|
|
||||||
</select>
|
|
||||||
기
|
|
||||||
<select name=dex220 size=1>
|
|
||||||
<option <?=$dx220[0]?> value=0>F</option>
|
|
||||||
<option <?=$dx220[1]?> value=2500>E-</option>
|
|
||||||
<option <?=$dx220[2]?> value=7500>E</option>
|
|
||||||
<option <?=$dx220[3]?> value=15000>E+</option>
|
|
||||||
<option <?=$dx220[4]?> value=25000>D-</option>
|
|
||||||
<option <?=$dx220[5]?> value=37500>D</option>
|
|
||||||
<option <?=$dx220[6]?> value=52500>D+</option>
|
|
||||||
<option <?=$dx220[7]?> value=70000>C-</option>
|
|
||||||
<option <?=$dx220[8]?> value=90000>C</option>
|
|
||||||
<option <?=$dx220[9]?> value=112500>C+</option>
|
|
||||||
<option <?=$dx220[10]?> value=137500>B-</option>
|
|
||||||
<option <?=$dx220[11]?> value=165000>B</option>
|
|
||||||
<option <?=$dx220[12]?> value=195000>B+</option>
|
|
||||||
<option <?=$dx220[13]?> value=227500>A-</option>
|
|
||||||
<option <?=$dx220[14]?> value=262500>A</option>
|
|
||||||
<option <?=$dx220[15]?> value=300000>A+</option>
|
|
||||||
<option <?=$dx220[16]?> value=340000>S</option>
|
|
||||||
<option <?=$dx220[17]?> value=382500>SS</option>
|
|
||||||
<option <?=$dx220[18]?> value=427500>SSS</option>
|
|
||||||
</select>
|
|
||||||
귀
|
|
||||||
<select name=dex230 size=1>
|
|
||||||
<option <?=$dx230[0]?> value=0>F</option>
|
|
||||||
<option <?=$dx230[1]?> value=2500>E-</option>
|
|
||||||
<option <?=$dx230[2]?> value=7500>E</option>
|
|
||||||
<option <?=$dx230[3]?> value=15000>E+</option>
|
|
||||||
<option <?=$dx230[4]?> value=25000>D-</option>
|
|
||||||
<option <?=$dx230[5]?> value=37500>D</option>
|
|
||||||
<option <?=$dx230[6]?> value=52500>D+</option>
|
|
||||||
<option <?=$dx230[7]?> value=70000>C-</option>
|
|
||||||
<option <?=$dx230[8]?> value=90000>C</option>
|
|
||||||
<option <?=$dx230[9]?> value=112500>C+</option>
|
|
||||||
<option <?=$dx230[10]?> value=137500>B-</option>
|
|
||||||
<option <?=$dx230[11]?> value=165000>B</option>
|
|
||||||
<option <?=$dx230[12]?> value=195000>B+</option>
|
|
||||||
<option <?=$dx230[13]?> value=227500>A-</option>
|
|
||||||
<option <?=$dx230[14]?> value=262500>A</option>
|
|
||||||
<option <?=$dx230[15]?> value=300000>A+</option>
|
|
||||||
<option <?=$dx230[16]?> value=340000>S</option>
|
|
||||||
<option <?=$dx230[17]?> value=382500>SS</option>
|
|
||||||
<option <?=$dx230[18]?> value=427500>SSS</option>
|
|
||||||
</select>
|
|
||||||
차
|
|
||||||
<select name=dex240 size=1>
|
|
||||||
<option <?=$dx240[0]?> value=0>F</option>
|
|
||||||
<option <?=$dx240[1]?> value=2500>E-</option>
|
|
||||||
<option <?=$dx240[2]?> value=7500>E</option>
|
|
||||||
<option <?=$dx240[3]?> value=15000>E+</option>
|
|
||||||
<option <?=$dx240[4]?> value=25000>D-</option>
|
|
||||||
<option <?=$dx240[5]?> value=37500>D</option>
|
|
||||||
<option <?=$dx240[6]?> value=52500>D+</option>
|
|
||||||
<option <?=$dx240[7]?> value=70000>C-</option>
|
|
||||||
<option <?=$dx240[8]?> value=90000>C</option>
|
|
||||||
<option <?=$dx240[9]?> value=112500>C+</option>
|
|
||||||
<option <?=$dx240[10]?> value=137500>B-</option>
|
|
||||||
<option <?=$dx240[11]?> value=165000>B</option>
|
|
||||||
<option <?=$dx240[12]?> value=195000>B+</option>
|
|
||||||
<option <?=$dx240[13]?> value=227500>A-</option>
|
|
||||||
<option <?=$dx240[14]?> value=262500>A</option>
|
|
||||||
<option <?=$dx240[15]?> value=300000>A+</option>
|
|
||||||
<option <?=$dx240[16]?> value=340000>S</option>
|
|
||||||
<option <?=$dx240[17]?> value=382500>SS</option>
|
|
||||||
<option <?=$dx240[18]?> value=427500>SSS</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td>-</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>-</td>
|
|
||||||
<td>
|
|
||||||
<input type=submit name=isgen value=장수공격>
|
|
||||||
<?='<input type=submit name=isgen value=장수평균>'?>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<input type=submit name=isgen value=성벽공격>
|
|
||||||
<?='<input type=submit name=isgen value=성벽평균>'?>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr><td colspan=3>
|
|
||||||
<?php
|
|
||||||
if($isgen == "장수공격" || $isgen == "성벽공격") {
|
|
||||||
echo $msg;
|
|
||||||
} elseif($isgen == "장수평균" || $isgen == "성벽평균") {
|
|
||||||
echo $msg2;
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr id=bg1>
|
|
||||||
<td align=right></td>
|
|
||||||
<td align=center>공격</td>
|
|
||||||
<td align=center>방어</td>
|
|
||||||
<td align=center>기동</td>
|
|
||||||
<td align=center>회피</td>
|
|
||||||
<td align=center>가격</td>
|
|
||||||
<td align=center>군량</td>
|
|
||||||
<td width=500 align=center>-</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
for($i=0; $i <= 5; $i++) {
|
|
||||||
printSimul($admin, $i);
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
|
||||||
|
|
||||||
for($i=10; $i <= 14; $i++) {
|
|
||||||
printSimul($admin, $i);
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
|
||||||
|
|
||||||
for($i=20; $i <= 27; $i++) {
|
|
||||||
printSimul($admin, $i);
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
|
||||||
|
|
||||||
for($i=30; $i <= 38; $i++) {
|
|
||||||
printSimul($admin, $i);
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
|
||||||
|
|
||||||
for($i=40; $i <= 43; $i++) {
|
|
||||||
printSimul($admin, $i);
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
</form>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<?php
|
|
||||||
|
|
||||||
function printSimul($admin, $i) {
|
|
||||||
$att = $admin["att{$i}"];
|
|
||||||
$def = $admin["def{$i}"];
|
|
||||||
$spd = $admin["spd{$i}"];
|
|
||||||
$avd = $admin["avd{$i}"];
|
|
||||||
$cst = $admin["cst{$i}"];
|
|
||||||
$ric = $admin["ric{$i}"];
|
|
||||||
echo "
|
|
||||||
<tr>
|
|
||||||
<td align=right>".GameUnitConst::byId($i)->name."</td>
|
|
||||||
<td align=center>$att</td>
|
|
||||||
<td align=center>$def</td>
|
|
||||||
<td align=center>$spd</td>
|
|
||||||
<td align=center>$avd</td>
|
|
||||||
<td align=center>$cst</td>
|
|
||||||
<td align=center>$ric</td>
|
|
||||||
<td align=center>-</td>
|
|
||||||
</tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -6,8 +7,6 @@ include "func.php";
|
|||||||
|
|
||||||
$btn = Util::getReq('btn');
|
$btn = Util::getReq('btn');
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
$userID = Session::getUserID();
|
$userID = Session::getUserID();
|
||||||
@@ -16,6 +15,7 @@ $db = DB::db();
|
|||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
increaseRefresh("명장일람", 1);
|
increaseRefresh("명장일람", 1);
|
||||||
|
$templates = new \League\Plates\Engine(__DIR__ . '/templates');
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
@@ -26,31 +26,38 @@ increaseRefresh("명장일람", 1);
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1136" />
|
<meta name="viewport" content="width=1136" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 명장일람</title>
|
<title><?= UniqueConst::$serverName ?>: 명장일람</title>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?= WebUtil::printCSS('css/hallOfFame.css') ?>
|
<?= WebUtil::printCSS('css/hallOfFame.css') ?>
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printDist('ts', 'common') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1100 class='tb_layout bg0'>
|
<table align=center width=1100 class='tb_layout bg0'>
|
||||||
<tr><td>명 장 일 람<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>명 장 일 람<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1100 class='tb_layout bg0'>
|
<table align=center width=1100 class='tb_layout bg0'>
|
||||||
<form name=form1 action=a_bestGeneral.php method=post>
|
<form name=form1 action=a_bestGeneral.php method=post>
|
||||||
<tr><td align=center>
|
<tr>
|
||||||
|
<td align=center>
|
||||||
<input type=submit name=btn value='유저 보기'>
|
<input type=submit name=btn value='유저 보기'>
|
||||||
<input type=submit name=btn value='NPC 보기'>
|
<input type=submit name=btn value='NPC 보기'>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</form>
|
</form>
|
||||||
</table>
|
</table>
|
||||||
<div style="margin:auto;width=1000px;">
|
<div style="margin:auto;width:1100px;">
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
$ownerNameList = [];
|
||||||
|
if ($gameStor->isunited) {
|
||||||
|
foreach (RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]) {
|
||||||
|
$ownerNameList[$ownerID] = $ownerName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$nationName = [0 => '재야'];
|
$nationName = [0 => '재야'];
|
||||||
$nationColor = [0 => '#000000'];
|
$nationColor = [0 => '#000000'];
|
||||||
@@ -60,50 +67,96 @@ foreach (getAllNationStaticInfo() as $nation) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$types = [
|
$types = [
|
||||||
["명 성", "int", function($v){$v['value'] = $v['experience']; return $v; }],
|
["명 성", "int", function ($v) {
|
||||||
["계 급", "int", function($v){$v['value'] = $v['dedication']; return $v; }],
|
$v['value'] = $v['experience'];
|
||||||
["계 략 성 공", "int", function($v){
|
return $v;
|
||||||
|
}],
|
||||||
|
["계 급", "int", function ($v) {
|
||||||
|
$v['value'] = $v['dedication'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["계 략 성 공", "int", function ($v) use ($gameStor) {
|
||||||
$v['value'] = $v['firenum'];
|
$v['value'] = $v['firenum'];
|
||||||
|
if ($gameStor->isunited) {
|
||||||
|
return $v;
|
||||||
|
}
|
||||||
$v['nationName'] = '???';
|
$v['nationName'] = '???';
|
||||||
$v['pictureFullPath'] = GetImageURL(0) . "/default.jpg";
|
$v['pictureFullPath'] = GetImageURL(0) . "/default.jpg";
|
||||||
$v['name'] = '???';
|
$v['name'] = '???';
|
||||||
$v['owner_name'] = null;
|
$v['ownerName'] = null;
|
||||||
$v['bgColor'] = GameConst::$basecolor4;
|
$v['bgColor'] = GameConst::$basecolor4;
|
||||||
$v['fgColor'] = newColor($v['bgColor']);
|
$v['fgColor'] = newColor($v['bgColor']);
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
["전 투 횟 수", "int", function($v){$v['value'] = $v['warnum']; return $v; }],
|
["전 투 횟 수", "int", function ($v) {
|
||||||
["승 리", "int", function($v){$v['value'] = $v['killnum']; return $v; }],
|
$v['value'] = $v['warnum'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["승 리", "int", function ($v) {
|
||||||
|
$v['value'] = $v['killnum'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
["승 률", "percent", function ($v) {
|
["승 률", "percent", function ($v) {
|
||||||
if ($v['warnum'] < 10) {
|
if ($v['warnum'] < 10) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['killnum'] / max(1, $v['warnum']);
|
$v['value'] = $v['killnum'] / max(1, $v['warnum']);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
["사 살", "int", function($v){$v['value'] = $v['killcrew']; return $v; }],
|
["점 령", "int", function ($v) {
|
||||||
|
$v['value'] = $v['occupied'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["사 살", "int", function ($v) {
|
||||||
|
$v['value'] = $v['killcrew'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
["살 상 률", "percent", function ($v) {
|
["살 상 률", "percent", function ($v) {
|
||||||
if ($v['warnum'] < 10) {
|
if ($v['warnum'] < 10) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['killcrew'] / max(1, $v['deathcrew']);
|
$v['value'] = $v['killcrew'] / max(1, $v['deathcrew']);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
["보 병 숙 련 도", "int", function($v){$v['value'] = $v['dex0']; return $v; }],
|
["대 인 사 살", "int", function ($v) {
|
||||||
["궁 병 숙 련 도", "int", function($v){$v['value'] = $v['dex10']; return $v; }],
|
$v['value'] = $v['killcrew_person'];
|
||||||
["기 병 숙 련 도", "int", function($v){$v['value'] = $v['dex20']; return $v; }],
|
return $v;
|
||||||
["귀 병 숙 련 도", "int", function($v){$v['value'] = $v['dex30']; return $v; }],
|
}],
|
||||||
["차 병 숙 련 도", "int", function($v){$v['value'] = $v['dex40']; return $v; }],
|
["대 인 살 상 률", "percent", function ($v) {
|
||||||
|
if ($v['warnum'] < 10) {
|
||||||
|
$v['value'] = 0;
|
||||||
|
} else {
|
||||||
|
$v['value'] = $v['killcrew_person'] / max(1, $v['deathcrew_person']);
|
||||||
|
}
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["보 병 숙 련 도", "int", function ($v) {
|
||||||
|
$v['value'] = $v['dex1'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["궁 병 숙 련 도", "int", function ($v) {
|
||||||
|
$v['value'] = $v['dex2'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["기 병 숙 련 도", "int", function ($v) {
|
||||||
|
$v['value'] = $v['dex3'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["귀 병 숙 련 도", "int", function ($v) {
|
||||||
|
$v['value'] = $v['dex4'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["차 병 숙 련 도", "int", function ($v) {
|
||||||
|
$v['value'] = $v['dex5'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
["전 력 전 승 률", "percent", function ($v) {
|
["전 력 전 승 률", "percent", function ($v) {
|
||||||
$totalCnt = $v['ttw'] + $v['ttd'] + $v['ttl'];
|
$totalCnt = $v['ttw'] + $v['ttd'] + $v['ttl'];
|
||||||
if ($totalCnt < 50) {
|
if ($totalCnt < 50) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['ttw'] / max(1, $totalCnt);
|
$v['value'] = $v['ttw'] / max(1, $totalCnt);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
@@ -112,19 +165,17 @@ $types = [
|
|||||||
$totalCnt = $v['tlw'] + $v['tld'] + $v['tll'];
|
$totalCnt = $v['tlw'] + $v['tld'] + $v['tll'];
|
||||||
if ($totalCnt < 50) {
|
if ($totalCnt < 50) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['tlw'] / max(1, $totalCnt);
|
$v['value'] = $v['tlw'] / max(1, $totalCnt);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
["일 기 토 승 률", "percent", function ($v) {
|
["일 기 토 승 률", "percent", function ($v) {
|
||||||
$totalCnt = $v['tpw']+$v['tpd']+$v['tpl'];
|
$totalCnt = $v['tsw'] + $v['tsd'] + $v['tsl'];
|
||||||
if ($totalCnt < 50) {
|
if ($totalCnt < 50) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
$v['value'] = $v['tsw'] / max(1, $totalCnt);
|
||||||
$v['value'] = $v['tpw']/max(1, $totalCnt);
|
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
@@ -132,28 +183,44 @@ $types = [
|
|||||||
$totalCnt = $v['tiw'] + $v['tid'] + $v['til'];
|
$totalCnt = $v['tiw'] + $v['tid'] + $v['til'];
|
||||||
if ($totalCnt < 50) {
|
if ($totalCnt < 50) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['tiw'] / max(1, $totalCnt);
|
$v['value'] = $v['tiw'] / max(1, $totalCnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
["베 팅 투 자 액", "int", function($v){$v['value'] = $v['betgold']; return $v; }],
|
["베 팅 투 자 액", "int", function ($v) {
|
||||||
["베 팅 당 첨", "int", function($v){$v['value'] = $v['betwin']; return $v; }],
|
$v['value'] = $v['betgold'];
|
||||||
["베 팅 수 익 금", "int", function($v){$v['value'] = $v['betwingold']; return $v; }],
|
return $v;
|
||||||
|
}],
|
||||||
|
["베 팅 당 첨", "int", function ($v) {
|
||||||
|
$v['value'] = $v['betwin'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["베 팅 수 익 금", "int", function ($v) {
|
||||||
|
$v['value'] = $v['betwingold'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
["베 팅 수 익 률", "percent", function ($v) {
|
["베 팅 수 익 률", "percent", function ($v) {
|
||||||
if($v['betgold'] < 1000){
|
if ($v['betgold'] < GameConst::$defaultGold) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['betwingold'] / max(1, $v['betgold']);
|
$v['value'] = $v['betwingold'] / max(1, $v['betgold']);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
];
|
];
|
||||||
|
|
||||||
$generals = array_map(function($general) use($nationColor, $nationName) {
|
$generals = [];
|
||||||
|
foreach ($db->query(
|
||||||
|
"SELECT nation,no,name,owner_name as ownerName, owner, picture, imgsvr,
|
||||||
|
experience, dedication,
|
||||||
|
dex1, dex2, dex3, dex4, dex5,
|
||||||
|
horse, weapon, book, item
|
||||||
|
FROM general WHERE %l",
|
||||||
|
$btn == "NPC 보기" ? "npc>=2" : "npc<2"
|
||||||
|
) as $general) {
|
||||||
|
$generalID = $general['no'];
|
||||||
$general['bgColor'] = $nationColor[$general['nation']] ?? GameConst::$basecolor4;
|
$general['bgColor'] = $nationColor[$general['nation']] ?? GameConst::$basecolor4;
|
||||||
$general['fgColor'] = newColor($general['bgColor']);
|
$general['fgColor'] = newColor($general['bgColor']);
|
||||||
$general['nationName'] = $nationName[$general['nation']];
|
$general['nationName'] = $nationName[$general['nation']];
|
||||||
@@ -161,27 +228,26 @@ $generals = array_map(function($general) use($nationColor, $nationName) {
|
|||||||
if (key_exists('picture', $general)) {
|
if (key_exists('picture', $general)) {
|
||||||
$imageTemp = GetImageURL($general['imgsvr']);
|
$imageTemp = GetImageURL($general['imgsvr']);
|
||||||
$general['pictureFullPath'] = "$imageTemp/{$general['picture']}";
|
$general['pictureFullPath'] = "$imageTemp/{$general['picture']}";
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$general['pictureFullPath'] = GetImageURL(0) . "/default.jpg";
|
$general['pictureFullPath'] = GetImageURL(0) . "/default.jpg";
|
||||||
}
|
}
|
||||||
|
|
||||||
return $general;
|
$generals[$generalID] = $general;
|
||||||
}, $db->query(
|
}
|
||||||
"SELECT nation,no,name,name2 as owner_name, picture, imgsvr,
|
|
||||||
experience, dedication, firenum, warnum, killnum, killcrew, deathcrew,
|
|
||||||
dex0, dex10, dex20, dex30, dex40,
|
|
||||||
ttw, ttd, ttl, tlw, tld, tll, tpw, tpd, tpl, tiw, tid, til,
|
|
||||||
betgold, betwin, betwingold,
|
|
||||||
horse, weap, book, item
|
|
||||||
FROM general WHERE %l", $btn == "NPC 보기"?"npc>=2":"npc<2"));
|
|
||||||
|
|
||||||
|
foreach ($db->queryAllLists('SELECT general_id, `type`, `value` FROM rank_data') as [$generalID, $typeKey, $value]) {
|
||||||
|
if (!key_exists($generalID, $generals)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$generals[$generalID][$typeKey] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
$templates = new \League\Plates\Engine('templates');
|
$templates = new \League\Plates\Engine('templates');
|
||||||
|
|
||||||
foreach ($types as $idx => [$typeName, $typeValue, $typeFunc]) {
|
foreach ($types as $idx => [$typeName, $typeValue, $typeFunc]) {
|
||||||
$validCnt = 0;
|
$validCnt = 0;
|
||||||
$typeGenerals = array_map(function($general) use($typeValue, $typeFunc, &$validCnt){
|
$typeGenerals = array_map(function ($general) use ($typeValue, $typeFunc, &$validCnt, $ownerNameList) {
|
||||||
|
$general['ownerName'] = $ownerNameList[$general['owner']] ?? null;
|
||||||
$general = ($typeFunc)($general);
|
$general = ($typeFunc)($general);
|
||||||
$value = $general['value'];
|
$value = $general['value'];
|
||||||
|
|
||||||
@@ -191,8 +257,7 @@ foreach($types as $idx=>[$typeName, $typeValue, $typeFunc]){
|
|||||||
|
|
||||||
if ($typeValue == 'percent') {
|
if ($typeValue == 'percent') {
|
||||||
$general['printValue'] = number_format($value * 100, 2) . '%';
|
$general['printValue'] = number_format($value * 100, 2) . '%';
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$general['printValue'] = number_format($value);
|
$general['printValue'] = number_format($value);
|
||||||
}
|
}
|
||||||
return $general;
|
return $general;
|
||||||
@@ -211,50 +276,91 @@ foreach($types as $idx=>[$typeName, $typeValue, $typeFunc]){
|
|||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin:auto;width=1000px;margin-top:5px;">
|
<div style="margin:auto;width:1100px;margin-top:5px;">
|
||||||
<?php
|
<?php
|
||||||
//유니크 아이템 소유자
|
//유니크 아이템 소유자
|
||||||
$itemTypes = [
|
$itemTypes = [
|
||||||
["명 마", 'horse', function($v){return getHorseName($v);}, 7, 26, []],
|
'horse' => '명 마',
|
||||||
["명 검", 'weap', function($v){return getWeapName($v);}, 7, 26, []],
|
'weapon' => '명 검',
|
||||||
["명 서", 'book', function($v){return getBookName($v);}, 7, 26, []],
|
'book' => '명 서',
|
||||||
["도 구", 'item', function($v){return displayItemInfo($v);}, 7, 26, []],
|
'item' => '도 구'
|
||||||
];
|
];
|
||||||
|
|
||||||
$simpleItemTypes = array_map(function($itemType){return $itemType[1];}, $itemTypes);
|
$simpleItemTypes = array_keys($itemTypes);
|
||||||
|
array_map(function ($itemType) {
|
||||||
|
return $itemType[1];
|
||||||
|
}, $itemTypes);
|
||||||
|
$itemOwners = [];
|
||||||
|
|
||||||
foreach ($generals as $general) {
|
foreach ($generals as $general) {
|
||||||
foreach($itemTypes as $itemIdx=>[,$itemType, $itemFunc,,,]){
|
foreach ($itemTypes as $itemType => $itemTypeName) {
|
||||||
$itemCode = $general[$itemType];
|
$itemClassName = $general[$itemType];
|
||||||
if($itemCode <= 6){
|
$itemClass = buildItemClass($itemClassName);
|
||||||
|
if ($itemClass->isBuyable()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$itemName = ($itemFunc)($itemCode);
|
if (key_exists($itemClassName, $itemOwners)) {
|
||||||
$general['rankName'] = $itemName;
|
$itemOwners[$itemClassName][] = $general;
|
||||||
$general['value'] = $itemCode;
|
} else {
|
||||||
$itemTypes[$itemIdx][5][$itemCode] = $general;
|
$itemOwners[$itemClassName] = [$general];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($itemTypes as [$itemNameType, $itemType, $itemFunc, $itemMinCode, $itemMaxCode, $itemOwners]){
|
foreach (GameConst::$allItems as $itemType => $itemList) {
|
||||||
|
$itemNameType = $itemTypes[$itemType];
|
||||||
|
$itemList = array_reverse($itemList, true);
|
||||||
|
|
||||||
|
|
||||||
$itemRanker = [];
|
$itemRanker = [];
|
||||||
for($itemCode = $itemMaxCode; $itemCode >= $itemMinCode; $itemCode--){
|
foreach ($itemList as $itemClassName => $itemCnt) {
|
||||||
if(!key_exists($itemCode, $itemOwners)){
|
if ($itemCnt == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$itemClass = buildItemClass($itemClassName);
|
||||||
|
|
||||||
|
if ($itemClass->isBuyable()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$info = $itemClass->getInfo();
|
||||||
|
$name = $itemClass->getName();
|
||||||
|
|
||||||
|
|
||||||
|
if ($info) {
|
||||||
|
$name = $templates->render('tooltip', [
|
||||||
|
'text' => $name,
|
||||||
|
'info' => $info,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
foreach (Util::range($itemCnt) as $itemIdx) {
|
||||||
|
if (($itemOwners[$itemClassName][$itemIdx] ?? null) === null) {
|
||||||
$emptyCard = [
|
$emptyCard = [
|
||||||
'rankName' => ($itemFunc)($itemCode),
|
'rankName' => $name,
|
||||||
'pictureFullPath' => GetImageURL(0) . "/default.jpg",
|
'pictureFullPath' => GetImageURL(0) . "/default.jpg",
|
||||||
'value'=>$itemCode,
|
'value' => $itemClassName,
|
||||||
'name' => '미발견',
|
'name' => '미발견',
|
||||||
'bgColor' => GameConst::$basecolor4,
|
'bgColor' => GameConst::$basecolor4,
|
||||||
'fgColor' => newColor(GameConst::$basecolor4),
|
'fgColor' => newColor(GameConst::$basecolor4),
|
||||||
];
|
];
|
||||||
$itemRanker[$itemCode] = $emptyCard;
|
$itemRanker[] = $emptyCard;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$general = $itemOwners[$itemCode];
|
$general = $itemOwners[$itemClassName][$itemIdx];
|
||||||
$itemRanker[$itemCode] = $general;
|
|
||||||
|
$card = [
|
||||||
|
'rankName' => $name,
|
||||||
|
'pictureFullPath' => $general['pictureFullPath'],
|
||||||
|
'value' => $itemClassName,
|
||||||
|
'nationName' => $general['nationName'],
|
||||||
|
'name' => $general['name'],
|
||||||
|
'bgColor' => $general['bgColor'],
|
||||||
|
'fgColor' => $general['fgColor'],
|
||||||
|
];
|
||||||
|
$itemRanker[] = $card;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo $templates->render('hallOfFrame', [
|
echo $templates->render('hallOfFrame', [
|
||||||
@@ -265,9 +371,13 @@ foreach($itemTypes as [$itemNameType, $itemType, $itemFunc, $itemMinCode, $itemM
|
|||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
<table align=center width=1100 class='tb_layout bg0'>
|
<table align=center width=1100 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -16,16 +17,20 @@ increaseRefresh("왕조일람", 1);
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 왕조일람</title>
|
<title><?= UniqueConst::$serverName ?>: 왕조일람</title>
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', 'common') ?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class="tb_layout bg0">
|
<table align=center width=1000 class="tb_layout bg0">
|
||||||
<tr><td>역 대 왕 조<br>
|
<tr>
|
||||||
|
<td>역 대 왕 조<br>
|
||||||
<button onclick=window.close()>창 닫기</button><br>
|
<button onclick=window.close()>창 닫기</button><br>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
@@ -50,10 +55,7 @@ if ($showCurrentNation) {
|
|||||||
<tr>
|
<tr>
|
||||||
<td style="background-color:#333333;" align=center colspan=8>
|
<td style="background-color:#333333;" align=center colspan=8>
|
||||||
<font size=5>현재 (<?= $year ?>年 <?= $month ?>月)</font>
|
<font size=5>현재 (<?= $year ?>年 <?= $month ?>月)</font>
|
||||||
|
<a href="a_history.php"><button type='button'>역사 보기</button></a>
|
||||||
<a href="a_emperior_detail.php"><button>자세히</button></a>
|
|
||||||
|
|
||||||
<a href="a_history.php"><button>역사 보기</button></a>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -70,38 +72,48 @@ foreach($emperiors as $emperior){
|
|||||||
<td bgcolor=skyblue align=center colspan=8>
|
<td bgcolor=skyblue align=center colspan=8>
|
||||||
<font size=5><?= $emperior['phase'] ?></font>
|
<font size=5><?= $emperior['phase'] ?></font>
|
||||||
|
|
||||||
<a href="a_emperior_detail.php?select=<?=$emperior['no']?>"><button>자세히</button></a>
|
<a href="a_emperior_detail.php?select=<?= $emperior['no'] ?>"><button type='button'>자세히</button></a>
|
||||||
|
|
||||||
<?php if ($emperior['server_id']) : ?>
|
<?php if ($emperior['server_id']) : ?>
|
||||||
<a href="a_history.php?serverID=<?=$emperior['server_id']?>"><button>역사 보기</button></a>
|
<a href="a_history.php?serverID=<?= $emperior['server_id'] ?>"><button type='button'>역사 보기</button></a>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center style=color:".newColor($emperior['color'])."; bgcolor=<?=$emperior['color']?> colspan=8>
|
<td align=center style='color:<?= newColor($emperior['color']) ?>;background-color:<?= $emperior['color'] ?>' colspan=8>
|
||||||
<font size=5><?= $emperior['name'] ?> (<?= $emperior['year'] ?>年 <?= $emperior['month'] ?>月)</font>
|
<font size=5><?= $emperior['name'] ?> (<?= $emperior['year'] ?>年 <?= $emperior['month'] ?>月)</font>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center width=80>국 력</td>
|
<td class='bg1' align=center width=80>국 력</td>
|
||||||
<td align=center width=170><?= $emperior['power'] ?></td>
|
<td align=center width=170><?= $emperior['power'] ?></td>
|
||||||
<td id=bg1 align=center width=80>장 수</td>
|
<td class='bg1' align=center width=80>장 수</td>
|
||||||
<td align=center width=170><?= $emperior['gennum'] ?></td>
|
<td align=center width=170><?= $emperior['gennum'] ?></td>
|
||||||
<td id=bg1 align=center width=80>속 령</td>
|
<td class='bg1' align=center width=80>속 령</td>
|
||||||
<td align=center width=170><?= $emperior['citynum'] ?></td>
|
<td align=center width=170><?= $emperior['citynum'] ?></td>
|
||||||
<td id=bg1 align=center width=80>성 향</td>
|
<td class='bg1' align=center width=80>성 향</td>
|
||||||
<td align=center width=170><?= $emperior['type'] ?></td>
|
<td align=center width=170><?= $emperior['type'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>황 제</td>
|
<td class='bg1' align=center>황 제</td>
|
||||||
<td align=center><?= $emperior['l12name'] ?></td>
|
<td align=center><?= $emperior['l12name'] ?></td>
|
||||||
<td id=bg1 align=center>승 상</td>
|
<td class='bg1' align=center>승 상</td>
|
||||||
<td align=center><?= $emperior['l11name'] ?></td>
|
<td align=center><?= $emperior['l11name'] ?></td>
|
||||||
<td id=bg1 align=center>위 장 군</td>
|
<td class='bg1' align=center>표 기 장 군</td>
|
||||||
<td align=center><?= $emperior['l10name'] ?></td>
|
<td align=center><?= $emperior['l10name'] ?></td>
|
||||||
<td id=bg1 align=center>사 공</td>
|
<td class='bg1' align=center>사 공</td>
|
||||||
<td align=center><?= $emperior['l9name'] ?></td>
|
<td align=center><?= $emperior['l9name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class='bg1' align=center>거 기 장 군</td>
|
||||||
|
<td align=center><?= $emperior['l8name'] ?></td>
|
||||||
|
<td class='bg1' align=center>태 위</td>
|
||||||
|
<td align=center><?= $emperior['l7name'] ?></td>
|
||||||
|
<td class='bg1' align=center>위 장 군</td>
|
||||||
|
<td align=center><?= $emperior['l6name'] ?></td>
|
||||||
|
<td class='bg1' align=center>사 도</td>
|
||||||
|
<td align=center><?= $emperior['l5name'] ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
@@ -111,8 +123,13 @@ foreach($emperiors as $emperior){
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<table style="margin-top:10px;" align=center width=1000 class='tb_layout bg0'>
|
<table style="margin-top:10px;" align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,209 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace sammo;
|
|
||||||
|
|
||||||
include "lib.php";
|
|
||||||
include "func.php";
|
|
||||||
|
|
||||||
$select = Util::getReq('select', 'int', 0);
|
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
$db = DB::db();
|
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
increaseRefresh("왕조일람", 2);
|
|
||||||
?>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<title><?=UniqueConst::$serverName?>: 왕조일람</title>
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr><td>역 대 왕 조<br>
|
|
||||||
<input type=button value='창 닫기' onclick=window.close()><br>
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
|
|
||||||
if ($select == 0) {
|
|
||||||
$query = "select * from emperior_table order by no desc";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$empcount = MYDB_num_rows($result);
|
|
||||||
|
|
||||||
for ($i=0; $i < $empcount; $i++) {
|
|
||||||
$emperior = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
echo "
|
|
||||||
<form action=a_emperior2.php method=post>
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor=skyblue align=center colspan=8>
|
|
||||||
<font size=5>{$emperior['phase']}</font>
|
|
||||||
<input type=submit value='자세히'>
|
|
||||||
<input type=hidden name=select value='{$emperior['no']}'>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align=center style=color:".newColor($emperior['color'])."; bgcolor={$emperior['color']} colspan=8>
|
|
||||||
<font size=5>{$emperior['name']} ({$emperior['year']}年 {$emperior['month']}月)</font>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center width=80>국 력</td>
|
|
||||||
<td align=center width=170>{$emperior['power']}</td>
|
|
||||||
<td id=bg1 align=center width=80>장 수</td>
|
|
||||||
<td align=center width=170>{$emperior['gennum']}</td>
|
|
||||||
<td id=bg1 align=center width=80>속 령</td>
|
|
||||||
<td align=center width=170>{$emperior['citynum']}</td>
|
|
||||||
<td id=bg1 align=center width=80>성 향</td>
|
|
||||||
<td align=center width=170>{$emperior['type']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>황 제</td>
|
|
||||||
<td align=center>{$emperior['l12name']}</td>
|
|
||||||
<td id=bg1 align=center>승 상</td>
|
|
||||||
<td align=center>{$emperior['l11name']}</td>
|
|
||||||
<td id=bg1 align=center>위 장 군</td>
|
|
||||||
<td align=center>{$emperior['l10name']}</td>
|
|
||||||
<td id=bg1 align=center>사 공</td>
|
|
||||||
<td align=center>{$emperior['l9name']}</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</form>";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$query = "select * from emperior_table where no='$select'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$emperior = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
echo "
|
|
||||||
<form action=a_emperior2.php method=post>
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor=skyblue align=center colspan=6>
|
|
||||||
<font size=5>{$emperior['phase']}</font>
|
|
||||||
<input type=submit value='전체보기'>
|
|
||||||
<input type=hidden name=select value='0'>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 width=98 align=center>국 가 수<br>(최종 / 최대)</td>
|
|
||||||
<td align=center width=398 colspan=2>{$emperior['nation_count']}</td>
|
|
||||||
<td id=bg1 width=98 align=center>장 수 수<br>(최종 / 최대)</td>
|
|
||||||
<td align=center width=398 colspan=2>{$emperior['gen_count']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>등 장 국 가</td>
|
|
||||||
<td colspan=5>{$emperior['nation_name']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>국가별 성향</td>
|
|
||||||
<td colspan=5>{$emperior['nation_hist']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>장 수 성 격</td>
|
|
||||||
<td colspan=5>{$emperior['personal_hist']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>장 수 특 기</td>
|
|
||||||
<td colspan=5>{$emperior['special_hist']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align=center style=color:".newColor($emperior['color'])."; bgcolor={$emperior['color']} colspan=6>
|
|
||||||
<font size=5>{$emperior['name']} ({$emperior['year']}年 {$emperior['month']}月)</font>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 width=98 align=center>국 력</td>
|
|
||||||
<td align=center width=398 colspan=2>{$emperior['power']}</td>
|
|
||||||
<td id=bg1 width=98 align=center>성 향</td>
|
|
||||||
<td align=center width=398 colspan=2>{$emperior['type']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 width=98 align=center>장 수</td>
|
|
||||||
<td align=center width=398 colspan=2>{$emperior['gennum']}</td>
|
|
||||||
<td id=bg1 width=98 align=center>속 령</td>
|
|
||||||
<td align=center width=398 colspan=2>{$emperior['citynum']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>총 인 구</td>
|
|
||||||
<td align=center colspan=2>{$emperior['pop']}</td>
|
|
||||||
<td id=bg1 align=center>인 구 율</td>
|
|
||||||
<td align=center colspan=2>{$emperior['poprate']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>국 고</td>
|
|
||||||
<td align=center colspan=2>{$emperior['gold']}</td>
|
|
||||||
<td id=bg1 align=center>병 량</td>
|
|
||||||
<td align=center colspan=2>{$emperior['rice']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>황 제</td>
|
|
||||||
<td width=64> </td>
|
|
||||||
<td width=332>{$emperior['l12name']}</td>
|
|
||||||
<td id=bg1 align=center>승 상</td>
|
|
||||||
<td width=64> </td>
|
|
||||||
<td width=332>{$emperior['l11name']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>위 장 군</td>
|
|
||||||
<td width=64> </td>
|
|
||||||
<td width=332>{$emperior['l10name']}</td>
|
|
||||||
<td id=bg1 align=center>사 공</td>
|
|
||||||
<td width=64> </td>
|
|
||||||
<td width=332>{$emperior['l9name']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>표 기 장 군</td>
|
|
||||||
<td width=64> </td>
|
|
||||||
<td width=332>{$emperior['l8name']}</td>
|
|
||||||
<td id=bg1 align=center>태 위</td>
|
|
||||||
<td width=64> </td>
|
|
||||||
<td width=332>{$emperior['l7name']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>거 기 장 군</td>
|
|
||||||
<td width=64> </td>
|
|
||||||
<td width=332>{$emperior['l6name']}</td>
|
|
||||||
<td id=bg1 align=center>사 도</td>
|
|
||||||
<td width=64> </td>
|
|
||||||
<td width=332>{$emperior['l5name']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>오 호 장 군</td>
|
|
||||||
<td colspan=5>{$emperior['tiger']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>건 안 칠 자</td>
|
|
||||||
<td colspan=5>{$emperior['eagle']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>장 수 들<br>(공헌도 순서)</td>
|
|
||||||
<td colspan=5>{$emperior['gen']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 align=center>역 사 기 록</td>
|
|
||||||
<td colspan=5>".ConvertLog($emperior['history'], 1)."</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</form>";
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
|
||||||
<tr><td><?=banner()?></td></tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -27,16 +28,20 @@ $serverID = $emperior['server_id']??($emperior['serverID']??null);
|
|||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 왕조일람</title>
|
<title><?= UniqueConst::$serverName ?>: 왕조일람</title>
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class="tb_layout bg0">
|
<table align=center width=1000 class="tb_layout bg0">
|
||||||
<tr><td><?=$emperior?'역 대 왕 조':'현 재 왕 조'?><br>
|
<tr>
|
||||||
|
<td>역 대 왕 조<br>
|
||||||
<button onclick=window.close()>창 닫기</button>
|
<button onclick=window.close()>창 닫기</button>
|
||||||
<div style="float:right;"><a href="a_emperior.php"><button>전체보기</button></a><div>
|
<div style="float:right;"><a href="a_emperior.php"><button type='button'>전체보기</button></a>
|
||||||
</td></tr>
|
<div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@@ -53,25 +58,25 @@ if($emperior):
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 width=98 align=center>국 가 수<br>(최종 / 최대)</td>
|
<td class='bg1' width=98 align=center>국 가 수<br>(최종 / 최대)</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['nation_count'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['nation_count'] ?></td>
|
||||||
<td id=bg1 width=98 align=center>장 수 수<br>(최종 / 최대)</td>
|
<td class='bg1' width=98 align=center>장 수 수<br>(최종 / 최대)</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['gen_count'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['gen_count'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>등 장 국 가</td>
|
<td class='bg1' align=center>등 장 국 가</td>
|
||||||
<td colspan=5><?= $emperior['nation_name'] ?></td>
|
<td colspan=5><?= $emperior['nation_name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>국가별 성향</td>
|
<td class='bg1' align=center>국가별 성향</td>
|
||||||
<td colspan=5><?= $emperior['nation_hist'] ?></td>
|
<td colspan=5><?= $emperior['nation_hist'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>장 수 성 격</td>
|
<td class='bg1' align=center>장 수 성 격</td>
|
||||||
<td colspan=5><?= $emperior['personal_hist'] ?></td>
|
<td colspan=5><?= $emperior['personal_hist'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>장 수 특 기</td>
|
<td class='bg1' align=center>장 수 특 기</td>
|
||||||
<td colspan=5><?= $emperior['special_hist'] ?></td>
|
<td colspan=5><?= $emperior['special_hist'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -80,83 +85,83 @@ if($emperior):
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 width=98 align=center>국 력</td>
|
<td class='bg1' width=98 align=center>국 력</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['power'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['power'] ?></td>
|
||||||
<td id=bg1 width=98 align=center>성 향</td>
|
<td class='bg1' width=98 align=center>성 향</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['type'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['type'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 width=98 align=center>장 수</td>
|
<td class='bg1' width=98 align=center>장 수</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['gennum'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['gennum'] ?></td>
|
||||||
<td id=bg1 width=98 align=center>속 령</td>
|
<td class='bg1' width=98 align=center>속 령</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['citynum'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['citynum'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>총 인 구</td>
|
<td class='bg1' align=center>총 인 구</td>
|
||||||
<td align=center colspan=2><?= $emperior['pop'] ?></td>
|
<td align=center colspan=2><?= $emperior['pop'] ?></td>
|
||||||
<td id=bg1 align=center>인 구 율</td>
|
<td class='bg1' align=center>인 구 율</td>
|
||||||
<td align=center colspan=2><?= $emperior['poprate'] ?></td>
|
<td align=center colspan=2><?= $emperior['poprate'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>국 고</td>
|
<td class='bg1' align=center>국 고</td>
|
||||||
<td align=center colspan=2><?= $emperior['gold'] ?></td>
|
<td align=center colspan=2><?= $emperior['gold'] ?></td>
|
||||||
<td id=bg1 align=center>병 량</td>
|
<td class='bg1' align=center>병 량</td>
|
||||||
<td align=center colspan=2><?= $emperior['rice'] ?></td>
|
<td align=center colspan=2><?= $emperior['rice'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>황 제</td>
|
<td class='bg1' align=center>황 제</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l12name'] ?></td>
|
<td width=332><?= $emperior['l12name'] ?></td>
|
||||||
<td id=bg1 align=center>승 상</td>
|
<td class='bg1' align=center>승 상</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l11name'] ?></td>
|
<td width=332><?= $emperior['l11name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>위 장 군</td>
|
<td class='bg1' align=center>위 장 군</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l10name'] ?></td>
|
<td width=332><?= $emperior['l10name'] ?></td>
|
||||||
<td id=bg1 align=center>사 공</td>
|
<td class='bg1' align=center>사 공</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l9name'] ?></td>
|
<td width=332><?= $emperior['l9name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>표 기 장 군</td>
|
<td class='bg1' align=center>표 기 장 군</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l8name'] ?></td>
|
<td width=332><?= $emperior['l8name'] ?></td>
|
||||||
<td id=bg1 align=center>태 위</td>
|
<td class='bg1' align=center>태 위</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l7name'] ?></td>
|
<td width=332><?= $emperior['l7name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>거 기 장 군</td>
|
<td class='bg1' align=center>거 기 장 군</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l6name'] ?></td>
|
<td width=332><?= $emperior['l6name'] ?></td>
|
||||||
<td id=bg1 align=center>사 도</td>
|
<td class='bg1' align=center>사 도</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l5name'] ?></td>
|
<td width=332><?= $emperior['l5name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>오 호 장 군</td>
|
<td class='bg1' align=center>오 호 장 군</td>
|
||||||
<td colspan=5><?= $emperior['tiger'] ?></td>
|
<td colspan=5><?= $emperior['tiger'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>건 안 칠 자</td>
|
<td class='bg1' align=center>건 안 칠 자</td>
|
||||||
<td colspan=5><?= $emperior['eagle'] ?></td>
|
<td colspan=5><?= $emperior['eagle'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>장 수 들<br>(공헌도 순서)</td>
|
<td class='bg1' align=center>장 수 들<br>(공헌도 순서)</td>
|
||||||
<td colspan=5><?= $emperior['gen'] ?></td>
|
<td colspan=5><?= $emperior['gen'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>역 사 기 록</td>
|
<td class='bg1' align=center>역 사 기 록</td>
|
||||||
<td colspan=5><?=ConvertLog($emperior['history'], 1)?></td>
|
<td colspan=5><?= formatHistoryToHTML(Json::decode($emperior['history'])) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
$showServers = $serverID || (!$emperior);
|
$showServers = $emperior;
|
||||||
|
|
||||||
if (!$serverID) {
|
if (!$serverID) {
|
||||||
$serverID = UniqueConst::$serverID;
|
$serverID = UniqueConst::$serverID;
|
||||||
@@ -172,24 +177,25 @@ if($showServers){
|
|||||||
|
|
||||||
$nation['typeName'] = getNationType($nation['type']);
|
$nation['typeName'] = getNationType($nation['type']);
|
||||||
$nation['levelName'] = getNationLevel($nation['level']);
|
$nation['levelName'] = getNationLevel($nation['level']);
|
||||||
if($nation['generals']){
|
/** @var int[]|null $nationGenerals */
|
||||||
$generals = $db->query('SELECT `general_no`, `name`, `last_yearmonth` FROM ng_old_generals WHERE server_id=%s AND general_no IN %li', $serverID, $nation['generals']);
|
$nationGenerals = $nation['generals'];
|
||||||
|
|
||||||
if(count($generals) != $nation['generals'] && $serverID == UniqueConst::$serverID){
|
if ($nationGenerals) {
|
||||||
$liveGenerals = $nation['generals'];
|
$generals = $db->query('SELECT `general_no`, `name`, `last_yearmonth` FROM ng_old_generals WHERE server_id=%s AND general_no IN %li', $serverID, $nationGenerals);
|
||||||
|
|
||||||
|
if (count($generals) != count($nationGenerals) && $serverID == UniqueConst::$serverID) {
|
||||||
|
$liveGenerals = $nationGenerals;
|
||||||
foreach ($generals as $general) {
|
foreach ($generals as $general) {
|
||||||
if(in_array($general['general_no'], $nation['generals'])){
|
if (in_array($general['general_no'], $nationGenerals)) {
|
||||||
unset($nation['generals'][$general['general_no']]);
|
unset($nationGenerals[$general['general_no']]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$liveGenerals = $db->query('SELECT `no`as`general_no`, `name` FROM general WHERE no IN %li', $liveGenerals);
|
$liveGenerals = $db->query('SELECT `no`as`general_no`, `name` FROM general WHERE no IN %li', $liveGenerals);
|
||||||
$nation['generalsFull'] = array_merge($liveGenerals, $generals);
|
$nation['generalsFull'] = array_merge($liveGenerals, $generals);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$nation['generalsFull'] = $generals;
|
$nation['generalsFull'] = $generals;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$nation['generalsFull'] = [];
|
$nation['generalsFull'] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,8 +209,13 @@ if($showServers){
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -6,21 +7,16 @@ include "func.php";
|
|||||||
|
|
||||||
$type = Util::getReq('type', 'int', 9);
|
$type = Util::getReq('type', 'int', 9);
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
$userID = Session::getUserID();
|
$userID = Session::getUserID();
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
increaseRefresh("장수일람", 2);
|
increaseRefresh("장수일람", 2);
|
||||||
|
|
||||||
$query = "select con,turntime from general where owner='{$userID}'";
|
$me = $db->queryFirstRow('SELECT con,turntime FROM general WHERE owner = %i', $userID);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
$con = checkLimit($me['con']);
|
||||||
if ($con >= 2) {
|
if ($con >= 2) {
|
||||||
@@ -32,6 +28,13 @@ if ($type <= 0 || $type > 15) {
|
|||||||
$type = 9;
|
$type = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$ownerNameList = [];
|
||||||
|
if ($gameStor->isunited) {
|
||||||
|
foreach (RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]) {
|
||||||
|
$ownerNameList[$ownerID] = $ownerName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
@@ -41,20 +44,21 @@ if ($type <= 0 || $type > 15) {
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 장수일람</title>
|
<title><?= UniqueConst::$serverName ?>: 장수일람</title>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
<?= WebUtil::printDist('ts', 'common') ?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>장 수 일 람<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><form name=form1 method=post>정렬순서 :
|
<td>장 수 일 람<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<form name=form1 method=post>정렬순서 :
|
||||||
<select id='viewType' name='type' size=1>
|
<select id='viewType' name='type' size=1>
|
||||||
<option value=1>국가</option>
|
<option value=1>국가</option>
|
||||||
<option value=2>통솔</option>
|
<option value=2>통솔</option>
|
||||||
@@ -72,8 +76,10 @@ if ($type <= 0 || $type > 15) {
|
|||||||
<option value=14>연령</option>
|
<option value=14>연령</option>
|
||||||
<option value=15>NPC</option>
|
<option value=15>NPC</option>
|
||||||
</select>
|
</select>
|
||||||
<input type=submit value='정렬하기'></form>
|
<input type=submit value='정렬하기'>
|
||||||
</td></tr>
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<?php
|
<?php
|
||||||
$nationname = [];
|
$nationname = [];
|
||||||
@@ -84,103 +90,103 @@ foreach (getAllNationStaticInfo() as $nation) {
|
|||||||
$nationlevel[$nation['nation']] = $nation['level'];
|
$nationlevel[$nation['nation']] = $nation['level'];
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($type) { //FIXME: $query 처리 조심.
|
|
||||||
case 1: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by nation"; break;
|
[$orderKey, $orderDesc] = [
|
||||||
case 2: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by leader desc"; break;
|
1 => ['nation', false],
|
||||||
case 3: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by power desc"; break;
|
2 => ['leadership', true],
|
||||||
case 4: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by intel desc"; break;
|
3 => ['strength', true],
|
||||||
case 5: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by experience desc"; break;
|
4 => ['intel', true],
|
||||||
case 6: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by dedication desc"; break;
|
5 => ['experience', true],
|
||||||
case 7: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by level desc"; break;
|
6 => ['dedication', true],
|
||||||
case 8: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by killturn"; break;
|
7 => ['officer_level', true],
|
||||||
default:
|
8 => ['killturn', false],
|
||||||
case 9: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by connect desc"; break;
|
9 => ['connect', true],
|
||||||
case 10: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by experience desc"; break;
|
10 => ['experience', true],
|
||||||
case 11: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by personal"; break;
|
11 => ['personal', true],
|
||||||
case 12: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by special desc"; break;
|
12 => ['special', true],
|
||||||
case 13: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by special2 desc"; break;
|
13 => ['special2', true],
|
||||||
case 14: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by age desc"; break;
|
14 => ['age', true],
|
||||||
case 15: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by npc desc"; break;
|
15 => ['npc', true],
|
||||||
}
|
][$type];
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$gencount = MYDB_num_rows($genresult);
|
$generalList = $db->query('SELECT owner,no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leadership,strength,intel,experience,dedication,officer_level,killturn,connect from general order by %b %l', $orderKey, $orderDesc ? 'desc' : '');
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=64 align=center id=bg1>얼 굴</td>
|
<td width=64 align=center class='bg1'>얼 굴</td>
|
||||||
<td width=140 align=center id=bg1>이 름</td>
|
<td width=140 align=center class='bg1'>이 름</td>
|
||||||
<td width=45 align=center id=bg1>연령</td>
|
<td width=45 align=center class='bg1'>연령</td>
|
||||||
<td width=45 align=center id=bg1>성격</td>
|
<td width=45 align=center class='bg1'>성격</td>
|
||||||
<td width=80 align=center id=bg1>특기</td>
|
<td width=80 align=center class='bg1'>특기</td>
|
||||||
<td width=45 align=center id=bg1>레 벨</td>
|
<td width=45 align=center class='bg1'>레 벨</td>
|
||||||
<td width=140 align=center id=bg1>국 가</td>
|
<td width=140 align=center class='bg1'>국 가</td>
|
||||||
<td width=55 align=center id=bg1>명 성</td>
|
<td width=55 align=center class='bg1'>명 성</td>
|
||||||
<td width=55 align=center id=bg1>계 급</td>
|
<td width=55 align=center class='bg1'>계 급</td>
|
||||||
<td width=75 align=center id=bg1>관 직</td>
|
<td width=75 align=center class='bg1'>관 직</td>
|
||||||
<td width=45 align=center id=bg1>통솔</td>
|
<td width=45 align=center class='bg1'>통솔</td>
|
||||||
<td width=45 align=center id=bg1>무력</td>
|
<td width=45 align=center class='bg1'>무력</td>
|
||||||
<td width=45 align=center id=bg1>지력</td>
|
<td width=45 align=center class='bg1'>지력</td>
|
||||||
<td width=45 align=center id=bg1>삭턴</td>
|
<td width=45 align=center class='bg1'>삭턴</td>
|
||||||
<td width=70 align=center id=bg1>벌점</td>
|
<td width=70 align=center class='bg1'>벌점</td>
|
||||||
</tr>";
|
</tr>";
|
||||||
for ($j=0; $j < $gencount; $j++) {
|
foreach ($generalList as $general) {
|
||||||
$general = MYDB_fetch_array($genresult);
|
|
||||||
$nation = $nationname[$general['nation']];
|
$nation = $nationname[$general['nation']];
|
||||||
|
|
||||||
if ($general['level'] == 12) {
|
$lbonus = calcLeadershipBonus($general['officer_level'], $nationlevel[$general['nation']] ?? 0);
|
||||||
$lbonus = $nationlevel[$general['nation']] * 2;
|
|
||||||
} elseif ($general['level'] >= 5) {
|
|
||||||
$lbonus = $nationlevel[$general['nation']];
|
|
||||||
} else {
|
|
||||||
$lbonus = 0;
|
|
||||||
}
|
|
||||||
if ($lbonus > 0) {
|
if ($lbonus > 0) {
|
||||||
$lbonus = "<font color=cyan>+{$lbonus}</font>";
|
$lbonusText = "<font color=cyan>+{$lbonus}</font>";
|
||||||
} else {
|
} else {
|
||||||
$lbonus = "";
|
$lbonusText = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($general['injury'] > 0) {
|
if ($general['injury'] > 0) {
|
||||||
$leader = intdiv($general['leader'] * (100 - $general['injury']), 100);
|
$leadership = intdiv($general['leadership'] * (100 - $general['injury']), 100);
|
||||||
$power = intdiv($general['power'] * (100 - $general['injury']), 100);
|
$strength = intdiv($general['strength'] * (100 - $general['injury']), 100);
|
||||||
$intel = intdiv($general['intel'] * (100 - $general['injury']), 100);
|
$intel = intdiv($general['intel'] * (100 - $general['injury']), 100);
|
||||||
$leader = "<font color=red>{$leader}</font>{$lbonus}";
|
$leadership = "<font color=red>{$leadership}</font>{$lbonusText}";
|
||||||
$power = "<font color=red>{$power}</font>";
|
$strength = "<font color=red>{$strength}</font>";
|
||||||
$intel = "<font color=red>{$intel}</font>";
|
$intel = "<font color=red>{$intel}</font>";
|
||||||
} else {
|
} else {
|
||||||
$leader = "{$general['leader']}{$lbonus}";
|
$leadership = "{$general['leadership']}{$lbonusText}";
|
||||||
$power = "{$general['power']}";
|
$strength = "{$general['strength']}";
|
||||||
$intel = "{$general['intel']}";
|
$intel = "{$general['intel']}";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($general['npc'] >= 2) {
|
|
||||||
$name = "<font color=cyan>{$general['name']}</font>";
|
|
||||||
} elseif ($general['npc'] == 1) {
|
$name = formatName($general['name'], $general['npc']);
|
||||||
$name = "<font color=skyblue>{$general['name']}</font>";
|
|
||||||
} else {
|
if (key_exists($general['owner'], $ownerNameList)) {
|
||||||
$name = "{$general['name']}";
|
$name = $name . '<br><small>(' . $ownerNameList[$general['owner']] . ')</small>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$general['connect'] = Util::round($general['connect'] / 10) * 10;
|
$general['connect'] = Util::round($general['connect'], -1);
|
||||||
|
|
||||||
$imageTemp = GetImageURL($general['imgsvr']);
|
$imageTemp = GetImageURL($general['imgsvr']);
|
||||||
echo "
|
echo "
|
||||||
<tr>
|
<tr data-general-id='{$general['no']}'
|
||||||
<td align=center><img width='64' height='64' src={$imageTemp}/{$general['picture']}></img></td>
|
data-general-wounded='{$general['injury']}'
|
||||||
|
data-general-leadership='{$general['leadership']}'
|
||||||
|
data-general-leadership-bonus='{$lbonus}'
|
||||||
|
data-general-strength='{$general['strength']}'
|
||||||
|
data-general-intel='{$general['intel']}'
|
||||||
|
data-is-npc='" . ($general['npc'] >= 2 ? 'true' : 'false') . "'
|
||||||
|
>
|
||||||
|
<td align=center><img class='generalIcon' width='64' height='64' src='{$imageTemp}/{$general['picture']}'></img></td>
|
||||||
<td align=center>$name</td>
|
<td align=center>$name</td>
|
||||||
<td align=center>{$general['age']}세</td>
|
<td align=center>{$general['age']}세</td>
|
||||||
<td align=center>" . displayCharInfo($general['personal']) . "</td>
|
<td align=center>" . displayCharInfo($general['personal']) . "</td>
|
||||||
<td align=center>".displaySpecialInfo($general['special'])." / ".displaySpecialInfo($general['special2'])."</td>
|
<td align=center>" . displaySpecialDomesticInfo($general['special']) . " / " . displaySpecialWarInfo($general['special2']) . "</td>
|
||||||
<td align=center>Lv " . getExpLevel($general['experience']) . "</td>
|
<td align=center>Lv " . getExpLevel($general['experience']) . "</td>
|
||||||
<td align=center>{$nation}</td>
|
<td align=center>{$nation}</td>
|
||||||
<td align=center>" . getHonor($general['experience']) . "</td>
|
<td align=center>" . getHonor($general['experience']) . "</td>
|
||||||
<td align=center>" . getDed($general['dedication']) . "</td>
|
<td align=center>" . getDed($general['dedication']) . "</td>
|
||||||
<td align=center>";
|
<td align=center>";
|
||||||
echo getLevel($general['level']);
|
echo getOfficerLevelText($general['officer_level']);
|
||||||
echo "</td>
|
echo "</td>
|
||||||
<td align=center>$leader</td>
|
<td align=center>$leadership</td>
|
||||||
<td align=center>$power</td>
|
<td align=center>$strength</td>
|
||||||
<td align=center>$intel</td>
|
<td align=center>$intel</td>
|
||||||
<td align=center>{$general['killturn']}</td>
|
<td align=center>{$general['killturn']}</td>
|
||||||
<td align=center>{$general['connect']}";
|
<td align=center>{$general['connect']}";
|
||||||
@@ -194,8 +200,12 @@ echo "
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|||||||
@@ -1,30 +1,40 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
$session = Session::getInstance()->setReadOnly();
|
$session = Session::getInstance()->setReadOnly();
|
||||||
|
$seasonIdx = Util::getReq('seasonIdx', 'int', UniqueConst::$seasonIdx);
|
||||||
$scenarioIdx = Util::getReq('scenarioIdx', 'int', null);
|
$scenarioIdx = Util::getReq('scenarioIdx', 'int', null);
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
|
|
||||||
increaseRefresh("명예의전당", 1);
|
increaseRefresh("명예의전당", 1);
|
||||||
|
|
||||||
|
$scenarioList = (function () {
|
||||||
|
$db = DB::db();
|
||||||
$scenarioList = [];
|
$scenarioList = [];
|
||||||
foreach($db->query('SELECT scenario_name as name, count(scenario) as cnt, scenario from ng_games group by scenario order by scenario asc') as $scenarioInfo){
|
foreach ($db->query('SELECT season, scenario_name as name, count(scenario) as cnt, scenario from ng_games group by season, scenario order by season desc, scenario asc') as $scenarioInfo) {
|
||||||
$scenarioList[$scenarioInfo['scenario']] = $scenarioInfo;
|
$seasonIdx = $scenarioInfo['season'];
|
||||||
|
$scenarioIdx = $scenarioInfo['scenario'];
|
||||||
|
if (!key_exists($seasonIdx, $scenarioList)) {
|
||||||
|
$scenarioList[$seasonIdx] = [];
|
||||||
}
|
}
|
||||||
|
$scenarioList[$seasonIdx][$scenarioIdx] = $scenarioInfo;
|
||||||
|
|
||||||
|
|
||||||
if($scenarioIdx !== null || key_exists($scenarioIdx, $scenarioList)){
|
|
||||||
$searchScenarioName = $scenarioList[$scenarioIdx]['name'];
|
|
||||||
$searchFilter = $db->sqleval('scenario = %i', $scenarioIdx);
|
|
||||||
}
|
}
|
||||||
else{
|
return $scenarioList;
|
||||||
|
})();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if ($scenarioIdx && key_exists($scenarioIdx, $scenarioList[$seasonIdx] ?? [])) {
|
||||||
|
$searchScenarioName = $scenarioList[$seasonIdx][$scenarioIdx]['name'];
|
||||||
|
$searchFilter = $db->sqleval('season = %i AND scenario = %i', $seasonIdx, $scenarioIdx);
|
||||||
|
} else {
|
||||||
$searchScenarioName = '* 모두 *';
|
$searchScenarioName = '* 모두 *';
|
||||||
$searchFilter = $db->sqleval(true);
|
$searchFilter = $db->sqleval('season = %i', $seasonIdx);
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
@@ -36,73 +46,83 @@ else{
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1136" />
|
<meta name="viewport" content="width=1136" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 명예의 전당</title>
|
<title><?= UniqueConst::$serverName ?>: 명예의 전당</title>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?= WebUtil::printCSS('css/hallOfFame.css') ?>
|
<?= WebUtil::printCSS('css/hallOfFame.css') ?>
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printDist('ts', ['common', 'hallOfFame']) ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery.redirect.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJs('js/hallOfFame.js')?>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1100 class='tb_layout bg0'>
|
<table align=center width=1100 class='tb_layout bg0'>
|
||||||
<tr><td>명 예 의 전 당<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td>명 예 의 전 당<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
시나리오 검색 : <select id="by_scenario" name="by_scenario">
|
시나리오 검색 : <select id="by_scenario" name="by_scenario">
|
||||||
<option value="" <?=$scenarioIdx?"selected='selected'":''?>>* 종합 *</option>
|
<?php foreach ($scenarioList as $iterSeasonIdx => $subScenarioList) : ?>
|
||||||
<?php foreach($scenarioList as $info): ?>
|
<option data-season="<?= $iterSeasonIdx ?>" value="" <?= ($iterSeasonIdx == $seasonIdx && $scenarioIdx === null) ? "selected='selected'" : '' ?>>* 시즌 : <?= $iterSeasonIdx ?> 종합 *</option>
|
||||||
<option
|
<?php foreach ($subScenarioList as $info) : ?>
|
||||||
value="<?=$info['scenario']?>"
|
<option data-season="<?= $iterSeasonIdx ?>" value="<?= $info['scenario'] ?>" <?= ($iterSeasonIdx == $seasonIdx && $info['scenario'] === $scenarioIdx) ? "selected='selected'" : '' ?>><?= $info['name'] ?>(<?= $info['cnt'] ?>회)</option>
|
||||||
<?=($info['scenario']===$scenarioIdx)?"selected='selected'":''?>
|
<?php endforeach; ?>
|
||||||
><?=$info['name']?>(<?=$info['cnt']?>회)</option>
|
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
?>
|
?>
|
||||||
</select>
|
</select>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div style="margin:auto;width=1100px;">
|
<div style="margin:auto;width:1100px;">
|
||||||
<?php
|
<?php
|
||||||
$types = [
|
$types = [
|
||||||
["명 성", 'int'],
|
'experience' => ['명 성', 'int'],
|
||||||
["계 급", 'int'],
|
'dedication' => ['계 급', 'int'],
|
||||||
["계 략 성 공", 'int'],
|
'firenum' => ['계 략 성 공', 'int'],
|
||||||
["전 투 횟 수", 'int'],
|
'warnum' => ['전 투 횟 수', 'int'],
|
||||||
["승 리", 'int'],
|
'killnum' => ['승 리', 'int'],
|
||||||
["승 률", 'percent'],
|
'winrate' => ['승 률', 'percent'],
|
||||||
["사 살", 'int'],
|
'occupied' => ['점 령', 'int'],
|
||||||
["살 상 률", 'percent'],
|
'killcrew' => ['사 살', 'int'],
|
||||||
["보 병 숙 련 도", 'int'],
|
'killrate' => ['살 상 률', 'percent'],
|
||||||
["궁 병 숙 련 도", 'int'],
|
'killcrew_person' => ['대 인 사 살', 'int'],
|
||||||
["기 병 숙 련 도", 'int'],
|
'killrate_person' => ['대 인 살 상 률', 'percent'],
|
||||||
["귀 병 숙 련 도", 'int'],
|
'dex1' => ['보 병 숙 련 도', 'int'],
|
||||||
["차 병 숙 련 도", 'int'],
|
'dex2' => ['궁 병 숙 련 도', 'int'],
|
||||||
["전 력 전 승 률", 'percent'],
|
'dex3' => ['기 병 숙 련 도', 'int'],
|
||||||
["통 솔 전 승 률", 'percent'],
|
'dex4' => ['귀 병 숙 련 도', 'int'],
|
||||||
["일 기 토 승 률", 'percent'],
|
'dex5' => ['차 병 숙 련 도', 'int'],
|
||||||
["설 전 승 률", 'percent'],
|
'ttrate' => ['전 력 전 승 률', 'percent'],
|
||||||
["베 팅 투 자 액", 'int'],
|
'tlrate' => ['통 솔 전 승 률', 'percent'],
|
||||||
["베 팅 당 첨", 'int'],
|
'tsrate' => ['일 기 토 승 률', 'percent'],
|
||||||
["베 팅 수 익 금", 'int'],
|
'tirate' => ['설 전 승 률', 'percent'],
|
||||||
["베 팅 수 익 률", 'percent'],
|
'betgold' => ['베 팅 투 자 액', 'int'],
|
||||||
|
'betwin' => ['베 팅 당 첨', 'int'],
|
||||||
|
'betwingold' => ['베 팅 수 익 금', 'int'],
|
||||||
|
'betrate' => ['베 팅 수 익 률', 'percent'],
|
||||||
];
|
];
|
||||||
|
|
||||||
$templates = new \League\Plates\Engine('templates');
|
$templates = new \League\Plates\Engine('templates');
|
||||||
|
|
||||||
foreach($types as $idx=>[$typeName, $typeValue]) {
|
$ownerNameList = [];
|
||||||
$hallResult = $db->query('SELECT * FROM ng_hall WHERE `type`=%i AND %? ORDER BY `value` DESC LIMIT 10', $idx, $searchFilter);
|
foreach (RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]) {
|
||||||
|
$ownerNameList[$ownerID] = $ownerName;
|
||||||
|
}
|
||||||
|
|
||||||
$hallResult = array_map(function($general)use($typeValue){
|
foreach ($types as $typeName => [$typeDescribe, $typeValue]) {
|
||||||
|
$hallResult = $db->query('SELECT * FROM hall WHERE `type`=%s AND %? ORDER BY `value` DESC LIMIT 10', $typeName, $searchFilter);
|
||||||
|
|
||||||
|
$hallResult = array_map(function ($general) use ($typeValue, $ownerNameList) {
|
||||||
$aux = Json::decode($general['aux']);
|
$aux = Json::decode($general['aux']);
|
||||||
$general += $aux;
|
$general += $aux;
|
||||||
|
|
||||||
|
if (key_exists($general['owner'], $ownerNameList)) {
|
||||||
|
$general['ownerName'] = $ownerNameList[$general['owner']];
|
||||||
|
}
|
||||||
|
|
||||||
if (!key_exists('bgColor', $general)) {
|
if (!key_exists('bgColor', $general)) {
|
||||||
if (!key_exists('color', $general)) {
|
if (!key_exists('color', $general)) {
|
||||||
$general['bgColor'] = GameConst::$basecolor4;
|
$general['bgColor'] = GameConst::$basecolor4;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$general['bgColor'] = $general['color'];
|
$general['bgColor'] = $general['color'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -114,8 +134,7 @@ foreach($types as $idx=>[$typeName, $typeValue]) {
|
|||||||
if (key_exists('picture', $general)) {
|
if (key_exists('picture', $general)) {
|
||||||
$imageTemp = GetImageURL($general['imgsvr']);
|
$imageTemp = GetImageURL($general['imgsvr']);
|
||||||
$general['pictureFullPath'] = "$imageTemp/{$general['picture']}";
|
$general['pictureFullPath'] = "$imageTemp/{$general['picture']}";
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$general['pictureFullPath'] = GetImageURL(0) . "/default.jpg";
|
$general['pictureFullPath'] = GetImageURL(0) . "/default.jpg";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,8 +142,7 @@ foreach($types as $idx=>[$typeName, $typeValue]) {
|
|||||||
$value = $general['value'];
|
$value = $general['value'];
|
||||||
if ($typeValue == 'percent') {
|
if ($typeValue == 'percent') {
|
||||||
$general['printValue'] = number_format($value * 100, 2) . '%';
|
$general['printValue'] = number_format($value * 100, 2) . '%';
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$general['printValue'] = number_format($value);
|
$general['printValue'] = number_format($value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -133,16 +151,20 @@ foreach($types as $idx=>[$typeName, $typeValue]) {
|
|||||||
}, $hallResult);
|
}, $hallResult);
|
||||||
|
|
||||||
echo $templates->render('hallOfFrame', [
|
echo $templates->render('hallOfFrame', [
|
||||||
'typeName'=>$typeName,
|
'typeName' => $typeDescribe,
|
||||||
'generals' => $hallResult
|
'generals' => $hallResult
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
<table align=center width=1100 class='tb_layout bg0'>
|
<table align=center width=1100 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -1,21 +1,19 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
$btn = Util::getReq('btn');
|
$btn = Util::getReq('btn');
|
||||||
$yearmonth = Util::getReq('yearmonth', 'int');
|
$yearMonth = Util::getReq('yearmonth', 'int');
|
||||||
$serverID = Util::getReq('serverID', 'string', null);
|
$serverID = Util::getReq('serverID', 'string', null);
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
$userID = Session::getUserID();
|
$userID = Session::getUserID();
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
if (!$serverID) {
|
if (!$serverID) {
|
||||||
$serverID = UniqueConst::$serverID;
|
$serverID = UniqueConst::$serverID;
|
||||||
@@ -25,11 +23,9 @@ if($serverID === UniqueConst::$serverID){
|
|||||||
increaseRefresh("연감", 1);
|
increaseRefresh("연감", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$admin = $gameStor->getValues(['startyear','year','month']);
|
$admin = $gameStor->getValues(['startyear', 'year', 'month', 'map_theme']);
|
||||||
|
|
||||||
$query = "select con,turntime from general where owner='{$userID}'";
|
$me = $db->queryFirstRow('SELECT con, turntime FROM general WHERE owner = %i', $userID);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
$con = checkLimit($me['con']);
|
||||||
if ($con >= 2) {
|
if ($con >= 2) {
|
||||||
@@ -39,46 +35,65 @@ if ($con >= 2) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
[$s_year, $s_month] = $db->queryFirstList('SELECT year, month FROM history WHERE server_id = %s ORDER BY year ASC, month ASC LIMIT 1', $serverID);
|
[$s_year, $s_month] = $db->queryFirstList('SELECT year, month FROM ng_history WHERE server_id = %s ORDER BY year ASC, month ASC LIMIT 1', $serverID);
|
||||||
$s = $s_year * 12 + $s_month;
|
$s = Util::joinYearMonth($s_year, $s_month);
|
||||||
|
|
||||||
[$e_year, $e_month] = $db->queryFirstList('SELECT year, month FROM history WHERE server_id = %s ORDER BY year DESC, month DESC LIMIT 1', $serverID);
|
if ($s_year === null) {
|
||||||
$e = $e_year * 12 + $e_month;
|
echo '인자 에러';
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
[$e_year, $e_month] = $db->queryFirstList('SELECT year, month FROM ng_history WHERE server_id = %s ORDER BY year DESC, month DESC LIMIT 1', $serverID);
|
||||||
|
$e = Util::joinYearMonth($e_year, $e_month);
|
||||||
|
|
||||||
|
if ($serverID !== UniqueConst::$serverID) {
|
||||||
|
$mapTheme = $db->queryFirstField('SELECT map FROM ng_games WHERE server_id=%s', $serverID) ?: 'che';
|
||||||
|
} else {
|
||||||
|
$mapTheme = $admin['map_theme'] ?? 'che';
|
||||||
|
}
|
||||||
|
|
||||||
//FIXME: $yearmonth가 올바르지 않을 경우에 처리가 필요.
|
//FIXME: $yearmonth가 올바르지 않을 경우에 처리가 필요.
|
||||||
if($serverID !== UniqueConst::$serverID && !$yearmonth){
|
if ($serverID !== UniqueConst::$serverID && !$yearMonth) {
|
||||||
$year = $s_year;
|
$yearMonth = $s;
|
||||||
$month = $s_month;
|
} else if (!$yearMonth) {
|
||||||
}
|
$yearMonth = Util::joinYearMonth($admin['year'], $admin['month']);
|
||||||
else if (!$yearmonth) {
|
|
||||||
$year = $admin['year'];
|
|
||||||
$month = $admin['month'] - 1;
|
|
||||||
} else {
|
} else {
|
||||||
$year = intdiv($yearmonth, 100);
|
|
||||||
$month = $yearmonth % 100;
|
|
||||||
|
|
||||||
if ($btn == "◀◀ 이전달") {
|
if ($btn == "◀◀ 이전달") {
|
||||||
$month -= 1;
|
$yearMonth -= 1;
|
||||||
} elseif ($btn == "다음달 ▶▶") {
|
} elseif ($btn == "다음달 ▶▶") {
|
||||||
$month += 1;
|
$yearMonth += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$now = ($year*12) + $month;
|
|
||||||
|
|
||||||
if ($now < $s) {
|
|
||||||
$now = $s;
|
|
||||||
}
|
|
||||||
if ($now > $e) {
|
|
||||||
$now = $e;
|
|
||||||
}
|
|
||||||
|
|
||||||
$year = intdiv($now, 12);
|
$isCurrent = false;
|
||||||
$month = $now % 12;
|
if ($yearMonth < $s) {
|
||||||
if ($month <= 0) {
|
$yearMonth = $s;
|
||||||
$year -= 1;
|
}
|
||||||
$month += 12;
|
if ($yearMonth > $e) {
|
||||||
|
$isCurrent = true;
|
||||||
|
$yearMonth = $e + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[$year, $month] = Util::parseYearMonth($yearMonth);
|
||||||
|
|
||||||
|
function getHistory($serverID, $year, $month):array{
|
||||||
|
$db = DB::db();
|
||||||
|
$history = $db->queryFirstRow('SELECT * FROM ng_history WHERE server_id = %s AND year = %i AND month = %i', $serverID, $year, $month);
|
||||||
|
$history['global_history'] = Json::decode($history['global_history']);
|
||||||
|
$history['global_action'] = Json::decode($history['global_action']);
|
||||||
|
$history['nations'] = Json::decode($history['nations']);
|
||||||
|
return $history;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if($isCurrent){
|
||||||
|
$history = getCurrentHistory();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$history = getHistory($serverID, $year, $month);
|
||||||
|
}
|
||||||
|
|
||||||
|
$nations = $history['nations'];
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
@@ -88,81 +103,127 @@ if ($month <= 0) {
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 연감</title>
|
<title><?= UniqueConst::$serverName ?>: 연감</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
<?= WebUtil::printJS("js/map/theme_{$mapTheme}.js") ?>
|
||||||
<?=WebUtil::printJS('js/base_map.js')?>
|
|
||||||
<?=WebUtil::printJS('js/map.js')?>
|
|
||||||
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?= WebUtil::printCSS('css/map.css') ?>
|
<?= WebUtil::printCSS('css/map.css') ?>
|
||||||
|
<?= WebUtil::printCSS('css/history.css') ?>
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'history']) ?>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var startYear = <?= $s_year ?>;
|
||||||
|
var startMonth = <?= $s_month ?>;
|
||||||
|
var lastYear = <?= $e_year ?>;
|
||||||
|
var lastMonth = <?= $e_month ?>;
|
||||||
|
var selectYear = <?= $year ?>;
|
||||||
|
var selectMonth = <?= $month ?>;
|
||||||
|
var nations = <?= $nations ? JSON::encode($history['nations']) : '{}' ?>;
|
||||||
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>연 감<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td>연 감<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<form name=form1 method=post>
|
<form name=form1 method=post>
|
||||||
년월 선택 :
|
연월 선택 :
|
||||||
<input type=submit name=btn value="◀◀ 이전달">
|
<input type=submit name=btn value="◀◀ 이전달">
|
||||||
<select name=yearmonth size=1>
|
<select id='yearmonth' name=yearmonth size=1>
|
||||||
<?php
|
<option selected='selected'><?= $year ?>년 <?= $month ?>월</option>
|
||||||
$dates = $db->queryAllLists('SELECT year, month FROM history WHERE server_id = %s ORDER BY year ASC, month ASC', $serverID);
|
<option><?= $e_year ?>년 12월 (현재)</option>
|
||||||
foreach($dates as [$hYear, $hMonth]){
|
|
||||||
$value = "".$hYear.StringUtil::padStringAlignRight($hMonth, 2, "0");
|
|
||||||
if ($hYear == $year && $hMonth == $month) {
|
|
||||||
echo "
|
|
||||||
<option selected value={$value}>{$hYear}년 {$hMonth}월</option>";
|
|
||||||
} else {
|
|
||||||
echo "
|
|
||||||
<option value={$value}>{$hYear}년 {$hMonth}월</option>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$history = $db->queryFirstRow('SELECT log,genlog,nation,power,gen,city FROM history WHERE server_id = %s AND year = %i AND month = %i', $serverID, $year, $month);
|
|
||||||
?>
|
|
||||||
</select>
|
</select>
|
||||||
<input type=submit name=btn value='조회하기'>
|
<input type=submit name=btn value='조회하기'>
|
||||||
<input type=submit name=btn value="다음달 ▶▶">
|
<input type=submit name=btn value="다음달 ▶▶">
|
||||||
</form>
|
</form>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 height=520 class='tb_layout bg0'>
|
<table align=center width=1000 height=520 class='tb_layout bg0'>
|
||||||
<tr><td colspan=5 align=center id=bg1>중 원 지 도</td></tr>
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th colspan=5 align=center class='bg1'>중 원 지 도</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
<tr height=520>
|
<tr height=520>
|
||||||
<td width=698>
|
<td width=698>
|
||||||
<?=getMapHtml();?>
|
<?= getMapHtml($mapTheme) ?>
|
||||||
|
</td>
|
||||||
<td width=139 valign=top><div style='background-color:#cccccc;color:black;text-align:center'>국명</div><?=$history['nation']?></td>
|
<td id='nation_list_frame'>
|
||||||
<td width=70 valign=top style='text-align:center'><div style='background-color:#cccccc;color:black;'>국력</div><?=$history['power']?></td>
|
<table id='nation_list'>
|
||||||
<td width=43 valign=top style='text-align:center'><div style='background-color:#cccccc;color:black;'>장수</div><?=$history['gen']?></td>
|
<thead>
|
||||||
<td width=40 valign=top style='text-align:center'><div style='background-color:#cccccc;color:black;'>속령</div><?=$history['city']?></td>
|
|
||||||
</tr>
|
|
||||||
<tr><td colspan=5 align=center id=bg1>중 원 정 세</td></tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=5 valign=top>
|
<th width=130>국명</th>
|
||||||
<?=$history['log']?>
|
<th width=70>국력</th>
|
||||||
|
<th width=45>장수</th>
|
||||||
|
<th width=45>속령</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach ($nations as $nation) : ?>
|
||||||
|
<tr>
|
||||||
|
<td><span style='color:<?= newColor($nation['color']) ?>;background-color:<?= $nation['color'] ?>'><?= $nation['name'] ?></td>
|
||||||
|
<td style='text-align:right'><?= number_format($nation['power']) ?></td>
|
||||||
|
<td style='text-align:right'><?= number_format($nation['gennum']) ?></td>
|
||||||
|
<td style='text-align:right'><?= number_format(count($nation['cities'] ?? [])) ?></td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
<tfoot></tfoot>
|
||||||
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td colspan=5 align=center id=bg1>장 수 동 향</td></tr>
|
<tr>
|
||||||
|
<th colspan=5 align=center class='bg1'>중 원 정 세</th>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=5 valign=top>
|
<td colspan=5 valign=top>
|
||||||
<?=$history['genlog']?>
|
<?= formatHistoryToHTML($history['global_history']) ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th colspan=5 align=center class='bg1'>장 수 동 향</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=5 valign=top>
|
||||||
|
<?= formatHistoryToHTML($history['global_action']) ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<script>
|
<script>
|
||||||
|
window.serverNick = '<?= DB::prefix() ?>';
|
||||||
|
window.serverID = '<?= UniqueConst::$serverID ?>';
|
||||||
|
<?php if($isCurrent): ?>
|
||||||
|
reloadWorldMap({
|
||||||
|
showMe: false,
|
||||||
|
neutralView: true,
|
||||||
|
useCachedMap: true,
|
||||||
|
});
|
||||||
|
<?php else: ?>
|
||||||
reloadWorldMap({
|
reloadWorldMap({
|
||||||
targetJson: 'j_map_history.php?year=<?= $year ?>&month=<?= $month ?>&serverID=<?= $serverID ?>',
|
targetJson: 'j_map_history.php?year=<?= $year ?>&month=<?= $month ?>&serverID=<?= $serverID ?>',
|
||||||
showMe: false,
|
showMe: false,
|
||||||
neutralView:true
|
neutralView: true,
|
||||||
|
useCachedMap: false,
|
||||||
|
year: <?= $year ?>,
|
||||||
|
month: <?= $month ?>,
|
||||||
});
|
});
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -9,16 +10,16 @@ $userID = Session::getUserID();
|
|||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
$gameStor->cacheValues(['killturn', 'autorun_user', 'turnterm']);
|
||||||
|
|
||||||
increaseRefresh("세력일람", 2);
|
increaseRefresh("세력일람", 2);
|
||||||
|
|
||||||
$query = "select con,turntime from general where owner='{$userID}'";
|
$me = $db->queryFirstRow('SELECT con, turntime FROM general WHERE owner=%i', $userID);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
$con = checkLimit($me['con']);
|
||||||
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
|
if ($con >= 2) {
|
||||||
|
printLimitMsg($me['turntime']);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
@@ -28,104 +29,66 @@ if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 세력일람</title>
|
<title><?= UniqueConst::$serverName ?>: 세력일람</title>
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printDist('ts', ['common', 'extKingdoms']) ?>
|
||||||
<?=WebUtil::printJS('js/ext.kingdoms.js')?>
|
<?= WebUtil::printStaticValues($gameStor->getValues(['killturn', 'autorun_user', 'turnterm'])) ?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>세 력 일 람<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>세 력 일 람<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<?php
|
<?php
|
||||||
$query = "select nation,name,color,level,type,power,gennum,capital from nation order by power desc";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$count = MYDB_num_rows($result);
|
|
||||||
|
|
||||||
for($i=1; $i <= $count; $i++) {
|
$nations = getAllNationStaticInfo();
|
||||||
$nation = MYDB_fetch_array($result); //국가정보
|
uasort($nations, function ($lhs, $rhs) {
|
||||||
|
return $rhs['power'] <=> $lhs['power'];
|
||||||
|
});
|
||||||
|
|
||||||
$query = "select city,name from city where nation='{$nation['nation']}'"; // 도시 이름 목록
|
$nations[0] = getNationStaticInfo(0);
|
||||||
$cityresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$citycount = MYDB_num_rows($cityresult);
|
|
||||||
|
|
||||||
$query = "select npc,name,city from general where nation='{$nation['nation']}' and level='12'";
|
foreach ($db->query('SELECT npc,name,city,nation,officer_level,penalty,permission FROM general ORDER BY dedication DESC') as $general) {
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$nationID = $general['nation'];
|
||||||
$level12 = MYDB_fetch_array($genresult);
|
|
||||||
|
|
||||||
$query = "select npc,name from general where nation='{$nation['nation']}' and level='11'";
|
if (!key_exists('generals', $nations[$nationID])) {
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$nations[$nationID]['generals'] = [];
|
||||||
$level11 = MYDB_fetch_array($genresult);
|
}
|
||||||
|
$nations[$nationID]['generals'][] = $general;
|
||||||
|
}
|
||||||
|
|
||||||
$query = "select npc,name from general where nation='{$nation['nation']}' and level='10'";
|
foreach ($db->queryAllLists('SELECT city, name, nation FROM city') as [$cityID, $cityName, $nationID]) {
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
if (!key_exists('cities', $nations[$nationID])) {
|
||||||
$level10 = MYDB_fetch_array($genresult);
|
$nations[$nationID]['cities'] = [];
|
||||||
|
}
|
||||||
|
$nations[$nationID]['cities'][$cityID] = $cityName;
|
||||||
|
}
|
||||||
|
|
||||||
$query = "select npc,name from general where nation='{$nation['nation']}' and level='9'";
|
foreach ($nations as $nation) {
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
if ($nation['nation'] == 0) {
|
||||||
$level9 = MYDB_fetch_array($genresult);
|
//재야 도시, 장수
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$generals = $nation['generals'];
|
||||||
|
|
||||||
$query = "select npc,name from general where nation='{$nation['nation']}' and level='8'";
|
$chiefs = [];
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$ambassadors = [];
|
||||||
$level8 = MYDB_fetch_array($genresult);
|
$auditors = [];
|
||||||
|
foreach ($generals as $general) {
|
||||||
$query = "select npc,name from general where nation='{$nation['nation']}' and level='7'";
|
$officerLevel = $general['officer_level'];
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
if ($officerLevel >= 5) {
|
||||||
$level7 = MYDB_fetch_array($genresult);
|
$chiefs[$officerLevel] = $general;
|
||||||
|
}
|
||||||
$query = "select npc,name from general where nation='{$nation['nation']}' and level='6'";
|
$generalPermission = checkSecretPermission($general, false);
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
if ($generalPermission == 4) {
|
||||||
$level6 = MYDB_fetch_array($genresult);
|
$ambassadors[] = $general['name'];
|
||||||
|
} else if ($generalPermission == 3) {
|
||||||
$query = "select npc,name from general where nation='{$nation['nation']}' and level='5'";
|
$auditors[] = $general['name'];
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
}
|
||||||
$level5 = MYDB_fetch_array($genresult);
|
}
|
||||||
|
|
||||||
$query = "select npc,name from general where nation='{$nation['nation']}' order by dedication desc"; // 장수 목록
|
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$gencount = MYDB_num_rows($genresult);
|
|
||||||
|
|
||||||
if($level12['name'] == "") { $l12 = "-"; }
|
|
||||||
elseif($level12['npc'] >= 2) { $l12 = "<font color=cyan>{$level12['name']}</font>"; }
|
|
||||||
elseif($level12['npc'] == 1) { $l12 = "<font color=skyblue>{$level12['name']}</font>"; }
|
|
||||||
else { $l12 = $level12['name']; }
|
|
||||||
|
|
||||||
if($level11['name'] == "") { $l11 = "-"; }
|
|
||||||
elseif($level11['npc'] >= 2) { $l11 = "<font color=cyan>{$level11['name']}</font>"; }
|
|
||||||
elseif($level11['npc'] == 1) { $l11 = "<font color=skyblue>{$level11['name']}</font>"; }
|
|
||||||
else { $l11 = $level11['name']; }
|
|
||||||
|
|
||||||
if($level10['name'] == "") { $l10 = "-"; }
|
|
||||||
elseif($level10['npc'] >= 2) { $l10 = "<font color=cyan>{$level10['name']}</font>"; }
|
|
||||||
elseif($level10['npc'] == 1) { $l10 = "<font color=skyblue>{$level10['name']}</font>"; }
|
|
||||||
else { $l10 = $level10['name']; }
|
|
||||||
|
|
||||||
if($level9['name'] == "") { $l9 = "-"; }
|
|
||||||
elseif($level9['npc'] >= 2) { $l9 = "<font color=cyan>{$level9['name']}</font>"; }
|
|
||||||
elseif($level9['npc'] == 1) { $l9 = "<font color=skyblue>{$level9['name']}</font>"; }
|
|
||||||
else { $l9 = $level9['name']; }
|
|
||||||
|
|
||||||
if($level8['name'] == "") { $l8 = "-"; }
|
|
||||||
elseif($level8['npc'] >= 2) { $l8 = "<font color=cyan>{$level8['name']}</font>"; }
|
|
||||||
elseif($level8['npc'] == 1) { $l8 = "<font color=skyblue>{$level8['name']}</font>"; }
|
|
||||||
else { $l8 = $level8['name']; }
|
|
||||||
|
|
||||||
if($level7['name'] == "") { $l7 = "-"; }
|
|
||||||
elseif($level7['npc'] >= 2) { $l7 = "<font color=cyan>{$level7['name']}</font>"; }
|
|
||||||
elseif($level7['npc'] == 1) { $l7 = "<font color=skyblue>{$level7['name']}</font>"; }
|
|
||||||
else { $l7 = $level7['name']; }
|
|
||||||
|
|
||||||
if($level6['name'] == "") { $l6 = "-"; }
|
|
||||||
elseif($level6['npc'] >= 2) { $l6 = "<font color=cyan>{$level6['name']}</font>"; }
|
|
||||||
elseif($level6['npc'] == 1) { $l6 = "<font color=skyblue>{$level6['name']}</font>"; }
|
|
||||||
else { $l6 = $level6['name']; }
|
|
||||||
|
|
||||||
if($level5['name'] == "") { $l5 = "-"; }
|
|
||||||
elseif($level5['npc'] >= 2) { $l5 = "<font color=cyan>{$level5['name']}</font>"; }
|
|
||||||
elseif($level5['npc'] == 1) { $l5 = "<font color=skyblue>{$level5['name']}</font>"; }
|
|
||||||
else { $l5 = $level5['name']; }
|
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<table align=center width=1000 class='tb_layout bg2'>
|
<table align=center width=1000 class='tb_layout bg2'>
|
||||||
@@ -133,65 +96,56 @@ for($i=1; $i <= $count; $i++) {
|
|||||||
<td colspan=8 align=center style=color:" . newColor($nation['color']) . "; bgcolor={$nation['color']}>【 {$nation['name']} 】</td>
|
<td colspan=8 align=center style=color:" . newColor($nation['color']) . "; bgcolor={$nation['color']}>【 {$nation['name']} 】</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=80 align=center id=bg1>성 향</td>
|
<td width=80 align=center class='bg1'>성 향</td>
|
||||||
<td width=170 align=center><font color=yellow>" . getNationType($nation['type']) . "</font></td>
|
<td width=170 align=center><font color=yellow>" . getNationType($nation['type']) . "</font></td>
|
||||||
<td width=80 align=center id=bg1>작 위</td>
|
<td width=80 align=center class='bg1'>작 위</td>
|
||||||
<td width=170 align=center>" . getNationLevel($nation['level']) . "</td>
|
<td width=170 align=center>" . getNationLevel($nation['level']) . "</td>
|
||||||
<td width=80 align=center id=bg1>국 력</td>
|
<td width=80 align=center class='bg1'>국 력</td>
|
||||||
<td width=170 align=center>{$nation['power']}</td>
|
<td width=170 align=center>{$nation['power']}</td>
|
||||||
<td width=80 align=center id=bg1>장수 / 속령</td>
|
<td width=80 align=center class='bg1'>장수 / 속령</td>
|
||||||
<td width=170 align=center>{$gencount} / {$citycount}</td>
|
<td width=170 align=center>{$nation['gennum']} / " . count($nation['cities'] ?? []) . "</td>
|
||||||
</tr>
|
";
|
||||||
|
for ($chiefLevel = 12; $chiefLevel >= 5; $chiefLevel--) {
|
||||||
|
if ($chiefLevel % 4 == 0) {
|
||||||
|
echo '</tr><tr>';
|
||||||
|
}
|
||||||
|
$chief = $chiefs[$chiefLevel] ?? ['name' => '-', 'npc' => 0];
|
||||||
|
$officerLevelText = getOfficerLevelText($chiefLevel, $nation['level']);
|
||||||
|
$chiefText = getColoredName($chief['name'], $chief['npc']);
|
||||||
|
echo "<td class='center bg1'>{$officerLevelText}</td>
|
||||||
|
<td class='center'>{$chiefText}</td>";
|
||||||
|
}
|
||||||
|
echo "</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>".getLevel(12, $nation['level'])."</td>
|
<td align=center class='bg1'>외교권자</td><td colspan=5>";
|
||||||
<td align=center>$l12</td>
|
echo join(', ', $ambassadors);
|
||||||
<td align=center id=bg1>".getLevel(11, $nation['level'])."</td>
|
echo "</td><td align=center class='bg1'>조언자</td><td align=center >";
|
||||||
<td align=center>$l11</td>
|
echo count($auditors) . '명';
|
||||||
<td align=center id=bg1>".getLevel(10, $nation['level'])."</td>
|
echo "</td></tr>
|
||||||
<td align=center>$l10</td>
|
|
||||||
<td align=center id=bg1>".getLevel( 9, $nation['level'])."</td>
|
|
||||||
<td align=center>$l9</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align=center id=bg1>".getLevel( 8, $nation['level'])."</td>
|
|
||||||
<td align=center>$l8</td>
|
|
||||||
<td align=center id=bg1>".getLevel( 7, $nation['level'])."</td>
|
|
||||||
<td align=center>$l7</td>
|
|
||||||
<td align=center id=bg1>".getLevel( 6, $nation['level'])."</td>
|
|
||||||
<td align=center>$l6</td>
|
|
||||||
<td align=center id=bg1>".getLevel( 5, $nation['level'])."</td>
|
|
||||||
<td align=center>$l5</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=8>";
|
<td colspan=8>";
|
||||||
if ($nation['level'] > 0) {
|
if ($nation['level'] > 0) {
|
||||||
echo "속령 일람 : ";
|
echo "속령 일람 : ";
|
||||||
|
|
||||||
for($j=0; $j < $citycount; $j++) {
|
foreach ($nation['cities'] as $cityID => $cityName) {
|
||||||
$city = MYDB_fetch_array($cityresult);
|
if ($cityID == $nation['capital']) {
|
||||||
if($city['city'] == $nation['capital']) {
|
echo "<font color=cyan>[{$cityName}]</font>, ";
|
||||||
echo "<font color=cyan>[{$city['name']}]</font>, ";
|
|
||||||
} else {
|
} else {
|
||||||
echo "{$city['name']}, ";
|
echo "{$cityName}, ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$query = "select name from city where city='{$level12['city']}'"; // 군주 위치 도시 이름
|
$cityName = CityConst::byID($chiefs[12]['city'])->name;
|
||||||
$cityResult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$city = MYDB_fetch_array($cityResult);
|
|
||||||
|
|
||||||
echo "현재 위치 : <font color=yellow>{$city['name']}</font>";
|
echo "현재 위치 : <font color=yellow>{$cityName}</font>";
|
||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=8> 장수 일람 : ";
|
<td colspan=8> 장수 일람 : ";
|
||||||
for($j=0; $j < $gencount; $j++) {
|
foreach ($generals as $general) {
|
||||||
$general = MYDB_fetch_array($genresult);
|
echo formatName($general['name'], $general['npc']).', ';
|
||||||
if($general['npc'] >= 2) { echo "<font color=cyan>{$general['name']}</font>, "; }
|
|
||||||
elseif($general['npc'] == 1) { echo "<font color=skyblue>{$general['name']}</font>, "; }
|
|
||||||
else { echo "{$general['name']}, "; }
|
|
||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
</td>
|
</td>
|
||||||
@@ -201,14 +155,6 @@ for($i=1; $i <= $count; $i++) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//재야
|
//재야
|
||||||
$query = "select npc,name from general where nation='0'"; // 장수 목록
|
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$gencount = MYDB_num_rows($genresult);
|
|
||||||
|
|
||||||
$query = "select name from city where nation='0'"; // 도시 이름 목록
|
|
||||||
$cityresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$citycount = MYDB_num_rows($cityresult);
|
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<table align=center width=1000 class='tb_layout bg2'>
|
<table align=center width=1000 class='tb_layout bg2'>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -216,27 +162,24 @@ echo "
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=498 align=center> </td>
|
<td width=498 align=center> </td>
|
||||||
<td width=123 align=center id=bg1>장 수</td>
|
<td width=123 align=center class='bg1'>장 수</td>
|
||||||
<td width=123 align=center>{$gencount}</td>
|
<td width=123 align=center>{$nations[0]['gennum']}</td>
|
||||||
<td width=123 align=center id=bg1>속 령</td>
|
<td width=123 align=center class='bg1'>속 령</td>
|
||||||
<td width=123 align=center>{$citycount}</td>
|
<td width=123 align=center>" . count($nations[0]['cities'] ?? []) . "</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=5> 속령 일람 : ";
|
<td colspan=5> 속령 일람 : ";
|
||||||
for($j=0; $j < $citycount; $j++) {
|
foreach ($nations[0]['cities'] ?? [] as $cityName) {
|
||||||
$city = MYDB_fetch_array($cityresult);
|
echo "{$cityName}, ";
|
||||||
echo "{$city['name']}, ";
|
|
||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=5> 장수 일람 : ";
|
<td colspan=5> 장수 일람 : ";
|
||||||
for($j=0; $j < $gencount; $j++) {
|
foreach ($nations[0]['generals'] as $general) {
|
||||||
$general = MYDB_fetch_array($genresult);
|
$generalText = getColoredName($general['name'], $general['npc']);
|
||||||
if($general['npc'] >= 2) { echo "<font color=cyan>{$general['name']}</font>, "; }
|
echo "{$generalText}, ";
|
||||||
elseif($general['npc'] == 1) { echo "<font color=skyblue>{$general['name']}</font>, "; }
|
|
||||||
else { echo "{$general['name']}, "; }
|
|
||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
</td>
|
</td>
|
||||||
@@ -246,8 +189,12 @@ echo"
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -6,14 +7,11 @@ include "func.php";
|
|||||||
|
|
||||||
$type = Util::getReq('type', 'int', 1);
|
$type = Util::getReq('type', 'int', 1);
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
if ($type <= 0 || $type > 8) {
|
if ($type <= 0 || $type > 8) {
|
||||||
$type = 1;
|
$type = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
increaseRefresh("빙의일람", 2);
|
increaseRefresh("빙의일람", 2);
|
||||||
|
|
||||||
@@ -29,20 +27,20 @@ $sel[$type] = "selected";
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 빙의일람</title>
|
<title><?= UniqueConst::$serverName ?>: 빙의일람</title>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>빙 의 일 람<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><form name=form1 method=post>정렬순서 :
|
<td>빙 의 일 람<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<form name=form1 method=post>정렬순서 :
|
||||||
<select name=type size=1>
|
<select name=type size=1>
|
||||||
<option <?= $sel[1] ?? '' ?> value=1>이름</option>
|
<option <?= $sel[1] ?? '' ?> value=1>이름</option>
|
||||||
<option <?= $sel[2] ?? '' ?> value=2>국가</option>
|
<option <?= $sel[2] ?? '' ?> value=2>국가</option>
|
||||||
@@ -53,83 +51,88 @@ $sel[$type] = "selected";
|
|||||||
<option <?= $sel[7] ?? '' ?> value=7>명성</option>
|
<option <?= $sel[7] ?? '' ?> value=7>명성</option>
|
||||||
<option <?= $sel[8] ?? '' ?> value=8>계급</option>
|
<option <?= $sel[8] ?? '' ?> value=8>계급</option>
|
||||||
</select>
|
</select>
|
||||||
<input type=submit value='정렬하기'></form>
|
<input type=submit value='정렬하기'>
|
||||||
</td></tr>
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<?php
|
<?php
|
||||||
$nationname = [];
|
$nationName = [];
|
||||||
$nationname[0] = "-";
|
$nationName[0] = "-";
|
||||||
foreach (getAllNationStaticInfo() as $nation) {
|
foreach (getAllNationStaticInfo() as $nation) {
|
||||||
$nationname[$nation['nation']] = $nation['name'];
|
$nationName[$nation['nation']] = $nation['name'];
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($type) {//FIXME: $query 처리 부실
|
$generalList = $db->query('SELECT npc,nation,name,owner_name,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general where npc=1');
|
||||||
default:
|
$generalListFromPool = $db->query('SELECT npc,nation,name,owner_name,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general JOIN select_pool on general.no = select_pool.general_id where npc=0');
|
||||||
case 1: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by binary(name)"; break;
|
|
||||||
case 2: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by nation"; break;
|
if ($generalListFromPool) {
|
||||||
case 3: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by sum desc"; break;
|
$generalList = array_merge($generalListFromPool, $generalList);
|
||||||
case 4: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by leader"; break;
|
|
||||||
case 5: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by power"; break;
|
|
||||||
case 6: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by intel"; break;
|
|
||||||
case 7: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by experience"; break;
|
|
||||||
case 8: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by dedication"; break;
|
|
||||||
}
|
}
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$gencount = MYDB_num_rows($genresult);
|
|
||||||
|
|
||||||
echo"
|
$sortType = [
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
1 => ['name', true],
|
||||||
<tr>
|
2 => ['nation', true],
|
||||||
<td width=102 align=center id=bg1>희생된 장수</td>
|
3 => ['sum', false],
|
||||||
<td width=102 align=center id=bg1>악령 이름</td>
|
4 => ['leadership', false],
|
||||||
<td width=68 align=center id=bg1>레벨</td>
|
5 => ['strength', false],
|
||||||
<td width=118 align=center id=bg1>국가</td>
|
6 => ['intel', false],
|
||||||
<td width=68 align=center id=bg1>성격</td>
|
7 => ['experience', false],
|
||||||
<td width=88 align=center id=bg1>특기</td>
|
8 => ['dedication', false],
|
||||||
<td width=68 align=center id=bg1>종능</td>
|
];
|
||||||
<td width=68 align=center id=bg1>통솔</td>
|
|
||||||
<td width=68 align=center id=bg1>무력</td>
|
|
||||||
<td width=68 align=center id=bg1>지력</td>
|
|
||||||
<td width=78 align=center id=bg1>명성</td>
|
|
||||||
<td width=78 align=center id=bg1>계급</td>
|
|
||||||
</tr>";
|
|
||||||
for ($j=0; $j < $gencount; $j++) {
|
|
||||||
$general = MYDB_fetch_array($genresult);
|
|
||||||
$nation = $nationname[$general['nation']];
|
|
||||||
|
|
||||||
if ($general['npc'] >= 2) {
|
[$sortKey, $isAsc] = $sortType[$type];
|
||||||
$name = "<font color=cyan>{$general['name']}</font>";
|
|
||||||
} elseif ($general['npc'] == 1) {
|
if ($isAsc) {
|
||||||
$name = "<font color=skyblue>{$general['name']}</font>";
|
usort($generalList, function ($lhs, $rhs) use ($sortKey) {
|
||||||
|
return $lhs[$sortKey] <=> $rhs[$sortKey];
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
$name = "{$general['name']}";
|
usort($generalList, function ($lhs, $rhs) use ($sortKey) {
|
||||||
|
return $rhs[$sortKey] <=> $lhs[$sortKey];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "
|
|
||||||
<tr>
|
|
||||||
<td align=center>{$name}</td>
|
|
||||||
<td align=center>{$general['name2']}</td>
|
|
||||||
<td align=center>Lv {$general['explevel']}</td>
|
|
||||||
<td align=center>{$nation}</td>
|
|
||||||
<td align=center>".displayCharInfo($general['personal'])."</td>
|
|
||||||
<td align=center>".displaySpecialInfo($general['special'])." / ".displaySpecialInfo($general['special2'])."</td>
|
|
||||||
<td align=center>{$general['sum']}</td>
|
|
||||||
<td align=center>{$general['leader']}</td>
|
|
||||||
<td align=center>{$general['power']}</td>
|
|
||||||
<td align=center>{$general['intel']}</td>
|
|
||||||
<td align=center>{$general['experience']}</td>
|
|
||||||
<td align=center>{$general['dedication']}</td>
|
|
||||||
</tr>";
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
</table>
|
|
||||||
";
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td width=102 align=center class='bg1'>희생된 장수</td>
|
||||||
|
<td width=102 align=center class='bg1'>악령 이름</td>
|
||||||
|
<td width=68 align=center class='bg1'>레벨</td>
|
||||||
|
<td width=118 align=center class='bg1'>국가</td>
|
||||||
|
<td width=68 align=center class='bg1'>성격</td>
|
||||||
|
<td width=88 align=center class='bg1'>특기</td>
|
||||||
|
<td width=68 align=center class='bg1'>종능</td>
|
||||||
|
<td width=68 align=center class='bg1'>통솔</td>
|
||||||
|
<td width=68 align=center class='bg1'>무력</td>
|
||||||
|
<td width=68 align=center class='bg1'>지력</td>
|
||||||
|
<td width=78 align=center class='bg1'>명성</td>
|
||||||
|
<td width=78 align=center class='bg1'>계급</td>
|
||||||
|
</tr>
|
||||||
|
<?php foreach ($generalList as $general) : ?>
|
||||||
|
<tr>
|
||||||
|
<td align=center><?= getColoredName($general['name'], $general['npc']) ?></td>
|
||||||
|
<td align=center><?= $general['owner_name'] ?></td>
|
||||||
|
<td align=center>Lv <?= $general['explevel'] ?></td>
|
||||||
|
<td align=center><?= $nationName[$general['nation']] ?></td>
|
||||||
|
<td align=center><?= displayCharInfo($general['personal']) ?></td>
|
||||||
|
<td align=center><?= displaySpecialDomesticInfo($general['special']) ?> / <?= displaySpecialWarInfo($general['special2']) ?></td>
|
||||||
|
<td align=center><?= $general['sum'] ?></td>
|
||||||
|
<td align=center><?= $general['leadership'] ?></td>
|
||||||
|
<td align=center><?= $general['strength'] ?></td>
|
||||||
|
<td align=center><?= $general['intel'] ?></td>
|
||||||
|
<td align=center><?= $general['experience'] ?></td>
|
||||||
|
<td align=center><?= $general['dedication'] ?></td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</table>
|
||||||
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
|
<tr>
|
||||||
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|||||||
@@ -1,79 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace sammo;
|
|
||||||
|
|
||||||
include "lib.php";
|
|
||||||
include "func.php";
|
|
||||||
//로그인 검사
|
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
|
||||||
$userID = Session::getUserID();
|
|
||||||
|
|
||||||
$db = DB::db();
|
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
increaseRefresh("세력도", 2);
|
|
||||||
checkTurn();
|
|
||||||
|
|
||||||
$query = "select con,turntime from general where owner='{$userID}'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
|
||||||
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
|
|
||||||
?>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<title><?=UniqueConst::$serverName?>: 세력도</title>
|
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../d_shared/common_path.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/base_map.js')?>
|
|
||||||
<?=WebUtil::printJS('js/map.js')?>
|
|
||||||
<script>
|
|
||||||
$(function(){
|
|
||||||
|
|
||||||
reloadWorldMap({
|
|
||||||
neutralView:true,
|
|
||||||
showMe:true
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/normalize.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/map.css')?>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<table align=center width=1200 class='tb_layout bg0'>
|
|
||||||
<tr><td>세 력 도<br><?=closeButton()?></td></tr>
|
|
||||||
</table>
|
|
||||||
<table align=center width=1200 height=520 class='tb_layout bg0'>
|
|
||||||
<tr height=520>
|
|
||||||
<td width=498 valign=top>
|
|
||||||
<?=getGeneralPublicRecordRecent(34)?>
|
|
||||||
</td>
|
|
||||||
<td width=698>
|
|
||||||
<?=getMapHtml()?>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td colspan=2 valign=top>
|
|
||||||
<?=getWorldHistoryRecent(34)?>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<table align=center width=1200 class='tb_layout bg0'>
|
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
|
||||||
<tr><td><?=banner()?> </td></tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -6,13 +7,12 @@ include "func.php";
|
|||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
increaseRefresh("갱신정보", 2);
|
increaseRefresh("갱신정보", 2);
|
||||||
|
|
||||||
$admin = $gameStor->getValues(['year', 'month', 'refresh', 'maxrefresh', 'maxonline']);
|
$admin = $gameStor->getValues(['year', 'month', 'refresh', 'maxrefresh', 'maxonline']);
|
||||||
|
|
||||||
$log = getRawFileLogRecent(__dir__.'/logs/'.UniqueConst::$serverID.'/_traffic.txt', 11, 100);
|
$log = getRawFileLogRecent(__DIR__ . '/logs/' . UniqueConst::$serverID . '/_traffic.txt', 11, 100);
|
||||||
|
|
||||||
$date = [];
|
$date = [];
|
||||||
$year = [];
|
$year = [];
|
||||||
@@ -31,7 +31,7 @@ foreach($log as $i=>$value){
|
|||||||
}
|
}
|
||||||
$year[] = $admin['year'];
|
$year[] = $admin['year'];
|
||||||
$month[] = $admin['month'];
|
$month[] = $admin['month'];
|
||||||
$date[] = date('Y-m-d H:i:s');
|
$date[] = TimeUtil::now();
|
||||||
|
|
||||||
if ($admin['maxrefresh'] == 0) {
|
if ($admin['maxrefresh'] == 0) {
|
||||||
$admin['maxrefresh'] = 1;
|
$admin['maxrefresh'] = 1;
|
||||||
@@ -48,19 +48,21 @@ if ($admin['maxonline'] < $curonline) {
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title><?= UniqueConst::$serverName ?>: 트래픽정보</title>
|
<title><?= UniqueConst::$serverName ?>: 트래픽정보</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<style>
|
<style>
|
||||||
.big_bar {
|
.big_bar {
|
||||||
float: left;
|
float: left;
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.big_bar span {
|
.big_bar span {
|
||||||
float: right;
|
float: right;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -80,16 +82,26 @@ span.out_bar{
|
|||||||
margin-left: 1ch;
|
margin-left: 1ch;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>트 래 픽 정 보<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>트 래 픽 정 보<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center width=1016>
|
<table align=center width=1016>
|
||||||
<tr><td align=left>
|
<tr>
|
||||||
|
<td align=left>
|
||||||
<table align=center class='tb_layout bg0'>
|
<table align=center class='tb_layout bg0'>
|
||||||
<tr><td colspan=4 align=center id=bg2><font size=5>접 속 량</font></td></tr>
|
<tr>
|
||||||
|
<td colspan=4 align=center class='bg2'>
|
||||||
|
<font size=5>접 속 량</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
$refresh[] = $admin['refresh'];
|
$refresh[] = $admin['refresh'];
|
||||||
foreach ($refresh as $i => $value) {
|
foreach ($refresh as $i => $value) {
|
||||||
@@ -98,8 +110,8 @@ foreach($refresh as $i=>$value){
|
|||||||
$dt = substr($date[$i], 11, 5); ?>
|
$dt = substr($date[$i], 11, 5); ?>
|
||||||
<tr height=30>
|
<tr height=30>
|
||||||
<td width=100 align=center><?= $year[$i] ?>년 <?= $month[$i] ?>월</td>
|
<td width=100 align=center><?= $year[$i] ?>년 <?= $month[$i] ?>월</td>
|
||||||
<td width=60 align=center id=bg2><?=$dt?></td>
|
<td width=60 align=center class='bg2'><?= $dt ?></td>
|
||||||
<td width=2 align=center id=bg1></td>
|
<td width=2 align=center class='bg1'></td>
|
||||||
<td width=320>
|
<td width=320>
|
||||||
<?php if ($w == 0) : ?>
|
<?php if ($w == 0) : ?>
|
||||||
<span class="out_bar"><?= $value ?></span>
|
<span class="out_bar"><?= $value ?></span>
|
||||||
@@ -114,9 +126,11 @@ foreach($refresh as $i=>$value){
|
|||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<tr><td colspan=4 height=5 align=center id=bg1></td></tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=4 height=30 align=center id=bg0>최고기록: <?=$admin['maxrefresh']?></td>
|
<td colspan=4 height=5 align=center class='bg1'></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=4 height=30 align=center class='bg0'>최고기록: <?= $admin['maxrefresh'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
@@ -124,7 +138,11 @@ foreach($refresh as $i=>$value){
|
|||||||
</td>
|
</td>
|
||||||
<td align=right>
|
<td align=right>
|
||||||
<table align=center class='tb_layout bg0'>
|
<table align=center class='tb_layout bg0'>
|
||||||
<tr><td colspan=4 align=center id=bg2><font size=5>접 속 자</font></td></tr>
|
<tr>
|
||||||
|
<td colspan=4 align=center class='bg2'>
|
||||||
|
<font size=5>접 속 자</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
$online[] = $curonline;
|
$online[] = $curonline;
|
||||||
foreach ($online as $i => $value) {
|
foreach ($online as $i => $value) {
|
||||||
@@ -133,8 +151,8 @@ foreach($online as $i=>$value){
|
|||||||
$dt = substr($date[$i], 11, 5); ?>
|
$dt = substr($date[$i], 11, 5); ?>
|
||||||
<tr height=30>
|
<tr height=30>
|
||||||
<td width=100 align=center><?= $year[$i] ?>년 <?= $month[$i] ?>월</td>
|
<td width=100 align=center><?= $year[$i] ?>년 <?= $month[$i] ?>월</td>
|
||||||
<td width=60 align=center id=bg2><?=$dt?></td>
|
<td width=60 align=center class='bg2'><?= $dt ?></td>
|
||||||
<td width=2 align=center id=bg1></td>
|
<td width=2 align=center class='bg1'></td>
|
||||||
<td width=320>
|
<td width=320>
|
||||||
<?php if ($w == 0) : ?>
|
<?php if ($w == 0) : ?>
|
||||||
<span class="out_bar"><?= $value ?></span>
|
<span class="out_bar"><?= $value ?></span>
|
||||||
@@ -149,16 +167,23 @@ foreach($online as $i=>$value){
|
|||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<tr><td colspan=4 height=5 align=center id=bg1></td></tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=4 height=30 align=center id=bg0>최고기록: <?=$admin['maxonline']?></td>
|
<td colspan=4 height=5 align=center class='bg1'></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=4 height=30 align=center class='bg0'>최고기록: <?= $admin['maxonline'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center class='tb_layout bg0'>
|
<table align=center class='tb_layout bg0'>
|
||||||
<tr><td colspan=3 align=center id=bg2><font size=5>주 의 대 상 자 (순간과도갱신)</font></td></tr>
|
<tr>
|
||||||
|
<td colspan=3 align=center class='bg2'>
|
||||||
|
<font size=5>주 의 대 상 자 (순간과도갱신)</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
$max_refresh = $db->queryFirstRow('SELECT sum(refresh) as refresh, sum(`connect`) as `connect` from general');
|
$max_refresh = $db->queryFirstRow('SELECT sum(refresh) as refresh, sum(`connect`) as `connect` from general');
|
||||||
$max_refresh['name'] = '접속자 총합';
|
$max_refresh['name'] = '접속자 총합';
|
||||||
@@ -166,7 +191,7 @@ $max_refresh['name'] = '접속자 총합';
|
|||||||
$refresh_result = array_merge([$max_refresh], $db->query('SELECT `name`,refresh,`connect` FROM general ORDER BY refresh DESC LIMIT 5'));
|
$refresh_result = array_merge([$max_refresh], $db->query('SELECT `name`,refresh,`connect` FROM general ORDER BY refresh DESC LIMIT 5'));
|
||||||
|
|
||||||
foreach ($refresh_result as $i => $user) {
|
foreach ($refresh_result as $i => $user) {
|
||||||
$w = round($user['refresh'] / $max_refresh['refresh'] * 100, 1);
|
$w = round($user['refresh'] / max(1, $max_refresh['refresh']) * 100, 1);
|
||||||
$w2 = round(100 - $w, 1);
|
$w2 = round(100 - $w, 1);
|
||||||
$color = getTrafficColor($w);
|
$color = getTrafficColor($w);
|
||||||
?>
|
?>
|
||||||
@@ -188,10 +213,15 @@ foreach ($refresh_result as $i=>$user) {
|
|||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
@@ -214,9 +244,37 @@ function getHex($dec)
|
|||||||
function getHexCode($hex)
|
function getHexCode($hex)
|
||||||
{
|
{
|
||||||
switch ($hex) {
|
switch ($hex) {
|
||||||
case 0: return "0"; case 1: return "1"; case 2: return "2"; case 3: return "3";
|
case 0:
|
||||||
case 4: return "4"; case 5: return "5"; case 6: return "6"; case 7: return "7";
|
return "0";
|
||||||
case 8: return "8"; case 9: return "9"; case 10: return "A"; case 11: return "B";
|
case 1:
|
||||||
case 12: return "C"; case 13: return "D"; case 14: return "E"; case 15: return "F";
|
return "1";
|
||||||
|
case 2:
|
||||||
|
return "2";
|
||||||
|
case 3:
|
||||||
|
return "3";
|
||||||
|
case 4:
|
||||||
|
return "4";
|
||||||
|
case 5:
|
||||||
|
return "5";
|
||||||
|
case 6:
|
||||||
|
return "6";
|
||||||
|
case 7:
|
||||||
|
return "7";
|
||||||
|
case 8:
|
||||||
|
return "8";
|
||||||
|
case 9:
|
||||||
|
return "9";
|
||||||
|
case 10:
|
||||||
|
return "A";
|
||||||
|
case 11:
|
||||||
|
return "B";
|
||||||
|
case 12:
|
||||||
|
return "C";
|
||||||
|
case 13:
|
||||||
|
return "D";
|
||||||
|
case 14:
|
||||||
|
return "E";
|
||||||
|
case 15:
|
||||||
|
return "F";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -8,16 +9,13 @@ $session = Session::requireGameLogin()->setReadOnly();
|
|||||||
$userID = Session::getUserID();
|
$userID = Session::getUserID();
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
increaseRefresh("설문조사", 1);
|
increaseRefresh("설문조사", 1);
|
||||||
|
|
||||||
$isVoteAdmin = in_array('vote', $session->acl[DB::prefix()] ?? []);
|
$isVoteAdmin = in_array('vote', $session->acl[DB::prefix()] ?? []);
|
||||||
$isVoteAdmin |= $session->userGrade >= 5;
|
$isVoteAdmin = $isVoteAdmin || $session->userGrade >= 5;
|
||||||
|
|
||||||
$query = "select no,vote from general where owner='{$userID}'";
|
$me = $db->queryFirstRow('SELECT no,vote from general where owner=%i', $userID);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$admin = $gameStor->getValues(['develcost', 'voteopen', 'vote_title', 'vote', 'votecomment']);
|
$admin = $gameStor->getValues(['develcost', 'voteopen', 'vote_title', 'vote', 'votecomment']);
|
||||||
$vote_title = $admin['vote_title'] ?? '-';
|
$vote_title = $admin['vote_title'] ?? '-';
|
||||||
@@ -26,13 +24,14 @@ $vote = $admin['vote']?:['-'];
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title><?= UniqueConst::$serverName ?>: 설문조사</title>
|
<title><?= UniqueConst::$serverName ?>: 설문조사</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<style>
|
<style>
|
||||||
.little_bar {
|
.little_bar {
|
||||||
float: left;
|
float: left;
|
||||||
@@ -42,6 +41,8 @@ $vote = $admin['vote']?:['-'];
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function captureKey(e) {
|
function captureKey(e) {
|
||||||
if (e.keyCode == 13 && e.srcElement.type == 'text') {
|
if (e.keyCode == 13 && e.srcElement.type == 'text') {
|
||||||
@@ -53,13 +54,20 @@ function captureKey(e) {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>설 문 조 사<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>설 문 조 사<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<form name=form1 action=c_vote.php method=post>
|
<form name=form1 action=c_vote.php method=post>
|
||||||
<tr><td colspan=3 align=center id=bg2><font size=5>설 문 조 사 (<?=$admin['develcost']*5?>금과 추첨으로 유니크템 증정!)</font></td></tr>
|
<tr>
|
||||||
|
<td colspan=3 align=center class='bg2'>
|
||||||
|
<font size=5>설 문 조 사 (<?= $admin['develcost'] * 5 ?>금과 추첨으로 유니크템 증정!)</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
if ($isVoteAdmin) {
|
if ($isVoteAdmin) {
|
||||||
@@ -75,18 +83,13 @@ if ($isVoteAdmin) {
|
|||||||
$vote_title = Tag2Code($vote_title);
|
$vote_title = Tag2Code($vote_title);
|
||||||
echo "
|
echo "
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=2 width=148 align=center id=bg1>제 목</td>
|
<td colspan=2 width=148 align=center class='bg1'>제 목</td>
|
||||||
<td width=848 align=left> {$vote_title}</td>
|
<td width=848 align=left> {$vote_title}</td>
|
||||||
</tr>
|
</tr>
|
||||||
";
|
";
|
||||||
|
|
||||||
$query = "select no from general where vote>0 and npc<2";
|
$voteCount = $db->queryFirstField('SELECT count(no) FROM general WHERE vote>0 AND npc<2');
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
$allCount = $db->queryFirstField('SELECT count(no) FROM general WHERE npc<2');
|
||||||
$voteCount = MYDB_num_rows($result);
|
|
||||||
|
|
||||||
$query = "select no from general where npc<2";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$allCount = MYDB_num_rows($result);
|
|
||||||
|
|
||||||
$percentage = round($voteCount / $allCount * 100, 1);
|
$percentage = round($voteCount / $allCount * 100, 1);
|
||||||
|
|
||||||
@@ -102,9 +105,7 @@ for ($i=1; $i < $voteTypeCount; $i++) {
|
|||||||
<input type=radio name=sel value={$i}>
|
<input type=radio name=sel value={$i}>
|
||||||
";
|
";
|
||||||
} elseif ($admin['voteopen'] >= 1 || $isVoteAdmin) {
|
} elseif ($admin['voteopen'] >= 1 || $isVoteAdmin) {
|
||||||
$query = "select no from general where vote='{$i}'";
|
$vCount = $db->queryFirstField('SELECT count(no) FROM general WHERE vote=%i', $i);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$vCount = MYDB_num_rows($result);
|
|
||||||
|
|
||||||
$per = @round($vCount / $voteCount * 100, 1);
|
$per = @round($vCount / $voteCount * 100, 1);
|
||||||
echo "{$vCount} 표 ({$per}%)";
|
echo "{$vCount} 표 ({$per}%)";
|
||||||
@@ -157,7 +158,7 @@ echo "
|
|||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=4 align=center id=bg1>댓 글</td>
|
<td colspan=4 align=center class='bg1'>댓 글</td>
|
||||||
</tr>
|
</tr>
|
||||||
";
|
";
|
||||||
for ($i = 0; $i < $commentCount; $i++) {
|
for ($i = 0; $i < $commentCount; $i++) {
|
||||||
@@ -186,7 +187,9 @@ if ($me['no'] > 0) {
|
|||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td colspan=3 align=center id=bg2><font size=5>
|
<tr>
|
||||||
|
<td colspan=3 align=center class='bg2'>
|
||||||
|
<font size=5>
|
||||||
전 체 통 계
|
전 체 통 계
|
||||||
<?php
|
<?php
|
||||||
if ($isVoteAdmin) {
|
if ($isVoteAdmin) {
|
||||||
@@ -240,8 +243,7 @@ if ($admin['voteopen'] >= 1 || $isVoteAdmin) {
|
|||||||
$per = round(($totalVote[$i] ?? 0) * 100 / $memCount, 1);
|
$per = round(($totalVote[$i] ?? 0) * 100 / $memCount, 1);
|
||||||
if ($i == $voteTypeCount - 1) {
|
if ($i == $voteTypeCount - 1) {
|
||||||
$per = 100 - $totalPer;
|
$per = 100 - $totalPer;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$totalPer += $per;
|
$totalPer += $per;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,9 +266,7 @@ if ($admin['voteopen'] >= 1 || $isVoteAdmin) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
|
if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
|
||||||
$query = "select no from general where nation=0 and npc<2";
|
$memCount = $db->queryFirstField('SELECT count(no) FROM general WHERE nation=0 AND npc <2');
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$memCount = MYDB_num_rows($result);
|
|
||||||
if ($memCount == 0) {
|
if ($memCount == 0) {
|
||||||
$memCount = 1;
|
$memCount = 1;
|
||||||
}
|
}
|
||||||
@@ -288,8 +288,7 @@ if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
|
|||||||
$per = round(Util::array_get($nationVote[0][$i], 0) / $memCount * 100, 1);
|
$per = round(Util::array_get($nationVote[0][$i], 0) / $memCount * 100, 1);
|
||||||
if ($i == $voteTypeCount - 1) {
|
if ($i == $voteTypeCount - 1) {
|
||||||
$per = 100 - $totalPer;
|
$per = 100 - $totalPer;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$totalPer += $per;
|
$totalPer += $per;
|
||||||
}
|
}
|
||||||
// if($per < 5) { $vote['cnt'] = " "; }
|
// if($per < 5) { $vote['cnt'] = " "; }
|
||||||
@@ -308,23 +307,15 @@ if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
|
|||||||
</tr>
|
</tr>
|
||||||
";
|
";
|
||||||
|
|
||||||
$query = "select nation,color,name,gennum from nation order by gennum desc";
|
foreach ($db->query('SELECT nation,color,name,gennum from nation order by gennum desc') as $i => $nation) {
|
||||||
$nationResult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
$memCount = $db->queryFirstField('SELECT count(no) FROM general WHERE nation=%i AND npc<2', $nation['nation']);
|
||||||
$nationcount = MYDB_num_rows($nationResult);
|
|
||||||
for ($i=0; $i < $nationcount; $i++) {
|
|
||||||
$nation = MYDB_fetch_array($nationResult);
|
|
||||||
|
|
||||||
$query = "select no from general where nation='{$nation['nation']}' and npc<2";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$memCount = MYDB_num_rows($result);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$voteCount = $nationVoteCount[$nation['nation']] ?? 0;
|
$voteCount = $nationVoteCount[$nation['nation']] ?? 0;
|
||||||
if ($memCount == 0) {
|
if ($memCount == 0) {
|
||||||
$percentage = 100;
|
$percentage = 100;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$percentage = round($voteCount / $memCount * 100, 1);
|
$percentage = round($voteCount / $memCount * 100, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -343,12 +334,11 @@ if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$per = round($nationVote[$nation['nation']][$k]??0 / $memCount * 100, 1);
|
$per = round(($nationVote[$nation['nation']][$k] ?? 0) / $memCount * 100, 1);
|
||||||
|
|
||||||
if ($i == $voteTypeCount - 1) {
|
if ($i == $voteTypeCount - 1) {
|
||||||
$per = 100 - $totalPer;
|
$per = 100 - $totalPer;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$totalPer += $per;
|
$totalPer += $per;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -373,10 +363,15 @@ if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
|
|||||||
</form>
|
</form>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
@@ -388,14 +383,30 @@ function getVoteColor($type)
|
|||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
default:
|
default:
|
||||||
case 0: $color = "black"; break;
|
case 0:
|
||||||
case 1: $color = "red"; break;
|
$color = "black";
|
||||||
case 2: $color = "orange"; break;
|
break;
|
||||||
case 3: $color = "yellow"; break;
|
case 1:
|
||||||
case 4: $color = "green"; break;
|
$color = "red";
|
||||||
case 5: $color = "blue"; break;
|
break;
|
||||||
case 6: $color = "navy"; break;
|
case 2:
|
||||||
case 7: $color = "purple"; break;
|
$color = "orange";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$color = "yellow";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$color = "green";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$color = "blue";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$color = "navy";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$color = "purple";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $color;
|
return $color;
|
||||||
@@ -408,9 +419,15 @@ function getNewColor($type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 2: $color = "black"; break;
|
case 2:
|
||||||
case 3: $color = "black"; break;
|
$color = "black";
|
||||||
default:$color = "white"; break;
|
break;
|
||||||
|
case 3:
|
||||||
|
$color = "black";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$color = "white";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $color;
|
return $color;
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
|
APIHelper::launch(dirname(__FILE__), $_GET['path']??null);
|
||||||
|
|
||||||
$session = Session::requireGameLogin([])->setReadOnly();
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -7,21 +8,16 @@ include "func.php";
|
|||||||
$msg = Util::getReq('msg');
|
$msg = Util::getReq('msg');
|
||||||
$msg2 = Util::getReq('msg2');
|
$msg2 = Util::getReq('msg2');
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
$userID = Session::getUserID();
|
$userID = Session::getUserID();
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
increaseRefresh("거래장", 2);
|
increaseRefresh("거래장", 2);
|
||||||
|
|
||||||
$query = "select no,special,con,turntime from general where owner='{$userID}'";
|
$me = $db->queryFirstRow('SELECT no,special,con,turntime from general where owner=%i', $userID);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
$con = checkLimit($me['con']);
|
||||||
if ($con >= 2) {
|
if ($con >= 2) {
|
||||||
@@ -29,17 +25,12 @@ if ($con >= 2) {
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = "select no from auction where no1='{$me['no']}'";
|
$tradeCount = $db->queryFirstField('SELECT count(no) FROM auction WHERE no1=%i', $me['no']);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
$bidCount = $db->queryFirstField('SELECT count(no) FROM auction where no2=%i', $me['no']);
|
||||||
$tradeCount = MYDB_num_rows($result);
|
|
||||||
|
|
||||||
$query = "select no from auction where no2='{$me['no']}'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$bidCount = MYDB_num_rows($result);
|
|
||||||
|
|
||||||
$btCount = $tradeCount + $bidCount;
|
$btCount = $tradeCount + $bidCount;
|
||||||
|
|
||||||
if ($session->userGrade >= 5 || ($me['special'] != 30 && $btCount < 1) || ($me['special'] == 30 && $btCount < 3)) {
|
if ($session->userGrade >= 5 || $btCount < 1) {
|
||||||
$btn = "submit";
|
$btn = "submit";
|
||||||
} else {
|
} else {
|
||||||
$btn = "hidden";
|
$btn = "hidden";
|
||||||
@@ -54,23 +45,37 @@ if ($msg2 == "") {
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title><?= UniqueConst::$serverName ?>: 거래장</title>
|
<title><?= UniqueConst::$serverName ?>: 거래장</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>거 래 장<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td align=center id=bg2><font color=orange size=6><b>거 래 장</b></font><input type=button value='갱신' onclick=location.replace('b_auction.php')></td></tr>
|
<td>거 래 장<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align=center class='bg2'>
|
||||||
|
<font color=orange size=6><b>거 래 장</b></font><input type=button value='갱신' onclick="location.replace('b_auction.php')">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<form method=post action=c_auction.php>
|
<form method=post action=c_auction.php>
|
||||||
<tr><td colspan=11 align=center bgcolor=orange><font size=5>팝 니 다</font></td></tr>
|
<tr>
|
||||||
<tr align=center id=bg1>
|
<td colspan=11 align=center bgcolor=orange>
|
||||||
|
<font size=5>팝 니 다</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr align=center class='bg1'>
|
||||||
<td width=68>거래번호</td>
|
<td width=68>거래번호</td>
|
||||||
<td width=48>선택</td>
|
<td width=48>선택</td>
|
||||||
<td width=98>판매자</td>
|
<td width=98>판매자</td>
|
||||||
@@ -84,20 +89,14 @@ if ($msg2 == "") {
|
|||||||
<td width=148>거래종료</td>
|
<td width=148>거래종료</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
$query = "select * from auction where type=0 order by expire";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$count = MYDB_num_rows($result);
|
|
||||||
|
|
||||||
$chk = 0;
|
$chk = 0;
|
||||||
for ($i=0; $i < $count; $i++) {
|
foreach ($db->query('SELECT * from auction where type=0 order by expire') as $auction) {
|
||||||
$auction = MYDB_fetch_array($result);
|
|
||||||
$itemname = GetStuffName($auction['stuff']);
|
|
||||||
$radio = "";
|
$radio = "";
|
||||||
$alert = "";
|
$alert = "";
|
||||||
$alert2 = "";
|
$alert2 = "";
|
||||||
if ($auction['no1'] == $me['no']) {
|
if ($auction['no1'] == $me['no']) {
|
||||||
$radio = " disabled";
|
$radio = " disabled";
|
||||||
} elseif ($auction['no2'] > 0 && $auction['amount'] * 2 <= $auction['value'] && $auction['stuff'] == 0) {
|
} elseif ($auction['no2'] > 0 && $auction['amount'] * 2 <= $auction['value']) {
|
||||||
$radio = " disabled";
|
$radio = " disabled";
|
||||||
$alert = "<font color=red>";
|
$alert = "<font color=red>";
|
||||||
$alert2 = "</font>";
|
$alert2 = "</font>";
|
||||||
@@ -111,15 +110,13 @@ for ($i=0; $i < $count; $i++) {
|
|||||||
}
|
}
|
||||||
$pv = round($auction['value'] * 100 / $auction['amount']) / 100 + 0.001;
|
$pv = round($auction['value'] * 100 / $auction['amount']) / 100 + 0.001;
|
||||||
$pv = substr((string)$pv, 0, 4);
|
$pv = substr((string)$pv, 0, 4);
|
||||||
if ($auction['stuff'] != 0) {
|
|
||||||
$pv = '-';
|
|
||||||
}
|
|
||||||
echo "
|
echo "
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<td>{$auction['no']}</td>
|
<td>{$auction['no']}</td>
|
||||||
<td><input type=radio name=sel value={$auction['no']}{$radio}></td>
|
<td><input type=radio name=sel value={$auction['no']}{$radio}></td>
|
||||||
<td>{$auction['name1']}</td>
|
<td>{$auction['name1']}</td>
|
||||||
<td>{$itemname}</td>
|
<td>쌀</td>
|
||||||
<td>{$auction['amount']}</td>
|
<td>{$auction['amount']}</td>
|
||||||
<td>금 {$auction['cost']}</td>
|
<td>금 {$auction['cost']}</td>
|
||||||
<td>{$alert}금 {$auction['value']}{$alert2}</td>
|
<td>{$alert}금 {$auction['value']}{$alert2}</td>
|
||||||
@@ -132,23 +129,21 @@ for ($i=0; $i < $count; $i++) {
|
|||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<tr height=25>
|
<tr height=25>
|
||||||
<td align=center id=bg1>등록결과</td>
|
<td align=center class='bg1'>등록결과</td>
|
||||||
<td colspan=10><?= ConvertLog($msg) ?></td>
|
<td colspan=10><?= ConvertLog($msg) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>입찰등록</td>
|
<td align=center class='bg1'>입찰등록</td>
|
||||||
<td colspan=10>
|
<td colspan=10>
|
||||||
지불할 금액: <input type=text style=color:white;background-color:black; size=6 maxlength=6 name=value>
|
지불할 금액: <input type=text style=color:white;background-color:black; size=6 maxlength=6 name=value>
|
||||||
<input type=<?= $btn ?> name=btn value='구매시도' onclick='return confirm("정말 입찰하시겠습니까?");'>
|
<input type=<?= $btn ?> name=btn value='구매시도' onclick='return confirm("정말 입찰하시겠습니까?");'>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>거래등록</td>
|
<td align=center class='bg1'>거래등록</td>
|
||||||
<td colspan=10>
|
<td colspan=10>
|
||||||
종료: <input type=text style=color:white;background-color:black; size=2 maxlength=2 name=term value=12>턴 후
|
종료: <input type=text style=color:white;background-color:black; size=2 maxlength=2 name=term value=12>턴 후
|
||||||
물품: <select size=1 name=stuff style=color:white;background-color:black;>
|
물품: 쌀
|
||||||
<option style=color:white; value=0>쌀</option>
|
|
||||||
</select>
|
|
||||||
판매량: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=amount value=1000>
|
판매량: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=amount value=1000>
|
||||||
시작가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=cost value=500>
|
시작가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=cost value=500>
|
||||||
즉구가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=topv value=2000>
|
즉구가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=topv value=2000>
|
||||||
@@ -167,8 +162,12 @@ for ($i=0; $i < $count; $i++) {
|
|||||||
<br>
|
<br>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<form method=post action=c_auction.php>
|
<form method=post action=c_auction.php>
|
||||||
<tr><td colspan=11 align=center bgcolor=skyblue><font size=5>삽 니 다</font></td></tr>
|
<tr>
|
||||||
<tr align=center id=bg1>
|
<td colspan=11 align=center bgcolor=skyblue>
|
||||||
|
<font size=5>삽 니 다</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr align=center class='bg1'>
|
||||||
<td width=68>거래번호</td>
|
<td width=68>거래번호</td>
|
||||||
<td width=48>선택</td>
|
<td width=48>선택</td>
|
||||||
<td width=98>구매자</td>
|
<td width=98>구매자</td>
|
||||||
@@ -182,20 +181,14 @@ for ($i=0; $i < $count; $i++) {
|
|||||||
<td width=148>거래종료</td>
|
<td width=148>거래종료</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
$query = "select * from auction where type=1 order by expire";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$count = MYDB_num_rows($result);
|
|
||||||
|
|
||||||
$chk = 0;
|
$chk = 0;
|
||||||
for ($i=0; $i < $count; $i++) {
|
foreach ($db->query('SELECT * from auction where type=1 order by expire') as $auction) {
|
||||||
$auction = MYDB_fetch_array($result);
|
|
||||||
$itemname = GetStuffName($auction['stuff']);
|
|
||||||
$radio = "";
|
$radio = "";
|
||||||
$alert = "";
|
$alert = "";
|
||||||
$alert2 = "";
|
$alert2 = "";
|
||||||
if ($auction['no1'] == $me['no']) {
|
if ($auction['no1'] == $me['no']) {
|
||||||
$radio = " disabled";
|
$radio = " disabled";
|
||||||
} elseif ($auction['no2'] > 0 && $auction['amount'] >= $auction['value'] * 2 && $auction['stuff'] == 0) {
|
} elseif ($auction['no2'] > 0 && $auction['amount'] >= $auction['value'] * 2) {
|
||||||
$radio = " disabled";
|
$radio = " disabled";
|
||||||
$alert = "<font color=red>";
|
$alert = "<font color=red>";
|
||||||
$alert2 = "</font>";
|
$alert2 = "</font>";
|
||||||
@@ -209,15 +202,12 @@ for ($i=0; $i < $count; $i++) {
|
|||||||
}
|
}
|
||||||
$pv = round($auction['value'] * 100 / $auction['amount']) / 100 + 0.001;
|
$pv = round($auction['value'] * 100 / $auction['amount']) / 100 + 0.001;
|
||||||
$pv = substr((string)$pv, 0, 4);
|
$pv = substr((string)$pv, 0, 4);
|
||||||
if ($auction['stuff'] != 0) {
|
|
||||||
$pv = '-';
|
|
||||||
}
|
|
||||||
echo "
|
echo "
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<td>{$auction['no']}</td>
|
<td>{$auction['no']}</td>
|
||||||
<td><input type=radio name=sel value={$auction['no']}{$radio}></td>
|
<td><input type=radio name=sel value={$auction['no']}{$radio}></td>
|
||||||
<td>{$auction['name1']}</td>
|
<td>{$auction['name1']}</td>
|
||||||
<td>{$itemname}</td>
|
<td>쌀</td>
|
||||||
<td>{$auction['amount']}</td>
|
<td>{$auction['amount']}</td>
|
||||||
<td>금 {$auction['cost']}</td>
|
<td>금 {$auction['cost']}</td>
|
||||||
<td>{$alert}금 {$auction['value']}{$alert2}</td>
|
<td>{$alert}금 {$auction['value']}{$alert2}</td>
|
||||||
@@ -230,23 +220,21 @@ for ($i=0; $i < $count; $i++) {
|
|||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<tr height=25>
|
<tr height=25>
|
||||||
<td align=center id=bg1>등록결과</td>
|
<td align=center class='bg1'>등록결과</td>
|
||||||
<td colspan=10><?= ConvertLog($msg2) ?></td>
|
<td colspan=10><?= ConvertLog($msg2) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>입찰등록</td>
|
<td align=center class='bg1'>입찰등록</td>
|
||||||
<td colspan=10>
|
<td colspan=10>
|
||||||
수령할 금액: <input type=text style=color:white;background-color:black; size=6 maxlength=6 name=value>
|
수령할 금액: <input type=text style=color:white;background-color:black; size=6 maxlength=6 name=value>
|
||||||
<input type=<?= $btn ?> name=btn value='판매시도' onclick='return confirm("정말 입찰하시겠습니까?");'>
|
<input type=<?= $btn ?> name=btn value='판매시도' onclick='return confirm("정말 입찰하시겠습니까?");'>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>거래등록</td>
|
<td align=center class='bg1'>거래등록</td>
|
||||||
<td colspan=10>
|
<td colspan=10>
|
||||||
종료: <input type=text style=color:white;background-color:black; size=2 maxlength=2 name=term value=12>턴 후
|
종료: <input type=text style=color:white;background-color:black; size=2 maxlength=2 name=term value=12>턴 후
|
||||||
물품: <select size=1 name=stuff style=color:white;background-color:black;>
|
물품: 쌀
|
||||||
<option style=color:white; value=0>쌀</option>
|
|
||||||
</select>
|
|
||||||
구입량: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=amount value=1000>
|
구입량: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=amount value=1000>
|
||||||
시작가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=cost value=2000>
|
시작가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=cost value=2000>
|
||||||
즉구가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=topv value=500>
|
즉구가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=topv value=500>
|
||||||
@@ -264,12 +252,23 @@ for ($i=0; $i < $count; $i++) {
|
|||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td align=center id=bg2><font size=5>최 근 기 록</font></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td align=center class='bg2'>
|
||||||
|
<font size=5>최 근 기 록</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<?= getAuctionLogRecent(20) ?>
|
<?= getAuctionLogRecent(20) ?>
|
||||||
</td></tr>
|
</td>
|
||||||
<tr><td align=center id=bg2><font size=5>도 움 말</font></td></tr>
|
</tr>
|
||||||
<tr><td>
|
<tr>
|
||||||
|
<td align=center class='bg2'>
|
||||||
|
<font size=5>도 움 말</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<font color=white size=2>
|
<font color=white size=2>
|
||||||
ㆍ판매거래는 거래자가 판매할 물품을 거래하면, 구입을 희망하는 사람이 현재가보다 높게 입찰하여 구입하는 방식입니다.<br>
|
ㆍ판매거래는 거래자가 판매할 물품을 거래하면, 구입을 희망하는 사람이 현재가보다 높게 입찰하여 구입하는 방식입니다.<br>
|
||||||
ㆍ<font color=cyan>Hint</font>) 쌀이 귀한 경우는 입찰자가 많아서 자연스레 단가가 오르게 됩니다. (해당 물품을 사려는 가격이 오름)<br>
|
ㆍ<font color=cyan>Hint</font>) 쌀이 귀한 경우는 입찰자가 많아서 자연스레 단가가 오르게 됩니다. (해당 물품을 사려는 가격이 오름)<br>
|
||||||
@@ -293,9 +292,15 @@ for ($i=0; $i < $count; $i++) {
|
|||||||
ㆍ<font color=cyan>Hint</font>) 단가가 낮으면(<1.00) 금이 비싸므로 구매가 이득입니다.<br>
|
ㆍ<font color=cyan>Hint</font>) 단가가 낮으면(<1.00) 금이 비싸므로 구매가 이득입니다.<br>
|
||||||
ㆍ즐거운 거래!
|
ㆍ즐거운 거래!
|
||||||
</font>
|
</font>
|
||||||
</td></tr>
|
</td>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
</tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<tr>
|
||||||
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -10,13 +11,31 @@ $v->rule('required', 'gen')
|
|||||||
|
|
||||||
$btn = Util::getReq('btn');
|
$btn = Util::getReq('btn');
|
||||||
$gen = Util::getReq('gen', 'int', 0);
|
$gen = Util::getReq('gen', 'int', 0);
|
||||||
$type = Util::getReq('type', 'int', 0);
|
$reqQueryType = Util::getReq('query_type', 'string', null);
|
||||||
|
|
||||||
if ($type < 0 || $type > 3) {
|
// $queryTypeText, $reqArgType(0=>None, 1=>AdditionalColumn, 2=>rankVal, 3=>aux), $comp
|
||||||
$type = 0;
|
$queryMap = [
|
||||||
|
'turntime' => ['최근턴', 0, function ($lhs, $rhs) {
|
||||||
|
return - ($lhs['turntime'] <=> $rhs['turntime']);
|
||||||
|
}],
|
||||||
|
'recent_war' => ['최근전투', 1, function ($lhs, $rhs) {
|
||||||
|
return - ($lhs['recent_war'] <=> $rhs['recent_war']);
|
||||||
|
}],
|
||||||
|
'name' => ['장수명', 0, function ($lhs, $rhs) {
|
||||||
|
if ($lhs['npc'] !== $rhs['npc']) {
|
||||||
|
return $lhs['npc'] <=> $rhs['npc'];
|
||||||
|
}
|
||||||
|
return $lhs['name'] <=> $rhs['name'];
|
||||||
|
}],
|
||||||
|
'warnum' => ['전투수', 2, function ($lhs, $rhs) {
|
||||||
|
return - ($lhs['warnum'] <=> $rhs['warnum']);
|
||||||
|
}]
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($reqQueryType === null || !key_exists($reqQueryType, $queryMap)) {
|
||||||
|
$reqQueryType = Util::array_first_key($queryMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
extractMissingPostToGlobals();
|
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
@@ -24,24 +43,16 @@ $userID = Session::getUserID();
|
|||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
increaseRefresh("감찰부", 2);
|
increaseRefresh("감찰부", 2);
|
||||||
//전투 추진을 위해 갱신
|
//전투 추진을 위해 갱신
|
||||||
checkTurn();
|
TurnExecutionHelper::executeAllCommand();
|
||||||
$gameStor->resetCache();
|
$gameStor->resetCache();
|
||||||
|
|
||||||
$query = "select nation from general where no='$gen'";
|
$testGeneralNationID = $db->queryFirstField('SELECT nation FROM general WHERE no = %i', $gen);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$general = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$query = "select no,nation,level,con,turntime,belong from general where owner='{$userID}'";
|
$me = $db->queryFirstRow('SELECT no,nation,officer_level,con,turntime,belong,permission,penalty from general where owner=%i', $userID);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
$nationID = $me['nation'];
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$query = "select secretlimit from nation where nation='{$me['nation']}'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$nation = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
$con = checkLimit($me['con']);
|
||||||
if ($con >= 2) {
|
if ($con >= 2) {
|
||||||
@@ -49,15 +60,17 @@ if ($con >= 2) {
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
//재야인 경우
|
$permission = checkSecretPermission($me);
|
||||||
$meLevel = $me['level'];
|
if ($permission < 0) {
|
||||||
if ($meLevel == 0 || ($meLevel == 1 && $me['belong'] < $nation['secretlimit'])) {
|
echo '국가에 소속되어있지 않습니다.';
|
||||||
echo "수뇌부가 아니거나 사관년도가 부족합니다.";
|
die();
|
||||||
exit();
|
} else if ($permission < 1) {
|
||||||
|
echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.";
|
||||||
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
//잘못된 접근
|
//잘못된 접근
|
||||||
if ($general['nation'] != $me['nation']) {
|
if ($testGeneralNationID != $nationID) {
|
||||||
$gen = 0;
|
$gen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,9 +78,38 @@ if ($btn == '정렬하기') {
|
|||||||
$gen = 0;
|
$gen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$sel = [];
|
|
||||||
$sel[$type] = "selected";
|
|
||||||
|
|
||||||
|
[$queryTypeText, $reqArgType, $comp] = $queryMap[$reqQueryType];
|
||||||
|
if ($reqArgType === 0) {
|
||||||
|
$generalBasicList = $db->query('SELECT no, name, npc, turntime, officer_level FROM general WHERE nation = %i', $nationID);
|
||||||
|
} else if ($reqArgType === 1) {
|
||||||
|
$generalBasicList = $db->query('SELECT no, name, npc, turntime, officer_level, %b FROM general WHERE nation = %i', $reqQueryType, $nationID);
|
||||||
|
} else if ($reqArgType === 2) {
|
||||||
|
$generalBasicList = $db->query(
|
||||||
|
'SELECT no, name, npc, turntime, officer_level, value as %b
|
||||||
|
FROM general LEFT JOIN rank_data
|
||||||
|
ON general.no = rank_data.general_id
|
||||||
|
WHERE rank_data.type = %s AND general.nation = %i',
|
||||||
|
$reqQueryType,
|
||||||
|
$reqQueryType,
|
||||||
|
$nationID
|
||||||
|
);
|
||||||
|
} else if ($reqArgType === 3) {
|
||||||
|
$generalBasicList = array_map(function ($arr) {
|
||||||
|
$arr['aux'] = Json::decode($arr['aux']);
|
||||||
|
return $arr;
|
||||||
|
}, $db->query('SELECT no, name, npc, turntime, officer_level, aux FROM general WHERE nation = %i', $nationID));
|
||||||
|
} else {
|
||||||
|
throw new \sammo\MustNotBeReachedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
usort($generalBasicList, $comp);
|
||||||
|
|
||||||
|
if (!$gen) {
|
||||||
|
$gen = $generalBasicList[0]['no'];
|
||||||
|
}
|
||||||
|
$showGeneral = General::createGeneralObjFromDB($gen);
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
@@ -77,93 +119,85 @@ $sel[$type] = "selected";
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>감 찰 부<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td>감 찰 부<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<form name=form1 method=post>
|
<form name=form1 method=post>
|
||||||
정렬순서 :
|
정렬순서 :
|
||||||
<select name=type size=1>
|
<select name='query_type' size=1>
|
||||||
<option <?=$sel[0]??''?> value=0>최근턴</option>
|
<?php foreach ($queryMap as $queryType => [$queryTypeText,]) : ?>
|
||||||
<option <?=$sel[1]??''?> value=1>최근전투</option>
|
<option <?= $queryType == $reqQueryType ? 'selected' : '' ?> value='<?= $queryType ?>'><?= $queryTypeText ?></option>
|
||||||
<option <?=$sel[2]??''?> value=2>장수명</option>
|
<?php endforeach; ?>
|
||||||
<option <?=$sel[3]??''?> value=3>전투수</option>
|
|
||||||
</select>
|
</select>
|
||||||
<input type=submit name=btn value='정렬하기'>
|
<input type=submit name=btn value='정렬하기'>
|
||||||
대상장수 :
|
대상장수 :
|
||||||
<select name=gen size=1>
|
<select name=gen size=1>
|
||||||
<?php
|
<?php foreach ($generalBasicList as $general) : ?>
|
||||||
switch ($type) {
|
<option <?= $gen == $general['no'] ? 'selected' : '' ?> value='<?= $general['no'] ?>'><?= $general['officer_level'] > 4 ? "*{$general['name']}*" : $general['name'] ?> (<?= substr($general['turntime'], 14, 5) ?>)</option>
|
||||||
default:
|
<?php endforeach; ?>
|
||||||
case 0: $query = "select no,name,npc from general where nation='{$me['nation']}' order by turntime desc"; break;
|
|
||||||
case 1: $query = "select no,name,npc from general where nation='{$me['nation']}' order by recwar desc"; break;
|
|
||||||
case 2: $query = "select no,name,npc from general where nation='{$me['nation']}' order by npc,binary(name)"; break;
|
|
||||||
case 3: $query = "select no,name,npc from general where nation='{$me['nation']}' order by warnum desc"; break;
|
|
||||||
}
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$gencount = MYDB_num_rows($result);
|
|
||||||
$npc = 0;
|
|
||||||
for ($i=0; $i < $gencount; $i++) {
|
|
||||||
$general = MYDB_fetch_array($result);
|
|
||||||
// 선택 없으면 맨 처음 장수
|
|
||||||
if ($gen == 0) {
|
|
||||||
$gen = $general['no'];
|
|
||||||
}
|
|
||||||
if($gen == $general['no']){
|
|
||||||
$npc = $general['npc'];
|
|
||||||
}
|
|
||||||
if ($gen == $general['no']) {
|
|
||||||
echo "
|
|
||||||
<option selected value={$general['no']}>{$general['name']}</option>";
|
|
||||||
} else {
|
|
||||||
echo "
|
|
||||||
<option value={$general['no']}>{$general['name']}</option>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</select>
|
</select>
|
||||||
<input type=submit name=btn value='조회하기'>
|
<input type=submit name=btn value='조회하기'>
|
||||||
</form>
|
</form>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table width=1000 align=center class='tb_layout bg0'>
|
<table width=1000 align=center class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=50% align=center id=bg1><font color=skyblue size=3>장 수 정 보</font></td>
|
<td width=50% align=center class='bg1'>
|
||||||
<td width=50% align=center id=bg1><font color=orange size=3>장 수 열 전</font></td>
|
<font color=skyblue size=3>장 수 정 보</font>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td valign=top>
|
|
||||||
<?php generalInfo($gen); generalInfo2($gen); ?>
|
|
||||||
</td>
|
</td>
|
||||||
<td valign=top>
|
<td width=50% align=center class='bg1'>
|
||||||
<?=getGeneralHistoryAll($gen)?>
|
<font color=orange size=3>장 수 열 전</font>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td align=center id=bg1><font color=orange size=3>전투 기록</font></td>
|
|
||||||
<td align=center id=bg1><font color=orange size=3>전투 결과</font></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
<?=getBatLogRecent($gen, 24)?>
|
<?php generalInfo($showGeneral);
|
||||||
|
generalInfo2($showGeneral); ?>
|
||||||
</td>
|
</td>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
<?=getBatResRecent($gen, 24)?>
|
<?= formatHistoryToHTML(getGeneralHistoryLogAll($gen)) ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php if($npc > 1): ?>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1><font color=orange size=3>개인 기록</font></td>
|
<td align=center class='bg1'>
|
||||||
<td align=center id=bg1><font color=orange size=3> </font></td>
|
<font color=orange size=3>전투 기록</font>
|
||||||
|
</td>
|
||||||
|
<td align=center class='bg1'>
|
||||||
|
<font color=orange size=3>전투 결과</font>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
<?=getGenLogRecent($gen, 24)?>
|
<?= formatHistoryToHTML(getBattleDetailLogRecent($gen, 24)) ?>
|
||||||
|
</td>
|
||||||
|
<td valign=top>
|
||||||
|
<?= formatHistoryToHTML(getBattleResultRecent($gen, 24)) ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php if ($showGeneral->getNPCType() > 1 || $permission >= 2) : ?>
|
||||||
|
<tr>
|
||||||
|
<td align=center class='bg1'>
|
||||||
|
<font color=orange size=3>개인 기록</font>
|
||||||
|
</td>
|
||||||
|
<td align=center class='bg1'>
|
||||||
|
<font color=orange size=3> </font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign=top>
|
||||||
|
<?= formatHistoryToHTML(getGeneralActionLogRecent($gen, 24)) ?>
|
||||||
</td>
|
</td>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
</td>
|
</td>
|
||||||
@@ -171,8 +205,13 @@ for ($i=0; $i < $gencount; $i++) {
|
|||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -9,20 +10,24 @@ $userID = Session::getUserID();
|
|||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
increaseRefresh("베팅장", 1);
|
increaseRefresh("베팅장", 1);
|
||||||
checkTurn();
|
TurnExecutionHelper::executeAllCommand();
|
||||||
|
|
||||||
$query = "select no,tournament,con,turntime,bet0+bet1+bet2+bet3+bet4+bet5+bet6+bet7+bet8+bet9+bet10+bet11+bet12+bet13+bet14+bet15 as bet from general where owner='{$userID}'";
|
$generalID = $session->generalID;
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$admin = $gameStor->getValues(['tournament','phase','tnmt_type','develcost','bet0','bet1','bet2','bet3','bet4','bet5','bet6','bet7','bet8','bet9','bet10','bet11','bet12','bet13','bet14','bet15']);
|
//NOTE: general_id만 빼기 귀찮음.
|
||||||
$admin['bet'] =
|
$myBet = $db->queryFirstList('SELECT * FROM betting WHERE general_id = %i', $generalID);
|
||||||
$admin['bet0'] + $admin['bet1'] + $admin['bet2'] + $admin['bet3'] + $admin['bet4'] +
|
$myBet = array_splice($myBet, -16);
|
||||||
$admin['bet5'] + $admin['bet6'] + $admin['bet7'] + $admin['bet8'] + $admin['bet9'] +
|
$globalBet = $db->queryFirstList('SELECT * FROM betting WHERE general_id = 0');
|
||||||
$admin['bet10'] + $admin['bet11'] + $admin['bet12'] + $admin['bet13'] + $admin['bet14'] + $admin['bet15'];
|
$globalBet = array_splice($globalBet, -16);
|
||||||
|
|
||||||
|
$me = $db->queryFirstRow('SELECT no,tournament,con,turntime from general where owner=%i', $userID);
|
||||||
|
|
||||||
|
$myBetTotal = array_sum($myBet);
|
||||||
|
$globalBetTotal = array_sum($globalBet);
|
||||||
|
|
||||||
|
$admin = $gameStor->getValues(['tournament', 'phase', 'tnmt_type', 'develcost']);
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
$con = checkLimit($me['con']);
|
||||||
if ($con >= 2) {
|
if ($con >= 2) {
|
||||||
@@ -31,11 +36,32 @@ if ($con >= 2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch ($admin['tnmt_type']) {
|
switch ($admin['tnmt_type']) {
|
||||||
default: throw new \RuntimeException('Invalid tnmt_type');break;
|
default:
|
||||||
case 0: $tnmt_type = "<font color=cyan>전력전</font>"; $tp = "tot"; $tp2 = "종합"; $tp3 = "total"; break;
|
throw new \RuntimeException('Invalid tnmt_type');
|
||||||
case 1: $tnmt_type = "<font color=cyan>통솔전</font>"; $tp = "ldr"; $tp2 = "통솔"; $tp3 = "leader"; break;
|
case 0:
|
||||||
case 2: $tnmt_type = "<font color=cyan>일기토</font>"; $tp = "pwr"; $tp2 = "무력"; $tp3 = "power"; break;
|
$tnmt_type = "<font color=cyan>전력전</font>";
|
||||||
case 3: $tnmt_type = "<font color=cyan>설전</font>"; $tp = "itl"; $tp2 = "지력"; $tp3 = "intel"; break;
|
$tp = "total";
|
||||||
|
$tp2 = "종합";
|
||||||
|
$tp3 = "total";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$tnmt_type = "<font color=cyan>통솔전</font>";
|
||||||
|
$tp = "leadership";
|
||||||
|
$tp2 = "통솔";
|
||||||
|
$tp3 = "leadership";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$tnmt_type = "<font color=cyan>일기토</font>";
|
||||||
|
$tp = "strength";
|
||||||
|
$tp2 = "무력";
|
||||||
|
$tp3 = "strength";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$tnmt_type = "<font color=cyan>설전</font>";
|
||||||
|
$tp = "intel";
|
||||||
|
$tp2 = "지력";
|
||||||
|
$tp3 = "intel";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$str1 = getTournament($admin['tournament']);
|
$str1 = getTournament($admin['tournament']);
|
||||||
@@ -43,7 +69,7 @@ $str2 = getTournamentTime();
|
|||||||
if ($str2) {
|
if ($str2) {
|
||||||
$str2 = ', ' . $str2;
|
$str2 = ', ' . $str2;
|
||||||
}
|
}
|
||||||
$str3 = getTournamentTerm();
|
$str3 = getTournamentTermText();
|
||||||
if ($str3) {
|
if ($str3) {
|
||||||
$str3 = ', ' . $str3;
|
$str3 = ', ' . $str3;
|
||||||
}
|
}
|
||||||
@@ -54,44 +80,60 @@ if($str3){
|
|||||||
<?php if ($con == 1) {
|
<?php if ($con == 1) {
|
||||||
MessageBox("접속제한이 얼마 남지 않았습니다!");
|
MessageBox("접속제한이 얼마 남지 않았습니다!");
|
||||||
} ?>
|
} ?>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 베팅장</title>
|
<title><?= UniqueConst::$serverName ?>: 베팅장</title>
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'betting']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1120 class='tb_layout bg0'>
|
<table align=center width=1120 class='tb_layout bg0'>
|
||||||
<tr><td>베 팅 장<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>베 팅 장<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1120 class='tb_layout bg0'>
|
<table align=center width=1120 class='tb_layout bg0'>
|
||||||
<tr><td colspan=16><input type=button value='갱신' onclick='location.reload()'></td></tr>
|
<tr>
|
||||||
<tr><td colspan=16 align=center><font color=white size=6><?=$tnmt_type?> (<?=$str1.$str2.$str3?>)</font></td></tr>
|
<td colspan=16><input type=button value='갱신' onclick='location.reload()'></td>
|
||||||
<tr><td height=50 colspan=16 align=center id=bg2><font color=limegreen size=6>16강 상황</font><br><font color=orange size=3>(전체 금액 : <?=$admin['bet']?> / 내 투자 금액 : <?=$me['bet']?>)</font></td></tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=16 align=center>
|
||||||
|
<font color=white size=6><?= $tnmt_type ?> (<?= $str1 . $str2 . $str3 ?>)</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td height=50 colspan=16 align=center class='bg2'>
|
||||||
|
<font color=limegreen size=6>16강 상황</font><br>
|
||||||
|
<font color=orange size=3>(전체 금액 : <?= $globalBetTotal ?> / 내 투자 금액 : <?= $myBetTotal ?>)</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1120 class='mimic_flex bg0' style='border:solid 1px gray;font-size:10px;'>
|
<table align=center width=1120 class='mimic_flex bg0' style='border:solid 1px gray;font-size:10px;'>
|
||||||
<tr align=center><td height=10 colspan=16></td></tr>
|
<tr align=center>
|
||||||
|
<td height=10 colspan=16></td>
|
||||||
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<?php
|
<?php
|
||||||
$query = "select npc,name,win from tournament where grp>=60 order by grp, grp_no";
|
$generalList = $db->query('SELECT npc,name,win from tournament where grp>=60 order by grp, grp_no LIMIT 1');
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
while (count($generalList) < 1) {
|
||||||
for ($i=0; $i < 1; $i++) {
|
$generalList[] = [
|
||||||
$general = MYDB_fetch_array($result)??[
|
'name' => '-',
|
||||||
'npc' => 0,
|
'npc' => 0,
|
||||||
'name'=>'',
|
|
||||||
'win' => 0
|
'win' => 0
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
foreach ($generalList as $i => $general) {
|
||||||
if ($general['name'] == "") {
|
if ($general['name'] == "") {
|
||||||
$general['name'] = "-";
|
$general['name'] = "-";
|
||||||
}
|
}
|
||||||
if ($general['npc'] >= 2) {
|
|
||||||
$general['name'] = "<font color=cyan>".$general['name']."</font>";
|
$general['name'] = formatName($general['name'], $general['npc']);
|
||||||
} elseif ($general['npc'] == 1) {
|
|
||||||
$general['name'] = "<font color=skyblue>".$general['name']."</font>";
|
|
||||||
}
|
|
||||||
echo "<td colspan=16>{$general['name']}</td>";
|
echo "<td colspan=16>{$general['name']}</td>";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,28 +141,25 @@ echo "
|
|||||||
</tr>
|
</tr>
|
||||||
<tr align=center>";
|
<tr align=center>";
|
||||||
|
|
||||||
$query = "select npc,name,win from tournament where grp>=50 order by grp, grp_no";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$cent = [];
|
$cent = [];
|
||||||
$line = [];
|
$line = [];
|
||||||
$gen = [];
|
$gen = [];
|
||||||
for ($i = 0; $i < 1; $i++) {
|
for ($i = 0; $i < 1; $i++) {
|
||||||
$cent[$i] = "<font color=white>";
|
$cent[$i] = "<font color=white>";
|
||||||
}
|
}
|
||||||
for ($i=0; $i < 2; $i++) {
|
$generalList = $db->query('SELECT npc,name,win from tournament where grp>=50 order by grp, grp_no LIMIT 2');
|
||||||
$general = MYDB_fetch_array($result)??[
|
while (count($generalList) < 2) {
|
||||||
|
$generalList[] = [
|
||||||
|
'name' => '-',
|
||||||
'npc' => 0,
|
'npc' => 0,
|
||||||
'name'=>'',
|
|
||||||
'win' => 0
|
'win' => 0
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
foreach ($generalList as $i => $general) {
|
||||||
if ($general['name'] == "") {
|
if ($general['name'] == "") {
|
||||||
$general['name'] = "-";
|
$general['name'] = "-";
|
||||||
}
|
}
|
||||||
if ($general['npc'] >= 2) {
|
$general['name'] = formatName($general['name'], $general['npc']);
|
||||||
$general['name'] = "<font color=cyan>".$general['name']."</font>";
|
|
||||||
} elseif ($general['npc'] == 1) {
|
|
||||||
$general['name'] = "<font color=skyblue>".$general['name']."</font>";
|
|
||||||
}
|
|
||||||
if ($general['win'] > 0) {
|
if ($general['win'] > 0) {
|
||||||
$line[$i] = "<font color=red>";
|
$line[$i] = "<font color=red>";
|
||||||
$cent[intdiv($i, 2)] = "<font color=red>";
|
$cent[intdiv($i, 2)] = "<font color=red>";
|
||||||
@@ -147,25 +186,22 @@ echo "
|
|||||||
</tr>
|
</tr>
|
||||||
<tr align=center>";
|
<tr align=center>";
|
||||||
|
|
||||||
$query = "select npc,name,win from tournament where grp>=40 order by grp, grp_no";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
for ($i = 0; $i < 2; $i++) {
|
for ($i = 0; $i < 2; $i++) {
|
||||||
$cent[$i] = "<font color=white>";
|
$cent[$i] = "<font color=white>";
|
||||||
}
|
}
|
||||||
for ($i=0; $i < 4; $i++) {
|
$generalList = $db->query('SELECT npc,name,win from tournament where grp>=40 order by grp, grp_no LIMIT 4');
|
||||||
$general = MYDB_fetch_array($result)??[
|
while (count($generalList) < 4) {
|
||||||
|
$generalList[] = [
|
||||||
|
'name' => '-',
|
||||||
'npc' => 0,
|
'npc' => 0,
|
||||||
'name'=>'',
|
|
||||||
'win' => 0
|
'win' => 0
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
foreach ($generalList as $i => $general) {
|
||||||
if ($general['name'] == "") {
|
if ($general['name'] == "") {
|
||||||
$general['name'] = "-";
|
$general['name'] = "-";
|
||||||
}
|
}
|
||||||
if ($general['npc'] >= 2) {
|
$general['name'] = formatName($general['name'], $general['npc']);
|
||||||
$general['name'] = "<font color=cyan>".$general['name']."</font>";
|
|
||||||
} elseif ($general['npc'] == 1) {
|
|
||||||
$general['name'] = "<font color=skyblue>".$general['name']."</font>";
|
|
||||||
}
|
|
||||||
if ($general['win'] > 0) {
|
if ($general['win'] > 0) {
|
||||||
$line[$i] = "<font color=red>";
|
$line[$i] = "<font color=red>";
|
||||||
$cent[intdiv($i, 2)] = "<font color=red>";
|
$cent[intdiv($i, 2)] = "<font color=red>";
|
||||||
@@ -192,25 +228,22 @@ echo "
|
|||||||
</tr>
|
</tr>
|
||||||
<tr align=center>";
|
<tr align=center>";
|
||||||
|
|
||||||
$query = "select npc,name,win from tournament where grp>=30 order by grp, grp_no";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
for ($i = 0; $i < 4; $i++) {
|
for ($i = 0; $i < 4; $i++) {
|
||||||
$cent[$i] = "<font color=white>";
|
$cent[$i] = "<font color=white>";
|
||||||
}
|
}
|
||||||
for ($i=0; $i < 8; $i++) {
|
$generalList = $db->query('SELECT npc,name,win from tournament where grp>=30 order by grp, grp_no LIMIT 8');
|
||||||
$general = MYDB_fetch_array($result)??[
|
while (count($generalList) < 8) {
|
||||||
|
$generalList[] = [
|
||||||
|
'name' => '-',
|
||||||
'npc' => 0,
|
'npc' => 0,
|
||||||
'name'=>'',
|
|
||||||
'win' => 0
|
'win' => 0
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
foreach ($generalList as $i => $general) {
|
||||||
if ($general['name'] == "") {
|
if ($general['name'] == "") {
|
||||||
$general['name'] = "-";
|
$general['name'] = "-";
|
||||||
}
|
}
|
||||||
if ($general['npc'] >= 2) {
|
$general['name'] = formatName($general['name'], $general['npc']);
|
||||||
$general['name'] = "<font color=cyan>".$general['name']."</font>";
|
|
||||||
} elseif ($general['npc'] == 1) {
|
|
||||||
$general['name'] = "<font color=skyblue>".$general['name']."</font>";
|
|
||||||
}
|
|
||||||
if ($general['win'] > 0) {
|
if ($general['win'] > 0) {
|
||||||
$line[$i] = "<font color=red>";
|
$line[$i] = "<font color=red>";
|
||||||
$cent[intdiv($i, 2)] = "<font color=red>";
|
$cent[intdiv($i, 2)] = "<font color=red>";
|
||||||
@@ -237,25 +270,22 @@ echo "
|
|||||||
</tr>
|
</tr>
|
||||||
<tr align=center>";
|
<tr align=center>";
|
||||||
|
|
||||||
$query = "select npc,name,win from tournament where grp>=20 order by grp, grp_no";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
for ($i = 0; $i < 8; $i++) {
|
for ($i = 0; $i < 8; $i++) {
|
||||||
$cent[$i] = "<font color=white>";
|
$cent[$i] = "<font color=white>";
|
||||||
}
|
}
|
||||||
for ($i=0; $i < 16; $i++) {
|
$generalList = $db->query('SELECT npc,name,win from tournament where grp>=20 order by grp, grp_no LIMIT 16');
|
||||||
$general = MYDB_fetch_array($result)??[
|
while (count($generalList) < 16) {
|
||||||
|
$generalList[] = [
|
||||||
|
'name' => '-',
|
||||||
'npc' => 0,
|
'npc' => 0,
|
||||||
'name'=>'',
|
|
||||||
'win' => 0
|
'win' => 0
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
foreach ($generalList as $i => $general) {
|
||||||
if ($general['name'] == "") {
|
if ($general['name'] == "") {
|
||||||
$general['name'] = "-";
|
$general['name'] = "-";
|
||||||
}
|
}
|
||||||
if ($general['npc'] >= 2) {
|
$general['name'] = formatName($general['name'], $general['npc']);
|
||||||
$general['name'] = "<font color=cyan>".$general['name']."</font>";
|
|
||||||
} elseif ($general['npc'] == 1) {
|
|
||||||
$general['name'] = "<font color=skyblue>".$general['name']."</font>";
|
|
||||||
}
|
|
||||||
if ($general['win'] > 0) {
|
if ($general['win'] > 0) {
|
||||||
$line[$i] = "<font color=red>";
|
$line[$i] = "<font color=red>";
|
||||||
$cent[intdiv($i, 2)] = "<font color=red>";
|
$cent[intdiv($i, 2)] = "<font color=red>";
|
||||||
@@ -278,40 +308,31 @@ for ($i=0; $i < 16; $i++) {
|
|||||||
echo "<td width=70>{$gen[$i]}</td>";
|
echo "<td width=70>{$gen[$i]}</td>";
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = "select bet0,bet1,bet2,bet3,bet4,bet5,bet6,bet7,bet8,bet9,bet10,bet11,bet12,bet13,bet14,bet15 from general where owner='{$userID}'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
$myBet = [];
|
|
||||||
$bet = [];
|
$bet = [];
|
||||||
$gold = [];
|
$gold = [];
|
||||||
|
|
||||||
for ($i = 0; $i < 16; $i++) {
|
for ($i = 0; $i < 16; $i++) {
|
||||||
$myBet[$i] = $me["bet{$i}"];
|
if ($globalBet[$i] == 0) {
|
||||||
}
|
|
||||||
|
|
||||||
for ($i=0; $i < 16; $i++) {
|
|
||||||
if($admin["bet{$i}"] == 0){
|
|
||||||
$bet[$i] = "∞";
|
$bet[$i] = "∞";
|
||||||
}
|
} else {
|
||||||
else{
|
$bet[$i] = round($globalBetTotal / $globalBet[$i], 2);
|
||||||
$bet[$i] = round($admin['bet'] / $admin["bet{$i}"], 2);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ($i = 0; $i < 16; $i++) {
|
for ($i = 0; $i < 16; $i++) {
|
||||||
if (!is_numeric($bet[$i])) {
|
if (!is_numeric($bet[$i])) {
|
||||||
$gold[$i] = 0;
|
$gold[$i] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$gold[$i] = Util::round($myBet[$i] * $bet[$i]);
|
$gold[$i] = Util::round($myBet[$i] * $bet[$i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1120 class='tb_layout bg0'>
|
<table align=center width=1120 class='tb_layout bg0'>
|
||||||
<tr align=center><td height=10 colspan=16></td></tr>
|
<tr align=center>
|
||||||
|
<td height=10 colspan=16></td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
echo "
|
echo "
|
||||||
<tr align=center>";
|
<tr align=center>";
|
||||||
@@ -322,8 +343,22 @@ for ($i=0; $i < 16; $i++) {
|
|||||||
?>
|
?>
|
||||||
</tr>
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td>
|
<td>×</td>
|
||||||
<td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td>
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<?php
|
<?php
|
||||||
@@ -333,8 +368,22 @@ for ($i=0; $i < 16; $i++) {
|
|||||||
?>
|
?>
|
||||||
</tr>
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td>
|
<td>∥</td>
|
||||||
<td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td>
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<?php
|
<?php
|
||||||
@@ -348,13 +397,12 @@ echo "
|
|||||||
|
|
||||||
if ($admin['tournament'] == 6) {
|
if ($admin['tournament'] == 6) {
|
||||||
echo "
|
echo "
|
||||||
<form method=post action=c_betting.php>
|
|
||||||
<tr align=center>";
|
<tr align=center>";
|
||||||
|
|
||||||
for ($i = 0; $i < 16; $i++) {
|
for ($i = 0; $i < 16; $i++) {
|
||||||
echo "
|
echo "
|
||||||
<td>
|
<td>
|
||||||
<select size=1 name=gold{$i} style=color:white;background-color:black;>
|
<select size=1 id='target_{$i}' style=color:white;background-color:black;>
|
||||||
<option style=color:white; value=10>금10</option>
|
<option style=color:white; value=10>금10</option>
|
||||||
<option style=color:white; value=20>금20</option>
|
<option style=color:white; value=20>금20</option>
|
||||||
<option style=color:white; value=50>금50</option>
|
<option style=color:white; value=50>금50</option>
|
||||||
@@ -372,12 +420,10 @@ if ($admin['tournament'] == 6) {
|
|||||||
|
|
||||||
for ($i = 0; $i < 16; $i++) {
|
for ($i = 0; $i < 16; $i++) {
|
||||||
echo "
|
echo "
|
||||||
<td><input type=submit name=btn{$i} value=베팅! style=width:100%;color:white;background-color:black;></td>";
|
<td><input type=button class='submitBtn' data-target='{$i}' value=베팅! style=width:100%;color:white;background-color:black;></td>";
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "
|
echo "</tr>";
|
||||||
</tr>
|
|
||||||
</form>";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
@@ -387,39 +433,125 @@ if ($admin['tournament'] == 6) {
|
|||||||
<font color=skyblue size=4>( 베팅후 500원 이하일땐 베팅이 불가능합니다. )</font>
|
<font color=skyblue size=4>( 베팅후 500원 이하일땐 베팅이 불가능합니다. )</font>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr align=center><td height=10 colspan=16></td></tr>
|
<tr align=center>
|
||||||
|
<td height=10 colspan=16></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1120 class='tb_layout bg0'>
|
<table align=center width=1120 class='tb_layout bg0'>
|
||||||
<tr align=center><td height=50 colspan=4 id=bg2><font color=yellow size=6>토너먼트 랭킹</font></td></tr>
|
<tr align=center>
|
||||||
<tr align=center><td colspan=4 id=bg2><font color=skyblue size=3>순위 / 장수명 / 능력치 / 경기수 / 승리 / 무승부 / 패배 / 집계점수 / 우승횟수</font></td></tr>
|
<td height=50 colspan=4 class='bg2'>
|
||||||
|
<font color=yellow size=6>토너먼트 랭킹</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr align=center>
|
||||||
|
<td colspan=4 class='bg2'>
|
||||||
|
<font color=skyblue size=3>순위 / 장수명 / 능력치 / 경기수 / 승리 / 무승부 / 패배 / 집계점수 / 우승횟수</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
$tournamentType = [
|
||||||
|
'전 력 전' => [
|
||||||
|
'종합',
|
||||||
|
function (General $general) {
|
||||||
|
return $general->getVar('leadership') + $general->getVar('strength') + $general->getVar('intel');
|
||||||
|
},
|
||||||
|
'tt',
|
||||||
|
],
|
||||||
|
'통 솔 전' => [
|
||||||
|
'통솔',
|
||||||
|
function (General $general) {
|
||||||
|
return $general->getVar('leadership');
|
||||||
|
},
|
||||||
|
'tl',
|
||||||
|
],
|
||||||
|
'일 기 토' => [
|
||||||
|
'무력',
|
||||||
|
function (General $general) {
|
||||||
|
return $general->getVar('strength');
|
||||||
|
},
|
||||||
|
'ts',
|
||||||
|
],
|
||||||
|
'설 전' => [
|
||||||
|
'지력',
|
||||||
|
function (General $general) {
|
||||||
|
return $general->getVar('intel');
|
||||||
|
},
|
||||||
|
'ti',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
$type1 = array("전 력 전", "통 솔 전", "일 기 토", "설 전");
|
$type1 = array("전 력 전", "통 솔 전", "일 기 토", "설 전");
|
||||||
$type2 = array("종합", "통솔", "무력", "지력");
|
$type2 = array("종합", "통솔", "무력", "지력");
|
||||||
$type3 = array("tt", "tl", "tp", "ti");
|
$type3 = array("tt", "tl", "ts", "ti");
|
||||||
$type4 = array("total", "leader", "power", "intel");
|
$type4 = array("total", "leadership", "strength", "intel");
|
||||||
|
|
||||||
for ($i=0; $i < 4; $i++) {
|
foreach ($tournamentType as $tournamentTypeText => [$statTypeText, $statFunc, $rankColumn]) : ?>
|
||||||
$grp = $i;
|
|
||||||
echo "
|
|
||||||
<td>
|
<td>
|
||||||
<table align=center width=280 class='tb_layout bg0'>
|
<table align=center width=280 class='tb_layout bg0 f_tnum'>
|
||||||
<tr><td colspan=9 align=center style=color:white;background-color:black;><font size=4>{$type1[$i]}</font></td></tr>
|
<tr>
|
||||||
<tr id=bg1><td align=center>순</td><td align=center>장수</td><td align=center>{$type2[$i]}</td><td align=center>경</td><td align=center>승</td><td align=center>무</td><td align=center>패</td><td align=center>점</td><td align=center>勝</td></tr>";
|
<td colspan=9 align=center style=color:white;background-color:black;>
|
||||||
|
<font size=4><?= $tournamentTypeText ?></font>
|
||||||
$query = "select npc,name,leader,power,intel,leader+power+intel as total,{$type3[$i]}p as prize,{$type3[$i]}w+{$type3[$i]}d+{$type3[$i]}l as game,{$type3[$i]}w as win,{$type3[$i]}d as draw,{$type3[$i]}l as lose,{$type3[$i]}g as gl from general order by gl desc, game desc, win desc, draw desc, lose, no limit 0,30";
|
</td>
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
</tr>
|
||||||
for ($k=1; $k <= 30; $k++) {
|
<tr class='bg1'>
|
||||||
$general = MYDB_fetch_array($result);
|
<td align=center>순</td>
|
||||||
printRow($k, $general['npc'], $general['name'], $general[$type4[$i]], $general['game'], $general['win'], $general['draw'], $general['lose'], $general['gl'], $general['prize'], 0);
|
<td align=center>장수</td>
|
||||||
|
<td align=center><?= $statTypeText ?></td>
|
||||||
|
<td align=center>경</td>
|
||||||
|
<td align=center>승</td>
|
||||||
|
<td align=center>무</td>
|
||||||
|
<td align=center>패</td>
|
||||||
|
<td align=center>점</td>
|
||||||
|
<td align=center>勝</td>
|
||||||
|
</tr>
|
||||||
|
<?php
|
||||||
|
$prizeColumn = "{$rankColumn}p";
|
||||||
|
$gameColumn = "{$rankColumn}g";
|
||||||
|
$winColumn = "{$rankColumn}w";
|
||||||
|
$drawColumn = "{$rankColumn}d";
|
||||||
|
$loseColumn = "{$rankColumn}l";
|
||||||
|
$tournamentRankerList = General::createGeneralObjListFromDB(
|
||||||
|
$db->queryFirstColumn('SELECT general_id FROM rank_data WHERE `type`= %s ORDER BY value DESC LIMIT 40', $gameColumn),
|
||||||
|
[$prizeColumn, $gameColumn, $winColumn, $drawColumn, $loseColumn, 'leadership', 'strength', 'intel', 'no', 'npc', 'name'],
|
||||||
|
0
|
||||||
|
);
|
||||||
|
usort($tournamentRankerList, function (General $lhs, General $rhs) use ($gameColumn, $winColumn, $drawColumn, $loseColumn) {
|
||||||
|
$result = - ($lhs->getRankVar($gameColumn) <=> $rhs->getRankVar($gameColumn));
|
||||||
|
if ($result !== 0) return $result;
|
||||||
|
$result = - (
|
||||||
|
($lhs->getRankVar($winColumn) + $lhs->getRankVar($drawColumn) + $lhs->getRankVar($loseColumn))
|
||||||
|
<=>
|
||||||
|
($rhs->getRankVar($winColumn) + $rhs->getRankVar($drawColumn) + $rhs->getRankVar($loseColumn))
|
||||||
|
);
|
||||||
|
if ($result !== 0) return $result;
|
||||||
|
$result = - ($lhs->getRankVar($winColumn) <=> $rhs->getRankVar($winColumn));
|
||||||
|
if ($result !== 0) return $result;
|
||||||
|
$result = - ($lhs->getRankVar($drawColumn) <=> $rhs->getRankVar($drawColumn));
|
||||||
|
if ($result !== 0) return $result;
|
||||||
|
return $lhs->getRankVar($loseColumn) <=> $rhs->getRankVar($loseColumn);
|
||||||
|
});
|
||||||
|
$tournamentRankerList = array_splice($tournamentRankerList, 0, 30);
|
||||||
|
foreach ($tournamentRankerList as $rank => $ranker) {
|
||||||
|
printRow(
|
||||||
|
$rank,
|
||||||
|
$ranker->getNPCType(),
|
||||||
|
$ranker->getName(),
|
||||||
|
($statFunc)($ranker),
|
||||||
|
$ranker->getRankVar($winColumn) + $ranker->getRankVar($drawColumn) + $ranker->getRankVar($loseColumn),
|
||||||
|
$ranker->getRankVar($winColumn),
|
||||||
|
$ranker->getRankVar($drawColumn),
|
||||||
|
$ranker->getRankVar($loseColumn),
|
||||||
|
$ranker->getRankVar($gameColumn),
|
||||||
|
$ranker->getRankVar($prizeColumn),
|
||||||
|
0
|
||||||
|
);
|
||||||
}
|
}
|
||||||
echo "
|
|
||||||
</table>
|
|
||||||
</td>";
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<?php endforeach; ?>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=16>
|
<td colspan=16>
|
||||||
@@ -432,8 +564,13 @@ for ($i=0; $i < 4; $i++) {
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1120 class='tb_layout bg0'>
|
<table align=center width=1120 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace sammo;
|
|
||||||
|
|
||||||
include "lib.php";
|
|
||||||
include "func.php";
|
|
||||||
//로그인 검사
|
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
|
||||||
$userID = Session::getUserID();
|
|
||||||
|
|
||||||
$db = DB::db();
|
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
increaseRefresh("기밀실", 1);
|
|
||||||
|
|
||||||
$query = "select no,nation,level from general where owner='{$userID}'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
if($me['level'] < 5) {
|
|
||||||
echo "수뇌부가 아닙니다.";
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title><?=UniqueConst::$serverName?>: 기밀실</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=1024" />
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div style='width:1000px;margin:auto'>
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr><td>기 밀 실<br><?=backButton()?></td></tr>
|
|
||||||
<form name=form1 method=post action=c_chiefboard.php>
|
|
||||||
<tr><td align=center>
|
|
||||||
제목 <input type=textarea maxlength=50 name=title style=color:white;background-color:black;width:830px;>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr><td>
|
|
||||||
<textarea name=msg style=color:white;background-color:black;width:998px;height:200px;></textarea><br>
|
|
||||||
<input type=submit value=저장하기>
|
|
||||||
<input type=hidden name=num value=-1>
|
|
||||||
</td></tr>
|
|
||||||
</form>
|
|
||||||
</table>
|
|
||||||
<br>
|
|
||||||
<?php
|
|
||||||
$nation = getNation($me['nation']);
|
|
||||||
|
|
||||||
//20개 메세지
|
|
||||||
$index = $nation['coreindex'];
|
|
||||||
for($i=0; $i < 20; $i++) {
|
|
||||||
$who = "coreboard{$index}_who";
|
|
||||||
$query = "select name,picture,imgsvr from general where no='$nation[$who]'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$general = MYDB_fetch_array($result);
|
|
||||||
if($nation["coreboard{$index}"] != '') { msgprint($nation["coreboard{$index}"], $general['name'], $general['picture'], $general['imgsvr'], $nation["coreboard{$index}_when"], $index, 1); }
|
|
||||||
$index--;
|
|
||||||
if($index < 0) { $index = 19; }
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
||||||
<table width=1000 class='tb_layout bg0'>
|
|
||||||
<tr><td><?=backButton()?></td></tr>
|
|
||||||
<tr><td><?=banner()?></td></tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||