Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
53f3083b73 | ||
|
|
61df5ed809 | ||
|
|
7c1baa6cf1 | ||
|
|
800d4f6cc9 | ||
|
|
1ab45af036 | ||
|
|
e9b5e4d4d1 | ||
|
|
65aa4c29a4 | ||
|
|
e75b6f2d5b | ||
|
|
dbc758095f | ||
|
|
57a94e4a7d | ||
|
|
50526383f9 | ||
|
|
639b1dcac7 | ||
|
|
a984651888 | ||
|
|
a8befe5478 | ||
|
|
43ba732aad | ||
|
|
158068273e | ||
|
|
94a00dbdac | ||
|
|
fedc7e5ef5 | ||
|
|
78ff016def | ||
|
|
30d8324a0a | ||
|
|
de1fa34922 | ||
|
|
a74b9a5e80 | ||
|
|
79a199cbd3 | ||
|
|
2f2062c9e5 | ||
|
|
1dcace7a62 | ||
|
|
8f107b56b3 | ||
|
|
8c6afee7c9 | ||
|
|
d4982f3ed9 | ||
|
|
f2a785f2fc | ||
|
|
6fafcfae4e | ||
|
|
33e075f669 | ||
|
|
e5fc467c4e | ||
|
|
b7a5de49c6 | ||
|
|
3f145abd6f | ||
|
|
4612834870 | ||
|
|
83c5609fad | ||
|
|
d142056098 | ||
|
|
4d8ecf4191 | ||
|
|
af6c3f466d | ||
|
|
033a2d8674 | ||
|
|
9079788b2b | ||
|
|
44ddb2e480 | ||
|
|
295ba84071 | ||
|
|
8773250aab | ||
|
|
c5a4602fe1 | ||
|
|
5f4c43baf6 | ||
|
|
0ef3921e17 | ||
|
|
efcf0f772e | ||
|
|
ccabe847bb | ||
|
|
45ed63ffe3 | ||
|
|
7bebbe3a16 | ||
|
|
53ba1db79f | ||
|
|
76c306a122 | ||
|
|
89c2c163cb | ||
|
|
8826061266 | ||
|
|
e684877c94 | ||
|
|
12c8152901 | ||
|
|
8ba20bf4d2 | ||
|
|
0bc1ad09d1 | ||
|
|
231c79132a | ||
|
|
089803c599 | ||
|
|
4ea373aff6 | ||
|
|
0d94b8c742 | ||
|
|
d444f19043 | ||
|
|
87a0e73c96 | ||
|
|
b5922095f0 | ||
|
|
3fee29e9e9 | ||
|
|
4e351b3be8 | ||
|
|
3432b900df | ||
|
|
fb7c67f317 | ||
|
|
28d5a5c39a | ||
|
|
e2754511d9 | ||
|
|
71d179de76 | ||
|
|
08523852da | ||
|
|
3dd52942d2 | ||
|
|
bb24e45028 | ||
|
|
f8c72a6a0a | ||
|
|
fa246ff810 | ||
|
|
1a1d384a3e | ||
|
|
6d85c609fd | ||
|
|
e1b8dde60a | ||
|
|
e8d32eef4e | ||
|
|
ec0fa686a9 | ||
|
|
7604273c1a | ||
|
|
00db927ce7 | ||
|
|
9fea24f0f6 | ||
|
|
c903ce929f | ||
|
|
d48d9f85b3 | ||
|
|
5bdf7ba316 | ||
|
|
518c74736f | ||
|
|
223d2cf786 | ||
|
|
cfa2cff34a | ||
|
|
26eacfe795 | ||
|
|
b1b937ee31 | ||
|
|
122479158c | ||
|
|
0af5e9ec84 | ||
|
|
cb5414f789 | ||
|
|
224cb1b913 | ||
|
|
8bd84cc701 | ||
|
|
a14dcf8b3e | ||
|
|
a1a26bf8fe | ||
|
|
fea229c4ad | ||
|
|
7040d940ac | ||
|
|
a576d72335 | ||
|
|
5aab373d20 | ||
|
|
32f8160eb2 | ||
|
|
701355beb3 | ||
|
|
28de7c517b | ||
|
|
7365ca7a64 | ||
|
|
2a61813b67 | ||
|
|
85e9223603 | ||
|
|
943e2be676 | ||
|
|
2f09df7521 | ||
|
|
445e445e49 | ||
|
|
f20e4bd572 | ||
|
|
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 | ||
|
|
ae8b94b2d7 | ||
|
|
7670d55f3c | ||
|
|
528ab4e203 | ||
|
|
cf1dc90137 | ||
|
|
f78fcc2b71 | ||
|
|
fb2d30f2c9 | ||
|
|
8781e7c6ad | ||
|
|
c34317b1e5 | ||
|
|
b09730b422 | ||
|
|
0f1725a7ab | ||
|
|
b12e0358d6 | ||
|
|
7ef841746a | ||
|
|
2b52b2379e | ||
|
|
8dd5965c44 | ||
|
|
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 | ||
|
|
43da95b4a5 | ||
|
|
3d93a63caa | ||
|
|
9550607da3 | ||
|
|
d5d9798913 | ||
|
|
6cfe08235f | ||
|
|
49eb850ff1 | ||
|
|
5a558583d2 | ||
|
|
1e5f0d0555 | ||
|
|
c58caeda4c | ||
|
|
26fc56f2b8 | ||
|
|
6a9e7aa89d | ||
|
|
b6c3b0cdc3 | ||
|
|
5ae91ac620 | ||
|
|
70265c55ef | ||
|
|
7c3b5fc31e | ||
|
|
a9a830caa2 | ||
|
|
b49ff3d4ed | ||
|
|
42310fa170 | ||
|
|
bfff1d9e2f | ||
|
|
2c98777b9f | ||
|
|
4a91260a31 | ||
|
|
076971bcae | ||
|
|
01fcc9bcab | ||
|
|
348877c7cd | ||
|
|
478f26e75a | ||
|
|
57cc558b9b | ||
|
|
20b1f8eff8 | ||
|
|
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 | ||
|
|
c160c5a555 | ||
|
|
31c7bf5348 | ||
|
|
6eadf718fc | ||
|
|
effced24d1 | ||
|
|
09f399db9a | ||
|
|
2b73f6faea | ||
|
|
943662605e | ||
|
|
9a04962bd6 | ||
|
|
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 | ||
|
|
a277ac182b | ||
|
|
0eee613a95 | ||
|
|
b76fa38e09 | ||
|
|
c0f5c8a358 | ||
|
|
71dd82afe8 | ||
|
|
ea5425a528 | ||
|
|
d4ba13eee3 | ||
|
|
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 | ||
|
|
a556877a17 | ||
|
|
bcbd6dc4db | ||
|
|
41f7ad8d75 | ||
|
|
258d4b28da | ||
|
|
31e900c422 | ||
|
|
7b1a76871a | ||
|
|
c6f3e7672f | ||
|
|
540c31903c | ||
|
|
3e5262d7a3 | ||
|
|
2b36ffef45 | ||
|
|
4c25d2275c | ||
|
|
6c66fcdfc3 | ||
|
|
aaa972d767 | ||
|
|
45c8538426 | ||
|
|
95702724a9 | ||
|
|
98c4d3853c | ||
|
|
7c91143f39 | ||
|
|
56e6f57568 | ||
|
|
ccab456679 | ||
|
|
5af000ca43 | ||
|
|
354c8f04ae | ||
|
|
3fbd336b45 | ||
|
|
3c0b86a322 | ||
|
|
fca4b69d5a | ||
|
|
ce62072761 | ||
|
|
93dd7a8478 | ||
|
|
02fb84a312 | ||
|
|
f3e68989e5 | ||
|
|
468050a9ce | ||
|
|
f37a602da3 | ||
|
|
2979691d7e | ||
|
|
72920a0432 | ||
|
|
e81075ef04 | ||
|
|
df1a99d877 | ||
|
|
10e825dc9f | ||
|
|
07ba7933fb | ||
|
|
3059eac0fd | ||
|
|
aa33aa6d4f | ||
|
|
0a1cdeeaa3 | ||
|
|
e4bef47b7e | ||
|
|
f551f994b5 | ||
|
|
4b7a3af691 | ||
|
|
6f88a80118 | ||
|
|
e03715ee46 | ||
|
|
aafe6d8863 | ||
|
|
47005483cd | ||
|
|
378075955a | ||
|
|
2059797904 | ||
|
|
8c711242a9 | ||
|
|
481894c89b | ||
|
|
ba53275322 | ||
|
|
cfe2b4c1bd | ||
|
|
60e83f8324 | ||
|
|
ceac040d82 | ||
|
|
89d400c81a | ||
|
|
4cf7bca399 | ||
|
|
761441622e | ||
|
|
1b814abf0b | ||
|
|
62a2147e33 | ||
|
|
246dff9c87 | ||
|
|
50494beb27 | ||
|
|
ce3b3ebfd8 | ||
|
|
213090c32e | ||
|
|
adb8668197 | ||
|
|
0023677003 | ||
|
|
0b19a37ad4 | ||
|
|
9f34ae5d28 | ||
|
|
6f07b5cf08 | ||
|
|
0f39431157 | ||
|
|
bc1a470e64 | ||
|
|
09e24f5684 | ||
|
|
2f27ea4c8a | ||
|
|
d09aba70b7 | ||
|
|
69b0a80684 | ||
|
|
48f0c56a9e | ||
|
|
83833a3693 | ||
|
|
18429d52d4 | ||
|
|
58cc90083b | ||
|
|
2772161144 | ||
|
|
0e95259b14 | ||
|
|
3d9f38f1e3 | ||
|
|
ba3accd834 | ||
|
|
0786e40ebd | ||
|
|
8a56393159 | ||
|
|
5ca8a6ecfa | ||
|
|
5c82edc4be | ||
|
|
093c04bc24 | ||
|
|
131dd46a38 | ||
|
|
6b1b4fdfbb | ||
|
|
e4ad779b37 | ||
|
|
65d817624e | ||
|
|
66501189c4 | ||
|
|
4303898bb8 | ||
|
|
7d76a9d3ed | ||
|
|
1cc42f341b | ||
|
|
0b41ee0a29 | ||
|
|
66b6c4d04f | ||
|
|
6502843d6c | ||
|
|
5ecfe72e19 | ||
|
|
f28cdefffe | ||
|
|
40494f2cf1 | ||
|
|
f2664c112b | ||
|
|
41d91df355 | ||
|
|
965671dd93 | ||
|
|
c8d08e4b2c | ||
|
|
2897a9b484 | ||
|
|
d190e59d83 | ||
|
|
0bb25e8773 | ||
|
|
37e1903cb1 | ||
|
|
b402846d43 | ||
|
|
c1a6dd385a | ||
|
|
ccbef236d3 | ||
|
|
d7b9e8b2e0 | ||
|
|
deaf77d3d0 | ||
|
|
5c738f97ed | ||
|
|
c9f7f7ab08 | ||
|
|
746977d5d0 | ||
|
|
acb09bfe71 | ||
|
|
e2a1203b43 | ||
|
|
124036cea6 | ||
|
|
2ac1d82826 | ||
|
|
fa4e0c1948 | ||
|
|
735427ead0 | ||
|
|
4fa99a7e1b | ||
|
|
2f963a205a | ||
|
|
1f03f7e7c3 | ||
|
|
31689fb6ba | ||
|
|
cf7ebbd314 | ||
|
|
40a953aed5 | ||
|
|
c4d999ada7 | ||
|
|
fff6b4e155 | ||
|
|
380e08d89f | ||
|
|
96c8199092 | ||
|
|
54870cf067 | ||
|
|
8654447aac | ||
|
|
28a690cbba | ||
|
|
52d1a48c0b | ||
|
|
f45333db5e | ||
|
|
c920e45934 | ||
|
|
dd86ef4591 | ||
|
|
b9fb00f042 | ||
|
|
355d9fd995 | ||
|
|
b68c13c4f2 | ||
|
|
f2803291ab | ||
|
|
54df034c77 | ||
|
|
7317b8bc18 | ||
|
|
2f030a6dd6 | ||
|
|
ef0dec32ee | ||
|
|
e7f5850c31 | ||
|
|
d1d81e03d1 | ||
|
|
c65d6565df | ||
|
|
a2d40ecf4a | ||
|
|
7291c828c0 | ||
|
|
01caa625bd | ||
|
|
6cad6f45fe | ||
|
|
a6936ac8d7 | ||
|
|
eb9ae00d24 | ||
|
|
b8c8321757 | ||
|
|
41235bed5d | ||
|
|
7367eb1c45 | ||
|
|
f9d90c38ef | ||
|
|
275d9b1c25 | ||
|
|
663c24b31f | ||
|
|
beb501354d | ||
|
|
ba165239c3 | ||
|
|
e64ef5de84 | ||
|
|
c6bbbe081d | ||
|
|
66dcefc844 | ||
|
|
93d580e74e | ||
|
|
9eb35b55c6 | ||
|
|
d2e052dfa3 | ||
|
|
ddd889c42c | ||
|
|
70da3909a9 | ||
|
|
c398b55f3c | ||
|
|
317c42b384 | ||
|
|
a95903ceff | ||
|
|
98c386622a | ||
|
|
398f54cced | ||
|
|
c337ff2f67 | ||
|
|
d9f6f7956e | ||
|
|
30e2432fc3 | ||
|
|
8238f27dfa | ||
|
|
b00d8f2ebd | ||
|
|
98168c61b3 | ||
|
|
6627797cc6 | ||
|
|
30e54c3d0e | ||
|
|
ee3764f5f5 | ||
|
|
a86e4cf64b | ||
|
|
78ea405e40 | ||
|
|
f99583dc99 | ||
|
|
b9e5ddce94 | ||
|
|
1d28f22577 | ||
|
|
90235660db | ||
|
|
8e12aea3ff | ||
|
|
280ff18526 | ||
|
|
9e88b03438 | ||
|
|
14213ea3cd | ||
|
|
5352a507b2 | ||
|
|
3b382199fc | ||
|
|
67dea49a9b | ||
|
|
8bdca87bf9 | ||
|
|
8085e96fdd | ||
|
|
86b40695e6 | ||
|
|
676f98659a | ||
|
|
2fbf8bc2e2 | ||
|
|
bf233f7552 | ||
|
|
2c3e577c4e | ||
|
|
7270de6775 | ||
|
|
e45f3a7d03 | ||
|
|
742e2e8003 | ||
|
|
4cdec6c393 | ||
|
|
a2d273bdc9 | ||
|
|
a163fbef7f | ||
|
|
ec226ede65 | ||
|
|
771fcbec6a | ||
|
|
ae62669fe8 | ||
|
|
4823795c50 | ||
|
|
a80442399d | ||
|
|
913b308892 | ||
|
|
21837d0869 | ||
|
|
5706fcfb7d | ||
|
|
5bc3b55400 | ||
|
|
ffbe2844e4 | ||
|
|
7776b35cab | ||
|
|
c39794c086 | ||
|
|
6aaa50364b | ||
|
|
d0778550ab | ||
|
|
8cba6ac16a | ||
|
|
0516007130 | ||
|
|
af9df325f0 | ||
|
|
4dd69db652 | ||
|
|
316d466795 | ||
|
|
3fb5b99af3 | ||
|
|
1764504ea3 | ||
|
|
fab0495a39 | ||
|
|
166eafe4ee | ||
|
|
9d6181ede1 | ||
|
|
67ecd514a4 | ||
|
|
52f4b79fdf | ||
|
|
5e74a34d3e | ||
|
|
288be33eac | ||
|
|
451a759cca | ||
|
|
a9052705a8 | ||
|
|
5490e74f04 | ||
|
|
ab5768998b | ||
|
|
b71ae96d66 | ||
|
|
e3528ac82f | ||
|
|
bad5a3c0ef | ||
|
|
bb49e6dec7 | ||
|
|
2d24ba659f | ||
|
|
29ce47251a | ||
|
|
d02a84e87e | ||
|
|
c5d008ec47 | ||
|
|
798be5fd5c | ||
|
|
ab6bb54eae | ||
|
|
ae24d18adb | ||
|
|
dcfb49d927 | ||
|
|
d82ab51d58 | ||
|
|
5166001956 | ||
|
|
aa46fc9668 | ||
|
|
beea13ff4b | ||
|
|
766d0b3ad5 | ||
|
|
64e279d859 | ||
|
|
a3f6a8e8ab | ||
|
|
330853c98d | ||
|
|
776e16b58b | ||
|
|
70b1f23a49 | ||
|
|
5e4493b49a | ||
|
|
dec24e09cf | ||
|
|
95445d8f8a | ||
|
|
683a844a08 | ||
|
|
a75eb5b74e | ||
|
|
5dfb844c7e | ||
|
|
20f991a205 | ||
|
|
3c1c339498 | ||
|
|
5974028c4d | ||
|
|
a534b8f812 | ||
|
|
cb2fbf1a32 | ||
|
|
a1392652ae | ||
|
|
69af23b60a | ||
|
|
063b3d37a6 | ||
|
|
ebf9b4b75d | ||
|
|
45fd06c195 | ||
|
|
7db3675e71 | ||
|
|
a19661199e | ||
|
|
953196ec78 | ||
|
|
d5be6e3e08 | ||
|
|
551b79d8c2 | ||
|
|
95a22f228c | ||
|
|
a242b9a20e | ||
|
|
19e91b2de0 | ||
|
|
eac92293fc | ||
|
|
a1397e41aa | ||
|
|
13fccb998e | ||
|
|
1e54220230 | ||
|
|
6b2000bb39 | ||
|
|
5f3fbdb089 | ||
|
|
63e888c9b1 | ||
|
|
e97e702c2e | ||
|
|
657c35f876 | ||
|
|
bc79250f96 | ||
|
|
dd7846e995 | ||
|
|
8a5483d508 | ||
|
|
805053e921 | ||
|
|
170a32a1bd | ||
|
|
5262d424b4 | ||
|
|
9c3c1045ac | ||
|
|
2d1a3f5da9 | ||
|
|
088260bbc6 | ||
|
|
18ebbbc555 | ||
|
|
80b70a8765 | ||
|
|
d3d4cce8b5 | ||
|
|
76bfcd4fa8 | ||
|
|
7cbe383a8a | ||
|
|
0488ebf071 | ||
|
|
1cfab53472 | ||
|
|
084c7a2626 | ||
|
|
161836a233 | ||
|
|
c86ac7d20f | ||
|
|
20cceec090 | ||
|
|
62c6ba362d | ||
|
|
5ed31881e6 | ||
|
|
647c51fe0f | ||
|
|
a2d3ac9e70 | ||
|
|
20f74f6645 | ||
|
|
0bb1ed6f18 | ||
|
|
2102a852cb | ||
|
|
0cfb80b7bf | ||
|
|
4297ea9e40 | ||
|
|
0ce36e93bd | ||
|
|
18bd5f4246 | ||
|
|
2e7bcd9038 | ||
|
|
bfef0c28bc | ||
|
|
b447065651 | ||
|
|
f540f87e77 | ||
|
|
6ebe3454af | ||
|
|
7e00500870 | ||
|
|
bc37dd1df7 | ||
|
|
77aca09f53 | ||
|
|
23fb1194ee | ||
|
|
6253b757ec | ||
|
|
9122342fb9 | ||
|
|
fb42a32089 | ||
|
|
5c7f4c43ae | ||
|
|
3da256cc29 | ||
|
|
717c576cba | ||
|
|
ddb4011b5d | ||
|
|
48207b9300 | ||
|
|
388afe6fb4 | ||
|
|
99b459766a | ||
|
|
230fc5ba53 | ||
|
|
9c266b7b1c | ||
|
|
603599d666 | ||
|
|
b3cd29ac95 | ||
|
|
a4beab86c2 | ||
|
|
3a84e0d064 | ||
|
|
31f1eb2d28 | ||
|
|
d73c0c6f0c | ||
|
|
36409cf066 | ||
|
|
556e1059f9 | ||
|
|
131a6cb6c3 | ||
|
|
598943eb1b | ||
|
|
bf746393b8 | ||
|
|
70b6997436 | ||
|
|
b26c6a04c0 | ||
|
|
4f262a03e4 | ||
|
|
a0ca3dc3f6 | ||
|
|
f58736277f | ||
|
|
473cae169e | ||
|
|
4b956385bd | ||
|
|
481494a885 | ||
|
|
243604d6c1 | ||
|
|
dc97c71e0b | ||
|
|
e6b4832b5d | ||
|
|
00ac67e8ac | ||
|
|
953b609b32 | ||
|
|
a5875be39b | ||
|
|
0f45de8384 | ||
|
|
d119200287 | ||
|
|
b9fa0bea6e | ||
|
|
3a28180700 | ||
|
|
5b6f456d5c | ||
|
|
fb1ae6ea88 | ||
|
|
50582a0e8b | ||
|
|
8fe3d0258a | ||
|
|
f2537b20de | ||
|
|
31d6850e6e | ||
|
|
31468d5425 | ||
|
|
688b839315 | ||
|
|
fa4c9046fc | ||
|
|
c7560f9113 | ||
|
|
f7e3966310 | ||
|
|
7359237da4 | ||
|
|
d617203c05 | ||
|
|
910526ba44 | ||
|
|
c1842703d7 | ||
|
|
2f9d2e2bc2 | ||
|
|
20d7e005a0 | ||
|
|
0ce5a88e49 | ||
|
|
4af10fb485 | ||
|
|
f872113e99 | ||
|
|
f33fefd188 | ||
|
|
8c2f4f9dc9 | ||
|
|
3b6e7c5c28 | ||
|
|
595c11a9a7 | ||
|
|
1ab7b57885 | ||
|
|
07130e6022 | ||
|
|
2cc2f7eb23 | ||
|
|
c798ac49b9 | ||
|
|
a8796edbd3 | ||
|
|
a4ead74cb2 | ||
|
|
0beb00c5e5 | ||
|
|
3d43690303 | ||
|
|
938c819e9a | ||
|
|
889ced68ed | ||
|
|
de97384424 | ||
|
|
f6ffc20a23 | ||
|
|
c0ec82051f | ||
|
|
91273522c0 | ||
|
|
20a475466d | ||
|
|
10b6a4ff6e | ||
|
|
2a4e59d6e2 | ||
|
|
c016ea7c52 | ||
|
|
00bece9c9c | ||
|
|
44ed61c14e | ||
|
|
002b7ae534 | ||
|
|
63000bdd22 | ||
|
|
20fd52b32d | ||
|
|
7a3064d37b | ||
|
|
7fea0a41c6 | ||
|
|
e701540d7f | ||
|
|
5187ebbf52 | ||
|
|
df26c511b5 | ||
|
|
0e650da34a | ||
|
|
2c382da773 | ||
|
|
e709ee5db8 | ||
|
|
d550415b65 | ||
|
|
9ec144e8f6 | ||
|
|
9458307612 | ||
|
|
915c5fcd8e | ||
|
|
0df1293139 | ||
|
|
9bcd18c42e | ||
|
|
1c853107b7 | ||
|
|
3f21e28ef7 | ||
|
|
61244fcef9 | ||
|
|
03c930ce7d | ||
|
|
f57c4967f2 | ||
|
|
49f40d56b0 | ||
|
|
190fcabbac | ||
|
|
8bccf449ad | ||
|
|
f7dc1a588b | ||
|
|
0eb91c6301 | ||
|
|
0fa4d88ea9 | ||
|
|
18e355b701 | ||
|
|
1cb877503d | ||
|
|
b65e691255 | ||
|
|
a4ee43f12b | ||
|
|
f71c61a55b | ||
|
|
418130f4cd | ||
|
|
1566aa0243 | ||
|
|
ab546f66f0 | ||
|
|
fc021dae54 | ||
|
|
58a7b3afe1 | ||
|
|
72f41df5d2 | ||
|
|
8fd6b91cf7 | ||
|
|
cf2ace32d1 | ||
|
|
05c4f721f2 | ||
|
|
b2096cc274 | ||
|
|
067df49914 | ||
|
|
6961298e53 | ||
|
|
3e6523002c | ||
|
|
c26add7b04 | ||
|
|
12d50fec03 | ||
|
|
a43bbc9f23 | ||
|
|
2bec3b253c | ||
|
|
a69f256168 | ||
|
|
d7fb88eed6 | ||
|
|
bfd79f479e | ||
|
|
7ec3fcc78e | ||
|
|
858a09b429 | ||
|
|
da7fcafb27 | ||
|
|
7f7d8b2099 | ||
|
|
b5fb2e9cf4 | ||
|
|
d9ffdf9df8 | ||
|
|
f919187b91 | ||
|
|
d5ead5b74f | ||
|
|
ec1be2c887 | ||
|
|
af0c470923 | ||
|
|
78ce7d20e3 | ||
|
|
932ce9bf51 | ||
|
|
3d602b49bf | ||
|
|
33b7d228f9 | ||
|
|
95a8fd5495 | ||
|
|
87bc416fc7 | ||
|
|
8c21eec168 | ||
|
|
7ef3f0d5c5 | ||
|
|
e90e508005 | ||
|
|
816daed570 | ||
|
|
3626266763 | ||
|
|
6c117a628c | ||
|
|
d3225dfb41 | ||
|
|
bd7e7540d8 | ||
|
|
48088748df | ||
|
|
7a5eecc3e1 | ||
|
|
51d7dede55 | ||
|
|
bcad77ec06 | ||
|
|
9b79d12521 | ||
|
|
4b33461c70 | ||
|
|
bc3a8fefd8 | ||
|
|
db97400b43 | ||
|
|
3ad4032239 | ||
|
|
1d0fb7151d | ||
|
|
0c9099c868 | ||
|
|
c87cbaa0a6 | ||
|
|
5a94bf434a | ||
|
|
d567f3218a | ||
|
|
5d97c4ebea | ||
|
|
c3be464774 | ||
|
|
0d1e10a2ce | ||
|
|
723a7bbfba | ||
|
|
6a100ed2c1 | ||
|
|
5a6cd7fb46 | ||
|
|
871c99a67a | ||
|
|
7bdde2ac8a | ||
|
|
3564282acb | ||
|
|
13e24dbcb4 | ||
|
|
0026e9cb15 | ||
|
|
156795d7e9 | ||
|
|
e41d73b5bd | ||
|
|
655cd1700c | ||
|
|
9fb455d38a | ||
|
|
879a1e1c61 | ||
|
|
e614092690 | ||
|
|
4ebe51d978 | ||
|
|
10a29e584f | ||
|
|
a88982940b | ||
|
|
b92a95cc07 | ||
|
|
bffca5e163 | ||
|
|
b56919a343 | ||
|
|
b797bab7e0 | ||
|
|
a03d2cee63 | ||
|
|
67fef4b73d | ||
|
|
253a953dfe | ||
|
|
be7154284e | ||
|
|
02f90842fe | ||
|
|
0b17a289c8 | ||
|
|
c2298efaf0 | ||
|
|
e858ad0c33 | ||
|
|
fb1acfa09c | ||
|
|
033466edcc | ||
|
|
3a472506cf | ||
|
|
cea015bd4d | ||
|
|
8aaf161fd0 | ||
|
|
1529ab6469 | ||
|
|
1a3b456f39 | ||
|
|
ac3672a87e | ||
|
|
a866cb63a4 | ||
|
|
943251c56f | ||
|
|
4d2b10b979 | ||
|
|
c87614ab2d | ||
|
|
67dee551b6 | ||
|
|
2ee20ce92c | ||
|
|
cd8ec0687f | ||
|
|
6881b531d7 | ||
|
|
2eae9b2062 | ||
|
|
b055baa7d3 | ||
|
|
fc0ad32335 | ||
|
|
42cd2fafdd | ||
|
|
6220d030dc | ||
|
|
8961dd60a2 | ||
|
|
2726bc13c4 | ||
|
|
967c14a972 | ||
|
|
74d86b7897 | ||
|
|
5a176568e9 | ||
|
|
279478c15b | ||
|
|
f5f7c81c20 | ||
|
|
3c2499580c | ||
|
|
45a104f9c0 | ||
|
|
a5b0c7f99f | ||
|
|
643a2822a0 | ||
|
|
be8e22309f | ||
|
|
8273c3f231 | ||
|
|
e9ceb0bdd6 | ||
|
|
c204f36aa7 | ||
|
|
869ee4b233 | ||
|
|
f0c6243964 | ||
|
|
b46a197a5c | ||
|
|
d39c04da76 | ||
|
|
22f1f3c227 | ||
|
|
2b3efd0924 | ||
|
|
3004b20c87 | ||
|
|
5c8194b36d | ||
|
|
e487846c56 | ||
|
|
0437d45997 | ||
|
|
8dd5154de3 | ||
|
|
bc519284fb | ||
|
|
19e06cc12e | ||
|
|
16e5601651 | ||
|
|
8f9077dff8 | ||
|
|
9831685bb9 | ||
|
|
1412834b60 | ||
|
|
b8636763c1 | ||
|
|
fe4823bb8d | ||
|
|
7ef9a2fdca | ||
|
|
9f627ca2f8 | ||
|
|
2404ab2047 | ||
|
|
50d1c4cd34 | ||
|
|
269a40ca9d | ||
|
|
2a814dbbf9 |
@@ -1,11 +1,4 @@
|
|||||||
.vscode/*
|
.vscode/*
|
||||||
!.vscode/settings.json
|
|
||||||
!.vscode/tasks.json
|
|
||||||
!.vscode/launch.json
|
|
||||||
!.vscode/extensions.json
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 체섭 ignore
|
# 체섭 ignore
|
||||||
*.log
|
*.log
|
||||||
@@ -15,6 +8,8 @@ d_log/*.txt
|
|||||||
d_log/*.zip
|
d_log/*.zip
|
||||||
sess_*
|
sess_*
|
||||||
*/logs/*.txt
|
*/logs/*.txt
|
||||||
|
*/logs/*/*.txt
|
||||||
|
*/logs/preserved
|
||||||
err.txt
|
err.txt
|
||||||
che/.htaccess
|
che/.htaccess
|
||||||
kwe/.htaccess
|
kwe/.htaccess
|
||||||
@@ -27,9 +22,11 @@ d_shared
|
|||||||
d_pic/*.jpg
|
d_pic/*.jpg
|
||||||
d_pic/*.gif
|
d_pic/*.gif
|
||||||
d_pic/*.png
|
d_pic/*.png
|
||||||
|
d_pic/uploaded_image
|
||||||
|
|
||||||
d_setting/*.php
|
d_setting/*.php
|
||||||
*/d_setting/*.php
|
*/d_setting/*.php
|
||||||
|
*/d_setting/templates/*.php
|
||||||
|
|
||||||
**/old/*
|
**/old/*
|
||||||
test.php
|
test.php
|
||||||
@@ -37,6 +34,11 @@ test.php
|
|||||||
/che
|
/che
|
||||||
/kwe
|
/kwe
|
||||||
/pwe
|
/pwe
|
||||||
|
/nya
|
||||||
|
/pya
|
||||||
/twe
|
/twe
|
||||||
|
|
||||||
phpinfo.php
|
phpinfo.php
|
||||||
|
vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/*
|
||||||
|
*.sqlite3
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ return [
|
|||||||
'hwe/func_npc.php',
|
'hwe/func_npc.php',
|
||||||
'hwe/func_process_chief.php',
|
'hwe/func_process_chief.php',
|
||||||
'hwe/func_process_personnel.php',
|
'hwe/func_process_personnel.php',
|
||||||
'hwe/func_process_trick.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',
|
||||||
|
|||||||
@@ -5,11 +5,13 @@
|
|||||||
"**/.hg": true,
|
"**/.hg": true,
|
||||||
"**/CVS": true,
|
"**/CVS": true,
|
||||||
"**/.DS_Store": true,
|
"**/.DS_Store": true,
|
||||||
"**/logs/*.txt": true,
|
"**/logs/**/*.txt": true,
|
||||||
"**/session/sess*":true,
|
"**/session/sess*":true,
|
||||||
"/che":true,
|
"/che":true,
|
||||||
"/kwe":true,
|
"/kwe":true,
|
||||||
"/pwe":true,
|
"/pwe":true,
|
||||||
|
"/nya":true,
|
||||||
|
"/pya":true,
|
||||||
"/twe":true,
|
"/twe":true,
|
||||||
|
|
||||||
},
|
},
|
||||||
@@ -19,6 +21,8 @@
|
|||||||
"/che":true,
|
"/che":true,
|
||||||
"/kwe":true,
|
"/kwe":true,
|
||||||
"/pwe":true,
|
"/pwe":true,
|
||||||
|
"/nya":true,
|
||||||
|
"/pya":true,
|
||||||
"/twe":true,
|
"/twe":true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 Hide_D, 62che
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
# 삼국지 모의전투 HiDCHe
|
||||||
|
|
||||||
|
삼국지 모의전투 유기체서버를 기반으로 더욱 더 진화한 서버입니다.
|
||||||
|
|
||||||
|
|
||||||
|
## 요구사항
|
||||||
|
|
||||||
|
* Apache2
|
||||||
|
* <code>mpm_event</code> 권장
|
||||||
|
* PHP 7.2 이상
|
||||||
|
* <code>php-fpm</code> 권장
|
||||||
|
* php에서 curl, pdo-sqlite을 실행가능해야 합니다. (기본값: 지원)
|
||||||
|
* mysqlnd가 지원되어야합니다. (기본값: 지원)
|
||||||
|
* mysqli
|
||||||
|
* gd
|
||||||
|
* MariaDB 10.2.1 이상
|
||||||
|
* 현재 MySQL은 지원하지 않습니다.
|
||||||
|
* <code>git</code>
|
||||||
|
* <code>curl</code>
|
||||||
|
|
||||||
|
Linux는 Ubuntu 16.04, 18.04, Windows는 Windows 10에서 XAMPP를 사용한 환경에서 테스트되었습니다.
|
||||||
|
|
||||||
|
|
||||||
|
## Docker를 이용한 설치
|
||||||
|
|
||||||
|
https://storage.hided.net/gogs/devsam/docker 를 참고해 주세요.
|
||||||
|
|
||||||
|
## 수동 설치
|
||||||
|
|
||||||
|
본 게임은 <code>git</code>을 이용한 업그레이드 시스템을 구현하였으므로, <code>git</code>이 필요합니다.
|
||||||
|
또한 웹 서비스 데몬을 운영중인 사용자(일반적으로 <code>www-data</code>, <code>apache</code>)에게 디렉토리 권한이 주어져야합니다.
|
||||||
|
|
||||||
|
### 다운로드
|
||||||
|
|
||||||
|
웹 데몬 user가 <code>www-data</code>인 경우 다음과 같이 입력하여 최신 배포버전과 이미지 파일을 얻을 수 있습니다.
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo -u www-data git clone https://storage.hided.net/gogs/devsam/core.git
|
||||||
|
sudo -u www-data git clone https://storage.hided.net/gogs/devsam/image.git
|
||||||
|
```
|
||||||
|
|
||||||
|
> 이미지는 hook/git_hook.php을 통해 동기화되며, 서버 설치 과정에 이미지 갱신 키를 지정하는 것으로 '훼' 서버 업데이트 시 동기화됩니다. 이미지 서버가 게임 서버와 별개여도 동작하나, php와 git을 지원해야합니다.
|
||||||
|
|
||||||
|
### 설치
|
||||||
|
|
||||||
|
이후 해당 경로를 웹 브라우저를 통해 접근하여 설치를 진행할 수 있습니다.
|
||||||
|
|
||||||
|
Database 수는 로그인 관리 서버 1개, 내부 서버 7개로, 총 8개의 Database가 필요합니다. 내부 설정을 고쳐서 서버 수를 늘리거나 줄일 경우 그에 맞는 Database 수가 필요합니다. 또한 Database마다 관리할 별도의 계정을 만드는 것을 추천합니다.
|
||||||
|
|
||||||
|
설치 이후에는 서버관리 페이지에서 **업데이트** 명령을 통해 원 클릭 업데이트가 가능합니다.
|
||||||
|
|
||||||
|
|
||||||
|
## 카카오로그인 연동
|
||||||
|
|
||||||
|
서버 설치 시 카카오 로그인 연동을 위한 API KEY를 입력받습니다.
|
||||||
|
|
||||||
|
만약 설치 이후 API KEY를 변경하고자 하는 경우 <code>d_setting/KakaoKey.php</code>에서 API키를 변경해야 합니다.
|
||||||
|
|
||||||
|
|
||||||
|
## 라이선스
|
||||||
|
|
||||||
|
본 게임을 수정하거나 재배포할 경우 다음 중 하나의 라이선스를 선택하여 적용할 수 있습니다.
|
||||||
|
|
||||||
|
* MIT License
|
||||||
|
* GPL 2.0 또는 이후
|
||||||
|
|
||||||
|
만약 별도의 라이선스를 적용하고자 할 경우 Hide_D에게 문의하여 주십시오.
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name":"sammo-hid/sammo",
|
"name":"sammo-hid/sammo",
|
||||||
"description":"삼국지 모의전투 HiD",
|
"description":"삼국지 모의전투 HiDCHe",
|
||||||
"license": [
|
"license": [
|
||||||
"MIT",
|
"MIT",
|
||||||
"GPL-2.0-or-later",
|
"GPL-2.0-or-later",
|
||||||
@@ -16,7 +16,11 @@
|
|||||||
"firephp/firephp-core": "^0.4.0",
|
"firephp/firephp-core": "^0.4.0",
|
||||||
"vlucas/valitron": "^1.4",
|
"vlucas/valitron": "^1.4",
|
||||||
"php-extended/php-tail": "^2.1",
|
"php-extended/php-tail": "^2.1",
|
||||||
"pguardiario/phpuri": "^1.0"
|
"pguardiario/phpuri": "^1.0",
|
||||||
|
"symfony/lock": "^4.1",
|
||||||
|
"ezyang/htmlpurifier": "^4.10",
|
||||||
|
"xemlock/htmlpurifier-html5": "^0.1.7",
|
||||||
|
"catfan/medoo": "^1.5"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "1753c2c2ad9fe40ecc5c6ae541dd2e78",
|
"content-hash": "3fceaf3c2925068c7e757ab12036e29e",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "brandonwamboldt/utilphp",
|
"name": "brandonwamboldt/utilphp",
|
||||||
@@ -52,6 +52,112 @@
|
|||||||
],
|
],
|
||||||
"time": "2015-02-02T17:56:14+00:00"
|
"time": "2015-02-02T17:56:14+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "catfan/medoo",
|
||||||
|
"version": "v1.5.7",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/catfan/Medoo.git",
|
||||||
|
"reference": "8d90cba0e8ff176028847527d0ea76fe41a06ecf"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/catfan/Medoo/zipball/8d90cba0e8ff176028847527d0ea76fe41a06ecf",
|
||||||
|
"reference": "8d90cba0e8ff176028847527d0ea76fe41a06ecf",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-pdo": "*",
|
||||||
|
"php": ">=5.4"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-pdo_dblib": "For MSSQL or Sybase database on Linux/UNIX platform",
|
||||||
|
"ext-pdo_mysql": "For MySQL or MariaDB database",
|
||||||
|
"ext-pdo_oci": "For Oracle database",
|
||||||
|
"ext-pdo_oci8": "For Oracle version 8 database",
|
||||||
|
"ext-pdo_pqsql": "For PostgreSQL database",
|
||||||
|
"ext-pdo_sqlite": "For SQLite database",
|
||||||
|
"ext-pdo_sqlsrv": "For MSSQL database"
|
||||||
|
},
|
||||||
|
"type": "framework",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Medoo\\": "/src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Angel Lai",
|
||||||
|
"email": "angel@catfan.me"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "The lightest PHP database framework to accelerate development",
|
||||||
|
"homepage": "https://medoo.in",
|
||||||
|
"keywords": [
|
||||||
|
"database",
|
||||||
|
"lightweight",
|
||||||
|
"mariadb",
|
||||||
|
"mssql",
|
||||||
|
"mysql",
|
||||||
|
"oracle",
|
||||||
|
"php framework",
|
||||||
|
"postgresql",
|
||||||
|
"sql",
|
||||||
|
"sqlite"
|
||||||
|
],
|
||||||
|
"time": "2018-06-14T18:59:08+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ezyang/htmlpurifier",
|
||||||
|
"version": "v4.10.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/ezyang/htmlpurifier.git",
|
||||||
|
"reference": "d85d39da4576a6934b72480be6978fb10c860021"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d85d39da4576a6934b72480be6978fb10c860021",
|
||||||
|
"reference": "d85d39da4576a6934b72480be6978fb10c860021",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.2"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"simpletest/simpletest": "^1.1"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-0": {
|
||||||
|
"HTMLPurifier": "library/"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"library/HTMLPurifier.composer.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"LGPL"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Edward Z. Yang",
|
||||||
|
"email": "admin@htmlpurifier.org",
|
||||||
|
"homepage": "http://ezyang.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Standards compliant HTML filter written in PHP",
|
||||||
|
"homepage": "http://htmlpurifier.org/",
|
||||||
|
"keywords": [
|
||||||
|
"html"
|
||||||
|
],
|
||||||
|
"time": "2018-02-23T01:58:20+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "firephp/firephp-core",
|
"name": "firephp/firephp-core",
|
||||||
"version": "v0.4.0",
|
"version": "v0.4.0",
|
||||||
@@ -90,16 +196,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "guzzlehttp/guzzle",
|
"name": "guzzlehttp/guzzle",
|
||||||
"version": "6.3.2",
|
"version": "6.3.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/guzzle/guzzle.git",
|
"url": "https://github.com/guzzle/guzzle.git",
|
||||||
"reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90"
|
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/68d0ea14d5a3f42a20e87632a5f84931e2709c90",
|
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
|
||||||
"reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90",
|
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -109,7 +215,7 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"ext-curl": "*",
|
"ext-curl": "*",
|
||||||
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4",
|
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
|
||||||
"psr/log": "^1.0"
|
"psr/log": "^1.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
@@ -151,7 +257,7 @@
|
|||||||
"rest",
|
"rest",
|
||||||
"web service"
|
"web service"
|
||||||
],
|
],
|
||||||
"time": "2018-03-26T16:33:04+00:00"
|
"time": "2018-04-22T15:46:56+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "guzzlehttp/promises",
|
"name": "guzzlehttp/promises",
|
||||||
@@ -271,16 +377,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "leafo/scssphp",
|
"name": "leafo/scssphp",
|
||||||
"version": "v0.7.5",
|
"version": "v0.7.7",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/leafo/scssphp.git",
|
"url": "https://github.com/leafo/scssphp.git",
|
||||||
"reference": "8b538d828bbb75276974605c4a1a435e939da74e"
|
"reference": "1d656f8c02a3a69404bba6b28ec4e06edddf0f49"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/leafo/scssphp/zipball/8b538d828bbb75276974605c4a1a435e939da74e",
|
"url": "https://api.github.com/repos/leafo/scssphp/zipball/1d656f8c02a3a69404bba6b28ec4e06edddf0f49",
|
||||||
"reference": "8b538d828bbb75276974605c4a1a435e939da74e",
|
"reference": "1d656f8c02a3a69404bba6b28ec4e06edddf0f49",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -319,7 +425,7 @@
|
|||||||
"scss",
|
"scss",
|
||||||
"stylesheet"
|
"stylesheet"
|
||||||
],
|
],
|
||||||
"time": "2018-02-09T02:04:21+00:00"
|
"time": "2018-07-22T01:22:08+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "league/plates",
|
"name": "league/plates",
|
||||||
@@ -480,16 +586,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "php-extended/php-system",
|
"name": "php-extended/php-system",
|
||||||
"version": "1.3.0",
|
"version": "1.4.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/php-extended/php-system.git",
|
"url": "https://gitlab.com/php-extended/php-system.git",
|
||||||
"reference": "66727d5dc0a665916bd7e08bcfb9820e7be1d20c"
|
"reference": "9e6b3c2009ef56dc123efc43900e40cdf217ace0"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/php-extended/php-system/zipball/66727d5dc0a665916bd7e08bcfb9820e7be1d20c",
|
"url": "https://gitlab.com/api/v4/projects/php-extended%2Fphp-system/repository/archive.zip?sha=9e6b3c2009ef56dc123efc43900e40cdf217ace0",
|
||||||
"reference": "66727d5dc0a665916bd7e08bcfb9820e7be1d20c",
|
"reference": "9e6b3c2009ef56dc123efc43900e40cdf217ace0",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
@@ -505,31 +611,31 @@
|
|||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Anastaszor",
|
"name": "Anastaszor",
|
||||||
"role": "developer"
|
"role": "Developer"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "A generic way to find informations about the running system",
|
"description": "A generic way to find informations about the running system",
|
||||||
"homepage": "https://github.com/php-extended/php-system",
|
"homepage": "https://gitlab.com/php-extended/php-system",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"operating system",
|
"operating system",
|
||||||
"os",
|
"os",
|
||||||
"php",
|
"php",
|
||||||
"system"
|
"system"
|
||||||
],
|
],
|
||||||
"time": "2017-01-14T11:56:24+00:00"
|
"time": "2018-06-07T06:03:27+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "php-extended/php-tail",
|
"name": "php-extended/php-tail",
|
||||||
"version": "2.1.1",
|
"version": "2.2.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/php-extended/php-tail.git",
|
"url": "https://gitlab.com/php-extended/php-tail.git",
|
||||||
"reference": "eabf7bee64f8c30fe9b9e1176562fdb903c54ae7"
|
"reference": "19fbd3a79ccc071954f28296b2c44754335304a0"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/php-extended/php-tail/zipball/eabf7bee64f8c30fe9b9e1176562fdb903c54ae7",
|
"url": "https://gitlab.com/api/v4/projects/php-extended%2Fphp-tail/repository/archive.zip?sha=19fbd3a79ccc071954f28296b2c44754335304a0",
|
||||||
"reference": "eabf7bee64f8c30fe9b9e1176562fdb903c54ae7",
|
"reference": "19fbd3a79ccc071954f28296b2c44754335304a0",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -548,11 +654,11 @@
|
|||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Anastaszor",
|
"name": "Anastaszor",
|
||||||
"role": "developer"
|
"role": "Developer"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "A smart way to tail files depending of the environment",
|
"description": "A smart way to tail files depending of the environment",
|
||||||
"homepage": "https://github.com/php-extended/php-tail",
|
"homepage": "https://gitlab.com/php-extended/php-tail",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"cheat",
|
"cheat",
|
||||||
"mighty",
|
"mighty",
|
||||||
@@ -560,7 +666,7 @@
|
|||||||
"php",
|
"php",
|
||||||
"tail"
|
"tail"
|
||||||
],
|
],
|
||||||
"time": "2017-07-25T13:52:42+00:00"
|
"time": "2018-06-07T06:04:58+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/http-message",
|
"name": "psr/http-message",
|
||||||
@@ -703,34 +809,98 @@
|
|||||||
"time": "2014-06-16T22:40:22+00:00"
|
"time": "2014-06-16T22:40:22+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "vlucas/valitron",
|
"name": "symfony/lock",
|
||||||
"version": "v1.4.2",
|
"version": "v4.1.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/vlucas/valitron.git",
|
"url": "https://github.com/symfony/lock.git",
|
||||||
"reference": "87775d76268beda2afa085bdd6e44b17e98907c6"
|
"reference": "d508b5dd92272cb74300396ecaadde969d0f7976"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/vlucas/valitron/zipball/87775d76268beda2afa085bdd6e44b17e98907c6",
|
"url": "https://api.github.com/repos/symfony/lock/zipball/d508b5dd92272cb74300396ecaadde969d0f7976",
|
||||||
"reference": "87775d76268beda2afa085bdd6e44b17e98907c6",
|
"reference": "d508b5dd92272cb74300396ecaadde969d0f7976",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.1.3",
|
||||||
|
"psr/log": "~1.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"predis/predis": "~1.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "4.1-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Component\\Lock\\": ""
|
||||||
|
},
|
||||||
|
"exclude-from-classmap": [
|
||||||
|
"/Tests/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jérémy Derussé",
|
||||||
|
"email": "jeremy@derusse.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony Lock Component",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"cas",
|
||||||
|
"flock",
|
||||||
|
"locking",
|
||||||
|
"mutex",
|
||||||
|
"redlock",
|
||||||
|
"semaphore"
|
||||||
|
],
|
||||||
|
"time": "2018-06-21T11:15:46+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vlucas/valitron",
|
||||||
|
"version": "v1.4.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/vlucas/valitron.git",
|
||||||
|
"reference": "3c5463315bfa23b17f8949b100a960d035234e43"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/vlucas/valitron/zipball/3c5463315bfa23b17f8949b100a960d035234e43",
|
||||||
|
"reference": "3c5463315bfa23b17f8949b100a960d035234e43",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.3.2"
|
"php": ">=5.3.2"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "~4.0"
|
"phpunit/phpunit": "^4.8.35 || ^5.5 || ^6.5"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-mbstring": "It can support the multiple bytes string length."
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-0": {
|
"psr-4": {
|
||||||
"Valitron": "src/"
|
"Valitron\\": "src/Valitron"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
"license": [
|
"license": [
|
||||||
"BSD"
|
"BSD-3-Clause"
|
||||||
],
|
],
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
@@ -746,7 +916,47 @@
|
|||||||
"validation",
|
"validation",
|
||||||
"validator"
|
"validator"
|
||||||
],
|
],
|
||||||
"time": "2017-10-30T23:15:06+00:00"
|
"time": "2018-05-06T10:45:26+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "xemlock/htmlpurifier-html5",
|
||||||
|
"version": "v0.1.7",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/xemlock/htmlpurifier-html5.git",
|
||||||
|
"reference": "b4b35e51ec75e0207c23035f7d9a354bdcdac359"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/xemlock/htmlpurifier-html5/zipball/b4b35e51ec75e0207c23035f7d9a354bdcdac359",
|
||||||
|
"reference": "b4b35e51ec75e0207c23035f7d9a354bdcdac359",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ezyang/htmlpurifier": "^4.7",
|
||||||
|
"php": ">=5.2"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "4.7.*|5.7.*"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"library/HTMLPurifier/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "xemlock",
|
||||||
|
"email": "xemlock@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "HTML Purifier definitions for HTML5 elements",
|
||||||
|
"time": "2018-06-07T14:30:17+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [],
|
"packages-dev": [],
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
* { margin: 0px; padding: 0px; }
|
body {
|
||||||
body { color:white; background-color:black; border-width:1; border-color:gray; }
|
color:white; background-color:black; font-family: '맑은 고딕';
|
||||||
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: 13px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: '맑은 고딕'; line-height: 110%;
|
font-family: '맑은 고딕';
|
||||||
}
|
}
|
||||||
th, td {
|
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;
|
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;
|
||||||
@@ -16,21 +18,15 @@ th, td {
|
|||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: '맑은 고딕'; line-height: 110%;
|
font-family: '맑은 고딕';
|
||||||
}
|
}
|
||||||
|
|
||||||
a.just_link {
|
a.just_link {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
div {
|
|
||||||
margin:0px;
|
|
||||||
padding: 0px;
|
|
||||||
word-break: break-all;
|
|
||||||
font-family: '맑은 고딕';
|
|
||||||
}
|
|
||||||
|
|
||||||
.with_border{
|
.with_border{
|
||||||
|
margin:0;
|
||||||
border: solid 1px;
|
border: solid 1px;
|
||||||
border-spacing: 0px;
|
border-spacing: 0px;
|
||||||
border-collapse: separate;
|
border-collapse: separate;
|
||||||
@@ -45,6 +41,8 @@ div {
|
|||||||
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;
|
||||||
|
padding:0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.legacy_layout div {
|
.legacy_layout div {
|
||||||
@@ -53,20 +51,9 @@ div {
|
|||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: '맑은 고딕'; line-height: 110%;
|
font-family: '맑은 고딕';;
|
||||||
}
|
}
|
||||||
|
|
||||||
font { font-family: '맑은 고딕'; line-height: 110%; }
|
|
||||||
/*
|
|
||||||
input {
|
|
||||||
width: 100px; height: 18px;
|
|
||||||
background-color: black; color: white;
|
|
||||||
font-family: '맑은 고딕';
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 110%;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
.obj_fill{
|
.obj_fill{
|
||||||
display:block;
|
display:block;
|
||||||
width:100%;
|
width:100%;
|
||||||
@@ -74,31 +61,24 @@ input {
|
|||||||
}
|
}
|
||||||
|
|
||||||
button.with_skin {
|
button.with_skin {
|
||||||
|
padding:0 4px;
|
||||||
background-color: black; color: white;
|
background-color: black; color: white;
|
||||||
font-family: '맑은 고딕';
|
font-family: '맑은 고딕';
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
line-height: 110%;
|
}
|
||||||
|
|
||||||
|
button.with_skin:disabled {
|
||||||
|
background-color:#333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
input.with_skin {
|
input.with_skin {
|
||||||
background-color: black; color: white;
|
background-color: black; color: white;
|
||||||
font-family: '맑은 고딕';
|
font-family: '맑은 고딕';
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
line-height: 110%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
select {
|
input.with_skin:disabled {
|
||||||
width: 100px; height: 18px;
|
background-color: #333333;
|
||||||
background-color: black; color: white;
|
|
||||||
font-family: '맑은 고딕';
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 110%;
|
|
||||||
}
|
|
||||||
button {
|
|
||||||
width: 100px; height: 20px;
|
|
||||||
background-color: black; color: white;
|
|
||||||
font-family: '맑은 고딕';
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.font0 { font-size: 10px; }
|
.font0 { font-size: 10px; }
|
||||||
@@ -106,4 +86,97 @@ button {
|
|||||||
.font2 { font-size: 15px; }
|
.font2 { font-size: 15px; }
|
||||||
.font3 { font-size: 20px; }
|
.font3 { font-size: 20px; }
|
||||||
.font4 { font-size: 30px; }
|
.font4 { font-size: 30px; }
|
||||||
.font5 { font-size: 50px; }
|
.font5 { font-size: 50px; }
|
||||||
|
|
||||||
|
caption.section_title {
|
||||||
|
caption-side:top;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.samButton{
|
||||||
|
float:left;
|
||||||
|
display:block;
|
||||||
|
padding:0;
|
||||||
|
margin:0;
|
||||||
|
text-decoration: none;
|
||||||
|
position:relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.samButton.disabled {
|
||||||
|
pointer-events: none;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.samButtonOuter{
|
||||||
|
display: table;
|
||||||
|
border: outset 2px white;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-weight:bold;
|
||||||
|
padding: 1px 6px;
|
||||||
|
width:125px;
|
||||||
|
height:30px;
|
||||||
|
background-color:#000000;
|
||||||
|
color:#ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.samButtonOuter:active{
|
||||||
|
border: inset 2px white;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.samButtonInner{
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: middle;
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.samToolbarButton > .samButtonOuter{
|
||||||
|
width:125px;
|
||||||
|
height:30px;
|
||||||
|
background-color:#225500;
|
||||||
|
color:white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.samToolbarButton2 > .samButtonOuter{
|
||||||
|
width:125px;
|
||||||
|
height:30px;
|
||||||
|
background-color:#225500;
|
||||||
|
color:magenta;
|
||||||
|
}
|
||||||
|
|
||||||
|
.samCommandButton > .samButtonOuter{
|
||||||
|
width:111px;
|
||||||
|
height:30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.samCommandButton.disabled > .samButtonOuter{
|
||||||
|
background-color:transparent !important;
|
||||||
|
color:gray !important;
|
||||||
|
border-color:transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.samCommandButton.disabled > .samButtonOuter > .samButtonInner::before{
|
||||||
|
content:'【'
|
||||||
|
}
|
||||||
|
|
||||||
|
.samCommandButton.disabled > .samButtonOuter > .samButtonInner::after{
|
||||||
|
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;
|
||||||
|
}
|
||||||
@@ -1,5 +1,9 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
|
body{
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
#server_notice {
|
#server_notice {
|
||||||
margin:10px 0;
|
margin:10px 0;
|
||||||
border: none;
|
border: none;
|
||||||
@@ -55,77 +59,6 @@
|
|||||||
text-align:center;
|
text-align:center;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Legacy*/
|
|
||||||
|
|
||||||
|
|
||||||
#Entrance_00 {
|
|
||||||
width: 800px;
|
|
||||||
position: absolute; top: 50px; left: 50%;
|
|
||||||
margin-left: -400px;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_0004 {
|
|
||||||
width: 52px; height: 52px;
|
|
||||||
position: absolute; top: 0px; left: -62px;
|
|
||||||
border: 1px solid white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_0005 {
|
|
||||||
width: 160px; height: 600px;
|
|
||||||
position: absolute; top: 62px; left: -170px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_0006 {
|
|
||||||
width: 160px; height: 600px;
|
|
||||||
position: absolute; top: 62px; left: 810px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#Entrance_0000 {
|
|
||||||
width: 800px; height: 134px;
|
|
||||||
position: absolute; top: 0px; left: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_000000 {
|
|
||||||
width: 798px; height: 50px;
|
|
||||||
position: absolute; top: 0px; left: 0px;
|
|
||||||
font-size: 30px; font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_000001 {
|
|
||||||
width: 798px; height: 20px;
|
|
||||||
position: absolute; top: 52px; left: 0px;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_00000000 {
|
|
||||||
width: 98px; height: 20px;
|
|
||||||
position: absolute; top: 0px; left: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_00000001 {
|
|
||||||
width: 398px; height: 20px;
|
|
||||||
position: absolute; top: 0px; left: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_00000002 {
|
|
||||||
width: 178px; height: 20px;
|
|
||||||
position: absolute; top: 0px; left: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_00000003 {
|
|
||||||
width: 118px; height: 20px;
|
|
||||||
position: absolute; top: 0px; left: 680px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_000002 {
|
|
||||||
width: 798px; height: 64px;
|
|
||||||
position: absolute; top: 74px; left: 0px;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Entrance_ServerList {
|
.Entrance_ServerList {
|
||||||
width: 800px; height: 64px;
|
width: 800px; height: 64px;
|
||||||
border: none;
|
border: none;
|
||||||
@@ -195,27 +128,14 @@
|
|||||||
color: magenta; font-size: 15px; font-weight: bold;
|
color: magenta; font-size: 15px; font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.Entrance_Nya {
|
||||||
|
color: #e67e22; font-size: 15px; font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Entrance_Pya {
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
#Entrance_0001 {
|
|
||||||
width: 800px; height: 130px;
|
|
||||||
position: absolute; top: 154px; left: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_000100 {
|
|
||||||
width: 798px; height: 50px;
|
|
||||||
position: absolute; top: 0px; left: 0px;
|
|
||||||
font-size: 30px; font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_000101 {
|
|
||||||
width: 200px; height: 50px;
|
|
||||||
position: absolute; top: 65px; left: 150px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Entrance_000102 {
|
|
||||||
width: 200px; height: 50px;
|
|
||||||
position: absolute; top: 65px; left: 450px;
|
|
||||||
}
|
|
||||||
@@ -52,8 +52,8 @@ input::-webkit-input-placeholder {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-button{
|
.login_btn_group{
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-register{
|
.login-register{
|
||||||
@@ -62,8 +62,21 @@ input::-webkit-input-placeholder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.col-form-label{
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
|
||||||
.terms{
|
.terms{
|
||||||
max-height: 200px; overflow: auto;
|
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 {
|
.vertical-center {
|
||||||
@@ -72,4 +85,47 @@ input::-webkit-input-placeholder {
|
|||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.full-content {
|
||||||
|
position:fixed;
|
||||||
|
left:0;
|
||||||
|
top:0;
|
||||||
|
width:100%;
|
||||||
|
height:100%;
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
z-index:800;
|
||||||
|
}
|
||||||
|
|
||||||
|
#login_card{
|
||||||
|
z-index:801;
|
||||||
|
}
|
||||||
|
|
||||||
|
#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;
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
right: 6px;
|
right: 6px;
|
||||||
margin:6px;
|
margin:6px;
|
||||||
height:40px;
|
height:40px;
|
||||||
|
line-height:40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#btn_delete_me{
|
#btn_delete_me{
|
||||||
@@ -37,15 +38,15 @@
|
|||||||
|
|
||||||
#image_upload_filename{
|
#image_upload_filename{
|
||||||
position:absolute;
|
position:absolute;
|
||||||
height:16px;
|
height:20px;
|
||||||
left:10px;
|
left:10px;
|
||||||
width:130px;
|
width:130px;
|
||||||
top:16px;
|
top:12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#image_upload_fake_btn{
|
#image_upload_fake_btn{
|
||||||
top:16px;
|
top:12px;
|
||||||
height:20px;
|
height:22px;
|
||||||
right:10px;
|
right:10px;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
}
|
}
|
||||||
@@ -53,8 +54,7 @@
|
|||||||
#image_upload{
|
#image_upload{
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
top:16px;
|
top:12px;
|
||||||
height:22px;
|
|
||||||
left:0;
|
left:0;
|
||||||
height:20px;
|
height:20px;
|
||||||
width:100%;
|
width:100%;
|
||||||
@@ -70,7 +70,6 @@
|
|||||||
bottom:0;
|
bottom:0;
|
||||||
left:0;
|
left:0;
|
||||||
width:50%;
|
width:50%;
|
||||||
height:20px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#btn_remove_icon{
|
#btn_remove_icon{
|
||||||
@@ -78,171 +77,10 @@
|
|||||||
bottom:0;
|
bottom:0;
|
||||||
right:0;
|
right:0;
|
||||||
width:50%;
|
width:50%;
|
||||||
height:20px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#EntranceManage_00 {
|
#third_use_disallow{
|
||||||
width: 500px; height: 409px;
|
display:none;
|
||||||
z-index: 2;
|
margin-left:10px;
|
||||||
}
|
width:40px;
|
||||||
|
}
|
||||||
#EntranceManage_0000 {
|
|
||||||
width: 498px; height: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0001 {
|
|
||||||
width: 100px; height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0002 {
|
|
||||||
width: 498px; height: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0003 {
|
|
||||||
width: 98px; height: 84px;
|
|
||||||
line-height: 84px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0004 {
|
|
||||||
width: 148px; height: 84px;
|
|
||||||
line-height: 84px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0005 {
|
|
||||||
width: 98px; height: 84px;
|
|
||||||
line-height: 84px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0006 {
|
|
||||||
width: 148px; height: 84px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_000600 {
|
|
||||||
width: 80px; height: 17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_000601 {
|
|
||||||
width: 80px; height: 17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_000602 {
|
|
||||||
width: 80px; height: 17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_000603 {
|
|
||||||
width: 144px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0007 {
|
|
||||||
width: 98px; height: 64px;
|
|
||||||
line-height: 64px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0008 {
|
|
||||||
width: 148px; height: 64px;
|
|
||||||
line-height: 64px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0009 {
|
|
||||||
width: 98px; height: 64px;
|
|
||||||
line-height: 64px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0010 {
|
|
||||||
width: 148px; height: 64px;
|
|
||||||
line-height: 64px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0011 {
|
|
||||||
width: 98px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0012 {
|
|
||||||
width: 148px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0013 {
|
|
||||||
width: 248px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0014 {
|
|
||||||
width: 98px; height: 64px;
|
|
||||||
line-height: 64px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0015 {
|
|
||||||
width: 148px; height: 64px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_001500 {
|
|
||||||
width: 64px; height: 64px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_001501 {
|
|
||||||
width: 64px; height: 64px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0016 {
|
|
||||||
width: 248px; height: 64px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_001600 {
|
|
||||||
width: 100px; height: 16px;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_001601 {
|
|
||||||
width: 70px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_001602 {
|
|
||||||
width: 85px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_001603 {
|
|
||||||
width: 85px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0017 {
|
|
||||||
width: 98px; height: 100px;
|
|
||||||
line-height: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0018 {
|
|
||||||
width: 398px; height: 100px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0019 {
|
|
||||||
width: 149px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_0020 {
|
|
||||||
width: 500px; height: 20px;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_002000 {
|
|
||||||
width: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#EntranceManage_00200000 {
|
|
||||||
width: 498px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.EntranceManage_Sequence {
|
|
||||||
width: 48px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.EntranceManage_Date {
|
|
||||||
width: 148px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.EntranceManage_Amount {
|
|
||||||
width: 148px; height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.EntranceManage_Cumul {
|
|
||||||
width: 148px; height: 20px;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
//download.js v3.0, by dandavis; 2008-2014. [CCBY2] see http://danml.com/download.html for tests/usage
|
||||||
|
// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime
|
||||||
|
// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs
|
||||||
|
// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support
|
||||||
|
|
||||||
|
// data can be a string, Blob, File, or dataURL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function download(data, strFileName, strMimeType) {
|
||||||
|
|
||||||
|
var self = window, // this script is only for browsers anyway...
|
||||||
|
u = "application/octet-stream", // this default mime also triggers iframe downloads
|
||||||
|
m = strMimeType || u,
|
||||||
|
x = data,
|
||||||
|
D = document,
|
||||||
|
a = D.createElement("a"),
|
||||||
|
z = function(a){return String(a);},
|
||||||
|
|
||||||
|
|
||||||
|
B = self.Blob || self.MozBlob || self.WebKitBlob || z,
|
||||||
|
BB = self.MSBlobBuilder || self.WebKitBlobBuilder || self.BlobBuilder,
|
||||||
|
fn = strFileName || "download",
|
||||||
|
blob,
|
||||||
|
b,
|
||||||
|
ua,
|
||||||
|
fr;
|
||||||
|
|
||||||
|
//if(typeof B.bind === 'function' ){ B=B.bind(self); }
|
||||||
|
|
||||||
|
if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
|
||||||
|
x=[x, m];
|
||||||
|
m=x[0];
|
||||||
|
x=x[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//go ahead and download dataURLs right away
|
||||||
|
if(String(x).match(/^data\:[\w+\-]+\/[\w+\-]+[,;]/)){
|
||||||
|
return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:
|
||||||
|
navigator.msSaveBlob(d2b(x), fn) :
|
||||||
|
saver(x) ; // everyone else can save dataURLs un-processed
|
||||||
|
}//end if dataURL passed?
|
||||||
|
|
||||||
|
try{
|
||||||
|
|
||||||
|
blob = x instanceof B ?
|
||||||
|
x :
|
||||||
|
new B([x], {type: m}) ;
|
||||||
|
}catch(y){
|
||||||
|
if(BB){
|
||||||
|
b = new BB();
|
||||||
|
b.append([x]);
|
||||||
|
blob = b.getBlob(m); // the blob
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function d2b(u) {
|
||||||
|
var p= u.split(/[:;,]/),
|
||||||
|
t= p[1],
|
||||||
|
dec= p[2] == "base64" ? atob : decodeURIComponent,
|
||||||
|
bin= dec(p.pop()),
|
||||||
|
mx= bin.length,
|
||||||
|
i= 0,
|
||||||
|
uia= new Uint8Array(mx);
|
||||||
|
|
||||||
|
for(i;i<mx;++i) uia[i]= bin.charCodeAt(i);
|
||||||
|
|
||||||
|
return new B([uia], {type: t});
|
||||||
|
}
|
||||||
|
|
||||||
|
function saver(url, winMode){
|
||||||
|
|
||||||
|
|
||||||
|
if ('download' in a) { //html5 A[download]
|
||||||
|
a.href = url;
|
||||||
|
a.setAttribute("download", fn);
|
||||||
|
a.innerHTML = "downloading...";
|
||||||
|
D.body.appendChild(a);
|
||||||
|
setTimeout(function() {
|
||||||
|
a.click();
|
||||||
|
D.body.removeChild(a);
|
||||||
|
if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(a.href);}, 250 );}
|
||||||
|
}, 66);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//do iframe dataURL download (old ch+FF):
|
||||||
|
var f = D.createElement("iframe");
|
||||||
|
D.body.appendChild(f);
|
||||||
|
if(!winMode){ // force a mime that will download:
|
||||||
|
url="data:"+url.replace(/^data:([\w\/\-\+]+)/, u);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
f.src = url;
|
||||||
|
setTimeout(function(){ D.body.removeChild(f); }, 333);
|
||||||
|
|
||||||
|
}//end saver
|
||||||
|
|
||||||
|
|
||||||
|
if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)
|
||||||
|
return navigator.msSaveBlob(blob, fn);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(self.URL){ // simple fast and modern way using Blob and URL:
|
||||||
|
saver(self.URL.createObjectURL(blob), true);
|
||||||
|
}else{
|
||||||
|
// handle non-Blob()+non-URL browsers:
|
||||||
|
if(typeof blob === "string" || blob.constructor===z ){
|
||||||
|
try{
|
||||||
|
return saver( "data:" + m + ";base64," + self.btoa(blob) );
|
||||||
|
}catch(y){
|
||||||
|
return saver( "data:" + m + "," + encodeURIComponent(blob) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Blob but not URL:
|
||||||
|
fr=new FileReader();
|
||||||
|
fr.onload=function(e){
|
||||||
|
saver(this.result);
|
||||||
|
};
|
||||||
|
fr.readAsDataURL(blob);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} /* end download() */
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 341 B |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 386 B |
|
After Width: | Height: | Size: 346 B |
|
After Width: | Height: | Size: 396 B |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
@@ -0,0 +1,152 @@
|
|||||||
|
/*
|
||||||
|
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));
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
"use strict";!function(t,r){var n=function(t){function r(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function n(t){return t.replace(/"/g,""")}function e(t){if(!t)return"";var r=[];for(var e in t){var i=t[e]+"";r.push(e+'="'+n(i)+'"')}return r.join(" ")}function i(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i=new a(i);for(var f=o(t),u=[],c=0;c<f.length;c++){var p=f[c];if("nl"===p.type&&i.nl2br)u.push("<br>\n");else if(p.isLink&&i.check(p)){var l=i.resolve(p),s=l.formatted,g=l.formattedHref,y=l.tagName,h=l.className,v=l.target,k=l.attributes,S="<"+y+' href="'+n(g)+'"';h&&(S+=' class="'+n(h)+'"'),v&&(S+=' target="'+n(v)+'"'),k&&(S+=" "+e(k)),S+=">"+r(s)+"</"+y+">",u.push(S)}else u.push(r(p.toString()))}return u.join("")}var o=t.tokenize,f=t.options,a=f.Options;if(!String.prototype.linkify)try{Object.defineProperty(String.prototype,"linkify",{a:function(){},get:function(){return function(t){return i(this,t)}}})}catch(u){String.prototype.linkify||(String.prototype.linkify=function(t){return i(this,t)})}return i}(r);t.linkifyStr=n}(window,linkify);
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.5 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})();
|
||||||
@@ -0,0 +1,188 @@
|
|||||||
|
/* 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,484 @@
|
|||||||
|
.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;
|
||||||
|
height: 1px !important;
|
||||||
|
margin: -1px !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
position: absolute !important;
|
||||||
|
width: 1px !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__placeholder {
|
||||||
|
color: #999;
|
||||||
|
margin-top: 5px;
|
||||||
|
float: left; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__clear {
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-right: 10px; }
|
||||||
|
.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-selection__placeholder, .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; }
|
||||||
|
|
||||||
|
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: auto; }
|
||||||
|
|
||||||
|
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: auto; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open .select2-selection--multiple {
|
||||||
|
border: 1px solid #5897fb; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
|
||||||
|
border-top: none;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
|
||||||
|
border-bottom: none;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-search--dropdown .select2-search__field {
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
outline: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-search--inline .select2-search__field {
|
||||||
|
outline: 0;
|
||||||
|
box-shadow: none; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-dropdown {
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid transparent; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-dropdown--above {
|
||||||
|
border-bottom: none; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-dropdown--below {
|
||||||
|
border-top: none; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results > .select2-results__options {
|
||||||
|
max-height: 200px;
|
||||||
|
overflow-y: auto; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__option[role=group] {
|
||||||
|
padding: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__option[aria-disabled=true] {
|
||||||
|
color: grey; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__option--highlighted[aria-selected] {
|
||||||
|
background-color: #3875d7;
|
||||||
|
color: white; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__group {
|
||||||
|
cursor: default;
|
||||||
|
display: block;
|
||||||
|
padding: 6px; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open .select2-dropdown {
|
||||||
|
border-color: #5897fb; }
|
||||||
@@ -0,0 +1,155 @@
|
|||||||
|
(function($) {
|
||||||
|
$.extend($.summernote.lang, {
|
||||||
|
'ko-KR': {
|
||||||
|
font: {
|
||||||
|
bold: '굵게',
|
||||||
|
italic: '기울임꼴',
|
||||||
|
underline: '밑줄',
|
||||||
|
clear: '글자 효과 없애기',
|
||||||
|
height: '줄간격',
|
||||||
|
name: '글꼴',
|
||||||
|
superscript: '위 첨자',
|
||||||
|
subscript: '아래 첨자',
|
||||||
|
strikethrough: '취소선',
|
||||||
|
size: '글자 크기'
|
||||||
|
},
|
||||||
|
image: {
|
||||||
|
image: '사진',
|
||||||
|
insert: '사진 추가',
|
||||||
|
resizeFull: '100% 크기로 변경',
|
||||||
|
resizeHalf: '50% 크기로 변경',
|
||||||
|
resizeQuarter: '25% 크기로 변경',
|
||||||
|
floatLeft: '왼쪽 정렬',
|
||||||
|
floatRight: '오른쪽 정렬',
|
||||||
|
floatNone: '정렬하지 않음',
|
||||||
|
shapeRounded: '스타일: 둥근 모서리',
|
||||||
|
shapeCircle: '스타일: 원형',
|
||||||
|
shapeThumbnail: '스타일: 액자',
|
||||||
|
shapeNone: '스타일: 없음',
|
||||||
|
dragImageHere: '텍스트 혹은 사진을 이곳으로 끌어오세요',
|
||||||
|
dropImage: '텍스트 혹은 사진을 내려놓으세요',
|
||||||
|
selectFromFiles: '파일 선택',
|
||||||
|
maximumFileSize: 'Maximum file size',
|
||||||
|
maximumFileSizeError: 'Maximum file size exceeded.',
|
||||||
|
url: '사진 URL',
|
||||||
|
remove: '사진 삭제',
|
||||||
|
original: 'Original'
|
||||||
|
},
|
||||||
|
video: {
|
||||||
|
video: '동영상',
|
||||||
|
videoLink: '동영상 링크',
|
||||||
|
insert: '동영상 추가',
|
||||||
|
url: '동영상 URL',
|
||||||
|
providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)'
|
||||||
|
},
|
||||||
|
link: {
|
||||||
|
link: '링크',
|
||||||
|
insert: '링크 추가',
|
||||||
|
unlink: '링크 삭제',
|
||||||
|
edit: '수정',
|
||||||
|
textToDisplay: '링크에 표시할 내용',
|
||||||
|
url: '이동할 URL',
|
||||||
|
openInNewWindow: '새창으로 열기'
|
||||||
|
},
|
||||||
|
table: {
|
||||||
|
table: '테이블',
|
||||||
|
addRowAbove: 'Add row above',
|
||||||
|
addRowBelow: 'Add row below',
|
||||||
|
addColLeft: 'Add column left',
|
||||||
|
addColRight: 'Add column right',
|
||||||
|
delRow: 'Delete row',
|
||||||
|
delCol: 'Delete column',
|
||||||
|
delTable: 'Delete table'
|
||||||
|
},
|
||||||
|
hr: {
|
||||||
|
insert: '구분선 추가'
|
||||||
|
},
|
||||||
|
style: {
|
||||||
|
style: '스타일',
|
||||||
|
p: '본문',
|
||||||
|
blockquote: '인용구',
|
||||||
|
pre: '코드',
|
||||||
|
h1: '제목 1',
|
||||||
|
h2: '제목 2',
|
||||||
|
h3: '제목 3',
|
||||||
|
h4: '제목 4',
|
||||||
|
h5: '제목 5',
|
||||||
|
h6: '제목 6'
|
||||||
|
},
|
||||||
|
lists: {
|
||||||
|
unordered: '글머리 기호',
|
||||||
|
ordered: '번호 매기기'
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
help: '도움말',
|
||||||
|
fullscreen: '전체 화면',
|
||||||
|
codeview: '코드 보기'
|
||||||
|
},
|
||||||
|
paragraph: {
|
||||||
|
paragraph: '문단 정렬',
|
||||||
|
outdent: '내어쓰기',
|
||||||
|
indent: '들여쓰기',
|
||||||
|
left: '왼쪽 정렬',
|
||||||
|
center: '가운데 정렬',
|
||||||
|
right: '오른쪽 정렬',
|
||||||
|
justify: '양쪽 정렬'
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
recent: '마지막으로 사용한 색',
|
||||||
|
more: '다른 색 선택',
|
||||||
|
background: '배경색',
|
||||||
|
foreground: '글자색',
|
||||||
|
transparent: '투명',
|
||||||
|
setTransparent: '투명',
|
||||||
|
reset: '취소',
|
||||||
|
resetToDefault: '기본 값으로 변경'
|
||||||
|
},
|
||||||
|
shortcut: {
|
||||||
|
shortcuts: '키보드 단축키',
|
||||||
|
close: '닫기',
|
||||||
|
textFormatting: '글자 스타일 적용',
|
||||||
|
action: '기능',
|
||||||
|
paragraphFormatting: '문단 스타일 적용',
|
||||||
|
documentStyle: '문서 스타일 적용',
|
||||||
|
extraKeys: 'Extra keys'
|
||||||
|
},
|
||||||
|
help: {
|
||||||
|
'insertParagraph': 'Insert Paragraph',
|
||||||
|
'undo': 'Undoes the last command',
|
||||||
|
'redo': 'Redoes the last command',
|
||||||
|
'tab': 'Tab',
|
||||||
|
'untab': 'Untab',
|
||||||
|
'bold': 'Set a bold style',
|
||||||
|
'italic': 'Set a italic style',
|
||||||
|
'underline': 'Set a underline style',
|
||||||
|
'strikethrough': 'Set a strikethrough style',
|
||||||
|
'removeFormat': 'Clean a style',
|
||||||
|
'justifyLeft': 'Set left align',
|
||||||
|
'justifyCenter': 'Set center align',
|
||||||
|
'justifyRight': 'Set right align',
|
||||||
|
'justifyFull': 'Set full align',
|
||||||
|
'insertUnorderedList': 'Toggle unordered list',
|
||||||
|
'insertOrderedList': 'Toggle ordered list',
|
||||||
|
'outdent': 'Outdent on current paragraph',
|
||||||
|
'indent': 'Indent on current paragraph',
|
||||||
|
'formatPara': 'Change current block\'s format as a paragraph(P tag)',
|
||||||
|
'formatH1': 'Change current block\'s format as H1',
|
||||||
|
'formatH2': 'Change current block\'s format as H2',
|
||||||
|
'formatH3': 'Change current block\'s format as H3',
|
||||||
|
'formatH4': 'Change current block\'s format as H4',
|
||||||
|
'formatH5': 'Change current block\'s format as H5',
|
||||||
|
'formatH6': 'Change current block\'s format as H6',
|
||||||
|
'insertHorizontalRule': 'Insert horizontal rule',
|
||||||
|
'linkDialog.show': 'Show Link Dialog'
|
||||||
|
},
|
||||||
|
history: {
|
||||||
|
undo: '실행 취소',
|
||||||
|
redo: '다시 실행'
|
||||||
|
},
|
||||||
|
specialChar: {
|
||||||
|
specialChar: '특수문자',
|
||||||
|
select: '특수문자를 선택하세요'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})(jQuery);
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
.ext-databasic {
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
min-height: 50px;
|
||||||
|
background-color: cyan;
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px;
|
||||||
|
border: 1px solid white;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ext-databasic p {
|
||||||
|
color: white;
|
||||||
|
font-size: 1.2em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,292 @@
|
|||||||
|
(function(factory) {
|
||||||
|
/* global define */
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['jquery'], factory);
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node/CommonJS
|
||||||
|
module.exports = factory(require('jquery'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory(window.jQuery);
|
||||||
|
}
|
||||||
|
}(function($) {
|
||||||
|
// pull in some summernote core functions
|
||||||
|
var ui = $.summernote.ui;
|
||||||
|
var dom = $.summernote.dom;
|
||||||
|
|
||||||
|
// define the popover plugin
|
||||||
|
var DataBasicPlugin = function(context) {
|
||||||
|
var self = this;
|
||||||
|
var options = context.options;
|
||||||
|
var lang = options.langInfo;
|
||||||
|
|
||||||
|
self.icon = '<i class="fa fa-object-group"/>';
|
||||||
|
|
||||||
|
// add context menu button for dialog
|
||||||
|
context.memo('button.databasic', function() {
|
||||||
|
return ui.button({
|
||||||
|
contents: self.icon,
|
||||||
|
tooltip: lang.databasic.insert,
|
||||||
|
click: context.createInvokeHandler('databasic.showDialog')
|
||||||
|
}).render();
|
||||||
|
});
|
||||||
|
|
||||||
|
// add popover edit button
|
||||||
|
context.memo('button.databasicDialog', function() {
|
||||||
|
return ui.button({
|
||||||
|
contents: self.icon,
|
||||||
|
tooltip: lang.databasic.edit,
|
||||||
|
click: context.createInvokeHandler('databasic.showDialog')
|
||||||
|
}).render();
|
||||||
|
});
|
||||||
|
|
||||||
|
// add popover size buttons
|
||||||
|
context.memo('button.databasicSize100', function() {
|
||||||
|
return ui.button({
|
||||||
|
contents: '<span class="note-fontsize-10">100%</span>',
|
||||||
|
tooltip: lang.image.resizeFull,
|
||||||
|
click: context.createInvokeHandler('editor.resize', '1')
|
||||||
|
}).render();
|
||||||
|
});
|
||||||
|
context.memo('button.databasicSize50', function() {
|
||||||
|
return ui.button({
|
||||||
|
contents: '<span class="note-fontsize-10">50%</span>',
|
||||||
|
tooltip: lang.image.resizeHalf,
|
||||||
|
click: context.createInvokeHandler('editor.resize', '0.5')
|
||||||
|
}).render();
|
||||||
|
});
|
||||||
|
context.memo('button.databasicSize25', function() {
|
||||||
|
return ui.button({
|
||||||
|
contents: '<span class="note-fontsize-10">25%</span>',
|
||||||
|
tooltip: lang.image.resizeQuarter,
|
||||||
|
click: context.createInvokeHandler('editor.resize', '0.25')
|
||||||
|
}).render();
|
||||||
|
});
|
||||||
|
|
||||||
|
self.events = {
|
||||||
|
'summernote.init': function(we, e) {
|
||||||
|
// update existing containers
|
||||||
|
$('data.ext-databasic', e.editable).each(function() { self.setContent($(this)); });
|
||||||
|
// TODO: make this an undo snapshot...
|
||||||
|
},
|
||||||
|
'summernote.keyup summernote.mouseup summernote.change summernote.scroll': function() {
|
||||||
|
self.update();
|
||||||
|
},
|
||||||
|
'summernote.dialog.shown': function() {
|
||||||
|
self.hidePopover();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.initialize = function() {
|
||||||
|
// create dialog markup
|
||||||
|
var $container = options.dialogsInBody ? $(document.body) : context.layoutInfo.editor;
|
||||||
|
|
||||||
|
var body = '<div class="form-group row-fluid">' +
|
||||||
|
'<label>' + lang.databasic.testLabel + '</label>' +
|
||||||
|
'<input class="ext-databasic-test form-control" type="text" />' +
|
||||||
|
'</div>';
|
||||||
|
var footer = '<button href="#" class="btn btn-primary ext-databasic-save">' + lang.databasic.insert + '</button>';
|
||||||
|
|
||||||
|
self.$dialog = ui.dialog({
|
||||||
|
title: lang.databasic.name,
|
||||||
|
fade: options.dialogsFade,
|
||||||
|
body: body,
|
||||||
|
footer: footer
|
||||||
|
}).render().appendTo($container);
|
||||||
|
|
||||||
|
// create popover
|
||||||
|
self.$popover = ui.popover({
|
||||||
|
className: 'ext-databasic-popover'
|
||||||
|
}).render().appendTo('body');
|
||||||
|
var $content = self.$popover.find('.popover-content');
|
||||||
|
|
||||||
|
context.invoke('buttons.build', $content, options.popover.databasic);
|
||||||
|
};
|
||||||
|
|
||||||
|
self.destroy = function() {
|
||||||
|
self.$popover.remove();
|
||||||
|
self.$popover = null;
|
||||||
|
self.$dialog.remove();
|
||||||
|
self.$dialog = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
self.update = function() {
|
||||||
|
// Prevent focusing on editable when invoke('code') is executed
|
||||||
|
if (!context.invoke('editor.hasFocus')) {
|
||||||
|
self.hidePopover();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rng = context.invoke('editor.createRange');
|
||||||
|
var visible = false;
|
||||||
|
|
||||||
|
if (rng.isOnData()) {
|
||||||
|
var $data = $(rng.sc).closest('data.ext-databasic');
|
||||||
|
|
||||||
|
if ($data.length) {
|
||||||
|
var pos = dom.posFromPlaceholder($data[0]);
|
||||||
|
|
||||||
|
self.$popover.css({
|
||||||
|
display: 'block',
|
||||||
|
left: pos.left,
|
||||||
|
top: pos.top
|
||||||
|
});
|
||||||
|
|
||||||
|
// save editor target to let size buttons resize the container
|
||||||
|
context.invoke('editor.saveTarget', $data[0]);
|
||||||
|
|
||||||
|
visible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// hide if not visible
|
||||||
|
if (!visible) {
|
||||||
|
self.hidePopover();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.hidePopover = function() {
|
||||||
|
self.$popover.hide();
|
||||||
|
};
|
||||||
|
|
||||||
|
// define plugin dialog
|
||||||
|
self.getInfo = function() {
|
||||||
|
var rng = context.invoke('editor.createRange');
|
||||||
|
|
||||||
|
if (rng.isOnData()) {
|
||||||
|
var $data = $(rng.sc).closest('data.ext-databasic');
|
||||||
|
|
||||||
|
if ($data.length) {
|
||||||
|
// Get the first node on range(for edit).
|
||||||
|
return {
|
||||||
|
node: $data,
|
||||||
|
test: $data.attr('data-test')
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {};
|
||||||
|
};
|
||||||
|
|
||||||
|
self.setContent = function($node) {
|
||||||
|
$node.html('<p contenteditable="false">' + self.icon + ' ' + lang.databasic.name + ': ' +
|
||||||
|
$node.attr('data-test') + '</p>');
|
||||||
|
};
|
||||||
|
|
||||||
|
self.updateNode = function(info) {
|
||||||
|
self.setContent(info.node
|
||||||
|
.attr('data-test', info.test));
|
||||||
|
};
|
||||||
|
|
||||||
|
self.createNode = function(info) {
|
||||||
|
var $node = $('<data class="ext-databasic"></data>');
|
||||||
|
|
||||||
|
if ($node) {
|
||||||
|
// save node to info structure
|
||||||
|
info.node = $node;
|
||||||
|
// insert node into editor dom
|
||||||
|
context.invoke('editor.insertNode', $node[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $node;
|
||||||
|
};
|
||||||
|
|
||||||
|
self.showDialog = function() {
|
||||||
|
var info = self.getInfo();
|
||||||
|
var newNode = !info.node;
|
||||||
|
context.invoke('editor.saveRange');
|
||||||
|
|
||||||
|
self
|
||||||
|
.openDialog(info)
|
||||||
|
.then(function(dialogInfo) {
|
||||||
|
// [workaround] hide dialog before restore range for IE range focus
|
||||||
|
ui.hideDialog(self.$dialog);
|
||||||
|
context.invoke('editor.restoreRange');
|
||||||
|
|
||||||
|
// insert a new node
|
||||||
|
if (newNode) {
|
||||||
|
self.createNode(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
// update info with dialog info
|
||||||
|
$.extend(info, dialogInfo);
|
||||||
|
|
||||||
|
self.updateNode(info);
|
||||||
|
})
|
||||||
|
.fail(function() {
|
||||||
|
context.invoke('editor.restoreRange');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
self.openDialog = function(info) {
|
||||||
|
return $.Deferred(function(deferred) {
|
||||||
|
var $inpTest = self.$dialog.find('.ext-databasic-test');
|
||||||
|
var $saveBtn = self.$dialog.find('.ext-databasic-save');
|
||||||
|
var onKeyup = function(event) {
|
||||||
|
if (event.keyCode === 13) {
|
||||||
|
$saveBtn.trigger('click');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ui.onDialogShown(self.$dialog, function() {
|
||||||
|
context.triggerEvent('dialog.shown');
|
||||||
|
|
||||||
|
$inpTest.val(info.test).on('input', function() {
|
||||||
|
ui.toggleBtn($saveBtn, $inpTest.val());
|
||||||
|
}).trigger('focus').on('keyup', onKeyup);
|
||||||
|
|
||||||
|
$saveBtn
|
||||||
|
.text(info.node ? lang.databasic.edit : lang.databasic.insert)
|
||||||
|
.click(function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
deferred.resolve({ test: $inpTest.val() });
|
||||||
|
});
|
||||||
|
|
||||||
|
// init save button
|
||||||
|
ui.toggleBtn($saveBtn, $inpTest.val());
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.onDialogHidden(self.$dialog, function() {
|
||||||
|
$inpTest.off('input keyup');
|
||||||
|
$saveBtn.off('click');
|
||||||
|
|
||||||
|
if (deferred.state() === 'pending') {
|
||||||
|
deferred.reject();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.showDialog(self.$dialog);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Extends summernote
|
||||||
|
$.extend(true, $.summernote, {
|
||||||
|
plugins: {
|
||||||
|
databasic: DataBasicPlugin
|
||||||
|
},
|
||||||
|
|
||||||
|
options: {
|
||||||
|
popover: {
|
||||||
|
databasic: [
|
||||||
|
['databasic', ['databasicDialog', 'databasicSize100', 'databasicSize50', 'databasicSize25']]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// add localization texts
|
||||||
|
lang: {
|
||||||
|
'en-US': {
|
||||||
|
databasic: {
|
||||||
|
name: 'Basic Data Container',
|
||||||
|
insert: 'insert basic data container',
|
||||||
|
edit: 'edit basic data container',
|
||||||
|
testLabel: 'test input'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}));
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
(function(factory) {
|
||||||
|
/* global define */
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['jquery'], factory);
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node/CommonJS
|
||||||
|
module.exports = factory(require('jquery'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory(window.jQuery);
|
||||||
|
}
|
||||||
|
}(function($) {
|
||||||
|
// Extends plugins for adding hello.
|
||||||
|
// - plugin is external module for customizing.
|
||||||
|
$.extend($.summernote.plugins, {
|
||||||
|
/**
|
||||||
|
* @param {Object} context - context object has status of editor.
|
||||||
|
*/
|
||||||
|
'hello': function(context) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
// ui has renders to build ui elements.
|
||||||
|
// - you can create a button with `ui.button`
|
||||||
|
var ui = $.summernote.ui;
|
||||||
|
|
||||||
|
// add hello button
|
||||||
|
context.memo('button.hello', function() {
|
||||||
|
// create button
|
||||||
|
var button = ui.button({
|
||||||
|
contents: '<i class="fa fa-child"/> Hello',
|
||||||
|
tooltip: 'hello',
|
||||||
|
click: function() {
|
||||||
|
self.$panel.show();
|
||||||
|
self.$panel.hide(500);
|
||||||
|
// invoke insertText method with 'hello' on editor module.
|
||||||
|
context.invoke('editor.insertText', 'hello');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// create jQuery object from button instance.
|
||||||
|
var $hello = button.render();
|
||||||
|
return $hello;
|
||||||
|
});
|
||||||
|
|
||||||
|
// This events will be attached when editor is initialized.
|
||||||
|
this.events = {
|
||||||
|
// This will be called after modules are initialized.
|
||||||
|
'summernote.init': function(we, e) {
|
||||||
|
console.log('summernote initialized', we, e);
|
||||||
|
},
|
||||||
|
// This will be called when user releases a key on editable.
|
||||||
|
'summernote.keyup': function(we, e) {
|
||||||
|
console.log('summernote keyup', we, e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// This method will be called when editor is initialized by $('..').summernote();
|
||||||
|
// You can create elements for plugin
|
||||||
|
this.initialize = function() {
|
||||||
|
this.$panel = $('<div class="hello-panel"/>').css({
|
||||||
|
position: 'absolute',
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
left: '50%',
|
||||||
|
top: '50%',
|
||||||
|
background: 'red'
|
||||||
|
}).hide();
|
||||||
|
|
||||||
|
this.$panel.appendTo('body');
|
||||||
|
};
|
||||||
|
|
||||||
|
// This methods will be called when editor is destroyed by $('..').summernote('destroy');
|
||||||
|
// You should remove elements on `initialize`.
|
||||||
|
this.destroy = function() {
|
||||||
|
this.$panel.remove();
|
||||||
|
this.$panel = null;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}));
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
/* Forked from https://github.com/asiffermann/summernote-image-title */
|
||||||
|
|
||||||
|
(function (factory) {
|
||||||
|
/* Global define */
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['jquery'], factory);
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node/CommonJS
|
||||||
|
module.exports = factory(require('jquery'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory(window.jQuery);
|
||||||
|
}
|
||||||
|
}(function ($) {
|
||||||
|
$.extend(true, $.summernote.lang, {
|
||||||
|
'en-US': {
|
||||||
|
imageFlip: {
|
||||||
|
edit: 'Flip image',
|
||||||
|
flipLabel: 'Alternative Image'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'ko-KR': {
|
||||||
|
imageFlip: {
|
||||||
|
edit: '이미지 전환',
|
||||||
|
flipLabel: '대체 이미지( , 로 구분)'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
$.extend($.summernote.options, {
|
||||||
|
imageFlip: {
|
||||||
|
icon: '<i class="note-icon-pencil"/>',
|
||||||
|
tooltip: 'Image Flip'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$.extend($.summernote.plugins, {
|
||||||
|
'imageFlip': function (context) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
var ui = $.summernote.ui;
|
||||||
|
var $note = context.layoutInfo.note;
|
||||||
|
var $editor = context.layoutInfo.editor;
|
||||||
|
var $editable = context.layoutInfo.editable;
|
||||||
|
var $toolbar = context.layoutInfo.toolbar;
|
||||||
|
|
||||||
|
if (typeof context.options.imageFlip === 'undefined') {
|
||||||
|
context.options.imageFlip = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
var options = context.options;
|
||||||
|
var lang = options.langInfo;
|
||||||
|
|
||||||
|
context.memo('button.imageFlip', function () {
|
||||||
|
var button = ui.button({
|
||||||
|
contents: ui.icon(options.icons.pencil),
|
||||||
|
container: false,
|
||||||
|
tooltip: lang.imageFlip.edit,
|
||||||
|
click: function (e) {
|
||||||
|
context.invoke('imageFlip.show');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return button.render();
|
||||||
|
});
|
||||||
|
|
||||||
|
this.initialize = function () {
|
||||||
|
var $container = options.dialogsInBody ? $(document.body) : $editor;
|
||||||
|
|
||||||
|
var body = '<div class="form-group">' +
|
||||||
|
'<label>' + lang.imageFlip.flipLabel + '</label>' +
|
||||||
|
'<input class="note-image-flip-text form-control" type="text" />' +
|
||||||
|
'</div>';
|
||||||
|
|
||||||
|
var footer = '<button href="#" class="btn btn-primary note-image-flip-btn">' + lang.imageFlip.edit + '</button>';
|
||||||
|
|
||||||
|
this.$dialog = ui.dialog({
|
||||||
|
title: lang.imageFlip.edit,
|
||||||
|
body: body,
|
||||||
|
footer: footer
|
||||||
|
}).render().appendTo($container);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.destroy = function () {
|
||||||
|
ui.hideDialog(this.$dialog);
|
||||||
|
this.$dialog.remove();
|
||||||
|
};
|
||||||
|
|
||||||
|
this.bindEnterKey = function ($input, $btn) {
|
||||||
|
$input.on('keypress', function (event) {
|
||||||
|
if (event.keyCode === 13) {
|
||||||
|
$btn.trigger('click');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
this.show = function () {
|
||||||
|
var $img = $($editable.data('target'));
|
||||||
|
|
||||||
|
var imgInfo = {
|
||||||
|
imgDom: $img,
|
||||||
|
flip: $img.data('flip'),
|
||||||
|
};
|
||||||
|
this.showLinkDialog(imgInfo).then(function (imgInfo) {
|
||||||
|
ui.hideDialog(self.$dialog);
|
||||||
|
var $img = imgInfo.imgDom;
|
||||||
|
|
||||||
|
if (imgInfo.flip) {
|
||||||
|
$img.attr('data-flip', imgInfo.flip);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$img.removeData('flip');
|
||||||
|
}
|
||||||
|
|
||||||
|
$note.val(context.invoke('code'));
|
||||||
|
$note.change();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
this.showLinkDialog = function (imgInfo) {
|
||||||
|
return $.Deferred(function (deferred) {
|
||||||
|
var $imageFlip = self.$dialog.find('.note-image-flip-text');
|
||||||
|
var $editBtn = self.$dialog.find('.note-image-flip-btn');
|
||||||
|
|
||||||
|
ui.onDialogShown(self.$dialog, function () {
|
||||||
|
context.triggerEvent('dialog.shown');
|
||||||
|
|
||||||
|
$editBtn.click(function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
deferred.resolve({
|
||||||
|
imgDom: imgInfo.imgDom,
|
||||||
|
flip: $imageFlip.val(),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$imageFlip.val(imgInfo.flip).trigger('focus');
|
||||||
|
self.bindEnterKey($imageFlip, $editBtn);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.onDialogHidden(self.$dialog, function () {
|
||||||
|
$editBtn.off('click');
|
||||||
|
|
||||||
|
if (deferred.state() === 'pending') {
|
||||||
|
deferred.reject();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.showDialog(self.$dialog);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}));
|
||||||
@@ -0,0 +1,312 @@
|
|||||||
|
(function(factory) {
|
||||||
|
/* global define */
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['jquery'], factory);
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node/CommonJS
|
||||||
|
module.exports = factory(require('jquery'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory(window.jQuery);
|
||||||
|
}
|
||||||
|
}(function($) {
|
||||||
|
$.extend($.summernote.plugins, {
|
||||||
|
'specialchars': function(context) {
|
||||||
|
var self = this;
|
||||||
|
var ui = $.summernote.ui;
|
||||||
|
|
||||||
|
var $editor = context.layoutInfo.editor;
|
||||||
|
var options = context.options;
|
||||||
|
var lang = options.langInfo;
|
||||||
|
|
||||||
|
var KEY = {
|
||||||
|
UP: 38,
|
||||||
|
DOWN: 40,
|
||||||
|
LEFT: 37,
|
||||||
|
RIGHT: 39,
|
||||||
|
ENTER: 13
|
||||||
|
};
|
||||||
|
var COLUMN_LENGTH = 15;
|
||||||
|
var COLUMN_WIDTH = 35;
|
||||||
|
|
||||||
|
var currentColumn = 0;
|
||||||
|
var currentRow = 0;
|
||||||
|
var totalColumn = 0;
|
||||||
|
var totalRow = 0;
|
||||||
|
|
||||||
|
// special characters data set
|
||||||
|
var specialCharDataSet = [
|
||||||
|
'"', '&', '<', '>', '¡', '¢',
|
||||||
|
'£', '¤', '¥', '¦', '§',
|
||||||
|
'¨', '©', 'ª', '«', '¬',
|
||||||
|
'®', '¯', '°', '±', '²',
|
||||||
|
'³', '´', 'µ', '¶', '·',
|
||||||
|
'¸', '¹', 'º', '»', '¼',
|
||||||
|
'½', '¾', '¿', '×', '÷',
|
||||||
|
'ƒ', 'ˆ', '˜', '–', '—',
|
||||||
|
'‘', '’', '‚', '“', '”',
|
||||||
|
'„', '†', '‡', '•', '…',
|
||||||
|
'‰', '′', '″', '‹', '›',
|
||||||
|
'‾', '⁄', '€', 'ℑ', '℘',
|
||||||
|
'ℜ', '™', 'ℵ', '←', '↑',
|
||||||
|
'→', '↓', '↔', '↵', '⇐',
|
||||||
|
'⇑', '⇒', '⇓', '⇔', '∀',
|
||||||
|
'∂', '∃', '∅', '∇', '∈',
|
||||||
|
'∉', '∋', '∏', '∑', '−',
|
||||||
|
'∗', '√', '∝', '∞', '∠',
|
||||||
|
'∧', '∨', '∩', '∪', '∫',
|
||||||
|
'∴', '∼', '≅', '≈', '≠',
|
||||||
|
'≡', '≤', '≥', '⊂', '⊃',
|
||||||
|
'⊄', '⊆', '⊇', '⊕', '⊗',
|
||||||
|
'⊥', '⋅', '⌈', '⌉', '⌊',
|
||||||
|
'⌋', '◊', '♠', '♣', '♥',
|
||||||
|
'♦'
|
||||||
|
];
|
||||||
|
|
||||||
|
context.memo('button.specialchars', function() {
|
||||||
|
return ui.button({
|
||||||
|
contents: '<i class="fa fa-font fa-flip-vertical">',
|
||||||
|
tooltip: lang.specialChar.specialChar,
|
||||||
|
click: function() {
|
||||||
|
self.show();
|
||||||
|
}
|
||||||
|
}).render();
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make Special Characters Table
|
||||||
|
*
|
||||||
|
* @member plugin.specialChar
|
||||||
|
* @private
|
||||||
|
* @return {jQuery}
|
||||||
|
*/
|
||||||
|
this.makeSpecialCharSetTable = function() {
|
||||||
|
var $table = $('<table/>');
|
||||||
|
$.each(specialCharDataSet, function(idx, text) {
|
||||||
|
var $td = $('<td/>').addClass('note-specialchar-node');
|
||||||
|
var $tr = (idx % COLUMN_LENGTH === 0) ? $('<tr/>') : $table.find('tr').last();
|
||||||
|
|
||||||
|
var $button = ui.button({
|
||||||
|
callback: function($node) {
|
||||||
|
$node.html(text);
|
||||||
|
$node.attr('title', text);
|
||||||
|
$node.attr('data-value', encodeURIComponent(text));
|
||||||
|
$node.css({
|
||||||
|
width: COLUMN_WIDTH,
|
||||||
|
'margin-right': '2px',
|
||||||
|
'margin-bottom': '2px'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).render();
|
||||||
|
|
||||||
|
$td.append($button);
|
||||||
|
|
||||||
|
$tr.append($td);
|
||||||
|
if (idx % COLUMN_LENGTH === 0) {
|
||||||
|
$table.append($tr);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
totalRow = $table.find('tr').length;
|
||||||
|
totalColumn = COLUMN_LENGTH;
|
||||||
|
|
||||||
|
return $table;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.initialize = function() {
|
||||||
|
var $container = options.dialogsInBody ? $(document.body) : $editor;
|
||||||
|
|
||||||
|
var body = '<div class="form-group row-fluid">' + this.makeSpecialCharSetTable()[0].outerHTML + '</div>';
|
||||||
|
|
||||||
|
this.$dialog = ui.dialog({
|
||||||
|
title: lang.specialChar.select,
|
||||||
|
body: body
|
||||||
|
}).render().appendTo($container);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.show = function() {
|
||||||
|
var text = context.invoke('editor.getSelectedText');
|
||||||
|
context.invoke('editor.saveRange');
|
||||||
|
this.showSpecialCharDialog(text).then(function(selectChar) {
|
||||||
|
context.invoke('editor.restoreRange');
|
||||||
|
|
||||||
|
// build node
|
||||||
|
var $node = $('<span></span>').html(selectChar)[0];
|
||||||
|
|
||||||
|
if ($node) {
|
||||||
|
// insert video node
|
||||||
|
context.invoke('editor.insertNode', $node);
|
||||||
|
}
|
||||||
|
}).fail(function() {
|
||||||
|
context.invoke('editor.restoreRange');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* show image dialog
|
||||||
|
*
|
||||||
|
* @param {jQuery} $dialog
|
||||||
|
* @return {Promise}
|
||||||
|
*/
|
||||||
|
this.showSpecialCharDialog = function(text) {
|
||||||
|
return $.Deferred(function(deferred) {
|
||||||
|
var $specialCharDialog = self.$dialog;
|
||||||
|
var $specialCharNode = $specialCharDialog.find('.note-specialchar-node');
|
||||||
|
var $selectedNode = null;
|
||||||
|
var ARROW_KEYS = [KEY.UP, KEY.DOWN, KEY.LEFT, KEY.RIGHT];
|
||||||
|
var ENTER_KEY = KEY.ENTER;
|
||||||
|
|
||||||
|
function addActiveClass($target) {
|
||||||
|
if (!$target) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$target.find('button').addClass('active');
|
||||||
|
$selectedNode = $target;
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeActiveClass($target) {
|
||||||
|
$target.find('button').removeClass('active');
|
||||||
|
$selectedNode = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// find next node
|
||||||
|
function findNextNode(row, column) {
|
||||||
|
var findNode = null;
|
||||||
|
$.each($specialCharNode, function(idx, $node) {
|
||||||
|
var findRow = Math.ceil((idx + 1) / COLUMN_LENGTH);
|
||||||
|
var findColumn = ((idx + 1) % COLUMN_LENGTH === 0) ? COLUMN_LENGTH : (idx + 1) % COLUMN_LENGTH;
|
||||||
|
if (findRow === row && findColumn === column) {
|
||||||
|
findNode = $node;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return $(findNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
function arrowKeyHandler(keyCode) {
|
||||||
|
// left, right, up, down key
|
||||||
|
var $nextNode;
|
||||||
|
var lastRowColumnLength = $specialCharNode.length % totalColumn;
|
||||||
|
|
||||||
|
if (KEY.LEFT === keyCode) {
|
||||||
|
if (currentColumn > 1) {
|
||||||
|
currentColumn = currentColumn - 1;
|
||||||
|
} else if (currentRow === 1 && currentColumn === 1) {
|
||||||
|
currentColumn = lastRowColumnLength;
|
||||||
|
currentRow = totalRow;
|
||||||
|
} else {
|
||||||
|
currentColumn = totalColumn;
|
||||||
|
currentRow = currentRow - 1;
|
||||||
|
}
|
||||||
|
} else if (KEY.RIGHT === keyCode) {
|
||||||
|
if (currentRow === totalRow && lastRowColumnLength === currentColumn) {
|
||||||
|
currentColumn = 1;
|
||||||
|
currentRow = 1;
|
||||||
|
} else if (currentColumn < totalColumn) {
|
||||||
|
currentColumn = currentColumn + 1;
|
||||||
|
} else {
|
||||||
|
currentColumn = 1;
|
||||||
|
currentRow = currentRow + 1;
|
||||||
|
}
|
||||||
|
} else if (KEY.UP === keyCode) {
|
||||||
|
if (currentRow === 1 && lastRowColumnLength < currentColumn) {
|
||||||
|
currentRow = totalRow - 1;
|
||||||
|
} else {
|
||||||
|
currentRow = currentRow - 1;
|
||||||
|
}
|
||||||
|
} else if (KEY.DOWN === keyCode) {
|
||||||
|
currentRow = currentRow + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentRow === totalRow && currentColumn > lastRowColumnLength) {
|
||||||
|
currentRow = 1;
|
||||||
|
} else if (currentRow > totalRow) {
|
||||||
|
currentRow = 1;
|
||||||
|
} else if (currentRow < 1) {
|
||||||
|
currentRow = totalRow;
|
||||||
|
}
|
||||||
|
|
||||||
|
$nextNode = findNextNode(currentRow, currentColumn);
|
||||||
|
|
||||||
|
if ($nextNode) {
|
||||||
|
removeActiveClass($selectedNode);
|
||||||
|
addActiveClass($nextNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function enterKeyHandler() {
|
||||||
|
if (!$selectedNode) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
deferred.resolve(decodeURIComponent($selectedNode.find('button').attr('data-value')));
|
||||||
|
$specialCharDialog.modal('hide');
|
||||||
|
}
|
||||||
|
|
||||||
|
function keyDownEventHandler(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var keyCode = event.keyCode;
|
||||||
|
if (keyCode === undefined || keyCode === null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// check arrowKeys match
|
||||||
|
if (ARROW_KEYS.indexOf(keyCode) > -1) {
|
||||||
|
if ($selectedNode === null) {
|
||||||
|
addActiveClass($specialCharNode.eq(0));
|
||||||
|
currentColumn = 1;
|
||||||
|
currentRow = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
arrowKeyHandler(keyCode);
|
||||||
|
} else if (keyCode === ENTER_KEY) {
|
||||||
|
enterKeyHandler();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove class
|
||||||
|
removeActiveClass($specialCharNode);
|
||||||
|
|
||||||
|
// find selected node
|
||||||
|
if (text) {
|
||||||
|
for (var i = 0; i < $specialCharNode.length; i++) {
|
||||||
|
var $checkNode = $($specialCharNode[i]);
|
||||||
|
if ($checkNode.text() === text) {
|
||||||
|
addActiveClass($checkNode);
|
||||||
|
currentRow = Math.ceil((i + 1) / COLUMN_LENGTH);
|
||||||
|
currentColumn = (i + 1) % COLUMN_LENGTH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ui.onDialogShown(self.$dialog, function() {
|
||||||
|
$(document).on('keydown', keyDownEventHandler);
|
||||||
|
|
||||||
|
self.$dialog.find('button').tooltip();
|
||||||
|
|
||||||
|
$specialCharNode.on('click', function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
deferred.resolve(decodeURIComponent($(event.currentTarget).find('button').attr('data-value')));
|
||||||
|
ui.hideDialog(self.$dialog);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.onDialogHidden(self.$dialog, function() {
|
||||||
|
$specialCharNode.off('click');
|
||||||
|
|
||||||
|
self.$dialog.find('button').tooltip('destroy');
|
||||||
|
|
||||||
|
$(document).off('keydown', keyDownEventHandler);
|
||||||
|
|
||||||
|
if (deferred.state() === 'pending') {
|
||||||
|
deferred.reject();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.showDialog(self.$dialog);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 11 KiB |
@@ -2,23 +2,145 @@
|
|||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
define('ROOT', realpath(__dir__.'/..'));
|
define('ROOT', realpath(__dir__.'/..'));
|
||||||
|
setlocale(LC_ALL, 'ko_KR.UTF-8');
|
||||||
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.gc_maxlifetime", 604800); // seconds
|
||||||
|
|
||||||
|
function getFriendlyErrorType($type)
|
||||||
|
{
|
||||||
|
switch($type)
|
||||||
|
{
|
||||||
|
case E_ERROR: // 1 //
|
||||||
|
return 'E_ERROR';
|
||||||
|
case E_WARNING: // 2 //
|
||||||
|
return 'E_WARNING';
|
||||||
|
case E_PARSE: // 4 //
|
||||||
|
return 'E_PARSE';
|
||||||
|
case E_NOTICE: // 8 //
|
||||||
|
return 'E_NOTICE';
|
||||||
|
case E_CORE_ERROR: // 16 //
|
||||||
|
return 'E_CORE_ERROR';
|
||||||
|
case E_CORE_WARNING: // 32 //
|
||||||
|
return 'E_CORE_WARNING';
|
||||||
|
case E_COMPILE_ERROR: // 64 //
|
||||||
|
return 'E_COMPILE_ERROR';
|
||||||
|
case E_COMPILE_WARNING: // 128 //
|
||||||
|
return 'E_COMPILE_WARNING';
|
||||||
|
case E_USER_ERROR: // 256 //
|
||||||
|
return 'E_USER_ERROR';
|
||||||
|
case E_USER_WARNING: // 512 //
|
||||||
|
return 'E_USER_WARNING';
|
||||||
|
case E_USER_NOTICE: // 1024 //
|
||||||
|
return 'E_USER_NOTICE';
|
||||||
|
case E_STRICT: // 2048 //
|
||||||
|
return 'E_STRICT';
|
||||||
|
case E_RECOVERABLE_ERROR: // 4096 //
|
||||||
|
return 'E_RECOVERABLE_ERROR';
|
||||||
|
case E_DEPRECATED: // 8192 //
|
||||||
|
return 'E_DEPRECATED';
|
||||||
|
case E_USER_DEPRECATED: // 16384 //
|
||||||
|
return 'E_USER_DEPRECATED';
|
||||||
|
}
|
||||||
|
return "{$type}";
|
||||||
|
}
|
||||||
|
|
||||||
|
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){
|
function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext){
|
||||||
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");
|
|
||||||
|
|
||||||
file_put_contents(ROOT.'/d_log/err_log.txt',"$date, $errno, $errstr, $errfile, $errline\n", FILE_APPEND);
|
|
||||||
|
|
||||||
/* Don't execute PHP internal error handler */
|
$e = new \Exception();
|
||||||
//return true;
|
|
||||||
|
logError(
|
||||||
|
getFriendlyErrorType($errno),
|
||||||
|
$errstr,
|
||||||
|
$errfile.':'.$errline,
|
||||||
|
getExceptionTraceAsString($e)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
set_error_handler("\sammo\logErrorByCustomHandler");
|
set_error_handler("\sammo\logErrorByCustomHandler");
|
||||||
|
|
||||||
|
|
||||||
|
function logExceptionByCustomHandler(\Throwable $e){
|
||||||
|
|
||||||
|
logError(
|
||||||
|
get_class($e),
|
||||||
|
$e->getMessage(),
|
||||||
|
$e->getFile().':'.$e->getLine(),
|
||||||
|
getExceptionTraceAsString($e)
|
||||||
|
);
|
||||||
|
|
||||||
|
echo $e->getTraceAsString();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
set_exception_handler('\\sammo\\logExceptionByCustomHandler');
|
||||||
@@ -8,19 +8,21 @@ require(__dir__.'/../vendor/autoload.php');
|
|||||||
<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" />
|
||||||
<title>설치</title>
|
<title>설치</title>
|
||||||
<script src="../e_lib/jquery-3.2.1.min.js"></script>
|
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||||
<script src="../e_lib/bootstrap.bundle.min.js"></script>
|
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||||
<script src="../e_lib/jquery.validate.min.js"></script>
|
<?=WebUtil::printJS('../e_lib/jquery.validate.min.js')?>
|
||||||
<script src="../e_lib/sha512.min.js"></script>
|
<?=WebUtil::printJS('../e_lib/sha512.min.js')?>
|
||||||
<script src="../js/install.js"></script>
|
<?=WebUtil::printJS('../js/common.js')?>
|
||||||
<link type="text/css" rel="stylesheet" href="../e_lib/bootstrap.min.css">
|
<?=WebUtil::printJS('../js/install.js')?>
|
||||||
<link type="text/css" rel="stylesheet" href="../css/install.css">
|
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||||
|
<?=WebUtil::printCSS('../css/install.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1 class="row justify-content-md-center">삼국지 모의전투 HiD 설치</h1>
|
<h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe 설치</h1>
|
||||||
<div class="row justify-content-md-center">
|
<div class="row justify-content-md-center">
|
||||||
|
|
||||||
<div class="col col-12 col-md-10 col-lg-7">
|
<div class="col col-12 col-md-10 col-lg-7">
|
||||||
@@ -96,6 +98,38 @@ require(__dir__.'/../vendor/autoload.php');
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</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-append">
|
||||||
|
<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 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">
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ $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,
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ $rootDB->error_handler = function($params){
|
|||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
$memberCnt = $rootDB->queryFirstField('SELECT count(`NO`) from MEMBER');
|
$memberCnt = $rootDB->queryFirstField('SELECT count(`NO`) from member');
|
||||||
if($memberCnt == 0){
|
if($memberCnt == 0){
|
||||||
Json::die([
|
Json::die([
|
||||||
'step'=>'admin',
|
'step'=>'admin',
|
||||||
|
|||||||
@@ -11,6 +11,11 @@ $dbName = Util::getReq('db_name');
|
|||||||
$servHost = Util::getReq('serv_host');
|
$servHost = Util::getReq('serv_host');
|
||||||
$sharedIconPath = Util::getReq('shared_icon_path');
|
$sharedIconPath = Util::getReq('shared_icon_path');
|
||||||
$gameImagePath = Util::getReq('game_image_path');
|
$gameImagePath = Util::getReq('game_image_path');
|
||||||
|
$imageRequestKey = Util::getReq('image_request_key');
|
||||||
|
|
||||||
|
$kakaoRESTKey = Util::getReq('kakao_rest_key', 'string', '');
|
||||||
|
$kakaoAdminKey = Util::getReq('kakao_admin_key', 'string', '');
|
||||||
|
|
||||||
|
|
||||||
if (!$host || !$port || !$username || !$password || !$dbName || !$servHost || !$sharedIconPath || !$gameImagePath) {
|
if (!$host || !$port || !$username || !$password || !$dbName || !$servHost || !$sharedIconPath || !$gameImagePath) {
|
||||||
Json::die([
|
Json::die([
|
||||||
@@ -186,6 +191,8 @@ $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',
|
||||||
@@ -193,11 +200,17 @@ $result = Util::generateFileUsingSimpleTemplate(
|
|||||||
[
|
[
|
||||||
'serverBasePath'=>$servHost,
|
'serverBasePath'=>$servHost,
|
||||||
'sharedIconPath'=>$sharedIconPath,
|
'sharedIconPath'=>$sharedIconPath,
|
||||||
'gameImagePath'=>$gameImagePath
|
'gameImagePath'=>$gameImagePath,
|
||||||
|
'imageRequestPath'=>$imageRequestPath,
|
||||||
|
'imageRequestKey'=>$imageRequestKey
|
||||||
],
|
],
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if($imageRequestKey){
|
||||||
|
@file_get_contents($imageKeyInstallPath.'?key='.$imageRequestKey);
|
||||||
|
}
|
||||||
|
|
||||||
if ($result !== true) {
|
if ($result !== true) {
|
||||||
Json::die([
|
Json::die([
|
||||||
'result'=>false,
|
'result'=>false,
|
||||||
@@ -216,6 +229,13 @@ $result = Util::generateFileUsingSimpleTemplate(
|
|||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$result = Util::generateFileUsingSimpleTemplate(
|
||||||
|
__dir__.'/templates/menu.orig.json',
|
||||||
|
ROOT.'/d_shared/menu.json',
|
||||||
|
[],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
if ($result !== true) {
|
if ($result !== true) {
|
||||||
Json::die([
|
Json::die([
|
||||||
'result'=>false,
|
'result'=>false,
|
||||||
@@ -256,6 +276,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,
|
||||||
@@ -265,5 +298,6 @@ if ($result !== true) {
|
|||||||
|
|
||||||
Json::die([
|
Json::die([
|
||||||
'result'=>true,
|
'result'=>true,
|
||||||
'reason'=>'success'
|
'reason'=>'success',
|
||||||
|
'globalSalt'=>$globalSalt
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -0,0 +1,117 @@
|
|||||||
|
<?php
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
require(__dir__.'/../vendor/autoload.php');
|
||||||
|
|
||||||
|
$session = Session::requireLogin([])->setReadOnly();
|
||||||
|
if($session->userGrade < 6){
|
||||||
|
Json::die([
|
||||||
|
'result'=>false,
|
||||||
|
'reason'=>'관리자 아님'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$servHost = Util::getReq('serv_host');
|
||||||
|
$sharedIconPath = Util::getReq('shared_icon_path');
|
||||||
|
$gameImagePath = Util::getReq('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
|
||||||
|
]);
|
||||||
|
}
|
||||||
@@ -20,14 +20,19 @@ ENGINE=InnoDB 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',
|
||||||
`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',
|
||||||
|
`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,
|
||||||
@@ -53,4 +58,18 @@ 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=MyISAM DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
###################
|
||||||
|
# KV storage
|
||||||
|
###################
|
||||||
|
CREATE TABLE if not exists `storage` (
|
||||||
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`namespace` VARCHAR(40) NOT NULL,
|
||||||
|
`key` VARCHAR(40) NOT NULL,
|
||||||
|
`value` TEXT NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE INDEX `key` (`namespace`, `key`)
|
||||||
|
)
|
||||||
|
COLLATE='utf8mb4_general_ci'
|
||||||
|
ENGINE=MyISAM
|
||||||
@@ -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
|
||||||
|
);
|
||||||
@@ -29,6 +29,10 @@ class RootDB
|
|||||||
if (self::$uDB === null) {
|
if (self::$uDB === null) {
|
||||||
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->throw_exception_on_error = true;
|
||||||
|
self::$uDB->throw_exception_on_nonsql_error = true;
|
||||||
}
|
}
|
||||||
return self::$uDB;
|
return self::$uDB;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,22 +10,37 @@ 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_';
|
||||||
|
|
||||||
public static function getSharedIconPath() : string
|
public static function getSharedIconPath(string $filepath='') : string
|
||||||
{
|
{
|
||||||
|
if($filepath){
|
||||||
|
return static::$sharedIconPath."/{$filepath}";
|
||||||
|
}
|
||||||
return static::$sharedIconPath;
|
return static::$sharedIconPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getUserIconPath() : string
|
public static function getUserIconPath(string $filepath='') : string
|
||||||
{
|
{
|
||||||
return AppConf::getUserIconPathWeb();
|
return AppConf::getUserIconPathWeb($filepath);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getGameImagePath() : string
|
public static function getGameImagePath(string $filepath='') : string
|
||||||
{
|
{
|
||||||
|
if($filepath){
|
||||||
|
return static::$gameImagePath."/{$filepath}";
|
||||||
|
}
|
||||||
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}";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 서버 주소 반환. 서버의 경로가 하부 디렉토리인 경우에 하부 디렉토리까지 포함
|
* 서버 주소 반환. 서버의 경로가 하부 디렉토리인 경우에 하부 디렉토리까지 포함
|
||||||
|
|||||||
@@ -41,18 +41,106 @@
|
|||||||
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_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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[
|
||||||
|
["/bbs/board", "삼모게시판", "_blank"],
|
||||||
|
["/bbs/tip", "팁/강좌", "_blank"],
|
||||||
|
["/bbs/news", "삼국 일보", "_blank"],
|
||||||
|
["/bbs/history2", "개인 열전", "_blank"],
|
||||||
|
["/bbs/history3", "국가 열전", "_blank"],
|
||||||
|
["/bbs/patch", "패치 내역", "_blank"]
|
||||||
|
]
|
||||||
@@ -5,15 +5,17 @@ include "lib.php";
|
|||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
if($session->userGrade < 5) {
|
if($session->userGrade < 4) {
|
||||||
?><!DOCTYPE html>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>관리메뉴</title>
|
<title>관리메뉴</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
관리자가 아닙니다.<br>
|
관리자가 아닙니다.<br>
|
||||||
@@ -25,11 +27,10 @@ if($session->userGrade < 5) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
$connect=$db->get();
|
||||||
|
|
||||||
$query = "select turntime,tnmt_time from game";
|
[$turntime, $tnmt_time] = $gameStor->getValuesAsArray(['turntime','tnmt_time']);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$admin = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$query = "select plock from plock";
|
$query = "select plock from plock";
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
@@ -38,15 +39,17 @@ $plock = MYDB_fetch_array($result);
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>삼국지 모의전투 PHP (유기체서버)</title>
|
<title>삼국지 모의전투 HiDCHe</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.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='분지연'> 최종갱신 : <?=$admin['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='토너분지연'> 토너먼트 : <?=$admin['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['plock']>0?"동결중":"가동중"?><br>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ include "func.php";
|
|||||||
|
|
||||||
|
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
if($session->userGrade < 5){
|
if($session->userGrade < 4){
|
||||||
//echo "<script>location.replace('_119.php');</script>";
|
header('location:_119.php');
|
||||||
echo '_119.php';//TODO:debug all and replace
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
$v = new Validator($_POST);
|
$v = new Validator($_POST);
|
||||||
@@ -20,36 +20,58 @@ if(!$v->validate()){
|
|||||||
Error($v->errorStr());
|
Error($v->errorStr());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$btn = Util::getReq('btn');
|
||||||
$minute = Util::getReq('minute', 'int');
|
$minute = Util::getReq('minute', 'int');
|
||||||
$minute2 = Util::getReq('minute2', 'int');
|
$minute2 = Util::getReq('minute2', 'int');
|
||||||
|
|
||||||
$db = DB::db();
|
extractMissingPostToGlobals();
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
|
$db = DB::db();
|
||||||
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
switch($btn) {
|
switch($btn) {
|
||||||
case "분당김":
|
case "분당김":
|
||||||
$query = "update game set turntime=DATE_SUB(turntime, INTERVAL $minute MINUTE),starttime=DATE_SUB(starttime, INTERVAL $minute MINUTE),tnmt_time=DATE_SUB(tnmt_time, INTERVAL $minute MINUTE)";
|
$gameStor->cacheValues(['turntime', 'starttime', 'tnmt_time']);
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$turntime = (new \DateTimeImmutable($gameStor->turntime))->sub(new \DateInterval("PT{$minute}M"));
|
||||||
$query = "update general set turntime=DATE_SUB(turntime, INTERVAL $minute MINUTE)";
|
$starttime = (new \DateTimeImmutable($gameStor->starttime))->sub(new \DateInterval("PT{$minute}M"));
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$tnmt_time = (new \DateTimeImmutable($gameStor->tnmt_time))->sub(new \DateInterval("PT{$minute}M"));
|
||||||
$query = "update auction set expire=DATE_SUB(expire, INTERVAL $minute MINUTE)";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$gameStor->turntime = $turntime->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');
|
||||||
|
|
||||||
|
$db->update('general', [
|
||||||
|
'turntime'=>$db->sqleval('DATE_SUB(turntime, INTERVAL %i MINUTE)', $minute)
|
||||||
|
], true);
|
||||||
|
$db->update('auction', [
|
||||||
|
'expire'=>$db->sqleval('DATE_SUB(expire, INTERVAL %i MINUTE)', $minute)
|
||||||
|
], true);
|
||||||
break;
|
break;
|
||||||
case "분지연":
|
case "분지연":
|
||||||
$query = "update game set turntime=DATE_ADD(turntime, INTERVAL $minute MINUTE),starttime=DATE_ADD(starttime, INTERVAL $minute MINUTE),tnmt_time=DATE_ADD(tnmt_time, INTERVAL $minute MINUTE)";
|
$gameStor->cacheValues(['turntime', 'starttime', 'tnmt_time']);
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$turntime = (new \DateTimeImmutable($gameStor->turntime))->add(new \DateInterval("PT{$minute}M"));
|
||||||
$query = "update general set turntime=DATE_ADD(turntime, INTERVAL $minute MINUTE)";
|
$starttime = (new \DateTimeImmutable($gameStor->starttime))->add(new \DateInterval("PT{$minute}M"));
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$tnmt_time = (new \DateTimeImmutable($gameStor->tnmt_time))->add(new \DateInterval("PT{$minute}M"));
|
||||||
$query = "update auction set expire=DATE_ADD(expire, INTERVAL $minute MINUTE)";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$gameStor->turntime = $turntime->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');
|
||||||
|
|
||||||
|
$db->update('general', [
|
||||||
|
'turntime'=>$db->sqleval('DATE_ADD(turntime, INTERVAL %i MINUTE)', $minute)
|
||||||
|
], true);
|
||||||
|
$db->update('auction', [
|
||||||
|
'expire'=>$db->sqleval('DATE_ADD(expire, INTERVAL %i MINUTE)', $minute)
|
||||||
|
], true);
|
||||||
break;
|
break;
|
||||||
case "토너분당김":
|
case "토너분당김":
|
||||||
$query = "update game set tnmt_time=DATE_SUB(tnmt_time, INTERVAL $minute2 MINUTE)";
|
$tnmt_time = new \DateTime($gameStor->tnmt_time);
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$tnmt_time->sub(new \DateInterval("PT{$minute2}M"));
|
||||||
|
$gameStor->tnmt_time = $tnmt_time->format('Y-m-d H:i:s');
|
||||||
break;
|
break;
|
||||||
case "토너분지연":
|
case "토너분지연":
|
||||||
$query = "update game set tnmt_time=DATE_ADD(tnmt_time, INTERVAL $minute2 MINUTE)";
|
$tnmt_time = new \DateTimeImmutable($gameStor->tnmt_time);
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$tnmt_time->add(new \DateInterval("PT{$minute2}M"));
|
||||||
|
$gameStor->tnmt_time = $tnmt_time->format('Y-m-d H:i:s');
|
||||||
break;
|
break;
|
||||||
case "금지급":
|
case "금지급":
|
||||||
processGoldIncome();
|
processGoldIncome();
|
||||||
@@ -58,15 +80,11 @@ case "쌀지급":
|
|||||||
processRiceIncome();
|
processRiceIncome();
|
||||||
break;
|
break;
|
||||||
case "락걸기":
|
case "락걸기":
|
||||||
$query = "update plock set plock=1";
|
$db->update('plock', ['plock'=>1], true);
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
break;
|
break;
|
||||||
case "락풀기":
|
case "락풀기":
|
||||||
$query = "update plock set plock=0";
|
$db->update('plock', ['plock'=>0], true);
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//echo "<script>location.replace('_119.php');</script>";
|
header('Location:_119.php', true, 303);
|
||||||
//echo '_119.php';//TODO:debug all and replace
|
|
||||||
header('Location:_119.php');
|
|
||||||
@@ -7,22 +7,23 @@ include "func.php";
|
|||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if($session->userGrade < 5) {
|
if($session->userGrade < 5) {
|
||||||
echo "<!DOCTYPE html>
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>관리메뉴</title>
|
<title>관리메뉴</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
관리자가 아닙니다.<br>
|
관리자가 아닙니다.<br>
|
||||||
";
|
<?=banner()?>
|
||||||
echo banner();
|
|
||||||
echo "
|
|
||||||
</body>
|
</body>
|
||||||
</html>";
|
</html>
|
||||||
|
<?php
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,16 +36,18 @@ $admin = getAdmin();
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>게임관리</title>
|
<title>게임관리</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=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=_admin1_submit.php>
|
<form name=form1 method=post action=_admin1_submit.php>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class="tb_layout bg0">
|
||||||
<tr><td width=110 align=right>운영자메세지</td>
|
<tr><td width=110 align=right>운영자메세지</td>
|
||||||
<td colspan=3><input type=textarea size=90 style=color:white;background-color:black; name=msg value='<?=$admin['msg']?>'><input type=submit name=btn value=변경></td></td>
|
<td colspan=3><input type=textarea size=90 style=color:white;background-color:black; name=msg value='<?=$admin['msg']?>'><input type=submit name=btn value=변경></td></td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -81,7 +84,7 @@ $admin = getAdmin();
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr><td><?=backButton()?></td></tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<tr><td><?=banner()?> </td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ include "func.php";
|
|||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if ($session->userGrade < 5) {
|
if ($session->userGrade < 5) {
|
||||||
//echo "<script>location.replace('_admin1.php');</script>";
|
header('location:_admin1.php');
|
||||||
echo '_admin1.php';//TODO:debug all and replace
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
$v = new Validator($_POST);
|
$v = new Validator($_POST);
|
||||||
@@ -17,27 +17,30 @@ $v->rule('integer', [
|
|||||||
'minutes2'
|
'minutes2'
|
||||||
])->rule('dateFormat', [
|
])->rule('dateFormat', [
|
||||||
'starttime'
|
'starttime'
|
||||||
]);
|
], 'Y-m-d H:i:s');
|
||||||
if (!$v->validate()) {
|
if (!$v->validate()) {
|
||||||
Error($v->errorStr());
|
Error($v->errorStr());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$msg = Util::getReq('msg');
|
||||||
|
$btn = Util::getReq('btn');
|
||||||
$log = Util::getReq('log');
|
$log = Util::getReq('log');
|
||||||
$starttime = Util::getReq('starttime', 'string', (new \DateTime())->format('Y-m-d H:i:s'));
|
$starttime = Util::getReq('starttime', 'string', (new \DateTime())->format('Y-m-d H:i:s'));
|
||||||
$maxgeneral = Util::getReq('maxgeneral', 'int', GameConst::$defaultMaxGeneral);
|
$maxgeneral = Util::getReq('maxgeneral', 'int', GameConst::$defaultMaxGeneral);
|
||||||
$maxnation = Util::getReq('maxnation', 'int', GameConst::$defaultMaxNation);
|
$maxnation = Util::getReq('maxnation', 'int', GameConst::$defaultMaxNation);
|
||||||
$startyear = Util::getReq('startyear', 'int', GameConst::$defaultStartYear);
|
$startyear = Util::getReq('startyear', 'int', GameConst::$defaultStartYear);
|
||||||
|
|
||||||
|
extractMissingPostToGlobals();
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
$connect=$db->get();
|
||||||
|
|
||||||
$admin = getAdmin();
|
$admin = getAdmin();
|
||||||
|
|
||||||
switch ($btn) {
|
switch ($btn) {
|
||||||
case "변경":
|
case "변경":
|
||||||
$msg = addslashes(SQ2DQ($msg));
|
$gameStor->msg = $msg;
|
||||||
$query = "update game set msg='$msg'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
break;
|
break;
|
||||||
case "로그쓰기":
|
case "로그쓰기":
|
||||||
$lognum = $admin['historyindex'] + 1;
|
$lognum = $admin['historyindex'] + 1;
|
||||||
@@ -47,20 +50,16 @@ switch ($btn) {
|
|||||||
pushWorldHistory(["<R>★</><S>{$log}</>"]);
|
pushWorldHistory(["<R>★</><S>{$log}</>"]);
|
||||||
break;
|
break;
|
||||||
case "변경1":
|
case "변경1":
|
||||||
$query = "update game set starttime='$starttime'";
|
$gameStor->starttime = (new \DateTime($starttime))->format('Y-m-d H:i:s');
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
break;
|
break;
|
||||||
case "변경2":
|
case "변경2":
|
||||||
$query = "update game set maxgeneral='$maxgeneral'";
|
$gameStor->maxgeneral = $maxgeneral;
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
break;
|
break;
|
||||||
case "변경3":
|
case "변경3":
|
||||||
$query = "update game set maxnation='$maxnation'";
|
$gameStor->maxnation = $maxnation;
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
break;
|
break;
|
||||||
case "변경4":
|
case "변경4":
|
||||||
$query = "update game set startyear='$startyear'";
|
$gameStor->startyear = $startyear;
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
break;
|
break;
|
||||||
case "1분턴":
|
case "1분턴":
|
||||||
case "2분턴":
|
case "2분턴":
|
||||||
@@ -84,8 +83,8 @@ switch ($btn) {
|
|||||||
$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 = date("Y-m-d H:i:s", strtotime($admin['turntime']) - $turn * $unit);
|
||||||
$starttime = cutTurn($starttime, $turnterm);
|
$starttime = cutTurn($starttime, $turnterm);
|
||||||
$query = "update game set turnterm='$turnterm',starttime='$starttime'";
|
$gameStor->turnterm = $turnterm;
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
$gameStor->starttime = $starttime;
|
||||||
// 턴시간이 길어지는 경우 랜덤턴 배정
|
// 턴시간이 길어지는 경우 랜덤턴 배정
|
||||||
if ($turnterm < $admin['turnterm']) {
|
if ($turnterm < $admin['turnterm']) {
|
||||||
$query = "select no from general";
|
$query = "select no from general";
|
||||||
@@ -117,5 +116,4 @@ switch ($btn) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//echo "<script>location.replace('_admin1.php');</script>";
|
header('location:_admin1.php');
|
||||||
echo '_admin1.php';//TODO:debug all and replace
|
|
||||||
@@ -7,66 +7,61 @@ include "func.php";
|
|||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if($session->userGrade < 5) {
|
if($session->userGrade < 5) {
|
||||||
echo "<!DOCTYPE html>
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>관리메뉴</title>
|
<title>관리메뉴</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
관리자가 아닙니다.<br>
|
관리자가 아닙니다.<br>
|
||||||
";
|
<?=banner()?>
|
||||||
echo banner();
|
|
||||||
echo "
|
|
||||||
</body>
|
</body>
|
||||||
</html>";
|
</html>
|
||||||
|
<?php
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
$query = "select conlimit from game limit 1";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$admin = MYDB_fetch_array($result);
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>회원관리</title>
|
<title>회원관리</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=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 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=80 align=center>접속제한</td>
|
<td width=80 align=center>접속제한</td>
|
||||||
<td width=713 align=center><input type=submit name=btn value='전체 접속허용'><input type=submit name=btn value='전체 접속제한'></td>
|
<td width=713 align=center><input type=submit name=btn value='전체 접속허용'><input type=submit name=btn value='전체 접속제한'></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=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:13px'>";
|
||||||
|
$generalList = $db->query('SELECT `no`, `name`, npc, `block` FROM general ORDER BY npc, binary(`name`)');
|
||||||
|
|
||||||
$query = "select no,name,npc,block from general order by npc,binary(name)";
|
foreach($generalList as $general){
|
||||||
$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);
|
|
||||||
$style = "style=;";
|
$style = "style=;";
|
||||||
if($general['block'] > 0) { $style .= "background-color:red;"; }
|
if($general['block'] > 0) { $style .= "background-color:red;"; }
|
||||||
if($general['npc'] >= 2) { $style .= "color:cyan;"; }
|
if($general['npc'] >= 2) { $style .= "color:cyan;"; }
|
||||||
@@ -81,7 +76,7 @@ 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=weap size=1 style='color:white;background-color:black;font-size:13px'>";
|
||||||
for($i=0; $i < 27; $i++) {
|
for($i=0; $i < 27; $i++) {
|
||||||
echo "
|
echo "
|
||||||
<option value={$i}>{$i}</option>";
|
<option value={$i}>{$i}</option>";
|
||||||
@@ -131,7 +126,7 @@ for($i=0; $i < 27; $i++) {
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr><td><?=backButton()?></td></tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<tr><td><?=banner()?> </td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -4,11 +4,15 @@ namespace sammo;
|
|||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
|
$btn = Util::getReq('btn');
|
||||||
$weap = Util::getReq('weap', 'int');
|
$weap = Util::getReq('weap', 'int');
|
||||||
|
$genlist = Util::getReq('genlist', 'array_int');
|
||||||
|
$msg = Util::getReq('msg', 'string');
|
||||||
|
|
||||||
|
extractMissingPostToGlobals();
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireLogin()->loginGame();
|
$session = Session::requireLogin()->loginGame()->setReadOnly();
|
||||||
|
|
||||||
if($session->userGrade < 5) {
|
if($session->userGrade < 5) {
|
||||||
header('location:_admin2.php');
|
header('location:_admin2.php');
|
||||||
@@ -17,292 +21,334 @@ if($session->userGrade < 5) {
|
|||||||
$generalID = $session->generalID;
|
$generalID = $session->generalID;
|
||||||
if(!$generalID){
|
if(!$generalID){
|
||||||
header('location:_admin2.php');
|
header('location:_admin2.php');
|
||||||
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
$connect=$db->get();
|
||||||
|
|
||||||
|
$src = MessageTarget::buildQuick($session->generalID);
|
||||||
|
|
||||||
switch($btn) {
|
switch($btn) {
|
||||||
case "전체 접속허용":
|
case "전체 접속허용":
|
||||||
$query = "update general set con=0";
|
$db->update('general', [
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
'con'=>0
|
||||||
|
], true);
|
||||||
break;
|
break;
|
||||||
case "전체 접속제한":
|
case "전체 접속제한":
|
||||||
$query = "update general set con=1000";
|
$db->update('general', [
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
'con'=>1000
|
||||||
|
], true);
|
||||||
break;
|
break;
|
||||||
case "블럭 해제":
|
case "블럭 해제":
|
||||||
|
$db->update('general', [
|
||||||
|
'block'=>0
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
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 = date('Y-m-d H:i:s');
|
||||||
$db = DB::db();
|
$db->update('general', [
|
||||||
$db->query('update general set block=1,killturn=24 where no IN %li',$genlist);
|
'block'=>1,
|
||||||
//FIXME: subquery로 하는게 더 빠를 듯.
|
'killturn'=>24
|
||||||
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
|
], '`no` IN %li', $genlist);
|
||||||
RootDB::db()->query('update MEMBER set block_num=block_num+1,block_date=%s where no IN %ls', $date, $uid);
|
$uid = $db->queryFirstColumn('SELECT `owner` FROM general WHERE `no` IN %li', $genlist);
|
||||||
|
RootDB::db()->update('member',[
|
||||||
|
'block_num'=>$db->sqleval('block_num+1'),
|
||||||
|
'block_date'=>$date
|
||||||
|
], 'id IN %li', $uid);
|
||||||
break;
|
break;
|
||||||
case "2단계 블럭":
|
case "2단계 블럭":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = date('Y-m-d H:i:s');
|
||||||
$db = DB::db();
|
$db->update('general', [
|
||||||
$db->query('update general set gold=0,rice=0,block=2,killturn=24 where no IN %li',$genlist);
|
'gold'=>0,
|
||||||
|
'rice'=>0,
|
||||||
|
'block'=>2,
|
||||||
|
'killturn'=>24
|
||||||
|
], '`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()->update('member',[
|
||||||
|
'block_num'=>$db->sqleval('block_num+1'),
|
||||||
|
'block_date'=>$date
|
||||||
|
], 'id IN %li', $uid);
|
||||||
break;
|
break;
|
||||||
case "3단계 블럭":
|
case "3단계 블럭":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = date('Y-m-d H:i:s');
|
||||||
$db = DB::db();
|
$db->update('general', [
|
||||||
$db->query('update general set gold=0,rice=0,block=3,killturn=24 where no IN %li',$genlist);
|
'gold'=>0,
|
||||||
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
|
'rice'=>0,
|
||||||
RootDB::db()->query('update MEMBER set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
|
'block'=>3,
|
||||||
|
'killturn'=>24
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
|
$uid = $db->queryFirstColumn('SELECT `owner` from general where no IN %li', $genlist);
|
||||||
|
RootDB::db()->update('member',[
|
||||||
|
'block_num'=>$db->sqleval('block_num+1'),
|
||||||
|
'block_date'=>$date
|
||||||
|
], 'id IN %li', $uid);
|
||||||
break;
|
break;
|
||||||
case "무한삭턴":
|
case "무한삭턴":
|
||||||
DB::db()->query('update general set killturn=8000 where no IN %li',$genlist);
|
$db->update('general', [
|
||||||
|
'killturn'=>8000
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "강제 사망":
|
case "강제 사망":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = date('Y-m-d H:i:s');
|
||||||
DB::db()->query('update general set turn0=0,killturn=0,turntime=%s where no IN %li',$date, $genlist);
|
$db->update('general', [
|
||||||
|
'turn0'=>EncodeCommand(0, 0, 0, 0),
|
||||||
|
'killturn'=>0,
|
||||||
|
'turntime'=>$date,
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "특기 부여":
|
case "특기 부여":
|
||||||
$admin = DB::db()->queryFirstRow('select `year`, `month` from `game` where `no`=1');
|
[$year, $month] = $gameStor->getValuesAsArray(['year', 'month']);
|
||||||
|
$text = "특기 부여!";
|
||||||
|
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
foreach($db->query("SELECT `no`,leader,power,intel,dex0,dex10,dex20,dex30,dex40 FROM general WHERE `no` IN %li", $genlist) as $general){
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($general['no']), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
$msg = "특기 부여!";
|
$msg->send(true);
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
|
||||||
}
|
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
|
||||||
$query = "select no,leader,power,intel from general where no='$genlist[$i]'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$general = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$special2 = getSpecial2($general['leader'], $general['power'], $general['intel']);
|
$specialWar = SpecialityConst::pickSpecialWar($general);
|
||||||
|
$db->update('general', [
|
||||||
$query = "update general set specage2=age,special2='$special2' where no='{$general['no']}'";
|
'specage2'=>$db->sqleval('age'),
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
'special2'=>$specialWar
|
||||||
|
], 'no=%i', $general['no']);
|
||||||
$log[0] = "<C>●</>특기 【<b><L>".getGenSpecial($special2)."</></b>】(을)를 익혔습니다!";
|
$specialWarName = SpecialityConst::WAR[$specialWar][0];
|
||||||
pushGeneralHistory($general, "<C>●</>{$admin['year']}년 {$admin['month']}월:특기 【<b><C>".getGenSpecial($special2)."</></b>】(을)를 습득");
|
$josaUl = JosaUtil::pick($specialWarName, '을');
|
||||||
pushGenLog($general, $log);
|
pushGeneralHistory($general, "<C>●</>{$year}년 {$month}월:특기 【<b><C>{$specialWarName}</></b>】{$josaUl} 습득");
|
||||||
|
pushGenLog($general, ["<C>●</>특기 【<b><L>{$specialWarName}</></b>】{$josaUl} 익혔습니다!"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "경험치1000":
|
case "경험치1000":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$text = $btn." 지급!";
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
foreach($genlist as $generalID){
|
||||||
$msg = $btn." 지급!";
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
$msg->send(true);
|
||||||
}
|
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
|
||||||
$query = "update general set experience=experience+1000 where no='$genlist[$i]'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
}
|
}
|
||||||
|
$db->update('general',[
|
||||||
|
'experience'=>$db->sqleval('experience+1000')
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "공헌치1000":
|
case "공헌치1000":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$text = $btn." 지급!";
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
foreach($genlist as $generalID){
|
||||||
$msg = $btn." 지급!";
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
$msg->send(true);
|
||||||
}
|
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
|
||||||
$query = "update general set dedication=dedication+1000 where no='$genlist[$i]'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
}
|
}
|
||||||
|
$db->update('general',[
|
||||||
|
'dedication'=>$db->sqleval('dedication+1000')
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "보숙10000":
|
case "보숙10000":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$text = "보병숙련도+10000 지급!";
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
foreach($genlist as $generalID){
|
||||||
$msg = "보병숙련도+10000 지급!";
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
$msg->send(true);
|
||||||
}
|
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
|
||||||
$query = "update general set dex0=dex0+10000 where no='$genlist[$i]'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
}
|
}
|
||||||
|
$db->update('general',[
|
||||||
|
'dex0'=>$db->sqleval('dex0+10000')
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "궁숙10000":
|
case "궁숙10000":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$text = "궁병숙련도+10000 지급!";
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
foreach($genlist as $generalID){
|
||||||
$msg = "궁병숙련도+10000 지급!";
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
$msg->send(true);
|
||||||
}
|
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
|
||||||
$query = "update general set dex10=dex10+10000 where no='$genlist[$i]'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
}
|
}
|
||||||
|
$db->update('general',[
|
||||||
|
'dex10'=>$db->sqleval('dex10+10000')
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "기숙10000":
|
case "기숙10000":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$src = MessageTarget::buildQuick($session->generalID);
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
$text = "기병숙련도+10000 지급!";
|
||||||
$msg = "기병숙련도+10000 지급!";
|
foreach($genlist as $generalID){
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
}
|
$msg->send(true);
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
|
||||||
$query = "update general set dex20=dex20+10000 where no='$genlist[$i]'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
}
|
}
|
||||||
|
$db->update('general',[
|
||||||
|
'dex20'=>$db->sqleval('dex20+10000')
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "귀숙10000":
|
case "귀숙10000":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$src = MessageTarget::buildQuick($session->generalID);
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
$text = "귀병숙련도+10000 지급!";
|
||||||
$msg = "귀병숙련도+10000 지급!";
|
foreach($genlist as $generalID){
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
}
|
$msg->send(true);
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
|
||||||
$query = "update general set dex30=dex30+10000 where no='$genlist[$i]'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
}
|
}
|
||||||
|
$db->update('general',[
|
||||||
|
'dex30'=>$db->sqleval('dex30+10000')
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "차숙10000":
|
case "차숙10000":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$src = MessageTarget::buildQuick($session->generalID);
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
$text = "차병숙련도+10000 지급!";
|
||||||
$msg = "차병숙련도+10000 지급!";
|
foreach($genlist as $generalID){
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
}
|
$msg->send(true);
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
|
||||||
$query = "update general set dex40=dex40+10000 where no='$genlist[$i]'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
}
|
}
|
||||||
|
$db->update('general',[
|
||||||
|
'dex40'=>$db->sqleval('dex40+10000')
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "접속 허용":
|
case "접속 허용":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$db->update('general',[
|
||||||
$query = "update general set con=0 where no='$genlist[$i]'";
|
'con'=>0
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
], '`no` IN %li', $genlist);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "접속 제한":
|
case "접속 제한":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$db->update('general',[
|
||||||
$query = "update general set con=1000 where no='$genlist[$i]'";
|
'con'=>1000
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
], '`no` IN %li', $genlist);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "메세지 전달":
|
case "메세지 전달":
|
||||||
//TODO:새 갠메 시스템으로 변경
|
$text = $msg;
|
||||||
$date = date('Y-m-d H:i:s');
|
foreach($genlist as $generalID){
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
$msg->send(true);
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "무기지급":
|
case "무기지급":
|
||||||
$date = date('Y-m-d H:i:s');
|
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
if($weap == 0) {
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
$text = "무기 회수!";
|
||||||
if($weap == 0) { $msg = "무기 회수!"; }
|
|
||||||
else { $msg = getWeapName($weap)." 지급!"; }
|
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
|
||||||
}
|
}
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
else {
|
||||||
if($weap == 0) {
|
$text = getWeapName($weap)." 지급!";
|
||||||
$query = "update general set weap='0' where no='$genlist[$i]'";
|
}
|
||||||
} else {
|
|
||||||
$query = "update general set weap='$weap' where no='$genlist[$i]' and weap<'$weap'";
|
foreach($genlist as $generalID){
|
||||||
}
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$msg->send(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($weap == 0){
|
||||||
|
$db->update('general', [
|
||||||
|
'weap'=>0
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$db->update('general', [
|
||||||
|
'weap'=>$weap
|
||||||
|
], '`no` IN %li AND weap < %i', $genlist, $weap);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "책지급":
|
case "책지급":
|
||||||
$date = date('Y-m-d H:i:s');
|
if($weap == 0) {
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$text = "책 회수!";
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
|
||||||
if($weap == 0) { $msg = "서적 회수!"; }
|
|
||||||
else { $msg = getBookName($weap)." 지급!"; }
|
|
||||||
// 상대에게 발송
|
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
|
||||||
}
|
}
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
else {
|
||||||
if($weap == 0) {
|
$text = getBookName($weap)." 지급!";
|
||||||
$query = "update general set book='0' where no='$genlist[$i]'";
|
}
|
||||||
} else {
|
|
||||||
$query = "update general set book='$weap' where no='$genlist[$i]' and book<'$weap'";
|
foreach($genlist as $generalID){
|
||||||
}
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$msg->send(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($weap == 0){
|
||||||
|
$db->update('general', [
|
||||||
|
'book'=>0
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$db->update('general', [
|
||||||
|
'book'=>$weap
|
||||||
|
], '`no` IN %li AND book < %i', $genlist, $weap);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "말지급":
|
case "말지급":
|
||||||
$date = date('Y-m-d H:i:s');
|
if($weap == 0) {
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$text = "말 회수!";
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
|
||||||
if($weap == 0) { $msg = "말 회수!"; }
|
|
||||||
else { $msg = getHorseName($weap)." 지급!"; }
|
|
||||||
// 상대에게 발송
|
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
|
||||||
}
|
}
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
else {
|
||||||
if($weap == 0) {
|
$text = getHorseName($weap)." 지급!";
|
||||||
$query = "update general set horse='0' where no='$genlist[$i]'";
|
}
|
||||||
} else {
|
|
||||||
$query = "update general set horse='$weap' where no='$genlist[$i]' and horse<'$weap'";
|
foreach($genlist as $generalID){
|
||||||
}
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$msg->send(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($weap == 0){
|
||||||
|
$db->update('general', [
|
||||||
|
'horse'=>0
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$db->update('general', [
|
||||||
|
'horse'=>$weap
|
||||||
|
], '`no` IN %li AND horse < %i', $genlist, $weap);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "도구지급":
|
case "도구지급":
|
||||||
$date = date('Y-m-d H:i:s');
|
if($weap == 0) {
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$text = "특수도구 회수!";
|
||||||
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
|
|
||||||
if($weap == 0) { $msg = "특수도구 회수!"; }
|
|
||||||
else { $msg = getItemName($weap)." 지급!"; }
|
|
||||||
// 상대에게 발송
|
|
||||||
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
|
|
||||||
}
|
}
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
else {
|
||||||
if($weap == 0) {
|
$text = getItemName($weap)." 지급!";
|
||||||
$query = "update general set item='0' where no='$genlist[$i]'";
|
}
|
||||||
} else {
|
|
||||||
$query = "update general set item='$weap' where no='$genlist[$i]' and item<'$weap'";
|
foreach($genlist as $generalID){
|
||||||
}
|
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$msg->send(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($weap == 0){
|
||||||
|
$db->update('general', [
|
||||||
|
'item'=>0
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$db->update('general', [
|
||||||
|
'item'=>$weap
|
||||||
|
], '`no` IN %li AND item < %i', $genlist, $weap);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "NPC해제":
|
case "NPC해제":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$db->update('general', [
|
||||||
$query = "update general set npc=1 where no='$genlist[$i]'";
|
'npc'=>1
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
], '`no` IN %li', $genlist);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "하야입력":
|
case "하야입력":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$db->update('general', [
|
||||||
$query = "update general set turn0='00000000000045' where no='$genlist[$i]'";
|
'turn0'=>EncodeCommand(0, 0, 0, 45)
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
], '`no` IN %li', $genlist);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "방랑해산":
|
case "방랑해산":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$db->update('general', [
|
||||||
$query = "update general set turn0='00000000000047',turn1='00000000000056' where no='$genlist[$i]'";
|
'turn0'=>EncodeCommand(0, 0, 0, 47),
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
'turn1'=>EncodeCommand(0, 0, 0, 56)
|
||||||
}
|
], '`no` IN %li', $genlist);
|
||||||
break;
|
break;
|
||||||
case "NPC설정":
|
case "NPC설정":
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
$db->update('general', [
|
||||||
$query = "update general set npc=2 where no='$genlist[$i]'";
|
'npc'=>2
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
], '`no` IN %li', $genlist);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "00턴":
|
case "00턴":
|
||||||
$query = "select turnterm from game limit 1";
|
$turnterm = $gameStor->turnterm;
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$admin = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
foreach($genlist as $generalID){
|
||||||
$turntime = getRandTurn($admin['turnterm']);
|
$turntime = getRandTurn($turnterm);
|
||||||
$cutTurn = cutTurn($turntime, $admin['turnterm']);
|
$cutTurn = cutTurn($turntime, $turnterm);
|
||||||
$query = "update general set turntime='$cutTurn' where no='$genlist[$i]'";
|
$db->update('general', [
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
'turntime'=>$curTurn
|
||||||
|
], '`no` IN %li', $genlist);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "랜덤턴":
|
case "랜덤턴":
|
||||||
$query = "select turnterm from game limit 1";
|
foreach($genlist as $generalID){
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$turntime = getRandTurn($turnterm);
|
||||||
$admin = MYDB_fetch_array($result);
|
$db->update('general', [
|
||||||
|
'turntime'=>$turntime
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
], '`no` IN %li', $genlist);
|
||||||
$turntime = getRandTurn($admin['turnterm']);
|
|
||||||
$query = "update general set turntime='$turntime' where no='$genlist[$i]'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//echo "<script>location.replace('_admin2.php');</script>";
|
header('location:_admin2.php');
|
||||||
echo '_admin2.php';//TODO:debug all and replace
|
|
||||||
|
|
||||||
@@ -7,65 +7,62 @@ include "func.php";
|
|||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if($session->userGrade < 5) {
|
if($session->userGrade < 5) {
|
||||||
echo "<!DOCTYPE html>
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>관리메뉴</title>
|
<title>관리메뉴</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
관리자가 아닙니다.<br>
|
관리자가 아닙니다.<br>
|
||||||
";
|
<?=banner()?>
|
||||||
echo banner();
|
|
||||||
echo "
|
|
||||||
</body>
|
</body>
|
||||||
</html>";
|
</html>
|
||||||
|
<?php
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$connect=$db->get();
|
$connect=$db->get();
|
||||||
|
|
||||||
$query = "select conlimit from game limit 1";
|
$conlimit = $gameStor->conlimit;
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$admin = MYDB_fetch_array($result);
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>멀티관리</title>
|
<title>멀티관리</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=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 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=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:13px'>";
|
||||||
|
|
||||||
$query = "select no,name,npc,block from general where ip!='' order by npc,ip";
|
foreach($db->query('SELECT no,name,npc,block,con from general where ip!=\'\' order by npc,ip') as $general){
|
||||||
$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);
|
|
||||||
$style = "style=;";
|
$style = "style=;";
|
||||||
if($general['block'] > 0) { $style .= "background-color:red;"; }
|
if($general['block'] > 0) { $style .= "background-color:red;"; }
|
||||||
if($general['npc'] >= 2) { $style .= "color:cyan;"; }
|
if($general['npc'] >= 2) { $style .= "color:cyan;"; }
|
||||||
elseif($general['npc'] == 1) { $style .= "color:skyblue;"; }
|
elseif($general['npc'] == 1) { $style .= "color:skyblue;"; }
|
||||||
if($general['con'] > $admin['conlimit']) { $style .= "color:red;"; }
|
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>";
|
||||||
@@ -90,7 +87,7 @@ echo "
|
|||||||
<td><input type=textarea size=60 maxlength=255 name=msg style=background-color:black;color:white;><input type=submit name=btn value='메세지 전달'></td>
|
<td><input type=textarea size=60 maxlength=255 name=msg style=background-color:black;color:white;><input type=submit name=btn value='메세지 전달'></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center width=100>장수명</td>
|
<td align=center width=100>장수명</td>
|
||||||
<td align=center width=180>최근로그인</td>
|
<td align=center width=180>최근로그인</td>
|
||||||
@@ -137,7 +134,7 @@ echo "
|
|||||||
//NOTE: password의 md5 해시가 같은지 확인하는 방식으로는 앞으로 잡아낼 수 없다. 폐기
|
//NOTE: password의 md5 해시가 같은지 확인하는 방식으로는 앞으로 잡아낼 수 없다. 폐기
|
||||||
?>
|
?>
|
||||||
</form>
|
</form>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr><td><?=backButton()?></td></tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<tr><td><?=banner()?> </td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -7,12 +7,17 @@ include "func.php";
|
|||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if($session->userGrade < 5) {
|
if($session->userGrade < 5) {
|
||||||
//echo "<script>location.replace('_admin4.php');</script>";
|
header('location:_admin4.php');
|
||||||
echo '_admin4.php';//TODO:debug all and replace
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$btn = Util::getReq('btn');
|
||||||
|
$genlist = Util::getReq('genlist', 'array_int');
|
||||||
|
$msg = Util::getReq('msg','string', '메시지');
|
||||||
|
|
||||||
|
extractMissingPostToGlobals();
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
//NOTE: 왜 기능이 admin2와 admin4가 같이 있는가?
|
//NOTE: 왜 기능이 admin2와 admin4가 같이 있는가?
|
||||||
//NOTE: 왜 블럭 시 admin4에선 금쌀을 없애지 않는가?
|
//NOTE: 왜 블럭 시 admin4에선 금쌀을 없애지 않는가?
|
||||||
@@ -26,37 +31,49 @@ switch($btn) {
|
|||||||
$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로 하는게 더 빠를 듯.
|
||||||
$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 "2단계 블럭":
|
case "2단계 블럭":
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = date('Y-m-d H:i:s');
|
||||||
$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 = date('Y-m-d H:i:s');
|
||||||
$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);
|
||||||
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 "무한삭턴":
|
case "무한삭턴":
|
||||||
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 = date('Y-m-d H:i:s');
|
||||||
DB::db()->query('update general set turn0=0,killturn=0,turntime=%s where no IN %li',$date, $genlist);
|
DB::db()->query('update general set turn0=%s,killturn=0,turntime=%s where no IN %li',EncodeCommand(0, 0, 0, 0),$date, $genlist);
|
||||||
break;
|
break;
|
||||||
case "메세지 전달":
|
case "메세지 전달":
|
||||||
//TODO:새 갠메 시스템으로 변경
|
//TODO:새 갠메 시스템으로 변경
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = date('Y-m-d H:i:s');
|
||||||
|
$src = MessageTarget::buildQuick($session->generalID);
|
||||||
for($i=0; $i < count($genlist); $i++) {
|
for($i=0; $i < count($genlist); $i++) {
|
||||||
|
$msgObj = new Message(
|
||||||
|
Message::MSGTYPE_PRIVATE,
|
||||||
|
$src,
|
||||||
|
MessageTarget::buildQuick($genlist[$i]),
|
||||||
|
$msg,
|
||||||
|
new DateTime(),
|
||||||
|
new \DateTime('9999-12-31'),
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
if($msgObj){
|
||||||
|
$msgObj->send(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//echo "<script>location.replace('_admin4.php');</script>";
|
header('location:_admin4.php');
|
||||||
echo '_admin4.php'; //TODO:debug all and replace
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,57 +7,60 @@ include "func.php";
|
|||||||
$type = Util::getReq('type', 'int', 0);
|
$type = Util::getReq('type', 'int', 0);
|
||||||
$type2 = Util::getReq('type2', 'int', 0);
|
$type2 = Util::getReq('type2', 'int', 0);
|
||||||
|
|
||||||
|
if($type < 0 || $type > 17){
|
||||||
|
$type = 0;
|
||||||
|
}
|
||||||
|
if($type2 < 0 || $type2 > 6){
|
||||||
|
$type2 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
extractMissingPostToGlobals();
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if($session->userGrade < 5) {
|
if($session->userGrade < 5) {
|
||||||
echo "<!DOCTYPE html>
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>관리메뉴</title>
|
<title>관리메뉴</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
관리자가 아닙니다.<br>
|
관리자가 아닙니다.<br>
|
||||||
";
|
<?=banner()?>
|
||||||
echo banner();
|
|
||||||
echo "
|
|
||||||
</body>
|
</body>
|
||||||
</html>";
|
</html>
|
||||||
|
<?php
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
$connect=$db->get();
|
||||||
|
|
||||||
if($type == 0) {
|
|
||||||
$type = 0;
|
|
||||||
}
|
|
||||||
if($type2 == 0) {
|
|
||||||
$type2 = 0;
|
|
||||||
}
|
|
||||||
$sel = [];
|
$sel = [];
|
||||||
$sel2 = [];
|
$sel2 = [];
|
||||||
$sel[$type] = "selected";
|
$sel[$type] = "selected";
|
||||||
$sel2[$type2] = "selected";
|
$sel2[$type2] = "selected";
|
||||||
|
|
||||||
$query = "select conlimit from game limit 1";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$admin = MYDB_fetch_array($result);
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>일제정보</title>
|
<title>일제정보</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>일 제 정 보<br><?=closeButton()?></td></tr>
|
<tr><td>일 제 정 보<br><?=closeButton()?></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
<form name=form1 method=post>정렬순서 :
|
<form name=form1 method=post>정렬순서 :
|
||||||
@@ -112,7 +115,7 @@ for($i=1; $i <= $count; $i++) {
|
|||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table align=center width=1600 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px; id=bg0>
|
<table align=center width=1600 class="tb_layout bg0">
|
||||||
<tr id=bg1>
|
<tr id=bg1>
|
||||||
<td align=center>국명</td>
|
<td align=center>국명</td>
|
||||||
<td align=center>접률</td>
|
<td align=center>접률</td>
|
||||||
@@ -155,7 +158,7 @@ SELECT
|
|||||||
A.chemi,
|
A.chemi,
|
||||||
A.color,
|
A.color,
|
||||||
A.tech,
|
A.tech,
|
||||||
A.tricklimit,
|
A.sabotagelimit,
|
||||||
A.gold,
|
A.gold,
|
||||||
A.rice,
|
A.rice,
|
||||||
COUNT(B.nation) AS gennum,
|
COUNT(B.nation) AS gennum,
|
||||||
@@ -230,7 +233,7 @@ for($i=0; $i < $nationCount; $i++) {
|
|||||||
<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=center> {$nation['tech']} </td>
|
||||||
<td align=center> {$nation['tricklimit']} </td>
|
<td align=center> {$nation['sabotagelimit']} </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=center> {$gen['avgg']} </td>
|
||||||
@@ -259,11 +262,11 @@ for($i=0; $i < $nationCount; $i++) {
|
|||||||
|
|
||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=getTrickLogRecent(20)?></td></tr>
|
<tr><td><?=getSabotageLogRecent(20)?></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table align=center width=1760 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px; id=bg0>
|
<table align=center width=1760 class="tb_layout bg0">
|
||||||
<tr id=bg1>
|
<tr id=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>
|
||||||
@@ -314,7 +317,7 @@ for($i=0; $i < $count; $i++) {
|
|||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr><td><?=closeButton()?></td></tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<tr><td><?=banner()?> </td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -4,15 +4,18 @@ namespace sammo;
|
|||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
|
$btn = Util::getReq('btn');
|
||||||
$nation = Util::getReq('nation', 'int');
|
$nation = Util::getReq('nation', 'int');
|
||||||
|
|
||||||
|
extractMissingPostToGlobals();
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
$userID = Session::getUserID();
|
$userID = Session::getUserID();
|
||||||
|
|
||||||
if($session->userGrade < 5) {
|
if($session->userGrade < 5) {
|
||||||
//echo "<script>location.replace('_admin5.php');</script>";
|
header('location:_admin5.php');
|
||||||
echo '_admin5.php';//TODO:debug all and replace
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
@@ -34,7 +37,6 @@ switch($btn) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//echo "<script>location.replace('_admin5.php');</script>";
|
header('location:_admin5.php');
|
||||||
echo '_admin5.php';//TODO:debug all and replace
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,35 +3,40 @@ namespace sammo;
|
|||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
|
$type = Util::getReq('type', 'int', 0);
|
||||||
|
if($type < 0 || $type > 4){
|
||||||
|
$type = 0;
|
||||||
|
}
|
||||||
|
extractMissingPostToGlobals();
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if($session->userGrade < 5) {
|
if($session->userGrade < 5) {
|
||||||
echo "<!DOCTYPE html>
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>관리메뉴</title>
|
<title>관리메뉴</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
관리자가 아닙니다.<br>
|
관리자가 아닙니다.<br>
|
||||||
";
|
<?=banner()?>
|
||||||
echo banner();
|
|
||||||
echo "
|
|
||||||
</body>
|
</body>
|
||||||
</html>";
|
</html>
|
||||||
|
<?php
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
$connect=$db->get();
|
||||||
|
|
||||||
if($type == 0) {
|
|
||||||
$type = 0;
|
|
||||||
}
|
|
||||||
$sel[$type] = "selected";
|
$sel[$type] = "selected";
|
||||||
|
|
||||||
?>
|
?>
|
||||||
@@ -39,25 +44,27 @@ $sel[$type] = "selected";
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>접속정보</title>
|
<title>접속정보</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>접 속 정 보<br><?=closeButton()?></td></tr>
|
<tr><td>접 속 정 보<br><?=closeButton()?></td></tr>
|
||||||
<tr><td><form name=form1 method=post>정렬순서 :
|
<tr><td><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>
|
||||||
<option <?=$sel[1]?> value=1>총갱신</option>
|
<option <?=$sel[1]??''?> value=1>총갱신</option>
|
||||||
<option <?=$sel[2]?> value=2>갱신/턴</option>
|
<option <?=$sel[2]??''?> value=2>갱신/턴</option>
|
||||||
<option <?=$sel[3]?> value=3>총로그인</option>
|
<option <?=$sel[3]??''?> value=3>총로그인</option>
|
||||||
<option <?=$sel[4]?> value=4>갱신/로그인</option>
|
<option <?=$sel[4]??''?> value=4>갱신/로그인</option>
|
||||||
</select>
|
</select>
|
||||||
<input type=submit value='정렬하기'></form>
|
<input type=submit value='정렬하기'></form>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center class='tb_layout bg0'>
|
||||||
<tr id=bg1>
|
<tr id=bg1>
|
||||||
<td align=center width=120>장수명</td>
|
<td align=center width=120>장수명</td>
|
||||||
<td align=center width=50>접속률</td>
|
<td align=center width=50>접속률</td>
|
||||||
@@ -96,7 +103,7 @@ for($i=0; $i < $gencount; $i++) {
|
|||||||
|
|
||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr><td><?=closeButton()?></td></tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<tr><td><?=banner()?> </td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -3,26 +3,38 @@ namespace sammo;
|
|||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
|
$btn = Util::getReq('btn');
|
||||||
|
$gen = Util::getReq('gen', 'int', 0);
|
||||||
|
$type = Util::getReq('type', 'int', 0);
|
||||||
|
|
||||||
|
if($type < 0 || $type > 3){
|
||||||
|
$type = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
extractMissingPostToGlobals();
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if($session->userGrade < 5) {
|
if($session->userGrade < 5) {
|
||||||
echo "<!DOCTYPE html>
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>관리메뉴</title>
|
<title>관리메뉴</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
관리자가 아닙니다.<br>
|
관리자가 아닙니다.<br>
|
||||||
";
|
<?=banner()?>
|
||||||
echo banner();
|
|
||||||
echo "
|
|
||||||
</body>
|
</body>
|
||||||
</html>";
|
</html>
|
||||||
|
<?php
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,30 +45,29 @@ if($btn == '정렬하기') {
|
|||||||
$gen = 0;
|
$gen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($type == 0) {
|
|
||||||
$type = 0;
|
|
||||||
}
|
|
||||||
$sel[$type] = "selected";
|
$sel[$type] = "selected";
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>로그정보</title>
|
<title>로그정보</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>로 그 정 보<br><?=closeButton()?></td></tr>
|
<tr><td>로 그 정 보<br><?=closeButton()?></td></tr>
|
||||||
<tr><td>
|
<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>
|
||||||
<option <?=$sel[1]?> value=1>최근전투</option>
|
<option <?=$sel[1]??''?> value=1>최근전투</option>
|
||||||
<option <?=$sel[2]?> value=2>장수명</option>
|
<option <?=$sel[2]??''?> value=2>장수명</option>
|
||||||
<option <?=$sel[3]?> value=3>전투수</option>
|
<option <?=$sel[3]??''?> value=3>전투수</option>
|
||||||
</select>
|
</select>
|
||||||
<input type=submit name=btn value='정렬하기'>
|
<input type=submit name=btn value='정렬하기'>
|
||||||
대상장수 :
|
대상장수 :
|
||||||
@@ -91,7 +102,7 @@ for($i=0; $i < $gencount; $i++) {
|
|||||||
</form>
|
</form>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<table width=1000 align=center border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=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 id=bg1><font color=skyblue size=3>장 수 정 보</font></td>
|
||||||
<td width=50% align=center id=bg1><font color=orange size=3>-</font></td>
|
<td width=50% align=center id=bg1><font color=orange size=3>-</font></td>
|
||||||
@@ -128,7 +139,7 @@ for($i=0; $i < $gencount; $i++) {
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr><td><?=closeButton()?></td></tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<tr><td><?=banner()?> </td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -3,26 +3,34 @@ namespace sammo;
|
|||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
|
$btn = Util::getReq('btn');
|
||||||
|
$gen = Util::getReq('gen', 'int', 0);
|
||||||
|
$type = 0;
|
||||||
|
|
||||||
|
extractMissingPostToGlobals();
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
|
|
||||||
if ($session->userGrade < 5) {
|
if ($session->userGrade < 5) {
|
||||||
echo "<!DOCTYPE html>
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>관리메뉴</title>
|
<title>관리메뉴</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
관리자가 아닙니다.<br>
|
관리자가 아닙니다.<br>
|
||||||
";
|
<?=banner()?>
|
||||||
echo banner();
|
|
||||||
echo "
|
|
||||||
</body>
|
</body>
|
||||||
</html>";
|
</html>
|
||||||
|
<?php
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,40 +41,38 @@ if ($btn == '정렬하기') {
|
|||||||
$gen = 0;
|
$gen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($type == 0) {
|
|
||||||
$type = 0;
|
|
||||||
}
|
|
||||||
$sel[$type] = "selected";
|
$sel[$type] = "selected";
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>외교정보</title>
|
<title>외교정보</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>외 교 정 보<br><?=closeButton()?></td></tr>
|
<tr><td>외 교 정 보<br><?=closeButton()?></td></tr>
|
||||||
<tr><td>
|
<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>
|
||||||
</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 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table width=1000 align=center class='tb_layout bg0'>
|
||||||
<tr><td colspan=9 align=center bgcolor=blue>외 교 관 계</td></tr>
|
<tr><td colspan=9 align=center bgcolor=blue>외 교 관 계</td></tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=100 align=center id=bg1>국 가 명</td>
|
<td width=130 align=center id=bg1>국 가 명</td>
|
||||||
<td width=100 align=center id=bg1>국 가 명</td>
|
<td width=130 align=center id=bg1>국 가 명</td>
|
||||||
<td width=80 align=center id=bg1>상 태</td>
|
<td width=80 align=center id=bg1>상 태</td>
|
||||||
<td width=60 align=center id=bg1>기 간</td>
|
<td width=60 align=center id=bg1>기 간</td>
|
||||||
<td align=center id=bg1>비 고</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
@@ -77,9 +83,9 @@ foreach (getAllNationStaticInfo() as $nation) {
|
|||||||
$nationColor[$nation['nation']] = $nation['color'];
|
$nationColor[$nation['nation']] = $nation['color'];
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($type) {
|
|
||||||
case 0: $query = "select * from diplomacy where me < you order by state desc"; break;
|
$query = "select * from diplomacy where me < you order by state desc";
|
||||||
}
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
||||||
$dipcount = MYDB_num_rows($result);
|
$dipcount = MYDB_num_rows($result);
|
||||||
for ($i=0; $i < $dipcount; $i++) {
|
for ($i=0; $i < $dipcount; $i++) {
|
||||||
@@ -88,11 +94,7 @@ for ($i=0; $i < $dipcount; $i++) {
|
|||||||
$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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,37 +110,6 @@ for ($i=0; $i < $dipcount; $i++) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$date = date('Y-m-d H:i:s');
|
$date = date('Y-m-d H:i:s');
|
||||||
$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>
|
||||||
@@ -146,12 +117,11 @@ 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 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr><td><?=closeButton()?></td></tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<tr><td><?=banner()?> </td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<?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 != 0 and age >= %i',
|
||||||
|
GameConst::$retirementYear
|
||||||
|
) as $generalNo){
|
||||||
|
CheckHall($generalNo);
|
||||||
|
}
|
||||||
@@ -1,1657 +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();
|
|
||||||
$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);
|
|
||||||
|
|
||||||
$query = "select * from game limit 1";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$game = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$con = checkLimit($me['con'], $game['conlimit']);
|
|
||||||
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($game, $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) {
|
|
||||||
$msg .= "<C>●</>".GameUnitConst::byID($general['crewtype'])->name."(으)로 성을 <M>공격</>합니다.<br>";
|
|
||||||
|
|
||||||
$mykillnum = 0; $mydeathnum = 0;
|
|
||||||
while($phase < $warphase) {
|
|
||||||
$phase++;
|
|
||||||
$myAtt = getAtt($game, $general, $tech1, 0);
|
|
||||||
$myDef = getDef($game, $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($game, $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($game, 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 {
|
|
||||||
$msg .= "<C>●</>".GameUnitConst::byID($general['crewtype'])->name."(으)로 <Y>수비장수</>의 ".GameUnitConst::byID($oppose['crewtype'])->name."(을)를 공격합니다.<br>";
|
|
||||||
|
|
||||||
$mykillnum = 0; $mydeathnum = 0;
|
|
||||||
while($phase < $warphase) {
|
|
||||||
$phase++;
|
|
||||||
|
|
||||||
$myAtt = getAtt($game, $general, $tech1, 0);
|
|
||||||
$myDef = getDef($game, $general, $tech1);
|
|
||||||
$opAtt = getAtt($game, $oppose, $tech2, 0);
|
|
||||||
$opDef = getDef($game, $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($game, $general['crewtype'], "avd"); //회피율
|
|
||||||
if($ratio < $ratio2 && $myAvoid == 1) {
|
|
||||||
$msg .= "<C>●</><C>회피</>했다!</><br>";
|
|
||||||
$myCrew /= 10; // 10%만 소모
|
|
||||||
$myAvoid = 0;
|
|
||||||
}
|
|
||||||
//회피
|
|
||||||
$ratio = rand() % 100; // 0 ~ 99
|
|
||||||
$ratio2 = getRate($game, $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($game, $general['crewtype'], $tech1));
|
|
||||||
$msg .= "★ 【공격장수】공헌 상승 : $exp 쌀 소비 : {$exp}x5x".getCrewtypeRice($game, $general['crewtype'], $tech1)." = $ricing<br>";
|
|
||||||
// $msg2 .= "★ 【공격장수】공헌 상승 : $exp 쌀 소비 : {$exp}x5x".getCrewtypeRice($game, $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($game, $general['crewtype'], $tech1)." = $ricingSum<br>";
|
|
||||||
} elseif($isgen == "장수평균") {
|
|
||||||
$msg2 .= "{$simulCount}회 평균<br>";
|
|
||||||
$msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnumSum</> vs <C>-$mykillnumSum</> ";
|
|
||||||
$msg2 .= "★ 【공격장수】공헌 상승 : $expSum 쌀 소비 : {$expSum}x5x".getCrewtypeRice($game, $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 = $game['city_rate'];
|
|
||||||
$atmos3 = $game['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 HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
|
||||||
<title>전투시뮬레이션</title>
|
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/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 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=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 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=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($game, $i);
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
|
||||||
|
|
||||||
for($i=10; $i <= 14; $i++) {
|
|
||||||
printSimul($game, $i);
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
|
||||||
|
|
||||||
for($i=20; $i <= 27; $i++) {
|
|
||||||
printSimul($game, $i);
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
|
||||||
|
|
||||||
for($i=30; $i <= 38; $i++) {
|
|
||||||
printSimul($game, $i);
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
|
||||||
|
|
||||||
for($i=40; $i <= 43; $i++) {
|
|
||||||
printSimul($game, $i);
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
</form>
|
|
||||||
</body>
|
|
||||||
<?php PrintElapsedTime(); ?>
|
|
||||||
</html>
|
|
||||||
<?php
|
|
||||||
|
|
||||||
function printSimul($game, $i) {
|
|
||||||
$att = $game["att{$i}"];
|
|
||||||
$def = $game["def{$i}"];
|
|
||||||
$spd = $game["spd{$i}"];
|
|
||||||
$avd = $game["avd{$i}"];
|
|
||||||
$cst = $game["cst{$i}"];
|
|
||||||
$ric = $game["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>";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -3,45 +3,42 @@ namespace sammo;
|
|||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
|
$btn = Util::getReq('btn');
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
$session = Session::requireGameLogin()->setReadOnly();
|
||||||
$userID = Session::getUserID();
|
$userID = Session::getUserID();
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
increaseRefresh("명장일람", 2);
|
increaseRefresh("명장일람", 1);
|
||||||
|
|
||||||
$query = "select conlimit from game limit 1";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$admin = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$query = "select con,turntime from general where owner='{$userID}'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$me = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$con = checkLimit($me['con'], $admin['conlimit']);
|
|
||||||
if ($con >= 2) {
|
|
||||||
printLimitMsg($me['turntime']);
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<title>명장일람</title>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta name="viewport" content="width=1136" />
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<title><?=UniqueConst::$serverName?>: 명장일람</title>
|
||||||
|
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/hallOfFame.css')?>
|
||||||
|
|
||||||
|
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||||
|
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||||
|
<?=WebUtil::printJS('js/common.js')?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=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=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=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='유저 보기'>
|
||||||
@@ -49,293 +46,236 @@ if ($con >= 2) {
|
|||||||
</td></tr>
|
</td></tr>
|
||||||
</form>
|
</form>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<div style="margin:auto;width=1000px;">
|
||||||
<?php
|
<?php
|
||||||
if (isset($btn) && $btn == "NPC 보기") {
|
|
||||||
$sel = "npc>=2";
|
$ownerNameList = [];
|
||||||
} else {
|
if($gameStor->isunited){
|
||||||
$sel = "npc<2";
|
foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){
|
||||||
|
$ownerNameList[$ownerID] = $ownerName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$nationName = [];
|
$nationName = [0=>'재야'];
|
||||||
$nationColor = [];
|
$nationColor = [0=>'#000000'];
|
||||||
foreach (getAllNationStaticInfo() as $nation) {
|
foreach (getAllNationStaticInfo() as $nation) {
|
||||||
$nationName[$nation['nation']] = $nation['name'];
|
$nationName[$nation['nation']] = $nation['name'];
|
||||||
$nationColor[$nation['nation']] = $nation['color'];
|
$nationColor[$nation['nation']] = $nation['color'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$type = array(
|
$types = [
|
||||||
"명 성",
|
["명 성", "int", function($v){$v['value'] = $v['experience']; return $v; }],
|
||||||
"계 급",
|
["계 급", "int", function($v){$v['value'] = $v['dedication']; return $v; }],
|
||||||
"계 략 성 공",
|
["계 략 성 공", "int", function($v) use ($gameStor){
|
||||||
"전 투 횟 수",
|
$v['value'] = $v['firenum'];
|
||||||
"승 리",
|
if($gameStor->isunited){
|
||||||
"승 률",
|
return $v;
|
||||||
"사 살",
|
}
|
||||||
"살 상 률",
|
$v['nationName'] = '???';
|
||||||
"보 병 숙 련 도",
|
$v['pictureFullPath'] = GetImageURL(0)."/default.jpg";
|
||||||
"궁 병 숙 련 도",
|
$v['name'] = '???';
|
||||||
"기 병 숙 련 도",
|
$v['owner_name'] = null;
|
||||||
"귀 병 숙 련 도",
|
$v['bgColor'] = GameConst::$basecolor4;
|
||||||
"차 병 숙 련 도",
|
$v['fgColor'] = newColor($v['bgColor']);
|
||||||
"전 력 전 승 률",
|
return $v;
|
||||||
"통 솔 전 승 률",
|
}],
|
||||||
"일 기 토 승 률",
|
["전 투 횟 수", "int", function($v){$v['value'] = $v['warnum']; return $v; }],
|
||||||
"설 전 승 률",
|
["승 리", "int", function($v){$v['value'] = $v['killnum']; return $v; }],
|
||||||
"베 팅 투 자 액",
|
["승 률", "percent", function($v){
|
||||||
"베 팅 당 첨",
|
if($v['warnum'] < 10){
|
||||||
"베 팅 수 익 금",
|
$v['value'] = 0;
|
||||||
"베 팅 수 익 률"
|
}
|
||||||
);
|
else{
|
||||||
|
$v['value'] = $v['killnum'] / max(1, $v['warnum']);
|
||||||
|
}
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["사 살", "int", function($v){$v['value'] = $v['killcrew']; return $v; }],
|
||||||
|
["살 상 률", "percent", function($v){
|
||||||
|
if($v['warnum'] < 10){
|
||||||
|
$v['value'] = 0;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$v['value'] = $v['killcrew'] / max(1, $v['deathcrew']);
|
||||||
|
}
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["보 병 숙 련 도", "int", function($v){$v['value'] = $v['dex0']; return $v; }],
|
||||||
|
["궁 병 숙 련 도", "int", function($v){$v['value'] = $v['dex10']; return $v; }],
|
||||||
|
["기 병 숙 련 도", "int", function($v){$v['value'] = $v['dex20']; return $v; }],
|
||||||
|
["귀 병 숙 련 도", "int", function($v){$v['value'] = $v['dex30']; return $v; }],
|
||||||
|
["차 병 숙 련 도", "int", function($v){$v['value'] = $v['dex40']; return $v; }],
|
||||||
|
["전 력 전 승 률", "percent", function($v){
|
||||||
|
$totalCnt = $v['ttw']+$v['ttd']+$v['ttl'];
|
||||||
|
if($totalCnt < 50){
|
||||||
|
$v['value'] = 0;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$v['value'] = $v['ttw']/max(1, $totalCnt);
|
||||||
|
}
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["통 솔 전 승 률", "percent", function($v){
|
||||||
|
$totalCnt = $v['tlw']+$v['tld']+$v['tll'];
|
||||||
|
if($totalCnt < 50){
|
||||||
|
$v['value'] = 0;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$v['value'] = $v['tlw']/max(1, $totalCnt);
|
||||||
|
}
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["일 기 토 승 률", "percent", function($v){
|
||||||
|
$totalCnt = $v['tpw']+$v['tpd']+$v['tpl'];
|
||||||
|
if($totalCnt < 50){
|
||||||
|
$v['value'] = 0;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$v['value'] = $v['tpw']/max(1, $totalCnt);
|
||||||
|
}
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["설 전 승 률", "percent", function($v){
|
||||||
|
$totalCnt = $v['tiw']+$v['tid']+$v['til'];
|
||||||
|
if($totalCnt < 50){
|
||||||
|
$v['value'] = 0;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$v['value'] = $v['tiw']/max(1, $totalCnt);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["베 팅 투 자 액", "int", function($v){$v['value'] = $v['betgold']; return $v; }],
|
||||||
|
["베 팅 당 첨", "int", function($v){$v['value'] = $v['betwin']; return $v; }],
|
||||||
|
["베 팅 수 익 금", "int", function($v){$v['value'] = $v['betwingold']; return $v; }],
|
||||||
|
["베 팅 수 익 률", "percent", function($v){
|
||||||
|
if($v['betgold'] < 1000){
|
||||||
|
$v['value'] = 0;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$v['value'] = $v['betwingold']/max(1, $v['betgold']);
|
||||||
|
}
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
];
|
||||||
|
|
||||||
|
$generals = array_map(function($general) use($nationColor, $nationName) {
|
||||||
for ($i=0; $i < 21; $i++) {
|
$general['bgColor'] = $nationColor[$general['nation']]??GameConst::$basecolor4;
|
||||||
$name = [];
|
$general['fgColor'] = newColor($general['bgColor']);
|
||||||
$data = [];
|
$general['nationName'] = $nationName[$general['nation']];
|
||||||
$color = [];
|
|
||||||
$pic = [];
|
if(key_exists('picture', $general)){
|
||||||
|
$imageTemp = GetImageURL($general['imgsvr']);
|
||||||
switch ($i) {
|
$general['pictureFullPath'] = "$imageTemp/{$general['picture']}";
|
||||||
case 0: $query = "select nation,no,name,picture,imgsvr,experience as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 1: $query = "select nation,no,name,picture,imgsvr,dedication as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 2: $query = "select nation,no,name,picture,imgsvr,firenum as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 3: $query = "select nation,no,name,picture,imgsvr,warnum as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 4: $query = "select nation,no,name,picture,imgsvr,killnum as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 5: $query = "select nation,no,name,picture,imgsvr,killnum/warnum*10000 as data from general where warnum>=10 and $sel order by data desc limit 0,10"; break;
|
|
||||||
case 6: $query = "select nation,no,name,picture,imgsvr,killcrew as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 7: $query = "select nation,no,name,picture,imgsvr,killcrew/deathcrew*10000 as data from general where warnum>=10 and $sel order by data desc limit 0,10"; break;
|
|
||||||
case 8: $query = "select nation,no,name,picture,imgsvr,dex0 as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 9: $query = "select nation,no,name,picture,imgsvr,dex10 as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 10: $query = "select nation,no,name,picture,imgsvr,dex20 as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 11: $query = "select nation,no,name,picture,imgsvr,dex30 as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 12: $query = "select nation,no,name,picture,imgsvr,dex40 as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 13: $query = "select nation,no,name,picture,imgsvr,ttw/(ttw+ttd+ttl)*10000 as data from general where $sel and (ttw+ttd+ttl)>=50 order by data desc limit 0,10"; break;
|
|
||||||
case 14: $query = "select nation,no,name,picture,imgsvr,tlw/(tlw+tld+tll)*10000 as data from general where $sel and (tlw+tld+tll)>=50 order by data desc limit 0,10"; break;
|
|
||||||
case 15: $query = "select nation,no,name,picture,imgsvr,tpw/(tpw+tpd+tpl)*10000 as data from general where $sel and (tpw+tpd+tpl)>=50 order by data desc limit 0,10"; break;
|
|
||||||
case 16: $query = "select nation,no,name,picture,imgsvr,tiw/(tiw+tid+til)*10000 as data from general where $sel and (tiw+tid+til)>=50 order by data desc limit 0,10"; break;
|
|
||||||
case 17: $query = "select nation,no,name,picture,imgsvr,betgold as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 18: $query = "select nation,no,name,picture,imgsvr,betwin as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 19: $query = "select nation,no,name,picture,imgsvr,betwingold as data from general where $sel order by data desc limit 0,10"; break;
|
|
||||||
case 20: $query = "select nation,no,name,picture,imgsvr,betwingold/betgold*10000 as data from general where $sel and betgold >= 1000 order by data desc limit 0,10"; break;
|
|
||||||
}
|
}
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
else{
|
||||||
|
$general['pictureFullPath'] = GetImageURL(0)."/default.jpg";
|
||||||
echo "
|
|
||||||
<tr><td align=center colspan=10 id=bg1><font size=4>$type[$i]</font></td></tr>
|
|
||||||
<tr align=center id=bg2><td>1위</td><td>2위</td><td>3위</td><td>4위</td><td>5위</td><td>6위</td><td>7위</td><td>8위</td><td>9위</td><td>10위</td></tr>
|
|
||||||
<tr>";
|
|
||||||
|
|
||||||
for ($k=0; $k < 10; $k++) {
|
|
||||||
$gen = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
if ($i != 2) {
|
|
||||||
if (isset($gen)) {
|
|
||||||
$name[$k] = $gen['name'];
|
|
||||||
$nation[$k] = $gen['nation'] == 0 ? "재야" : $nationName[$gen['nation']];
|
|
||||||
$data[$k] = $gen['data'];
|
|
||||||
$color[$k] = $gen['nation'] == 0 ? "#FFFFFF" : $nationColor[$gen['nation']];
|
|
||||||
$pic[$k] = $gen['picture'];
|
|
||||||
} else {
|
|
||||||
$name[$k] = "-";
|
|
||||||
$nation[$k] = "-";
|
|
||||||
$data[$k] = "-";
|
|
||||||
$color[$k] = GameConst::$basecolor4;
|
|
||||||
$pic[$k] = "";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$name[$k] = "???";
|
|
||||||
$nation[$k] = "???";
|
|
||||||
$data[$k] = $gen['data'];
|
|
||||||
$color[$k] = GameConst::$basecolor4;
|
|
||||||
$gen['imgsvr'] = 0;
|
|
||||||
$pic[$k] = "9999.jpg";
|
|
||||||
}
|
|
||||||
if ($color[$k] == "") {
|
|
||||||
$color[$k] = GameConst::$basecolor4;
|
|
||||||
}
|
|
||||||
if ($nation[$k] == "") {
|
|
||||||
$nation[$k] = " ";
|
|
||||||
}
|
|
||||||
if ($pic[$k] == "") {
|
|
||||||
echo "<td align=center> </td>";
|
|
||||||
} else {
|
|
||||||
$imageTemp = GetImageURL($gen['imgsvr']);
|
|
||||||
echo "<td align=center><img src={$imageTemp}/{$pic[$k]}></img></td>";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "</tr><tr>";
|
return $general;
|
||||||
|
}, $db->query(
|
||||||
|
"SELECT nation,no,name,name2 as owner_name, owner, 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"));
|
||||||
|
|
||||||
for ($k=0; $k < 10; $k++) {
|
|
||||||
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$nation[$k]}</td>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</tr><tr>";
|
$templates = new \League\Plates\Engine('templates');
|
||||||
|
|
||||||
for ($k=0; $k < 10; $k++) {
|
foreach($types as $idx=>[$typeName, $typeValue, $typeFunc]){
|
||||||
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$name[$k]}</td>";
|
$validCnt = 0;
|
||||||
}
|
$typeGenerals = array_map(function($general) use($typeValue, $typeFunc, &$validCnt, $ownerNameList){
|
||||||
|
$general['owner_name'] = $ownerNameList[$general['owner']]??null;
|
||||||
|
$general = ($typeFunc)($general);
|
||||||
|
$value = $general['value'];
|
||||||
|
|
||||||
echo "</tr><tr>";
|
if($value > 0){
|
||||||
|
$validCnt+=1;
|
||||||
for ($k=0; $k < 10; $k++) {
|
|
||||||
if ($i == 5 || $i == 7 || $i == 20) {
|
|
||||||
$data[$k] = intdiv($data[$k], 100).".".($data[$k]%100)." %";
|
|
||||||
}
|
}
|
||||||
if ($i >= 13 && $i <= 16) {
|
|
||||||
$data[$k] = intdiv($data[$k], 100).".".($data[$k]%100)." %";
|
if($typeValue == 'percent'){
|
||||||
|
$general['printValue'] = number_format($value*100, 2).'%';
|
||||||
}
|
}
|
||||||
echo "<td align=center>{$data[$k]}</td>";
|
else {
|
||||||
}
|
$general['printValue'] = number_format($value);
|
||||||
echo "</tr><tr><td colspan=10 height=5 id=bg1></td></tr>";
|
}
|
||||||
|
return $general;
|
||||||
|
}, $generals);
|
||||||
|
|
||||||
|
usort($typeGenerals, function($lhs, $rhs){
|
||||||
|
//내림차순
|
||||||
|
return -($lhs['value'] <=> $rhs['value']);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
echo $templates->render('hallOfFrame', [
|
||||||
|
'typeName'=>$typeName,
|
||||||
|
'generals'=>array_slice($typeGenerals, 0, min(10, $validCnt))
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "
|
|
||||||
</table>
|
|
||||||
<br>
|
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
|
||||||
";
|
|
||||||
|
|
||||||
$type = array(
|
|
||||||
"명 마",
|
|
||||||
"명 검",
|
|
||||||
"명 서",
|
|
||||||
"도 구"
|
|
||||||
);
|
|
||||||
|
|
||||||
$call = array(
|
|
||||||
"horse",
|
|
||||||
"weap",
|
|
||||||
"book",
|
|
||||||
"item"
|
|
||||||
);
|
|
||||||
|
|
||||||
$func = array(
|
|
||||||
"getHorseName",
|
|
||||||
"getWeapName",
|
|
||||||
"getBookName",
|
|
||||||
"getItemName"
|
|
||||||
);
|
|
||||||
|
|
||||||
for ($i=0; $i < 4; $i++) {
|
|
||||||
$name = [];
|
|
||||||
$data = [];
|
|
||||||
$color = [];
|
|
||||||
$pic = [];
|
|
||||||
|
|
||||||
echo "
|
|
||||||
<tr><td align=center colspan=10 id=bg1><font size=4>$type[$i]</font></td></tr>
|
|
||||||
<tr align=center id=bg2>";
|
|
||||||
for ($k=26; $k > 16; $k--) {
|
|
||||||
$str = $func[$i]($k);
|
|
||||||
echo "<td>".$str."</td>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</tr><tr>";
|
|
||||||
|
|
||||||
for ($k=26; $k > 16; $k--) {
|
|
||||||
$query = "select nation,no,name,picture,imgsvr from general where {$call[$i]}={$k}";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$gen = MYDB_fetch_array($result);
|
|
||||||
if (isset($gen)) {
|
|
||||||
$name[$k] = $gen['name'];
|
|
||||||
$nation[$k] = $gen['nation'] == 0 ? "재야" : $nationName[$gen['nation']];
|
|
||||||
$color[$k] = $gen['nation'] == 0 ? "#FFFFFF" : $nationColor[$gen['nation']];
|
|
||||||
$pic[$k] = $gen['picture'];
|
|
||||||
} else {
|
|
||||||
$name[$k] = "미발견";
|
|
||||||
$nation[$k] = "-";
|
|
||||||
$color[$k] = "";
|
|
||||||
$pic[$k] = "";
|
|
||||||
}
|
|
||||||
if ($color[$k] == "") {
|
|
||||||
$color[$k] = GameConst::$basecolor4;
|
|
||||||
}
|
|
||||||
if ($nation[$k] == "") {
|
|
||||||
$nation[$k] = " ";
|
|
||||||
}
|
|
||||||
if ($pic[$k] == "") {
|
|
||||||
echo "<td align=center> </td>";
|
|
||||||
} else {
|
|
||||||
$imageTemp = GetImageURL($gen['imgsvr']??0);
|
|
||||||
echo "<td align=center><img src={$imageTemp}/{$pic[$k]}></img></td>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</tr><tr>";
|
|
||||||
|
|
||||||
for ($k=26; $k > 16; $k--) {
|
|
||||||
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$nation[$k]}</td>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</tr><tr>";
|
|
||||||
|
|
||||||
for ($k=26; $k > 16; $k--) {
|
|
||||||
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$name[$k]}</td>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</tr><tr><td colspan=10 height=5 id=bg1></td></tr>";
|
|
||||||
|
|
||||||
echo "
|
|
||||||
<tr align=center id=bg2>";
|
|
||||||
for ($k=16; $k > 6; $k--) {
|
|
||||||
$str = $func[$i]($k);
|
|
||||||
echo "<td>".$str."</td>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</tr><tr>";
|
|
||||||
|
|
||||||
for ($k=16; $k > 6; $k--) {
|
|
||||||
$query = "select nation,no,name,picture,imgsvr from general where {$call[$i]}={$k}";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$gen = MYDB_fetch_array($result);
|
|
||||||
if (isset($gen)) {
|
|
||||||
$name[$k] = $gen['name'];
|
|
||||||
$nation[$k] = $gen['nation'] == 0 ? "재야" : $nationName[$gen['nation']];
|
|
||||||
$color[$k] = $gen['nation'] == 0 ? "#FFFFFF" : $nationColor[$gen['nation']];
|
|
||||||
$pic[$k] = $gen['picture'];
|
|
||||||
} else {
|
|
||||||
$name[$k] = "미발견";
|
|
||||||
$nation[$k] = "-";
|
|
||||||
$color[$k] = "";
|
|
||||||
$pic[$k] = "";
|
|
||||||
}
|
|
||||||
if ($color[$k] == "") {
|
|
||||||
$color[$k] = GameConst::$basecolor4;
|
|
||||||
}
|
|
||||||
if ($nation[$k] == "") {
|
|
||||||
$nation[$k] = " ";
|
|
||||||
}
|
|
||||||
if ($pic[$k] == "") {
|
|
||||||
echo "<td align=center> </td>";
|
|
||||||
} else {
|
|
||||||
$imageTemp = GetImageURL($gen['imgsvr']??0);
|
|
||||||
echo "<td align=center><img src={$imageTemp}/{$pic[$k]}></img></td>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</tr><tr>";
|
|
||||||
|
|
||||||
for ($k=16; $k > 6; $k--) {
|
|
||||||
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$nation[$k]}</td>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</tr><tr>";
|
|
||||||
|
|
||||||
for ($k=16; $k > 6; $k--) {
|
|
||||||
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$name[$k]}</td>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</tr><tr><td colspan=10 height=5 id=bg1></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
</table>
|
</div>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<div style="margin:auto;width=1000px;margin-top:5px;">
|
||||||
|
<?php
|
||||||
|
//유니크 아이템 소유자
|
||||||
|
$itemTypes = [
|
||||||
|
["명 마", 'horse', function($v){return getHorseName($v);}, 7, 26, []],
|
||||||
|
["명 검", 'weap', function($v){return getWeapName($v);}, 7, 26, []],
|
||||||
|
["명 서", 'book', function($v){return getBookName($v);}, 7, 26, []],
|
||||||
|
["도 구", 'item', function($v){return displayItemInfo($v);}, 7, 26, []],
|
||||||
|
];
|
||||||
|
|
||||||
|
$simpleItemTypes = array_map(function($itemType){return $itemType[1];}, $itemTypes);
|
||||||
|
|
||||||
|
foreach($generals as $general){
|
||||||
|
foreach($itemTypes as $itemIdx=>[,$itemType, $itemFunc,,,]){
|
||||||
|
$itemCode = $general[$itemType];
|
||||||
|
if($itemCode <= 6){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$itemName = ($itemFunc)($itemCode);
|
||||||
|
$general['rankName'] = $itemName;
|
||||||
|
$general['value'] = $itemCode;
|
||||||
|
$itemTypes[$itemIdx][5][$itemCode] = $general;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($itemTypes as [$itemNameType, $itemType, $itemFunc, $itemMinCode, $itemMaxCode, $itemOwners]){
|
||||||
|
$itemRanker = [];
|
||||||
|
for($itemCode = $itemMaxCode; $itemCode >= $itemMinCode; $itemCode--){
|
||||||
|
if(!key_exists($itemCode, $itemOwners)){
|
||||||
|
$emptyCard = [
|
||||||
|
'rankName' => ($itemFunc)($itemCode),
|
||||||
|
'pictureFullPath' => GetImageURL(0)."/default.jpg",
|
||||||
|
'value'=>$itemCode,
|
||||||
|
'name'=>'미발견',
|
||||||
|
'bgColor'=>GameConst::$basecolor4,
|
||||||
|
'fgColor'=>newColor(GameConst::$basecolor4),
|
||||||
|
];
|
||||||
|
$itemRanker[$itemCode] = $emptyCard;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$general = $itemOwners[$itemCode];
|
||||||
|
$itemRanker[$itemCode] = $general;
|
||||||
|
}
|
||||||
|
|
||||||
|
echo $templates->render('hallOfFrame', [
|
||||||
|
'typeName'=>$itemNameType,
|
||||||
|
'generals'=>$itemRanker
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<table align=center width=1100 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr><td><?=closeButton()?></td></tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<tr><td><?=banner()?> </td></tr>
|
||||||
</table>
|
</table>
|
||||||
<?php PrintElapsedTime(); ?>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -4,202 +4,126 @@ namespace sammo;
|
|||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
$select = Util::getReq('select', 'int', 0);
|
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
increaseRefresh("왕조일람", 2);
|
increaseRefresh("왕조일람", 1);
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<title>왕조일람</title>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<title><?=UniqueConst::$serverName?>: 왕조일람</title>
|
||||||
|
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||||
|
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||||
|
<?=WebUtil::printJS('js/common.js')?>
|
||||||
|
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style="font-size:13px;word-break:break-all;color:white;background-color:black" id=bg0>
|
<table align=center width=1000 class="tb_layout bg0">
|
||||||
<tr><td>역 대 왕 조<br>
|
<tr><td>역 대 왕 조<br>
|
||||||
<input type=button value='창 닫기' onclick=window.close()><br>
|
<button onclick=window.close()>창 닫기</button><br>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
if ($select == 0) {
|
$showCurrentNation = true;
|
||||||
$query = "select * from emperior 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++) {
|
$emperiors = $db->query('SELECT * FROM emperior ORDER BY `no` DESC');
|
||||||
$emperior = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
echo "
|
if($emperiors){
|
||||||
<form action=a_emperior.php method=post>
|
$serverID = $emperior[0]['server_id']??($emperior[0]['serverID']??null);
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style='font-size:13px;word-break:break-all;color:white;' id=bg0>
|
if($serverID == UniqueConst::$serverID){
|
||||||
|
$showCurrentNation = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($showCurrentNation) {
|
||||||
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
[$year, $month] = $gameStor->getValuesAsArray(['year', 'month']);
|
||||||
|
?>
|
||||||
|
|
||||||
|
<table align=center width=1000 style="margin-top:10px;" class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td bgcolor=skyblue align=center colspan=8>
|
<td style="background-color:#333333;" align=center colspan=8>
|
||||||
<font size=5>{$emperior['phase']}</font>
|
<font size=5>현재 (<?=$year?>年 <?=$month?>月)</font>
|
||||||
<input type=submit value='자세히'>
|
<a href="a_history.php"><button>역사 보기</button></a>
|
||||||
<input type=hidden name=select value='{$emperior['no']}'>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</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=123>국 력</td>
|
|
||||||
<td align=center width=123>{$emperior['power']}</td>
|
|
||||||
<td id=bg1 align=center width=123>장 수</td>
|
|
||||||
<td align=center width=123>{$emperior['gennum']}</td>
|
|
||||||
<td id=bg1 align=center width=123>속 령</td>
|
|
||||||
<td align=center width=123>{$emperior['citynum']}</td>
|
|
||||||
<td id=bg1 align=center width=123>성 향</td>
|
|
||||||
<td align=center width=123>{$emperior['type']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id=bg1 width=123 align=center>황 제</td>
|
|
||||||
<td width=123 align=center>{$emperior['l12name']}</td>
|
|
||||||
<td id=bg1 width=123 align=center>승 상</td>
|
|
||||||
<td width=123 align=center>{$emperior['l11name']}</td>
|
|
||||||
<td id=bg1 width=123 align=center>위 장 군</td>
|
|
||||||
<td width=123 align=center>{$emperior['l10name']}</td>
|
|
||||||
<td id=bg1 width=123 align=center>사 공</td>
|
|
||||||
<td width=123 align=center>{$emperior['l9name']}</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
</form>";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$query = "select * from emperior where no='$select'";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
|
||||||
$emperior = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
echo "
|
<?php
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style='font-size:13px;word-break:break-all;color:white;' id=bg0>
|
}
|
||||||
|
|
||||||
|
foreach($emperiors as $emperior){
|
||||||
|
$serverID = $emperior['server_id']??($emperior['serverID']??null);
|
||||||
|
?>
|
||||||
|
|
||||||
|
<table align=center width=1000 style="margin-top:10px;" class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td bgcolor=skyblue align=center colspan=6>
|
<td bgcolor=skyblue align=center colspan=8>
|
||||||
<font size=5>{$emperior['phase']}</font>
|
<font size=5><?=$emperior['phase']?></font>
|
||||||
<input type=submit value='전체보기'>
|
|
||||||
<input type=hidden name=select value='0'>
|
<a href="a_emperior_detail.php?select=<?=$emperior['no']?>"><button>자세히</button></a>
|
||||||
|
|
||||||
|
<?php if($emperior['server_id']): ?>
|
||||||
|
<a href="a_history.php?serverID=<?=$emperior['server_id']?>"><button>역사 보기</button></a>
|
||||||
|
<?php endif ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 width=98 align=center>국 가 수<br>(최종 / 최대)</td>
|
<td align=center style=color:".newColor($emperior['color'])."; bgcolor=<?=$emperior['color']?> colspan=8>
|
||||||
<td align=center width=398 colspan=2>{$emperior['nation_count']}</td>
|
<font size=5><?=$emperior['name']?> (<?=$emperior['year']?>年 <?=$emperior['month']?>月)</font>
|
||||||
<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>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 width=98 align=center>국 력</td>
|
<td id=bg1 align=center width=80>국 력</td>
|
||||||
<td align=center width=398 colspan=2>{$emperior['power']}</td>
|
<td align=center width=170><?=$emperior['power']?></td>
|
||||||
<td id=bg1 width=98 align=center>성 향</td>
|
<td id=bg1 align=center width=80>장 수</td>
|
||||||
<td align=center width=398 colspan=2>{$emperior['type']}</td>
|
<td align=center width=170><?=$emperior['gennum']?></td>
|
||||||
</tr>
|
<td id=bg1 align=center width=80>속 령</td>
|
||||||
<tr>
|
<td align=center width=170><?=$emperior['citynum']?></td>
|
||||||
<td id=bg1 width=98 align=center>장 수</td>
|
<td id=bg1 align=center width=80>성 향</td>
|
||||||
<td align=center width=398 colspan=2>{$emperior['gennum']}</td>
|
<td align=center width=170><?=$emperior['type']?></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>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>황 제</td>
|
<td id=bg1 align=center>황 제</td>
|
||||||
<td width=64> </td>
|
<td align=center><?=$emperior['l12name']?></td>
|
||||||
<td width=332>{$emperior['l12name']}</td>
|
|
||||||
<td id=bg1 align=center>승 상</td>
|
<td id=bg1 align=center>승 상</td>
|
||||||
<td width=64> </td>
|
<td align=center><?=$emperior['l11name']?></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 id=bg1 align=center>표 기 장 군</td>
|
||||||
<td width=64> </td>
|
<td align=center><?=$emperior['l10name']?></td>
|
||||||
<td width=332>{$emperior['l8name']}</td>
|
<td id=bg1 align=center>사 공</td>
|
||||||
<td id=bg1 align=center>태 위</td>
|
<td align=center><?=$emperior['l9name']?></td>
|
||||||
<td width=64> </td>
|
|
||||||
<td width=332>{$emperior['l7name']}</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>거 기 장 군</td>
|
<td id=bg1 align=center>거 기 장 군</td>
|
||||||
<td width=64> </td>
|
<td align=center><?=$emperior['l8name']?></td>
|
||||||
<td width=332>{$emperior['l6name']}</td>
|
<td id=bg1 align=center>태 위</td>
|
||||||
|
<td align=center><?=$emperior['l7name']?></td>
|
||||||
|
<td id=bg1 align=center>위 장 군</td>
|
||||||
|
<td align=center><?=$emperior['l6name']?></td>
|
||||||
<td id=bg1 align=center>사 도</td>
|
<td id=bg1 align=center>사 도</td>
|
||||||
<td width=64> </td>
|
<td align=center><?=$emperior['l5name']?></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>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
";
|
|
||||||
|
|
||||||
|
|
||||||
|
<?php
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all;color:white; id=bg0>
|
<table style="margin-top:10px;" align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr><td><?=closeButton()?></td></tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<tr><td><?=banner()?></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<?php PrintElapsedTime(); ?>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
@@ -15,15 +15,21 @@ increaseRefresh("왕조일람", 2);
|
|||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<title>왕조일람</title>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<title><?=UniqueConst::$serverName?>: 왕조일람</title>
|
||||||
|
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||||
|
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||||
|
<?=WebUtil::printJS('js/common.js')?>
|
||||||
|
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>역 대 왕 조<br>
|
<tr><td>역 대 왕 조<br>
|
||||||
<input type=button value='창 닫기' onclick=window.close()><br>
|
<input type=button value='창 닫기' onclick=window.close()><br>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
@@ -41,7 +47,7 @@ if ($select == 0) {
|
|||||||
|
|
||||||
echo "
|
echo "
|
||||||
<form action=a_emperior2.php method=post>
|
<form action=a_emperior2.php method=post>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<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>
|
||||||
@@ -55,24 +61,24 @@ if ($select == 0) {
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center width=123>국 력</td>
|
<td id=bg1 align=center width=80>국 력</td>
|
||||||
<td align=center width=123>{$emperior['power']}</td>
|
<td align=center width=170>{$emperior['power']}</td>
|
||||||
<td id=bg1 align=center width=123>장 수</td>
|
<td id=bg1 align=center width=80>장 수</td>
|
||||||
<td align=center width=123>{$emperior['gennum']}</td>
|
<td align=center width=170>{$emperior['gennum']}</td>
|
||||||
<td id=bg1 align=center width=123>속 령</td>
|
<td id=bg1 align=center width=80>속 령</td>
|
||||||
<td align=center width=123>{$emperior['citynum']}</td>
|
<td align=center width=170>{$emperior['citynum']}</td>
|
||||||
<td id=bg1 align=center width=123>성 향</td>
|
<td id=bg1 align=center width=80>성 향</td>
|
||||||
<td align=center width=123>{$emperior['type']}</td>
|
<td align=center width=170>{$emperior['type']}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 width=123 align=center>황 제</td>
|
<td id=bg1 align=center>황 제</td>
|
||||||
<td width=123 align=center>{$emperior['l12name']}</td>
|
<td align=center>{$emperior['l12name']}</td>
|
||||||
<td id=bg1 width=123 align=center>승 상</td>
|
<td id=bg1 align=center>승 상</td>
|
||||||
<td width=123 align=center>{$emperior['l11name']}</td>
|
<td align=center>{$emperior['l11name']}</td>
|
||||||
<td id=bg1 width=123 align=center>위 장 군</td>
|
<td id=bg1 align=center>위 장 군</td>
|
||||||
<td width=123 align=center>{$emperior['l10name']}</td>
|
<td align=center>{$emperior['l10name']}</td>
|
||||||
<td id=bg1 width=123 align=center>사 공</td>
|
<td id=bg1 align=center>사 공</td>
|
||||||
<td width=123 align=center>{$emperior['l9name']}</td>
|
<td align=center>{$emperior['l9name']}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</form>";
|
</form>";
|
||||||
@@ -84,7 +90,7 @@ if ($select == 0) {
|
|||||||
|
|
||||||
echo "
|
echo "
|
||||||
<form action=a_emperior2.php method=post>
|
<form action=a_emperior2.php method=post>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td bgcolor=skyblue align=center colspan=6>
|
<td bgcolor=skyblue align=center colspan=6>
|
||||||
<font size=5>{$emperior['phase']}</font>
|
<font size=5>{$emperior['phase']}</font>
|
||||||
@@ -196,11 +202,10 @@ if ($select == 0) {
|
|||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr><td><?=closeButton()?></td></tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<tr><td><?=banner()?></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<?php PrintElapsedTime(); ?>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,214 @@
|
|||||||
|
<?php
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
include "lib.php";
|
||||||
|
include "func.php";
|
||||||
|
|
||||||
|
$select = Util::getReq('select', 'int', 0);
|
||||||
|
|
||||||
|
$db = DB::db();
|
||||||
|
|
||||||
|
$templates = new \League\Plates\Engine('templates');
|
||||||
|
$templates->registerFunction('ConvertLog', '\sammo\ConvertLog');
|
||||||
|
$templates->registerFunction('newColor', '\sammo\newColor');
|
||||||
|
increaseRefresh("왕조일람", 1);
|
||||||
|
|
||||||
|
$emperior = $db->queryFirstRow('SELECT * FROM emperior WHERE `no`=%i',$select);
|
||||||
|
$serverID = $emperior['server_id']??($emperior['serverID']??null);
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=1024" />
|
||||||
|
<title><?=UniqueConst::$serverName?>: 왕조일람</title>
|
||||||
|
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||||
|
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||||
|
<?=WebUtil::printJS('js/common.js')?>
|
||||||
|
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||||
|
<?=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>
|
||||||
|
<button onclick=window.close()>창 닫기</button>
|
||||||
|
<div style="float:right;"><a href="a_emperior.php"><button>전체보기</button></a><div>
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
if($emperior):
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
|
<tr>
|
||||||
|
<td bgcolor=skyblue align=center colspan=6>
|
||||||
|
<font size=5><?=$emperior['phase']?></font>
|
||||||
|
</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>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
endif;
|
||||||
|
|
||||||
|
$showServers = $emperior;
|
||||||
|
|
||||||
|
if(!$serverID){
|
||||||
|
$serverID = UniqueConst::$serverID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($showServers){
|
||||||
|
$nations = $db->query('SELECT * FROM ng_old_nations WHERE server_id=%s ORDER BY date DESC', $serverID);
|
||||||
|
foreach($nations as $nation){
|
||||||
|
if(!$nation['nation']??null){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$nation += Json::decode($nation['data']);
|
||||||
|
|
||||||
|
$nation['typeName'] = getNationType($nation['type']);
|
||||||
|
$nation['levelName'] = getNationLevel($nation['level']);
|
||||||
|
if($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, $nation['generals']);
|
||||||
|
|
||||||
|
if(count($generals) != count($nation['generals']) && $serverID == UniqueConst::$serverID){
|
||||||
|
$liveGenerals = $nation['generals'];
|
||||||
|
foreach($generals as $general){
|
||||||
|
if(in_array($general['general_no'], $nation['generals'])){
|
||||||
|
unset($nation['generals'][$general['general_no']]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$liveGenerals = $db->query('SELECT `no`as`general_no`, `name` FROM general WHERE no IN %li', $liveGenerals);
|
||||||
|
$nation['generalsFull'] = array_merge($liveGenerals, $generals);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$nation['generalsFull'] = $generals;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$nation['generalsFull'] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(key_exists('aux', $nation) && !is_array($nation['aux'])){
|
||||||
|
$nation += Json::decode($nation['aux']);
|
||||||
|
}
|
||||||
|
|
||||||
|
echo $templates->render('oldNation', $nation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
|
<tr><td><?=closeButton()?></td></tr>
|
||||||
|
<tr><td><?=banner()?></td></tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -3,45 +3,61 @@ namespace sammo;
|
|||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
|
$type = Util::getReq('type', 'int', 9);
|
||||||
|
|
||||||
//로그인 검사
|
//로그인 검사
|
||||||
$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');
|
||||||
$connect=$db->get();
|
$connect=$db->get();
|
||||||
|
|
||||||
increaseRefresh("장수일람", 2);
|
increaseRefresh("장수일람", 2);
|
||||||
|
|
||||||
$query = "select conlimit from game limit 1";
|
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$admin = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
$query = "select con,turntime from general where owner='{$userID}'";
|
$query = "select con,turntime from general where owner='{$userID}'";
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
||||||
$me = MYDB_fetch_array($result);
|
$me = MYDB_fetch_array($result);
|
||||||
|
|
||||||
$con = checkLimit($me['con'], $admin['conlimit']);
|
$con = checkLimit($me['con']);
|
||||||
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
|
if ($con >= 2) {
|
||||||
|
printLimitMsg($me['turntime']);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
if(!isset($type) || $type == 0) {
|
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>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta charset="UTF-8">
|
||||||
<title>장수일람</title>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<meta name="viewport" content="width=1024" />
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<title><?=UniqueConst::$serverName?>: 장수일람</title>
|
||||||
<script type="text/javascript" src="../e_lib/jquery-3.2.1.min.js"></script>
|
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||||
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
|
<?=WebUtil::printCSS('css/common.css')?>
|
||||||
|
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||||
|
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||||
|
<?=WebUtil::printJS('../d_shared/common_path.js')?>
|
||||||
|
<?=WebUtil::printJS('js/common.js')?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>장 수 일 람<br><?=closeButton()?></td></tr>
|
<tr><td>장 수 일 람<br><?=closeButton()?></td></tr>
|
||||||
<tr><td><form name=form1 method=post>정렬순서 :
|
<tr><td><form name=form1 method=post>정렬순서 :
|
||||||
<select id='viewType' name='type' size=1>
|
<select id='viewType' name='type' size=1>
|
||||||
@@ -68,104 +84,124 @@ if(!isset($type) || $type == 0) {
|
|||||||
$nationname = [];
|
$nationname = [];
|
||||||
$nationlevel = [];
|
$nationlevel = [];
|
||||||
$nationname[0] = "-";
|
$nationname[0] = "-";
|
||||||
foreach(getAllNationStaticInfo() as $nation){
|
foreach (getAllNationStaticInfo() as $nation) {
|
||||||
$nationname[$nation['nation']] = $nation['name'];
|
$nationname[$nation['nation']] = $nation['name'];
|
||||||
$nationlevel[$nation['nation']] = $nation['level'];
|
$nationlevel[$nation['nation']] = $nation['level'];
|
||||||
}
|
}
|
||||||
|
|
||||||
switch($type) {
|
|
||||||
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=>['leader', 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=>['power', 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=>['level', true],
|
||||||
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;
|
8=>['killturn', false],
|
||||||
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;
|
9=>['connect', 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;
|
10=>['experience', 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;
|
11=>['personal', 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;
|
12=>['special', 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;
|
13=>['special2', 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;
|
14=>['age', true],
|
||||||
}
|
15=>['npc', true],
|
||||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
][$type];
|
||||||
$gencount = MYDB_num_rows($genresult);
|
|
||||||
|
$generalList = $db->query('SELECT owner,no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by %b %l', $orderKey, $orderDesc?'desc':'');
|
||||||
|
|
||||||
echo"
|
echo"
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=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 id=bg1>얼 굴</td>
|
||||||
<td width=100 align=center id=bg1>이 름</td>
|
<td width=140 align=center id=bg1>이 름</td>
|
||||||
<td width=50 align=center id=bg1>연령</td>
|
<td width=45 align=center id=bg1>연령</td>
|
||||||
<td width=50 align=center id=bg1>성격</td>
|
<td width=45 align=center id=bg1>성격</td>
|
||||||
<td width=90 align=center id=bg1>특기</td>
|
<td width=80 align=center id=bg1>특기</td>
|
||||||
<td width=50 align=center id=bg1>레 벨</td>
|
<td width=45 align=center id=bg1>레 벨</td>
|
||||||
<td width=100 align=center id=bg1>국 가</td>
|
<td width=140 align=center id=bg1>국 가</td>
|
||||||
<td width=60 align=center id=bg1>명 성</td>
|
<td width=55 align=center id=bg1>명 성</td>
|
||||||
<td width=60 align=center id=bg1>계 급</td>
|
<td width=55 align=center id=bg1>계 급</td>
|
||||||
<td width=80 align=center id=bg1>관 직</td>
|
<td width=75 align=center id=bg1>관 직</td>
|
||||||
<td width=45 align=center id=bg1>통솔</td>
|
<td width=45 align=center id=bg1>통솔</td>
|
||||||
<td width=45 align=center id=bg1>무력</td>
|
<td width=45 align=center id=bg1>무력</td>
|
||||||
<td width=45 align=center id=bg1>지력</td>
|
<td width=45 align=center id=bg1>지력</td>
|
||||||
<td width=45 align=center id=bg1>삭턴</td>
|
<td width=45 align=center id=bg1>삭턴</td>
|
||||||
<td width=84 align=center id=bg1>벌점</td>
|
<td width=70 align=center id=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) {
|
if ($general['level'] == 12) {
|
||||||
$lbonus = $nationlevel[$general['nation']] * 2;
|
$lbonus = $nationlevel[$general['nation']] * 2;
|
||||||
} elseif($general['level'] >= 5) {
|
} elseif ($general['level'] >= 5) {
|
||||||
$lbonus = $nationlevel[$general['nation']];
|
$lbonus = $nationlevel[$general['nation']];
|
||||||
} else {
|
} else {
|
||||||
$lbonus = 0;
|
$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);
|
$leader = intdiv($general['leader'] * (100 - $general['injury']), 100);
|
||||||
$power = intdiv($general['power'] * (100 - $general['injury']), 100);
|
$power = intdiv($general['power'] * (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}";
|
$leader = "<font color=red>{$leader}</font>{$lbonusText}";
|
||||||
$power = "<font color=red>{$power}</font>";
|
$power = "<font color=red>{$power}</font>";
|
||||||
$intel = "<font color=red>{$intel}</font>";
|
$intel = "<font color=red>{$intel}</font>";
|
||||||
} else {
|
} else {
|
||||||
$leader = "{$general['leader']}{$lbonus}";
|
$leader = "{$general['leader']}{$lbonusText}";
|
||||||
$power = "{$general['power']}";
|
$power = "{$general['power']}";
|
||||||
$intel = "{$general['intel']}";
|
$intel = "{$general['intel']}";
|
||||||
}
|
}
|
||||||
|
|
||||||
if($general['npc'] >= 2) { $name = "<font color=cyan>{$general['name']}</font>"; }
|
|
||||||
elseif($general['npc'] == 1) { $name = "<font color=skyblue>{$general['name']}</font>"; }
|
|
||||||
else { $name = "{$general['name']}"; }
|
if ($general['npc'] >= 2) {
|
||||||
|
$name = "<font color=cyan>{$general['name']}</font>";
|
||||||
|
} elseif ($general['npc'] == 1) {
|
||||||
|
$name = "<font color=skyblue>{$general['name']}</font>";
|
||||||
|
} else {
|
||||||
|
$name = "{$general['name']}";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(key_exists($general['owner'], $ownerNameList)){
|
||||||
|
$name = $name.'<br><small>('.$ownerNameList[$general['owner']].')</small>';
|
||||||
|
}
|
||||||
|
|
||||||
$general['connect'] = Util::round($general['connect'] / 10) * 10;
|
$general['connect'] = Util::round($general['connect'] / 10) * 10;
|
||||||
|
|
||||||
$imageTemp = GetImageURL($general['imgsvr']);
|
$imageTemp = GetImageURL($general['imgsvr']);
|
||||||
echo "
|
echo "
|
||||||
<tr>
|
<tr data-general-id='{$general['no']}'
|
||||||
<td align=center><img src={$imageTemp}/{$general['picture']}></img></td>
|
data-general-wounded='{$general['injury']}'
|
||||||
|
data-general-leadership='{$general['leader']}'
|
||||||
|
data-general-leadership-bonus='{$lbonus}'
|
||||||
|
data-general-power='{$general['power']}'
|
||||||
|
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>".displaySpecialInfo($general['special'])." / ".displaySpecialInfo($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>"; echo getLevel($general['level']); echo "</td>
|
<td align=center>";
|
||||||
|
echo getLevel($general['level']);
|
||||||
|
echo "</td>
|
||||||
<td align=center>$leader</td>
|
<td align=center>$leader</td>
|
||||||
<td align=center>$power</td>
|
<td align=center>$power</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']}"; echo "<br>【".getConnect($general['connect'])."】</td>
|
<td align=center>{$general['connect']}";
|
||||||
|
echo "<br>【".getConnect($general['connect'])."】</td>
|
||||||
</tr>";
|
</tr>";
|
||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
@@ -174,11 +210,10 @@ echo "
|
|||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr><td><?=closeButton()?></td></tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<tr><td><?=banner()?></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<?php PrintElapsedTime(); ?>
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$("#viewType").val("<?=$type?>").attr("selected", "selected");
|
$("#viewType").val("<?=$type?>").attr("selected", "selected");
|
||||||
|
|||||||