Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f6259c157 | ||
|
|
8908e12c59 | ||
|
|
a7d6bc2c5c | ||
|
|
97fd807c2c | ||
|
|
b31f7d64ec | ||
|
|
bdd574161e | ||
|
|
e23e36cbfa | ||
|
|
fb796e21e4 | ||
|
|
dd46c02f09 | ||
|
|
d1835c71b7 | ||
|
|
55332864ad | ||
|
|
96a8ef3bcc | ||
|
|
79cfbfe83b | ||
|
|
e7fa95ce8f | ||
|
|
a819dde71c | ||
|
|
281cfd366b | ||
|
|
f1ba7e76f3 | ||
|
|
2da72d9b1a | ||
|
|
4cdc18fe7e | ||
|
|
4400116bdd | ||
|
|
086d6d1ab5 | ||
|
|
02e86fd2e9 | ||
|
|
7310aa6971 | ||
|
|
4927a26c92 | ||
|
|
ee6bec2e0d | ||
|
|
def230bf30 | ||
|
|
0a4d568b06 | ||
|
|
69f8e1f1bd | ||
|
|
6f2cb4e05e | ||
|
|
db1fbb700c | ||
|
|
842a37eb7b | ||
|
|
76ff38ed10 | ||
|
|
db6b2be101 | ||
|
|
a998500839 | ||
|
|
dd5e686d03 | ||
|
|
c9f28e27d2 | ||
|
|
1bbeb4f50d | ||
|
|
410f6b261e | ||
|
|
7b21b60c11 | ||
|
|
e5d8b71d0a | ||
|
|
d96099b9d3 | ||
|
|
ffe9fc9349 | ||
|
|
b7415ba521 | ||
|
|
38e689ebb2 | ||
|
|
09caaee58d | ||
|
|
e8f8fc501d | ||
|
|
e6038b854e | ||
|
|
dad01b45e4 | ||
|
|
356250ba8c | ||
|
|
d1f7c13488 | ||
|
|
6f614eddd3 | ||
|
|
5142c94f84 | ||
|
|
c961096b70 | ||
|
|
c6050c6d21 | ||
|
|
8bbc6ae02d | ||
|
|
0adaf7d6c4 | ||
|
|
452c340112 | ||
|
|
ffabe96b15 | ||
|
|
3fc1183be6 | ||
|
|
de85ac9237 | ||
|
|
86dd573e2f | ||
|
|
b0c7d60d5a | ||
|
|
507fa102b9 | ||
|
|
95f079474e | ||
|
|
f951f313d2 | ||
|
|
50e11f22a1 | ||
|
|
6dac344a35 | ||
|
|
caf51fdc06 | ||
|
|
7d84d383d6 | ||
|
|
80d7ad8789 | ||
|
|
be5dc42eb1 | ||
|
|
c8961f60fa | ||
|
|
c757687eba | ||
|
|
dd6d59cf97 | ||
|
|
909f4ec2b7 | ||
|
|
4bf06d9ee5 | ||
|
|
587f9fc1ec | ||
|
|
841e5c5395 | ||
|
|
c383a5cc22 | ||
|
|
003ea3baa7 | ||
|
|
0fa98340c1 | ||
|
|
64e36f038e | ||
|
|
78d95048d5 | ||
|
|
c47f8dbba3 | ||
|
|
2dc206ff56 | ||
|
|
72f7811f3d | ||
|
|
c8146814df | ||
|
|
a01e5df650 | ||
|
|
9bd151cdc2 | ||
|
|
e2ed918437 | ||
|
|
bc658433e2 | ||
|
|
db1dd6f3df | ||
|
|
edca481362 | ||
|
|
bc1ca6274d | ||
|
|
2335dc7566 | ||
|
|
94ab040693 | ||
|
|
b4b4678e26 | ||
|
|
6c93d2fd85 | ||
|
|
4ca33cb007 | ||
|
|
96515fd16c | ||
|
|
d736e2d947 | ||
|
|
7631d99ce6 | ||
|
|
6ddeed82c0 | ||
|
|
ffc8242aae | ||
|
|
2767bf70d9 | ||
|
|
fa7c7794d0 | ||
|
|
015e9e54dc | ||
|
|
7dc9863b49 | ||
|
|
f13960a56a | ||
|
|
ba6370d206 | ||
|
|
32fd8c481a | ||
|
|
e9264e6f13 | ||
|
|
93e6a056d4 | ||
|
|
3610f2cbd4 | ||
|
|
0c51544e2e | ||
|
|
8f1f477054 | ||
|
|
0b72925f09 | ||
|
|
9fb477facc | ||
|
|
3c474e5551 | ||
|
|
9217f0aaf5 | ||
|
|
dddf4ccf6e | ||
|
|
4de010cb1e | ||
|
|
d2ed7a4a80 | ||
|
|
311d5c42a8 | ||
|
|
3c6a884663 | ||
|
|
1bfd0018b1 | ||
|
|
2c3a9b93c7 | ||
|
|
0961220fdd | ||
|
|
c8b2f28c7c | ||
|
|
3f7cc163ec | ||
|
|
8ede84c176 | ||
|
|
6a7f62f2c2 | ||
|
|
0b82024caa | ||
|
|
fd057ebb05 | ||
|
|
47e6958446 | ||
|
|
690fe46931 | ||
|
|
10ec7b55d0 | ||
|
|
5079db5ceb | ||
|
|
dd4f664724 | ||
|
|
932e8ca093 | ||
|
|
193e6eb9ca | ||
|
|
e28b878a68 | ||
|
|
4d6f64cf96 | ||
|
|
6441fc09e4 | ||
|
|
d8c54b4632 | ||
|
|
a8f2c9787d | ||
|
|
dfb10c1b44 | ||
|
|
95bd5b539f | ||
|
|
c811a56557 | ||
|
|
5892ddcad8 | ||
|
|
111a81766e | ||
|
|
5819045a01 | ||
|
|
b8f19e11ff | ||
|
|
d3c73579d9 | ||
|
|
5f001ee091 | ||
|
|
741c67c7cb | ||
|
|
9456406009 | ||
|
|
8464f96e40 | ||
|
|
3c23e0fb93 | ||
|
|
18807a642a | ||
|
|
975f77e907 | ||
|
|
bd42042a61 | ||
|
|
9134a7d9f6 | ||
|
|
53d65c31db | ||
|
|
612f15ebad | ||
|
|
33378c96ec | ||
|
|
703e2f51be | ||
|
|
7d8fa7f1c4 | ||
|
|
62089ef2c2 | ||
|
|
1d946aa525 | ||
|
|
19b62a632b | ||
|
|
cbd5b7fc5e | ||
|
|
58673fb385 | ||
|
|
26ea6a6c69 | ||
|
|
1727d34853 | ||
|
|
fc3b854add | ||
|
|
dba8e5d699 | ||
|
|
f3df6f7202 | ||
|
|
3cbf1eba30 | ||
|
|
4623cfbe06 | ||
|
|
d4d8e0045b | ||
|
|
ea4f1643d4 | ||
|
|
5a2ea3496e | ||
|
|
6dd77dd632 | ||
|
|
d4279b0cb7 | ||
|
|
601222a60d | ||
|
|
9c541735b7 | ||
|
|
858f7139ff | ||
|
|
a326ad3c66 | ||
|
|
33751a06fe | ||
|
|
8cbe92ca46 | ||
|
|
5587a358ce | ||
|
|
40b52dd517 | ||
|
|
5424869d8e | ||
|
|
68a2534d1b | ||
|
|
1699190334 | ||
|
|
d86d96acc1 | ||
|
|
f70dbf9cf3 | ||
|
|
33a1681536 | ||
|
|
fcb8da95ca | ||
|
|
e8148ab4dc | ||
|
|
c14f06615e | ||
|
|
1c0b28eacd | ||
|
|
d317a84b09 | ||
|
|
3972cf0194 | ||
|
|
6d408ac2b1 | ||
|
|
8338f8aaa0 | ||
|
|
fbd0561420 | ||
|
|
de854cc02c | ||
|
|
822e161e2e | ||
|
|
b60bf9fdf9 | ||
|
|
14b0a043d4 | ||
|
|
a2f5d66597 | ||
|
|
c02bc26799 | ||
|
|
932afec74a | ||
|
|
3da67e7d97 | ||
|
|
0c95b958aa | ||
|
|
8895ac329a | ||
|
|
cf0416e976 | ||
|
|
f8f3e4d9e8 | ||
|
|
d6bee9aa6d | ||
|
|
2d5e99a0d6 | ||
|
|
97b71347a6 | ||
|
|
10e3a0814f | ||
|
|
f909df204a | ||
|
|
661e6cc5da | ||
|
|
b2b911ec81 | ||
|
|
f238077944 | ||
|
|
3c930dacb8 | ||
|
|
6dcb46c0b8 | ||
|
|
27c7a5a3ad | ||
|
|
846bdfdc88 | ||
|
|
a2026cb3fd | ||
|
|
06fa539293 | ||
|
|
752f69d3ef | ||
|
|
897997b8ac | ||
|
|
526fa11c20 | ||
|
|
8eda98ff4c | ||
|
|
99d7a26b98 | ||
|
|
0aaadf9536 | ||
|
|
9adcbecce4 | ||
|
|
6605a84f2c | ||
|
|
6c9510d8f4 | ||
|
|
03a62dc23f | ||
|
|
93efacbef5 | ||
|
|
b6b28de8e2 | ||
|
|
faaed40b39 | ||
|
|
6b035f64d2 | ||
|
|
9f049dcb18 | ||
|
|
0141449e4f | ||
|
|
4ce49f259d | ||
|
|
0f35569e05 | ||
|
|
1c4dabed72 | ||
|
|
38114c0639 | ||
|
|
527c8370f1 | ||
|
|
6a9a57e2bc | ||
|
|
7b6f1b510e | ||
|
|
94bc7547d6 | ||
|
|
5a4552aaff | ||
|
|
06e314d301 | ||
|
|
8bead301ef | ||
|
|
6282445f7d | ||
|
|
bf244533f7 | ||
|
|
5ebfaf24ee | ||
|
|
0c0283dc02 | ||
|
|
375b08be87 | ||
|
|
cbc8f94b0a | ||
|
|
bdac8d163d | ||
|
|
1f61f37841 | ||
|
|
51d523ae72 | ||
|
|
3f9e4962e6 | ||
|
|
f8fc4fe56b | ||
|
|
fb64b7e412 | ||
|
|
3209cfbc45 | ||
|
|
8a99476136 | ||
|
|
eb80f8d111 | ||
|
|
afde3ce54d | ||
|
|
c4b61fec17 | ||
|
|
0b74abf300 | ||
|
|
e6c3c9f1d4 | ||
|
|
4e7560b4ed | ||
|
|
542491b278 | ||
|
|
d36439355d | ||
|
|
4a80815b39 | ||
|
|
6dc57f2566 | ||
|
|
07e8511ce1 | ||
|
|
8e927831f5 | ||
|
|
2c533d2ab3 | ||
|
|
38208750e7 | ||
|
|
df14d7c306 | ||
|
|
b3612db7d2 | ||
|
|
8d90da659e | ||
|
|
f8ddbc0622 | ||
|
|
673b7054aa | ||
|
|
1472cbf257 | ||
|
|
d806935c58 | ||
|
|
6b56eb79e1 | ||
|
|
d2aea16744 | ||
|
|
bb800f032e | ||
|
|
64b9f9443e | ||
|
|
fd2d3a0e06 | ||
|
|
08d678bdb8 | ||
|
|
418007e572 | ||
|
|
4a1bccdf75 | ||
|
|
00c0b59e9d | ||
|
|
ac82c8ff0b | ||
|
|
f4bef8a090 | ||
|
|
d8a1055bff | ||
|
|
d672ce4d80 | ||
|
|
43ec361d03 | ||
|
|
c3c99c5f76 | ||
|
|
eb1e1421ab | ||
|
|
e8a1d87919 | ||
|
|
921ba6811d | ||
|
|
906dd241b4 | ||
|
|
3f0cd2ad64 | ||
|
|
41420d1954 | ||
|
|
6e5a72b170 | ||
|
|
4b19e6aec8 | ||
|
|
58572cbc36 | ||
|
|
096d5766bf | ||
|
|
f5c5b56492 | ||
|
|
69c69d63e6 | ||
|
|
3fd8b21867 | ||
|
|
8660e8cd85 | ||
|
|
8458f725f2 | ||
|
|
366678c965 | ||
|
|
336b5668db | ||
|
|
55886269ea | ||
|
|
0b3698595b | ||
|
|
05e43a39db | ||
|
|
5737ad3db2 | ||
|
|
4ac174eb9a | ||
|
|
895eec10b4 | ||
|
|
e0d891e89a | ||
|
|
adf7734b85 | ||
|
|
5362be9c21 | ||
|
|
847ece52f2 | ||
|
|
851c59d22c | ||
|
|
0669534bba | ||
|
|
05db47e62a | ||
|
|
4a0e608d1c | ||
|
|
45fe73af86 | ||
|
|
4d9fcd657f | ||
|
|
a057deb0fe | ||
|
|
4766210a7d | ||
|
|
fd26aae6d3 | ||
|
|
c5c092cc8e | ||
|
|
58c0a21d90 | ||
|
|
8dc567f966 | ||
|
|
942b2752f5 | ||
|
|
b9259353f4 | ||
|
|
86c614dd40 | ||
|
|
1a010a16a9 | ||
|
|
d5b5726b1e | ||
|
|
d06f3b6bdf | ||
|
|
97a28f716c | ||
|
|
f54bdfcea0 | ||
|
|
5958c4b0ba | ||
|
|
7c3db881c7 | ||
|
|
51ee2e1b2c | ||
|
|
baa813004b | ||
|
|
86b5269d3d | ||
|
|
860e6dacac | ||
|
|
22025bd89e | ||
|
|
ed9301455d | ||
|
|
35df84e059 | ||
|
|
62deebf310 | ||
|
|
7ed4bd5c01 | ||
|
|
c8eb9332b4 | ||
|
|
1df55f9168 | ||
|
|
b726c6aa96 | ||
|
|
0a71962652 | ||
|
|
160946ef74 | ||
|
|
1dc67317dc | ||
|
|
08f4a2e8bf | ||
|
|
11ffdaa8f7 | ||
|
|
0f853303a4 | ||
|
|
d225eb9b16 | ||
|
|
d926e4b8bc | ||
|
|
3e2df1d4d8 | ||
|
|
d670dbf081 | ||
|
|
f510a312e3 | ||
|
|
19c44e3d31 | ||
|
|
d0848aee67 | ||
|
|
f4b4b6811c | ||
|
|
fecb3f1f7b | ||
|
|
4c924c0763 | ||
|
|
f1e8d70554 | ||
|
|
7d11bc152e | ||
|
|
fdf0a3135a | ||
|
|
3a1a455c48 | ||
|
|
3a786e835b | ||
|
|
c70181132f | ||
|
|
538615a1f5 | ||
|
|
aa20a60a1c | ||
|
|
69fa1dac6c | ||
|
|
3ab349af6e | ||
|
|
97ac7deb2f | ||
|
|
3230cafb9f | ||
|
|
394284d8de | ||
|
|
6323b174c6 | ||
|
|
3d3e0e5139 | ||
|
|
ffc7d4bacc | ||
|
|
598236a1d2 | ||
|
|
69207519bd | ||
|
|
022eb1012f | ||
|
|
0a9c59f91e | ||
|
|
7ebb22b892 | ||
|
|
3dc7fc6f14 | ||
|
|
90dea7517b | ||
|
|
eae48f9564 | ||
|
|
dd7afba5f5 | ||
|
|
73357b6777 | ||
|
|
53df6bbcc6 | ||
|
|
9871559227 | ||
|
|
9cbead1ddc | ||
|
|
6402028c17 | ||
|
|
76bd65cf53 | ||
|
|
6e4113de11 | ||
|
|
12f37f76c7 | ||
|
|
acd77b2c0a | ||
|
|
f4fb4ec00d | ||
|
|
46ae4669ea | ||
|
|
67b2dbfe98 | ||
|
|
4f3b39fbfa | ||
|
|
a28fc52309 | ||
|
|
d5f0d60794 | ||
|
|
72e65587df | ||
|
|
b4d4d90784 | ||
|
|
3f81fb759d | ||
|
|
d995b39e02 | ||
|
|
3bd09a1aa4 | ||
|
|
a6ff951c98 | ||
|
|
604b1557e8 | ||
|
|
279bd5c71a | ||
|
|
97dfb02ab6 | ||
|
|
32c7b02303 | ||
|
|
e135835e61 | ||
|
|
7ed9a8075c | ||
|
|
ead8110fb4 | ||
|
|
586b1b6c15 | ||
|
|
e1727c8d80 | ||
|
|
7bd8a7ff35 | ||
|
|
de48651ae7 | ||
|
|
9902e07be0 | ||
|
|
5e4b38895e | ||
|
|
38bbbf261a | ||
|
|
def0a52578 | ||
|
|
4f1f87bda0 | ||
|
|
15f9faa2fa | ||
|
|
7257491d8b | ||
|
|
c19b2a9ebe | ||
|
|
54e7fd0293 | ||
|
|
21f3a2082b | ||
|
|
f647eb5a7b | ||
|
|
d7b1db0081 | ||
|
|
11511316d1 | ||
|
|
95a93c2c44 | ||
|
|
815ce10c25 | ||
|
|
5f13bfe8a1 | ||
|
|
5cd494c00a | ||
|
|
5a0a8bedc1 | ||
|
|
3b9884160b | ||
|
|
5b2b01328a | ||
|
|
e5b51dcd16 | ||
|
|
4d8b816acf | ||
|
|
fa109c1b0b | ||
|
|
b987fce627 | ||
|
|
b072cc3266 | ||
|
|
366b40ea90 | ||
|
|
3d3daa205d | ||
|
|
665ebbd11a | ||
|
|
52a5a7697d | ||
|
|
97a38d516a | ||
|
|
e89475bf52 | ||
|
|
90a78b05ce | ||
|
|
8c6eff15f0 | ||
|
|
824c58b391 | ||
|
|
b97500430c | ||
|
|
bacafc67c9 | ||
|
|
f23ebcdc2d | ||
|
|
edbe8e3561 | ||
|
|
05d1e33b30 | ||
|
|
96b60ce0f5 | ||
|
|
6174bc7ffd | ||
|
|
3bd022e03a | ||
|
|
b0cc5b0b60 | ||
|
|
5493f70458 | ||
|
|
323b3d9d16 | ||
|
|
1b0742ad2a | ||
|
|
2eb7217f49 | ||
|
|
b6f5a286b0 | ||
|
|
66c496fb10 | ||
|
|
56ca588c1e | ||
|
|
e2b09caff3 | ||
|
|
a5b4a4c59f | ||
|
|
a70312a90a | ||
|
|
6c6a3238cb | ||
|
|
9af10d4bcb | ||
|
|
f6e1b4611e | ||
|
|
7bc762d357 | ||
|
|
8edf1da92b | ||
|
|
a18baf2ffe | ||
|
|
2d41bf8f2f | ||
|
|
334778bdae | ||
|
|
1b46a06eee | ||
|
|
1e860e9443 | ||
|
|
0b973672d2 | ||
|
|
868ed85c7f | ||
|
|
6f2a24ec66 | ||
|
|
e5d5899a15 | ||
|
|
243473a97d | ||
|
|
28d71b8ce2 | ||
|
|
1acbf90261 | ||
|
|
94229f84a3 | ||
|
|
cead74238a | ||
|
|
73c60ea94c | ||
|
|
73638da4db | ||
|
|
bc218b73e1 | ||
|
|
aac6632f4b | ||
|
|
fdba3fdc74 | ||
|
|
21bb61ec82 | ||
|
|
ce1203d64d | ||
|
|
56daf15c8e | ||
|
|
96faa924d8 | ||
|
|
ee8854451c | ||
|
|
0975e925a9 | ||
|
|
83d6a2169b | ||
|
|
21e7a4d966 | ||
|
|
404cd24855 | ||
|
|
b4ad72ee67 | ||
|
|
bea628b619 | ||
|
|
3637e54982 | ||
|
|
e0d1a0a612 | ||
|
|
3040996671 | ||
|
|
dd830e7500 | ||
|
|
d2dfe2c418 | ||
|
|
139fb6b6e0 | ||
|
|
c4f6976c42 | ||
|
|
ab428fc104 | ||
|
|
aa97f78acd | ||
|
|
dbce900aeb | ||
|
|
30b382e2e7 | ||
|
|
433c4abb86 | ||
|
|
64404e4092 | ||
|
|
08d483af8a | ||
|
|
fa19c17941 | ||
|
|
c896a999ad | ||
|
|
f9bca935ac | ||
|
|
7abf274d89 | ||
|
|
e2ad417306 | ||
|
|
2ea9655f6b | ||
|
|
f450d5d9de | ||
|
|
f8f4b73a09 | ||
|
|
926d96732d | ||
|
|
167113d6a3 | ||
|
|
911cb614a5 | ||
|
|
7a939b7024 | ||
|
|
6e57a60997 | ||
|
|
9f1151e699 | ||
|
|
3fbe1fb63d | ||
|
|
d4906eec5a | ||
|
|
ebe0663e74 | ||
|
|
04c89b9711 | ||
|
|
4f2bc874e5 | ||
|
|
316ac5c3c8 | ||
|
|
7882aa667e | ||
|
|
8b8d5eecbf | ||
|
|
65b76643ee | ||
|
|
f33e645113 | ||
|
|
528d30c317 | ||
|
|
7f0a3d320c | ||
|
|
8e940aeb65 | ||
|
|
a77ee60809 | ||
|
|
83383c29cd | ||
|
|
b6393141e8 | ||
|
|
10ce1827d8 | ||
|
|
605f3a12ff | ||
|
|
a33539e75f | ||
|
|
b2cca3687a | ||
|
|
628c54044f | ||
|
|
c0e7a3eece | ||
|
|
c7c13c19c1 | ||
|
|
d5f71b5878 | ||
|
|
cb589e9e26 | ||
|
|
eaeed47297 | ||
|
|
e00e5c5cd7 | ||
|
|
b3719f7166 | ||
|
|
337896974b | ||
|
|
bb7d1fc9ab | ||
|
|
07765c8d44 | ||
|
|
85cb91071e | ||
|
|
d41839845a | ||
|
|
c3d12aa55f | ||
|
|
a781e4b84c | ||
|
|
1fc0989fd2 | ||
|
|
14752260d3 | ||
|
|
84675c874f | ||
|
|
f30e6057be | ||
|
|
ba8b629f0e | ||
|
|
a0a45ff2aa | ||
|
|
325f890a0b | ||
|
|
923cac5408 | ||
|
|
23505326c7 | ||
|
|
5f1a48f523 | ||
|
|
a607d39030 | ||
|
|
96d108729e | ||
|
|
ef15adaaf8 | ||
|
|
f190b74a7e | ||
|
|
edbc2b88b6 | ||
|
|
dc000cecf1 | ||
|
|
7c95a483df | ||
|
|
27e5d73da1 | ||
|
|
6306dae92d | ||
|
|
a427ddff83 | ||
|
|
b62ee6e820 | ||
|
|
3c18666080 | ||
|
|
40968b301a | ||
|
|
05904d31fd | ||
|
|
75aeaf4ee7 | ||
|
|
ff4e67a9f6 | ||
|
|
5f672d5bd1 | ||
|
|
5cb39eba8b | ||
|
|
4d8c3c75d6 | ||
|
|
8bdd19fc06 | ||
|
|
0ec99d8ba1 | ||
|
|
929d2db5a5 | ||
|
|
a7ad77f433 | ||
|
|
9cd47d5deb | ||
|
|
3cb5691aae | ||
|
|
dce63919fa | ||
|
|
1cdbedcb96 | ||
|
|
1586712ce5 | ||
|
|
f059186494 | ||
|
|
0af0be57b0 | ||
|
|
dad2b03212 | ||
|
|
b6e307660f | ||
|
|
c21c14825a | ||
|
|
39f9c986e9 | ||
|
|
393683aebc | ||
|
|
a87fcb44a6 | ||
|
|
0a6496ddfb | ||
|
|
fa2841fac6 | ||
|
|
861e45419b | ||
|
|
15fd943456 | ||
|
|
b538bfc27e | ||
|
|
e0f32eddc4 | ||
|
|
75a704c196 | ||
|
|
6565fdbe7e | ||
|
|
6248d72852 | ||
|
|
00d1797b96 | ||
|
|
911194eba8 | ||
|
|
0fad3ae31d | ||
|
|
b6988d866a | ||
|
|
e30959a656 | ||
|
|
52eeff3466 | ||
|
|
a06ded552d | ||
|
|
e9b8a84243 | ||
|
|
1fc3cfd1f2 | ||
|
|
188b57ed7a | ||
|
|
c8620390ac | ||
|
|
b3f8ed2335 | ||
|
|
54bf504eb4 | ||
|
|
c6f3bf856b | ||
|
|
8b33a7926e | ||
|
|
a38cb90cbf | ||
|
|
1500e8e54f | ||
|
|
94fd8d5e9d | ||
|
|
373e0a2155 | ||
|
|
267298f341 | ||
|
|
359d46e94d | ||
|
|
11f5540099 | ||
|
|
680e1afcfd | ||
|
|
e4322e60cc | ||
|
|
82f2eecfe8 | ||
|
|
3e3c3c559d | ||
|
|
65f5e8e964 | ||
|
|
c5fbe93890 | ||
|
|
307d8b6165 | ||
|
|
bf08eb2f8b | ||
|
|
a569c1dfaf | ||
|
|
e48db0d231 | ||
|
|
1a5b5dbb45 | ||
|
|
56f21cabe5 | ||
|
|
7ac5afe05b | ||
|
|
b3db97f4a8 | ||
|
|
6d1a06a9d9 | ||
|
|
088643df6c | ||
|
|
fc00a0a363 | ||
|
|
7a48fdd246 | ||
|
|
89be493882 | ||
|
|
5947abf83d | ||
|
|
962db6821f | ||
|
|
f6a3df7858 | ||
|
|
090aaed3f4 | ||
|
|
71cb5aa9e4 | ||
|
|
043b29ef33 | ||
|
|
d81cf4aec3 | ||
|
|
7cb46eeb82 | ||
|
|
c3b4d54414 | ||
|
|
8b9acf2d3d | ||
|
|
08548181ed | ||
|
|
45f883c98b | ||
|
|
5f39229e47 | ||
|
|
8c5bdc2a4b | ||
|
|
7b7602bce2 | ||
|
|
a145792fac | ||
|
|
667a550f4c | ||
|
|
53e1ad8991 | ||
|
|
429c949d1f | ||
|
|
1548577d65 | ||
|
|
82e59b297f | ||
|
|
1f9c994425 | ||
|
|
fc0c7a5004 | ||
|
|
a2d0309c79 | ||
|
|
6d01fbb6e8 | ||
|
|
be270df088 | ||
|
|
88fd94e1cc | ||
|
|
e460392368 | ||
|
|
249cda99f4 | ||
|
|
327fce822a | ||
|
|
58931354a4 | ||
|
|
c8993e9832 | ||
|
|
4ee2e023aa | ||
|
|
22fa1b121e | ||
|
|
cbc6e526c3 | ||
|
|
96041faefd | ||
|
|
894c912e19 | ||
|
|
7b406a945f | ||
|
|
6ff5cc90f1 | ||
|
|
f66e56f4b5 | ||
|
|
8f09aab0ea | ||
|
|
b248b9ca2c | ||
|
|
5a6a31fefa | ||
|
|
1e485a3883 | ||
|
|
fed3246c84 | ||
|
|
daff4a9786 | ||
|
|
6e88b0c701 | ||
|
|
808f674173 | ||
|
|
ba377c9aac | ||
|
|
bb8909f552 | ||
|
|
5a4d9ffcfc | ||
|
|
5ed24a98cb | ||
|
|
6d17675ee7 | ||
|
|
e0b8bfdeae | ||
|
|
0db2009e65 | ||
|
|
5f016d74a1 | ||
|
|
02b9832750 | ||
|
|
18a888b9d4 | ||
|
|
7f20e981d2 | ||
|
|
d64e08f3c4 | ||
|
|
8bb5324896 | ||
|
|
8f2ebc6409 | ||
|
|
371318f62f | ||
|
|
6e94403dc6 | ||
|
|
c35f6905bb | ||
|
|
4eebbb3e81 | ||
|
|
8ddfc8fb4a | ||
|
|
14d2661be8 | ||
|
|
ec71bf29b8 | ||
|
|
b1b06d9c82 | ||
|
|
6feec9bdbd | ||
|
|
d00f4f281c | ||
|
|
15e3ec5263 | ||
|
|
d6ddd91fda | ||
|
|
de79e25510 | ||
|
|
08f6b4deed | ||
|
|
5cd115b54f | ||
|
|
44b6f5890c | ||
|
|
5dd5933390 | ||
|
|
d55d3f2fe1 | ||
|
|
2e9b87f0bc | ||
|
|
800c85dd03 | ||
|
|
5414f7161f | ||
|
|
98b5825475 | ||
|
|
bda21c421f | ||
|
|
ee27b06822 | ||
|
|
7504d62ab1 | ||
|
|
f66b5c91fc | ||
|
|
bf838cd561 | ||
|
|
eeb92f5915 | ||
|
|
4524fab6b9 | ||
|
|
d1a9b40ed5 | ||
|
|
96523408bd | ||
|
|
b5646e0988 | ||
|
|
645c5cc6c1 | ||
|
|
7323983d11 | ||
|
|
8650c9e4b9 | ||
|
|
7cfdb403b3 | ||
|
|
af30c69560 | ||
|
|
b49ecb5802 | ||
|
|
9f0dd8358f | ||
|
|
1fff99b5f2 | ||
|
|
f3ef65ad70 | ||
|
|
da9d59443b | ||
|
|
2e7a5c6244 | ||
|
|
0b6f04ed26 | ||
|
|
4856f6c477 | ||
|
|
0a0b499716 | ||
|
|
954888a879 | ||
|
|
f00a01c123 | ||
|
|
0efb3a6f30 | ||
|
|
d3a9a7b54c | ||
|
|
4bbf40c5b8 | ||
|
|
01ab59774b | ||
|
|
5a6f84d5d2 | ||
|
|
eea5135316 | ||
|
|
9f303966eb | ||
|
|
a31b5ea29d | ||
|
|
b6a6ee31ed | ||
|
|
9aa7556e5b | ||
|
|
12cc54b0ea | ||
|
|
f8c4eae715 | ||
|
|
f8d8d2122e | ||
|
|
157c8e92d5 | ||
|
|
bece81b10e | ||
|
|
99755e98ee | ||
|
|
541de612b2 | ||
|
|
c46d9fd04a | ||
|
|
a49695ace7 | ||
|
|
b562d45531 | ||
|
|
e9f8db58c0 | ||
|
|
ed3313b2bc | ||
|
|
7bb6a9615c | ||
|
|
e7333508c4 | ||
|
|
6e6feb6dc1 | ||
|
|
cb37e3e993 | ||
|
|
13f457eba3 | ||
|
|
e7f8900286 | ||
|
|
7199a770c0 | ||
|
|
e560bbdeb4 | ||
|
|
6479d39f93 | ||
|
|
9fc9790e93 | ||
|
|
5a50476e9d | ||
|
|
b8a8776c2e | ||
|
|
f155a341cb | ||
|
|
253e48694a | ||
|
|
30a090004b | ||
|
|
fb77443b99 | ||
|
|
06d88883d8 | ||
|
|
337c9d3241 | ||
|
|
1d6378c1fc | ||
|
|
f13cfd190e | ||
|
|
a2823b3c29 | ||
|
|
169edd4f9c | ||
|
|
d0fa094d04 | ||
|
|
6ac12d42fe | ||
|
|
a378ac8738 | ||
|
|
8b8f749006 | ||
|
|
b004a0609b | ||
|
|
82d4efcbc2 | ||
|
|
2476726a6a | ||
|
|
19a84d0cc8 | ||
|
|
a688b6fdce | ||
|
|
73e5f5d6ad | ||
|
|
014fb9408e | ||
|
|
91f2be6759 | ||
|
|
76ac6cf5b5 | ||
|
|
dbba6fa942 | ||
|
|
d0771e3392 | ||
|
|
6c8eca2f57 | ||
|
|
3aa9d8ae56 | ||
|
|
42e1764c44 | ||
|
|
5abe9bd6d5 | ||
|
|
d5492eee93 | ||
|
|
a26a59b193 | ||
|
|
3d2dbe9199 | ||
|
|
73749b8d22 | ||
|
|
50c30b7cd0 | ||
|
|
44305b9abf | ||
|
|
c98d8fd199 | ||
|
|
4adc0b7c24 | ||
|
|
1427ac632f | ||
|
|
5e4ae07575 | ||
|
|
9c7fddfb0d | ||
|
|
8ebe81b89f | ||
|
|
016ca770f5 | ||
|
|
c8948953c9 | ||
|
|
85ebd30c9c | ||
|
|
5ea6c4c449 | ||
|
|
bfa31d1c79 | ||
|
|
d4f7ce7560 | ||
|
|
0ef223d80e | ||
|
|
eb232f7bb1 | ||
|
|
ce4f44a951 | ||
|
|
f70cfb5d48 | ||
|
|
7e39be6d20 | ||
|
|
979afdbf7b | ||
|
|
e662b5ed23 | ||
|
|
fea7dcb4aa | ||
|
|
2220920afe | ||
|
|
180b3c7c5d | ||
|
|
beb7553629 | ||
|
|
75934fc5ae | ||
|
|
0882e06adc | ||
|
|
96bd755660 | ||
|
|
51c96b4d04 | ||
|
|
a529eba693 | ||
|
|
a00b5a71fc | ||
|
|
7f35dda305 | ||
|
|
fccebb059b | ||
|
|
cf1dc17298 | ||
|
|
b24eabc82a | ||
|
|
f3a26116b2 | ||
|
|
884c1ea82c | ||
|
|
c65737f554 | ||
|
|
b77a11bfc2 | ||
|
|
58fd8e3c7f | ||
|
|
a8cc2fc671 | ||
|
|
d19ebb6b13 | ||
|
|
fad02e8736 | ||
|
|
11c928bf30 | ||
|
|
b4262eb34b | ||
|
|
76c4a8a966 | ||
|
|
0a212af11e | ||
|
|
efffb46281 | ||
|
|
e2ec3ef532 | ||
|
|
d3c4dd59d2 | ||
|
|
dcebb79590 | ||
|
|
0f0b989963 | ||
|
|
4815f6c79a | ||
|
|
409063a339 | ||
|
|
c831d539b6 | ||
|
|
7aa826fc80 | ||
|
|
d603557c35 | ||
|
|
c267a5c7e0 | ||
|
|
46764ff9aa | ||
|
|
f7a041d9fc | ||
|
|
751336e5d1 | ||
|
|
b2403aedac | ||
|
|
d5f9e923c4 | ||
|
|
c3c2022029 | ||
|
|
fb08e86a4c | ||
|
|
6f4c32c04c | ||
|
|
7c74a40baf | ||
|
|
8bf60bb793 | ||
|
|
005aa959c5 | ||
|
|
d9818f6960 | ||
|
|
f90ac9dea4 | ||
|
|
e0036ca32b | ||
|
|
ad8acaf296 | ||
|
|
34a863a6ea | ||
|
|
724c7388af | ||
|
|
2bb6ef8efb | ||
|
|
baf4d3aa98 | ||
|
|
f4ca4431da | ||
|
|
19446a666e | ||
|
|
b48b09249e | ||
|
|
be282db1c2 | ||
|
|
667cf4062f | ||
|
|
ba442b1457 | ||
|
|
a07622d084 | ||
|
|
8855c92e73 | ||
|
|
6a67a6a66b | ||
|
|
6822c8137b | ||
|
|
76505aa4de | ||
|
|
40fee137d4 | ||
|
|
1f3259e907 | ||
|
|
33b0c19d43 | ||
|
|
1de59279a6 | ||
|
|
184a43ccf5 | ||
|
|
efcb71e866 | ||
|
|
7bc720be77 | ||
|
|
9ecf6d3735 | ||
|
|
ba968d6ff7 | ||
|
|
5cd86a2766 | ||
|
|
11325e6f07 | ||
|
|
5b2b7dc03e | ||
|
|
324a67c7da | ||
|
|
6b54797aec | ||
|
|
4e7529ae44 | ||
|
|
086e61bb19 | ||
|
|
c6eeeda1c3 | ||
|
|
6d642c8098 | ||
|
|
40c89a479f | ||
|
|
f43c811477 | ||
|
|
0a3277c6e7 | ||
|
|
667a8fea31 | ||
|
|
089bb027ae | ||
|
|
6667d85623 | ||
|
|
2513465c6b | ||
|
|
831266fe3c | ||
|
|
bea5cd1f52 | ||
|
|
961414559f | ||
|
|
ffa37160a5 | ||
|
|
d856d12126 | ||
|
|
1dc16932b6 | ||
|
|
db603c5ebd | ||
|
|
f837b71423 | ||
|
|
a5b7259577 | ||
|
|
3f6eeb2a30 | ||
|
|
f8434d7fe2 | ||
|
|
b5cc8ad820 | ||
|
|
20c2d96dee | ||
|
|
c08a669aff | ||
|
|
c4fe77a5ba | ||
|
|
6d6326e415 | ||
|
|
21a956eca8 | ||
|
|
da1273c135 | ||
|
|
aaf7870d88 | ||
|
|
03dffe1181 | ||
|
|
146010f3f5 | ||
|
|
6526653540 | ||
|
|
7b46a1b9ff | ||
|
|
0608f9b3c7 | ||
|
|
e63b46b004 | ||
|
|
17d9853e90 | ||
|
|
4d02639985 | ||
|
|
9677a55a5a | ||
|
|
87056a4052 | ||
|
|
aba9ee7b33 | ||
|
|
ad2baeda2f | ||
|
|
eab8a3b94e | ||
|
|
5d23032500 | ||
|
|
5a2b6db3bb | ||
|
|
546c6a3227 | ||
|
|
674018d2fc | ||
|
|
39b65284bd | ||
|
|
c0fee32c4c | ||
|
|
8428649377 | ||
|
|
430c792a9b | ||
|
|
1e029ee517 | ||
|
|
dfbc837371 | ||
|
|
3e1bb44284 | ||
|
|
aacb6adb26 | ||
|
|
95ac7454ae | ||
|
|
85389c4a60 | ||
|
|
913289e0ef | ||
|
|
84efd5bfdf | ||
|
|
33014dbd7d | ||
|
|
d0e20eb8d3 | ||
|
|
a386999567 | ||
|
|
8519481f96 | ||
|
|
97fdc095a5 | ||
|
|
915243ee4a | ||
|
|
727e447899 | ||
|
|
e6ea5824f0 | ||
|
|
8eee11cee9 | ||
|
|
7aca3049d1 | ||
|
|
03b8d0c388 | ||
|
|
aa7d01f3d6 | ||
|
|
b397c41c9e | ||
|
|
0561cc3320 | ||
|
|
6f47e92050 | ||
|
|
9a67ac7509 | ||
|
|
d922993eaf | ||
|
|
9fa2225283 | ||
|
|
35eadad96b | ||
|
|
081416475e | ||
|
|
12492c842c | ||
|
|
68e01c1e73 | ||
|
|
bdcc79ce34 | ||
|
|
869ad39ddc | ||
|
|
30e1e35090 | ||
|
|
6c185ffd09 | ||
|
|
a9435f8f32 | ||
|
|
9ea8d3ec97 | ||
|
|
d918234bb8 | ||
|
|
afbbbaa855 | ||
|
|
a844ef31a2 | ||
|
|
b469ce0504 | ||
|
|
ed2bc8c390 | ||
|
|
cb246e859e | ||
|
|
3d6b99c004 | ||
|
|
842942c0fe | ||
|
|
71c4a84833 | ||
|
|
d1bc434ced | ||
|
|
59f7448aa7 | ||
|
|
4408692565 | ||
|
|
2e8607b811 | ||
|
|
2f2890e582 | ||
|
|
e2b39be3ff | ||
|
|
7ada07a99a | ||
|
|
6b16573f6b | ||
|
|
1de49fe998 | ||
|
|
7109e66ad8 | ||
|
|
d21c2f67ba | ||
|
|
0d39add09c | ||
|
|
5e1f7ea571 | ||
|
|
35c71bd21b | ||
|
|
e6a39f246d | ||
|
|
65cd8af9e1 | ||
|
|
e916f2fc40 | ||
|
|
13da80ee85 | ||
|
|
4f4045363b | ||
|
|
9600e18c92 | ||
|
|
d5aefccadc | ||
|
|
9e64b268cf | ||
|
|
0893bf6473 | ||
|
|
21f8b814e0 | ||
|
|
10fd22ba81 | ||
|
|
a3fef6c62f | ||
|
|
d750167a00 | ||
|
|
241bf62fdc | ||
|
|
bc5574615d | ||
|
|
48cac053fd | ||
|
|
25837f6393 | ||
|
|
b281362c98 | ||
|
|
e5050bb6c8 | ||
|
|
2d0c3ef881 | ||
|
|
ee029aac10 | ||
|
|
da205c09f9 | ||
|
|
07317b86a2 | ||
|
|
79e2543266 | ||
|
|
303cbcd188 | ||
|
|
a47905541c | ||
|
|
4e988db50f | ||
|
|
9dc3d83a77 | ||
|
|
934c1b0cfe | ||
|
|
70181d95c7 | ||
|
|
8a210103c0 | ||
|
|
df96381759 | ||
|
|
2006845ff7 | ||
|
|
44f0e78086 | ||
|
|
824956a34d | ||
|
|
1e7e01b6b0 | ||
|
|
cd25aaaca6 | ||
|
|
d481047eb4 | ||
|
|
1699ac6e08 | ||
|
|
79b7188578 | ||
|
|
843f469914 | ||
|
|
71254e86f4 | ||
|
|
07328847f4 | ||
|
|
9181cbfee5 | ||
|
|
4aef22aac8 | ||
|
|
512266abf4 | ||
|
|
ef64f180a2 | ||
|
|
9e45800367 | ||
|
|
f027f7f225 | ||
|
|
6f7ac86e7f | ||
|
|
93d298ef75 | ||
|
|
121a892c9a | ||
|
|
9222e2bbdd | ||
|
|
fe78d82ace | ||
|
|
77e98d9942 | ||
|
|
2b1efae238 | ||
|
|
d70740b38c | ||
|
|
3ebb30795c | ||
|
|
5d42730e9a | ||
|
|
923777899e | ||
|
|
05b9187a3b | ||
|
|
1198baba67 | ||
|
|
d4b7cdc97c | ||
|
|
bb7e93ac2d | ||
|
|
59c0c6cfb8 | ||
|
|
8699a43a22 | ||
|
|
5529651f91 | ||
|
|
a6f225ae9d | ||
|
|
fceda31c11 | ||
|
|
e5a5281e10 | ||
|
|
ede1d89569 | ||
|
|
44b9ba96c3 | ||
|
|
7fd8bfbe4e | ||
|
|
17654633dc | ||
|
|
8fd0a54018 | ||
|
|
efe8a476da | ||
|
|
ac0f6c6b6c | ||
|
|
8c163515db | ||
|
|
7ce1e64ee8 | ||
|
|
b6e667a291 | ||
|
|
5c7522fd1f | ||
|
|
85e9223603 | ||
|
|
943e2be676 | ||
|
|
2f09df7521 | ||
|
|
445e445e49 | ||
|
|
a3925de127 | ||
|
|
f20e4bd572 | ||
|
|
816c2ac1c4 | ||
|
|
e731371ab1 | ||
|
|
5559693cb3 | ||
|
|
ca33c3b259 | ||
|
|
a78fa98b3d | ||
|
|
956dc82555 | ||
|
|
d30a824481 | ||
|
|
a643182eee | ||
|
|
e1dbc46d8d | ||
|
|
e33d8776bc | ||
|
|
f6d16883de | ||
|
|
51bdd3bbfd | ||
|
|
8f9ae78b8c | ||
|
|
584b7b8e45 | ||
|
|
f74e903f1f | ||
|
|
4cedf112f5 | ||
|
|
d607a8da0f | ||
|
|
84a12e28df | ||
|
|
54aa47d1a8 | ||
|
|
faaee4b945 | ||
|
|
0b46303f9f | ||
|
|
b98668bc60 | ||
|
|
947e8e9512 | ||
|
|
681918cb63 | ||
|
|
d0fae44430 | ||
|
|
3e752461e8 | ||
|
|
1a9e6f3b1a | ||
|
|
580275a8cf | ||
|
|
ee74771f16 | ||
|
|
81fa97d3ee | ||
|
|
00a6e9798f | ||
|
|
17a59cbdd5 | ||
|
|
d4c9a0a47a | ||
|
|
6423c22cf8 | ||
|
|
e21fbaff83 | ||
|
|
99e6a2676b | ||
|
|
ab47f40ee1 | ||
|
|
a7f000e51e | ||
|
|
0d9eabcaa0 | ||
|
|
b1c63d7f5e | ||
|
|
820c72820d | ||
|
|
300065504b | ||
|
|
8aa846b349 | ||
|
|
ae8b94b2d7 | ||
|
|
7670d55f3c | ||
|
|
528ab4e203 | ||
|
|
cf1dc90137 | ||
|
|
dd81dcc9c6 | ||
|
|
a31c949734 | ||
|
|
3536d5c413 | ||
|
|
0e50216cee | ||
|
|
16fed754a9 | ||
|
|
c7748934b8 | ||
|
|
d46b3154cc | ||
|
|
f8bcfba90e | ||
|
|
45a4ca5298 | ||
|
|
88e3a9852b | ||
|
|
cf1f023379 | ||
|
|
b4b6f5a1f7 | ||
|
|
a21eef6e84 | ||
|
|
3beca8bba5 | ||
|
|
b5d66dba8a | ||
|
|
24d01a2156 | ||
|
|
45d848cbb9 | ||
|
|
e2f649dd35 | ||
|
|
183bffbc0e | ||
|
|
a874415859 | ||
|
|
93b33ba383 | ||
|
|
26420719f3 | ||
|
|
dc6a35d656 | ||
|
|
51da0bd7b7 | ||
|
|
1afb2c6883 | ||
|
|
f78fcc2b71 | ||
|
|
fb2d30f2c9 | ||
|
|
8781e7c6ad | ||
|
|
c34317b1e5 | ||
|
|
b09730b422 | ||
|
|
0f1725a7ab | ||
|
|
b12e0358d6 | ||
|
|
7ef841746a | ||
|
|
2b52b2379e | ||
|
|
8dd5965c44 | ||
|
|
bc59521cc8 | ||
|
|
815822ef40 | ||
|
|
9e6d33cc1a | ||
|
|
44df85f2bd | ||
|
|
2c15c7087e | ||
|
|
6b281628ed | ||
|
|
9f74db0aff | ||
|
|
83ea5c7fa3 | ||
|
|
bf6fe3482b | ||
|
|
f4d6803720 | ||
|
|
23c2a16286 | ||
|
|
afc301fad2 | ||
|
|
1c0a50e48f | ||
|
|
02e119d0da | ||
|
|
06fcc383ce | ||
|
|
408b1f76e4 | ||
|
|
3a879a37e2 | ||
|
|
9e1bb50d78 | ||
|
|
25dcf426b1 | ||
|
|
7b7baaea62 | ||
|
|
36d83804d0 | ||
|
|
7c46d2e27f | ||
|
|
d4acad33ea | ||
|
|
91cc1159bc | ||
|
|
21b7068c90 | ||
|
|
682d2bf922 | ||
|
|
3ff6788405 | ||
|
|
e59a8606ab | ||
|
|
157285ddb6 | ||
|
|
f49c3e0ff7 | ||
|
|
345877b9fd | ||
|
|
37e4105585 | ||
|
|
4a05b59b4b | ||
|
|
57322d75d7 | ||
|
|
4ccc2c1f71 | ||
|
|
652b32619d | ||
|
|
57b3611965 | ||
|
|
afbf9e619a | ||
|
|
060b1da388 | ||
|
|
38024b6be4 | ||
|
|
6aede6e48b | ||
|
|
b27adfbe27 | ||
|
|
b28e3b2a00 | ||
|
|
ffe4374519 | ||
|
|
793df087ae | ||
|
|
85eadd5856 | ||
|
|
359efe0036 | ||
|
|
3186691b7b | ||
|
|
044c795f38 | ||
|
|
f7128449ca | ||
|
|
3d0c5165b7 | ||
|
|
fc6cda86df | ||
|
|
59877e181e | ||
|
|
506b1a17d1 | ||
|
|
214c2ba0ad | ||
|
|
387312bc87 | ||
|
|
3d3da04e58 | ||
|
|
7ec0cbb43c | ||
|
|
1cd834579c | ||
|
|
a11005c14b | ||
|
|
ea1480e286 | ||
|
|
f1dd328c38 | ||
|
|
44295de206 | ||
|
|
b273082492 | ||
|
|
da088d88ba | ||
|
|
fd13570074 | ||
|
|
b5630a9dae | ||
|
|
0e2cab6409 | ||
|
|
38dc587318 | ||
|
|
6fbddcb7c2 | ||
|
|
df1df2964d | ||
|
|
9b9c2546c8 | ||
|
|
6ce0e72b33 | ||
|
|
a7784d7870 | ||
|
|
306ca3e04f | ||
|
|
82988b0e08 | ||
|
|
8b27d0e249 | ||
|
|
bfae547240 | ||
|
|
0abd026f78 | ||
|
|
3362a76de7 | ||
|
|
355b6c2e7d | ||
|
|
4e3c643e43 | ||
|
|
760cb97db4 | ||
|
|
0be6f7f57e | ||
|
|
d31223fa0c | ||
|
|
86ee9befc1 | ||
|
|
d5689b061f | ||
|
|
a3c4da4455 | ||
|
|
ee9f97f917 | ||
|
|
270c7377de | ||
|
|
9044b57306 | ||
|
|
9ad815a44a | ||
|
|
b7e432228b | ||
|
|
78da30f2ad | ||
|
|
aeea53017f | ||
|
|
f21ebfc366 | ||
|
|
2549aa5809 | ||
|
|
b733b70ad8 | ||
|
|
f9f59bd7c2 | ||
|
|
58933a6bcd | ||
|
|
45d7a29a95 | ||
|
|
e9d1fdb4ee | ||
|
|
2785ca9f31 | ||
|
|
12912a62aa | ||
|
|
2c2b078514 | ||
|
|
110294103f | ||
|
|
a9f3b839ec | ||
|
|
6bd677ad6f | ||
|
|
7d1c5f3510 | ||
|
|
a49508fd20 | ||
|
|
5870213ff0 | ||
|
|
65c3d7f925 | ||
|
|
33f4fd8fee | ||
|
|
9bdc34dc42 | ||
|
|
ff654df997 | ||
|
|
b7758da2f3 | ||
|
|
747089f1a8 | ||
|
|
9ee3021b76 | ||
|
|
0c60ea66e3 | ||
|
|
c3bb312b5f | ||
|
|
7447a42d40 | ||
|
|
3e9cc367af | ||
|
|
4c1790014f | ||
|
|
03fc7a579a | ||
|
|
a53db257cf | ||
|
|
b093cab493 | ||
|
|
9b484dc819 | ||
|
|
5ab26a9f8c | ||
|
|
b800a63bd2 | ||
|
|
43a5e47fb3 | ||
|
|
319545106e | ||
|
|
39b261b8a0 | ||
|
|
c9e61d1098 | ||
|
|
0bffdaa5fc | ||
|
|
9228510834 | ||
|
|
0b002a8946 | ||
|
|
ad43ddabe6 | ||
|
|
24c022a329 | ||
|
|
0e48cee0d6 | ||
|
|
4ad1794d95 | ||
|
|
46cf25b585 | ||
|
|
b3d78fc30f | ||
|
|
556bc06da4 | ||
|
|
7e8f9c463b | ||
|
|
568c7779b6 | ||
|
|
0a0d237f4d | ||
|
|
c243ccbdce | ||
|
|
64b79d6af5 | ||
|
|
016c0f3743 | ||
|
|
fd1599e0a7 | ||
|
|
7408aa6b72 | ||
|
|
e6b2107fa9 | ||
|
|
9aff52eaad | ||
|
|
bf5bda0f85 | ||
|
|
ffbf2d0a93 | ||
|
|
82f59ef5a2 | ||
|
|
c2c40abbb4 | ||
|
|
bb54d732d0 | ||
|
|
eee4e0c676 | ||
|
|
d9457ae017 | ||
|
|
bbc0b18b19 | ||
|
|
da7651311e | ||
|
|
72846f0817 | ||
|
|
05ef3387ab | ||
|
|
eed44e5737 | ||
|
|
27c7a85a21 | ||
|
|
4f6dd046ec | ||
|
|
89fad9ada7 | ||
|
|
bc31b49b99 | ||
|
|
09444e3624 | ||
|
|
7586243a95 | ||
|
|
1e1c7801e1 | ||
|
|
a363f6ef5f | ||
|
|
334e1fd2da | ||
|
|
2e8e29e93c | ||
|
|
5e5a1a3668 | ||
|
|
b93b464ebf | ||
|
|
842ba46a95 | ||
|
|
03b27d8e8f | ||
|
|
c11b41c6ba | ||
|
|
018cc526ee | ||
|
|
edf4508e6b | ||
|
|
d26a1f0312 | ||
|
|
2984f6a453 | ||
|
|
a00058d959 | ||
|
|
8e56a457f1 | ||
|
|
74d5f021cd | ||
|
|
a37715315d | ||
|
|
d9c9977610 | ||
|
|
c2f0cbb10a | ||
|
|
a34d00d822 | ||
|
|
9924ec6963 | ||
|
|
9036201887 | ||
|
|
b2435d2430 | ||
|
|
afd6148770 | ||
|
|
b70b58a35a | ||
|
|
df963c2780 | ||
|
|
1b732c76e6 | ||
|
|
f9489b0173 | ||
|
|
18942c55ae | ||
|
|
bf34b2f1ca | ||
|
|
a717a021c2 | ||
|
|
dcf718d592 | ||
|
|
f5eeb2b839 | ||
|
|
bc435adc11 | ||
|
|
aeb8e82cbd | ||
|
|
5cb2ed3ccd | ||
|
|
93b1864d1b | ||
|
|
a6efffda45 | ||
|
|
c89d6f1a58 | ||
|
|
d4f16abfac | ||
|
|
8529f3f355 | ||
|
|
2eb136827d | ||
|
|
9594e6eb32 | ||
|
|
9e8111994a | ||
|
|
af0c2b7129 | ||
|
|
96b73a0cef | ||
|
|
6c290ee2d3 | ||
|
|
ca53e3de3a | ||
|
|
6ea3ec700a | ||
|
|
fe3355e08e | ||
|
|
42f08f5027 | ||
|
|
7a1c8882e6 | ||
|
|
2c193e7e48 | ||
|
|
9714c1c9f6 | ||
|
|
c8f72b5f14 | ||
|
|
be0439f771 | ||
|
|
43da95b4a5 | ||
|
|
3d93a63caa | ||
|
|
9550607da3 | ||
|
|
d5d9798913 | ||
|
|
6cfe08235f | ||
|
|
49eb850ff1 | ||
|
|
5a558583d2 | ||
|
|
1e5f0d0555 | ||
|
|
e2b0b03c96 | ||
|
|
b9fb9f1b34 | ||
|
|
52fd932fd8 | ||
|
|
b0cc200df7 | ||
|
|
05b32db37d | ||
|
|
41f7192532 | ||
|
|
fa420303dc | ||
|
|
b7fd539755 | ||
|
|
cfb8b03446 | ||
|
|
712601041d | ||
|
|
36093eccaf | ||
|
|
58eb6d4210 | ||
|
|
2166429cbf | ||
|
|
236ab10b11 | ||
|
|
99142fdde3 | ||
|
|
ca6755d8b5 | ||
|
|
92ad333863 | ||
|
|
4c48272b4c | ||
|
|
ab5bd1db69 | ||
|
|
5d1cd10f5d | ||
|
|
ef784be082 | ||
|
|
855c41a0e9 | ||
|
|
6ef9667f72 | ||
|
|
068d384e7a | ||
|
|
c3699a8595 | ||
|
|
2cb7513355 | ||
|
|
c58caeda4c | ||
|
|
26fc56f2b8 | ||
|
|
c44ae2f00c | ||
|
|
a00b62ffcc | ||
|
|
6a9e7aa89d | ||
|
|
6206b38a78 | ||
|
|
1767bfa70d | ||
|
|
b1d6611923 | ||
|
|
a6a713f40e | ||
|
|
e76ad04207 | ||
|
|
a231adbfdd | ||
|
|
88f97ecb4e | ||
|
|
68a471b859 | ||
|
|
9393324e1f | ||
|
|
944931f7d1 | ||
|
|
5a56be8a75 | ||
|
|
fe7aebae05 | ||
|
|
b6c3b0cdc3 | ||
|
|
fd734fadbc | ||
|
|
a3dc250698 | ||
|
|
3f2d36284f | ||
|
|
60d5184a7b | ||
|
|
da612bdc7b | ||
|
|
628a085ba8 | ||
|
|
5ae91ac620 | ||
|
|
70265c55ef | ||
|
|
7c3b5fc31e | ||
|
|
a9a830caa2 | ||
|
|
b49ff3d4ed | ||
|
|
42310fa170 | ||
|
|
bfff1d9e2f | ||
|
|
2c98777b9f | ||
|
|
4a91260a31 | ||
|
|
076971bcae | ||
|
|
01fcc9bcab | ||
|
|
f56f201bad | ||
|
|
45e579f0ef | ||
|
|
39db811361 | ||
|
|
ff87555eba | ||
|
|
6c5c2d40bc | ||
|
|
c08459e370 | ||
|
|
42418394ed | ||
|
|
64fd0e2f28 | ||
|
|
2de061203b | ||
|
|
cee0d3f03e | ||
|
|
aa19ae129b | ||
|
|
aecbf8ccb3 | ||
|
|
7e5c19f507 | ||
|
|
b178ecd494 | ||
|
|
05d5039fab | ||
|
|
1004e5a8bd | ||
|
|
dbcfe6fc6e | ||
|
|
56698aefe6 | ||
|
|
cbd2e136ed | ||
|
|
9846d7f8e4 | ||
|
|
d16c86a4d7 | ||
|
|
292e642d16 | ||
|
|
90736b52be | ||
|
|
928e8a200b | ||
|
|
2ee06eab2d | ||
|
|
01913983ea | ||
|
|
0aa2f2c44d | ||
|
|
f66d655782 | ||
|
|
4094a08198 | ||
|
|
05389da412 | ||
|
|
e38258b04b | ||
|
|
0cd0e2f730 | ||
|
|
d2c7483db1 | ||
|
|
d388c52ccd | ||
|
|
4a2954d3a4 | ||
|
|
804b9a1d71 | ||
|
|
1067efbbee | ||
|
|
d41ecbeed6 | ||
|
|
f93148b7d7 | ||
|
|
348877c7cd | ||
|
|
fb7c2573bf | ||
|
|
e4fcc77b0a | ||
|
|
5c9b79729f | ||
|
|
00d4541537 | ||
|
|
1660e563ab | ||
|
|
b94081c45b | ||
|
|
f7b59f0140 | ||
|
|
22aecbe4ba | ||
|
|
be98db9023 | ||
|
|
828e095e64 | ||
|
|
8e1e21b960 | ||
|
|
303d8815e3 | ||
|
|
ba574dda62 | ||
|
|
bf630b5f7d | ||
|
|
9b4bf148cc | ||
|
|
f5212b4aa1 | ||
|
|
eea4cdf379 | ||
|
|
e909b48fea | ||
|
|
258aabbdde | ||
|
|
478f26e75a | ||
|
|
57cc558b9b | ||
|
|
29984d4b09 | ||
|
|
e1a266e5d8 | ||
|
|
a33a7317cc | ||
|
|
1d0bcd857e | ||
|
|
040da2429f | ||
|
|
978a395421 | ||
|
|
63e5625d62 | ||
|
|
38bbae13b9 | ||
|
|
e975a8106f | ||
|
|
6a49887ad7 | ||
|
|
5565ec2ddb | ||
|
|
20b1f8eff8 | ||
|
|
34fd000df9 | ||
|
|
1132177e2d | ||
|
|
5be39c04ef | ||
|
|
0ee4593608 | ||
|
|
f301344587 | ||
|
|
d2c5c856ab | ||
|
|
5f8e4ae10c | ||
|
|
4ff30b1a9d | ||
|
|
a0b215dab6 | ||
|
|
144e82d7e2 | ||
|
|
79252ba3b0 | ||
|
|
c5286093f9 | ||
|
|
5ad194bd45 | ||
|
|
501113da44 | ||
|
|
f0a7990404 | ||
|
|
27f53ff4a6 | ||
|
|
9ec5dfc8b1 | ||
|
|
e4c1e414c8 | ||
|
|
a391650472 | ||
|
|
3cfde2b40d | ||
|
|
8bf1ed33dc | ||
|
|
422b3be0c5 | ||
|
|
c34e44c4ec | ||
|
|
a2b20eca67 | ||
|
|
d41c316bfb | ||
|
|
ca1d8aab84 | ||
|
|
32e3dcff7c | ||
|
|
9a23470622 | ||
|
|
c37a186802 | ||
|
|
84c17e3b22 | ||
|
|
64e0fca124 | ||
|
|
5c6537fd7a | ||
|
|
764a82df00 | ||
|
|
e904911fd9 | ||
|
|
a7494f72f6 | ||
|
|
b6b53b028d | ||
|
|
1743ce714a | ||
|
|
656f0c5d11 | ||
|
|
d80aebe1f4 | ||
|
|
ad48bc1962 | ||
|
|
d72fbb7098 | ||
|
|
95d5eaa09b | ||
|
|
b997a6159e | ||
|
|
1cd8b7a450 | ||
|
|
c5a8eb4261 | ||
|
|
8891c29cbd | ||
|
|
2facdfa1dd | ||
|
|
65c9fa0c21 | ||
|
|
e53c85dbaf | ||
|
|
3a231e8e61 | ||
|
|
4dc7776387 | ||
|
|
5ca043e0f1 | ||
|
|
9ef052c814 | ||
|
|
6d1690beaa | ||
|
|
171656e5be | ||
|
|
385e7f4871 | ||
|
|
89c5485784 | ||
|
|
02d191ec28 | ||
|
|
47c3090f3a | ||
|
|
476dac1ac1 | ||
|
|
8ca0d0ced4 | ||
|
|
ab197489d7 | ||
|
|
99736d187b | ||
|
|
197c09bd0d | ||
|
|
6cc634ba1f | ||
|
|
4c89ad91d2 | ||
|
|
d66233bce0 | ||
|
|
b485e6927e | ||
|
|
74b9e8bd7b | ||
|
|
545742ecc0 | ||
|
|
d9f1f65352 | ||
|
|
0904d17a5f | ||
|
|
87171b4246 | ||
|
|
78f8b56203 | ||
|
|
b79045eddb | ||
|
|
6eb67b1a3c | ||
|
|
777ec39bd9 | ||
|
|
9dcafaaa38 | ||
|
|
097e2fb653 | ||
|
|
e7aa97634b | ||
|
|
447b9f265f | ||
|
|
029a6f03b7 | ||
|
|
ae4a349d79 | ||
|
|
35728c7911 | ||
|
|
469330f270 | ||
|
|
03f9c56928 | ||
|
|
ed2a2a8975 | ||
|
|
b5380f183c | ||
|
|
f5bcaba352 | ||
|
|
5a70b23db9 | ||
|
|
fc3487e545 | ||
|
|
a4863dc8d7 | ||
|
|
af12a08e25 | ||
|
|
312dc294b3 | ||
|
|
d958dd5ee4 | ||
|
|
1ddc49b17b | ||
|
|
322541b16f | ||
|
|
00cb10f029 | ||
|
|
ed24a721ed | ||
|
|
9fc10e0f65 | ||
|
|
ab212e0565 | ||
|
|
eac0049577 | ||
|
|
9d1d51d0d7 | ||
|
|
4fd3c4ada6 | ||
|
|
dd73d8fc69 | ||
|
|
b89d37c8c5 | ||
|
|
bc4983c771 | ||
|
|
e6c186b31b | ||
|
|
b106fa55d3 | ||
|
|
981e42c5a9 | ||
|
|
c160c5a555 | ||
|
|
31c7bf5348 | ||
|
|
89bf457878 | ||
|
|
6eadf718fc | ||
|
|
effced24d1 | ||
|
|
09f399db9a | ||
|
|
2b73f6faea | ||
|
|
943662605e | ||
|
|
9a04962bd6 | ||
|
|
91a36eb9a0 | ||
|
|
c371f6bbb5 | ||
|
|
8324e2e454 | ||
|
|
30307c1b56 | ||
|
|
f139d0d2a8 | ||
|
|
33843764a7 | ||
|
|
aca7d7c571 | ||
|
|
bff72f609c | ||
|
|
adb03b7420 | ||
|
|
2094e18b60 | ||
|
|
541d8ddd40 | ||
|
|
f996172218 | ||
|
|
f9ffc1c1f3 | ||
|
|
05085ad504 | ||
|
|
64aecaf28b | ||
|
|
7b3ef45300 | ||
|
|
bd25de930b | ||
|
|
15d43c9653 | ||
|
|
5b7eba61cc | ||
|
|
2445c79805 | ||
|
|
63be2dee47 | ||
|
|
5bfef1be32 | ||
|
|
8253526f23 | ||
|
|
db19548e2c | ||
|
|
10af31f042 | ||
|
|
e7c6e17590 | ||
|
|
a3d0ceb6a5 | ||
|
|
a277ac182b | ||
|
|
0eee613a95 | ||
|
|
b76fa38e09 | ||
|
|
7679c11b5b | ||
|
|
e7ae2ab441 | ||
|
|
c0f5c8a358 | ||
|
|
dd5feb0e2c | ||
|
|
b95d05c134 | ||
|
|
87bdd0016e | ||
|
|
b9befa4e63 | ||
|
|
d9ed00ddee | ||
|
|
4c2b484c2b | ||
|
|
ff31e41fec | ||
|
|
34204f6183 | ||
|
|
6fc8763895 | ||
|
|
71dd82afe8 | ||
|
|
ea5425a528 | ||
|
|
1a0914196f | ||
|
|
9dd1adacd2 | ||
|
|
93c5268fbc | ||
|
|
98edc89fa0 | ||
|
|
3aad412102 | ||
|
|
a2ee9524fb | ||
|
|
78955a1540 | ||
|
|
f412b7e734 | ||
|
|
b13f3004e2 | ||
|
|
a093b0f8e8 | ||
|
|
d4ba13eee3 | ||
|
|
34a84c6548 | ||
|
|
6c52c1177b | ||
|
|
f9bc312f91 | ||
|
|
7283153f44 | ||
|
|
df6b2bd0e8 | ||
|
|
16831880dd | ||
|
|
f79fc98ba6 | ||
|
|
0483c75dd7 | ||
|
|
3a4dcacd56 | ||
|
|
5f6f09674e | ||
|
|
c785027c5c | ||
|
|
d2659cea5f | ||
|
|
a9b966b159 | ||
|
|
f2c23e21c5 | ||
|
|
53b973e2d3 | ||
|
|
b7a570cba2 | ||
|
|
c77b79f0d2 | ||
|
|
ef6678d8b0 | ||
|
|
21609fa9c4 | ||
|
|
accc083702 | ||
|
|
9e677f3871 | ||
|
|
55290eac30 | ||
|
|
d480502d33 | ||
|
|
c1cda16be0 | ||
|
|
8ca9df9f34 | ||
|
|
406b67b081 | ||
|
|
2c9fecf3ef | ||
|
|
6bc78b67bd | ||
|
|
5bbc46e070 | ||
|
|
6a9ceda361 | ||
|
|
ab2d5fd58f | ||
|
|
7018413777 | ||
|
|
77385616a4 | ||
|
|
c809f27bf5 | ||
|
|
493e778124 | ||
|
|
7373af50b9 | ||
|
|
309f053510 | ||
|
|
d976cf8a27 | ||
|
|
5d60a62a38 | ||
|
|
a3f7dbccea | ||
|
|
0c4cce3339 | ||
|
|
58ccbc4d3d | ||
|
|
c6cabc2087 | ||
|
|
ef1f2722fc | ||
|
|
6b4a7ee03b | ||
|
|
7745a2051d | ||
|
|
eabd5e9acc | ||
|
|
d7dcbf98ff | ||
|
|
ff4c73f3d3 | ||
|
|
dbf044b418 | ||
|
|
7a514e2492 | ||
|
|
a73e533287 | ||
|
|
0f175ac4c6 | ||
|
|
be15f1c698 | ||
|
|
a315da6041 | ||
|
|
3f43f218ac | ||
|
|
5c8ad646af | ||
|
|
77f5fddd90 | ||
|
|
eab8b1ede5 | ||
|
|
2ab0896523 | ||
|
|
639fe920df | ||
|
|
7577c84eca | ||
|
|
22c4ec2d4a | ||
|
|
8ac85881a9 | ||
|
|
724804efc6 | ||
|
|
ca57ef17fc | ||
|
|
480f015fb0 | ||
|
|
d90e087f20 | ||
|
|
3916cc0562 | ||
|
|
cb54e56417 | ||
|
|
6aa606f2fa | ||
|
|
53d13a11ce | ||
|
|
9ba2b4142d | ||
|
|
f5161a5b99 | ||
|
|
f9d5d190d5 | ||
|
|
eead9639a2 | ||
|
|
5044d5d3b4 | ||
|
|
44eed2c1df | ||
|
|
e83b182e4d | ||
|
|
888a76eda0 | ||
|
|
668364e583 | ||
|
|
35c7a2d1b6 | ||
|
|
79803178cd | ||
|
|
419ee8d8ff | ||
|
|
328b3c9409 | ||
|
|
f097508e87 | ||
|
|
e6791ee8ec | ||
|
|
cfbeba3de1 | ||
|
|
bbc7f5a734 | ||
|
|
e8726f03f3 | ||
|
|
de95c6d698 | ||
|
|
86b57447d8 | ||
|
|
c9d1efc6e7 | ||
|
|
dd1eeaddfa | ||
|
|
7f098db3de | ||
|
|
6468cbbfbd | ||
|
|
a30d61e842 | ||
|
|
e0029fdc87 | ||
|
|
712e2c32a0 | ||
|
|
f28e15b567 | ||
|
|
128e33661f | ||
|
|
3916561c62 | ||
|
|
00638d074a | ||
|
|
ca51b2d83a | ||
|
|
1a879f97a2 | ||
|
|
89d18cb7c5 | ||
|
|
4e14249707 | ||
|
|
41f2c08da8 | ||
|
|
4fca7bcfcf | ||
|
|
232725329a | ||
|
|
88247851f4 | ||
|
|
6efaec6642 | ||
|
|
b9e31e39e2 | ||
|
|
e2cd8ed391 | ||
|
|
8a1641fbfa | ||
|
|
936f069ac3 | ||
|
|
89faad730e | ||
|
|
798ab3e183 | ||
|
|
5508aa4533 | ||
|
|
81b7ebbab6 | ||
|
|
2d06e33e10 | ||
|
|
d8cc820572 | ||
|
|
d0ca46cfde | ||
|
|
513124161e | ||
|
|
7cfd8c7f79 | ||
|
|
c32ce5e795 | ||
|
|
d9c1530651 | ||
|
|
305eb071a9 | ||
|
|
10dab69c63 | ||
|
|
60ed594996 | ||
|
|
e60ddb3ee1 | ||
|
|
26b0992285 | ||
|
|
63f3ac807c | ||
|
|
ed1c33eac0 | ||
|
|
e7b7fd0bcc | ||
|
|
79d2b04721 | ||
|
|
5a8ab2d29c | ||
|
|
ed527ac394 | ||
|
|
bf09f48196 | ||
|
|
2a5af15aef | ||
|
|
1f8fe35e25 | ||
|
|
5979273a64 | ||
|
|
ef8c9e3968 | ||
|
|
baa9fdb660 | ||
|
|
35a860bb38 | ||
|
|
286939dc2c | ||
|
|
dd5b1dbdd8 | ||
|
|
fb8d3a038d | ||
|
|
ea5a25a671 | ||
|
|
d21fc4ab1d | ||
|
|
3ae3974866 | ||
|
|
71ffc3087e | ||
|
|
8f406489d4 | ||
|
|
a08d270968 | ||
|
|
48f13e4b82 | ||
|
|
51060f0e4b | ||
|
|
c583109046 | ||
|
|
cf05b693f1 | ||
|
|
d248c1ab0d | ||
|
|
34623fca94 | ||
|
|
975bdd5897 | ||
|
|
1b3380c2ca | ||
|
|
bb707b4a03 | ||
|
|
acb3b6ac85 | ||
|
|
80f6985f5f | ||
|
|
5e3a9c0579 | ||
|
|
b30d62d483 | ||
|
|
0ea1fdbd19 | ||
|
|
f068586f74 | ||
|
|
463f462e24 | ||
|
|
e0c4e3c58e | ||
|
|
5aa3ef38ba | ||
|
|
827277f6a3 | ||
|
|
46389341db | ||
|
|
a58f05a295 | ||
|
|
c0b0a0fe92 | ||
|
|
e9f471dd6f | ||
|
|
7917c5dddb | ||
|
|
de4541a3d9 | ||
|
|
77a496baa7 | ||
|
|
86e863de09 | ||
|
|
c2cfd217c2 | ||
|
|
f2366a61b0 | ||
|
|
9959393dee | ||
|
|
16facf98f1 | ||
|
|
bc8ce8832a | ||
|
|
20bcf960ef | ||
|
|
5cecd3e995 | ||
|
|
d7ead25ea4 | ||
|
|
75c0c375d1 | ||
|
|
5db4913292 | ||
|
|
a6a53b1d0d | ||
|
|
81a0c0e120 | ||
|
|
0dae71a644 | ||
|
|
f8eedaa3ea | ||
|
|
ce2d97a7e7 | ||
|
|
2cb570eaca | ||
|
|
c8c4352957 | ||
|
|
a311db4555 | ||
|
|
05c515b2da | ||
|
|
c1acf2b0fe | ||
|
|
803a2407eb | ||
|
|
a87945d1fb | ||
|
|
30793e68df | ||
|
|
9c666bf7a9 | ||
|
|
eff1dd7c34 | ||
|
|
e79a33ebb0 | ||
|
|
cb0adfdeaf | ||
|
|
6b135c343c | ||
|
|
6c92db524b | ||
|
|
b8dfd1c041 | ||
|
|
54d6347c1d | ||
|
|
4ea6e90600 | ||
|
|
4c7628a247 | ||
|
|
6c7334155a | ||
|
|
480e3ea974 | ||
|
|
1f639a5bc6 | ||
|
|
ccf3b07c3a | ||
|
|
d8508f2b72 | ||
|
|
5e13961ec8 | ||
|
|
80b1139371 | ||
|
|
635b41765c | ||
|
|
4b03686aa2 | ||
|
|
bfb0d8d639 | ||
|
|
93d4a0211d | ||
|
|
cd31bc69ef | ||
|
|
4a7b84d6de | ||
|
|
3142714c11 | ||
|
|
7ea10416a9 | ||
|
|
3e427db0f1 | ||
|
|
9f7b18d294 | ||
|
|
9af0e351b8 | ||
|
|
5c6aa2340d | ||
|
|
4424ec48cf | ||
|
|
61be34581e | ||
|
|
731978356d | ||
|
|
d5223ad1ab | ||
|
|
7cfdfab198 | ||
|
|
eb70e51ac1 | ||
|
|
1d48e7c7ae | ||
|
|
d6fc9fc8c3 | ||
|
|
8ada0976fe | ||
|
|
389ff5e9a4 | ||
|
|
5179e0228c | ||
|
|
2268526314 | ||
|
|
db4bc0eafe | ||
|
|
6edaf79df1 | ||
|
|
79cead3b59 | ||
|
|
db1b12b85c | ||
|
|
9360b7675a | ||
|
|
9c82fd17fe | ||
|
|
3a4665e473 | ||
|
|
b34f4648ee | ||
|
|
0de786d2ea | ||
|
|
ec7aafa1ff | ||
|
|
30c219716d | ||
|
|
5dd47cb89b | ||
|
|
abe856bd3f | ||
|
|
6ecb009466 | ||
|
|
3b4b2383a8 | ||
|
|
4ddd46c4a2 | ||
|
|
69ec2469b4 | ||
|
|
5789af801a | ||
|
|
7171b6302b | ||
|
|
51d4818b1e | ||
|
|
1c2875e7fc | ||
|
|
5048a88310 | ||
|
|
aef37f4362 | ||
|
|
d04641041b | ||
|
|
67b2ccea86 | ||
|
|
5ff9ca3c99 | ||
|
|
fe55df8b2f | ||
|
|
457f605898 | ||
|
|
0f2625133f | ||
|
|
fa34dbdf6f | ||
|
|
050913b0b4 | ||
|
|
a47e47d42c | ||
|
|
43d994b59a | ||
|
|
e8204d46ce | ||
|
|
fece659cfb | ||
|
|
695265b299 | ||
|
|
b652ed0b33 | ||
|
|
9a641552e4 | ||
|
|
3d18aeb5bc | ||
|
|
b545afce50 | ||
|
|
8fca98c0c9 | ||
|
|
0a98c71dfe | ||
|
|
ed75f39094 | ||
|
|
456245f23a | ||
|
|
b4529c9338 | ||
|
|
0ca7a8ab8a | ||
|
|
02f2209e8f | ||
|
|
fb72d02912 | ||
|
|
665fb25fc1 | ||
|
|
742c3c7156 | ||
|
|
637dbbba0d | ||
|
|
f2a3bc4626 | ||
|
|
e8ffa44544 | ||
|
|
bc09287666 | ||
|
|
392d9055fe | ||
|
|
0ee833d7ae | ||
|
|
3074bc00d7 | ||
|
|
cb6fb590c4 | ||
|
|
a7270b2cd2 | ||
|
|
0d925af065 | ||
|
|
7c7991e8ae | ||
|
|
54461b6ea4 | ||
|
|
6a17497fbd | ||
|
|
84f18aa4b6 | ||
|
|
73ab38563f | ||
|
|
1f2b40e4d4 | ||
|
|
1d920c5935 | ||
|
|
037a1e9c0c | ||
|
|
87e324d4d9 | ||
|
|
d1e9b489e3 | ||
|
|
34f1d538d1 | ||
|
|
fb8d2a2e01 | ||
|
|
837db5183e |
@@ -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,7 +4,8 @@
|
|||||||
!.vscode/launch.json
|
!.vscode/launch.json
|
||||||
!.vscode/extensions.json
|
!.vscode/extensions.json
|
||||||
|
|
||||||
|
/node_modules
|
||||||
|
package-lock.json
|
||||||
|
|
||||||
|
|
||||||
# 체섭 ignore
|
# 체섭 ignore
|
||||||
@@ -16,6 +17,7 @@ d_log/*.zip
|
|||||||
sess_*
|
sess_*
|
||||||
*/logs/*.txt
|
*/logs/*.txt
|
||||||
*/logs/*/*.txt
|
*/logs/*/*.txt
|
||||||
|
*/logs/preserved
|
||||||
err.txt
|
err.txt
|
||||||
che/.htaccess
|
che/.htaccess
|
||||||
kwe/.htaccess
|
kwe/.htaccess
|
||||||
@@ -25,16 +27,30 @@ 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
|
||||||
@@ -45,3 +61,9 @@ test.php
|
|||||||
|
|
||||||
phpinfo.php
|
phpinfo.php
|
||||||
vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/*
|
vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/*
|
||||||
|
*.sqlite3
|
||||||
|
|
||||||
|
ingame/js/*
|
||||||
|
ingame/css/*
|
||||||
|
gateway/js/*
|
||||||
|
gateway/css/*
|
||||||
@@ -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) 2021 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,20 +5,30 @@
|
|||||||
|
|
||||||
## 요구사항
|
## 요구사항
|
||||||
|
|
||||||
* 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/gogs/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>, <code>apache</code>)에게 디렉토리 권한이 주어져야합니다.
|
||||||
@@ -28,11 +38,11 @@ Docker를 이용한 설치는 계획중입니다.
|
|||||||
웹 데몬 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/gogs/devsam/core.git
|
||||||
git clone ssh://git@storage.hided.net:2525/devsam/image.git
|
sudo -u www-data git clone https://storage.hided.net/gogs/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__));
|
||||||
@@ -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,7 +23,13 @@
|
|||||||
"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"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
|
|||||||
@@ -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,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;
|
||||||
|
|||||||
|
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,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 +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; }
|
||||||
@@ -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,24 +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/install.js')?>
|
<?= WebUtil::printJS('../dist_js/gateway/common_ts.js') ?>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
<?= WebUtil::printCSS('../dist_js/gateway/common_ts.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>
|
||||||
@@ -34,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>
|
||||||
|
|
||||||
@@ -58,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">
|
||||||
@@ -117,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>
|
||||||
|
|
||||||
@@ -126,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>
|
||||||
|
|
||||||
@@ -152,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 -->
|
||||||
|
|
||||||
@@ -166,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,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
require(__dir__.'/../vendor/autoload.php');
|
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 '{}' COMMENT 'json',
|
||||||
|
`penalty` TEXT NOT NULL DEFAULT '{}' COMMENT 'json',
|
||||||
`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,
|
||||||
@@ -42,7 +45,7 @@ CREATE TABLE `member` (
|
|||||||
UNIQUE INDEX `kauth_id` (`oauth_id`),
|
UNIQUE INDEX `kauth_id` (`oauth_id`),
|
||||||
INDEX `delete_after` (`delete_after`)
|
INDEX `delete_after` (`delete_after`)
|
||||||
)
|
)
|
||||||
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
-- 로그인 로그 테이블
|
-- 로그인 로그 테이블
|
||||||
CREATE TABLE `member_log` (
|
CREATE TABLE `member_log` (
|
||||||
@@ -55,7 +58,7 @@ CREATE TABLE `member_log` (
|
|||||||
INDEX `action` (`member_no`, `action_type`, `date`),
|
INDEX `action` (`member_no`, `action_type`, `date`),
|
||||||
INDEX `member` (`member_no`, `date`)
|
INDEX `member` (`member_no`, `date`)
|
||||||
)
|
)
|
||||||
ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
|
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# KV storage
|
# KV storage
|
||||||
@@ -69,4 +72,19 @@ CREATE TABLE if not exists `storage` (
|
|||||||
UNIQUE INDEX `key` (`namespace`, `key`)
|
UNIQUE INDEX `key` (`namespace`, `key`)
|
||||||
)
|
)
|
||||||
COLLATE='utf8mb4_general_ci'
|
COLLATE='utf8mb4_general_ci'
|
||||||
ENGINE=MyISAM
|
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'
|
||||||
|
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();
|
|
||||||
|
|
||||||
list($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:13>";
|
<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;"; }
|
}
|
||||||
|
if ($general['npc'] >= 2) {
|
||||||
|
$style .= "color:cyan;";
|
||||||
|
} elseif ($general['npc'] == 1) {
|
||||||
|
$style .= "color:skyblue;";
|
||||||
|
}
|
||||||
|
|
||||||
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:13>";
|
<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 "특기 부여":
|
||||||
list($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,76 @@ 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:13>";
|
<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;"; }
|
if ($general['npc'] >= 2) {
|
||||||
|
$style .= "color:cyan;";
|
||||||
|
} elseif ($general['npc'] == 1) {
|
||||||
|
$style .= "color:skyblue;";
|
||||||
|
}
|
||||||
|
if ($general['con'] > $conlimit) {
|
||||||
|
$style .= "color:red;";
|
||||||
|
}
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<option value={$general['no']} $style>{$general['name']}</option>";
|
<option value={$general['no']} $style>{$general['name']}</option>";
|
||||||
@@ -94,49 +109,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>
|
||||||
@@ -27,25 +27,37 @@ increaseRefresh("명장일람", 1);
|
|||||||
<meta name="viewport" content="width=1136" />
|
<meta name="viewport" content="width=1136" />
|
||||||
<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')?>
|
<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::printDist('ts', 'common') ?>
|
||||||
</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'];
|
||||||
@@ -55,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;
|
||||||
@@ -107,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;
|
||||||
}],
|
}],
|
||||||
@@ -127,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']];
|
||||||
@@ -156,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'];
|
||||||
|
|
||||||
@@ -186,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;
|
||||||
@@ -206,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 getItemName($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', [
|
||||||
@@ -260,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>
|
||||||
@@ -42,16 +45,20 @@ if ($type <= 0 || $type > 15) {
|
|||||||
<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')?>
|
<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('../d_shared/common_path.js') ?>
|
<?= 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>
|
||||||
<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>
|
||||||
@@ -69,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 = [];
|
||||||
@@ -81,76 +90,71 @@ 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) {
|
if ($general['npc'] >= 2) {
|
||||||
$name = "<font color=cyan>{$general['name']}</font>";
|
$name = "<font color=cyan>{$general['name']}</font>";
|
||||||
} elseif ($general['npc'] == 1) {
|
} elseif ($general['npc'] == 1) {
|
||||||
@@ -159,25 +163,36 @@ for ($j=0; $j < $gencount; $j++) {
|
|||||||
$name = "{$general['name']}";
|
$name = "{$general['name']}";
|
||||||
}
|
}
|
||||||
|
|
||||||
$general['connect'] = Util::round($general['connect'] / 10) * 10;
|
if (key_exists($general['owner'], $ownerNameList)) {
|
||||||
|
$name = $name . '<br><small>(' . $ownerNameList[$general['owner']] . ')</small>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$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>".getGenChar($general['personal'])."</td>
|
<td align=center>" . displayCharInfo($general['personal']) . "</td>
|
||||||
<td align=center>".getGenSpecial($general['special'])." / ".getGenSpecial($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']}";
|
||||||
@@ -191,8 +206,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);
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
@@ -37,68 +47,82 @@ else{
|
|||||||
<meta name="viewport" content="width=1136" />
|
<meta name="viewport" content="width=1136" />
|
||||||
<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')?>
|
<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('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery.redirect.js')?>
|
<?= WebUtil::printDist('ts', ['common', 'hallOfFame']) ?>
|
||||||
<?=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'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -110,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";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -129,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,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -7,15 +8,12 @@ $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,18 +35,28 @@ 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 = $s_year * 12 + $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) {
|
||||||
|
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 = $e_year * 12 + $e_month;
|
$e = $e_year * 12 + $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;
|
$year = $s_year;
|
||||||
$month = $s_month;
|
$month = $s_month;
|
||||||
}
|
} else if (!$yearmonth) {
|
||||||
else if (!$yearmonth) {
|
|
||||||
$year = $admin['year'];
|
$year = $admin['year'];
|
||||||
$month = $admin['month'] - 1;
|
$month = $admin['month'] - 1;
|
||||||
} else {
|
} else {
|
||||||
@@ -79,6 +85,10 @@ if ($month <= 0) {
|
|||||||
$month += 12;
|
$month += 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$history = $db->queryFirstRow('SELECT * FROM ng_history WHERE server_id = %s AND year = %i AND month = %i', $serverID, $year, $month);
|
||||||
|
|
||||||
|
|
||||||
|
$nations = Json::decode($history['nations']);
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
@@ -88,81 +98,118 @@ 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 ? $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(Json::decode($history['global_history'])) ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th colspan=5 align=center class='bg1'>장 수 동 향</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=5 valign=top>
|
||||||
|
<?= formatHistoryToHTML(Json::decode($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 ?>';
|
||||||
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 ?>,
|
||||||
});
|
});
|
||||||
</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();
|
|
||||||
|
|
||||||
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,65 @@ 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')?>
|
|
||||||
|
|
||||||
</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 +95,62 @@ 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);
|
if ($general['npc'] >= 2) {
|
||||||
if($general['npc'] >= 2) { echo "<font color=cyan>{$general['name']}</font>, "; }
|
echo "<font color=cyan>{$general['name']}</font>, ";
|
||||||
elseif($general['npc'] == 1) { echo "<font color=skyblue>{$general['name']}</font>, "; }
|
} elseif ($general['npc'] == 1) {
|
||||||
else { echo "{$general['name']}, "; }
|
echo "<font color=skyblue>{$general['name']}</font>, ";
|
||||||
|
} else {
|
||||||
|
echo "{$general['name']}, ";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
</td>
|
</td>
|
||||||
@@ -201,14 +160,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 +167,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 +194,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,15 +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::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><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>
|
||||||
@@ -48,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>".getGenChar($general['personal'])."</td>
|
|
||||||
<td align=center>".getGenSpecial($general['special'])." / ".getGenSpecial($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,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -9,71 +10,79 @@ $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();
|
||||||
|
|
||||||
$query = "select con,turntime from general where owner='{$userID}'";
|
$mapTheme = $gameStor->map_theme ?? 'che';
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$me = MYDB_fetch_array($result);
|
$me = $db->queryFirstRow('SELECT con,turntime from general where owner=%i', $userID);
|
||||||
|
|
||||||
$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>
|
||||||
|
|
||||||
<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('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
|
<?= WebUtil::printCSS('css/normalize.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::printJS('../d_shared/common_path.js') ?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
<?= WebUtil::printJS('d_shared/base_map.js') ?>
|
||||||
<?=WebUtil::printJS('js/base_map.js')?>
|
<?= WebUtil::printDist('ts', ['common', 'map']) ?>
|
||||||
<?=WebUtil::printJS('js/map.js')?>
|
|
||||||
<script>
|
<script>
|
||||||
|
window.serverNick = '<?= DB::prefix() ?>';
|
||||||
|
window.serverID = '<?= UniqueConst::$serverID ?>';
|
||||||
$(function() {
|
$(function() {
|
||||||
|
|
||||||
reloadWorldMap({
|
reloadWorldMap({
|
||||||
neutralView: true,
|
neutralView: true,
|
||||||
showMe:true
|
showMe: true,
|
||||||
|
useCachedMap: true
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/normalize.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/map.css')?>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1200 class='tb_layout bg0'>
|
<table align=center width=1200 class='tb_layout bg0'>
|
||||||
<tr><td>세 력 도<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>세 력 도<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1200 height=520 class='tb_layout bg0'>
|
<table align=center width=1200 height=520 class='tb_layout bg0'>
|
||||||
<tr height=520>
|
<tr height=520>
|
||||||
<td width=498 valign=top>
|
<td width=498 valign=top>
|
||||||
<?=getGeneralPublicRecordRecent(34)?>
|
<?= formatHistoryToHTML(getGlobalActionLogRecent(34)) ?>
|
||||||
</td>
|
</td>
|
||||||
<td width=698>
|
<td width=698>
|
||||||
<?=getMapHtml()?>
|
<?= getMapHtml($mapTheme) ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=2 valign=top>
|
<td colspan=2 valign=top>
|
||||||
<?=getWorldHistoryRecent(34)?>
|
<?= formatHistoryToHTML(getGlobalHistoryLogRecent(34)) ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1200 class='tb_layout bg0'>
|
<table align=center width=1200 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,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;
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
include "lib.php";
|
||||||
|
include "func.php";
|
||||||
|
|
||||||
|
APIHelper::launch(dirname(__FILE__));
|
||||||
@@ -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']);
|
||||||
@@ -54,36 +80,55 @@ 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'] = "-";
|
||||||
}
|
}
|
||||||
@@ -99,20 +144,21 @@ 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'] = "-";
|
||||||
}
|
}
|
||||||
@@ -147,17 +193,18 @@ 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'] = "-";
|
||||||
}
|
}
|
||||||
@@ -192,17 +239,18 @@ 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'] = "-";
|
||||||
}
|
}
|
||||||
@@ -237,17 +285,18 @@ 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'] = "-";
|
||||||
}
|
}
|
||||||
@@ -278,40 +327,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 +362,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 +387,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 +416,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 +439,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 +452,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 +583,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>
|
|
||||||
|
|
||||||
@@ -1,194 +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("사령부", 1);
|
|
||||||
|
|
||||||
$query = "select no,nation,level,con,turntime,belong from general where owner='{$userID}'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$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']);
|
|
||||||
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
|
|
||||||
|
|
||||||
if($me['level'] == 0 || ($me['level'] == 1 && $me['belong'] < $nation['secretlimit'])) {
|
|
||||||
echo "수뇌부가 아니거나 사관년도가 부족합니다.";
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
if($me['level'] >= 5) { $btn = "submit"; $btn2 = "button"; }
|
|
||||||
else { $btn = "hidden"; $btn2 = "hidden"; }
|
|
||||||
|
|
||||||
$date = date('Y-m-d H:i:s');
|
|
||||||
|
|
||||||
// 명령 목록
|
|
||||||
$admin = $gameStor->getValues(['year','month','turnterm']);
|
|
||||||
|
|
||||||
$query = "
|
|
||||||
select nation,level,
|
|
||||||
l12turn0,l12turn1,l12turn2,l12turn3,l12turn4,l12turn5,l12turn6,l12turn7,l12turn8,l12turn9,l12turn10,l12turn11,
|
|
||||||
l11turn0,l11turn1,l11turn2,l11turn3,l11turn4,l11turn5,l11turn6,l11turn7,l11turn8,l11turn9,l11turn10,l11turn11,
|
|
||||||
l10turn0,l10turn1,l10turn2,l10turn3,l10turn4,l10turn5,l10turn6,l10turn7,l10turn8,l10turn9,l10turn10,l10turn11,
|
|
||||||
l9turn0, l9turn1, l9turn2, l9turn3, l9turn4, l9turn5, l9turn6, l9turn7, l9turn8, l9turn9, l9turn10, l9turn11,
|
|
||||||
l8turn0, l8turn1, l8turn2, l8turn3, l8turn4, l8turn5, l8turn6, l8turn7, l8turn8, l8turn9, l8turn10, l8turn11,
|
|
||||||
l7turn0, l7turn1, l7turn2, l7turn3, l7turn4, l7turn5, l7turn6, l7turn7, l7turn8, l7turn9, l7turn10, l7turn11,
|
|
||||||
l6turn0, l6turn1, l6turn2, l6turn3, l6turn4, l6turn5, l6turn6, l6turn7, l6turn8, l6turn9, l6turn10, l6turn11,
|
|
||||||
l5turn0, l5turn1, l5turn2, l5turn3, l5turn4, l5turn5, l5turn6, l5turn7, l5turn8, l5turn9, l5turn10, l5turn11
|
|
||||||
from nation where nation='{$me['nation']}'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$nation = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$lv = getNationChiefLevel($nation['level']);
|
|
||||||
$turn = [];
|
|
||||||
|
|
||||||
for($i=12; $i >= $lv; $i--) {
|
|
||||||
$turn[$i] = getCoreTurn($nation, $i);
|
|
||||||
|
|
||||||
$query = "select name,turntime,npc from general where level={$i} and nation='{$me['nation']}'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$gen[$i] = MYDB_fetch_array($result)??[
|
|
||||||
'npc'=>0,
|
|
||||||
'name'=>'',
|
|
||||||
'turntime'=>''
|
|
||||||
];
|
|
||||||
}
|
|
||||||
for($i= $lv - 1; $i>=5; $i--){
|
|
||||||
$gen[$i] = [
|
|
||||||
'npc'=>0,
|
|
||||||
'name'=>'',
|
|
||||||
'turntime'=>''
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
<!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')?>
|
|
||||||
<script type="text/javascript">
|
|
||||||
function turn(type) {
|
|
||||||
if(type == 0) location.replace('turn_push_core.php');
|
|
||||||
else if(type == 1) location.replace('turn_pop_core.php');
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr><td>사 령 부<input type=button value='갱신' onclick=location.replace('b_chiefcenter.php')><br><?=backButton()?></td></tr>
|
|
||||||
</table>
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr><td colspan=10 align=center bgcolor=skyblue>수뇌부 일정</td></tr>
|
|
||||||
<tr><td colspan=10 align=center>
|
|
||||||
<?php
|
|
||||||
$year = $admin['year'];
|
|
||||||
$month = $admin['month'];
|
|
||||||
$date = substr(date('Y-m-d H:i:s'), 14);
|
|
||||||
|
|
||||||
$totaldate = [];
|
|
||||||
$turntime = [];
|
|
||||||
$turndate = [];
|
|
||||||
|
|
||||||
for($i=12; $i >= $lv; $i--) {
|
|
||||||
$totaldate[$i] = $gen[$i]['turntime'];
|
|
||||||
$turntime[$i] = substr($gen[$i]['turntime'], 14);
|
|
||||||
}
|
|
||||||
|
|
||||||
//FIXME: 각 칸을 div로 놓으면 네개씩 출력하는 삽질이 필요없다.
|
|
||||||
|
|
||||||
for($k=0; $k < 2; $k++) {
|
|
||||||
$l4 = 12 - $k; $l3 = 10 - $k; $l2 = 8 - $k; $l1 = 6 - $k;
|
|
||||||
|
|
||||||
if ($gen[$l4]['npc'] >= 2) { $gen[$l4]['name'] = "<font color=cyan>".($gen[$l4]['name']??'')."</font>"; }
|
|
||||||
elseif($gen[$l4]['npc'] == 1) { $gen[$l4]['name'] = "<font color=skyblue>".($gen[$l4]['name']??'')."</font>"; }
|
|
||||||
if ($gen[$l3]['npc'] >= 2) { $gen[$l3]['name'] = "<font color=cyan>".($gen[$l3]['name']??'')."</font>"; }
|
|
||||||
elseif($gen[$l3]['npc'] == 1) { $gen[$l3]['name'] = "<font color=skyblue>".($gen[$l3]['name']??'')."</font>"; }
|
|
||||||
if ($gen[$l2]['npc'] >= 2) { $gen[$l2]['name'] = "<font color=cyan>".($gen[$l2]['name']??'')."</font>"; }
|
|
||||||
elseif($gen[$l2]['npc'] == 1) { $gen[$l2]['name'] = "<font color=skyblue>".($gen[$l2]['name']??'')."</font>"; }
|
|
||||||
if ($gen[$l1]['npc'] >= 2) { $gen[$l1]['name'] = "<font color=cyan>".($gen[$l1]['name']??'')."</font>"; }
|
|
||||||
elseif($gen[$l1]['npc'] == 1) { $gen[$l1]['name'] = "<font color=skyblue>".($gen[$l1]['name']??'')."</font>"; }
|
|
||||||
|
|
||||||
echo "
|
|
||||||
<tr>
|
|
||||||
<td align=center id=bg1>.</td>
|
|
||||||
<td colspan=2 align=center id=bg1><b>".getLevel($l4, $nation['level'])." : ".($gen[$l4]['name']??'')."</b></td>
|
|
||||||
<td colspan=2 align=center id=bg1><b>".getLevel($l3, $nation['level'])." : ".($gen[$l3]['name']??'')."</b></td>
|
|
||||||
<td colspan=2 align=center id=bg1><b>".getLevel($l2, $nation['level'])." : ".($gen[$l2]['name']??'')."</b></td>
|
|
||||||
<td colspan=2 align=center id=bg1><b>".getLevel($l1, $nation['level'])." : ".($gen[$l1]['name']??'')."</b></td>
|
|
||||||
<td align=center id=bg1>.</td>
|
|
||||||
</tr>
|
|
||||||
";
|
|
||||||
|
|
||||||
for($i=0; $i < 12; $i++) {
|
|
||||||
$turndate[$l4] = substr($totaldate[$l4]??'', 11, 5);
|
|
||||||
$turndate[$l3] = substr($totaldate[$l3]??'', 11, 5);
|
|
||||||
$turndate[$l2] = substr($totaldate[$l2]??'', 11, 5);
|
|
||||||
$turndate[$l1] = substr($totaldate[$l1]??'', 11, 5);
|
|
||||||
$j = $i + 1;
|
|
||||||
$td4 = $turndate[$l4]??"-";
|
|
||||||
$td3 = $turndate[$l3]??"-";
|
|
||||||
$td2 = $turndate[$l2]??"-";
|
|
||||||
$td1 = $turndate[$l1]??"-";
|
|
||||||
$tn4 = $turn[$l4][$i]??"-";
|
|
||||||
$tn3 = $turn[$l3][$i]??"-";
|
|
||||||
$tn2 = $turn[$l2][$i]??"-";
|
|
||||||
$tn1 = $turn[$l1][$i]??"-";
|
|
||||||
echo "
|
|
||||||
<tr>
|
|
||||||
<td width=20 align=center id=bg0><b>$j</b></td>
|
|
||||||
<td width=43 align=center bgcolor=black><b>$td4</b></td>
|
|
||||||
<td width=192 align=center height=24 style=table-layout:fixed; id=bg2>$tn4</td>
|
|
||||||
<td width=43 align=center bgcolor=black><b>$td3</b></td>
|
|
||||||
<td width=192 align=center height=24 style=table-layout:fixed; id=bg2>$tn3</td>
|
|
||||||
<td width=43 align=center bgcolor=black><b>$td2</b></td>
|
|
||||||
<td width=192 align=center height=24 style=table-layout:fixed; id=bg2>$tn2</td>
|
|
||||||
<td width=43 align=center bgcolor=black><b>$td1</b></td>
|
|
||||||
<td width=192 align=center height=24 style=table-layout:fixed; id=bg2>$tn1</td>
|
|
||||||
<td width=20 align=center id=bg0><b>$j</b></td>
|
|
||||||
</tr>
|
|
||||||
";
|
|
||||||
if($totaldate[$l4]??'') { $totaldate[$l4] = addTurn($totaldate[$l4], $admin['turnterm']); }
|
|
||||||
if($totaldate[$l3]??'') { $totaldate[$l3] = addTurn($totaldate[$l3], $admin['turnterm']); }
|
|
||||||
if($totaldate[$l2]??'') { $totaldate[$l2] = addTurn($totaldate[$l2], $admin['turnterm']); }
|
|
||||||
if($totaldate[$l1]??'') { $totaldate[$l1] = addTurn($totaldate[$l1], $admin['turnterm']); }
|
|
||||||
}
|
|
||||||
if($k == 0) {
|
|
||||||
echo "<form action=processing.php method=post><tr><td colspan=5 align=right>";
|
|
||||||
echo CoreTurnTable();
|
|
||||||
echo "</td><td colspan=5>
|
|
||||||
<input type={$btn2} style=background-color:".GameConst::$basecolor2.";color:white;width:58px;font-size:13px; value='미루기▼' onclick='turn(0)'>
|
|
||||||
<input type={$btn2} style=background-color:".GameConst::$basecolor2.";color:white;width:58px;font-size:13px; value='▲당기기' onclick='turn(1)'>
|
|
||||||
<br>";
|
|
||||||
CoreCommandTable();
|
|
||||||
echo "<input type={$btn} style=background-color:".GameConst::$basecolor2.";color:white;width:55px;font-size:13px; value='실 행'></td></tr></form>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
|
||||||
<tr><td><?=backButton()?></td></tr>
|
|
||||||
<tr><td><?=banner()?></td></tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||