Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4ca33cb007 | ||
|
|
96515fd16c | ||
|
|
d736e2d947 | ||
|
|
7631d99ce6 | ||
|
|
6ddeed82c0 | ||
|
|
ffc8242aae | ||
|
|
2767bf70d9 | ||
|
|
fa7c7794d0 | ||
|
|
015e9e54dc | ||
|
|
7dc9863b49 | ||
|
|
f13960a56a | ||
|
|
ba6370d206 | ||
|
|
32fd8c481a | ||
|
|
e9264e6f13 | ||
|
|
93e6a056d4 | ||
|
|
3610f2cbd4 | ||
|
|
0c51544e2e | ||
|
|
8f1f477054 | ||
|
|
0b72925f09 | ||
|
|
9fb477facc | ||
|
|
3c474e5551 | ||
|
|
9217f0aaf5 | ||
|
|
dddf4ccf6e | ||
|
|
4de010cb1e | ||
|
|
d2ed7a4a80 | ||
|
|
311d5c42a8 | ||
|
|
3c6a884663 | ||
|
|
1bfd0018b1 | ||
|
|
2c3a9b93c7 | ||
|
|
0961220fdd | ||
|
|
c8b2f28c7c | ||
|
|
3f7cc163ec | ||
|
|
8ede84c176 | ||
|
|
6a7f62f2c2 | ||
|
|
0b82024caa | ||
|
|
fd057ebb05 | ||
|
|
47e6958446 | ||
|
|
690fe46931 | ||
|
|
10ec7b55d0 | ||
|
|
5079db5ceb | ||
|
|
dd4f664724 | ||
|
|
932e8ca093 | ||
|
|
193e6eb9ca | ||
|
|
e28b878a68 | ||
|
|
4d6f64cf96 | ||
|
|
6441fc09e4 | ||
|
|
d8c54b4632 | ||
|
|
a8f2c9787d | ||
|
|
dfb10c1b44 | ||
|
|
95bd5b539f | ||
|
|
c811a56557 | ||
|
|
5892ddcad8 | ||
|
|
111a81766e | ||
|
|
5819045a01 | ||
|
|
b8f19e11ff | ||
|
|
d3c73579d9 | ||
|
|
5f001ee091 | ||
|
|
741c67c7cb | ||
|
|
9456406009 | ||
|
|
8464f96e40 | ||
|
|
3c23e0fb93 | ||
|
|
18807a642a | ||
|
|
975f77e907 | ||
|
|
bd42042a61 | ||
|
|
9134a7d9f6 | ||
|
|
53d65c31db | ||
|
|
612f15ebad | ||
|
|
33378c96ec | ||
|
|
703e2f51be | ||
|
|
7d8fa7f1c4 | ||
|
|
62089ef2c2 | ||
|
|
1d946aa525 | ||
|
|
19b62a632b | ||
|
|
cbd5b7fc5e | ||
|
|
58673fb385 | ||
|
|
26ea6a6c69 | ||
|
|
1727d34853 | ||
|
|
fc3b854add | ||
|
|
dba8e5d699 | ||
|
|
f3df6f7202 | ||
|
|
3cbf1eba30 | ||
|
|
4623cfbe06 | ||
|
|
d4d8e0045b | ||
|
|
ea4f1643d4 | ||
|
|
5a2ea3496e | ||
|
|
6dd77dd632 | ||
|
|
d4279b0cb7 | ||
|
|
601222a60d | ||
|
|
9c541735b7 | ||
|
|
858f7139ff | ||
|
|
a326ad3c66 | ||
|
|
33751a06fe | ||
|
|
8cbe92ca46 | ||
|
|
5587a358ce | ||
|
|
40b52dd517 | ||
|
|
5424869d8e | ||
|
|
68a2534d1b | ||
|
|
1699190334 | ||
|
|
d86d96acc1 | ||
|
|
f70dbf9cf3 | ||
|
|
33a1681536 | ||
|
|
fcb8da95ca | ||
|
|
e8148ab4dc | ||
|
|
c14f06615e | ||
|
|
1c0b28eacd | ||
|
|
d317a84b09 | ||
|
|
3972cf0194 | ||
|
|
6d408ac2b1 | ||
|
|
8338f8aaa0 | ||
|
|
fbd0561420 | ||
|
|
de854cc02c | ||
|
|
822e161e2e | ||
|
|
b60bf9fdf9 | ||
|
|
14b0a043d4 | ||
|
|
a2f5d66597 | ||
|
|
c02bc26799 | ||
|
|
932afec74a | ||
|
|
3da67e7d97 | ||
|
|
0c95b958aa | ||
|
|
8895ac329a | ||
|
|
cf0416e976 | ||
|
|
f8f3e4d9e8 | ||
|
|
d6bee9aa6d | ||
|
|
2d5e99a0d6 | ||
|
|
97b71347a6 | ||
|
|
10e3a0814f | ||
|
|
f909df204a | ||
|
|
661e6cc5da | ||
|
|
b2b911ec81 | ||
|
|
f238077944 | ||
|
|
3c930dacb8 | ||
|
|
6dcb46c0b8 | ||
|
|
27c7a5a3ad | ||
|
|
846bdfdc88 | ||
|
|
a2026cb3fd | ||
|
|
06fa539293 | ||
|
|
752f69d3ef | ||
|
|
897997b8ac | ||
|
|
526fa11c20 | ||
|
|
8eda98ff4c | ||
|
|
99d7a26b98 | ||
|
|
0aaadf9536 | ||
|
|
9adcbecce4 | ||
|
|
6605a84f2c | ||
|
|
6c9510d8f4 | ||
|
|
03a62dc23f | ||
|
|
93efacbef5 | ||
|
|
b6b28de8e2 | ||
|
|
faaed40b39 | ||
|
|
6b035f64d2 | ||
|
|
9f049dcb18 | ||
|
|
0141449e4f | ||
|
|
4ce49f259d | ||
|
|
0f35569e05 | ||
|
|
1c4dabed72 | ||
|
|
38114c0639 | ||
|
|
527c8370f1 | ||
|
|
6a9a57e2bc | ||
|
|
7b6f1b510e | ||
|
|
94bc7547d6 | ||
|
|
5a4552aaff | ||
|
|
06e314d301 | ||
|
|
8bead301ef | ||
|
|
6282445f7d | ||
|
|
bf244533f7 | ||
|
|
5ebfaf24ee | ||
|
|
0c0283dc02 | ||
|
|
375b08be87 | ||
|
|
cbc8f94b0a | ||
|
|
bdac8d163d | ||
|
|
1f61f37841 | ||
|
|
51d523ae72 | ||
|
|
3f9e4962e6 | ||
|
|
f8fc4fe56b | ||
|
|
fb64b7e412 | ||
|
|
3209cfbc45 | ||
|
|
8a99476136 | ||
|
|
eb80f8d111 | ||
|
|
afde3ce54d | ||
|
|
c4b61fec17 | ||
|
|
0b74abf300 | ||
|
|
e6c3c9f1d4 | ||
|
|
4e7560b4ed | ||
|
|
542491b278 | ||
|
|
d36439355d | ||
|
|
4a80815b39 | ||
|
|
6dc57f2566 | ||
|
|
07e8511ce1 | ||
|
|
8e927831f5 | ||
|
|
2c533d2ab3 | ||
|
|
38208750e7 | ||
|
|
df14d7c306 | ||
|
|
b3612db7d2 | ||
|
|
8d90da659e | ||
|
|
f8ddbc0622 | ||
|
|
673b7054aa | ||
|
|
1472cbf257 | ||
|
|
d806935c58 | ||
|
|
6b56eb79e1 | ||
|
|
d2aea16744 | ||
|
|
bb800f032e | ||
|
|
64b9f9443e | ||
|
|
fd2d3a0e06 | ||
|
|
08d678bdb8 | ||
|
|
418007e572 | ||
|
|
4a1bccdf75 | ||
|
|
00c0b59e9d | ||
|
|
ac82c8ff0b | ||
|
|
f4bef8a090 | ||
|
|
d8a1055bff | ||
|
|
d672ce4d80 | ||
|
|
43ec361d03 | ||
|
|
c3c99c5f76 | ||
|
|
eb1e1421ab | ||
|
|
e8a1d87919 | ||
|
|
921ba6811d | ||
|
|
906dd241b4 | ||
|
|
3f0cd2ad64 | ||
|
|
41420d1954 | ||
|
|
6e5a72b170 | ||
|
|
4b19e6aec8 | ||
|
|
58572cbc36 | ||
|
|
096d5766bf | ||
|
|
f5c5b56492 | ||
|
|
69c69d63e6 | ||
|
|
3fd8b21867 | ||
|
|
8660e8cd85 | ||
|
|
8458f725f2 | ||
|
|
366678c965 | ||
|
|
336b5668db | ||
|
|
55886269ea | ||
|
|
0b3698595b | ||
|
|
05e43a39db | ||
|
|
5737ad3db2 | ||
|
|
4ac174eb9a | ||
|
|
895eec10b4 | ||
|
|
e0d891e89a | ||
|
|
adf7734b85 | ||
|
|
5362be9c21 | ||
|
|
847ece52f2 | ||
|
|
851c59d22c | ||
|
|
0669534bba | ||
|
|
05db47e62a | ||
|
|
4a0e608d1c | ||
|
|
45fe73af86 | ||
|
|
4d9fcd657f | ||
|
|
a057deb0fe | ||
|
|
4766210a7d | ||
|
|
fd26aae6d3 | ||
|
|
c5c092cc8e | ||
|
|
58c0a21d90 | ||
|
|
8dc567f966 | ||
|
|
942b2752f5 | ||
|
|
b9259353f4 | ||
|
|
86c614dd40 | ||
|
|
1a010a16a9 | ||
|
|
d5b5726b1e | ||
|
|
d06f3b6bdf | ||
|
|
97a28f716c | ||
|
|
f54bdfcea0 | ||
|
|
5958c4b0ba | ||
|
|
7c3db881c7 | ||
|
|
51ee2e1b2c | ||
|
|
baa813004b | ||
|
|
86b5269d3d | ||
|
|
860e6dacac | ||
|
|
22025bd89e | ||
|
|
ed9301455d | ||
|
|
35df84e059 | ||
|
|
62deebf310 | ||
|
|
7ed4bd5c01 | ||
|
|
c8eb9332b4 | ||
|
|
1df55f9168 | ||
|
|
b726c6aa96 | ||
|
|
0a71962652 | ||
|
|
160946ef74 | ||
|
|
1dc67317dc | ||
|
|
08f4a2e8bf | ||
|
|
11ffdaa8f7 | ||
|
|
0f853303a4 | ||
|
|
d225eb9b16 | ||
|
|
d926e4b8bc | ||
|
|
3e2df1d4d8 | ||
|
|
d670dbf081 | ||
|
|
f510a312e3 | ||
|
|
19c44e3d31 | ||
|
|
d0848aee67 | ||
|
|
f4b4b6811c | ||
|
|
fecb3f1f7b | ||
|
|
4c924c0763 | ||
|
|
f1e8d70554 | ||
|
|
7d11bc152e | ||
|
|
fdf0a3135a | ||
|
|
3a1a455c48 | ||
|
|
3a786e835b | ||
|
|
c70181132f | ||
|
|
538615a1f5 | ||
|
|
aa20a60a1c | ||
|
|
69fa1dac6c | ||
|
|
3ab349af6e | ||
|
|
97ac7deb2f | ||
|
|
3230cafb9f | ||
|
|
394284d8de | ||
|
|
6323b174c6 | ||
|
|
3d3e0e5139 | ||
|
|
ffc7d4bacc | ||
|
|
598236a1d2 | ||
|
|
69207519bd | ||
|
|
022eb1012f | ||
|
|
0a9c59f91e | ||
|
|
7ebb22b892 | ||
|
|
3dc7fc6f14 | ||
|
|
90dea7517b | ||
|
|
eae48f9564 | ||
|
|
dd7afba5f5 | ||
|
|
73357b6777 | ||
|
|
53df6bbcc6 | ||
|
|
9871559227 | ||
|
|
9cbead1ddc | ||
|
|
6402028c17 | ||
|
|
76bd65cf53 | ||
|
|
6e4113de11 | ||
|
|
12f37f76c7 | ||
|
|
acd77b2c0a | ||
|
|
f4fb4ec00d | ||
|
|
46ae4669ea | ||
|
|
67b2dbfe98 | ||
|
|
4f3b39fbfa | ||
|
|
a28fc52309 | ||
|
|
d5f0d60794 | ||
|
|
72e65587df | ||
|
|
b4d4d90784 | ||
|
|
3f81fb759d | ||
|
|
d995b39e02 | ||
|
|
3bd09a1aa4 | ||
|
|
a6ff951c98 | ||
|
|
604b1557e8 | ||
|
|
279bd5c71a | ||
|
|
97dfb02ab6 | ||
|
|
32c7b02303 | ||
|
|
e135835e61 | ||
|
|
7ed9a8075c | ||
|
|
ead8110fb4 | ||
|
|
586b1b6c15 | ||
|
|
e1727c8d80 | ||
|
|
7bd8a7ff35 | ||
|
|
de48651ae7 | ||
|
|
9902e07be0 | ||
|
|
5e4b38895e | ||
|
|
38bbbf261a | ||
|
|
def0a52578 | ||
|
|
4f1f87bda0 | ||
|
|
15f9faa2fa | ||
|
|
7257491d8b | ||
|
|
c19b2a9ebe | ||
|
|
54e7fd0293 | ||
|
|
21f3a2082b | ||
|
|
f647eb5a7b | ||
|
|
d7b1db0081 | ||
|
|
11511316d1 | ||
|
|
95a93c2c44 | ||
|
|
815ce10c25 | ||
|
|
5f13bfe8a1 | ||
|
|
5cd494c00a | ||
|
|
5a0a8bedc1 | ||
|
|
3b9884160b | ||
|
|
5b2b01328a | ||
|
|
e5b51dcd16 | ||
|
|
4d8b816acf | ||
|
|
fa109c1b0b | ||
|
|
b987fce627 | ||
|
|
b072cc3266 | ||
|
|
366b40ea90 | ||
|
|
3d3daa205d | ||
|
|
665ebbd11a | ||
|
|
52a5a7697d | ||
|
|
97a38d516a | ||
|
|
e89475bf52 | ||
|
|
90a78b05ce | ||
|
|
8c6eff15f0 | ||
|
|
824c58b391 | ||
|
|
b97500430c | ||
|
|
bacafc67c9 | ||
|
|
f23ebcdc2d | ||
|
|
edbe8e3561 | ||
|
|
05d1e33b30 | ||
|
|
96b60ce0f5 | ||
|
|
6174bc7ffd | ||
|
|
3bd022e03a | ||
|
|
b0cc5b0b60 | ||
|
|
5493f70458 | ||
|
|
323b3d9d16 | ||
|
|
1b0742ad2a | ||
|
|
2eb7217f49 | ||
|
|
b6f5a286b0 | ||
|
|
66c496fb10 | ||
|
|
56ca588c1e | ||
|
|
e2b09caff3 | ||
|
|
a5b4a4c59f | ||
|
|
a70312a90a | ||
|
|
6c6a3238cb | ||
|
|
9af10d4bcb | ||
|
|
f6e1b4611e | ||
|
|
7bc762d357 | ||
|
|
8edf1da92b | ||
|
|
a18baf2ffe | ||
|
|
2d41bf8f2f | ||
|
|
334778bdae | ||
|
|
1b46a06eee | ||
|
|
1e860e9443 | ||
|
|
0b973672d2 | ||
|
|
868ed85c7f | ||
|
|
6f2a24ec66 | ||
|
|
e5d5899a15 | ||
|
|
243473a97d | ||
|
|
28d71b8ce2 | ||
|
|
1acbf90261 | ||
|
|
94229f84a3 | ||
|
|
cead74238a | ||
|
|
73c60ea94c | ||
|
|
73638da4db | ||
|
|
bc218b73e1 | ||
|
|
aac6632f4b | ||
|
|
fdba3fdc74 | ||
|
|
21bb61ec82 | ||
|
|
ce1203d64d | ||
|
|
56daf15c8e | ||
|
|
96faa924d8 | ||
|
|
ee8854451c | ||
|
|
0975e925a9 | ||
|
|
83d6a2169b | ||
|
|
21e7a4d966 | ||
|
|
404cd24855 | ||
|
|
b4ad72ee67 | ||
|
|
bea628b619 | ||
|
|
3637e54982 | ||
|
|
e0d1a0a612 | ||
|
|
3040996671 | ||
|
|
dd830e7500 | ||
|
|
d2dfe2c418 | ||
|
|
139fb6b6e0 | ||
|
|
c4f6976c42 | ||
|
|
ab428fc104 | ||
|
|
aa97f78acd | ||
|
|
dbce900aeb | ||
|
|
30b382e2e7 | ||
|
|
433c4abb86 | ||
|
|
64404e4092 | ||
|
|
08d483af8a | ||
|
|
fa19c17941 | ||
|
|
c896a999ad | ||
|
|
f9bca935ac | ||
|
|
7abf274d89 | ||
|
|
e2ad417306 | ||
|
|
2ea9655f6b | ||
|
|
f450d5d9de | ||
|
|
f8f4b73a09 | ||
|
|
926d96732d | ||
|
|
167113d6a3 | ||
|
|
911cb614a5 | ||
|
|
7a939b7024 | ||
|
|
6e57a60997 | ||
|
|
9f1151e699 | ||
|
|
3fbe1fb63d | ||
|
|
d4906eec5a | ||
|
|
ebe0663e74 | ||
|
|
04c89b9711 | ||
|
|
4f2bc874e5 | ||
|
|
316ac5c3c8 | ||
|
|
7882aa667e | ||
|
|
8b8d5eecbf | ||
|
|
65b76643ee | ||
|
|
f33e645113 | ||
|
|
528d30c317 | ||
|
|
7f0a3d320c | ||
|
|
8e940aeb65 | ||
|
|
a77ee60809 | ||
|
|
83383c29cd | ||
|
|
b6393141e8 | ||
|
|
10ce1827d8 | ||
|
|
605f3a12ff | ||
|
|
a33539e75f | ||
|
|
b2cca3687a | ||
|
|
628c54044f | ||
|
|
c0e7a3eece | ||
|
|
c7c13c19c1 | ||
|
|
d5f71b5878 | ||
|
|
cb589e9e26 | ||
|
|
eaeed47297 | ||
|
|
e00e5c5cd7 | ||
|
|
b3719f7166 | ||
|
|
337896974b | ||
|
|
bb7d1fc9ab | ||
|
|
07765c8d44 | ||
|
|
85cb91071e | ||
|
|
d41839845a | ||
|
|
c3d12aa55f | ||
|
|
a781e4b84c | ||
|
|
1fc0989fd2 | ||
|
|
14752260d3 | ||
|
|
84675c874f | ||
|
|
f30e6057be | ||
|
|
ba8b629f0e | ||
|
|
a0a45ff2aa | ||
|
|
325f890a0b |
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"presets": [
|
||||||
|
[
|
||||||
|
"@babel/preset-env",
|
||||||
|
{
|
||||||
|
"useBuiltIns": "usage",
|
||||||
|
"corejs": 3,
|
||||||
|
"modules": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"plugins": [
|
||||||
|
"lodash"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
parser: "vue-eslint-parser",
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"es2021": true
|
||||||
|
},
|
||||||
|
ignorePatterns: ['*.test.ts', '.eslintrc.cjs', 'webpack.config.cjs', '*.js'],
|
||||||
|
overrides: [{
|
||||||
|
files: ['*.ts', '*.tsx', "*.vue"],
|
||||||
|
}],
|
||||||
|
plugins: [
|
||||||
|
"@typescript-eslint"
|
||||||
|
],
|
||||||
|
|
||||||
|
extends: [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:vue/vue3-essential",
|
||||||
|
"plugin:@typescript-eslint/recommended"
|
||||||
|
],
|
||||||
|
parserOptions: {
|
||||||
|
"sourceType": "module",
|
||||||
|
"project": "./tsconfig.json",
|
||||||
|
"ecmaVersion": 2021,
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
extraFileExtensions: ['.vue']
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'@typescript-eslint/no-floating-promises': 'error',
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
'import/resolver': {
|
||||||
|
alias: {
|
||||||
|
map: [
|
||||||
|
['@', './hwe/ts'],
|
||||||
|
['@util', './hwe/ts/util'],
|
||||||
|
['@scss', './hwe/scss'],
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
+17
-1
@@ -4,7 +4,8 @@
|
|||||||
!.vscode/launch.json
|
!.vscode/launch.json
|
||||||
!.vscode/extensions.json
|
!.vscode/extensions.json
|
||||||
|
|
||||||
|
/node_modules
|
||||||
|
package-lock.json
|
||||||
|
|
||||||
|
|
||||||
# 체섭 ignore
|
# 체섭 ignore
|
||||||
@@ -26,14 +27,24 @@ hwe/.htaccess
|
|||||||
|
|
||||||
d_shared
|
d_shared
|
||||||
|
|
||||||
|
/d_pic
|
||||||
d_pic/*.jpg
|
d_pic/*.jpg
|
||||||
d_pic/*.gif
|
d_pic/*.gif
|
||||||
d_pic/*.png
|
d_pic/*.png
|
||||||
|
d_pic/*.webp
|
||||||
d_pic/uploaded_image
|
d_pic/uploaded_image
|
||||||
|
|
||||||
|
*/dist_misc/*
|
||||||
|
*/dist_js/*
|
||||||
|
*/dist_css/*
|
||||||
|
/dist_misc/*
|
||||||
|
/dist_js/*
|
||||||
|
/dist_css/*
|
||||||
|
|
||||||
d_setting/*.php
|
d_setting/*.php
|
||||||
*/d_setting/*.php
|
*/d_setting/*.php
|
||||||
*/d_setting/templates/*.php
|
*/d_setting/templates/*.php
|
||||||
|
!*.orig.php
|
||||||
|
|
||||||
*/data/file_cache
|
*/data/file_cache
|
||||||
|
|
||||||
@@ -50,3 +61,8 @@ test.php
|
|||||||
phpinfo.php
|
phpinfo.php
|
||||||
vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/*
|
vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/*
|
||||||
*.sqlite3
|
*.sqlite3
|
||||||
|
|
||||||
|
ingame/js/*
|
||||||
|
ingame/css/*
|
||||||
|
gateway/js/*
|
||||||
|
gateway/css/*
|
||||||
+41
-27
@@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
return [
|
return [
|
||||||
// Supported values: `'5.6'`, `'7.0'`, `'7.1'`, `'7.2'`, `'7.3'`,
|
// Supported values: `'5.6'`, `'7.0'`, `'7.1'`, `'7.2'`, `'7.3'`,
|
||||||
// `'7.4'`, `null`.
|
// `'7.4'`, `'8.0'`, `'8.1'`, `null`.
|
||||||
// If this is set to `null`,
|
// If this is set to `null`,
|
||||||
// then Phan assumes the PHP version which is closest to the minor version
|
// then Phan assumes the PHP version which is closest to the minor version
|
||||||
// of the php executable used to execute Phan.
|
// of the php executable used to execute Phan.
|
||||||
@@ -15,21 +15,34 @@ return [
|
|||||||
// Note that the **only** effect of choosing `'5.6'` is to infer
|
// Note that the **only** effect of choosing `'5.6'` is to infer
|
||||||
// that functions removed in php 7.0 exist.
|
// that functions removed in php 7.0 exist.
|
||||||
// (See `backward_compatibility_checks` for additional options)
|
// (See `backward_compatibility_checks` for additional options)
|
||||||
"target_php_version" => '7.3',
|
"target_php_version" => '8.0',
|
||||||
'backward_compatibility_checks ' => false,
|
'backward_compatibility_checks ' => true,
|
||||||
'minimum_severity' => \Phan\Issue::SEVERITY_NORMAL,
|
'minimum_severity' => \Phan\Issue::SEVERITY_NORMAL,
|
||||||
|
|
||||||
'file_list' => [
|
'file_list' => [
|
||||||
'f_config/config.php',
|
'f_config/config.php',
|
||||||
|
'hwe/_119_b.php',
|
||||||
|
'hwe/_119.php',
|
||||||
'hwe/a_bestGeneral.php',
|
'hwe/a_bestGeneral.php',
|
||||||
'hwe/a_emperior.php',
|
'hwe/_admin1.php',
|
||||||
'hwe/a_emperior2.php',
|
'hwe/_admin1_submit.php',
|
||||||
|
'hwe/_admin2.php',
|
||||||
|
'hwe/_admin2_submit.php',
|
||||||
|
'hwe/_admin4.php',
|
||||||
|
'hwe/_admin4_submit.php',
|
||||||
|
'hwe/_admin5.php',
|
||||||
|
'hwe/_admin5_submit.php',
|
||||||
|
'hwe/_admin7.php',
|
||||||
|
'hwe/_admin8.php',
|
||||||
|
'hwe/_admin_force_rehall.php',
|
||||||
'hwe/a_emperior_detail.php',
|
'hwe/a_emperior_detail.php',
|
||||||
|
'hwe/a_emperior.php',
|
||||||
'hwe/a_genList.php',
|
'hwe/a_genList.php',
|
||||||
'hwe/a_hallOfFame.php',
|
'hwe/a_hallOfFame.php',
|
||||||
'hwe/a_history.php',
|
'hwe/a_history.php',
|
||||||
'hwe/a_kingdomList.php',
|
'hwe/a_kingdomList.php',
|
||||||
'hwe/a_npcList.php',
|
'hwe/a_npcList.php',
|
||||||
|
'hwe/api.php',
|
||||||
'hwe/a_status.php',
|
'hwe/a_status.php',
|
||||||
'hwe/a_traffic.php',
|
'hwe/a_traffic.php',
|
||||||
'hwe/a_vote.php',
|
'hwe/a_vote.php',
|
||||||
@@ -54,7 +67,6 @@ return [
|
|||||||
'hwe/c_dipcenter.php',
|
'hwe/c_dipcenter.php',
|
||||||
'hwe/c_tournament.php',
|
'hwe/c_tournament.php',
|
||||||
'hwe/c_vote.php',
|
'hwe/c_vote.php',
|
||||||
'hwe/func.php',
|
|
||||||
'hwe/func_auction.php',
|
'hwe/func_auction.php',
|
||||||
'hwe/func_command.php',
|
'hwe/func_command.php',
|
||||||
'hwe/func_converter.php',
|
'hwe/func_converter.php',
|
||||||
@@ -63,16 +75,15 @@ return [
|
|||||||
'hwe/func_legacy.php',
|
'hwe/func_legacy.php',
|
||||||
'hwe/func_map.php',
|
'hwe/func_map.php',
|
||||||
'hwe/func_message.php',
|
'hwe/func_message.php',
|
||||||
|
'hwe/func.php',
|
||||||
'hwe/func_process.php',
|
'hwe/func_process.php',
|
||||||
'hwe/func_string.php',
|
'hwe/func_string.php',
|
||||||
'hwe/func_template.php',
|
'hwe/func_template.php',
|
||||||
'hwe/func_time_event.php',
|
'hwe/func_time_event.php',
|
||||||
'hwe/func_tournament.php',
|
'hwe/func_tournament.php',
|
||||||
'hwe/index.php',
|
'hwe/index.php',
|
||||||
'hwe/install.php',
|
|
||||||
'hwe/install_db.php',
|
'hwe/install_db.php',
|
||||||
'hwe/join.php',
|
'hwe/install.php',
|
||||||
'hwe/join_post.php',
|
|
||||||
'hwe/j_adjust_icon.php',
|
'hwe/j_adjust_icon.php',
|
||||||
'hwe/j_autoreset.php',
|
'hwe/j_autoreset.php',
|
||||||
'hwe/j_basic_info.php',
|
'hwe/j_basic_info.php',
|
||||||
@@ -87,20 +98,23 @@ return [
|
|||||||
'hwe/j_diplomacy_respond_letter.php',
|
'hwe/j_diplomacy_respond_letter.php',
|
||||||
'hwe/j_diplomacy_rollback_letter.php',
|
'hwe/j_diplomacy_rollback_letter.php',
|
||||||
'hwe/j_diplomacy_send_letter.php',
|
'hwe/j_diplomacy_send_letter.php',
|
||||||
|
'hwe/j_export_simulator_object.php',
|
||||||
|
'hwe/j_general_log_old.php',
|
||||||
'hwe/j_general_set_permission.php',
|
'hwe/j_general_set_permission.php',
|
||||||
'hwe/j_general_turn.php',
|
'hwe/j_get_basic_general_list.php',
|
||||||
'hwe/j_getChiefTurn.php',
|
'hwe/j_getChiefTurn.php',
|
||||||
'hwe/j_get_city_list.php',
|
'hwe/j_get_city_list.php',
|
||||||
'hwe/j_get_general_list.php',
|
'hwe/j_get_general_list.php',
|
||||||
'hwe/j_get_nation_general_list.php',
|
'hwe/j_get_nation_general_list.php',
|
||||||
'hwe/j_get_reserved_command.php',
|
|
||||||
'hwe/j_get_select_npc_token.php',
|
'hwe/j_get_select_npc_token.php',
|
||||||
|
'hwe/j_get_select_pool.php',
|
||||||
'hwe/j_image_upload.php',
|
'hwe/j_image_upload.php',
|
||||||
'hwe/j_install.php',
|
|
||||||
'hwe/j_install_db.php',
|
'hwe/j_install_db.php',
|
||||||
|
'hwe/j_install.php',
|
||||||
'hwe/j_load_scenarios.php',
|
'hwe/j_load_scenarios.php',
|
||||||
'hwe/j_map.php',
|
|
||||||
'hwe/j_map_history.php',
|
'hwe/j_map_history.php',
|
||||||
|
'hwe/j_map.php',
|
||||||
|
'hwe/j_map_recent.php',
|
||||||
'hwe/j_msg_contact_list.php',
|
'hwe/j_msg_contact_list.php',
|
||||||
'hwe/j_msg_decide_opt.php',
|
'hwe/j_msg_decide_opt.php',
|
||||||
'hwe/j_msg_delete.php',
|
'hwe/j_msg_delete.php',
|
||||||
@@ -108,31 +122,30 @@ return [
|
|||||||
'hwe/j_msg_get_recent.php',
|
'hwe/j_msg_get_recent.php',
|
||||||
'hwe/j_msg_submit.php',
|
'hwe/j_msg_submit.php',
|
||||||
'hwe/j_myBossInfo.php',
|
'hwe/j_myBossInfo.php',
|
||||||
|
'hwe/j_raise_event.php',
|
||||||
'hwe/j_select_npc.php',
|
'hwe/j_select_npc.php',
|
||||||
|
'hwe/j_select_picked_general.php',
|
||||||
'hwe/j_server_basic_info.php',
|
'hwe/j_server_basic_info.php',
|
||||||
'hwe/j_set_chief_command.php',
|
'hwe/j_set_chief_command.php',
|
||||||
'hwe/j_set_general_command.php',
|
'hwe/j_set_general_command.php',
|
||||||
|
'hwe/j_set_my_setting.php',
|
||||||
|
'hwe/j_set_npc_control.php',
|
||||||
'hwe/j_simulate_battle.php',
|
'hwe/j_simulate_battle.php',
|
||||||
'hwe/j_troop.php',
|
'hwe/j_troop.php',
|
||||||
|
'hwe/j_update_picked_general.php',
|
||||||
'hwe/j_vacation.php',
|
'hwe/j_vacation.php',
|
||||||
'hwe/lib.php',
|
'hwe/lib.php',
|
||||||
'hwe/process_war.php',
|
'hwe/process_war.php',
|
||||||
|
'hwe/proc.php',
|
||||||
|
'hwe/readme.php',
|
||||||
|
'hwe/recent_map.php',
|
||||||
|
'hwe/select_general_from_pool.php',
|
||||||
'hwe/select_npc.php',
|
'hwe/select_npc.php',
|
||||||
'hwe/t_board.php',
|
|
||||||
'hwe/t_diplomacy.php',
|
'hwe/t_diplomacy.php',
|
||||||
'hwe/_119.php',
|
'hwe/v_board.php',
|
||||||
'hwe/_119_b.php',
|
'hwe/v_inheritPoint.php',
|
||||||
'hwe/_admin1.php',
|
'hwe/v_join.php',
|
||||||
'hwe/_admin1_submit.php',
|
'hwe/v_NPCControl.php',
|
||||||
'hwe/_admin2.php',
|
|
||||||
'hwe/_admin2_submit.php',
|
|
||||||
'hwe/_admin4.php',
|
|
||||||
'hwe/_admin4_submit.php',
|
|
||||||
'hwe/_admin5.php',
|
|
||||||
'hwe/_admin5_submit.php',
|
|
||||||
'hwe/_admin7.php',
|
|
||||||
'hwe/_admin8.php',
|
|
||||||
'hwe/_admin_force_rehall.php',
|
|
||||||
],
|
],
|
||||||
|
|
||||||
// A list of directories that should be parsed for class and
|
// A list of directories that should be parsed for class and
|
||||||
@@ -169,6 +182,7 @@ return [
|
|||||||
|
|
||||||
'suppress_issue_types' => [
|
'suppress_issue_types' => [
|
||||||
'PhanUnreferencedUseNormal',
|
'PhanUnreferencedUseNormal',
|
||||||
|
'PhanTypeArraySuspiciousNullable',
|
||||||
],
|
],
|
||||||
|
|
||||||
// A list of plugin files to execute.
|
// A list of plugin files to execute.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<title>닫혀 있습니다.</title>
|
<title>닫혀 있습니다.</title>
|
||||||
<script>
|
<script>
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
window.location = window.location+'/../';
|
window.location.href = '../';
|
||||||
}, 5000);
|
}, 5000);
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
The MIT License
|
The MIT License
|
||||||
|
|
||||||
Copyright (c) 2020 Hide_D, 62che
|
Copyright (c) 2021 Hide_D, 62che
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -5,22 +5,24 @@
|
|||||||
|
|
||||||
## 요구사항
|
## 요구사항
|
||||||
|
|
||||||
* Apache2
|
* Apache2 또는 nginx
|
||||||
* <code>mpm_event</code> 권장
|
* Apache2인 경우 `mpm_event` 권장
|
||||||
* PHP 7.3 이상
|
* PHP 8.0 이상
|
||||||
* <code>php-fpm</code> 권장
|
* `php-fpm` 권장
|
||||||
* php에서 curl, pdo-sqlite을 실행가능해야 합니다. (기본값: 지원)
|
* php에서 curl, pdo-sqlite을 실행가능해야 합니다.
|
||||||
* mysqlnd가 지원되어야합니다. (기본값: 지원)
|
* mysqli, mysqlnd
|
||||||
* mysqli
|
|
||||||
* gd
|
* gd
|
||||||
|
* mbstring
|
||||||
|
* NodeJS 14 이상
|
||||||
|
* 내부의 git을 통해 upgrade 때 `webpack build` 용도로 필요합니다.
|
||||||
* MariaDB 10.2.1 이상
|
* MariaDB 10.2.1 이상
|
||||||
* 현재 MySQL은 지원하지 않습니다.
|
* 현재 MySQL은 지원하지 않습니다.
|
||||||
* <code>git</code>
|
* `git`
|
||||||
* <code>curl</code>
|
* `curl`
|
||||||
|
|
||||||
Linux는 Ubuntu 16.04, 18.04, Windows는 Windows 10에서 XAMPP를 사용한 환경에서 테스트되었습니다.
|
Linux는 Ubuntu 18.04, 20.04, Windows는 WSL2를 사용한 환경에서 테스트되었습니다.
|
||||||
|
|
||||||
Docker를 이용한 설치는 계획중입니다.
|
Docker를 이용한 설치도 제공하고 있습니다.
|
||||||
|
|
||||||
## Docker를 이용한 설치
|
## Docker를 이용한 설치
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
require(__DIR__ . '/vendor/autoload.php');
|
||||||
|
|
||||||
|
|
||||||
|
if (!class_exists('\\sammo\\RootDB')) {
|
||||||
|
Json::dieWithReason('No DB');
|
||||||
|
}
|
||||||
|
|
||||||
|
APIHelper::launch(dirname(__FILE__));
|
||||||
+5
-4
@@ -8,7 +8,7 @@
|
|||||||
],
|
],
|
||||||
"config": {
|
"config": {
|
||||||
"platform": {
|
"platform": {
|
||||||
"php": "7.3"
|
"php": "8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -16,7 +16,6 @@
|
|||||||
"sergeytsalkov/meekrodb": "^2.3",
|
"sergeytsalkov/meekrodb": "^2.3",
|
||||||
"league/plates": "^3.3",
|
"league/plates": "^3.3",
|
||||||
"guzzlehttp/guzzle": "^6.3",
|
"guzzlehttp/guzzle": "^6.3",
|
||||||
"scssphp/scssphp": "^1.0",
|
|
||||||
"monolog/monolog": "^1.23",
|
"monolog/monolog": "^1.23",
|
||||||
"firephp/firephp-core": "^0.4.0",
|
"firephp/firephp-core": "^0.4.0",
|
||||||
"vlucas/valitron": "^1.4",
|
"vlucas/valitron": "^1.4",
|
||||||
@@ -26,9 +25,11 @@
|
|||||||
"ezyang/htmlpurifier": "^4.10",
|
"ezyang/htmlpurifier": "^4.10",
|
||||||
"xemlock/htmlpurifier-html5": "^0.1.7",
|
"xemlock/htmlpurifier-html5": "^0.1.7",
|
||||||
"catfan/medoo": "^1.5",
|
"catfan/medoo": "^1.5",
|
||||||
"phan/phan": "^2.7",
|
"phan/phan": "*",
|
||||||
"erusev/parsedown-extra": "^0.8.1",
|
"erusev/parsedown-extra": "^0.8.1",
|
||||||
"nette/caching": "^3.0"
|
"nette/caching": "^3.0",
|
||||||
|
"illuminate/database": "^8.61",
|
||||||
|
"illuminate/events": "^8.61"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
|
|||||||
Generated
+2205
-348
File diff suppressed because it is too large
Load Diff
Regular → Executable
BIN
Binary file not shown.
+80
-27
@@ -1,24 +1,37 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
body {
|
body {
|
||||||
color:white; background-color:black; font-family: '맑은 고딕';
|
color: white;
|
||||||
|
background-color: black;
|
||||||
|
font-family: 'Pretendard';
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
border: solid 1px; border-spacing: 0px; border-collapse: separate; border-top-color: gray; border-left-color: gray; border-right-color: black; border-bottom-color: black;
|
border: solid 1px;
|
||||||
|
border-spacing: 0px;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-top-color: gray;
|
||||||
|
border-left-color: gray;
|
||||||
|
border-right-color: black;
|
||||||
|
border-bottom-color: black;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
font-size: 13px;
|
font-size: 14px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: '맑은 고딕';
|
|
||||||
}
|
}
|
||||||
th, td {
|
|
||||||
border: solid 1px; border-spacing: 0px; border-collapse: separate; border-top-color: gray; border-left-color: gray; border-right-color: black; border-bottom-color: black;
|
th,
|
||||||
|
td {
|
||||||
|
border: solid 1px;
|
||||||
|
border-spacing: 0px;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-top-color: gray;
|
||||||
|
border-left-color: gray;
|
||||||
|
border-right-color: black;
|
||||||
|
border-bottom-color: black;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
font-size: 13px;
|
font-size: 14px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: '맑은 고딕';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
a.just_link {
|
a.just_link {
|
||||||
@@ -39,19 +52,25 @@ a.just_link {
|
|||||||
.section_title {
|
.section_title {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
line-height: 50px;
|
line-height: 50px;
|
||||||
font-size: 30px; font-weight: bold;
|
font-size: 30px;
|
||||||
|
font-weight: bold;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: white;
|
color: white;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.legacy_layout div {
|
.legacy_layout div {
|
||||||
border: solid 1px; border-spacing: 0px; border-collapse: separate; border-top-color: gray; border-left-color: gray; border-right-color: black; border-bottom-color: black;
|
border: solid 1px;
|
||||||
|
border-spacing: 0px;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-top-color: gray;
|
||||||
|
border-left-color: gray;
|
||||||
|
border-right-color: black;
|
||||||
|
border-bottom-color: black;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
font-size: 13px;
|
font-size: 14px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: '맑은 고딕';;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.obj_fill {
|
.obj_fill {
|
||||||
@@ -62,9 +81,9 @@ a.just_link {
|
|||||||
|
|
||||||
button.with_skin {
|
button.with_skin {
|
||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
background-color: black; color: white;
|
background-color: black;
|
||||||
font-family: '맑은 고딕';
|
color: white;
|
||||||
font-size: 13px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
button.with_skin:disabled {
|
button.with_skin:disabled {
|
||||||
@@ -72,27 +91,43 @@ button.with_skin:disabled {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input.with_skin {
|
input.with_skin {
|
||||||
background-color: black; color: white;
|
background-color: black;
|
||||||
font-family: '맑은 고딕';
|
color: white;
|
||||||
font-size: 13px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
input.with_skin:disabled {
|
input.with_skin:disabled {
|
||||||
background-color: #333333;
|
background-color: #333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.font0 { font-size: 10px; }
|
.font0 {
|
||||||
.font1 { font-size: 13px; }
|
font-size: 10px;
|
||||||
.font2 { font-size: 15px; }
|
}
|
||||||
.font3 { font-size: 20px; }
|
|
||||||
.font4 { font-size: 30px; }
|
.font1 {
|
||||||
.font5 { font-size: 50px; }
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.font2 {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.font3 {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.font4 {
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.font5 {
|
||||||
|
font-size: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
caption.section_title {
|
caption.section_title {
|
||||||
caption-side: top;
|
caption-side: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.samButton {
|
.samButton {
|
||||||
float: left;
|
float: left;
|
||||||
display: block;
|
display: block;
|
||||||
@@ -123,7 +158,6 @@ a.samButton.disabled {
|
|||||||
border: inset 2px white;
|
border: inset 2px white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.samButtonInner {
|
.samButtonInner {
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
@@ -180,3 +214,22 @@ a.samButton.disabled {
|
|||||||
color: rgba(0, 0, 0, 0);
|
color: rgba(0, 0, 0, 0);
|
||||||
font-size: 0;
|
font-size: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.vertical_flex {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vertical_flex .item {
|
||||||
|
display: block;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fill_box {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
+48
-33
@@ -1,5 +1,4 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
body {
|
body {
|
||||||
line-height: 1.3;
|
line-height: 1.3;
|
||||||
}
|
}
|
||||||
@@ -25,18 +24,6 @@ body{
|
|||||||
height: 66px;
|
height: 66px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#server_list .server_create_and_select .general_create,
|
|
||||||
#server_list .server_create_and_select .general_select {
|
|
||||||
width: 120px; height: 33px;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#server_list .general_create,
|
|
||||||
#server_list .general_login {
|
|
||||||
width: 120px; height: 66px;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ignore_border {
|
.ignore_border {
|
||||||
border: 0;
|
border: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@@ -45,10 +32,10 @@ body{
|
|||||||
|
|
||||||
#user_info {
|
#user_info {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
width: 800px; height: 130px;
|
width: 800px;
|
||||||
|
height: 130px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#user_info button {
|
#user_info button {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
@@ -60,82 +47,110 @@ body{
|
|||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerList {
|
.Entrance_ServerList {
|
||||||
width: 800px; height: 64px;
|
width: 800px;
|
||||||
|
height: 64px;
|
||||||
border: none;
|
border: none;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListServer {
|
.Entrance_ServerListServer {
|
||||||
width: 98px; height: 64px;
|
width: 98px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListDown {
|
.Entrance_ServerListDown {
|
||||||
width: 698px; height: 64px;
|
width: 698px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListInfo {
|
.Entrance_ServerListInfo {
|
||||||
width: 398px; height: 64px;
|
width: 398px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListBlock {
|
.Entrance_ServerListBlock {
|
||||||
width: 298px; height: 64px;
|
width: 298px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
line-height: 64px;
|
line-height: 64px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListCharacter {
|
.Entrance_ServerListCharacter {
|
||||||
width: 64px; height: 64px;
|
width: 64px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_ServerListName {
|
.Entrance_ServerListName {
|
||||||
width: 112px; height: 64px;
|
width: 112px;
|
||||||
|
height: 64px;
|
||||||
float: left;
|
float: left;
|
||||||
line-height: 64px;
|
line-height: 64px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.Entrance_ServerListSelect {
|
.Entrance_ServerListSelect {
|
||||||
width: 120px; height: 32px;
|
width: 120px;
|
||||||
|
height: 32px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#Entrance_000003 {
|
#Entrance_000003 {
|
||||||
width: 798px; height: 155px;
|
width: 798px;
|
||||||
|
height: 155px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Alert {
|
.Entrance_Alert {
|
||||||
color: red; font-size: 15px; font-weight: bold;
|
color: red;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Che {
|
.Entrance_Che {
|
||||||
color: white; font-size: 15px; font-weight: bold;
|
color: white;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Kwe {
|
.Entrance_Kwe {
|
||||||
color: yellow; font-size: 15px; font-weight: bold;
|
color: yellow;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Pwe {
|
.Entrance_Pwe {
|
||||||
color: orange; font-size: 15px; font-weight: bold;
|
color: orange;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Twe {
|
.Entrance_Twe {
|
||||||
color: magenta; font-size: 15px; font-weight: bold;
|
color: magenta;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Nya {
|
.Entrance_Nya {
|
||||||
color: #e67e22; font-size: 15px; font-weight: bold;
|
color: #e67e22;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Pya {
|
.Entrance_Pya {
|
||||||
color: #9b59b6; font-size: 15px; font-weight: bold;
|
color: #9b59b6;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Entrance_Hwe {
|
.Entrance_Hwe {
|
||||||
color: red; font-size: 15px; font-weight: bold;
|
color: red;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.BtnPlate {
|
||||||
|
height: inherit;
|
||||||
}
|
}
|
||||||
+1
-1
@@ -9,7 +9,7 @@ body, html{
|
|||||||
|
|
||||||
h1.title {
|
h1.title {
|
||||||
font-size: 50px;
|
font-size: 50px;
|
||||||
font-family: 'Passion One', cursive;
|
font-family: 'Pretendard', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic';
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
h1.title {
|
h1.title {
|
||||||
font-size: 50px;
|
font-size: 50px;
|
||||||
font-family: 'Passion One', cursive;
|
font-family: 'Pretendard', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic';
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+3
-3
File diff suppressed because one or more lines are too long
+27
-2
@@ -117,7 +117,7 @@ function logError(string $err, string $errstr, string $errpath, array $trace)
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext)
|
function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext=null)
|
||||||
{
|
{
|
||||||
if (!(error_reporting() & $errno)) {
|
if (!(error_reporting() & $errno)) {
|
||||||
// This error code is not included in error_reporting, so let it fall
|
// This error code is not included in error_reporting, so let it fall
|
||||||
@@ -134,7 +134,7 @@ function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, in
|
|||||||
getExceptionTraceAsString($e)
|
getExceptionTraceAsString($e)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
set_error_handler("\sammo\logErrorByCustomHandler");
|
set_error_handler("\\sammo\\logErrorByCustomHandler");
|
||||||
|
|
||||||
|
|
||||||
function logExceptionByCustomHandler(\Throwable $e)
|
function logExceptionByCustomHandler(\Throwable $e)
|
||||||
@@ -151,3 +151,28 @@ function logExceptionByCustomHandler(\Throwable $e)
|
|||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
set_exception_handler('\\sammo\\logExceptionByCustomHandler');
|
set_exception_handler('\\sammo\\logExceptionByCustomHandler');
|
||||||
|
|
||||||
|
function getAPIExecutorClass($path){
|
||||||
|
|
||||||
|
static $basePath = __NAMESPACE__.'\\API\\';
|
||||||
|
if(is_string($path)){
|
||||||
|
}
|
||||||
|
else if(is_array($path)){
|
||||||
|
$path = join('\\', $path);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
throw new \InvalidArgumentException("{$path}는 올바른 API 지시자가 아님");
|
||||||
|
}
|
||||||
|
|
||||||
|
$classPath = str_replace('/', '\\', $basePath.$path);
|
||||||
|
|
||||||
|
if(class_exists($classPath)){
|
||||||
|
return $classPath;
|
||||||
|
}
|
||||||
|
throw new \InvalidArgumentException("{$path}는 올바른 API 경로가 아님");
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildAPIExecutorClass($type, string $rootPath, array $args):\sammo\BaseAPI{
|
||||||
|
$class = getAPIExecutorClass($type);
|
||||||
|
return new $class($rootPath, $args);
|
||||||
|
}
|
||||||
+36
-47
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
require(__DIR__ . '/../vendor/autoload.php');
|
require(__DIR__ . '/../vendor/autoload.php');
|
||||||
@@ -6,20 +7,26 @@ require(__DIR__.'/../vendor/autoload.php');
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko">
|
<html lang="ko">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>설치</title>
|
<title>설치</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?php /* NOTE: 설치 이전에는 ServConfig가 준비되어있지 않으므로 예외로 수동 지정 */ ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery.validate.min.js')?>
|
<?= WebUtil::printJS('../dist_js/gateway/vendors.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/sha512.min.js')?>
|
<?= WebUtil::printCSS('../dist_js/gateway/vendor.css') ?>
|
||||||
<?=WebUtil::printJS('../js/common.js')?>
|
<?= WebUtil::printJS('../dist_js/gateway/common_ts.js') ?>
|
||||||
<?=WebUtil::printJS('../js/install.js')?>
|
<?= WebUtil::printCSS('../dist_js/gateway/common_ts.css') ?>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
<?= WebUtil::printJS('../dist_js/gateway/install.js') ?>
|
||||||
|
<?= WebUtil::printCSS('../dist_js/gateway/install.css') ?>
|
||||||
|
|
||||||
<?= WebUtil::printCSS('../css/install.css') ?>
|
<?= WebUtil::printCSS('../css/install.css') ?>
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe 설치</h1>
|
<h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe 설치</h1>
|
||||||
@@ -35,16 +42,14 @@ require(__DIR__.'/../vendor/autoload.php');
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="db_host" class="col-sm-4 col-form-label">DB호스트</label>
|
<label for="db_host" class="col-sm-4 col-form-label">DB호스트</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="db_host" id="db_host"
|
<input type="text" class="form-control" name="db_host" id="db_host" placeholder="호스트" value="localhost" />
|
||||||
placeholder="호스트" value="localhost" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="db_port" class="col-sm-4 col-form-label">DB포트</label>
|
<label for="db_port" class="col-sm-4 col-form-label">DB포트</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="db_port" id="db_port"
|
<input type="text" class="form-control" name="db_port" id="db_port" placeholder="접속 포트" value="3306" />
|
||||||
placeholder="접속 포트" value="3306" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -59,52 +64,43 @@ require(__DIR__.'/../vendor/autoload.php');
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="db_pw" class="col-sm-4 col-form-label">DB비밀번호</label>
|
<label for="db_pw" class="col-sm-4 col-form-label">DB비밀번호</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="password" class="form-control" name="db_pw" id="db_pw"
|
<input type="password" class="form-control" name="db_pw" id="db_pw" placeholder="DB비밀번호" />
|
||||||
placeholder="DB비밀번호"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="db_name" class="col-sm-4 col-form-label">DB명</label>
|
<label for="db_name" class="col-sm-4 col-form-label">DB명</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="db_name" id="db_name"
|
<input type="text" class="form-control" name="db_name" id="db_name" placeholder="DB명(예:sammo)" />
|
||||||
placeholder="DB명(예:sammo)"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="serv_host" class="col-sm-4 col-form-label">접속 경로</label>
|
<label for="serv_host" class="col-sm-4 col-form-label">접속 경로</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="serv_host" id="serv_host"
|
<input type="text" class="form-control" name="serv_host" id="serv_host" placeholder="접속경로(예:http://www.example.com)" />
|
||||||
placeholder="접속경로(예:http://www.example.com)"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="shared_icon_path" class="col-sm-4 col-form-label">공용 아이콘 주소</label>
|
<label for="shared_icon_path" class="col-sm-4 col-form-label">공용 아이콘 주소</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="shared_icon_path" id="shared_icon_path"
|
<input type="text" class="form-control" name="shared_icon_path" id="shared_icon_path" placeholder="공용 아이콘 주소(웹 주소, 또는 접속 경로에 따른 상대 주소)" value="../image/icons" />
|
||||||
placeholder="공용 아이콘 주소(웹 주소, 또는 접속 경로에 따른 상대 주소)"
|
|
||||||
value="../image/icons" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="game_image_path" class="col-sm-4 col-form-label">게임 이미지 주소</label>
|
<label for="game_image_path" class="col-sm-4 col-form-label">게임 이미지 주소</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="game_image_path" id="game_image_path"
|
<input type="text" class="form-control" name="game_image_path" id="game_image_path" placeholder="게임 이미지 주소(웹 주소, 또는 접속 경로에 따른 상대 주소)" value="../image/game" />
|
||||||
placeholder="게임 이미지 주소(웹 주소, 또는 접속 경로에 따른 상대 주소)"
|
|
||||||
value="../image/game" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="image_request_key" class="col-sm-4 col-form-label">이미지 갱신 키</label>
|
<label for="image_request_key" class="col-sm-4 col-form-label">이미지 갱신 키</label>
|
||||||
<div class="input-group col-sm-8">
|
<div class="input-group col-sm-8">
|
||||||
<input type="text" class="form-control" name="image_request_key" id="image_request_key"
|
<input type="text" class="form-control" name="image_request_key" id="image_request_key" placeholder="이미지 서버의 hook/HashKey.php의 값과 동일하게" value="" />
|
||||||
placeholder="이미지 서버의 hook/HashKey.php의 값과 동일하게"
|
<div class="input-group-text">
|
||||||
value="" />
|
|
||||||
<div class="input-group-append">
|
|
||||||
<button id="btn_random_generate_key" class="btn btn-secondary" type="button">랜덤 생성</button>
|
<button id="btn_random_generate_key" class="btn btn-secondary" type="button">랜덤 생성</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -115,31 +111,27 @@ require(__DIR__.'/../vendor/autoload.php');
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="kakao_rest_key" class="col-sm-4 col-form-label">카카오 API Rest Key</label>
|
<label for="kakao_rest_key" class="col-sm-4 col-form-label">카카오 API Rest Key</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="kakao_rest_key" id="kakao_rest_key"
|
<input type="text" class="form-control" name="kakao_rest_key" id="kakao_rest_key" placeholder="카카오톡 API의 Rest Key" value="" />
|
||||||
placeholder="카카오톡 API의 Rest Key"
|
|
||||||
value="" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="kakao_admin_key" class="col-sm-4 col-form-label">카카오 API Admin Key</label>
|
<label for="kakao_admin_key" class="col-sm-4 col-form-label">카카오 API Admin Key</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" name="kakao_admin_key" id="kakao_admin_key"
|
<input type="text" class="form-control" name="kakao_admin_key" id="kakao_admin_key" placeholder="카카오톡 API의 Admin Key" value="" />
|
||||||
placeholder="카카오톡 API의 Admin Key"
|
|
||||||
value="" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-sm-4"></div>
|
<div class="col-sm-4"></div>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<button type="submit"
|
<button type="submit" class="btn btn-primary btn-lg btn-block login-button">설정 파일 생성</button>
|
||||||
class="btn btn-primary btn-lg btn-block login-button">설정 파일 생성</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div><!--DB 폼 끝-->
|
</div>
|
||||||
|
<!--DB 폼 끝-->
|
||||||
|
|
||||||
<div class="card" id="admin_form_card" style="display:none">
|
<div class="card" id="admin_form_card" style="display:none">
|
||||||
<h3 class="card-header">
|
<h3 class="card-header">
|
||||||
@@ -150,8 +142,7 @@ require(__DIR__.'/../vendor/autoload.php');
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="username" class="col-sm-3 col-form-label">계정명</label>
|
<label for="username" class="col-sm-3 col-form-label">계정명</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input type="text" class="form-control" name="username" id="username"
|
<input type="text" class="form-control" name="username" id="username" placeholder="계정명" />
|
||||||
placeholder="계정명"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -159,24 +150,21 @@ require(__DIR__.'/../vendor/autoload.php');
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="password" class="col-sm-3 col-form-label">비밀번호</label>
|
<label for="password" class="col-sm-3 col-form-label">비밀번호</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input type="password" class="form-control" name="password" id="password"
|
<input type="password" class="form-control" name="password" id="password" placeholder="비밀번호" />
|
||||||
placeholder="비밀번호"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="confirm_password" class="col-sm-3 col-form-label">비밀번호 확인</label>
|
<label for="confirm_password" class="col-sm-3 col-form-label">비밀번호 확인</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input type="password" class="form-control" name="confirm_password" id="confirm_password"
|
<input type="password" class="form-control" name="confirm_password" id="confirm_password" placeholder="비밀번호 확인" />
|
||||||
placeholder="비밀번호 확인"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="nickname" class="col-sm-3 col-form-label">닉네임</label>
|
<label for="nickname" class="col-sm-3 col-form-label">닉네임</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input type="text" class="form-control" name="nickname" id="nickname"
|
<input type="text" class="form-control" name="nickname" id="nickname" placeholder="닉네임" value="운영자" />
|
||||||
placeholder="닉네임" value="운영자"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -185,13 +173,13 @@ require(__DIR__.'/../vendor/autoload.php');
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-sm-3"></div>
|
<div class="col-sm-3"></div>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<button type="submit"
|
<button type="submit" class="btn btn-primary btn-lg btn-block login-button">관리자 계정 생성</button>
|
||||||
class="btn btn-primary btn-lg btn-block login-button">관리자 계정 생성</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div><!--ADMIN 폼 끝-->
|
</div>
|
||||||
|
<!--ADMIN 폼 끝-->
|
||||||
|
|
||||||
<!-- TODO: conf_kakao.php -->
|
<!-- TODO: conf_kakao.php -->
|
||||||
|
|
||||||
@@ -199,4 +187,5 @@ require(__DIR__.'/../vendor/autoload.php');
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -58,7 +58,7 @@ CREATE TABLE `member_log` (
|
|||||||
INDEX `action` (`member_no`, `action_type`, `date`),
|
INDEX `action` (`member_no`, `action_type`, `date`),
|
||||||
INDEX `member` (`member_no`, `date`)
|
INDEX `member` (`member_no`, `date`)
|
||||||
)
|
)
|
||||||
ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
|
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# KV storage
|
# KV storage
|
||||||
@@ -72,4 +72,19 @@ CREATE TABLE if not exists `storage` (
|
|||||||
UNIQUE INDEX `key` (`namespace`, `key`)
|
UNIQUE INDEX `key` (`namespace`, `key`)
|
||||||
)
|
)
|
||||||
COLLATE='utf8mb4_general_ci'
|
COLLATE='utf8mb4_general_ci'
|
||||||
ENGINE=MyISAM
|
ENGINE=Aria;
|
||||||
|
|
||||||
|
CREATE TABLE `login_token` (
|
||||||
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`user_id` INT(11) NOT NULL,
|
||||||
|
`base_token` VARCHAR(20) NOT NULL COLLATE 'utf8mb4_general_ci',
|
||||||
|
`reg_ip` VARCHAR(40) NOT NULL COLLATE 'utf8mb4_general_ci',
|
||||||
|
`reg_date` DATETIME NOT NULL,
|
||||||
|
`expire_date` DATETIME NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE INDEX `by_token` (`base_token`),
|
||||||
|
INDEX `by_date` (`user_id`, `expire_date`)
|
||||||
|
)
|
||||||
|
COLLATE='utf8mb4_general_ci'
|
||||||
|
ENGINE=Aria
|
||||||
|
;
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace kakao;
|
namespace kakao;
|
||||||
|
|
||||||
|
// @suppress PhanRedefineClass
|
||||||
class KakaoKey{
|
class KakaoKey{
|
||||||
const REST_KEY = '_tK_REST_API_KEY_';
|
const REST_KEY = '_tK_REST_API_KEY_';
|
||||||
const ADMIN_KEY = '_tK_ADMIN_KEY_';
|
const ADMIN_KEY = '_tK_ADMIN_KEY_';
|
||||||
|
|||||||
@@ -2,9 +2,15 @@
|
|||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
|
//https://hub.packtpub.com/eloquent-without-laravel/
|
||||||
|
use Illuminate\Database\Capsule\Manager as Capsule;
|
||||||
|
use Illuminate\Events\Dispatcher;
|
||||||
|
use Illuminate\Container\Container;
|
||||||
|
|
||||||
class RootDB
|
class RootDB
|
||||||
{
|
{
|
||||||
private static $uDB = null;
|
private static $uDB = null;
|
||||||
|
private static ?Capsule $uIlluminate = null;
|
||||||
|
|
||||||
private static $host = '_tK_host_';
|
private static $host = '_tK_host_';
|
||||||
private static $user = '_tK_user_';
|
private static $user = '_tK_user_';
|
||||||
@@ -12,6 +18,8 @@ class RootDB
|
|||||||
private static $dbName = '_tK_dbName_';
|
private static $dbName = '_tK_dbName_';
|
||||||
private static $port = _tK_port_;
|
private static $port = _tK_port_;
|
||||||
private static $encoding = 'utf8mb4';
|
private static $encoding = 'utf8mb4';
|
||||||
|
private static $collation = 'utf8mb4_general_ci';
|
||||||
|
|
||||||
|
|
||||||
private static $globalSalt = '_tK_globalSalt_';
|
private static $globalSalt = '_tK_globalSalt_';
|
||||||
|
|
||||||
@@ -19,6 +27,29 @@ class RootDB
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function illuminate(): Capsule
|
||||||
|
{
|
||||||
|
if(self::$uIlluminate !== null){
|
||||||
|
return self::$uIlluminate;
|
||||||
|
}
|
||||||
|
$capsule = new Capsule;
|
||||||
|
|
||||||
|
$capsule->addConnection([
|
||||||
|
'driver' => 'mysql',
|
||||||
|
'host' => self::$host,
|
||||||
|
'database' => self::$dbName,
|
||||||
|
'username' => self::$user,
|
||||||
|
'password' => self::$password,
|
||||||
|
'charset' => self::$encoding,
|
||||||
|
'collation' => self::$collation,
|
||||||
|
], 'root');
|
||||||
|
|
||||||
|
$capsule->setEventDispatcher(new Dispatcher(new Container));
|
||||||
|
$capsule->bootEloquent();
|
||||||
|
self::$uIlluminate = $capsule;
|
||||||
|
return $capsule;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DB 객체 생성
|
* DB 객체 생성
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -6,11 +6,6 @@
|
|||||||
|
|
||||||
.img_back {background-image:url('_tK_gameImagePath_/back.jpg'); }
|
.img_back {background-image:url('_tK_gameImagePath_/back.jpg'); }
|
||||||
|
|
||||||
/* 레거시. */
|
|
||||||
#bg0 { background-image:url('_tK_gameImagePath_/back_walnut.jpg'); }
|
|
||||||
#bg1 { background-image:url('_tK_gameImagePath_/back_green.jpg'); }
|
|
||||||
#bg2 { background-image:url('_tK_gameImagePath_/back_blue.jpg'); }
|
|
||||||
|
|
||||||
.map_detail .map_title{
|
.map_detail .map_title{
|
||||||
background:
|
background:
|
||||||
url('_tK_gameImagePath_/ltitle.jpg') no-repeat left,
|
url('_tK_gameImagePath_/ltitle.jpg') no-repeat left,
|
||||||
|
|||||||
+2
-2
@@ -24,7 +24,8 @@ $plock = $db->queryFirstField('SELECT plock FROM plock');
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<form action=_119_b.php method=post>
|
<form action=_119_b.php method=post>
|
||||||
@@ -35,4 +36,3 @@ $plock = $db->queryFirstField('SELECT plock FROM plock');
|
|||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -22,7 +22,8 @@ $admin = getAdmin();
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class="tb_layout bg0">
|
<table align=center width=1000 class="tb_layout bg0">
|
||||||
|
|||||||
+4
-3
@@ -23,7 +23,8 @@ $db = DB::db();
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?= WebUtil::printCSS('css/common.css') ?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@@ -50,7 +51,7 @@ $db = DB::db();
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<select name=genlist[] size=20 multiple style='color:white;background-color:black;font-size:13px'>";
|
<select name=genlist[] size=20 multiple style='color:white;background-color:black;font-size:14px'>";
|
||||||
$generalList = $db->query('SELECT `no`, `name`, npc, `block` FROM general ORDER BY npc, binary(`name`)');
|
$generalList = $db->query('SELECT `no`, `name`, npc, `block` FROM general ORDER BY npc, binary(`name`)');
|
||||||
|
|
||||||
foreach ($generalList as $general) {
|
foreach ($generalList as $general) {
|
||||||
@@ -73,7 +74,7 @@ $db = DB::db();
|
|||||||
</td>
|
</td>
|
||||||
<td width=100 align=center>아이템 지급</td>
|
<td width=100 align=center>아이템 지급</td>
|
||||||
<td width=504>
|
<td width=504>
|
||||||
<select name=weapon size=1 style='color:white;background-color:black;font-size:13px'>";
|
<select name=weapon size=1 style='color:white;background-color:black;font-size:14px'>";
|
||||||
foreach (GameConst::$allItems as $itemCategories) {
|
foreach (GameConst::$allItems as $itemCategories) {
|
||||||
foreach ($itemCategories as $item => $cnt) {
|
foreach ($itemCategories as $item => $cnt) {
|
||||||
if ($cnt == 0) {
|
if ($cnt == 0) {
|
||||||
|
|||||||
@@ -342,6 +342,7 @@ switch ($btn) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "랜덤턴":
|
case "랜덤턴":
|
||||||
|
$turnterm = $gameStor->turnterm;
|
||||||
foreach ($genlist as $generalID) {
|
foreach ($genlist as $generalID) {
|
||||||
$turntime = getRandTurn($turnterm);
|
$turntime = getRandTurn($turnterm);
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
|
|||||||
+5
-3
@@ -23,7 +23,8 @@ $ipGroupList = Util::arrayGroupBy(
|
|||||||
'ip_c'
|
'ip_c'
|
||||||
);
|
);
|
||||||
|
|
||||||
function colorBlockedName($general){
|
function colorBlockedName($general)
|
||||||
|
{
|
||||||
if (!$general['blocked']) {
|
if (!$general['blocked']) {
|
||||||
return $general['name'];
|
return $general['name'];
|
||||||
}
|
}
|
||||||
@@ -40,7 +41,8 @@ function colorBlockedName($general){
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?= WebUtil::printCSS('css/common.css') ?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@@ -61,7 +63,7 @@ function colorBlockedName($general){
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
<select name=genlist[] size=20 multiple style='color:white;background-color:black;font-size:13px'>";
|
<select name=genlist[] size=20 multiple style='color:white;background-color:black;font-size:14px'>";
|
||||||
|
|
||||||
foreach ($db->query('SELECT no,name,npc,block,con from general where ip!=\'\' order by npc,ip') as $general) {
|
foreach ($db->query('SELECT no,name,npc,block,con from general where ip!=\'\' order by npc,ip') as $general) {
|
||||||
$style = "style=;";
|
$style = "style=;";
|
||||||
|
|||||||
+4
-3
@@ -39,7 +39,8 @@ $sel2[$type2] = "selected";
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?= WebUtil::printCSS('css/common.css') ?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@@ -99,7 +100,7 @@ $sel2[$type2] = "selected";
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table align=center width=1600 class="tb_layout bg0">
|
<table align=center width=1600 class="tb_layout bg0">
|
||||||
<tr id=bg1>
|
<tr class='bg1'>
|
||||||
<td align=center>국명</td>
|
<td align=center>국명</td>
|
||||||
<td align=center>접률</td>
|
<td align=center>접률</td>
|
||||||
<td align=center>단접</td>
|
<td align=center>단접</td>
|
||||||
@@ -278,7 +279,7 @@ from city where nation=%i', $nation['nation']);
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table align=center width=1760 class="tb_layout bg0">
|
<table align=center width=1760 class="tb_layout bg0">
|
||||||
<tr id=bg1>
|
<tr class='bg1'>
|
||||||
<td width=30 align=center>년</td>
|
<td width=30 align=center>년</td>
|
||||||
<td width=30 align=center>월</td>
|
<td width=30 align=center>월</td>
|
||||||
<td width=50 align=center>국가수</td>
|
<td width=50 align=center>국가수</td>
|
||||||
|
|||||||
+8
-7
@@ -86,7 +86,8 @@ $generalObj = General::createGeneralObjFromDB($gen);
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?= WebUtil::printCSS('css/common.css') ?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@@ -117,10 +118,10 @@ $generalObj = General::createGeneralObjFromDB($gen);
|
|||||||
</table>
|
</table>
|
||||||
<table width=1000 align=center class='tb_layout bg0'>
|
<table width=1000 align=center class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=50% align=center id=bg1>
|
<td width=50% align=center class='bg1'>
|
||||||
<font color=skyblue size=3>장 수 정 보</font>
|
<font color=skyblue size=3>장 수 정 보</font>
|
||||||
</td>
|
</td>
|
||||||
<td width=50% align=center id=bg1>
|
<td width=50% align=center class='bg1'>
|
||||||
<font color=orange size=3>-</font>
|
<font color=orange size=3>-</font>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -133,10 +134,10 @@ $generalObj = General::createGeneralObjFromDB($gen);
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>
|
<td align=center class='bg1'>
|
||||||
<font color=skyblue size=3>개인 기록</font>
|
<font color=skyblue size=3>개인 기록</font>
|
||||||
</td>
|
</td>
|
||||||
<td align=center id=bg1>
|
<td align=center class='bg1'>
|
||||||
<font color=orange size=3>전투 기록</font>
|
<font color=orange size=3>전투 기록</font>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -149,10 +150,10 @@ $generalObj = General::createGeneralObjFromDB($gen);
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>
|
<td align=center class='bg1'>
|
||||||
<font color=skyblue size=3>장수 열전</font>
|
<font color=skyblue size=3>장수 열전</font>
|
||||||
</td>
|
</td>
|
||||||
<td align=center id=bg1>
|
<td align=center class='bg1'>
|
||||||
<font color=orange size=3>전투 결과</font>
|
<font color=orange size=3>전투 결과</font>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
+38
-15
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -25,18 +26,24 @@ $sel[$type] = "selected";
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>외교정보</title>
|
<title>외교정보</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>외 교 정 보<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td>외 교 정 보<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<form name=form1 method=post>
|
<form name=form1 method=post>
|
||||||
정렬순서 :
|
정렬순서 :
|
||||||
<select name=type size=1>
|
<select name=type size=1>
|
||||||
@@ -44,15 +51,18 @@ $sel[$type] = "selected";
|
|||||||
</select>
|
</select>
|
||||||
<input type=submit name=btn value='정렬하기'>
|
<input type=submit name=btn value='정렬하기'>
|
||||||
</form>
|
</form>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table width=1000 align=center class='tb_layout bg0'>
|
<table width=1000 align=center class='tb_layout bg0'>
|
||||||
<tr><td colspan=9 align=center bgcolor=blue>외 교 관 계</td></tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td width=130 align=center id=bg1>국 가 명</td>
|
<td colspan=9 align=center bgcolor=blue>외 교 관 계</td>
|
||||||
<td width=130 align=center id=bg1>국 가 명</td>
|
</tr>
|
||||||
<td width=80 align=center id=bg1>상 태</td>
|
<tr>
|
||||||
<td width=60 align=center id=bg1>기 간</td>
|
<td width=130 align=center class='bg1'>국 가 명</td>
|
||||||
|
<td width=130 align=center class='bg1'>국 가 명</td>
|
||||||
|
<td width=80 align=center class='bg1'>상 태</td>
|
||||||
|
<td width=60 align=center class='bg1'>기 간</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
@@ -73,10 +83,18 @@ foreach($db->query('SELECT * from diplomacy where me < you order by state desc')
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch ($dip['state']) {
|
switch ($dip['state']) {
|
||||||
case 0: $state = "<font color=red>교 전</font>"; break;
|
case 0:
|
||||||
case 1: $state = "<font color=magenta>선포중</font>"; break;
|
$state = "<font color=red>교 전</font>";
|
||||||
case 2: $state = "통 상"; break;
|
break;
|
||||||
case 7: $state = "<font color=green>불가침</font>"; break;
|
case 1:
|
||||||
|
$state = "<font color=magenta>선포중</font>";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$state = "통 상";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$state = "<font color=green>불가침</font>";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$date = TimeUtil::now();
|
$date = TimeUtil::now();
|
||||||
@@ -92,8 +110,13 @@ foreach($db->query('SELECT * from diplomacy where me < you order by state desc')
|
|||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -24,3 +24,9 @@ foreach ($db->queryFirstColumn(
|
|||||||
) as $generalNo) {
|
) as $generalNo) {
|
||||||
CheckHall($generalNo);
|
CheckHall($generalNo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach(General::createGeneralObjListFromDB($db->queryFirstColumn('SELECT `no` FROM general WHERE npc = 0')) as $genObj){
|
||||||
|
$genObj->mergeTotalInheritancePoint(true);
|
||||||
|
applyInheritanceUser($genObj->getVar('owner'));
|
||||||
|
$genObj->clearInheritancePoint();
|
||||||
|
}
|
||||||
+96
-53
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -25,26 +26,27 @@ $templates = new \League\Plates\Engine(__DIR__.'/templates');
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1136" />
|
<meta name="viewport" content="width=1136" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 명장일람</title>
|
<title><?= UniqueConst::$serverName ?>: 명장일람</title>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?= WebUtil::printCSS('css/hallOfFame.css') ?>
|
<?= WebUtil::printCSS('css/hallOfFame.css') ?>
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printDist('ts', 'common') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1100 class='tb_layout bg0'>
|
<table align=center width=1100 class='tb_layout bg0'>
|
||||||
<tr><td>명 장 일 람<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>명 장 일 람<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1100 class='tb_layout bg0'>
|
<table align=center width=1100 class='tb_layout bg0'>
|
||||||
<form name=form1 action=a_bestGeneral.php method=post>
|
<form name=form1 action=a_bestGeneral.php method=post>
|
||||||
<tr><td align=center>
|
<tr>
|
||||||
|
<td align=center>
|
||||||
<input type=submit name=btn value='유저 보기'>
|
<input type=submit name=btn value='유저 보기'>
|
||||||
<input type=submit name=btn value='NPC 보기'>
|
<input type=submit name=btn value='NPC 보기'>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</form>
|
</form>
|
||||||
</table>
|
</table>
|
||||||
<div style="margin:auto;width:1100px;">
|
<div style="margin:auto;width:1100px;">
|
||||||
@@ -65,8 +67,14 @@ foreach (getAllNationStaticInfo() as $nation) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$types = [
|
$types = [
|
||||||
["명 성", "int", function($v){$v['value'] = $v['experience']; return $v; }],
|
["명 성", "int", function ($v) {
|
||||||
["계 급", "int", function($v){$v['value'] = $v['dedication']; return $v; }],
|
$v['value'] = $v['experience'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["계 급", "int", function ($v) {
|
||||||
|
$v['value'] = $v['dedication'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
["계 략 성 공", "int", function ($v) use ($gameStor) {
|
["계 략 성 공", "int", function ($v) use ($gameStor) {
|
||||||
$v['value'] = $v['firenum'];
|
$v['value'] = $v['firenum'];
|
||||||
if ($gameStor->isunited) {
|
if ($gameStor->isunited) {
|
||||||
@@ -80,49 +88,75 @@ $types = [
|
|||||||
$v['fgColor'] = newColor($v['bgColor']);
|
$v['fgColor'] = newColor($v['bgColor']);
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
["전 투 횟 수", "int", function($v){$v['value'] = $v['warnum']; return $v; }],
|
["전 투 횟 수", "int", function ($v) {
|
||||||
["승 리", "int", function($v){$v['value'] = $v['killnum']; return $v; }],
|
$v['value'] = $v['warnum'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["승 리", "int", function ($v) {
|
||||||
|
$v['value'] = $v['killnum'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
["승 률", "percent", function ($v) {
|
["승 률", "percent", function ($v) {
|
||||||
if ($v['warnum'] < 10) {
|
if ($v['warnum'] < 10) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['killnum'] / max(1, $v['warnum']);
|
$v['value'] = $v['killnum'] / max(1, $v['warnum']);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
["점 령", "int", function($v){$v['value'] = $v['occupied']; return $v; }],
|
["점 령", "int", function ($v) {
|
||||||
["사 살", "int", function($v){$v['value'] = $v['killcrew']; return $v; }],
|
$v['value'] = $v['occupied'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["사 살", "int", function ($v) {
|
||||||
|
$v['value'] = $v['killcrew'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
["살 상 률", "percent", function ($v) {
|
["살 상 률", "percent", function ($v) {
|
||||||
if ($v['warnum'] < 10) {
|
if ($v['warnum'] < 10) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['killcrew'] / max(1, $v['deathcrew']);
|
$v['value'] = $v['killcrew'] / max(1, $v['deathcrew']);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
["대 인 사 살", "int", function($v){$v['value'] = $v['killcrew_person']; return $v; }],
|
["대 인 사 살", "int", function ($v) {
|
||||||
|
$v['value'] = $v['killcrew_person'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
["대 인 살 상 률", "percent", function ($v) {
|
["대 인 살 상 률", "percent", function ($v) {
|
||||||
if ($v['warnum'] < 10) {
|
if ($v['warnum'] < 10) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['killcrew_person'] / max(1, $v['deathcrew_person']);
|
$v['value'] = $v['killcrew_person'] / max(1, $v['deathcrew_person']);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
["보 병 숙 련 도", "int", function($v){$v['value'] = $v['dex1']; return $v; }],
|
["보 병 숙 련 도", "int", function ($v) {
|
||||||
["궁 병 숙 련 도", "int", function($v){$v['value'] = $v['dex2']; return $v; }],
|
$v['value'] = $v['dex1'];
|
||||||
["기 병 숙 련 도", "int", function($v){$v['value'] = $v['dex3']; return $v; }],
|
return $v;
|
||||||
["귀 병 숙 련 도", "int", function($v){$v['value'] = $v['dex4']; return $v; }],
|
}],
|
||||||
["차 병 숙 련 도", "int", function($v){$v['value'] = $v['dex5']; return $v; }],
|
["궁 병 숙 련 도", "int", function ($v) {
|
||||||
|
$v['value'] = $v['dex2'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["기 병 숙 련 도", "int", function ($v) {
|
||||||
|
$v['value'] = $v['dex3'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["귀 병 숙 련 도", "int", function ($v) {
|
||||||
|
$v['value'] = $v['dex4'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["차 병 숙 련 도", "int", function ($v) {
|
||||||
|
$v['value'] = $v['dex5'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
["전 력 전 승 률", "percent", function ($v) {
|
["전 력 전 승 률", "percent", function ($v) {
|
||||||
$totalCnt = $v['ttw'] + $v['ttd'] + $v['ttl'];
|
$totalCnt = $v['ttw'] + $v['ttd'] + $v['ttl'];
|
||||||
if ($totalCnt < 50) {
|
if ($totalCnt < 50) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['ttw'] / max(1, $totalCnt);
|
$v['value'] = $v['ttw'] / max(1, $totalCnt);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
@@ -131,8 +165,7 @@ $types = [
|
|||||||
$totalCnt = $v['tlw'] + $v['tld'] + $v['tll'];
|
$totalCnt = $v['tlw'] + $v['tld'] + $v['tll'];
|
||||||
if ($totalCnt < 50) {
|
if ($totalCnt < 50) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['tlw'] / max(1, $totalCnt);
|
$v['value'] = $v['tlw'] / max(1, $totalCnt);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
@@ -141,8 +174,7 @@ $types = [
|
|||||||
$totalCnt = $v['tsw'] + $v['tsd'] + $v['tsl'];
|
$totalCnt = $v['tsw'] + $v['tsd'] + $v['tsl'];
|
||||||
if ($totalCnt < 50) {
|
if ($totalCnt < 50) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['tsw'] / max(1, $totalCnt);
|
$v['value'] = $v['tsw'] / max(1, $totalCnt);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
@@ -151,21 +183,28 @@ $types = [
|
|||||||
$totalCnt = $v['tiw'] + $v['tid'] + $v['til'];
|
$totalCnt = $v['tiw'] + $v['tid'] + $v['til'];
|
||||||
if ($totalCnt < 50) {
|
if ($totalCnt < 50) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['tiw'] / max(1, $totalCnt);
|
$v['value'] = $v['tiw'] / max(1, $totalCnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $v;
|
return $v;
|
||||||
}],
|
}],
|
||||||
["베 팅 투 자 액", "int", function($v){$v['value'] = $v['betgold']; return $v; }],
|
["베 팅 투 자 액", "int", function ($v) {
|
||||||
["베 팅 당 첨", "int", function($v){$v['value'] = $v['betwin']; return $v; }],
|
$v['value'] = $v['betgold'];
|
||||||
["베 팅 수 익 금", "int", function($v){$v['value'] = $v['betwingold']; return $v; }],
|
return $v;
|
||||||
|
}],
|
||||||
|
["베 팅 당 첨", "int", function ($v) {
|
||||||
|
$v['value'] = $v['betwin'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
|
["베 팅 수 익 금", "int", function ($v) {
|
||||||
|
$v['value'] = $v['betwingold'];
|
||||||
|
return $v;
|
||||||
|
}],
|
||||||
["베 팅 수 익 률", "percent", function ($v) {
|
["베 팅 수 익 률", "percent", function ($v) {
|
||||||
if ($v['betgold'] < GameConst::$defaultGold) {
|
if ($v['betgold'] < GameConst::$defaultGold) {
|
||||||
$v['value'] = 0;
|
$v['value'] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$v['value'] = $v['betwingold'] / max(1, $v['betgold']);
|
$v['value'] = $v['betwingold'] / max(1, $v['betgold']);
|
||||||
}
|
}
|
||||||
return $v;
|
return $v;
|
||||||
@@ -178,8 +217,9 @@ foreach($db->query(
|
|||||||
experience, dedication,
|
experience, dedication,
|
||||||
dex1, dex2, dex3, dex4, dex5,
|
dex1, dex2, dex3, dex4, dex5,
|
||||||
horse, weapon, book, item
|
horse, weapon, book, item
|
||||||
FROM general WHERE %l", $btn == "NPC 보기"?"npc>=2":"npc<2") as $general
|
FROM general WHERE %l",
|
||||||
){
|
$btn == "NPC 보기" ? "npc>=2" : "npc<2"
|
||||||
|
) as $general) {
|
||||||
$generalID = $general['no'];
|
$generalID = $general['no'];
|
||||||
$general['bgColor'] = $nationColor[$general['nation']] ?? GameConst::$basecolor4;
|
$general['bgColor'] = $nationColor[$general['nation']] ?? GameConst::$basecolor4;
|
||||||
$general['fgColor'] = newColor($general['bgColor']);
|
$general['fgColor'] = newColor($general['bgColor']);
|
||||||
@@ -188,8 +228,7 @@ foreach($db->query(
|
|||||||
if (key_exists('picture', $general)) {
|
if (key_exists('picture', $general)) {
|
||||||
$imageTemp = GetImageURL($general['imgsvr']);
|
$imageTemp = GetImageURL($general['imgsvr']);
|
||||||
$general['pictureFullPath'] = "$imageTemp/{$general['picture']}";
|
$general['pictureFullPath'] = "$imageTemp/{$general['picture']}";
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$general['pictureFullPath'] = GetImageURL(0) . "/default.jpg";
|
$general['pictureFullPath'] = GetImageURL(0) . "/default.jpg";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,8 +257,7 @@ foreach($types as $idx=>[$typeName, $typeValue, $typeFunc]){
|
|||||||
|
|
||||||
if ($typeValue == 'percent') {
|
if ($typeValue == 'percent') {
|
||||||
$general['printValue'] = number_format($value * 100, 2) . '%';
|
$general['printValue'] = number_format($value * 100, 2) . '%';
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$general['printValue'] = number_format($value);
|
$general['printValue'] = number_format($value);
|
||||||
}
|
}
|
||||||
return $general;
|
return $general;
|
||||||
@@ -248,7 +286,10 @@ $itemTypes = [
|
|||||||
'item' => '도 구'
|
'item' => '도 구'
|
||||||
];
|
];
|
||||||
|
|
||||||
$simpleItemTypes = array_keys($itemTypes); array_map(function($itemType){return $itemType[1];}, $itemTypes);
|
$simpleItemTypes = array_keys($itemTypes);
|
||||||
|
array_map(function ($itemType) {
|
||||||
|
return $itemType[1];
|
||||||
|
}, $itemTypes);
|
||||||
$itemOwners = [];
|
$itemOwners = [];
|
||||||
|
|
||||||
foreach ($generals as $general) {
|
foreach ($generals as $general) {
|
||||||
@@ -261,11 +302,9 @@ foreach($generals as $general){
|
|||||||
|
|
||||||
if (key_exists($itemClassName, $itemOwners)) {
|
if (key_exists($itemClassName, $itemOwners)) {
|
||||||
$itemOwners[$itemClassName][] = $general;
|
$itemOwners[$itemClassName][] = $general;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$itemOwners[$itemClassName] = [$general];
|
$itemOwners[$itemClassName] = [$general];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,9 +371,13 @@ foreach(GameConst::$allItems as $itemType=>$itemList){
|
|||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
<table align=center width=1100 class='tb_layout bg0'>
|
<table align=center width=1100 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
|
||||||
|
|
||||||
|
</html>
|
||||||
+27
-21
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -16,20 +17,20 @@ increaseRefresh("왕조일람", 1);
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 왕조일람</title>
|
<title><?= UniqueConst::$serverName ?>: 왕조일람</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.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('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', 'common') ?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class="tb_layout bg0">
|
<table align=center width=1000 class="tb_layout bg0">
|
||||||
<tr><td>역 대 왕 조<br>
|
<tr>
|
||||||
|
<td>역 대 왕 조<br>
|
||||||
<button onclick=window.close()>창 닫기</button><br>
|
<button onclick=window.close()>창 닫기</button><br>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
@@ -84,33 +85,33 @@ foreach($emperiors as $emperior){
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center width=80>국 력</td>
|
<td class='bg1' align=center width=80>국 력</td>
|
||||||
<td align=center width=170><?= $emperior['power'] ?></td>
|
<td align=center width=170><?= $emperior['power'] ?></td>
|
||||||
<td id=bg1 align=center width=80>장 수</td>
|
<td class='bg1' align=center width=80>장 수</td>
|
||||||
<td align=center width=170><?= $emperior['gennum'] ?></td>
|
<td align=center width=170><?= $emperior['gennum'] ?></td>
|
||||||
<td id=bg1 align=center width=80>속 령</td>
|
<td class='bg1' align=center width=80>속 령</td>
|
||||||
<td align=center width=170><?= $emperior['citynum'] ?></td>
|
<td align=center width=170><?= $emperior['citynum'] ?></td>
|
||||||
<td id=bg1 align=center width=80>성 향</td>
|
<td class='bg1' align=center width=80>성 향</td>
|
||||||
<td align=center width=170><?= $emperior['type'] ?></td>
|
<td align=center width=170><?= $emperior['type'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>황 제</td>
|
<td class='bg1' align=center>황 제</td>
|
||||||
<td align=center><?= $emperior['l12name'] ?></td>
|
<td align=center><?= $emperior['l12name'] ?></td>
|
||||||
<td id=bg1 align=center>승 상</td>
|
<td class='bg1' align=center>승 상</td>
|
||||||
<td align=center><?= $emperior['l11name'] ?></td>
|
<td align=center><?= $emperior['l11name'] ?></td>
|
||||||
<td id=bg1 align=center>표 기 장 군</td>
|
<td class='bg1' align=center>표 기 장 군</td>
|
||||||
<td align=center><?= $emperior['l10name'] ?></td>
|
<td align=center><?= $emperior['l10name'] ?></td>
|
||||||
<td id=bg1 align=center>사 공</td>
|
<td class='bg1' align=center>사 공</td>
|
||||||
<td align=center><?= $emperior['l9name'] ?></td>
|
<td align=center><?= $emperior['l9name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>거 기 장 군</td>
|
<td class='bg1' align=center>거 기 장 군</td>
|
||||||
<td align=center><?= $emperior['l8name'] ?></td>
|
<td align=center><?= $emperior['l8name'] ?></td>
|
||||||
<td id=bg1 align=center>태 위</td>
|
<td class='bg1' align=center>태 위</td>
|
||||||
<td align=center><?= $emperior['l7name'] ?></td>
|
<td align=center><?= $emperior['l7name'] ?></td>
|
||||||
<td id=bg1 align=center>위 장 군</td>
|
<td class='bg1' align=center>위 장 군</td>
|
||||||
<td align=center><?= $emperior['l6name'] ?></td>
|
<td align=center><?= $emperior['l6name'] ?></td>
|
||||||
<td id=bg1 align=center>사 도</td>
|
<td class='bg1' align=center>사 도</td>
|
||||||
<td align=center><?= $emperior['l5name'] ?></td>
|
<td align=center><?= $emperior['l5name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -122,8 +123,13 @@ foreach($emperiors as $emperior){
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<table style="margin-top:10px;" align=center width=1000 class='tb_layout bg0'>
|
<table style="margin-top:10px;" align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+44
-40
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -26,21 +27,21 @@ $serverID = $emperior['server_id']??($emperior['serverID']??null);
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 왕조일람</title>
|
<title><?= UniqueConst::$serverName ?>: 왕조일람</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../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('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class="tb_layout bg0">
|
<table align=center width=1000 class="tb_layout bg0">
|
||||||
<tr><td>역 대 왕 조<br>
|
<tr>
|
||||||
|
<td>역 대 왕 조<br>
|
||||||
<button onclick=window.close()>창 닫기</button>
|
<button onclick=window.close()>창 닫기</button>
|
||||||
<div style="float:right;"><a href="a_emperior.php"><button type='button'>전체보기</button></a><div>
|
<div style="float:right;"><a href="a_emperior.php"><button type='button'>전체보기</button></a>
|
||||||
</td></tr>
|
<div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@@ -57,25 +58,25 @@ if($emperior):
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 width=98 align=center>국 가 수<br>(최종 / 최대)</td>
|
<td class='bg1' width=98 align=center>국 가 수<br>(최종 / 최대)</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['nation_count'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['nation_count'] ?></td>
|
||||||
<td id=bg1 width=98 align=center>장 수 수<br>(최종 / 최대)</td>
|
<td class='bg1' width=98 align=center>장 수 수<br>(최종 / 최대)</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['gen_count'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['gen_count'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>등 장 국 가</td>
|
<td class='bg1' align=center>등 장 국 가</td>
|
||||||
<td colspan=5><?= $emperior['nation_name'] ?></td>
|
<td colspan=5><?= $emperior['nation_name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>국가별 성향</td>
|
<td class='bg1' align=center>국가별 성향</td>
|
||||||
<td colspan=5><?= $emperior['nation_hist'] ?></td>
|
<td colspan=5><?= $emperior['nation_hist'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>장 수 성 격</td>
|
<td class='bg1' align=center>장 수 성 격</td>
|
||||||
<td colspan=5><?= $emperior['personal_hist'] ?></td>
|
<td colspan=5><?= $emperior['personal_hist'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>장 수 특 기</td>
|
<td class='bg1' align=center>장 수 특 기</td>
|
||||||
<td colspan=5><?= $emperior['special_hist'] ?></td>
|
<td colspan=5><?= $emperior['special_hist'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -84,75 +85,75 @@ if($emperior):
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 width=98 align=center>국 력</td>
|
<td class='bg1' width=98 align=center>국 력</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['power'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['power'] ?></td>
|
||||||
<td id=bg1 width=98 align=center>성 향</td>
|
<td class='bg1' width=98 align=center>성 향</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['type'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['type'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 width=98 align=center>장 수</td>
|
<td class='bg1' width=98 align=center>장 수</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['gennum'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['gennum'] ?></td>
|
||||||
<td id=bg1 width=98 align=center>속 령</td>
|
<td class='bg1' width=98 align=center>속 령</td>
|
||||||
<td align=center width=398 colspan=2><?= $emperior['citynum'] ?></td>
|
<td align=center width=398 colspan=2><?= $emperior['citynum'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>총 인 구</td>
|
<td class='bg1' align=center>총 인 구</td>
|
||||||
<td align=center colspan=2><?= $emperior['pop'] ?></td>
|
<td align=center colspan=2><?= $emperior['pop'] ?></td>
|
||||||
<td id=bg1 align=center>인 구 율</td>
|
<td class='bg1' align=center>인 구 율</td>
|
||||||
<td align=center colspan=2><?= $emperior['poprate'] ?></td>
|
<td align=center colspan=2><?= $emperior['poprate'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>국 고</td>
|
<td class='bg1' align=center>국 고</td>
|
||||||
<td align=center colspan=2><?= $emperior['gold'] ?></td>
|
<td align=center colspan=2><?= $emperior['gold'] ?></td>
|
||||||
<td id=bg1 align=center>병 량</td>
|
<td class='bg1' align=center>병 량</td>
|
||||||
<td align=center colspan=2><?= $emperior['rice'] ?></td>
|
<td align=center colspan=2><?= $emperior['rice'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>황 제</td>
|
<td class='bg1' align=center>황 제</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l12name'] ?></td>
|
<td width=332><?= $emperior['l12name'] ?></td>
|
||||||
<td id=bg1 align=center>승 상</td>
|
<td class='bg1' align=center>승 상</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l11name'] ?></td>
|
<td width=332><?= $emperior['l11name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>위 장 군</td>
|
<td class='bg1' align=center>위 장 군</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l10name'] ?></td>
|
<td width=332><?= $emperior['l10name'] ?></td>
|
||||||
<td id=bg1 align=center>사 공</td>
|
<td class='bg1' align=center>사 공</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l9name'] ?></td>
|
<td width=332><?= $emperior['l9name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>표 기 장 군</td>
|
<td class='bg1' align=center>표 기 장 군</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l8name'] ?></td>
|
<td width=332><?= $emperior['l8name'] ?></td>
|
||||||
<td id=bg1 align=center>태 위</td>
|
<td class='bg1' align=center>태 위</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l7name'] ?></td>
|
<td width=332><?= $emperior['l7name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>거 기 장 군</td>
|
<td class='bg1' align=center>거 기 장 군</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l6name'] ?></td>
|
<td width=332><?= $emperior['l6name'] ?></td>
|
||||||
<td id=bg1 align=center>사 도</td>
|
<td class='bg1' align=center>사 도</td>
|
||||||
<td width=64> </td>
|
<td width=64> </td>
|
||||||
<td width=332><?= $emperior['l5name'] ?></td>
|
<td width=332><?= $emperior['l5name'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>오 호 장 군</td>
|
<td class='bg1' align=center>오 호 장 군</td>
|
||||||
<td colspan=5><?= $emperior['tiger'] ?></td>
|
<td colspan=5><?= $emperior['tiger'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>건 안 칠 자</td>
|
<td class='bg1' align=center>건 안 칠 자</td>
|
||||||
<td colspan=5><?= $emperior['eagle'] ?></td>
|
<td colspan=5><?= $emperior['eagle'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>장 수 들<br>(공헌도 순서)</td>
|
<td class='bg1' align=center>장 수 들<br>(공헌도 순서)</td>
|
||||||
<td colspan=5><?= $emperior['gen'] ?></td>
|
<td colspan=5><?= $emperior['gen'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id=bg1 align=center>역 사 기 록</td>
|
<td class='bg1' align=center>역 사 기 록</td>
|
||||||
<td colspan=5><?= formatHistoryToHTML(Json::decode($emperior['history'])) ?></td>
|
<td colspan=5><?= formatHistoryToHTML(Json::decode($emperior['history'])) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -191,12 +192,10 @@ if($showServers){
|
|||||||
}
|
}
|
||||||
$liveGenerals = $db->query('SELECT `no`as`general_no`, `name` FROM general WHERE no IN %li', $liveGenerals);
|
$liveGenerals = $db->query('SELECT `no`as`general_no`, `name` FROM general WHERE no IN %li', $liveGenerals);
|
||||||
$nation['generalsFull'] = array_merge($liveGenerals, $generals);
|
$nation['generalsFull'] = array_merge($liveGenerals, $generals);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$nation['generalsFull'] = $generals;
|
$nation['generalsFull'] = $generals;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$nation['generalsFull'] = [];
|
$nation['generalsFull'] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,8 +209,13 @@ if($showServers){
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+34
-26
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -43,20 +44,21 @@ if($gameStor->isunited){
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 장수일람</title>
|
<title><?= UniqueConst::$serverName ?>: 장수일람</title>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
<?= WebUtil::printDist('ts', 'common') ?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>장 수 일 람<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><form name=form1 method=post>정렬순서 :
|
<td>장 수 일 람<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<form name=form1 method=post>정렬순서 :
|
||||||
<select id='viewType' name='type' size=1>
|
<select id='viewType' name='type' size=1>
|
||||||
<option value=1>국가</option>
|
<option value=1>국가</option>
|
||||||
<option value=2>통솔</option>
|
<option value=2>통솔</option>
|
||||||
@@ -74,8 +76,10 @@ if($gameStor->isunited){
|
|||||||
<option value=14>연령</option>
|
<option value=14>연령</option>
|
||||||
<option value=15>NPC</option>
|
<option value=15>NPC</option>
|
||||||
</select>
|
</select>
|
||||||
<input type=submit value='정렬하기'></form>
|
<input type=submit value='정렬하기'>
|
||||||
</td></tr>
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<?php
|
<?php
|
||||||
$nationname = [];
|
$nationname = [];
|
||||||
@@ -110,21 +114,21 @@ $generalList = $db->query('SELECT owner,no,picture,imgsvr,npc,age,nation,special
|
|||||||
echo "
|
echo "
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=64 align=center id=bg1>얼 굴</td>
|
<td width=64 align=center class='bg1'>얼 굴</td>
|
||||||
<td width=140 align=center id=bg1>이 름</td>
|
<td width=140 align=center class='bg1'>이 름</td>
|
||||||
<td width=45 align=center id=bg1>연령</td>
|
<td width=45 align=center class='bg1'>연령</td>
|
||||||
<td width=45 align=center id=bg1>성격</td>
|
<td width=45 align=center class='bg1'>성격</td>
|
||||||
<td width=80 align=center id=bg1>특기</td>
|
<td width=80 align=center class='bg1'>특기</td>
|
||||||
<td width=45 align=center id=bg1>레 벨</td>
|
<td width=45 align=center class='bg1'>레 벨</td>
|
||||||
<td width=140 align=center id=bg1>국 가</td>
|
<td width=140 align=center class='bg1'>국 가</td>
|
||||||
<td width=55 align=center id=bg1>명 성</td>
|
<td width=55 align=center class='bg1'>명 성</td>
|
||||||
<td width=55 align=center id=bg1>계 급</td>
|
<td width=55 align=center class='bg1'>계 급</td>
|
||||||
<td width=75 align=center id=bg1>관 직</td>
|
<td width=75 align=center class='bg1'>관 직</td>
|
||||||
<td width=45 align=center id=bg1>통솔</td>
|
<td width=45 align=center class='bg1'>통솔</td>
|
||||||
<td width=45 align=center id=bg1>무력</td>
|
<td width=45 align=center class='bg1'>무력</td>
|
||||||
<td width=45 align=center id=bg1>지력</td>
|
<td width=45 align=center class='bg1'>지력</td>
|
||||||
<td width=45 align=center id=bg1>삭턴</td>
|
<td width=45 align=center class='bg1'>삭턴</td>
|
||||||
<td width=70 align=center id=bg1>벌점</td>
|
<td width=70 align=center class='bg1'>벌점</td>
|
||||||
</tr>";
|
</tr>";
|
||||||
foreach ($generalList as $general) {
|
foreach ($generalList as $general) {
|
||||||
$nation = $nationname[$general['nation']];
|
$nation = $nationname[$general['nation']];
|
||||||
@@ -202,8 +206,12 @@ echo "
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|||||||
+25
-33
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -28,11 +29,10 @@ $scenarioList = (function(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if($scenarioIdx !== null || key_exists($scenarioIdx, $scenarioList)){
|
if ($scenarioIdx && key_exists($scenarioIdx, $scenarioList[$seasonIdx] ?? [])) {
|
||||||
$searchScenarioName = $scenarioList[$seasonIdx][$scenarioIdx]['name'];
|
$searchScenarioName = $scenarioList[$seasonIdx][$scenarioIdx]['name'];
|
||||||
$searchFilter = $db->sqleval('season = %i AND scenario = %i', $seasonIdx, $scenarioIdx);
|
$searchFilter = $db->sqleval('season = %i AND scenario = %i', $seasonIdx, $scenarioIdx);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$searchScenarioName = '* 모두 *';
|
$searchScenarioName = '* 모두 *';
|
||||||
$searchFilter = $db->sqleval('season = %i', $seasonIdx);
|
$searchFilter = $db->sqleval('season = %i', $seasonIdx);
|
||||||
}
|
}
|
||||||
@@ -46,40 +46,31 @@ else{
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1136" />
|
<meta name="viewport" content="width=1136" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 명예의 전당</title>
|
<title><?= UniqueConst::$serverName ?>: 명예의 전당</title>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?= WebUtil::printCSS('css/hallOfFame.css') ?>
|
<?= WebUtil::printCSS('css/hallOfFame.css') ?>
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printDist('ts', ['common', 'hallOfFame']) ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery.redirect.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJs('js/hallOfFame.js')?>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1100 class='tb_layout bg0'>
|
<table align=center width=1100 class='tb_layout bg0'>
|
||||||
<tr><td>명 예 의 전 당<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td>명 예 의 전 당<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
시나리오 검색 : <select id="by_scenario" name="by_scenario">
|
시나리오 검색 : <select id="by_scenario" name="by_scenario">
|
||||||
<?php foreach ($scenarioList as $iterSeasonIdx => $subScenarioList) : ?>
|
<?php foreach ($scenarioList as $iterSeasonIdx => $subScenarioList) : ?>
|
||||||
<option
|
<option data-season="<?= $iterSeasonIdx ?>" value="" <?= ($iterSeasonIdx == $seasonIdx && $scenarioIdx === null) ? "selected='selected'" : '' ?>>* 시즌 : <?= $iterSeasonIdx ?> 종합 *</option>
|
||||||
data-season="<?=$iterSeasonIdx?>"
|
|
||||||
value=""
|
|
||||||
<?=($iterSeasonIdx == $seasonIdx && $scenarioIdx === null)?"selected='selected'":''?>
|
|
||||||
>* 시즌 : <?=$iterSeasonIdx?> 종합 *</option>
|
|
||||||
<?php foreach ($subScenarioList as $info) : ?>
|
<?php foreach ($subScenarioList as $info) : ?>
|
||||||
<option
|
<option data-season="<?= $iterSeasonIdx ?>" value="<?= $info['scenario'] ?>" <?= ($iterSeasonIdx == $seasonIdx && $info['scenario'] === $scenarioIdx) ? "selected='selected'" : '' ?>><?= $info['name'] ?>(<?= $info['cnt'] ?>회)</option>
|
||||||
data-season="<?=$iterSeasonIdx?>"
|
|
||||||
value="<?=$info['scenario']?>"
|
|
||||||
<?=($iterSeasonIdx == $seasonIdx && $info['scenario']===$scenarioIdx)?"selected='selected'":''?>
|
|
||||||
><?=$info['name']?>(<?=$info['cnt']?>회)</option>
|
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
?>
|
?>
|
||||||
</select>
|
</select>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div style="margin:auto;width:1100px;">
|
<div style="margin:auto;width:1100px;">
|
||||||
<?php
|
<?php
|
||||||
@@ -131,8 +122,7 @@ foreach($types as $typeName=>[$typeDescribe, $typeValue]) {
|
|||||||
if (!key_exists('bgColor', $general)) {
|
if (!key_exists('bgColor', $general)) {
|
||||||
if (!key_exists('color', $general)) {
|
if (!key_exists('color', $general)) {
|
||||||
$general['bgColor'] = GameConst::$basecolor4;
|
$general['bgColor'] = GameConst::$basecolor4;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$general['bgColor'] = $general['color'];
|
$general['bgColor'] = $general['color'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -144,8 +134,7 @@ foreach($types as $typeName=>[$typeDescribe, $typeValue]) {
|
|||||||
if (key_exists('picture', $general)) {
|
if (key_exists('picture', $general)) {
|
||||||
$imageTemp = GetImageURL($general['imgsvr']);
|
$imageTemp = GetImageURL($general['imgsvr']);
|
||||||
$general['pictureFullPath'] = "$imageTemp/{$general['picture']}";
|
$general['pictureFullPath'] = "$imageTemp/{$general['picture']}";
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$general['pictureFullPath'] = GetImageURL(0) . "/default.jpg";
|
$general['pictureFullPath'] = GetImageURL(0) . "/default.jpg";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,8 +142,7 @@ foreach($types as $typeName=>[$typeDescribe, $typeValue]) {
|
|||||||
$value = $general['value'];
|
$value = $general['value'];
|
||||||
if ($typeValue == 'percent') {
|
if ($typeValue == 'percent') {
|
||||||
$general['printValue'] = number_format($value * 100, 2) . '%';
|
$general['printValue'] = number_format($value * 100, 2) . '%';
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$general['printValue'] = number_format($value);
|
$general['printValue'] = number_format($value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -170,9 +158,13 @@ foreach($types as $typeName=>[$typeDescribe, $typeValue]) {
|
|||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
<table align=center width=1100 class='tb_layout bg0'>
|
<table align=center width=1100 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
|
||||||
|
|
||||||
|
</html>
|
||||||
+31
-19
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -47,8 +48,7 @@ $e = $e_year * 12 + $e_month;
|
|||||||
|
|
||||||
if ($serverID !== UniqueConst::$serverID) {
|
if ($serverID !== UniqueConst::$serverID) {
|
||||||
$mapTheme = $db->queryFirstField('SELECT map FROM ng_games WHERE server_id=%s', $serverID) ?: 'che';
|
$mapTheme = $db->queryFirstField('SELECT map FROM ng_games WHERE server_id=%s', $serverID) ?: 'che';
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$mapTheme = $admin['map_theme'] ?? 'che';
|
$mapTheme = $admin['map_theme'] ?? 'che';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,8 +56,7 @@ else{
|
|||||||
if ($serverID !== UniqueConst::$serverID && !$yearmonth) {
|
if ($serverID !== UniqueConst::$serverID && !$yearmonth) {
|
||||||
$year = $s_year;
|
$year = $s_year;
|
||||||
$month = $s_month;
|
$month = $s_month;
|
||||||
}
|
} else if (!$yearmonth) {
|
||||||
else if (!$yearmonth) {
|
|
||||||
$year = $admin['year'];
|
$year = $admin['year'];
|
||||||
$month = $admin['month'] - 1;
|
$month = $admin['month'] - 1;
|
||||||
} else {
|
} else {
|
||||||
@@ -99,18 +98,14 @@ $nations = Json::decode($history['nations']);
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 연감</title>
|
<title><?= UniqueConst::$serverName ?>: 연감</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?= WebUtil::printJS("js/map/theme_{$mapTheme}.js") ?>
|
<?= WebUtil::printJS("js/map/theme_{$mapTheme}.js") ?>
|
||||||
<?=WebUtil::printJS('js/map.js')?>
|
|
||||||
<?=WebUtil::printJS('js/history.js')?>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?= WebUtil::printCSS('css/map.css') ?>
|
<?= WebUtil::printCSS('css/map.css') ?>
|
||||||
<?= WebUtil::printCSS('css/history.css') ?>
|
<?= WebUtil::printCSS('css/history.css') ?>
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'history']) ?>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var startYear = <?= $s_year ?>;
|
var startYear = <?= $s_year ?>;
|
||||||
var startMonth = <?= $s_month ?>;
|
var startMonth = <?= $s_month ?>;
|
||||||
@@ -124,8 +119,11 @@ var nations = <?=$nations?$history['nations']:'{}'?>;
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>연 감<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td>연 감<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<form name=form1 method=post>
|
<form name=form1 method=post>
|
||||||
연월 선택 :
|
연월 선택 :
|
||||||
<input type=submit name=btn value="◀◀ 이전달">
|
<input type=submit name=btn value="◀◀ 이전달">
|
||||||
@@ -136,10 +134,15 @@ var nations = <?=$nations?$history['nations']:'{}'?>;
|
|||||||
<input type=submit name=btn value='조회하기'>
|
<input type=submit name=btn value='조회하기'>
|
||||||
<input type=submit name=btn value="다음달 ▶▶">
|
<input type=submit name=btn value="다음달 ▶▶">
|
||||||
</form>
|
</form>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 height=520 class='tb_layout bg0'>
|
<table align=center width=1000 height=520 class='tb_layout bg0'>
|
||||||
<thead><tr><th colspan=5 align=center id=bg1>중 원 지 도</th></tr></thead>
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th colspan=5 align=center class='bg1'>중 원 지 도</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr height=520>
|
<tr height=520>
|
||||||
<td width=698>
|
<td width=698>
|
||||||
@@ -169,13 +172,17 @@ var nations = <?=$nations?$history['nations']:'{}'?>;
|
|||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><th colspan=5 align=center id=bg1>중 원 정 세</th></tr>
|
<tr>
|
||||||
|
<th colspan=5 align=center class='bg1'>중 원 정 세</th>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=5 valign=top>
|
<td colspan=5 valign=top>
|
||||||
<?= formatHistoryToHTML(Json::decode($history['global_history'])) ?>
|
<?= formatHistoryToHTML(Json::decode($history['global_history'])) ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><th colspan=5 align=center id=bg1>장 수 동 향</th></tr>
|
<tr>
|
||||||
|
<th colspan=5 align=center class='bg1'>장 수 동 향</th>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=5 valign=top>
|
<td colspan=5 valign=top>
|
||||||
<?= formatHistoryToHTML(Json::decode($history['global_action'])) ?>
|
<?= formatHistoryToHTML(Json::decode($history['global_action'])) ?>
|
||||||
@@ -184,8 +191,12 @@ var nations = <?=$nations?$history['nations']:'{}'?>;
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<script>
|
<script>
|
||||||
window.serverNick = '<?= DB::prefix() ?>';
|
window.serverNick = '<?= DB::prefix() ?>';
|
||||||
@@ -200,4 +211,5 @@ reloadWorldMap({
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+36
-25
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -15,7 +16,10 @@ increaseRefresh("세력일람", 2);
|
|||||||
$me = $db->queryFirstRow('SELECT con, turntime FROM general WHERE owner=%i', $userID);
|
$me = $db->queryFirstRow('SELECT con, turntime FROM general WHERE owner=%i', $userID);
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
$con = checkLimit($me['con']);
|
||||||
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
|
if ($con >= 2) {
|
||||||
|
printLimitMsg($me['turntime']);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
@@ -25,24 +29,24 @@ if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 세력일람</title>
|
<title><?= UniqueConst::$serverName ?>: 세력일람</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/ext.kingdoms.js')?>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'extKingdoms']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>세 력 일 람<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>세 력 일 람<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
$nations = getAllNationStaticInfo();
|
$nations = getAllNationStaticInfo();
|
||||||
uasort($nations, function($lhs, $rhs){return $rhs['power']<=>$lhs['power'];});
|
uasort($nations, function ($lhs, $rhs) {
|
||||||
|
return $rhs['power'] <=> $lhs['power'];
|
||||||
|
});
|
||||||
|
|
||||||
$nations[0] = getNationStaticInfo(0);
|
$nations[0] = getNationStaticInfo(0);
|
||||||
|
|
||||||
@@ -80,8 +84,7 @@ foreach ($nations as $nation) {
|
|||||||
$generalPermission = checkSecretPermission($general, false);
|
$generalPermission = checkSecretPermission($general, false);
|
||||||
if ($generalPermission == 4) {
|
if ($generalPermission == 4) {
|
||||||
$ambassadors[] = $general['name'];
|
$ambassadors[] = $general['name'];
|
||||||
}
|
} else if ($generalPermission == 3) {
|
||||||
else if($generalPermission == 3){
|
|
||||||
$auditors[] = $general['name'];
|
$auditors[] = $general['name'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,13 +95,13 @@ foreach ($nations as $nation) {
|
|||||||
<td colspan=8 align=center style=color:" . newColor($nation['color']) . "; bgcolor={$nation['color']}>【 {$nation['name']} 】</td>
|
<td colspan=8 align=center style=color:" . newColor($nation['color']) . "; bgcolor={$nation['color']}>【 {$nation['name']} 】</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=80 align=center id=bg1>성 향</td>
|
<td width=80 align=center class='bg1'>성 향</td>
|
||||||
<td width=170 align=center><font color=yellow>" . getNationType($nation['type']) . "</font></td>
|
<td width=170 align=center><font color=yellow>" . getNationType($nation['type']) . "</font></td>
|
||||||
<td width=80 align=center id=bg1>작 위</td>
|
<td width=80 align=center class='bg1'>작 위</td>
|
||||||
<td width=170 align=center>" . getNationLevel($nation['level']) . "</td>
|
<td width=170 align=center>" . getNationLevel($nation['level']) . "</td>
|
||||||
<td width=80 align=center id=bg1>국 력</td>
|
<td width=80 align=center class='bg1'>국 력</td>
|
||||||
<td width=170 align=center>{$nation['power']}</td>
|
<td width=170 align=center>{$nation['power']}</td>
|
||||||
<td width=80 align=center id=bg1>장수 / 속령</td>
|
<td width=80 align=center class='bg1'>장수 / 속령</td>
|
||||||
<td width=170 align=center>{$nation['gennum']} / " . count($nation['cities'] ?? []) . "</td>
|
<td width=170 align=center>{$nation['gennum']} / " . count($nation['cities'] ?? []) . "</td>
|
||||||
";
|
";
|
||||||
for ($chiefLevel = 12; $chiefLevel >= 5; $chiefLevel--) {
|
for ($chiefLevel = 12; $chiefLevel >= 5; $chiefLevel--) {
|
||||||
@@ -113,9 +116,9 @@ foreach ($nations as $nation) {
|
|||||||
}
|
}
|
||||||
echo "</tr>
|
echo "</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>외교권자</td><td colspan=5>";
|
<td align=center class='bg1'>외교권자</td><td colspan=5>";
|
||||||
echo join(', ', $ambassadors);
|
echo join(', ', $ambassadors);
|
||||||
echo "</td><td align=center id=bg1>조언자</td><td align=center >";
|
echo "</td><td align=center class='bg1'>조언자</td><td align=center >";
|
||||||
echo count($auditors) . '명';
|
echo count($auditors) . '명';
|
||||||
echo "</td></tr>
|
echo "</td></tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -141,9 +144,13 @@ foreach ($nations as $nation) {
|
|||||||
<tr>
|
<tr>
|
||||||
<td colspan=8> 장수 일람 : ";
|
<td colspan=8> 장수 일람 : ";
|
||||||
foreach ($generals as $general) {
|
foreach ($generals as $general) {
|
||||||
if($general['npc'] >= 2) { echo "<font color=cyan>{$general['name']}</font>, "; }
|
if ($general['npc'] >= 2) {
|
||||||
elseif($general['npc'] == 1) { echo "<font color=skyblue>{$general['name']}</font>, "; }
|
echo "<font color=cyan>{$general['name']}</font>, ";
|
||||||
else { echo "{$general['name']}, "; }
|
} elseif ($general['npc'] == 1) {
|
||||||
|
echo "<font color=skyblue>{$general['name']}</font>, ";
|
||||||
|
} else {
|
||||||
|
echo "{$general['name']}, ";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
</td>
|
</td>
|
||||||
@@ -160,9 +167,9 @@ echo "
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=498 align=center> </td>
|
<td width=498 align=center> </td>
|
||||||
<td width=123 align=center id=bg1>장 수</td>
|
<td width=123 align=center class='bg1'>장 수</td>
|
||||||
<td width=123 align=center>{$nations[0]['gennum']}</td>
|
<td width=123 align=center>{$nations[0]['gennum']}</td>
|
||||||
<td width=123 align=center id=bg1>속 령</td>
|
<td width=123 align=center class='bg1'>속 령</td>
|
||||||
<td width=123 align=center>" . count($nations[0]['cities'] ?? []) . "</td>
|
<td width=123 align=center>" . count($nations[0]['cities'] ?? []) . "</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -187,8 +194,12 @@ echo"
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|||||||
+39
-27
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -26,19 +27,20 @@ $sel[$type] = "selected";
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 빙의일람</title>
|
<title><?= UniqueConst::$serverName ?>: 빙의일람</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.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('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>빙 의 일 람<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><form name=form1 method=post>정렬순서 :
|
<td>빙 의 일 람<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<form name=form1 method=post>정렬순서 :
|
||||||
<select name=type size=1>
|
<select name=type size=1>
|
||||||
<option <?= $sel[1] ?? '' ?> value=1>이름</option>
|
<option <?= $sel[1] ?? '' ?> value=1>이름</option>
|
||||||
<option <?= $sel[2] ?? '' ?> value=2>국가</option>
|
<option <?= $sel[2] ?? '' ?> value=2>국가</option>
|
||||||
@@ -49,8 +51,10 @@ $sel[$type] = "selected";
|
|||||||
<option <?= $sel[7] ?? '' ?> value=7>명성</option>
|
<option <?= $sel[7] ?? '' ?> value=7>명성</option>
|
||||||
<option <?= $sel[8] ?? '' ?> value=8>계급</option>
|
<option <?= $sel[8] ?? '' ?> value=8>계급</option>
|
||||||
</select>
|
</select>
|
||||||
<input type=submit value='정렬하기'></form>
|
<input type=submit value='정렬하기'>
|
||||||
</td></tr>
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<?php
|
<?php
|
||||||
$nationName = [];
|
$nationName = [];
|
||||||
@@ -59,8 +63,13 @@ foreach (getAllNationStaticInfo() as $nation) {
|
|||||||
$nationName[$nation['nation']] = $nation['name'];
|
$nationName[$nation['nation']] = $nation['name'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$generalList = $db->query('SELECT npc,nation,name,owner_name,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general where npc=1');
|
$generalList = $db->query('SELECT npc,nation,name,owner_name,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general where npc=1');
|
||||||
|
$generalListFromPool = $db->query('SELECT npc,nation,name,owner_name,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general JOIN select_pool on general.no = select_pool.general_id where npc=0');
|
||||||
|
|
||||||
|
if ($generalListFromPool) {
|
||||||
|
$generalList = array_merge($generalListFromPool, $generalList);
|
||||||
|
}
|
||||||
|
|
||||||
$sortType = [
|
$sortType = [
|
||||||
1 => ['name', true],
|
1 => ['name', true],
|
||||||
2 => ['nation', true],
|
2 => ['nation', true],
|
||||||
@@ -78,8 +87,7 @@ if($isAsc){
|
|||||||
usort($generalList, function ($lhs, $rhs) use ($sortKey) {
|
usort($generalList, function ($lhs, $rhs) use ($sortKey) {
|
||||||
return $lhs[$sortKey] <=> $rhs[$sortKey];
|
return $lhs[$sortKey] <=> $rhs[$sortKey];
|
||||||
});
|
});
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
usort($generalList, function ($lhs, $rhs) use ($sortKey) {
|
usort($generalList, function ($lhs, $rhs) use ($sortKey) {
|
||||||
return $rhs[$sortKey] <=> $lhs[$sortKey];
|
return $rhs[$sortKey] <=> $lhs[$sortKey];
|
||||||
});
|
});
|
||||||
@@ -88,18 +96,18 @@ else{
|
|||||||
?>
|
?>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=102 align=center id=bg1>희생된 장수</td>
|
<td width=102 align=center class='bg1'>희생된 장수</td>
|
||||||
<td width=102 align=center id=bg1>악령 이름</td>
|
<td width=102 align=center class='bg1'>악령 이름</td>
|
||||||
<td width=68 align=center id=bg1>레벨</td>
|
<td width=68 align=center class='bg1'>레벨</td>
|
||||||
<td width=118 align=center id=bg1>국가</td>
|
<td width=118 align=center class='bg1'>국가</td>
|
||||||
<td width=68 align=center id=bg1>성격</td>
|
<td width=68 align=center class='bg1'>성격</td>
|
||||||
<td width=88 align=center id=bg1>특기</td>
|
<td width=88 align=center class='bg1'>특기</td>
|
||||||
<td width=68 align=center id=bg1>종능</td>
|
<td width=68 align=center class='bg1'>종능</td>
|
||||||
<td width=68 align=center id=bg1>통솔</td>
|
<td width=68 align=center class='bg1'>통솔</td>
|
||||||
<td width=68 align=center id=bg1>무력</td>
|
<td width=68 align=center class='bg1'>무력</td>
|
||||||
<td width=68 align=center id=bg1>지력</td>
|
<td width=68 align=center class='bg1'>지력</td>
|
||||||
<td width=78 align=center id=bg1>명성</td>
|
<td width=78 align=center class='bg1'>명성</td>
|
||||||
<td width=78 align=center id=bg1>계급</td>
|
<td width=78 align=center class='bg1'>계급</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php foreach ($generalList as $general) : ?>
|
<?php foreach ($generalList as $general) : ?>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -119,8 +127,12 @@ else{
|
|||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|||||||
+20
-15
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -18,21 +19,26 @@ $mapTheme = $gameStor->map_theme??'che';
|
|||||||
$me = $db->queryFirstRow('SELECT con,turntime from general where owner=%i', $userID);
|
$me = $db->queryFirstRow('SELECT con,turntime from general where owner=%i', $userID);
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
$con = checkLimit($me['con']);
|
||||||
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
|
if ($con >= 2) {
|
||||||
|
printLimitMsg($me['turntime']);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 세력도</title>
|
<title><?= UniqueConst::$serverName ?>: 세력도</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
<?= WebUtil::printCSS('css/normalize.css') ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printCSS('css/map.css') ?>
|
||||||
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?= WebUtil::printJS('d_shared/base_map.js') ?>
|
<?= WebUtil::printJS('d_shared/base_map.js') ?>
|
||||||
<?=WebUtil::printJS('js/map.js')?>
|
<?= WebUtil::printDist('ts', ['common', 'map']) ?>
|
||||||
<script>
|
<script>
|
||||||
window.serverNick = '<?= DB::prefix() ?>';
|
window.serverNick = '<?= DB::prefix() ?>';
|
||||||
window.serverID = '<?= UniqueConst::$serverID ?>';
|
window.serverID = '<?= UniqueConst::$serverID ?>';
|
||||||
@@ -46,17 +52,13 @@ $(function(){
|
|||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/normalize.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/map.css')?>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1200 class='tb_layout bg0'>
|
<table align=center width=1200 class='tb_layout bg0'>
|
||||||
<tr><td>세 력 도<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>세 력 도<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1200 height=520 class='tb_layout bg0'>
|
<table align=center width=1200 height=520 class='tb_layout bg0'>
|
||||||
<tr height=520>
|
<tr height=520>
|
||||||
@@ -74,10 +76,13 @@ $(function(){
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1200 class='tb_layout bg0'>
|
<table align=center width=1200 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
+80
-25
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -47,23 +48,21 @@ if ($admin['maxonline'] < $curonline) {
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title><?= UniqueConst::$serverName ?>: 트래픽정보</title>
|
<title><?= UniqueConst::$serverName ?>: 트래픽정보</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?=WebUtil::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('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<style>
|
<style>
|
||||||
.big_bar {
|
.big_bar {
|
||||||
float: left;
|
float: left;
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.big_bar span {
|
.big_bar span {
|
||||||
float: right;
|
float: right;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -83,16 +82,26 @@ span.out_bar{
|
|||||||
margin-left: 1ch;
|
margin-left: 1ch;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>트 래 픽 정 보<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>트 래 픽 정 보<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center width=1016>
|
<table align=center width=1016>
|
||||||
<tr><td align=left>
|
<tr>
|
||||||
|
<td align=left>
|
||||||
<table align=center class='tb_layout bg0'>
|
<table align=center class='tb_layout bg0'>
|
||||||
<tr><td colspan=4 align=center id=bg2><font size=5>접 속 량</font></td></tr>
|
<tr>
|
||||||
|
<td colspan=4 align=center class='bg2'>
|
||||||
|
<font size=5>접 속 량</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
$refresh[] = $admin['refresh'];
|
$refresh[] = $admin['refresh'];
|
||||||
foreach ($refresh as $i => $value) {
|
foreach ($refresh as $i => $value) {
|
||||||
@@ -101,8 +110,8 @@ foreach($refresh as $i=>$value){
|
|||||||
$dt = substr($date[$i], 11, 5); ?>
|
$dt = substr($date[$i], 11, 5); ?>
|
||||||
<tr height=30>
|
<tr height=30>
|
||||||
<td width=100 align=center><?= $year[$i] ?>년 <?= $month[$i] ?>월</td>
|
<td width=100 align=center><?= $year[$i] ?>년 <?= $month[$i] ?>월</td>
|
||||||
<td width=60 align=center id=bg2><?=$dt?></td>
|
<td width=60 align=center class='bg2'><?= $dt ?></td>
|
||||||
<td width=2 align=center id=bg1></td>
|
<td width=2 align=center class='bg1'></td>
|
||||||
<td width=320>
|
<td width=320>
|
||||||
<?php if ($w == 0) : ?>
|
<?php if ($w == 0) : ?>
|
||||||
<span class="out_bar"><?= $value ?></span>
|
<span class="out_bar"><?= $value ?></span>
|
||||||
@@ -117,9 +126,11 @@ foreach($refresh as $i=>$value){
|
|||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<tr><td colspan=4 height=5 align=center id=bg1></td></tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=4 height=30 align=center id=bg0>최고기록: <?=$admin['maxrefresh']?></td>
|
<td colspan=4 height=5 align=center class='bg1'></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=4 height=30 align=center class='bg0'>최고기록: <?= $admin['maxrefresh'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
@@ -127,7 +138,11 @@ foreach($refresh as $i=>$value){
|
|||||||
</td>
|
</td>
|
||||||
<td align=right>
|
<td align=right>
|
||||||
<table align=center class='tb_layout bg0'>
|
<table align=center class='tb_layout bg0'>
|
||||||
<tr><td colspan=4 align=center id=bg2><font size=5>접 속 자</font></td></tr>
|
<tr>
|
||||||
|
<td colspan=4 align=center class='bg2'>
|
||||||
|
<font size=5>접 속 자</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
$online[] = $curonline;
|
$online[] = $curonline;
|
||||||
foreach ($online as $i => $value) {
|
foreach ($online as $i => $value) {
|
||||||
@@ -136,8 +151,8 @@ foreach($online as $i=>$value){
|
|||||||
$dt = substr($date[$i], 11, 5); ?>
|
$dt = substr($date[$i], 11, 5); ?>
|
||||||
<tr height=30>
|
<tr height=30>
|
||||||
<td width=100 align=center><?= $year[$i] ?>년 <?= $month[$i] ?>월</td>
|
<td width=100 align=center><?= $year[$i] ?>년 <?= $month[$i] ?>월</td>
|
||||||
<td width=60 align=center id=bg2><?=$dt?></td>
|
<td width=60 align=center class='bg2'><?= $dt ?></td>
|
||||||
<td width=2 align=center id=bg1></td>
|
<td width=2 align=center class='bg1'></td>
|
||||||
<td width=320>
|
<td width=320>
|
||||||
<?php if ($w == 0) : ?>
|
<?php if ($w == 0) : ?>
|
||||||
<span class="out_bar"><?= $value ?></span>
|
<span class="out_bar"><?= $value ?></span>
|
||||||
@@ -152,16 +167,23 @@ foreach($online as $i=>$value){
|
|||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<tr><td colspan=4 height=5 align=center id=bg1></td></tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=4 height=30 align=center id=bg0>최고기록: <?=$admin['maxonline']?></td>
|
<td colspan=4 height=5 align=center class='bg1'></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=4 height=30 align=center class='bg0'>최고기록: <?= $admin['maxonline'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center class='tb_layout bg0'>
|
<table align=center class='tb_layout bg0'>
|
||||||
<tr><td colspan=3 align=center id=bg2><font size=5>주 의 대 상 자 (순간과도갱신)</font></td></tr>
|
<tr>
|
||||||
|
<td colspan=3 align=center class='bg2'>
|
||||||
|
<font size=5>주 의 대 상 자 (순간과도갱신)</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
$max_refresh = $db->queryFirstRow('SELECT sum(refresh) as refresh, sum(`connect`) as `connect` from general');
|
$max_refresh = $db->queryFirstRow('SELECT sum(refresh) as refresh, sum(`connect`) as `connect` from general');
|
||||||
$max_refresh['name'] = '접속자 총합';
|
$max_refresh['name'] = '접속자 총합';
|
||||||
@@ -191,10 +213,15 @@ foreach ($refresh_result as $i=>$user) {
|
|||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
@@ -217,9 +244,37 @@ function getHex($dec)
|
|||||||
function getHexCode($hex)
|
function getHexCode($hex)
|
||||||
{
|
{
|
||||||
switch ($hex) {
|
switch ($hex) {
|
||||||
case 0: return "0"; case 1: return "1"; case 2: return "2"; case 3: return "3";
|
case 0:
|
||||||
case 4: return "4"; case 5: return "5"; case 6: return "6"; case 7: return "7";
|
return "0";
|
||||||
case 8: return "8"; case 9: return "9"; case 10: return "A"; case 11: return "B";
|
case 1:
|
||||||
case 12: return "C"; case 13: return "D"; case 14: return "E"; case 15: return "F";
|
return "1";
|
||||||
|
case 2:
|
||||||
|
return "2";
|
||||||
|
case 3:
|
||||||
|
return "3";
|
||||||
|
case 4:
|
||||||
|
return "4";
|
||||||
|
case 5:
|
||||||
|
return "5";
|
||||||
|
case 6:
|
||||||
|
return "6";
|
||||||
|
case 7:
|
||||||
|
return "7";
|
||||||
|
case 8:
|
||||||
|
return "8";
|
||||||
|
case 9:
|
||||||
|
return "9";
|
||||||
|
case 10:
|
||||||
|
return "A";
|
||||||
|
case 11:
|
||||||
|
return "B";
|
||||||
|
case 12:
|
||||||
|
return "C";
|
||||||
|
case 13:
|
||||||
|
return "D";
|
||||||
|
case 14:
|
||||||
|
return "E";
|
||||||
|
case 15:
|
||||||
|
return "F";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+64
-32
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -12,7 +13,7 @@ $gameStor = KVStorage::getStorage($db, 'game_env');
|
|||||||
increaseRefresh("설문조사", 1);
|
increaseRefresh("설문조사", 1);
|
||||||
|
|
||||||
$isVoteAdmin = in_array('vote', $session->acl[DB::prefix()] ?? []);
|
$isVoteAdmin = in_array('vote', $session->acl[DB::prefix()] ?? []);
|
||||||
$isVoteAdmin |= $session->userGrade >= 5;
|
$isVoteAdmin = $isVoteAdmin || $session->userGrade >= 5;
|
||||||
|
|
||||||
$me = $db->queryFirstRow('SELECT no,vote from general where owner=%i', $userID);
|
$me = $db->queryFirstRow('SELECT no,vote from general where owner=%i', $userID);
|
||||||
|
|
||||||
@@ -23,17 +24,14 @@ $vote = $admin['vote']?:['-'];
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title><?= UniqueConst::$serverName ?>: 설문조사</title>
|
<title><?= UniqueConst::$serverName ?>: 설문조사</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?=WebUtil::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('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<style>
|
<style>
|
||||||
.little_bar {
|
.little_bar {
|
||||||
float: left;
|
float: left;
|
||||||
@@ -43,6 +41,8 @@ $vote = $admin['vote']?:['-'];
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function captureKey(e) {
|
function captureKey(e) {
|
||||||
if (e.keyCode == 13 && e.srcElement.type == 'text') {
|
if (e.keyCode == 13 && e.srcElement.type == 'text') {
|
||||||
@@ -54,13 +54,20 @@ function captureKey(e) {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>설 문 조 사<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>설 문 조 사<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<form name=form1 action=c_vote.php method=post>
|
<form name=form1 action=c_vote.php method=post>
|
||||||
<tr><td colspan=3 align=center id=bg2><font size=5>설 문 조 사 (<?=$admin['develcost']*5?>금과 추첨으로 유니크템 증정!)</font></td></tr>
|
<tr>
|
||||||
|
<td colspan=3 align=center class='bg2'>
|
||||||
|
<font size=5>설 문 조 사 (<?= $admin['develcost'] * 5 ?>금과 추첨으로 유니크템 증정!)</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
if ($isVoteAdmin) {
|
if ($isVoteAdmin) {
|
||||||
@@ -76,7 +83,7 @@ if ($isVoteAdmin) {
|
|||||||
$vote_title = Tag2Code($vote_title);
|
$vote_title = Tag2Code($vote_title);
|
||||||
echo "
|
echo "
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=2 width=148 align=center id=bg1>제 목</td>
|
<td colspan=2 width=148 align=center class='bg1'>제 목</td>
|
||||||
<td width=848 align=left> {$vote_title}</td>
|
<td width=848 align=left> {$vote_title}</td>
|
||||||
</tr>
|
</tr>
|
||||||
";
|
";
|
||||||
@@ -151,7 +158,7 @@ echo "
|
|||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=4 align=center id=bg1>댓 글</td>
|
<td colspan=4 align=center class='bg1'>댓 글</td>
|
||||||
</tr>
|
</tr>
|
||||||
";
|
";
|
||||||
for ($i = 0; $i < $commentCount; $i++) {
|
for ($i = 0; $i < $commentCount; $i++) {
|
||||||
@@ -180,7 +187,9 @@ if ($me['no'] > 0) {
|
|||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td colspan=3 align=center id=bg2><font size=5>
|
<tr>
|
||||||
|
<td colspan=3 align=center class='bg2'>
|
||||||
|
<font size=5>
|
||||||
전 체 통 계
|
전 체 통 계
|
||||||
<?php
|
<?php
|
||||||
if ($isVoteAdmin) {
|
if ($isVoteAdmin) {
|
||||||
@@ -234,8 +243,7 @@ if ($admin['voteopen'] >= 1 || $isVoteAdmin) {
|
|||||||
$per = round(($totalVote[$i] ?? 0) * 100 / $memCount, 1);
|
$per = round(($totalVote[$i] ?? 0) * 100 / $memCount, 1);
|
||||||
if ($i == $voteTypeCount - 1) {
|
if ($i == $voteTypeCount - 1) {
|
||||||
$per = 100 - $totalPer;
|
$per = 100 - $totalPer;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$totalPer += $per;
|
$totalPer += $per;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -280,8 +288,7 @@ if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
|
|||||||
$per = round(Util::array_get($nationVote[0][$i], 0) / $memCount * 100, 1);
|
$per = round(Util::array_get($nationVote[0][$i], 0) / $memCount * 100, 1);
|
||||||
if ($i == $voteTypeCount - 1) {
|
if ($i == $voteTypeCount - 1) {
|
||||||
$per = 100 - $totalPer;
|
$per = 100 - $totalPer;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$totalPer += $per;
|
$totalPer += $per;
|
||||||
}
|
}
|
||||||
// if($per < 5) { $vote['cnt'] = " "; }
|
// if($per < 5) { $vote['cnt'] = " "; }
|
||||||
@@ -308,8 +315,7 @@ if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
|
|||||||
$voteCount = $nationVoteCount[$nation['nation']] ?? 0;
|
$voteCount = $nationVoteCount[$nation['nation']] ?? 0;
|
||||||
if ($memCount == 0) {
|
if ($memCount == 0) {
|
||||||
$percentage = 100;
|
$percentage = 100;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$percentage = round($voteCount / $memCount * 100, 1);
|
$percentage = round($voteCount / $memCount * 100, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,8 +338,7 @@ if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
|
|||||||
|
|
||||||
if ($i == $voteTypeCount - 1) {
|
if ($i == $voteTypeCount - 1) {
|
||||||
$per = 100 - $totalPer;
|
$per = 100 - $totalPer;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$totalPer += $per;
|
$totalPer += $per;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -358,10 +363,15 @@ if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
|
|||||||
</form>
|
</form>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
@@ -373,14 +383,30 @@ function getVoteColor($type)
|
|||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
default:
|
default:
|
||||||
case 0: $color = "black"; break;
|
case 0:
|
||||||
case 1: $color = "red"; break;
|
$color = "black";
|
||||||
case 2: $color = "orange"; break;
|
break;
|
||||||
case 3: $color = "yellow"; break;
|
case 1:
|
||||||
case 4: $color = "green"; break;
|
$color = "red";
|
||||||
case 5: $color = "blue"; break;
|
break;
|
||||||
case 6: $color = "navy"; break;
|
case 2:
|
||||||
case 7: $color = "purple"; break;
|
$color = "orange";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$color = "yellow";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$color = "green";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$color = "blue";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$color = "navy";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$color = "purple";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $color;
|
return $color;
|
||||||
@@ -393,9 +419,15 @@ function getNewColor($type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 2: $color = "black"; break;
|
case 2:
|
||||||
case 3: $color = "black"; break;
|
$color = "black";
|
||||||
default:$color = "white"; break;
|
break;
|
||||||
|
case 3:
|
||||||
|
$color = "black";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$color = "white";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $color;
|
return $color;
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
include "lib.php";
|
||||||
|
include "func.php";
|
||||||
|
|
||||||
|
APIHelper::launch(dirname(__FILE__));
|
||||||
+57
-25
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -44,27 +45,37 @@ if ($msg2 == "") {
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title><?= UniqueConst::$serverName ?>: 거래장</title>
|
<title><?= UniqueConst::$serverName ?>: 거래장</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.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('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>거 래 장<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td align=center id=bg2><font color=orange size=6><b>거 래 장</b></font><input type=button value='갱신' onclick="location.replace('b_auction.php')"></td></tr>
|
<td>거 래 장<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align=center class='bg2'>
|
||||||
|
<font color=orange size=6><b>거 래 장</b></font><input type=button value='갱신' onclick="location.replace('b_auction.php')">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<form method=post action=c_auction.php>
|
<form method=post action=c_auction.php>
|
||||||
<tr><td colspan=11 align=center bgcolor=orange><font size=5>팝 니 다</font></td></tr>
|
<tr>
|
||||||
<tr align=center id=bg1>
|
<td colspan=11 align=center bgcolor=orange>
|
||||||
|
<font size=5>팝 니 다</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr align=center class='bg1'>
|
||||||
<td width=68>거래번호</td>
|
<td width=68>거래번호</td>
|
||||||
<td width=48>선택</td>
|
<td width=48>선택</td>
|
||||||
<td width=98>판매자</td>
|
<td width=98>판매자</td>
|
||||||
@@ -118,18 +129,18 @@ foreach($db->query('SELECT * from auction where type=0 order by expire') as $auc
|
|||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<tr height=25>
|
<tr height=25>
|
||||||
<td align=center id=bg1>등록결과</td>
|
<td align=center class='bg1'>등록결과</td>
|
||||||
<td colspan=10><?= ConvertLog($msg) ?></td>
|
<td colspan=10><?= ConvertLog($msg) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>입찰등록</td>
|
<td align=center class='bg1'>입찰등록</td>
|
||||||
<td colspan=10>
|
<td colspan=10>
|
||||||
지불할 금액: <input type=text style=color:white;background-color:black; size=6 maxlength=6 name=value>
|
지불할 금액: <input type=text style=color:white;background-color:black; size=6 maxlength=6 name=value>
|
||||||
<input type=<?= $btn ?> name=btn value='구매시도' onclick='return confirm("정말 입찰하시겠습니까?");'>
|
<input type=<?= $btn ?> name=btn value='구매시도' onclick='return confirm("정말 입찰하시겠습니까?");'>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>거래등록</td>
|
<td align=center class='bg1'>거래등록</td>
|
||||||
<td colspan=10>
|
<td colspan=10>
|
||||||
종료: <input type=text style=color:white;background-color:black; size=2 maxlength=2 name=term value=12>턴 후
|
종료: <input type=text style=color:white;background-color:black; size=2 maxlength=2 name=term value=12>턴 후
|
||||||
물품: 쌀
|
물품: 쌀
|
||||||
@@ -151,8 +162,12 @@ foreach($db->query('SELECT * from auction where type=0 order by expire') as $auc
|
|||||||
<br>
|
<br>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<form method=post action=c_auction.php>
|
<form method=post action=c_auction.php>
|
||||||
<tr><td colspan=11 align=center bgcolor=skyblue><font size=5>삽 니 다</font></td></tr>
|
<tr>
|
||||||
<tr align=center id=bg1>
|
<td colspan=11 align=center bgcolor=skyblue>
|
||||||
|
<font size=5>삽 니 다</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr align=center class='bg1'>
|
||||||
<td width=68>거래번호</td>
|
<td width=68>거래번호</td>
|
||||||
<td width=48>선택</td>
|
<td width=48>선택</td>
|
||||||
<td width=98>구매자</td>
|
<td width=98>구매자</td>
|
||||||
@@ -205,18 +220,18 @@ foreach($db->query('SELECT * from auction where type=1 order by expire') as $auc
|
|||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<tr height=25>
|
<tr height=25>
|
||||||
<td align=center id=bg1>등록결과</td>
|
<td align=center class='bg1'>등록결과</td>
|
||||||
<td colspan=10><?= ConvertLog($msg2) ?></td>
|
<td colspan=10><?= ConvertLog($msg2) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>입찰등록</td>
|
<td align=center class='bg1'>입찰등록</td>
|
||||||
<td colspan=10>
|
<td colspan=10>
|
||||||
수령할 금액: <input type=text style=color:white;background-color:black; size=6 maxlength=6 name=value>
|
수령할 금액: <input type=text style=color:white;background-color:black; size=6 maxlength=6 name=value>
|
||||||
<input type=<?= $btn ?> name=btn value='판매시도' onclick='return confirm("정말 입찰하시겠습니까?");'>
|
<input type=<?= $btn ?> name=btn value='판매시도' onclick='return confirm("정말 입찰하시겠습니까?");'>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>거래등록</td>
|
<td align=center class='bg1'>거래등록</td>
|
||||||
<td colspan=10>
|
<td colspan=10>
|
||||||
종료: <input type=text style=color:white;background-color:black; size=2 maxlength=2 name=term value=12>턴 후
|
종료: <input type=text style=color:white;background-color:black; size=2 maxlength=2 name=term value=12>턴 후
|
||||||
물품: 쌀
|
물품: 쌀
|
||||||
@@ -237,12 +252,23 @@ foreach($db->query('SELECT * from auction where type=1 order by expire') as $auc
|
|||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td align=center id=bg2><font size=5>최 근 기 록</font></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td align=center class='bg2'>
|
||||||
|
<font size=5>최 근 기 록</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<?= getAuctionLogRecent(20) ?>
|
<?= getAuctionLogRecent(20) ?>
|
||||||
</td></tr>
|
</td>
|
||||||
<tr><td align=center id=bg2><font size=5>도 움 말</font></td></tr>
|
</tr>
|
||||||
<tr><td>
|
<tr>
|
||||||
|
<td align=center class='bg2'>
|
||||||
|
<font size=5>도 움 말</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<font color=white size=2>
|
<font color=white size=2>
|
||||||
ㆍ판매거래는 거래자가 판매할 물품을 거래하면, 구입을 희망하는 사람이 현재가보다 높게 입찰하여 구입하는 방식입니다.<br>
|
ㆍ판매거래는 거래자가 판매할 물품을 거래하면, 구입을 희망하는 사람이 현재가보다 높게 입찰하여 구입하는 방식입니다.<br>
|
||||||
ㆍ<font color=cyan>Hint</font>) 쌀이 귀한 경우는 입찰자가 많아서 자연스레 단가가 오르게 됩니다. (해당 물품을 사려는 가격이 오름)<br>
|
ㆍ<font color=cyan>Hint</font>) 쌀이 귀한 경우는 입찰자가 많아서 자연스레 단가가 오르게 됩니다. (해당 물품을 사려는 가격이 오름)<br>
|
||||||
@@ -266,9 +292,15 @@ foreach($db->query('SELECT * from auction where type=1 order by expire') as $auc
|
|||||||
ㆍ<font color=cyan>Hint</font>) 단가가 낮으면(<1.00) 금이 비싸므로 구매가 이득입니다.<br>
|
ㆍ<font color=cyan>Hint</font>) 단가가 낮으면(<1.00) 금이 비싸므로 구매가 이득입니다.<br>
|
||||||
ㆍ즐거운 거래!
|
ㆍ즐거운 거래!
|
||||||
</font>
|
</font>
|
||||||
</td></tr>
|
</td>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
</tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<tr>
|
||||||
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+48
-29
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -63,8 +64,7 @@ $permission = checkSecretPermission($me);
|
|||||||
if ($permission < 0) {
|
if ($permission < 0) {
|
||||||
echo '국가에 소속되어있지 않습니다.';
|
echo '국가에 소속되어있지 않습니다.';
|
||||||
die();
|
die();
|
||||||
}
|
} else if ($permission < 1) {
|
||||||
else if ($permission < 1) {
|
|
||||||
echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.";
|
echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.";
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
@@ -82,25 +82,24 @@ if ($btn == '정렬하기') {
|
|||||||
[$queryTypeText, $reqArgType, $comp] = $queryMap[$reqQueryType];
|
[$queryTypeText, $reqArgType, $comp] = $queryMap[$reqQueryType];
|
||||||
if ($reqArgType === 0) {
|
if ($reqArgType === 0) {
|
||||||
$generalBasicList = $db->query('SELECT no, name, npc, turntime, officer_level FROM general WHERE nation = %i', $nationID);
|
$generalBasicList = $db->query('SELECT no, name, npc, turntime, officer_level FROM general WHERE nation = %i', $nationID);
|
||||||
}
|
} else if ($reqArgType === 1) {
|
||||||
else if($reqArgType===1){
|
|
||||||
$generalBasicList = $db->query('SELECT no, name, npc, turntime, officer_level, %b FROM general WHERE nation = %i', $reqQueryType, $nationID);
|
$generalBasicList = $db->query('SELECT no, name, npc, turntime, officer_level, %b FROM general WHERE nation = %i', $reqQueryType, $nationID);
|
||||||
}
|
} else if ($reqArgType === 2) {
|
||||||
else if($reqArgType===2){
|
$generalBasicList = $db->query(
|
||||||
$generalBasicList = $db->query('SELECT no, name, npc, turntime, officer_level, value as %b
|
'SELECT no, name, npc, turntime, officer_level, value as %b
|
||||||
FROM general LEFT JOIN rank_data
|
FROM general LEFT JOIN rank_data
|
||||||
ON general.no = rank_data.general_id
|
ON general.no = rank_data.general_id
|
||||||
WHERE rank_data.type = %s AND general.nation = %i',
|
WHERE rank_data.type = %s AND general.nation = %i',
|
||||||
$reqQueryType, $reqQueryType, $nationID
|
$reqQueryType,
|
||||||
|
$reqQueryType,
|
||||||
|
$nationID
|
||||||
);
|
);
|
||||||
}
|
} else if ($reqArgType === 3) {
|
||||||
else if($reqArgType===3){
|
|
||||||
$generalBasicList = array_map(function ($arr) {
|
$generalBasicList = array_map(function ($arr) {
|
||||||
$arr['aux'] = Json::decode($arr['aux']);
|
$arr['aux'] = Json::decode($arr['aux']);
|
||||||
return $arr;
|
return $arr;
|
||||||
}, $db->query('SELECT no, name, npc, turntime, officer_level, aux FROM general WHERE nation = %i', $nationID));
|
}, $db->query('SELECT no, name, npc, turntime, officer_level, aux FROM general WHERE nation = %i', $nationID));
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
throw new \sammo\MustNotBeReachedException();
|
throw new \sammo\MustNotBeReachedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,19 +119,20 @@ $showGeneral = General::createGeneralObjFromDB($gen);
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.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('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>감 찰 부<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td>감 찰 부<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<form name=form1 method=post>
|
<form name=form1 method=post>
|
||||||
정렬순서 :
|
정렬순서 :
|
||||||
<select name='query_type' size=1>
|
<select name='query_type' size=1>
|
||||||
@@ -149,24 +149,34 @@ $showGeneral = General::createGeneralObjFromDB($gen);
|
|||||||
</select>
|
</select>
|
||||||
<input type=submit name=btn value='조회하기'>
|
<input type=submit name=btn value='조회하기'>
|
||||||
</form>
|
</form>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table width=1000 align=center class='tb_layout bg0'>
|
<table width=1000 align=center class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=50% align=center id=bg1><font color=skyblue size=3>장 수 정 보</font></td>
|
<td width=50% align=center class='bg1'>
|
||||||
<td width=50% align=center id=bg1><font color=orange size=3>장 수 열 전</font></td>
|
<font color=skyblue size=3>장 수 정 보</font>
|
||||||
|
</td>
|
||||||
|
<td width=50% align=center class='bg1'>
|
||||||
|
<font color=orange size=3>장 수 열 전</font>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
<?php generalInfo($showGeneral); generalInfo2($showGeneral); ?>
|
<?php generalInfo($showGeneral);
|
||||||
|
generalInfo2($showGeneral); ?>
|
||||||
</td>
|
</td>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
<?= formatHistoryToHTML(getGeneralHistoryLogAll($gen)) ?>
|
<?= formatHistoryToHTML(getGeneralHistoryLogAll($gen)) ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1><font color=orange size=3>전투 기록</font></td>
|
<td align=center class='bg1'>
|
||||||
<td align=center id=bg1><font color=orange size=3>전투 결과</font></td>
|
<font color=orange size=3>전투 기록</font>
|
||||||
|
</td>
|
||||||
|
<td align=center class='bg1'>
|
||||||
|
<font color=orange size=3>전투 결과</font>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
@@ -178,8 +188,12 @@ $showGeneral = General::createGeneralObjFromDB($gen);
|
|||||||
</tr>
|
</tr>
|
||||||
<?php if ($showGeneral->getNPCType() > 1 || $permission >= 2) : ?>
|
<?php if ($showGeneral->getNPCType() > 1 || $permission >= 2) : ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1><font color=orange size=3>개인 기록</font></td>
|
<td align=center class='bg1'>
|
||||||
<td align=center id=bg1><font color=orange size=3> </font></td>
|
<font color=orange size=3>개인 기록</font>
|
||||||
|
</td>
|
||||||
|
<td align=center class='bg1'>
|
||||||
|
<font color=orange size=3> </font>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td valign=top>
|
<td valign=top>
|
||||||
@@ -191,8 +205,13 @@ $showGeneral = General::createGeneralObjFromDB($gen);
|
|||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+139
-39
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -35,11 +36,32 @@ if ($con >= 2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch ($admin['tnmt_type']) {
|
switch ($admin['tnmt_type']) {
|
||||||
default: throw new \RuntimeException('Invalid tnmt_type');
|
default:
|
||||||
case 0: $tnmt_type = "<font color=cyan>전력전</font>"; $tp = "total"; $tp2 = "종합"; $tp3 = "total"; break;
|
throw new \RuntimeException('Invalid tnmt_type');
|
||||||
case 1: $tnmt_type = "<font color=cyan>통솔전</font>"; $tp = "leadership"; $tp2 = "통솔"; $tp3 = "leadership"; break;
|
case 0:
|
||||||
case 2: $tnmt_type = "<font color=cyan>일기토</font>"; $tp = "strength"; $tp2 = "무력"; $tp3 = "strength"; break;
|
$tnmt_type = "<font color=cyan>전력전</font>";
|
||||||
case 3: $tnmt_type = "<font color=cyan>설전</font>"; $tp = "intel"; $tp2 = "지력"; $tp3 = "intel"; break;
|
$tp = "total";
|
||||||
|
$tp2 = "종합";
|
||||||
|
$tp3 = "total";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$tnmt_type = "<font color=cyan>통솔전</font>";
|
||||||
|
$tp = "leadership";
|
||||||
|
$tp2 = "통솔";
|
||||||
|
$tp3 = "leadership";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$tnmt_type = "<font color=cyan>일기토</font>";
|
||||||
|
$tp = "strength";
|
||||||
|
$tp2 = "무력";
|
||||||
|
$tp3 = "strength";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$tnmt_type = "<font color=cyan>설전</font>";
|
||||||
|
$tp = "intel";
|
||||||
|
$tp2 = "지력";
|
||||||
|
$tp3 = "intel";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$str1 = getTournament($admin['tournament']);
|
$str1 = getTournament($admin['tournament']);
|
||||||
@@ -58,31 +80,44 @@ if($str3){
|
|||||||
<?php if ($con == 1) {
|
<?php if ($con == 1) {
|
||||||
MessageBox("접속제한이 얼마 남지 않았습니다!");
|
MessageBox("접속제한이 얼마 남지 않았습니다!");
|
||||||
} ?>
|
} ?>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 베팅장</title>
|
<title><?= UniqueConst::$serverName ?>: 베팅장</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/betting.js')?>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'betting']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1120 class='tb_layout bg0'>
|
<table align=center width=1120 class='tb_layout bg0'>
|
||||||
<tr><td>베 팅 장<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>베 팅 장<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1120 class='tb_layout bg0'>
|
<table align=center width=1120 class='tb_layout bg0'>
|
||||||
<tr><td colspan=16><input type=button value='갱신' onclick='location.reload()'></td></tr>
|
<tr>
|
||||||
<tr><td colspan=16 align=center><font color=white size=6><?=$tnmt_type?> (<?=$str1.$str2.$str3?>)</font></td></tr>
|
<td colspan=16><input type=button value='갱신' onclick='location.reload()'></td>
|
||||||
<tr><td height=50 colspan=16 align=center id=bg2><font color=limegreen size=6>16강 상황</font><br><font color=orange size=3>(전체 금액 : <?=$globalBetTotal?> / 내 투자 금액 : <?=$myBetTotal?>)</font></td></tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=16 align=center>
|
||||||
|
<font color=white size=6><?= $tnmt_type ?> (<?= $str1 . $str2 . $str3 ?>)</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td height=50 colspan=16 align=center class='bg2'>
|
||||||
|
<font color=limegreen size=6>16강 상황</font><br>
|
||||||
|
<font color=orange size=3>(전체 금액 : <?= $globalBetTotal ?> / 내 투자 금액 : <?= $myBetTotal ?>)</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1120 class='mimic_flex bg0' style='border:solid 1px gray;font-size:10px;'>
|
<table align=center width=1120 class='mimic_flex bg0' style='border:solid 1px gray;font-size:10px;'>
|
||||||
<tr align=center><td height=10 colspan=16></td></tr>
|
<tr align=center>
|
||||||
|
<td height=10 colspan=16></td>
|
||||||
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<?php
|
<?php
|
||||||
$generalList = $db->query('SELECT npc,name,win from tournament where grp>=60 order by grp, grp_no LIMIT 1');
|
$generalList = $db->query('SELECT npc,name,win from tournament where grp>=60 order by grp, grp_no LIMIT 1');
|
||||||
@@ -298,8 +333,7 @@ $gold = [];
|
|||||||
for ($i = 0; $i < 16; $i++) {
|
for ($i = 0; $i < 16; $i++) {
|
||||||
if ($globalBet[$i] == 0) {
|
if ($globalBet[$i] == 0) {
|
||||||
$bet[$i] = "∞";
|
$bet[$i] = "∞";
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$bet[$i] = round($globalBetTotal / $globalBet[$i], 2);
|
$bet[$i] = round($globalBetTotal / $globalBet[$i], 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -307,17 +341,17 @@ for ($i=0; $i < 16; $i++) {
|
|||||||
for ($i = 0; $i < 16; $i++) {
|
for ($i = 0; $i < 16; $i++) {
|
||||||
if (!is_numeric($bet[$i])) {
|
if (!is_numeric($bet[$i])) {
|
||||||
$gold[$i] = 0;
|
$gold[$i] = 0;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$gold[$i] = Util::round($myBet[$i] * $bet[$i]);
|
$gold[$i] = Util::round($myBet[$i] * $bet[$i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1120 class='tb_layout bg0'>
|
<table align=center width=1120 class='tb_layout bg0'>
|
||||||
<tr align=center><td height=10 colspan=16></td></tr>
|
<tr align=center>
|
||||||
|
<td height=10 colspan=16></td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
echo "
|
echo "
|
||||||
<tr align=center>";
|
<tr align=center>";
|
||||||
@@ -328,8 +362,22 @@ for ($i=0; $i < 16; $i++) {
|
|||||||
?>
|
?>
|
||||||
</tr>
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td>
|
<td>×</td>
|
||||||
<td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td>
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
|
<td>×</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<?php
|
<?php
|
||||||
@@ -339,8 +387,22 @@ for ($i=0; $i < 16; $i++) {
|
|||||||
?>
|
?>
|
||||||
</tr>
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td>
|
<td>∥</td>
|
||||||
<td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td><td>∥</td>
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
|
<td>∥</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<?php
|
<?php
|
||||||
@@ -390,33 +452,51 @@ if ($admin['tournament'] == 6) {
|
|||||||
<font color=skyblue size=4>( 베팅후 500원 이하일땐 베팅이 불가능합니다. )</font>
|
<font color=skyblue size=4>( 베팅후 500원 이하일땐 베팅이 불가능합니다. )</font>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr align=center><td height=10 colspan=16></td></tr>
|
<tr align=center>
|
||||||
|
<td height=10 colspan=16></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1120 class='tb_layout bg0'>
|
<table align=center width=1120 class='tb_layout bg0'>
|
||||||
<tr align=center><td height=50 colspan=4 id=bg2><font color=yellow size=6>토너먼트 랭킹</font></td></tr>
|
<tr align=center>
|
||||||
<tr align=center><td colspan=4 id=bg2><font color=skyblue size=3>순위 / 장수명 / 능력치 / 경기수 / 승리 / 무승부 / 패배 / 집계점수 / 우승횟수</font></td></tr>
|
<td height=50 colspan=4 class='bg2'>
|
||||||
|
<font color=yellow size=6>토너먼트 랭킹</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr align=center>
|
||||||
|
<td colspan=4 class='bg2'>
|
||||||
|
<font color=skyblue size=3>순위 / 장수명 / 능력치 / 경기수 / 승리 / 무승부 / 패배 / 집계점수 / 우승횟수</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr align=center>
|
<tr align=center>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
$tournamentType = [
|
$tournamentType = [
|
||||||
'전 력 전' => [
|
'전 력 전' => [
|
||||||
'종합',
|
'종합',
|
||||||
function(General $general){return $general->getVar('leadership')+$general->getVar('strength')+$general->getVar('intel');},
|
function (General $general) {
|
||||||
|
return $general->getVar('leadership') + $general->getVar('strength') + $general->getVar('intel');
|
||||||
|
},
|
||||||
'tt',
|
'tt',
|
||||||
],
|
],
|
||||||
'통 솔 전' => [
|
'통 솔 전' => [
|
||||||
'통솔',
|
'통솔',
|
||||||
function(General $general){return $general->getVar('leadership');},
|
function (General $general) {
|
||||||
|
return $general->getVar('leadership');
|
||||||
|
},
|
||||||
'tl',
|
'tl',
|
||||||
],
|
],
|
||||||
'일 기 토' => [
|
'일 기 토' => [
|
||||||
'무력',
|
'무력',
|
||||||
function(General $general){return $general->getVar('strength');},
|
function (General $general) {
|
||||||
|
return $general->getVar('strength');
|
||||||
|
},
|
||||||
'ts',
|
'ts',
|
||||||
],
|
],
|
||||||
'설 전' => [
|
'설 전' => [
|
||||||
'지력',
|
'지력',
|
||||||
function(General $general){return $general->getVar('intel');},
|
function (General $general) {
|
||||||
|
return $general->getVar('intel');
|
||||||
|
},
|
||||||
'ti',
|
'ti',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
@@ -428,9 +508,23 @@ $type4 = array("total", "leadership", "strength", "intel");
|
|||||||
|
|
||||||
foreach ($tournamentType as $tournamentTypeText => [$statTypeText, $statFunc, $rankColumn]) : ?>
|
foreach ($tournamentType as $tournamentTypeText => [$statTypeText, $statFunc, $rankColumn]) : ?>
|
||||||
<td>
|
<td>
|
||||||
<table align=center width=280 class='tb_layout bg0'>
|
<table align=center width=280 class='tb_layout bg0 f_tnum'>
|
||||||
<tr><td colspan=9 align=center style=color:white;background-color:black;><font size=4><?=$tournamentTypeText?></font></td></tr>
|
<tr>
|
||||||
<tr id=bg1><td align=center>순</td><td align=center>장수</td><td align=center><?=$statTypeText?></td><td align=center>경</td><td align=center>승</td><td align=center>무</td><td align=center>패</td><td align=center>점</td><td align=center>勝</td></tr>
|
<td colspan=9 align=center style=color:white;background-color:black;>
|
||||||
|
<font size=4><?= $tournamentTypeText ?></font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class='bg1'>
|
||||||
|
<td align=center>순</td>
|
||||||
|
<td align=center>장수</td>
|
||||||
|
<td align=center><?= $statTypeText ?></td>
|
||||||
|
<td align=center>경</td>
|
||||||
|
<td align=center>승</td>
|
||||||
|
<td align=center>무</td>
|
||||||
|
<td align=center>패</td>
|
||||||
|
<td align=center>점</td>
|
||||||
|
<td align=center>勝</td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
$prizeColumn = "{$rankColumn}p";
|
$prizeColumn = "{$rankColumn}p";
|
||||||
$gameColumn = "{$rankColumn}g";
|
$gameColumn = "{$rankColumn}g";
|
||||||
@@ -474,7 +568,8 @@ foreach($tournamentType as $tournamentTypeText=>[$statTypeText,$statFunc,$rankCo
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</table></td>
|
</table>
|
||||||
|
</td>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -488,8 +583,13 @@ foreach($tournamentType as $tournamentTypeText=>[$statTypeText,$statFunc,$rankCo
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1120 class='tb_layout bg0'>
|
<table align=center width=1120 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+50
-76
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -10,24 +11,20 @@ $generalObj = General::createGeneralObjFromDB($session->generalID);
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 사령부</title>
|
<title><?= UniqueConst::$serverName ?>: 사령부</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/jquery.redirect.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/moment.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/chiefCenter.js')?>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?= WebUtil::printCSS('css/chiefCenter.css') ?>
|
<?= WebUtil::printCSS('css/chiefCenter.css') ?>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var maxChiefTurn = <?= GameConst::$maxChiefTurn ?>;
|
var maxChiefTurn = <?= GameConst::$maxChiefTurn ?>;
|
||||||
</script>
|
</script>
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'chiefCenter']) ?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
@@ -36,76 +33,53 @@ var maxChiefTurn = <?=GameConst::$maxChiefTurn?>;
|
|||||||
<div class='tb_layout bg0'>사 령 부<button type='button' id='reloadTable'>갱신</button><br>
|
<div class='tb_layout bg0'>사 령 부<button type='button' id='reloadTable'>갱신</button><br>
|
||||||
<?= backButton() ?></div>
|
<?= backButton() ?></div>
|
||||||
<div style='background-color:skyblue;text-align:center;'>수뇌부 일정</div>
|
<div style='background-color:skyblue;text-align:center;'>수뇌부 일정</div>
|
||||||
<div class="chiefSubTable" style='height:<?=22*(GameConst::$maxChiefTurn+1)?>px;'
|
<div class="chiefSubTable" style='height:<?= 22 * (GameConst::$maxChiefTurn + 1) ?>px;'>
|
||||||
><div class='chiefTurnIdxPanel'
|
<div class='chiefTurnIdxPanel'>
|
||||||
><div class='bg1 chiefTurnIdx'>.</div
|
<div class='bg1 chiefTurnIdx'>.</div <?php foreach (Util::range(GameConst::$maxChiefTurn) as $idx) : ?>>
|
||||||
<?php foreach(Util::range(GameConst::$maxChiefTurn) as $idx):?>
|
<div class='bg0 chiefTurnIdx'><?= $idx + 1 ?></div <?php endforeach; ?>>
|
||||||
><div class='bg0 chiefTurnIdx'><?=$idx+1?></div
|
</div <?php foreach ([12, 10, 8, 6] as $chiefIdx) : ?>>
|
||||||
<?php endforeach; ?>
|
<div class='bg2 chiefPlate' style='flex-grow:1;' id='chief_<?= $chiefIdx ?>'>
|
||||||
></div
|
<div class='bg1 chiefNamePlate'><span class='chiefLevelText'>-</span> : <span class='chiefName'> </span></div <?php foreach (Util::range(GameConst::$maxChiefTurn) as $turnIdx) : ?>>
|
||||||
<?php foreach([12, 10, 8, 6] as $chiefIdx): ?>
|
<div class='chiefTurnBox turn<?= $turnIdx ?>'>
|
||||||
><div class='bg2 chiefPlate' style='flex-grow:1;' id='chief_<?=$chiefIdx?>'
|
<div class='chiefTurnTime'> </div>
|
||||||
><div class='bg1 chiefNamePlate'><span class='chiefLevelText'>-</span> : <span class='chiefName'> </span></div
|
<div class='chiefTurnPad'><span class='chiefTurnText'> </span></div>
|
||||||
<?php foreach(Util::range(GameConst::$maxChiefTurn) as $turnIdx): ?>
|
</div <?php endforeach; ?>>
|
||||||
><div class='chiefTurnBox turn<?=$turnIdx?>'
|
</div <?php endforeach; ?>>
|
||||||
><div class='chiefTurnTime'> </div
|
<div class='chiefTurnIdxPanel tail'>
|
||||||
><div class='chiefTurnPad'><span class='chiefTurnText'> </span></div
|
<div class='bg1 chiefTurnIdx'>.</div <?php foreach (Util::range(GameConst::$maxChiefTurn) as $idx) : ?>>
|
||||||
></div
|
<div class='bg0 chiefTurnIdx'><?= $idx + 1 ?></div <?php endforeach; ?>>
|
||||||
<?php endforeach; ?>
|
</div>
|
||||||
></div
|
</div>
|
||||||
<?php endforeach; ?>
|
<div id='controlPlate' style='display:flex;flex-flow:row wrap;justify-content:center;'>
|
||||||
><div class='chiefTurnIdxPanel tail'
|
<div style='width:400px;text-align:right;'><?= chiefTurnTable()
|
||||||
><div class='bg1 chiefTurnIdx'>.</div
|
?></div>
|
||||||
<?php foreach(Util::range(GameConst::$maxChiefTurn) as $idx):?>
|
<div style='width:400px;display: flex;justify-content: center;flex-direction: column;'>
|
||||||
><div class='bg0 chiefTurnIdx'><?=$idx+1?></div
|
<div><input type='button' id='turnPush' style='visibility:hidden;background-color:<?= GameConst::$basecolor2 ?>;color:white;font-size:14px;' value='미루기▼'><input type='button' id='turnPull' style='visibility:hidden;background-color:<?= GameConst::$basecolor2 ?>;color:white;font-size:14px;' value='▲당기기'></div>
|
||||||
<?php endforeach; ?>
|
<div><?= chiefCommandTable($generalObj)
|
||||||
></div
|
?><br><input type='button' id='setCommand' style='visibility:hidden;background-color:<?= GameConst::$basecolor2 ?>;color:white;font-size:14px;' value='실 행'></div>
|
||||||
></div
|
</div>
|
||||||
><div id='controlPlate' style='display:flex;flex-flow:row wrap;justify-content:center;'
|
</div>
|
||||||
><div style='width:400px;text-align:right;'
|
<div class="chiefSubTable" style='height:<?= 22 * (GameConst::$maxChiefTurn + 1) ?>px;'>
|
||||||
><?=chiefTurnTable()
|
<div class='chiefTurnIdxPanel'>
|
||||||
?></div
|
<div class='bg1 chiefTurnIdx'>.</div <?php foreach (Util::range(GameConst::$maxChiefTurn) as $idx) : ?>>
|
||||||
><div style='width:400px;display: flex;justify-content: center;flex-direction: column;'
|
<div class='bg0 chiefTurnIdx'><?= $idx + 1 ?></div <?php endforeach; ?>>
|
||||||
><div
|
</div <?php foreach ([11, 9, 7, 5] as $chiefIdx) : ?>>
|
||||||
><input type='button' id='turnPush' style='visibility:hidden;background-color:<?=GameConst::$basecolor2?>;color:white;font-size:13px;' value='미루기▼'
|
<div class='bg2 chiefPlate' style='flex-grow:1;' id='chief_<?= $chiefIdx ?>'>
|
||||||
><input type='button' id='turnPull' style='visibility:hidden;background-color:<?=GameConst::$basecolor2?>;color:white;font-size:13px;' value='▲당기기'
|
<div class='bg1 chiefNamePlate'><span class='chiefLevelText'>-</span> : <span class='chiefName'> </span></div <?php foreach (Util::range(GameConst::$maxChiefTurn) as $turnIdx) : ?>>
|
||||||
></div
|
<div class='chiefTurnBox turn<?= $turnIdx ?>'>
|
||||||
><div
|
<div class='chiefTurnTime'> </div>
|
||||||
><?=chiefCommandTable($generalObj)
|
<div class='chiefTurnPad'><span class='chiefTurnText'> </span></div>
|
||||||
?><br><input type='button' id='setCommand' style='visibility:hidden;background-color:<?=GameConst::$basecolor2?>;color:white;font-size:13px;' value='실 행'
|
</div <?php endforeach; ?>>
|
||||||
></div
|
</div <?php endforeach; ?>>
|
||||||
></div
|
<div class='chiefTurnIdxPanel tail'>
|
||||||
></div
|
<div class='bg1 chiefTurnIdx'>.</div <?php foreach (Util::range(GameConst::$maxChiefTurn) as $idx) : ?>>
|
||||||
><div class="chiefSubTable" style='height:<?=22*(GameConst::$maxChiefTurn+1)?>px;'
|
<div class='bg0 chiefTurnIdx'><?= $idx + 1 ?></div <?php endforeach; ?>>
|
||||||
><div class='chiefTurnIdxPanel'
|
</div>
|
||||||
><div class='bg1 chiefTurnIdx'>.</div
|
</div>
|
||||||
<?php foreach(Util::range(GameConst::$maxChiefTurn) as $idx):?>
|
<div><?= backButton()
|
||||||
><div class='bg0 chiefTurnIdx'><?=$idx+1?></div
|
|
||||||
<?php endforeach; ?>
|
|
||||||
></div
|
|
||||||
<?php foreach([11, 9, 7, 5] as $chiefIdx): ?>
|
|
||||||
><div class='bg2 chiefPlate' style='flex-grow:1;' id='chief_<?=$chiefIdx?>'
|
|
||||||
><div class='bg1 chiefNamePlate'><span class='chiefLevelText'>-</span> : <span class='chiefName'> </span></div
|
|
||||||
<?php foreach(Util::range(GameConst::$maxChiefTurn) as $turnIdx): ?>
|
|
||||||
><div class='chiefTurnBox turn<?=$turnIdx?>'
|
|
||||||
><div class='chiefTurnTime'> </div
|
|
||||||
><div class='chiefTurnPad'><span class='chiefTurnText'> </span></div
|
|
||||||
></div
|
|
||||||
<?php endforeach; ?>
|
|
||||||
></div
|
|
||||||
<?php endforeach; ?>
|
|
||||||
><div class='chiefTurnIdxPanel tail'
|
|
||||||
><div class='bg1 chiefTurnIdx'>.</div
|
|
||||||
<?php foreach(Util::range(GameConst::$maxChiefTurn) as $idx):?>
|
|
||||||
><div class='bg0 chiefTurnIdx'><?=$idx+1?></div
|
|
||||||
<?php endforeach; ?>
|
|
||||||
></div
|
|
||||||
></div
|
|
||||||
><div
|
|
||||||
><?=backButton()
|
|
||||||
?><?= banner()
|
?><?= banner()
|
||||||
?></div>
|
?></div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
|
||||||
|
|
||||||
|
</html>
|
||||||
+107
-40
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -16,7 +17,11 @@ $db = DB::db();
|
|||||||
increaseRefresh("현재도시", 1);
|
increaseRefresh("현재도시", 1);
|
||||||
|
|
||||||
$me = $db->queryFirstRow('SELECT no,nation,officer_level,city from general where owner=%i', $userID);
|
$me = $db->queryFirstRow('SELECT no,nation,officer_level,city from general where owner=%i', $userID);
|
||||||
$myNation = $db->queryFirstRow('SELECT nation,level,spy FROM nation WHERE nation=%i', $me['nation']);
|
$myNation = $db->queryFirstRow('SELECT nation,level,spy FROM nation WHERE nation=%i', $me['nation']) ?? [
|
||||||
|
'nation' => 0,
|
||||||
|
'level' => 0,
|
||||||
|
'spy' => ''
|
||||||
|
];
|
||||||
|
|
||||||
$templates = new \League\Plates\Engine('templates');
|
$templates = new \League\Plates\Engine('templates');
|
||||||
|
|
||||||
@@ -29,16 +34,11 @@ $templates = new \League\Plates\Engine('templates');
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/select2/select2.full.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/currentCity.js')?>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../e_lib/select2/select2.min.css') ?>
|
<?= WebUtil::printCSS('../e_lib/select2/select2.min.css') ?>
|
||||||
<?= WebUtil::printCSS('../e_lib/select2/select2-bootstrap4.css') ?>
|
<?= WebUtil::printCSS('../e_lib/select2/select2-bootstrap4.css') ?>
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<style>
|
<style>
|
||||||
#general_list tr td {
|
#general_list tr td {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -53,11 +53,14 @@ $templates = new \League\Plates\Engine('templates');
|
|||||||
font-size: x-small;
|
font-size: x-small;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'currentCity']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>도 시 정 보<br><?=backButton()?></td></tr>
|
<tr>
|
||||||
|
<td>도 시 정 보<br><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
@@ -77,7 +80,10 @@ if($me['officer_level'] == 0) {
|
|||||||
$city = $db->queryFirstRow('SELECT city,name,nation from city where city=%i', $me['city']);
|
$city = $db->queryFirstRow('SELECT city,name,nation from city where city=%i', $me['city']);
|
||||||
echo "
|
echo "
|
||||||
<option value={$city['city']}";
|
<option value={$city['city']}";
|
||||||
if($city['city'] == $citylist) { echo " selected"; $valid = 1; }
|
if ($city['city'] == $citylist) {
|
||||||
|
echo " selected";
|
||||||
|
$valid = 1;
|
||||||
|
}
|
||||||
echo ">【" . StringUtil::padString($city['name'], 4, '_') . "】";
|
echo ">【" . StringUtil::padString($city['name'], 4, '_') . "】";
|
||||||
if ($city['nation'] == 0) echo "공백지";
|
if ($city['nation'] == 0) echo "공백지";
|
||||||
elseif ($me['nation'] == $city['nation']) echo "본국";
|
elseif ($me['nation'] == $city['nation']) echo "본국";
|
||||||
@@ -88,7 +94,10 @@ if($me['officer_level'] == 0) {
|
|||||||
foreach ($db->query('SELECT city,name,nation from city where nation=%i', $me['nation']) as $city) {
|
foreach ($db->query('SELECT city,name,nation from city where nation=%i', $me['nation']) as $city) {
|
||||||
echo "
|
echo "
|
||||||
<option value={$city['city']}";
|
<option value={$city['city']}";
|
||||||
if($city['city'] == $citylist) { echo " selected"; $valid = 1; }
|
if ($city['city'] == $citylist) {
|
||||||
|
echo " selected";
|
||||||
|
$valid = 1;
|
||||||
|
}
|
||||||
echo ">【" . StringUtil::padString($city['name'], 4, '_') . "】";
|
echo ">【" . StringUtil::padString($city['name'], 4, '_') . "】";
|
||||||
if ($city['nation'] == 0) echo "공백지";
|
if ($city['nation'] == 0) echo "공백지";
|
||||||
elseif ($me['nation'] == $city['nation']) echo "본국";
|
elseif ($me['nation'] == $city['nation']) echo "본국";
|
||||||
@@ -100,7 +109,10 @@ if($me['officer_level'] == 0) {
|
|||||||
foreach ($db->query('SELECT distinct A.city,B.name,B.nation from general A,city B where A.city=B.city and A.nation=%i and B.nation!=%i', $me['nation'], $me['nation']) as $city) {
|
foreach ($db->query('SELECT distinct A.city,B.name,B.nation from general A,city B where A.city=B.city and A.nation=%i and B.nation!=%i', $me['nation'], $me['nation']) as $city) {
|
||||||
echo "
|
echo "
|
||||||
<option value={$city['city']}";
|
<option value={$city['city']}";
|
||||||
if($city['city'] == $citylist) { echo " selected"; $valid = 1; }
|
if ($city['city'] == $citylist) {
|
||||||
|
echo " selected";
|
||||||
|
$valid = 1;
|
||||||
|
}
|
||||||
echo ">【" . StringUtil::padString($city['name'], 4, '_') . "】";
|
echo ">【" . StringUtil::padString($city['name'], 4, '_') . "】";
|
||||||
if ($city['nation'] == 0) echo "공백지";
|
if ($city['nation'] == 0) echo "공백지";
|
||||||
elseif ($me['nation'] == $city['nation']) echo "본국";
|
elseif ($me['nation'] == $city['nation']) echo "본국";
|
||||||
@@ -116,8 +128,7 @@ if($myNation['level'] > 0) {
|
|||||||
|
|
||||||
if ($rawSpy == '') {
|
if ($rawSpy == '') {
|
||||||
$spyCities = [];
|
$spyCities = [];
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$spyCities = array_keys(Json::decode($rawSpy));
|
$spyCities = array_keys(Json::decode($rawSpy));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,7 +136,10 @@ if($myNation['level'] > 0) {
|
|||||||
if ($spyCities) {
|
if ($spyCities) {
|
||||||
foreach ($db->query('SELECT city,name,nation FROM city WHERE city in %li', $spyCities) as $city) {
|
foreach ($db->query('SELECT city,name,nation FROM city WHERE city in %li', $spyCities) as $city) {
|
||||||
echo "<option value={$city['city']}";
|
echo "<option value={$city['city']}";
|
||||||
if($city['city'] == $citylist) { echo " selected"; $valid = 1; }
|
if ($city['city'] == $citylist) {
|
||||||
|
echo " selected";
|
||||||
|
$valid = 1;
|
||||||
|
}
|
||||||
echo ">【" . StringUtil::padString($city['name'], 4, '_') . "】";
|
echo ">【" . StringUtil::padString($city['name'], 4, '_') . "】";
|
||||||
if ($city['nation'] == 0) echo "공백지";
|
if ($city['nation'] == 0) echo "공백지";
|
||||||
elseif ($me['nation'] == $city['nation']) echo "본국";
|
elseif ($me['nation'] == $city['nation']) echo "본국";
|
||||||
@@ -133,7 +147,6 @@ if($myNation['level'] > 0) {
|
|||||||
echo "</option>";
|
echo "</option>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
@@ -148,8 +161,31 @@ echo "
|
|||||||
unset($city);
|
unset($city);
|
||||||
|
|
||||||
// 첩보된 도시까지만 허용
|
// 첩보된 도시까지만 허용
|
||||||
if($valid == 0 && $userGrade < 5) {
|
|
||||||
|
$showDetailedInfo = false;
|
||||||
|
if ($valid) {
|
||||||
|
$showDetailedInfo = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!key_exists($citylist, CityConst::all())) {
|
||||||
$citylist = $me['city'];
|
$citylist = $me['city'];
|
||||||
|
$showDetailedInfo = true;
|
||||||
|
$valid = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($userGrade >= 5) {
|
||||||
|
$valid = true;
|
||||||
|
$showDetailedInfo = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$valid) {
|
||||||
|
$ownCities = Util::convertArrayToSetLike($db->queryFirstColumn('SELECT city FROM city WHERE nation = %i AND nation != 0', $me['nation']));
|
||||||
|
foreach (array_keys(CityConst::byID($citylist)->path) as $pathID) {
|
||||||
|
if (key_exists($pathID, $ownCities)) {
|
||||||
|
$showDetailedInfo = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -172,11 +208,33 @@ if($city['trade'] === null) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$dbColumns = General::mergeQueryColumn(['npc', 'defence_train', 'no', 'picture', 'imgsvr', 'name', 'injury', 'leadership', 'strength', 'intel', 'officer_level', 'nation', 'crewtype', 'crew', 'train', 'atmos'], 2)[0];
|
$dbColumns = General::mergeQueryColumn(['npc', 'defence_train', 'no', 'picture', 'imgsvr', 'name', 'injury', 'leadership', 'strength', 'intel', 'officer_level', 'nation', 'crewtype', 'crew', 'train', 'atmos'], 2)[0];
|
||||||
|
if ($showDetailedInfo) {
|
||||||
$generals = $db->query(
|
$generals = $db->query(
|
||||||
'SELECT %l from general where city=%i order by name',
|
'SELECT %l from general where city=%i order by turntime',
|
||||||
Util::formatListOfBackticks($dbColumns),
|
Util::formatListOfBackticks($dbColumns),
|
||||||
$city['city']
|
$city['city']
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
$generals = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($valid) {
|
||||||
|
$city['trustText'] = round($city['trust'], 1);
|
||||||
|
$city['popRateText'] = round($city['pop'] / $city['pop_max'] * 100, 2);
|
||||||
|
} else {
|
||||||
|
$city['agri'] = '?';
|
||||||
|
$city['comm'] = '?';
|
||||||
|
$city['pop'] = '?';
|
||||||
|
$city['secu'] = '?';
|
||||||
|
$city['trustText'] = '?';
|
||||||
|
$city['popRateText'] = '?';
|
||||||
|
|
||||||
|
if ($city['nation'] != 0) {
|
||||||
|
$city['def'] = '?';
|
||||||
|
$city['wall'] = '?';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$generalTurnList = [];
|
$generalTurnList = [];
|
||||||
|
|
||||||
@@ -184,8 +242,7 @@ if($generals){
|
|||||||
foreach ($db->queryAllLists(
|
foreach ($db->queryAllLists(
|
||||||
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
|
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
|
||||||
array_column($generals, 'no')
|
array_column($generals, 'no')
|
||||||
) as [$generalID, $turnIdx, $brief]
|
) as [$generalID, $turnIdx, $brief]) {
|
||||||
){
|
|
||||||
if (!key_exists($generalID, $generalTurnList)) {
|
if (!key_exists($generalID, $generalTurnList)) {
|
||||||
$generalTurnList[$generalID] = [];
|
$generalTurnList[$generalID] = [];
|
||||||
}
|
}
|
||||||
@@ -210,8 +267,7 @@ foreach($generals as $general){
|
|||||||
|
|
||||||
if ($general['nation'] != 0 && $general['nation'] == $myNation['nation']) {
|
if ($general['nation'] != 0 && $general['nation'] == $myNation['nation']) {
|
||||||
$ourGeneral = true;
|
$ourGeneral = true;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$ourGeneral = false;
|
$ourGeneral = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,8 +304,7 @@ foreach($generals as $general){
|
|||||||
$crew = $general['crew'];
|
$crew = $general['crew'];
|
||||||
$train = $general['train'];
|
$train = $general['train'];
|
||||||
$atmos = $general['atmos'];
|
$atmos = $general['atmos'];
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$defenceTrain = 0;
|
$defenceTrain = 0;
|
||||||
$defenceTrainText = '';
|
$defenceTrainText = '';
|
||||||
$crewType = 0;
|
$crewType = 0;
|
||||||
@@ -257,6 +312,10 @@ foreach($generals as $general){
|
|||||||
$crew = $general['crew'];
|
$crew = $general['crew'];
|
||||||
$train = -1;
|
$train = -1;
|
||||||
$atmos = -1;
|
$atmos = -1;
|
||||||
|
|
||||||
|
if (!$valid) {
|
||||||
|
$crew = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$nation = $general['nation'];
|
$nation = $general['nation'];
|
||||||
@@ -270,8 +329,7 @@ foreach($generals as $general){
|
|||||||
$turnText[] = "{$turnIdx} : $turn";
|
$turnText[] = "{$turnIdx} : $turn";
|
||||||
}
|
}
|
||||||
$turnText = join('<br>', $turnText);
|
$turnText = join('<br>', $turnText);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$turnText = '';
|
$turnText = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -305,7 +363,9 @@ foreach($generals as $general){
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
$generalsName = array_map(function($gen){return getColoredName($gen['name'], $gen['npc']);}, $generals);
|
$generalsName = array_map(function ($gen) {
|
||||||
|
return getColoredName($gen['name'], $gen['npc']);
|
||||||
|
}, $generals);
|
||||||
|
|
||||||
$enemyCrew = 0;
|
$enemyCrew = 0;
|
||||||
$enemyCnt = 0;
|
$enemyCnt = 0;
|
||||||
@@ -326,12 +386,14 @@ $genTotal = 0;
|
|||||||
|
|
||||||
|
|
||||||
foreach ($generalsFormat as $general) {
|
foreach ($generalsFormat as $general) {
|
||||||
if($general['nation'] == 0){
|
if (!$general['nation'] || !$myNation['nation']) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($general['nation'] != $myNation['nation']) {
|
if ($general['nation'] != $myNation['nation']) {
|
||||||
$enemyCnt += 1;
|
$enemyCnt += 1;
|
||||||
|
if ($general['crew'] >= 0) {
|
||||||
$enemyCrew += $general['crew'];
|
$enemyCrew += $general['crew'];
|
||||||
|
}
|
||||||
if ($general['crew'] > 0) {
|
if ($general['crew'] > 0) {
|
||||||
$enemyArmedCnt += 1;
|
$enemyArmedCnt += 1;
|
||||||
}
|
}
|
||||||
@@ -370,15 +432,14 @@ foreach($generalsFormat as $general){
|
|||||||
$genDef += 1;
|
$genDef += 1;
|
||||||
$chkDef = true;
|
$chkDef = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr>
|
||||||
|
<td><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg2'>
|
<table align=center width=1000 class='tb_layout bg2'>
|
||||||
@@ -402,11 +463,11 @@ foreach($generalsFormat as $general){
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center class=bg1>민심</td>
|
<td align=center class=bg1>민심</td>
|
||||||
<td align=center><?=round($city['trust'], 1)?></td>
|
<td align=center><?= $city['trustText'] ?></td>
|
||||||
<td align=center class=bg1>시세</td>
|
<td align=center class=bg1>시세</td>
|
||||||
<td align=center><?= $city['trade'] ?>%</td>
|
<td align=center><?= $city['trade'] ?>%</td>
|
||||||
<td align=center class=bg1>인구</td>
|
<td align=center class=bg1>인구</td>
|
||||||
<td align=center><?=round($city['pop']/$city['pop_max']*100, 2)?>%</td>
|
<td align=center><?= $city['popRateText'] ?>%</td>
|
||||||
<td align=center class=bg1>태수</td>
|
<td align=center class=bg1>태수</td>
|
||||||
<td align=center><?= $officer[4]['name'] ?></td>
|
<td align=center><?= $officer[4]['name'] ?></td>
|
||||||
<td align=center class=bg1>군사</td>
|
<td align=center class=bg1>군사</td>
|
||||||
@@ -430,11 +491,12 @@ foreach($generalsFormat as $general){
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center class=bg1>장수</td>
|
<td align=center class=bg1>장수</td>
|
||||||
<td colspan=11><?=join(', ', $generalsName)?></td>
|
<td colspan=11><?= $showDetailedInfo ? join(', ', $generalsName) : '<span style="color:gray">알 수 없음</span>' ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
<?php if ($showDetailedInfo) : ?>
|
||||||
<table align=center class='tb_layout bg0'>
|
<table align=center class='tb_layout bg0'>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -450,7 +512,8 @@ foreach($generalsFormat as $general){
|
|||||||
<td width=48 align=center class=bg1>훈련</td>
|
<td width=48 align=center class=bg1>훈련</td>
|
||||||
<td width=48 align=center class=bg1>사기</td>
|
<td width=48 align=center class=bg1>사기</td>
|
||||||
<td width=280 align=center class=bg1>명 령</td>
|
<td width=280 align=center class=bg1>명 령</td>
|
||||||
</tr></thead>
|
</tr>
|
||||||
|
</thead>
|
||||||
<tbody class='bg0' id='general_list'>
|
<tbody class='bg0' id='general_list'>
|
||||||
<?php
|
<?php
|
||||||
foreach ($generalsFormat as $general) {
|
foreach ($generalsFormat as $general) {
|
||||||
@@ -459,11 +522,15 @@ foreach($generalsFormat as $general){
|
|||||||
?>
|
?>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
<?php endif; ?>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
|
||||||
|
|
||||||
|
</html>
|
||||||
+40
-62
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -29,8 +30,7 @@ $permission = checkSecretPermission($me);
|
|||||||
if ($permission < 0) {
|
if ($permission < 0) {
|
||||||
echo '국가에 소속되어있지 않습니다.';
|
echo '국가에 소속되어있지 않습니다.';
|
||||||
die();
|
die();
|
||||||
}
|
} else if ($permission < 1) {
|
||||||
else if ($permission < 1) {
|
|
||||||
echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.";
|
echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.";
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
@@ -43,44 +43,38 @@ if ($me['officer_level'] >= 5) {
|
|||||||
$read = "readonly";
|
$read = "readonly";
|
||||||
}
|
}
|
||||||
|
|
||||||
$nationStor->cacheValues(['notice', 'scout_msg']);
|
$nationStor->cacheValues(['notice', 'scout_msg', 'available_war_setting_cnt']);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 내무부</title>
|
<title><?= UniqueConst::$serverName ?>: 내무부</title>
|
||||||
<script>
|
<?= WebUtil::printStaticValues([
|
||||||
var editable = <?=(($me['officer_level']>=5||$permission==4)?'true':'false')?>;
|
'editable' => ($me['officer_level'] >= 5 || $permission == 4),
|
||||||
var nationMsg = <?=Json::encode($nationStor->notice??'')?>;
|
'nationMsg' => $nationStor->notice ?? '',
|
||||||
var scoutmsg = <?=Json::encode($nationStor->scout_msg??'')?>;
|
'scoutMsg' => $nationStor->scout_msg ?? '',
|
||||||
</script>
|
]) ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/summernote/summernote-bs4.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/summernote/lang/summernote-ko-KR.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/summernote/plugin/image-sammo/summernote-image-flip.js')?>
|
|
||||||
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/dipcenter.js')?>
|
|
||||||
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/summernote/summernote-bs4.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?=WebUtil::printCSS('css/dipcenter.css')?>
|
<?= WebUtil::printDist('vue', 'v_dipcenter', true) ?>
|
||||||
<link href="https://fonts.googleapis.com/css?family=Nanum+Gothic|Nanum+Myeongjo|Nanum+Pen+Script" rel="stylesheet">
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>내 무 부<br><?=backButton()?></td></tr>
|
<tr>
|
||||||
|
<td>내 무 부<br><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 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=130 align=center class=bg1>국 가 명</td>
|
<td width=130 align=center class=bg1>국 가 명</td>
|
||||||
<td width=50 align=center class=bg1>국력</td>
|
<td width=50 align=center class=bg1>국력</td>
|
||||||
@@ -174,40 +168,15 @@ if ($budgetricediff > 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<table width=1000 class='tb_layout bg0' style='margin:auto;'>
|
<div class='tb_layout bg0' style='margin:auto;width: 1000px;' id="editorForm">
|
||||||
<form name=form1 method=post action=c_dipcenter.php>
|
|
||||||
<tr><td colspan=2 height=10></td></tr>
|
|
||||||
<tr><td colspan=2 align=center bgcolor=orange>국 가 방 침 & 임관 권유 메시지</td></tr>
|
|
||||||
<tr><td colspan='2'><div id='noticeForm'>
|
|
||||||
<div class='bg1' style="display: flex; justify-content: space-around">
|
|
||||||
<div style='flex: 1 1 auto;'>
|
|
||||||
국가 방침
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<input type='submit' class='submit' name=btn value='국가방침 수정'><input type='button' class='cancel_edit' value='취소'>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<input type='hidden' class='input_form' name='msg' data-global='nationMsg'>
|
|
||||||
<div class='edit_form viewer'></div>
|
|
||||||
</div></td></tr>
|
|
||||||
<tr><td colspan='2'><div id='scoutMsgForm'>
|
|
||||||
<div class='bg1' style="display: flex; justify-content: space-around">
|
|
||||||
<div style='flex: 1 1 auto;'>
|
|
||||||
임관 권유
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<input type='submit' class='submit' name=btn value='임관 권유문 수정'><input type='button' class='cancel_edit' value='취소'>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='border-bottom:solid gray 0.5px;'>870px x 200px를 넘어서는 내용은 표시되지 않습니다.</div>
|
|
||||||
<input type='hidden' class='input_form' name='scoutmsg' data-global='scoutmsg'>
|
|
||||||
<div style="width:870px;margin-left:auto;">
|
|
||||||
<div class='edit_form viewer'></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div></td></tr>
|
</div>
|
||||||
<tr><td colspan=2 align=center bgcolor=green>예 산 & 정 책</td></tr>
|
<table class="tb_layout bg0" style="margin:auto;">
|
||||||
|
<form name=form1 method=post action=c_dipcenter.php>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td colspan=2 align=center bgcolor=green>예 산 & 정 책</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=2>
|
<td colspan=2>
|
||||||
<table width=998 class='tb_layout bg0'>
|
<table width=998 class='tb_layout bg0'>
|
||||||
@@ -254,8 +223,8 @@ if ($budgetricediff > 0) {
|
|||||||
<tr>
|
<tr>
|
||||||
<td align=right class=bg1>기밀 권한 (1 ~ 99년) </td>
|
<td align=right class=bg1>기밀 권한 (1 ~ 99년) </td>
|
||||||
<td align=center><input type=text <?= $read ?> name=secretlimit style=text-align:right;color:white;background-color:black; size=3 maxlength=3 value=<?= $nation['secretlimit'] ?>>년 <input type=<?= $btn ?> name=btn value=기밀권한></td>
|
<td align=center><input type=text <?= $read ?> name=secretlimit style=text-align:right;color:white;background-color:black; size=3 maxlength=3 value=<?= $nation['secretlimit'] ?>>년 <input type=<?= $btn ?> name=btn value=기밀권한></td>
|
||||||
<td align=right class=bg1>임관&전쟁 변경 가능</td>
|
<td align=right class=bg1>전쟁 허용/금지 변경 가능</td>
|
||||||
<td align=center>무제한</td>
|
<td align=center><?= $nationStor->getValue('available_war_setting_cnt') ?>회(월 +<?= GameConst::$incAvailableWarSettingCnt ?>회, 최대<?= GameConst::$maxAvailableWarSettingCnt ?>회)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=4 align=center>
|
<td colspan=4 align=center>
|
||||||
@@ -279,13 +248,22 @@ if ($nation['war'] == 0) {
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<tr><td colspan=2>기밀 권한이란, 암행부를 열람할 수 있는 일반 장수의 최소 사관 년수를 의미합니다.</td></tr>
|
<tr>
|
||||||
<tr><td colspan=2 height=10></td></tr>
|
<td colspan=2>기밀 권한이란, 암행부를 열람할 수 있는 일반 장수의 최소 사관 년수를 의미합니다.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=2 height=10></td>
|
||||||
|
</tr>
|
||||||
</form>
|
</form>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+40
-32
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -34,8 +35,7 @@ foreach ($db->queryAllLists('SELECT city, `name`, conflict FROM city WHERE confl
|
|||||||
$cityID,
|
$cityID,
|
||||||
$cityName,
|
$cityName,
|
||||||
$rawConflict
|
$rawConflict
|
||||||
])
|
]) {
|
||||||
{
|
|
||||||
$rawConflict = Json::decode($rawConflict);
|
$rawConflict = Json::decode($rawConflict);
|
||||||
if (count($rawConflict) < 2) {
|
if (count($rawConflict) < 2) {
|
||||||
continue;
|
continue;
|
||||||
@@ -85,17 +85,19 @@ $neutralStateCharMap = [
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 중원 정보</title>
|
<title><?= UniqueConst::$serverName ?>: 중원 정보</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?= WebUtil::printJS('d_shared/base_map.js') ?>
|
<?= WebUtil::printJS('d_shared/base_map.js') ?>
|
||||||
<?=WebUtil::printJS('js/map.js')?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printCSS('css/map.css') ?>
|
||||||
|
<?= WebUtil::printCSS('css/history.css') ?>
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'map']) ?>
|
||||||
<script>
|
<script>
|
||||||
window.serverNick = '<?= DB::prefix() ?>';
|
window.serverNick = '<?= DB::prefix() ?>';
|
||||||
window.serverID = '<?= UniqueConst::$serverID ?>';
|
window.serverID = '<?= UniqueConst::$serverID ?>';
|
||||||
@@ -109,21 +111,19 @@ $(function(){
|
|||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/map.css')?>
|
|
||||||
<?=WebUtil::printCSS('css/history.css')?>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>중 원 정 보<br><?=backButton()?></td></tr>
|
<tr>
|
||||||
|
<td>중 원 정 보<br><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td colspan=<?=$nationCnt+1?> align=center bgcolor=blue>외 교 현 황</td></tr>
|
<tr>
|
||||||
|
<td colspan=<?= $nationCnt + 1 ?> align=center bgcolor=blue>외 교 현 황</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center width=130 style=background-color:<?= GameConst::$basecolor2 ?>;> </td>
|
<td align=center width=130 style=background-color:<?= GameConst::$basecolor2 ?>;> </td>
|
||||||
<?php foreach ($nations as $nation) : ?>
|
<?php foreach ($nations as $nation) : ?>
|
||||||
@@ -137,25 +137,28 @@ $(function(){
|
|||||||
<td <?= ($me == $myNationID || $you == $myNationID) ? 'style="background-color:' . GameConst::$basecolor3 . '"' : '' ?>><?php
|
<td <?= ($me == $myNationID || $you == $myNationID) ? 'style="background-color:' . GameConst::$basecolor3 . '"' : '' ?>><?php
|
||||||
if ($me == $you) {
|
if ($me == $you) {
|
||||||
echo $sameNationStateChar;
|
echo $sameNationStateChar;
|
||||||
}
|
} else if ($me == $myNationID || $you == $myNationID || $session->userGrade >= 5) {
|
||||||
else if($me==$myNationID || $you==$myNationID || $session->userGrade >= 5){
|
|
||||||
echo $infomativeStateCharMap[$diplomacyList[$me][$you]] ?? $defaultStateChar;
|
echo $infomativeStateCharMap[$diplomacyList[$me][$you]] ?? $defaultStateChar;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
echo $neutralStateCharMap[$diplomacyList[$me][$you]] ?? $defaultStateChar;
|
echo $neutralStateCharMap[$diplomacyList[$me][$you]] ?? $defaultStateChar;
|
||||||
}
|
}
|
||||||
?></td>
|
?></td>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</tr>
|
</tr>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
<tr><td colspan=<?=$nationCnt+1?> align=center>불가침 : <font color=limegreen>@</font>, 통상 : ㆍ, 선포 : <font color=magenta>▲</font>, 교전 : <font color=red>★</font></td></tr>
|
<tr>
|
||||||
|
<td colspan=<?= $nationCnt + 1 ?> align=center>불가침 : <font color=limegreen>@</font>, 통상 : ㆍ, 선포 : <font color=magenta>▲</font>, 교전 : <font color=red>★</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<?php if ($realConflict) : ?>
|
<?php if ($realConflict) : ?>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<table align='center' width=1000 class='tb_layout bg0'>
|
<table align='center' width=1000 class='tb_layout bg0'>
|
||||||
<tr><td colspan=2 align=center bgcolor=magenta>분 쟁 현 황</td></tr>
|
<tr>
|
||||||
|
<td colspan=2 align=center bgcolor=magenta>분 쟁 현 황</td>
|
||||||
|
</tr>
|
||||||
<?php foreach ($realConflict as list($cityID, $cityName, $conflict)) : ?>
|
<?php foreach ($realConflict as list($cityID, $cityName, $conflict)) : ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center width=48><?= $cityName ?></td>
|
<td align=center width=48><?= $cityName ?></td>
|
||||||
@@ -163,15 +166,11 @@ else{
|
|||||||
<table class='tb_layout bg0' style='width:100%;'>
|
<table class='tb_layout bg0' style='width:100%;'>
|
||||||
<?php foreach ($conflict as $item) : ?>
|
<?php foreach ($conflict as $item) : ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td
|
<td width=130 align=right style='color:<?= newColor($item['color']) ?>;background-color:<?= $item['color'] ?>;'><?= $item['name'] ?> </td>
|
||||||
width=130
|
|
||||||
align=right
|
|
||||||
style='color:<?=newColor($item['color'])?>;background-color:<?=$item['color']?>;'
|
|
||||||
><?=$item['name']?> </td>
|
|
||||||
<td width=48 align=right><?= (float)$item['percent'] ?> % </td>
|
<td width=48 align=right><?= (float)$item['percent'] ?> % </td>
|
||||||
<td width=*><div
|
<td width=*>
|
||||||
style='display:inline-block;width:<?=$item['percent']?>%;background-color:<?=$item['color']?>;'
|
<div style='display:inline-block;width:<?= $item['percent'] ?>%;background-color:<?= $item['color'] ?>;'> </div>
|
||||||
> </div></td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</table>
|
</table>
|
||||||
@@ -179,7 +178,9 @@ else{
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
<tr><td colspan=2 height=5 id=bg1></td></tr>
|
<tr>
|
||||||
|
<td colspan=2 height=5 class='bg1'></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
@@ -187,7 +188,9 @@ else{
|
|||||||
<br>
|
<br>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=5 align=center bgcolor=green><font size=3>중 원 지 도</font></td>
|
<td colspan=5 align=center bgcolor=green>
|
||||||
|
<font size=3>중 원 지 도</font>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=698 height=420>
|
<td width=698 height=420>
|
||||||
@@ -221,8 +224,13 @@ else{
|
|||||||
<br>
|
<br>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+72
-35
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -32,8 +33,7 @@ $permission = checkSecretPermission($me);
|
|||||||
if ($permission < 0) {
|
if ($permission < 0) {
|
||||||
echo '국가에 소속되어있지 않습니다.';
|
echo '국가에 소속되어있지 않습니다.';
|
||||||
die();
|
die();
|
||||||
}
|
} else if ($permission < 1) {
|
||||||
else if ($permission < 1) {
|
|
||||||
echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.";
|
echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.";
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
@@ -48,23 +48,26 @@ $templates = new \League\Plates\Engine('templates');
|
|||||||
<?php if ($con == 1) {
|
<?php if ($con == 1) {
|
||||||
MessageBox("접속제한이 얼마 남지 않았습니다!");
|
MessageBox("접속제한이 얼마 남지 않았습니다!");
|
||||||
} ?>
|
} ?>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 암행부</title>
|
<title><?= UniqueConst::$serverName ?>: 암행부</title>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>암 행 부<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><form name=form1 method=get>정렬순서 :
|
<td>암 행 부<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<form name=form1 method=get>정렬순서 :
|
||||||
<select name=type size=1>
|
<select name=type size=1>
|
||||||
<option <?= $sel[1] ?? '' ?> value=1>자금</option>
|
<option <?= $sel[1] ?? '' ?> value=1>자금</option>
|
||||||
<option <?= $sel[2] ?? '' ?> value=2>군량</option>
|
<option <?= $sel[2] ?? '' ?> value=2>군량</option>
|
||||||
@@ -75,8 +78,10 @@ $templates = new \League\Plates\Engine('templates');
|
|||||||
<option <?= $sel[7] ?? '' ?> value=7>턴</option>
|
<option <?= $sel[7] ?? '' ?> value=7>턴</option>
|
||||||
<option <?= $sel[8] ?? '' ?> value=8>부대</option>
|
<option <?= $sel[8] ?? '' ?> value=8>부대</option>
|
||||||
</select>
|
</select>
|
||||||
<input type=submit value='정렬하기'></form>
|
<input type=submit value='정렬하기'>
|
||||||
</td></tr>
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<?php
|
<?php
|
||||||
$troopName = [];
|
$troopName = [];
|
||||||
@@ -86,14 +91,30 @@ foreach($db->queryAllLists('SELECT troop_leader, name FROM troop WHERE nation=%i
|
|||||||
|
|
||||||
$orderSQL = '';
|
$orderSQL = '';
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 1: $orderSQL = "order by gold desc"; break;
|
case 1:
|
||||||
case 2: $orderSQL = "order by rice desc"; break;
|
$orderSQL = "order by gold desc";
|
||||||
case 3: $orderSQL = "order by city"; break;
|
break;
|
||||||
case 4: $orderSQL = "order by crewtype desc"; break;
|
case 2:
|
||||||
case 5: $orderSQL = "order by crew desc"; break;
|
$orderSQL = "order by rice desc";
|
||||||
case 6: $orderSQL = "order by killturn"; break;
|
break;
|
||||||
case 7: $orderSQL = "order by turntime"; break;
|
case 3:
|
||||||
case 8: $orderSQL = "order by troop desc"; break;
|
$orderSQL = "order by city";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$orderSQL = "order by crewtype desc";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$orderSQL = "order by crew desc";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$orderSQL = "order by killturn";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$orderSQL = "order by turntime";
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
$orderSQL = "order by troop desc";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$generals = $db->query(
|
$generals = $db->query(
|
||||||
@@ -107,8 +128,7 @@ $generalTurnList = [];
|
|||||||
foreach ($db->queryAllLists(
|
foreach ($db->queryAllLists(
|
||||||
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
|
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
|
||||||
array_column($generals, 'no')
|
array_column($generals, 'no')
|
||||||
) as [$generalID, $turnIdx, $brief]
|
) as [$generalID, $turnIdx, $brief]) {
|
||||||
){
|
|
||||||
if (!key_exists($generalID, $generalTurnList)) {
|
if (!key_exists($generalID, $generalTurnList)) {
|
||||||
$generalTurnList[$generalID] = [];
|
$generalTurnList[$generalID] = [];
|
||||||
}
|
}
|
||||||
@@ -213,24 +233,36 @@ foreach($generals as $general){
|
|||||||
<table style='width:1000px;margin:5px auto' class='tb_layout bg0'>
|
<table style='width:1000px;margin:5px auto' class='tb_layout bg0'>
|
||||||
<thead>
|
<thead>
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col style="width:120px;"><col>
|
<col style="width:120px;">
|
||||||
<col style="width:120px;"><col>
|
<col>
|
||||||
<col style="width:120px;"><col>
|
<col style="width:120px;">
|
||||||
<col style="width:120px;"><col>
|
<col>
|
||||||
|
<col style="width:120px;">
|
||||||
|
<col>
|
||||||
|
<col style="width:120px;">
|
||||||
|
<col>
|
||||||
</colgroup>
|
</colgroup>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td class='bg1'>전체 금</td><td><?=number_format($totalGold)?></td>
|
<td class='bg1'>전체 금</td>
|
||||||
<td class='bg1'>전체 쌀</td><td><?=number_format($totalRice)?></td>
|
<td><?= number_format($totalGold) ?></td>
|
||||||
<td class='bg1'>평균 금</td><td><?=number_format($totalGold/$genCntEff, 2)?></td>
|
<td class='bg1'>전체 쌀</td>
|
||||||
<td class='bg1'>평균 쌀</td><td><?=number_format($totalRice/$genCntEff, 2)?></td>
|
<td><?= number_format($totalRice) ?></td>
|
||||||
|
<td class='bg1'>평균 금</td>
|
||||||
|
<td><?= number_format($totalGold / $genCntEff, 2) ?></td>
|
||||||
|
<td class='bg1'>평균 쌀</td>
|
||||||
|
<td><?= number_format($totalRice / $genCntEff, 2) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class='bg1'>전체 병력/장수</td><td><?=number_format($crewTotal)?>/<?=number_format($genCntEff)?></td>
|
<td class='bg1'>전체 병력/장수</td>
|
||||||
<td class='bg1'>훈사 90 병력/장수</td><td><?=number_format($crew90)?>/<?=number_format($gen90)?></td>
|
<td><?= number_format($crewTotal) ?>/<?= number_format($genCntEff) ?></td>
|
||||||
<td class='bg1'>훈사 80 병력/장수</td><td><?=number_format($crew80)?>/<?=number_format($gen80)?></td>
|
<td class='bg1'>훈사 90 병력/장수</td>
|
||||||
<td class='bg1'>훈사 60 병력/장수</td><td><?=number_format($crew60)?>/<?=number_format($gen60)?></td>
|
<td><?= number_format($crew90) ?>/<?= number_format($gen90) ?></td>
|
||||||
|
<td class='bg1'>훈사 80 병력/장수</td>
|
||||||
|
<td><?= number_format($crew80) ?>/<?= number_format($gen80) ?></td>
|
||||||
|
<td class='bg1'>훈사 60 병력/장수</td>
|
||||||
|
<td><?= number_format($crew60) ?>/<?= number_format($gen60) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -238,8 +270,13 @@ foreach($generals as $general){
|
|||||||
<?= $templates->render('generalList', ['generals' => $generals]) ?>
|
<?= $templates->render('generalList', ['generals' => $generals]) ?>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+89
-49
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -33,20 +34,16 @@ $nation = $db->queryFirstRow('SELECT nation,name,level,color,chief_set from nati
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 인사부</title>
|
<title><?= UniqueConst::$serverName ?>: 인사부</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/select2/select2.full.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/bossInfo.js')?>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../e_lib/select2/select2.min.css') ?>
|
<?= WebUtil::printCSS('../e_lib/select2/select2.min.css') ?>
|
||||||
<?= WebUtil::printCSS('../e_lib/select2/select2-bootstrap4.css') ?>
|
<?= WebUtil::printCSS('../e_lib/select2/select2-bootstrap4.css') ?>
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var chiefStatMin = <?= GameConst::$chiefStatMin ?>;
|
var chiefStatMin = <?= GameConst::$chiefStatMin ?>;
|
||||||
var myLevel = <?= $meLevel ?>;
|
var myLevel = <?= $meLevel ?>;
|
||||||
</script>
|
</script>
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'bossInfo']) ?>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
@@ -93,26 +90,33 @@ var candidateAuditors = <?=Json::encode(array_map(function($value){
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>인 사 부<br><?=backButton()?></td></tr>
|
<tr>
|
||||||
|
<td>인 사 부<br><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
$lv = getNationChiefLevel($nation['level']);
|
$lv = getNationChiefLevel($nation['level']);
|
||||||
if($meLevel >= 5) { $btn = "button"; }
|
if ($meLevel >= 5) {
|
||||||
else { $btn = "hidden"; }
|
$btn = "button";
|
||||||
|
} else {
|
||||||
|
$btn = "hidden";
|
||||||
|
}
|
||||||
|
|
||||||
$level = Util::convertArrayToDict(
|
$level = Util::convertArrayToDict(
|
||||||
$db->query(
|
$db->query(
|
||||||
'SELECT name,officer_level,city,picture,imgsvr,belong from general where nation=%i and officer_level>=%i order by officer_level desc',
|
'SELECT name,officer_level,city,picture,imgsvr,belong from general where nation=%i and officer_level>=%i order by officer_level desc',
|
||||||
$nationID, $lv
|
$nationID,
|
||||||
|
$lv
|
||||||
),
|
),
|
||||||
'officer_level'
|
'officer_level'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
$tigers = $db->query('SELECT value, name
|
$tigers = $db->query(
|
||||||
|
'SELECT value, name
|
||||||
FROM rank_data LEFT JOIN general ON rank_data.general_id = general.no
|
FROM rank_data LEFT JOIN general ON rank_data.general_id = general.no
|
||||||
WHERE rank_data.nation_id = %i AND rank_data.type = "killnum" AND value > 0 ORDER BY value DESC LIMIT 5',
|
WHERE rank_data.nation_id = %i AND rank_data.type = "killnum" AND value > 0 ORDER BY value DESC LIMIT 5',
|
||||||
$nationID
|
$nationID
|
||||||
@@ -122,7 +126,8 @@ $tigerstr = join(', ', array_map(function($arr){
|
|||||||
return "{$arr['name']}【{$number}】";
|
return "{$arr['name']}【{$number}】";
|
||||||
}, $tigers));
|
}, $tigers));
|
||||||
|
|
||||||
$eagles = $db->query('SELECT value, name
|
$eagles = $db->query(
|
||||||
|
'SELECT value, name
|
||||||
FROM rank_data LEFT JOIN general ON rank_data.general_id = general.no
|
FROM rank_data LEFT JOIN general ON rank_data.general_id = general.no
|
||||||
WHERE rank_data.nation_id = %i AND rank_data.type = "firenum" AND value > 0 ORDER BY value DESC LIMIT 7',
|
WHERE rank_data.nation_id = %i AND rank_data.type = "firenum" AND value > 0 ORDER BY value DESC LIMIT 7',
|
||||||
$nationID
|
$nationID
|
||||||
@@ -141,36 +146,49 @@ $eaglestr = join(', ', array_map(function($arr){
|
|||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
for ($i = 12; $i >= $lv; $i -= 2) {
|
for ($i = 12; $i >= $lv; $i -= 2) {
|
||||||
$i1 = $i; $i2 = $i - 1;
|
$i1 = $i;
|
||||||
|
$i2 = $i - 1;
|
||||||
$imageTemp1 = GetImageURL($level[$i1]['imgsvr'] ?? 0);
|
$imageTemp1 = GetImageURL($level[$i1]['imgsvr'] ?? 0);
|
||||||
$imageTemp2 = GetImageURL($level[$i2]['imgsvr'] ?? 0);
|
$imageTemp2 = GetImageURL($level[$i2]['imgsvr'] ?? 0);
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=98 align=center id=bg1><font size=4><?=getOfficerLevelText($i1, $nation['level'])?></font></td>
|
<td width=98 align=center class='bg1'>
|
||||||
|
<font size=4><?= getOfficerLevelText($i1, $nation['level']) ?></font>
|
||||||
|
</td>
|
||||||
<td width=64 class='generalIcon' height=64 style='background:no-repeat center url("<?= $imageTemp1 ?>/<?= $level[$i1]['picture'] ?? 'default.jpg' ?>");background-size:64px;'></td>
|
<td width=64 class='generalIcon' height=64 style='background:no-repeat center url("<?= $imageTemp1 ?>/<?= $level[$i1]['picture'] ?? 'default.jpg' ?>");background-size:64px;'></td>
|
||||||
<td width=332><font size=4><?=$level[$i1]['name']??'-'?>(<?=$level[$i1]['belong']??'-'?>년)</font></td>
|
<td width=332>
|
||||||
<td width=98 align=center id=bg1><font size=4><?=getOfficerLevelText($i2, $nation['level'])?></font></td>
|
<font size=4><?= $level[$i1]['name'] ?? '-' ?>(<?= $level[$i1]['belong'] ?? '-' ?>년)</font>
|
||||||
|
</td>
|
||||||
|
<td width=98 align=center class='bg1'>
|
||||||
|
<font size=4><?= getOfficerLevelText($i2, $nation['level']) ?></font>
|
||||||
|
</td>
|
||||||
<td width=64 class='generalIcon' height=64 style='background:no-repeat center url("<?= $imageTemp2 ?>/<?= $level[$i2]['picture'] ?? 'default.jpg' ?>");background-size:64px;'></td>
|
<td width=64 class='generalIcon' height=64 style='background:no-repeat center url("<?= $imageTemp2 ?>/<?= $level[$i2]['picture'] ?? 'default.jpg' ?>");background-size:64px;'></td>
|
||||||
<td width=332><font size=4><?=$level[$i2]['name']??'-'?>(<?=$level[$i2]['belong']??'-'?>년)</font></td>
|
<td width=332>
|
||||||
|
<font size=4><?= $level[$i2]['name'] ?? '-' ?>(<?= $level[$i2]['belong'] ?? '-' ?>년)</font>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=98 align=center id=bg1>오호장군【승전】</td>
|
<td width=98 align=center class='bg1'>오호장군【승전】</td>
|
||||||
<td colspan=5><?= $tigerstr ?></td>
|
<td colspan=5><?= $tigerstr ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=98 align=center id=bg1>건안칠자【계략】</td>
|
<td width=98 align=center class='bg1'>건안칠자【계략】</td>
|
||||||
<td colspan=5><?= $eaglestr ?></td>
|
<td colspan=5><?= $eaglestr ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td colspan=6 height=5></td></tr>
|
|
||||||
<tr><td colspan=2 align=center bgcolor=red>추 방</td></tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td width=498 align=right id=bg1>대상 장수</td>
|
<td colspan=6 height=5></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=2 align=center bgcolor=red>추 방</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width=498 align=right class='bg1'>대상 장수</td>
|
||||||
<td width=498>
|
<td width=498>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
@@ -178,8 +196,7 @@ if($meLevel >= 5){
|
|||||||
$candidateStrength = $db->query('SELECT no,name,officer_level,city,npc from general where nation=%i and officer_level!=12 and strength>=%i order by npc,binary(name)', $nationID, GameConst::$chiefStatMin);
|
$candidateStrength = $db->query('SELECT no,name,officer_level,city,npc from general where nation=%i and officer_level!=12 and strength>=%i order by npc,binary(name)', $nationID, GameConst::$chiefStatMin);
|
||||||
$candidateIntel = $db->query('SELECT no,name,officer_level,city,npc from general where nation=%i and officer_level!=12 and intel>=%i order by npc,binary(name)', $nationID, GameConst::$chiefStatMin);
|
$candidateIntel = $db->query('SELECT no,name,officer_level,city,npc from general where nation=%i and officer_level!=12 and intel>=%i order by npc,binary(name)', $nationID, GameConst::$chiefStatMin);
|
||||||
$candidateAny = $db->query('SELECT no,name,officer_level,city,npc,leadership,strength,intel,killturn from general where nation=%i and officer_level!=12 order by npc,binary(name)', $nationID); //추방 때문에 조금 더 김
|
$candidateAny = $db->query('SELECT no,name,officer_level,city,npc,leadership,strength,intel,killturn from general where nation=%i and officer_level!=12 order by npc,binary(name)', $nationID); //추방 때문에 조금 더 김
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$candidateStrength = [];
|
$candidateStrength = [];
|
||||||
$candidateIntel = [];
|
$candidateIntel = [];
|
||||||
$candidateAny = [];
|
$candidateAny = [];
|
||||||
@@ -212,9 +229,9 @@ echo "
|
|||||||
<tr><td colspan=4 height=5></td></tr>
|
<tr><td colspan=4 height=5></td></tr>
|
||||||
<tr><td colspan=4 align=center bgcolor=blue>수 뇌 부 임 명</td></tr>
|
<tr><td colspan=4 align=center bgcolor=blue>수 뇌 부 임 명</td></tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=98 align=right id=bg1>".getOfficerLevelText(12, $nation['level'])."</td>
|
<td width=98 align=right class='bg1'>" . getOfficerLevelText(12, $nation['level']) . "</td>
|
||||||
<td width=398>{$level[12]['name']} 【" . CityConst::byID($level[12]['city'])->name . "】</td>
|
<td width=398>{$level[12]['name']} 【" . CityConst::byID($level[12]['city'])->name . "】</td>
|
||||||
<td width=98 align=right id=bg1>{$officerLevelText}</td>
|
<td width=98 align=right class='bg1'>{$officerLevelText}</td>
|
||||||
<td width=398>
|
<td width=398>
|
||||||
";
|
";
|
||||||
|
|
||||||
@@ -240,7 +257,6 @@ if($meLevel >= 5 && !isOfficerSet($nation['chief_set'], 11)) {
|
|||||||
if (key_exists(11, $level)) {
|
if (key_exists(11, $level)) {
|
||||||
echo "{$level[11]['name']} 【" . CityConst::byID($level[11]['city'])->name . "】";
|
echo "{$level[11]['name']} 【" . CityConst::byID($level[11]['city'])->name . "】";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
</td>
|
</td>
|
||||||
@@ -248,10 +264,12 @@ echo "
|
|||||||
";
|
";
|
||||||
|
|
||||||
for ($i = 10; $i >= $lv; $i--) {
|
for ($i = 10; $i >= $lv; $i--) {
|
||||||
if($i % 2 == 0) { echo "<tr>"; }
|
if ($i % 2 == 0) {
|
||||||
|
echo "<tr>";
|
||||||
|
}
|
||||||
$officerLevelText = getOfficerLevelText($i, $nation['level']);
|
$officerLevelText = getOfficerLevelText($i, $nation['level']);
|
||||||
echo "
|
echo "
|
||||||
<td width=98 align=right id=bg1>{$officerLevelText}</td>
|
<td width=98 align=right class='bg1'>{$officerLevelText}</td>
|
||||||
<td width=398>
|
<td width=398>
|
||||||
";
|
";
|
||||||
|
|
||||||
@@ -281,7 +299,9 @@ for($i=10; $i >= $lv; $i--) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo "</td>";
|
echo "</td>";
|
||||||
if($i % 2 == 1) { echo "</tr>"; }
|
if ($i % 2 == 1) {
|
||||||
|
echo "</tr>";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
<tr><td colspan=4>※ <font color=red>빨간색</font>은 현재 임명중인 장수, <font color=orange>노란색</font>은 다른 관직에 임명된 장수, 하얀색은 일반 장수를 뜻합니다.</td></tr>
|
<tr><td colspan=4>※ <font color=red>빨간색</font>은 현재 임명중인 장수, <font color=orange>노란색</font>은 다른 관직에 임명된 장수, 하얀색은 일반 장수를 뜻합니다.</td></tr>
|
||||||
@@ -292,16 +312,20 @@ echo "
|
|||||||
if ($meLevel == 12) :
|
if ($meLevel == 12) :
|
||||||
?>
|
?>
|
||||||
<table align='center' width='1000' class='tb_layout bg0'>
|
<table align='center' width='1000' class='tb_layout bg0'>
|
||||||
<tr><td colspan='4' height='5'></td></tr>
|
|
||||||
<tr><td colspan='4' align='center' bgcolor='purple'>외 교 권 자 임 명</td></tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td width=98 align=right id=bg1>외교권자</td>
|
<td colspan='4' height='5'></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan='4' align='center' bgcolor='purple'>외 교 권 자 임 명</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width=98 align=right class='bg1'>외교권자</td>
|
||||||
<td width=398>
|
<td width=398>
|
||||||
<select id="selectAmbassador" multiple="multiple">
|
<select id="selectAmbassador" multiple="multiple">
|
||||||
</select>
|
</select>
|
||||||
<button id='changeAmbassador' type='button'>임명</button>
|
<button id='changeAmbassador' type='button'>임명</button>
|
||||||
</td>
|
</td>
|
||||||
<td width=98 align=right id=bg1>조언자</td>
|
<td width=98 align=right class='bg1'>조언자</td>
|
||||||
<td width=398>
|
<td width=398>
|
||||||
<select id="selectAuditor" multiple="multiple">
|
<select id="selectAuditor" multiple="multiple">
|
||||||
</select>
|
</select>
|
||||||
@@ -313,14 +337,16 @@ if($meLevel == 12):
|
|||||||
endif;
|
endif;
|
||||||
?>
|
?>
|
||||||
<table align=center width=1000 id='officer_list' class='tb_layout bg0'>
|
<table align=center width=1000 id='officer_list' class='tb_layout bg0'>
|
||||||
<tr><td colspan=5 height=5></td></tr>
|
<tr>
|
||||||
|
<td colspan=5 height=5></td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
if ($meLevel >= 5) {
|
if ($meLevel >= 5) {
|
||||||
$officerLevelText = getOfficerLevelText(4, $nation['level']);
|
$officerLevelText = getOfficerLevelText(4, $nation['level']);
|
||||||
echo "
|
echo "
|
||||||
<tr><td colspan=5 align=center bgcolor=orange>도 시 관 직 임 명</td></tr>
|
<tr><td colspan=5 align=center bgcolor=orange>도 시 관 직 임 명</td></tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=3 align=right id=bg2>{$officerLevelText} 임명</td>
|
<td colspan=3 align=right class='bg2'>{$officerLevelText} 임명</td>
|
||||||
<td colspan=2>
|
<td colspan=2>
|
||||||
<select id='citylist_4' size=1 style=color:white;background-color:black;>
|
<select id='citylist_4' size=1 style=color:white;background-color:black;>
|
||||||
";
|
";
|
||||||
@@ -367,7 +393,7 @@ if($meLevel >= 5) {
|
|||||||
</tr>";
|
</tr>";
|
||||||
$officerLevelText = getOfficerLevelText(3, $nation['level']);
|
$officerLevelText = getOfficerLevelText(3, $nation['level']);
|
||||||
echo "<tr>
|
echo "<tr>
|
||||||
<td colspan=3 align=right id=bg2>{$officerLevelText} 임명</td>
|
<td colspan=3 align=right class='bg2'>{$officerLevelText} 임명</td>
|
||||||
<td colspan=2>
|
<td colspan=2>
|
||||||
<select id='citylist_3' size=1 style=color:white;background-color:black;>
|
<select id='citylist_3' size=1 style=color:white;background-color:black;>
|
||||||
";
|
";
|
||||||
@@ -413,7 +439,7 @@ if($meLevel >= 5) {
|
|||||||
</tr>";
|
</tr>";
|
||||||
$officerLevelText = getOfficerLevelText(2, $nation['level']);
|
$officerLevelText = getOfficerLevelText(2, $nation['level']);
|
||||||
echo "<tr>
|
echo "<tr>
|
||||||
<td colspan=3 align=right id=bg2>{$officerLevelText} 임명</td>
|
<td colspan=3 align=right class='bg2'>{$officerLevelText} 임명</td>
|
||||||
<td colspan=2>
|
<td colspan=2>
|
||||||
<select id='citylist_2' size=1 style=color:white;background-color:black;>
|
<select id='citylist_2' size=1 style=color:white;background-color:black;>
|
||||||
";
|
";
|
||||||
@@ -462,10 +488,10 @@ if($meLevel >= 5) {
|
|||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
<tr>
|
<tr>
|
||||||
<td width=158 align=center id=bg1 colspan=2><font size=4>도 시</font></td>
|
<td width=158 align=center class='bg1' colspan=2><font size=4>도 시</font></td>
|
||||||
<td width=278 align=center id=bg1><font size=4>태 수 (사관) 【현재도시】</font></td>
|
<td width=278 align=center class='bg1'><font size=4>태 수 (사관) 【현재도시】</font></td>
|
||||||
<td width=278 align=center id=bg1><font size=4>군 사 (사관) 【현재도시】</font></td>
|
<td width=278 align=center class='bg1'><font size=4>군 사 (사관) 【현재도시】</font></td>
|
||||||
<td width=278 align=center id=bg1><font size=4>종 사 (사관) 【현재도시】</font></td>
|
<td width=278 align=center class='bg1'><font size=4>종 사 (사관) 【현재도시】</font></td>
|
||||||
</tr>
|
</tr>
|
||||||
";
|
";
|
||||||
|
|
||||||
@@ -495,9 +521,16 @@ foreach($db->query('SELECT city,name,level,region,officer_set from city where na
|
|||||||
$cityOfficerList = $officerList[$cityID] ?? [];
|
$cityOfficerList = $officerList[$cityID] ?? [];
|
||||||
?>
|
?>
|
||||||
<?php if ($region != $city['region']) : ?>
|
<?php if ($region != $city['region']) : ?>
|
||||||
<tr><td colspan=5 height=3 id=bg1></td></tr>
|
<tr>
|
||||||
<tr><td colspan=5 id=bg1><font size=4 color=skyblue> 【 <?=CityConst::$regionMap[$city['region']]?> 】 </font></td></tr>
|
<td colspan=5 height=3 class='bg1'></td>
|
||||||
<?php endif; $region = $city['region']; ?>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=5 class='bg1'>
|
||||||
|
<font size=4 color=skyblue> 【 <?= CityConst::$regionMap[$city['region']] ?> 】 </font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endif;
|
||||||
|
$region = $city['region']; ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=78 align=center style='color:<?= $textColor ?>;background-color:<?= $nationColor ?>;font-size:1.2em;'>【<?= $citylevel[$city['level']] ?>】</td>
|
<td width=78 align=center style='color:<?= $textColor ?>;background-color:<?= $nationColor ?>;font-size:1.2em;'>【<?= $citylevel[$city['level']] ?>】</td>
|
||||||
<td width=78 align=right style='color:<?= $textColor ?>;background-color:<?= $nationColor ?>;font-size:1.2em;'><?= $city['name'] ?> </td>
|
<td width=78 align=right style='color:<?= $textColor ?>;background-color:<?= $nationColor ?>;font-size:1.2em;'><?= $city['name'] ?> </td>
|
||||||
@@ -516,12 +549,19 @@ $officer = $cityOfficerList[$officerLevel];
|
|||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<tr><td colspan=5>※ <font color=orange>노란색</font>은 변경 불가능, 하얀색은 변경 가능 관직입니다.</td></tr>
|
<tr>
|
||||||
|
<td colspan=5>※ <font color=orange>노란색</font>은 변경 불가능, 하얀색은 변경 가능 관직입니다.</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+89
-43
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -35,22 +36,20 @@ $sel = [$type => "selected"];
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 세력도시</title>
|
<title><?= UniqueConst::$serverName ?>: 세력도시</title>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('../e_lib/jquery-ui.min.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printDist('ts', ['common', 'extExpandCity']) ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-ui.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/ext.expand_city.js')?>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>세 력 도 시<br><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><form name=form1 method=post>정렬순서 :
|
<td>세 력 도 시<br><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<form name=form1 method=post>정렬순서 :
|
||||||
<select name=type size=1>
|
<select name=type size=1>
|
||||||
<option <?= $sel[1] ?? '' ?> value=1>기본</option>
|
<option <?= $sel[1] ?? '' ?> value=1>기본</option>
|
||||||
<option <?= $sel[2] ?? '' ?> value=2>인구</option>
|
<option <?= $sel[2] ?? '' ?> value=2>인구</option>
|
||||||
@@ -65,8 +64,10 @@ $sel = [$type => "selected"];
|
|||||||
<option <?= $sel[11] ?? '' ?> value=11>지역</option>
|
<option <?= $sel[11] ?? '' ?> value=11>지역</option>
|
||||||
<option <?= $sel[12] ?? '' ?> value=12>규모</option>
|
<option <?= $sel[12] ?? '' ?> value=12>규모</option>
|
||||||
</select>
|
</select>
|
||||||
<input type=submit value='정렬하기'></form>
|
<input type=submit value='정렬하기'>
|
||||||
</td></tr>
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
@@ -86,30 +87,71 @@ $cityList = $db->query('SELECT *,pop/pop_max as poprate from city where nation=%
|
|||||||
|
|
||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 1: break;
|
case 1:
|
||||||
case 2: usort($cityList, function($lhs, $rhs){return $rhs['pop'] <=> $lhs['pop'];}); break;
|
break;
|
||||||
case 3: usort($cityList, function($lhs, $rhs){return $rhs['poprate'] <=> $lhs['poprate'];}); break;
|
case 2:
|
||||||
case 4: usort($cityList, function($lhs, $rhs){return $rhs['trust'] <=> $lhs['trust'];}); break;
|
usort($cityList, function ($lhs, $rhs) {
|
||||||
case 5: usort($cityList, function($lhs, $rhs){return $rhs['agri'] <=> $lhs['agri'];}); break;
|
return $rhs['pop'] <=> $lhs['pop'];
|
||||||
case 6: usort($cityList, function($lhs, $rhs){return $rhs['comm'] <=> $lhs['comm'];}); break;
|
});
|
||||||
case 7: usort($cityList, function($lhs, $rhs){return $rhs['secu'] <=> $lhs['secu'];}); break;
|
break;
|
||||||
case 8: usort($cityList, function($lhs, $rhs){return $rhs['def'] <=> $lhs['def'];}); break;
|
case 3:
|
||||||
case 9: usort($cityList, function($lhs, $rhs){return $rhs['wall'] <=> $lhs['wall'];}); break;
|
usort($cityList, function ($lhs, $rhs) {
|
||||||
case 10: usort($cityList, function($lhs, $rhs){return $rhs['trade'] <=> $lhs['trade'];}); break;
|
return $rhs['poprate'] <=> $lhs['poprate'];
|
||||||
case 11: usort($cityList, function($lhs, $rhs){
|
});
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
usort($cityList, function ($lhs, $rhs) {
|
||||||
|
return $rhs['trust'] <=> $lhs['trust'];
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
usort($cityList, function ($lhs, $rhs) {
|
||||||
|
return $rhs['agri'] <=> $lhs['agri'];
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
usort($cityList, function ($lhs, $rhs) {
|
||||||
|
return $rhs['comm'] <=> $lhs['comm'];
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
usort($cityList, function ($lhs, $rhs) {
|
||||||
|
return $rhs['secu'] <=> $lhs['secu'];
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
usort($cityList, function ($lhs, $rhs) {
|
||||||
|
return $rhs['def'] <=> $lhs['def'];
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
usort($cityList, function ($lhs, $rhs) {
|
||||||
|
return $rhs['wall'] <=> $lhs['wall'];
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
usort($cityList, function ($lhs, $rhs) {
|
||||||
|
return $rhs['trade'] <=> $lhs['trade'];
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
usort($cityList, function ($lhs, $rhs) {
|
||||||
$cmpTrust = $lhs['region'] <=> $rhs['region'];
|
$cmpTrust = $lhs['region'] <=> $rhs['region'];
|
||||||
if ($cmpTrust != 0) {
|
if ($cmpTrust != 0) {
|
||||||
return $cmpTrust;
|
return $cmpTrust;
|
||||||
}
|
}
|
||||||
return $rhs['level'] <=> $lhs['level'];
|
return $rhs['level'] <=> $lhs['level'];
|
||||||
}); break;
|
});
|
||||||
case 12: usort($cityList, function($lhs, $rhs){
|
break;
|
||||||
|
case 12:
|
||||||
|
usort($cityList, function ($lhs, $rhs) {
|
||||||
$cmpTrust = $rhs['level'] <=> $lhs['level'];
|
$cmpTrust = $rhs['level'] <=> $lhs['level'];
|
||||||
if ($cmpTrust != 0) {
|
if ($cmpTrust != 0) {
|
||||||
return $cmpTrust;
|
return $cmpTrust;
|
||||||
}
|
}
|
||||||
return $lhs['region'] <=> $rhs['region'];
|
return $lhs['region'] <=> $rhs['region'];
|
||||||
}); break;
|
});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$region = 0;
|
$region = 0;
|
||||||
@@ -151,41 +193,41 @@ foreach($cityList as $city){
|
|||||||
<td colspan=12 style=color:" . newColor($nation['color']) . "; bgcolor={$nation['color']}><font size=2>【 " . CityConst::$regionMap[$city['region']] . " | " . CityConst::$levelMap[$city['level']] . " 】 {$city['name']}</font></td>
|
<td colspan=12 style=color:" . newColor($nation['color']) . "; bgcolor={$nation['color']}><font size=2>【 " . CityConst::$regionMap[$city['region']] . " | " . CityConst::$levelMap[$city['level']] . " 】 {$city['name']}</font></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center width=46 id=bg1>주민</td>
|
<td align=center width=46 class='bg1'>주민</td>
|
||||||
<td align=center width=140>{$city['pop']}/{$city['pop_max']}</td>
|
<td align=center width=140>{$city['pop']}/{$city['pop_max']}</td>
|
||||||
<td align=center width=46 id=bg1>농업</td>
|
<td align=center width=46 class='bg1'>농업</td>
|
||||||
<td align=center width=140>{$city['agri']}/{$city['agri_max']}</td>
|
<td align=center width=140>{$city['agri']}/{$city['agri_max']}</td>
|
||||||
<td align=center width=46 id=bg1>상업</td>
|
<td align=center width=46 class='bg1'>상업</td>
|
||||||
<td align=center width=140>{$city['comm']}/{$city['comm_max']}</td>
|
<td align=center width=140>{$city['comm']}/{$city['comm_max']}</td>
|
||||||
<td align=center width=46 id=bg1>치안</td>
|
<td align=center width=46 class='bg1'>치안</td>
|
||||||
<td align=center width=140>{$city['secu']}/{$city['secu_max']}</td>
|
<td align=center width=140>{$city['secu']}/{$city['secu_max']}</td>
|
||||||
<td align=center width=46 id=bg1>수비</td>
|
<td align=center width=46 class='bg1'>수비</td>
|
||||||
<td align=center width=140>{$city['def']}/{$city['def_max']}</td>
|
<td align=center width=140>{$city['def']}/{$city['def_max']}</td>
|
||||||
<td align=center width=46 id=bg1>성벽</td>
|
<td align=center width=46 class='bg1'>성벽</td>
|
||||||
<td align=center width=140>{$city['wall']}/{$city['wall_max']}</td>
|
<td align=center width=140>{$city['wall']}/{$city['wall_max']}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>민심</td>
|
<td align=center class='bg1'>민심</td>
|
||||||
<td align=center>" . round($city['trust'], 1) . "</td>
|
<td align=center>" . round($city['trust'], 1) . "</td>
|
||||||
<td align=center id=bg1>시세</td>
|
<td align=center class='bg1'>시세</td>
|
||||||
<td align=center>{$city['trade']}%</td>
|
<td align=center>{$city['trade']}%</td>
|
||||||
<td align=center id=bg1>인구</td>
|
<td align=center class='bg1'>인구</td>
|
||||||
<td align=center>" . round($city['pop'] / $city['pop_max'] * 100, 2) . " %</td>
|
<td align=center>" . round($city['pop'] / $city['pop_max'] * 100, 2) . " %</td>
|
||||||
<td align=center id=bg1>태수</td>
|
<td align=center class='bg1'>태수</td>
|
||||||
<td align=center>";
|
<td align=center>";
|
||||||
echo $officerName[4];
|
echo $officerName[4];
|
||||||
echo "</td>
|
echo "</td>
|
||||||
<td align=center id=bg1>군사</td>
|
<td align=center class='bg1'>군사</td>
|
||||||
<td align=center>";
|
<td align=center>";
|
||||||
echo $officerName[3];
|
echo $officerName[3];
|
||||||
echo "</td>
|
echo "</td>
|
||||||
<td align=center id=bg1>종사</td>
|
<td align=center class='bg1'>종사</td>
|
||||||
<td align=center>";
|
<td align=center>";
|
||||||
echo $officerName[2];
|
echo $officerName[2];
|
||||||
echo "</td>
|
echo "</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>장수</td>
|
<td align=center class='bg1'>장수</td>
|
||||||
<td colspan=11>";
|
<td colspan=11>";
|
||||||
$generalList = $db->query('SELECT npc, name FROM general WHERE city = %i AND nation = %i', $city['city'], $me['nation']);
|
$generalList = $db->query('SELECT npc, name FROM general WHERE city = %i AND nation = %i', $city['city'], $me['nation']);
|
||||||
if (!$generalList) {
|
if (!$generalList) {
|
||||||
@@ -203,10 +245,14 @@ foreach($cityList as $city){
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0 anchor'>
|
<table align=center width=1000 class='tb_layout bg0 anchor'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
<div id="helper_genlist" style="display:none;"></div>
|
<div id="helper_genlist" style="display:none;"></div>
|
||||||
</html>
|
|
||||||
|
|
||||||
|
</html>
|
||||||
+47
-33
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -44,19 +45,20 @@ if($gameStor->isunited){
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 세력장수</title>
|
<title><?= UniqueConst::$serverName ?>: 세력장수</title>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>세 력 장 수<br><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><form name=form1 method=post>정렬순서 :
|
<td>세 력 장 수<br><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<form name=form1 method=post>정렬순서 :
|
||||||
<select name=type size=1>
|
<select name=type size=1>
|
||||||
<option <?= $sel[1] ?? '' ?> value=1>관직</option>
|
<option <?= $sel[1] ?? '' ?> value=1>관직</option>
|
||||||
<option <?= $sel[2] ?? '' ?> value=2>계급</option>
|
<option <?= $sel[2] ?? '' ?> value=2>계급</option>
|
||||||
@@ -74,8 +76,10 @@ if($gameStor->isunited){
|
|||||||
<option <?= $sel[14] ?? '' ?> value=14>사관</option>
|
<option <?= $sel[14] ?? '' ?> value=14>사관</option>
|
||||||
<option <?= $sel[15] ?? '' ?> value=15>NPC</option>
|
<option <?= $sel[15] ?? '' ?> value=15>NPC</option>
|
||||||
</select>
|
</select>
|
||||||
<input type=submit value='정렬하기'></form>
|
<input type=submit value='정렬하기'>
|
||||||
</td></tr>
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
@@ -104,21 +108,21 @@ $generalList = $db->query('SELECT owner,no,picture,imgsvr,npc,age,nation,special
|
|||||||
echo "
|
echo "
|
||||||
<table align=center class='tb_layout bg0'>
|
<table align=center class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=64 align=center id=bg1>얼 굴</td>
|
<td width=64 align=center class='bg1'>얼 굴</td>
|
||||||
<td width=98 align=center id=bg1>이 름</td>
|
<td width=98 align=center class='bg1'>이 름</td>
|
||||||
<td width=78 align=center id=bg1>관 직</td>
|
<td width=78 align=center class='bg1'>관 직</td>
|
||||||
<td width=68 align=center id=bg1>계 급</td>
|
<td width=68 align=center class='bg1'>계 급</td>
|
||||||
<td width=68 align=center id=bg1>명 성</td>
|
<td width=68 align=center class='bg1'>명 성</td>
|
||||||
<td width=68 align=center id=bg1>봉 록</td>
|
<td width=68 align=center class='bg1'>봉 록</td>
|
||||||
<td width=48 align=center id=bg1>통솔</td>
|
<td width=48 align=center class='bg1'>통솔</td>
|
||||||
<td width=48 align=center id=bg1>무력</td>
|
<td width=48 align=center class='bg1'>무력</td>
|
||||||
<td width=48 align=center id=bg1>지력</td>
|
<td width=48 align=center class='bg1'>지력</td>
|
||||||
<td width=68 align=center id=bg1>자 금</td>
|
<td width=68 align=center class='bg1'>자 금</td>
|
||||||
<td width=68 align=center id=bg1>군 량</td>
|
<td width=68 align=center class='bg1'>군 량</td>
|
||||||
<td width=48 align=center id=bg1>성 격</td>
|
<td width=48 align=center class='bg1'>성 격</td>
|
||||||
<td width=78 align=center id=bg1>특 기</td>
|
<td width=78 align=center class='bg1'>특 기</td>
|
||||||
<td width=48 align=center id=bg1>사 관</td>
|
<td width=48 align=center class='bg1'>사 관</td>
|
||||||
<td width=70 align=center id=bg1>벌점</td>
|
<td width=70 align=center class='bg1'>벌점</td>
|
||||||
</tr>";
|
</tr>";
|
||||||
foreach ($generalList as $general) {
|
foreach ($generalList as $general) {
|
||||||
|
|
||||||
@@ -142,9 +146,13 @@ foreach($generalList as $general){
|
|||||||
$intel = "{$general['intel']}";
|
$intel = "{$general['intel']}";
|
||||||
}
|
}
|
||||||
|
|
||||||
if($general['npc'] >= 2) { $name = "<font color=cyan>{$general['name']}</font>"; }
|
if ($general['npc'] >= 2) {
|
||||||
elseif($general['npc'] == 1) { $name = "<font color=skyblue>{$general['name']}</font>"; }
|
$name = "<font color=cyan>{$general['name']}</font>";
|
||||||
else { $name = "{$general['name']}"; }
|
} elseif ($general['npc'] == 1) {
|
||||||
|
$name = "<font color=skyblue>{$general['name']}</font>";
|
||||||
|
} else {
|
||||||
|
$name = "{$general['name']}";
|
||||||
|
}
|
||||||
|
|
||||||
if (key_exists($general['owner'], $ownerNameList)) {
|
if (key_exists($general['owner'], $ownerNameList)) {
|
||||||
$name = $name . '<br><small>(' . $ownerNameList[$general['owner']] . ')</small>';
|
$name = $name . '<br><small>(' . $ownerNameList[$general['owner']] . ')</small>';
|
||||||
@@ -155,7 +163,9 @@ foreach($generalList as $general){
|
|||||||
<tr>
|
<tr>
|
||||||
<td align=center class='generalIcon' style='background:no-repeat center url(\"{$imageTemp}/{$general['picture']}\");background-size:64px;' height=64></td>
|
<td align=center class='generalIcon' style='background:no-repeat center url(\"{$imageTemp}/{$general['picture']}\");background-size:64px;' height=64></td>
|
||||||
<td align=center>$name</td>
|
<td align=center>$name</td>
|
||||||
<td align=center>"; echo getOfficerLevelText($general['officer_level'], $nationLevel); echo "</td>
|
<td align=center>";
|
||||||
|
echo getOfficerLevelText($general['officer_level'], $nationLevel);
|
||||||
|
echo "</td>
|
||||||
<td align=center>" . getDed($general['dedication']) . "</td>
|
<td align=center>" . getDed($general['dedication']) . "</td>
|
||||||
<td align=center>" . getHonor($general['experience']) . "</td>
|
<td align=center>" . getHonor($general['experience']) . "</td>
|
||||||
<td align=center>" . getBill($general['dedication']) . "</td>
|
<td align=center>" . getBill($general['dedication']) . "</td>
|
||||||
@@ -167,7 +177,8 @@ foreach($generalList as $general){
|
|||||||
<td align=center>" . displayCharInfo($general['personal']) . "</td>
|
<td align=center>" . displayCharInfo($general['personal']) . "</td>
|
||||||
<td align=center>" . displaySpecialDomesticInfo($general['special']) . " / " . displaySpecialWarInfo($general['special2']) . "</td>
|
<td align=center>" . displaySpecialDomesticInfo($general['special']) . " / " . displaySpecialWarInfo($general['special2']) . "</td>
|
||||||
<td align=center>{$general['belong']}</td>
|
<td align=center>{$general['belong']}</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 "
|
||||||
@@ -177,10 +188,13 @@ foreach($generalList as $general){
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
+34
-32
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -27,18 +28,17 @@ if($nationID == 0) {
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 세력정보</title>
|
<title><?= UniqueConst::$serverName ?>: 세력정보</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../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('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printDist('ts', ['common']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>세 력 정 보<br><?=backButton()?></td></tr>
|
<tr>
|
||||||
|
<td>세 력 정 보<br><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<?php
|
<?php
|
||||||
@@ -55,8 +55,7 @@ foreach($cityList as $city){
|
|||||||
$maxPop += $city['pop_max'];
|
$maxPop += $city['pop_max'];
|
||||||
if ($city['city'] == $nation['capital']) {
|
if ($city['city'] == $nation['capital']) {
|
||||||
$cityNames[] = "<span style='color:cyan;'>{$city['name']}</span>";
|
$cityNames[] = "<span style='color:cyan;'>{$city['name']}</span>";
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$cityNames[] = $city['name'];
|
$cityNames[] = $city['name'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -96,66 +95,69 @@ if ($budgetricediff > 0) {
|
|||||||
<td colspan=8 align=center style='color:<?= newColor($nation['color']) ?>;background-color:<?= $nation['color'] ?>'>【<?= $nation['name'] ?>】</td>
|
<td colspan=8 align=center style='color:<?= newColor($nation['color']) ?>;background-color:<?= $nation['color'] ?>'>【<?= $nation['name'] ?>】</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=98 align=center id=bg1>총주민</td>
|
<td width=98 align=center class='bg1'>총주민</td>
|
||||||
<td width=198 align=center><?= number_format($currPop) ?>/<?= number_format($maxPop) ?></td>
|
<td width=198 align=center><?= number_format($currPop) ?>/<?= number_format($maxPop) ?></td>
|
||||||
<td width=98 align=center id=bg1>총병사</td>
|
<td width=98 align=center class='bg1'>총병사</td>
|
||||||
<td width=198 align=center><?= number_format($currCrew) ?>/<?= number_format($maxCrew) ?></td>
|
<td width=198 align=center><?= number_format($currCrew) ?>/<?= number_format($maxCrew) ?></td>
|
||||||
<td width=98 align=center id=bg1>국 력</td>
|
<td width=98 align=center class='bg1'>국 력</td>
|
||||||
<td width=298 align=center colspan=3><?= $nation['power'] ?></td>
|
<td width=298 align=center colspan=3><?= $nation['power'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>국 고</td>
|
<td align=center class='bg1'>국 고</td>
|
||||||
<td align=center><?= number_format($nation['gold']) ?></td>
|
<td align=center><?= number_format($nation['gold']) ?></td>
|
||||||
<td align=center id=bg1>병 량</td>
|
<td align=center class='bg1'>병 량</td>
|
||||||
<td align=center><?= number_format($nation['rice']) ?></td>
|
<td align=center><?= number_format($nation['rice']) ?></td>
|
||||||
<td align=center id=bg1>세 율</td>
|
<td align=center class='bg1'>세 율</td>
|
||||||
<td align=center colspan=3><?= $nation['rate'] ?> %</td>
|
<td align=center colspan=3><?= $nation['rate'] ?> %</td>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>세금/단기</td>
|
<td align=center class='bg1'>세금/단기</td>
|
||||||
<td align=center>+<?= number_format($goldIncome) ?> / +<?= number_format($warIncome) ?></td>
|
<td align=center>+<?= number_format($goldIncome) ?> / +<?= number_format($warIncome) ?></td>
|
||||||
<td align=center id=bg1>세곡/둔전</td>
|
<td align=center class='bg1'>세곡/둔전</td>
|
||||||
<td align=center>+<?= number_format($riceIncome) ?> / +<?= number_format($wallIncome) ?></td>
|
<td align=center>+<?= number_format($riceIncome) ?> / +<?= number_format($wallIncome) ?></td>
|
||||||
<td align=center id=bg1>지급률</td>
|
<td align=center class='bg1'>지급률</td>
|
||||||
<td align=center colspan=3><?= $nation['bill'] ?> %</td>
|
<td align=center colspan=3><?= $nation['bill'] ?> %</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>수입/지출</td>
|
<td align=center class='bg1'>수입/지출</td>
|
||||||
<td align=center>+<?= number_format($totalGoldIncome) ?> / -<?= number_format($outcome) ?></td>
|
<td align=center>+<?= number_format($totalGoldIncome) ?> / -<?= number_format($outcome) ?></td>
|
||||||
<td align=center id=bg1>수입/지출</td>
|
<td align=center class='bg1'>수입/지출</td>
|
||||||
<td align=center>+<?= number_format($totalRiceIncome) ?> / -<?= number_format($outcome) ?></td>
|
<td align=center>+<?= number_format($totalRiceIncome) ?> / -<?= number_format($outcome) ?></td>
|
||||||
<td align=center id=bg1>속 령</td>
|
<td align=center class='bg1'>속 령</td>
|
||||||
<td width=98 align=center><?= count($cityList) ?></td>
|
<td width=98 align=center><?= count($cityList) ?></td>
|
||||||
<td width=98 align=center id=bg1>장 수</td>
|
<td width=98 align=center class='bg1'>장 수</td>
|
||||||
<td width=98 align=center><?= $nation['gennum'] ?></td>
|
<td width=98 align=center><?= $nation['gennum'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center id=bg1>국고 예산</td>
|
<td align=center class='bg1'>국고 예산</td>
|
||||||
<td align=center><?= number_format($budgetgold) ?> (<?= $budgetgolddiff ?>)</td>
|
<td align=center><?= number_format($budgetgold) ?> (<?= $budgetgolddiff ?>)</td>
|
||||||
<td align=center id=bg1>병량 예산</td>
|
<td align=center class='bg1'>병량 예산</td>
|
||||||
<td align=center><?= number_format($budgetrice) ?> (<?= $budgetricediff ?>)</td>
|
<td align=center><?= number_format($budgetrice) ?> (<?= $budgetricediff ?>)</td>
|
||||||
<td align=center id=bg1>기술력</td>
|
<td align=center class='bg1'>기술력</td>
|
||||||
<td align=center><?= number_format(floor($nation['tech'])) ?></td>
|
<td align=center><?= number_format(floor($nation['tech'])) ?></td>
|
||||||
<td align=center id=bg1>작 위</td>
|
<td align=center class='bg1'>작 위</td>
|
||||||
<td align=center><?= getNationLevel($nation['level']) ?></td>
|
<td align=center><?= getNationLevel($nation['level']) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center valign=top id=bg1> 속령일람 :</td>
|
<td align=center valign=top class='bg1'> 속령일람 :</td>
|
||||||
<td colspan=7><?= join(', ', $cityNames) ?></td>
|
<td colspan=7><?= join(', ', $cityNames) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center valign=top id=bg1>국가열전</td>
|
<td align=center valign=top class='bg1'>국가열전</td>
|
||||||
<td colspan=7 id=bg0><?=formatHistoryToHTML(getNationHistoryLogAll($nation['nation']))?></td>
|
<td colspan=7 class='bg0'><?= formatHistoryToHTML(getNationHistoryLogAll($nation['nation'])) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<table align=center width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?></td></tr>
|
<td><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
+99
-53
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -14,7 +15,7 @@ $generalID = $session->generalID;
|
|||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$gameStor->cacheValues(['turntime', 'opentime', 'autorun_user']);
|
$gameStor->cacheValues(['turntime', 'opentime', 'autorun_user', 'npcmode']);
|
||||||
|
|
||||||
increaseRefresh("내정보", 1);
|
increaseRefresh("내정보", 1);
|
||||||
|
|
||||||
@@ -43,34 +44,36 @@ $use_auto_nation_turn = $me->getAuxVar('use_auto_nation_turn')??1;
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=500" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 내정보</title>
|
<title><?= UniqueConst::$serverName ?>: 내정보</title>
|
||||||
<script>
|
<script>
|
||||||
var availableDieImmediately = <?= $availableDieImmediately ? 'true' : 'false' ?>;
|
var availableDieImmediately = <?= $availableDieImmediately ? 'true' : 'false' ?>;
|
||||||
</script>
|
</script>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/myPage.js')?>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
|
<?= WebUtil::printDist('ts', ['myPage']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<div id="container" class="bg0">
|
||||||
<tr><td>내 정 보<br><?=backButton()?></td></tr>
|
<div class="row gx-0">
|
||||||
</table>
|
<div class="col">내 정 보<br><?= backButton() ?></div>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
</div>
|
||||||
<tr>
|
<div class="row gx-0">
|
||||||
<td width=50%>
|
<div class="col col-12 col-md-6">
|
||||||
<?php generalInfo($me); ?>
|
<div class="row">
|
||||||
<?php generalInfo2($me); ?>
|
<div class="col"><?php generalInfo($me); ?><?php generalInfo2($me); ?></div>
|
||||||
</td>
|
</div>
|
||||||
<td width=50% valign=top style="padding-left:4ch;">
|
</div>
|
||||||
|
|
||||||
|
<div class="col col-12 col-md-6">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col" style='padding-left:4ch;'>
|
||||||
토너먼트 【
|
토너먼트 【
|
||||||
<input type=radio class='tnmt' name=tnmt value=0 <?= $me->getVar('tnmt') == 0 ? "checked" : ""; ?>>수동참여
|
<input type=radio class='tnmt' name=tnmt value=0 <?= $me->getVar('tnmt') == 0 ? "checked" : ""; ?>>수동참여
|
||||||
<input type=radio class='tnmt' name=tnmt value=1 <?= $me->getVar('tnmt') == 1 ? "checked" : ""; ?>>자동참여
|
<input type=radio class='tnmt' name=tnmt value=1 <?= $me->getVar('tnmt') == 1 ? "checked" : ""; ?>>자동참여
|
||||||
@@ -99,62 +102,105 @@ var availableDieImmediately = <?=$availableDieImmediately?'true':'false'?>;
|
|||||||
<option value=999 <?= $me->getVar('defence_train') == 999 ? "selected" : ""; ?>><?= formatDefenceTrain(999) ?>[훈련, 사기 -3]</option>
|
<option value=999 <?= $me->getVar('defence_train') == 999 ? "selected" : ""; ?>><?= formatDefenceTrain(999) ?>[훈련, 사기 -3]</option>
|
||||||
</select>
|
</select>
|
||||||
】<br><br>
|
】<br><br>
|
||||||
<input type=<?=$submit?> id='set_my_setting' name=btn style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px; value=설정저장><br>
|
<input type=<?= $submit ?> id='set_my_setting' name=btn style=background-color:<?= GameConst::$basecolor2 ?>;color:white;width:160px;height:30px;font-size:14px; value=설정저장><br>
|
||||||
∞<span style='color:orange'>설정저장은 이달중 <?= $myset ?>회 남았습니다.</span><br><br>
|
∞<span style='color:orange'>설정저장은 이달중 <?= $myset ?>회 남았습니다.</span><br><br>
|
||||||
<?php if (!($gameStor->autorun_user['limit_minutes'] ?? false)) : ?>
|
<?php if (!($gameStor->autorun_user['limit_minutes'] ?? false)) : ?>
|
||||||
휴 가 신 청<br>
|
휴 가 신 청<br>
|
||||||
<button type="button" id='vacation' style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>휴가 신청</button><br><br>
|
<button type="button" id='vacation' style=background-color:<?= GameConst::$basecolor2 ?>;color:white;width:160px;height:30px;font-size:14px;>휴가 신청</button><br><br>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<!--빙의 해제용 삭턴 조절<br>
|
<!--빙의 해제용 삭턴 조절<br>
|
||||||
<a href="b_myPage.php?detachNPC=1"><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>빙의 해체 요청</button></a>-->
|
<a href="b_myPage.php?detachNPC=1"><button type="button" style=background-color:<?= GameConst::$basecolor2 ?>;color:white;width:160px;height:30px;font-size:14px;>빙의 해체 요청</button></a>-->
|
||||||
|
|
||||||
<?php if ($showDieImmediatelyBtn) : ?>
|
<?php if ($showDieImmediatelyBtn) : ?>
|
||||||
가오픈 기간 내 장수 삭제 (<?= substr($targetTime, 0, 19) ?> 부터)<br>
|
가오픈 기간 내 장수 삭제 (<?= substr($targetTime, 0, 19) ?> 부터)<br>
|
||||||
<a href="c_die_immediately.php" id='die_immediately'><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>장수 삭제</button></a><br><br>
|
<a href="c_die_immediately.php" id='die_immediately'><button type="button" style=background-color:<?= GameConst::$basecolor2 ?>;color:white;width:160px;height:30px;font-size:14px;>장수 삭제</button></a><br><br>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php if ($gameStor->npcmode == 2 && $me->getNPCType() == 0) : ?>
|
||||||
|
다른 장수 선택 (<?= substr($me->getAuxVar('next_change') ?? TimeUtil::now(), 0, 19) ?> 부터)<br>
|
||||||
|
<a href="select_general_from_pool.php" id='select_general_from_pool'><button type="button" style=background-color:<?= GameConst::$basecolor2 ?>;color:white;width:160px;height:30px;font-size:14px;>다른 장수 선택</button></a><br><br>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4 text-end">500px/1000px 모드<br>(모바일 전용, 즉시 설정)</div>
|
||||||
|
<div class="col-8">
|
||||||
|
<div class="btn-group" role="group" aria-label="500px/1000px 모드 설정">
|
||||||
|
<input type="radio" class="btn-check" name="screenMode" value="auto" id="screenMode_auto" autocomplete="off">
|
||||||
|
<label class="btn btn-primary" for="screenMode_auto">자동</label>
|
||||||
|
|
||||||
|
<input type="radio" class="btn-check" name="screenMode" value="500px" id="screenMode_500px" autocomplete="off">
|
||||||
|
<label class="btn btn-primary" for="screenMode_500px">500px</label>
|
||||||
|
|
||||||
|
<input type="radio" class="btn-check" name="screenMode" value="1000px" id="screenMode_1000px" autocomplete="off">
|
||||||
|
<label class="btn btn-primary" for="screenMode_1000px">1000px</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
|
||||||
개인용 CSS<br>
|
개인용 CSS<br>
|
||||||
<textarea id='custom_css' style='color:white;background-color:black;width:420px;height:150px;'></textarea>
|
<textarea id='custom_css' style='color:white;background-color:black;width:420px;height:150px;'></textarea>
|
||||||
</td>
|
</div>
|
||||||
</tr>
|
</div>
|
||||||
<tr>
|
</div>
|
||||||
<td align=center id=bg1><font color=skyblue size=3>개인 기록</font></td>
|
<div class="col col-12 col-md-6">
|
||||||
<td align=center id=bg1><font color=orange size=3>전투 기록</font></td>
|
<div class="row gx-0">
|
||||||
</tr>
|
<div class="col bg1 text-center">
|
||||||
<tr>
|
<h4 style='color:skyblue'>개인 기록</h4>
|
||||||
<td valign=top>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row gx-0">
|
||||||
<div id='generalActionPlate'>
|
<div id='generalActionPlate'>
|
||||||
<?= formatHistoryToHTML(getGeneralActionLogRecent($generalID, 24), 'generalAction') ?>
|
<?= formatHistoryToHTML(getGeneralActionLogRecent($generalID, 24), 'generalAction') ?>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="load_old_log btn btn-secondary btn-block" data-log_type="generalAction">이전 로그 불러오기</button>
|
<button type="button" class="load_old_log btn btn-secondary" data-log_type="generalAction">이전 로그 불러오기</button>
|
||||||
</td>
|
</div>
|
||||||
<td valign=top>
|
</div>
|
||||||
|
<div class="col col-12 col-md-6">
|
||||||
|
<div class="row gx-0">
|
||||||
|
<div class="col bg1 text-center">
|
||||||
|
<h4 style='color:orange'>전투 기록</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row gx-0">
|
||||||
<div id='battleDetailPlate'>
|
<div id='battleDetailPlate'>
|
||||||
<?= formatHistoryToHTML(getBattleDetailLogRecent($generalID, 24), 'battleDetail') ?>
|
<?= formatHistoryToHTML(getBattleDetailLogRecent($generalID, 24), 'battleDetail') ?>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="load_old_log btn btn-secondary btn-block" data-log_type="battleDetail">이전 로그 불러오기</button>
|
<button type="button" class="load_old_log btn btn-secondary" data-log_type="battleDetail">이전 로그 불러오기</button>
|
||||||
</td>
|
</div>
|
||||||
</tr>
|
</div>
|
||||||
<tr>
|
|
||||||
<td align=center id=bg1><font color=skyblue size=3>장수 열전</font></td>
|
<div class="col col-12 col-md-6">
|
||||||
<td align=center id=bg1><font color=orange size=3>전투 결과</font></td>
|
<div class="row gx-0">
|
||||||
</tr>
|
<div class="col bg1 text-center">
|
||||||
<tr>
|
<h4 style='color:skyblue'>장수 열전</h4>
|
||||||
<td valign=top>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row gx-0">
|
||||||
<?= formatHistoryToHTML(getGeneralHistoryLogAll($generalID)) ?>
|
<?= formatHistoryToHTML(getGeneralHistoryLogAll($generalID)) ?>
|
||||||
</td>
|
</div>
|
||||||
<td valign=top>
|
</div>
|
||||||
|
<div class="col col-12 col-md-6">
|
||||||
|
<div class="row gx-0">
|
||||||
|
<div class="col bg1 text-center">
|
||||||
|
<h4 style='color:orange'>전투 결과</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row gx-0">
|
||||||
<div id='battleResultPlate'>
|
<div id='battleResultPlate'>
|
||||||
<?= formatHistoryToHTML(getBattleResultRecent($generalID, 24), 'battleResult') ?>
|
<?= formatHistoryToHTML(getBattleResultRecent($generalID, 24), 'battleResult') ?>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="load_old_log btn btn-secondary btn-block" data-log_type="battleResult">이전 로그 불러오기</button>
|
<button type="button" class="load_old_log btn btn-secondary" data-log_type="battleResult">이전 로그 불러오기</button>
|
||||||
</td>
|
</div>
|
||||||
</tr>
|
</div>
|
||||||
</table>
|
</div>
|
||||||
<table align=center width=1000 class='tb_layout bg0'>
|
<div class="row gx-0">
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<div class="col "><?= backButton() ?></div>
|
||||||
<tr><td><?=banner()?></td></tr>
|
</div>
|
||||||
</table>
|
<div class="row bg0 gx-0">
|
||||||
|
<div class="col bg0"><?= banner() ?></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -1,420 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace sammo;
|
|
||||||
|
|
||||||
include "lib.php";
|
|
||||||
include "func.php";
|
|
||||||
//로그인 검사
|
|
||||||
$session = Session::requireGameLogin()->setReadOnly();
|
|
||||||
$userID = Session::getUserID();
|
|
||||||
|
|
||||||
$db = DB::db();
|
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
|
||||||
$gameStor->cacheValues(['autorun_user', 'develcost']);
|
|
||||||
|
|
||||||
increaseRefresh("NPC 정책", 1);
|
|
||||||
|
|
||||||
|
|
||||||
$me = $db->queryFirstRow('SELECT no, npc, nation, city, officer_level, con, turntime, belong, permission, penalty FROM general WHERE owner=%i', $userID);
|
|
||||||
|
|
||||||
$nationID = $me['nation'];
|
|
||||||
$nation = $db->queryFirstRow('SELECT nation,level,name,color,type,gold,rice,bill,tech,rate,scout,war,secretlimit,capital FROM nation WHERE nation = %i', $nationID);
|
|
||||||
|
|
||||||
$con = checkLimit($me['con']);
|
|
||||||
if ($con >= 2) {
|
|
||||||
printLimitMsg($me['turntime']);
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
$permission = checkSecretPermission($me);
|
|
||||||
if ($permission < 0) {
|
|
||||||
echo '국가에 소속되어있지 않습니다.';
|
|
||||||
die();
|
|
||||||
} else if ($permission < 1) {
|
|
||||||
echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.";
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$nationStor = KVStorage::getStorage($db, $nationID, 'nation_env');
|
|
||||||
$nationStor->cacheValues(['npc_nation_policy', 'npc_general_policy']);
|
|
||||||
$gameStor->cacheAll();
|
|
||||||
|
|
||||||
$general = new General($me, null, null, $nation, $gameStor->year, $gameStor->month, false);
|
|
||||||
|
|
||||||
$rawServerPolicy = $gameStor->getValue('npc_nation_policy') ?? [];
|
|
||||||
$rawNationPolicy = $nationStor->getValue('npc_nation_policy') ?? [];
|
|
||||||
$rawServerGeneralPolicy = $gameStor->getValue('npc_general_policy') ?? [];
|
|
||||||
$rawNationGeneralPolicy = $nationStor->getValue('npc_general_policy') ?? [];
|
|
||||||
|
|
||||||
$defaultNationPolicy = ($rawServerPolicy['values'] ?? []) + AutorunNationPolicy::$defaultPolicy;
|
|
||||||
$currentNationPolicy = ($rawNationPolicy['values'] ?? []) + $defaultNationPolicy;
|
|
||||||
|
|
||||||
$defaultNationPriority = $rawServerPolicy['priority'] ?? (AutorunNationPolicy::$defaultPriority);
|
|
||||||
$currentNationPriority = $rawNationPolicy['priority'] ?? $defaultNationPriority;
|
|
||||||
|
|
||||||
$defaultGeneralActionPriority = $rawServerGeneralPolicy['priority'] ?? (AutorunGeneralPolicy::$default_priority);
|
|
||||||
$currentGeneralActionPriority = $rawNationGeneralPolicy['priority'] ?? $defaultGeneralActionPriority;
|
|
||||||
|
|
||||||
$autoPolicyVariable = [];
|
|
||||||
if ($currentNationPolicy['reqHumanWarUrgentRice'] ?? 0) {
|
|
||||||
$autoPolicyVariable['reqHumanWarUrgentRice'] = $currentNationPolicy['reqHumanWarUrgentRice'];
|
|
||||||
}
|
|
||||||
if ($currentNationPolicy['reqHumanWarUrgentGold'] ?? 0) {
|
|
||||||
$autoPolicyVariable['reqHumanWarUrgentGold'] = $currentNationPolicy['reqHumanWarUrgentGold'];
|
|
||||||
}
|
|
||||||
$autoPolicy = new AutorunNationPolicy($general, ($gameStor->autorun_user)['options'], ['values' => $autoPolicyVariable], null, $nation, $gameStor->getAll(true));
|
|
||||||
$zeroPolicy = new AutorunNationPolicy($general, ($gameStor->autorun_user)['options'], null, null, $nation, $gameStor->getAll(true));
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
||||||
<!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 ?>: 임시 NPC 정책</title>
|
|
||||||
<script>
|
|
||||||
var nationID = <?= $nationID ?>;
|
|
||||||
|
|
||||||
var defaultNationPolicy = <?= Json::encode($defaultNationPolicy) ?>;
|
|
||||||
var currentNationPolicy = <?= Json::encode($currentNationPolicy) ?>;
|
|
||||||
|
|
||||||
var defaultNationPriority = <?= Json::encode($defaultNationPriority) ?>;
|
|
||||||
var currentNationPriority = <?= Json::encode($currentNationPriority) ?>;
|
|
||||||
var availableNationPriorityItems = <?= Json::encode(AutorunNationPolicy::$defaultPriority) ?>;
|
|
||||||
|
|
||||||
var defaultGeneralActionPriority = <?= Json::encode($defaultGeneralActionPriority) ?>;
|
|
||||||
var currentGeneralActionPriority = <?= Json::encode($currentGeneralActionPriority) ?>;
|
|
||||||
var availableGeneralActionPriorityItems = <?= Json::encode(AutorunGeneralPolicy::$default_priority) ?>;
|
|
||||||
|
|
||||||
var btnHelpMessage = {
|
|
||||||
'선전포고': '군주가 NPC이고, 전쟁중이 아닐 때,<br>주변국중 하나를 골라 선포합니다.<br><br>선포 시점은 다음을 참고합니다.<br>- 인구율<br>- 도시내정률<br>- NPC전투장권장 금 충족률<br>- NPC전투장권장 쌀 충족률<br><br>국력이 낮은 국가를 조금 더 선호합니다.',
|
|
||||||
'천도': '인구가 많은 곳을 찾아 천도를 시도합니다.<br>영토의 가운데를 선호합니다.<br><br>도시 인구가 충분하다면, 굳이 천도하지는 않습니다.',
|
|
||||||
'유저장긴급포상': '금/쌀이 부족한 유저전투장에게 긴급하게 포상합니다.<br>국고가 권장량보다 적어지더라도 시도합니다.',
|
|
||||||
'부대전방발령': '(작동하지 않음)<br>전투 부대를 접경으로 발령합니다.<br>수도->시작점->도착점 경로를 따릅니다.',
|
|
||||||
'유저장구출발령': '아군 영토에 있지 않은 유저장을 아군 영토로 발령합니다.<br>곧 집합하는 부대에 탑승한 경우는 제외합니다.',
|
|
||||||
'유저장후방발령': '유저전투장 중에<br>- 병력이 충분하지 않고,<br>- 도시의 인구가 제자리 징병할 수 있을 정도로 충분하지 않고,<br>- 부대에 탑승하지 않았다면,<br>인구가 충분한 후방도시로 발령합니다.',
|
|
||||||
'부대유저장후방발령': '접경에 위치한 부대에 탑승한 유저전투장 중에,<br>- 병력이 충분하지 않고,<br>- 첫 턴이 징병턴이며,<br>- 부대장 집합 턴 사이라면,<br>인구가 충분한 후방도시로 발령합니다.<br><br>부대장의 위치와 유저장의 위치가 다르다면 발령하지 않습니다.',
|
|
||||||
'유저장전방발령': '후방에 있는 유저장이<br>- 병력을 가지고 있으며,<br>- 곧 훈련/사기진작이 완료될 것 같으면,<br>전방으로 발령합니다.<br><br>도시 관직이 많이 임명된 도시를 선호합니다.',
|
|
||||||
'유저장포상': '금/쌀이 부족한 유저장에게 포상합니다.<br>유저전투장과 유저내정장은 각각 기준을 따릅니다.<br>국고 권장량을 가급적 지킵니다.',
|
|
||||||
'부대후방발령': '(작동하지 않음)<br>후방 부대가 위치한 도시의 인구가 충분하지 않을 경우,<br>인구가 충분한 도시로 발령합니다.',
|
|
||||||
'부대구출발령': '전투 부대, 후방 부대가 아닌 부대가 아군 영토에 있지 않을 때,<br>전방 도시 중 하나를 골라 발령합니다.',
|
|
||||||
'NPC긴급포상': '금/쌀이 부족한 NPC전투장에게 긴급하게 포상합니다.<br>국고가 권장량보다 \'약간\' 적어지더라도 시도합니다.',
|
|
||||||
'NPC구출발령': '아군 영토에 있지 않은 NPC장을 아군 영토로 발령합니다.',
|
|
||||||
'NPC후방발령': 'NPC전투장 중에<br>- 병력이 충분하지 않고,<br>- 도시의 인구가 제자리 징병할 수 있을 정도로 충분하지 않고,<br>- 부대에 탑승하지 않았다면,<br>인구가 충분한 후방도시로 발령합니다.',
|
|
||||||
'NPC포상': '금/쌀이 부족한 유저장에게 포상합니다.<br>NPC전투장과 NPC내정장은 각각 기준을 따릅니다.<br>국고 권장량을 가급적 지킵니다.',
|
|
||||||
'NPC전방발령': '후방에 있는 유저장이<br>- 병력을 가지고 있으며,<br>- 곧 훈련/사기진작이 완료될 것 같으면,<br>전방으로 발령합니다.<br><br>도시 관직이 많이 임명된 도시를 선호합니다.',
|
|
||||||
'유저장내정발령': '내정중인 유저장이 위치한 도시의 내정률이 95% 이상이면<br>개발되지 않은 도시로 발령합니다.',
|
|
||||||
'NPC내정발령': '내정중인 NPC장이 위치한 도시의 내정률이 95% 이상이면<br>개발되지 않은 도시로 발령합니다.',
|
|
||||||
'NPC몰수': '국고가 부족하다면 NPC에게서 몰수합니다. 내정NPC장은 국고가 부족하지 않아도 몰수합니다.',
|
|
||||||
|
|
||||||
'NPC사망대비': 'NPC의 사망까지 5턴 이내인 경우, 헌납합니다.<br>헌납할 금쌀이 없다면 물자조달을 수행합니다.',
|
|
||||||
'귀환': '아국 도시에 있지 않다면 귀환합니다.',
|
|
||||||
'금쌀구매': '전쟁 중에 금쌀의 비율이 크게 차이난다면 금쌀을 거래하여 비슷하게 맞춥니다.<br>금쌀 비율이 적절하는지 판단하는데 살상률을 포함합니다.<br>NPC는 상인이 없어도 금쌀을 구매할 수 있습니다.<br><br>또는 금쌀 한쪽이 지나치게 적은 경우에는 내정 중에도 금쌀을 거래합니다.',
|
|
||||||
'출병': '충분한 병력과 충분한 훈련/사기를 가지고 있는 경우 출병합니다.<br>접경이 여럿인 경우 무작위로 선택합니다.<br><br>타국과 전쟁중인 경우 공백지로는 출병하지 않습니다.',
|
|
||||||
'긴급내정': '전쟁중에 민심이 70 미만이거나,<br>인구가 제자리 징병이 가능하지 않을 정도로 적을 경우,<br>일정확률로 주민선정과 정착장려를 수행합니다.<br><br>통솔이 높을 수록 수행할 확률이 높습니다.',
|
|
||||||
'전투준비': '충분한 병력을 가지고 있지만 훈련과 사기가 부족한 경우 훈련과 사기진작을 수행합니다.',
|
|
||||||
'전방워프': '전투장이 충분한 병력을 가지고 있다면 전방으로 이동합니다.',
|
|
||||||
'NPC헌납': '국고가 부족한데 NPC전쟁장이 충분한 금쌀(권장량 대비 1.5배)을 가지고 있다면 일부를 헌납합니다. <br>NPC내정장은 국고가 넉넉하더라도 충분한 금쌀을 가지고 있다면 권장량만 유지하고 헌납합니다.',
|
|
||||||
'징병': '전쟁 중 병력을 소진하였다면 재 징병합니다.<br><br>기존에 사용한 병종군 중에서 사용가능한 병종을 랜덤하게 선택합니다.<br>고급 병종을 선택할 확률이 조금 더 높습니다.<br><br>NPC의 경우 도시의 인구가 충분하지 않다면 징병을 할 확률이 감소합니다.<br><br>유저장은 최대한 고급병종을 유지하며,<br>유저장 모병이 허용되는 경우 모병을 3회할 수 있다면 모병합니다.',
|
|
||||||
'후방워프': '전쟁 중 병력을 소진하였는데 도시의 인구가 충분하지 않다면,<br>인구가 많은 도시로 이동합니다.',
|
|
||||||
'전쟁내정': '전쟁 중 수행하는 내정입니다.<br>정착장려, 기술연구의 확률이 좀 더 높고,<br>치안강화, 농지개간, 상업투자의 확률이 낮습니다.<br><br>내정이 가능하다 하더라도 전시임을 고려해,<br>30% 확률로 다른 턴을 수행합니다.',
|
|
||||||
'소집해제': '전쟁 중이 아닌 데 병력이 남아있는 경우,<br>3/4 확률로 소집해제합니다.',
|
|
||||||
'일반내정': '도시에서 내정을 수행합니다. 낮은 내정일 수록 수행할 확률이 높습니다.<br>기술 연구는 1등급 이상 뒤쳐지지 않도록 노력합니다.',
|
|
||||||
'내정워프': '도시에서 더이상 내정을 수행할 수 없는 경우,<br>일정확률로 내정이 부족한 다른 도시로 이동합니다.',
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<?= WebUtil::printJS('../e_lib/jquery-3.3.1.min.js') ?>
|
|
||||||
<?= WebUtil::printJS('../e_lib/Sortable.min.js') ?>
|
|
||||||
<?= WebUtil::printJS('../e_lib/jquery-sortable.js') ?>
|
|
||||||
<?= WebUtil::printJS('../e_lib/bootstrap.bundle.min.js') ?>
|
|
||||||
<?= WebUtil::printJS('../e_lib/jquery_toast/toast.js') ?>
|
|
||||||
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
|
||||||
<?= WebUtil::printJS('js/common.js') ?>
|
|
||||||
<?= WebUtil::printJS('js/npc_control.js') ?>
|
|
||||||
|
|
||||||
<?= WebUtil::printCSS('../e_lib/bootstrap.min.css') ?>
|
|
||||||
<?= WebUtil::printCSS('../e_lib/font_awesome/css/all.min.css') ?>
|
|
||||||
<?= WebUtil::printCSS('../e_lib/jquery_toast/toast.css') ?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
|
||||||
<?= WebUtil::printCSS('css/common.css') ?>
|
|
||||||
<?= WebUtil::printCSS('css/npc_control.css') ?>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div id='container' class='tb_layout bg0' style='width:1000px;margin:auto;border:solid 1px #888888;'>
|
|
||||||
<div class='tb_layout bg0'>임시 NPC 정책<br>
|
|
||||||
<?= backButton() ?></div>
|
|
||||||
|
|
||||||
<div class='bg1 section_bar'>국가 정책</div>
|
|
||||||
<div class="text-right px-3"><small class="form-text text-muted">
|
|
||||||
최근 설정: <?= $rawNationPolicy['valueSetter'] ?? '-없음-' ?> (<?= $rawNationPolicy['valueSetTime'] ?? '설정 기록 없음' ?>)
|
|
||||||
</small></div>
|
|
||||||
<div class="form_list">
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqNationGold" class="col-sm-6 col-form-label">국가 권장 금</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqNationGold" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">이보다 많으면 포상, 적으면 몰수/헌납합니다.(긴급포상 제외)</small></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqNationRice" class="col-sm-6 col-form-label">국가 권장 쌀</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqNationRice" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">이보다 많으면 포상, 적으면 몰수/헌납합니다.(긴급포상 제외)</small></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqHumanWarUrgentGold" class="col-sm-6 col-form-label">유저전투장 긴급포상 금</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqHumanWarUrgentGold" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">
|
|
||||||
유저장긴급포상시 이보다 금이 적은 장수에게 포상합니다.<br>
|
|
||||||
0이면 보병 6회 징병(<?= number_format(GameConst::$defaultStatMax * 100) ?> * 6) 가능한 금을 기준으로 하며, 그 수치는 현재 <?= number_format($zeroPolicy->reqHumanWarUrgentGold) ?>입니다.</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqHumanWarUrgentRice" class="col-sm-6 col-form-label">유저전투장 긴급포상 쌀</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqHumanWarUrgentRice" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">유저장긴급포상시 이보다 쌀이 적은 장수에게 포상합니다.<br>0이면 기본 병종으로 <?= number_format(GameConst::$defaultStatMax * 100 * 6) ?>명 사살 가능한 쌀을 기준으로 하며, 그 수치는 현재 <?= number_format($zeroPolicy->reqHumanWarUrgentRice) ?>입니다.</small></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqHumanWarRecommandGold" class="col-sm-6 col-form-label">유저전투장 권장 금</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqHumanWarRecommandGold" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">유저전투장에게 주는 금입니다. 이보다 적으면 포상합니다. <br>
|
|
||||||
0이면 유저전투장 긴급포상 금의 2배를 기준으로 하며, 그 수치는 현재 <?= number_format($autoPolicy->reqHumanWarRecommandGold) ?>입니다.</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqHumanWarRecommandRice" class="col-sm-6 col-form-label">유저전투장 권장 쌀</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqHumanWarRecommandRice" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">유저전투장에게 주는 쌀입니다. 이보다 적으면 포상합니다. <br>
|
|
||||||
0이면 유저전투장 긴급포상 쌀의 2배를 기준으로 하며, 그 수치는 현재 <?= number_format($autoPolicy->reqHumanWarRecommandRice) ?>입니다.</small></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqHumanDevelGold" class="col-sm-6 col-form-label">유저내정장 권장 금</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqHumanDevelGold" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">유저내정장에게 주는 금입니다. 이보다 적으면 포상합니다.</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqHumanDevelRice" class="col-sm-6 col-form-label">유저내정장 권장 쌀</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqHumanDevelRice" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">유저내정장에게 주는 쌀입니다. 이보다 적으면 포상합니다.</small></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqNPCWarGold" class="col-sm-6 col-form-label">NPC전투장 권장 금</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqNPCWarGold" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">NPC전투장에게 주는 금입니다. 이보다 적으면 포상합니다. <br>
|
|
||||||
0이면 기본 병종 4회(<?= number_format(GameConst::$defaultStatNPCMax * 100) ?> * 4) 징병비를 기준으로 하며, 그 수치는 현재 <?= number_format($autoPolicy->reqNPCWarGold) ?>입니다.</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqNPCWarRice" class="col-sm-6 col-form-label">NPC전투장 권장 쌀</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqNPCWarRice" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">NPC전투장에게 주는 쌀입니다. 이보다 적으면 포상합니다. <br>
|
|
||||||
0이면 기본 병종으로 <?= number_format(GameConst::$defaultStatNPCMax * 100 * 4) ?>명 사살 가능한 쌀을 기준으로 하며, 그 수치는 현재 <?= number_format($autoPolicy->reqNPCWarRice) ?>입니다.</small></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqNPCDevelGold" class="col-sm-6 col-form-label">NPC내정장 권장 금</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqNPCDevelGold" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">NPC내정장에게 주는 금입니다. 이보다 5배 더 많다면 헌납합니다.<br>0이면 30턴 내정 가능한 금을 기준으로 하며, 그 수치는 현재 <?= number_format($autoPolicy->reqNPCDevelGold) ?>입니다.</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="reqNPCDevelRice" class="col-sm-6 col-form-label">NPC내정장 권장 쌀</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="reqNPCDevelRice" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">NPC내정장에게 주는 쌀입니다. 이보다 5배 더 많다면 헌납합니다.</small></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="minimumResourceActionAmount" class="col-sm-6 col-form-label">포상/몰수/헌납/삼/팜 최소 단위</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="minimumResourceActionAmount" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">연산결과가 이 단위보다 적다면 수행하지 않습니다.</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="minWarCrew" class="col-sm-6 col-form-label">최소 전투 가능 병력 수</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="minWarCrew" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">이보다 적을 때에는 징병을 시도합니다.</small></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="minNPCRecruitCityPopulation" class="col-sm-6 col-form-label">NPC 최소 징병 가능 인구 수</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="minNPCRecruitCityPopulation" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">이보다 낮으면 NPC는 도시에서 징병하지 않고 후방 워프합니다.</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="safeRecruitCityPopulationRatio" class="col-sm-6 col-form-label">제자리 징병 허용 인구율(%)</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="percent" id="safeRecruitCityPopulationRatio" min="0" max="100" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">전쟁 시 후방 발령, 후방 워프의 기준 인구입니다. 이보다 많다면 '충분하다'고 판단합니다.</small></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="minNPCWarLeadership" class="col-sm-6 col-form-label">NPC 전투 참여 통솔 기준</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="minNPCWarLeadership" min="0" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">이 수치보다 같거나 높으면 NPC전투장으로 분류됩니다.</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="row">
|
|
||||||
<label for="properWarTrainAtmos" class="col-sm-6 col-form-label">훈련/사기진작 목표치</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="number" class="form-control" data-type="integer" id="properWarTrainAtmos" min="0" max="100" value="0">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style='text-align:right;'><small class="form-text text-muted">훈련/사기진작 기준치입니다. 이보다 같거나 높으면 출병합니다.</small></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="alert alert-secondary">
|
|
||||||
전투 부대는 작업중입니다(json양식: {부대번호:[시작도시번호(아국),도착도시번호(적군)],...})<br>
|
|
||||||
후방 징병 부대는 작업중입니다(json양식: [부대번호,...])<br>
|
|
||||||
내정 부대는 작업중입니다(json양식: [부대번호,...])
|
|
||||||
<input type="hidden" value="{}" data-type="json" id="CombatForce">
|
|
||||||
<input type="hidden" value="[]" data-type="json" id="SupportForce">
|
|
||||||
<input type="hidden" value="[]" data-type="json" id="DevelopForce">
|
|
||||||
<input type="hidden" value="true" data-type="json" id="allowNpcAttackCity">
|
|
||||||
<!--allowNpcAttackCity는 현재 게임 내 비활성-->
|
|
||||||
</div>
|
|
||||||
<div class='control_bar' data-type="nationPolicy">
|
|
||||||
<div class="btn-group" role="group">
|
|
||||||
<button type="button" class="btn btn-dark reset_btn">초기값으로</button>
|
|
||||||
<button type="button" class="btn btn-secondary revert_btn">이전값으로</button>
|
|
||||||
</div><button type="button" class="btn btn-primary submit_btn">설정</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-6 half_section_left">
|
|
||||||
<div class='bg1 section_bar'>NPC 사령턴 우선순위</div>
|
|
||||||
<div class="float-right px-3"><small class="form-text text-muted">
|
|
||||||
최근 설정: <?= $rawNationPolicy['prioritySetter'] ?? '-없음-' ?> (<?= $rawNationPolicy['prioritySetTime'] ?? '설정 기록 없음' ?>)
|
|
||||||
</small></div>
|
|
||||||
<div class='text-left px-2'><small class="text-muted">예턴이 없거나, 지정되어 있더라도 실패할경우<br>아래 순위에 따라 사령턴을 시도합니다.</small></div>
|
|
||||||
<div class="form_list">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="bg2 sub_bar">비활성</div>
|
|
||||||
<div id="nationPriorityDisabled" class="list-group col" data-type="list">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="bg2 sub_bar">활성</div>
|
|
||||||
<div id="nationPriority" class="list-group col" data-type="list">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class='control_bar' data-type="nationPriority">
|
|
||||||
<div class="btn-group" role="group">
|
|
||||||
<button type="button" class="btn btn-dark reset_btn">초기값으로</button>
|
|
||||||
<button type="button" class="btn btn-secondary revert_btn">이전값으로</button>
|
|
||||||
</div><button type="button" class="btn btn-primary submit_btn">설정</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6 half_section_right">
|
|
||||||
<div class='bg1 section_bar'>NPC 일반턴 우선순위</div>
|
|
||||||
<div class="float-right px-3"><small class="form-text text-muted">
|
|
||||||
최근 설정: <?= $rawNationGeneralPolicy['prioritySetter'] ?? '-없음-' ?> (<?= $rawNationGeneralPolicy['prioritySetTime'] ?? '설정 기록 없음' ?>)
|
|
||||||
</small></div>
|
|
||||||
<div class='text-left px-2'><small class="text-muted">순위가 높은 것부터 시도합니다. <br>아무것도 실행할 수 없으면 물자조달이나 인재탐색을 합니다.</small></div>
|
|
||||||
<div class="form_list">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="bg2 sub_bar">비활성</div>
|
|
||||||
<div id="generalPriorityDisabled" class="list-group col" data-type="list">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<div class="bg2 sub_bar">활성</div>
|
|
||||||
<div id="generalPriority" class="list-group col" data-type="list">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class='control_bar' data-type="generalPriority">
|
|
||||||
<div class="btn-group" role="group">
|
|
||||||
<button type="button" class="btn btn-dark reset_btn">초기값으로</button>
|
|
||||||
<button type="button" class="btn btn-secondary revert_btn">이전값으로</button>
|
|
||||||
</div><button type="button" class="btn btn-primary submit_btn">설정</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
+23
-23
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -14,8 +15,7 @@ function die_redirect()
|
|||||||
global $isChiefTurn;
|
global $isChiefTurn;
|
||||||
if (!$isChiefTurn) {
|
if (!$isChiefTurn) {
|
||||||
header('location:index.php', true, 303);
|
header('location:index.php', true, 303);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
header('location:b_chiefcenter.php', true, 303);
|
header('location:b_chiefcenter.php', true, 303);
|
||||||
}
|
}
|
||||||
die();
|
die();
|
||||||
@@ -46,8 +46,7 @@ $general = General::createGeneralObjFromDB($session->generalID);
|
|||||||
|
|
||||||
if (!$isChiefTurn) {
|
if (!$isChiefTurn) {
|
||||||
$commandObj = buildGeneralCommandClass($commandType, $general, $env);
|
$commandObj = buildGeneralCommandClass($commandType, $general, $env);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
if ($general->getVar('officer_level') < 5) {
|
if ($general->getVar('officer_level') < 5) {
|
||||||
die_redirect();
|
die_redirect();
|
||||||
}
|
}
|
||||||
@@ -64,42 +63,32 @@ if(!$commandObj->hasPermissionToReserve()){
|
|||||||
die_redirect();
|
die_redirect();
|
||||||
}
|
}
|
||||||
|
|
||||||
$jsList = $commandObj->getJSFiles();
|
$jsList = $commandObj->getJSPlugins();
|
||||||
$cssList = $commandObj->getCSSFiles();
|
$cssList = $commandObj->getCSSFiles();
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title><?= $commandObj->getName() ?></title>
|
<title><?= $commandObj->getName() ?></title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/select2/select2.full.min.js')?>
|
|
||||||
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?= WebUtil::printJS('d_shared/base_map.js') ?>
|
<?= WebUtil::printJS('d_shared/base_map.js') ?>
|
||||||
<?=WebUtil::printJS('js/map.js')?>
|
|
||||||
<?=WebUtil::printJS('js/processing.js')?>
|
|
||||||
<script>
|
<script>
|
||||||
window.serverNick = '<?= DB::prefix() ?>';
|
window.serverNick = '<?= DB::prefix() ?>';
|
||||||
window.serverID = '<?= UniqueConst::$serverID ?>';
|
window.serverID = '<?= UniqueConst::$serverID ?>';
|
||||||
window.command = '<?= $commandType ?>';
|
window.command = '<?= $commandType ?>';
|
||||||
window.turnList = [<?= join(', ', $turnList) ?>];
|
window.turnList = [<?= join(', ', $turnList) ?>];
|
||||||
window.isChiefTurn = <?= $isChiefTurn ? 'true' : 'false' ?>;
|
window.isChiefTurn = <?= $isChiefTurn ? 'true' : 'false' ?>;
|
||||||
|
var jsPlugins = <?= Json::encode($jsList) ?>;
|
||||||
</script>
|
</script>
|
||||||
<?php
|
|
||||||
foreach($jsList as $js){
|
|
||||||
print(WebUtil::printJS($js));
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../e_lib/select2/select2.min.css') ?>
|
<?= WebUtil::printCSS('../e_lib/select2/select2.min.css') ?>
|
||||||
<?= WebUtil::printCSS('../e_lib/select2/select2-bootstrap4.css') ?>
|
<?= WebUtil::printCSS('../e_lib/select2/select2-bootstrap4.css') ?>
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?= WebUtil::printCSS('css/main.css') ?>
|
<?= WebUtil::printCSS('css/main.css') ?>
|
||||||
<?= WebUtil::printCSS('css/map.css') ?>
|
<?= WebUtil::printCSS('css/map.css') ?>
|
||||||
<?= WebUtil::printCSS('css/processing.css') ?>
|
<?= WebUtil::printCSS('css/processing.css') ?>
|
||||||
@@ -108,24 +97,35 @@ foreach($cssList as $css){
|
|||||||
print(WebUtil::printCSS($css));
|
print(WebUtil::printCSS($css));
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'processing']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="img_back">
|
<body class="img_back">
|
||||||
<table class="tb_layout bg0" style="width:1000px;margin:auto;">
|
<table class="tb_layout bg0" style="width:1000px;margin:auto;">
|
||||||
<tr><td class="bg1" style='text-align:center;'><?=$commandObj->getName()?></td></tr>
|
<tr>
|
||||||
<tr><td>
|
<td class="bg1" style='text-align:center;'><?= $commandObj->getName() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<input type=button value='돌아가기' onclick="history.back();"><br>
|
<input type=button value='돌아가기' onclick="history.back();"><br>
|
||||||
</td></tr></table>
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
<div class="tb_layout bg0" style="width:1000px;margin:auto;padding-bottom:2em;border:solid 1px gray;">
|
<div class="tb_layout bg0" style="width:1000px;margin:auto;padding-bottom:2em;border:solid 1px gray;">
|
||||||
<?= $commandObj->getForm() ?>
|
<?= $commandObj->getForm() ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<table class="tb_layout bg0" style="width:1000px;margin:auto;">
|
<table class="tb_layout bg0" style="width:1000px;margin:auto;">
|
||||||
<tr><td>
|
<tr>
|
||||||
|
<td>
|
||||||
<input type=button value='돌아가기' onclick="history.back();"><br>
|
<input type=button value='돌아가기' onclick="history.back();"><br>
|
||||||
<?= banner() ?>
|
<?= banner() ?>
|
||||||
</td></tr></table>
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+116
-36
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -24,11 +25,32 @@ if ($con >= 2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch ($admin['tnmt_type']) {
|
switch ($admin['tnmt_type']) {
|
||||||
default: throw new \RuntimeException('invalid tnmt_type');
|
default:
|
||||||
case 0: $tnmt_type = "<font color=cyan>전력전</font>"; $tp = "total"; $tp2 = "종합"; $tp3 = "total"; break;
|
throw new \RuntimeException('invalid tnmt_type');
|
||||||
case 1: $tnmt_type = "<font color=cyan>통솔전</font>"; $tp = "leadership"; $tp2 = "통솔"; $tp3 = "leadership"; break;
|
case 0:
|
||||||
case 2: $tnmt_type = "<font color=cyan>일기토</font>"; $tp = "strength"; $tp2 = "무력"; $tp3 = "strength"; break;
|
$tnmt_type = "<font color=cyan>전력전</font>";
|
||||||
case 3: $tnmt_type = "<font color=cyan>설전</font>"; $tp = "intel"; $tp2 = "지력"; $tp3 = "intel"; break;
|
$tp = "total";
|
||||||
|
$tp2 = "종합";
|
||||||
|
$tp3 = "total";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$tnmt_type = "<font color=cyan>통솔전</font>";
|
||||||
|
$tp = "leadership";
|
||||||
|
$tp2 = "통솔";
|
||||||
|
$tp3 = "leadership";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$tnmt_type = "<font color=cyan>일기토</font>";
|
||||||
|
$tp = "strength";
|
||||||
|
$tp2 = "무력";
|
||||||
|
$tp3 = "strength";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$tnmt_type = "<font color=cyan>설전</font>";
|
||||||
|
$tp = "intel";
|
||||||
|
$tp2 = "지력";
|
||||||
|
$tp3 = "intel";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
@@ -37,18 +59,22 @@ case 3: $tnmt_type = "<font color=cyan>설전</font>"; $tp = "intel"; $tp2 = "
|
|||||||
<?php if ($con == 1) {
|
<?php if ($con == 1) {
|
||||||
MessageBox("접속제한이 얼마 남지 않았습니다! 제한량이 모자라다면 참여를 해보세요^^");
|
MessageBox("접속제한이 얼마 남지 않았습니다! 제한량이 모자라다면 참여를 해보세요^^");
|
||||||
} ?>
|
} ?>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 토너먼트</title>
|
<title><?= UniqueConst::$serverName ?>: 토너먼트</title>
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<table align=center width=2000 class='tb_layout bg0'>
|
<table align=center width=2000 class='tb_layout bg0'>
|
||||||
<tr><td>삼모전 토너먼트<br><?=closeButton()?></td></tr>
|
<tr>
|
||||||
|
<td>삼모전 토너먼트<br><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center class='tb_layout bg0'>
|
<table align=center class='tb_layout bg0'>
|
||||||
<?php
|
<?php
|
||||||
@@ -61,14 +87,30 @@ if ($session->userGrade >= 5) {
|
|||||||
<input type=button value='갱신' onclick='location.reload()'>";
|
<input type=button value='갱신' onclick='location.reload()'>";
|
||||||
|
|
||||||
switch ($admin['tnmt_trig']) {
|
switch ($admin['tnmt_trig']) {
|
||||||
case 0: $sel[0] = "selected"; break;
|
case 0:
|
||||||
case 1: $sel[1] = "selected"; break;
|
$sel[0] = "selected";
|
||||||
case 2: $sel[2] = "selected"; break;
|
break;
|
||||||
case 3: $sel[3] = "selected"; break;
|
case 1:
|
||||||
case 4: $sel[4] = "selected"; break;
|
$sel[1] = "selected";
|
||||||
case 5: $sel[5] = "selected"; break;
|
break;
|
||||||
case 6: $sel[6] = "selected"; break;
|
case 2:
|
||||||
case 7: $sel[7] = "selected"; break;
|
$sel[2] = "selected";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$sel[3] = "selected";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$sel[4] = "selected";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$sel[5] = "selected";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$sel[6] = "selected";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$sel[7] = "selected";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($admin['tournament'] == 0) {
|
if ($admin['tournament'] == 0) {
|
||||||
@@ -113,15 +155,33 @@ if ($session->userGrade >= 5) {
|
|||||||
echo "<input type=submit name=btn value='랜덤투입'>";
|
echo "<input type=submit name=btn value='랜덤투입'>";
|
||||||
echo "<input type=submit name=btn value='랜덤전부투입'>";
|
echo "<input type=submit name=btn value='랜덤전부투입'>";
|
||||||
break;
|
break;
|
||||||
case 2: echo "<input type=submit name=btn value='예선'><input type=submit name=btn value='예선전부'>"; break;
|
case 2:
|
||||||
case 3: echo "<input type=submit name=btn value='추첨'><input type=submit name=btn value='추첨전부'>"; break;
|
echo "<input type=submit name=btn value='예선'><input type=submit name=btn value='예선전부'>";
|
||||||
case 4: echo "<input type=submit name=btn value='본선'><input type=submit name=btn value='본선전부'>"; break;
|
break;
|
||||||
case 5: echo "<input type=submit name=btn value='배정'>"; break;
|
case 3:
|
||||||
case 6: echo "<input type=submit name=btn value='베팅마감'>"; break;
|
echo "<input type=submit name=btn value='추첨'><input type=submit name=btn value='추첨전부'>";
|
||||||
case 7: echo "<input type=submit name=btn value='16강'>"; break;
|
break;
|
||||||
case 8: echo "<input type=submit name=btn value='8강'>"; break;
|
case 4:
|
||||||
case 9: echo "<input type=submit name=btn value='4강'>"; break;
|
echo "<input type=submit name=btn value='본선'><input type=submit name=btn value='본선전부'>";
|
||||||
case 10: echo "<input type=submit name=btn value='결승'>"; break;
|
break;
|
||||||
|
case 5:
|
||||||
|
echo "<input type=submit name=btn value='배정'>";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
echo "<input type=submit name=btn value='베팅마감'>";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
echo "<input type=submit name=btn value='16강'>";
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
echo "<input type=submit name=btn value='8강'>";
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
echo "<input type=submit name=btn value='4강'>";
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
echo "<input type=submit name=btn value='결승'>";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
@@ -143,10 +203,23 @@ if($str3){
|
|||||||
$str3 = ', ' . $str3;
|
$str3 = ', ' . $str3;
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<tr><td colspan=8>운영자 메세지 : <font color=orange size=5><?=$admin['tnmt_msg']?></font></td></tr>
|
<tr>
|
||||||
<tr><td colspan=8 align=center><font color=white size=6><?=$tnmt_type?> (<?=$str1.$str2.$str3?>)</font></td></tr>
|
<td colspan=8>운영자 메세지 : <font color=orange size=5><?= $admin['tnmt_msg'] ?></font>
|
||||||
<tr><td colspan=8 align=center id=bg2><font color=magenta size=5>16강 승자전</font></td></tr>
|
</td>
|
||||||
<tr><td height=10 colspan=8 align=center></td></tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=8 align=center>
|
||||||
|
<font color=white size=6><?= $tnmt_type ?> (<?= $str1 . $str2 . $str3 ?>)</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=8 align=center class='bg2'>
|
||||||
|
<font color=magenta size=5>16강 승자전</font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td height=10 colspan=8 align=center></td>
|
||||||
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
@@ -398,7 +471,7 @@ if ($admin['tournament'] >= 7 || $admin['tournament'] == 0) {
|
|||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
<tr><td height=10 colspan=8 align=center></td></tr>
|
<tr><td height=10 colspan=8 align=center></td></tr>
|
||||||
<tr><td colspan=8 align=center id=bg2><font color=orange size=5>조별 본선 순위</font></td></tr>
|
<tr><td colspan=8 align=center class='bg2'><font color=orange size=5>조별 본선 순위</font></td></tr>
|
||||||
<tr>";
|
<tr>";
|
||||||
|
|
||||||
$num = array("一", "二", "三", "四", "五", "六", "七", "八");
|
$num = array("一", "二", "三", "四", "五", "六", "七", "八");
|
||||||
@@ -409,7 +482,7 @@ for ($i=0; $i < 8; $i++) {
|
|||||||
<td>
|
<td>
|
||||||
<table align=center width=250 class='tb_layout bg0'>
|
<table align=center width=250 class='tb_layout bg0'>
|
||||||
<tr><td colspan=9 style=background-color:black;>{$num[$i]}조</td></tr>
|
<tr><td colspan=9 style=background-color:black;>{$num[$i]}조</td></tr>
|
||||||
<tr id=bg1><td align=center>순</td><td align=center>장수</td><td align=center>{$tp2}</td><td align=center>경</td><td align=center>승</td><td align=center>무</td><td align=center>패</td><td align=center>점</td><td align=center>득</td></tr>";
|
<tr class='bg1'><td align=center>순</td><td align=center>장수</td><td align=center>{$tp2}</td><td align=center>경</td><td align=center>승</td><td align=center>무</td><td align=center>패</td><td align=center>점</td><td align=center>득</td></tr>";
|
||||||
|
|
||||||
$generalList = $db->query('SELECT npc,name,leadership,strength,intel,leadership+strength+intel as total,prmt,win+draw+lose as game,win,draw,lose,gl,win*3+draw as gd from tournament where grp=%i order by gd desc, gl desc, seq', $grp);
|
$generalList = $db->query('SELECT npc,name,leadership,strength,intel,leadership+strength+intel as total,prmt,win+draw+lose as game,win,draw,lose,gl,win*3+draw as gd from tournament where grp=%i order by gd desc, gl desc, seq', $grp);
|
||||||
foreach ($generalList as $k => $general) {
|
foreach ($generalList as $k => $general) {
|
||||||
@@ -427,7 +500,7 @@ if ($admin['tournament'] == 4 || $admin['tournament'] == 5) {
|
|||||||
printFighting($admin['tournament'], $admin['phase']);
|
printFighting($admin['tournament'], $admin['phase']);
|
||||||
}
|
}
|
||||||
echo "
|
echo "
|
||||||
<tr><td colspan=8 align=center id=bg2><font color=yellow size=5>조별 예선 순위</font></td></tr>
|
<tr><td colspan=8 align=center class='bg2'><font color=yellow size=5>조별 예선 순위</font></td></tr>
|
||||||
<tr>";
|
<tr>";
|
||||||
|
|
||||||
for ($i = 0; $i < 8; $i++) {
|
for ($i = 0; $i < 8; $i++) {
|
||||||
@@ -436,7 +509,7 @@ for ($i=0; $i < 8; $i++) {
|
|||||||
<td>
|
<td>
|
||||||
<table align=center width=250 class='tb_layout bg0'>
|
<table align=center width=250 class='tb_layout bg0'>
|
||||||
<tr><td colspan=9 style=background-color:black;>{$num[$i]}조</td></tr>
|
<tr><td colspan=9 style=background-color:black;>{$num[$i]}조</td></tr>
|
||||||
<tr id=bg1><td align=center>순</td><td align=center>장수</td><td align=center>{$tp2}</td><td align=center>경</td><td align=center>승</td><td align=center>무</td><td align=center>패</td><td align=center>점</td><td align=center>득</td></tr>";
|
<tr class='bg1'><td align=center>순</td><td align=center>장수</td><td align=center>{$tp2}</td><td align=center>경</td><td align=center>승</td><td align=center>무</td><td align=center>패</td><td align=center>점</td><td align=center>득</td></tr>";
|
||||||
|
|
||||||
$generalList = $db->query('SELECT npc,name,leadership,strength,intel,leadership+strength+intel as total,prmt,win+draw+lose as game,win,draw,lose,gl,win*3+draw as gd from tournament where grp=%i order by gd desc, gl desc, seq', $grp);
|
$generalList = $db->query('SELECT npc,name,leadership,strength,intel,leadership+strength+intel as total,prmt,win+draw+lose as game,win,draw,lose,gl,win*3+draw as gd from tournament where grp=%i order by gd desc, gl desc, seq', $grp);
|
||||||
foreach ($generalList as $k => $general) {
|
foreach ($generalList as $k => $general) {
|
||||||
@@ -456,7 +529,8 @@ if ($admin['tournament'] == 2 || $admin['tournament'] == 3) {
|
|||||||
|
|
||||||
?>
|
?>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td colspan=8>
|
<tr>
|
||||||
|
<td colspan=8>
|
||||||
<font color=white size=2>
|
<font color=white size=2>
|
||||||
ㆍ예선은 홈&어웨이 풀리그로 진행됩니다. (총 14경기)<br>
|
ㆍ예선은 홈&어웨이 풀리그로 진행됩니다. (총 14경기)<br>
|
||||||
ㆍ상위 4명이 본선에 진출하게 되며 조추첨을 통해 조가 배정됩니다.<br>
|
ㆍ상위 4명이 본선에 진출하게 되며 조추첨을 통해 조가 배정됩니다.<br>
|
||||||
@@ -469,11 +543,17 @@ if ($admin['tournament'] == 2 || $admin['tournament'] == 3) {
|
|||||||
ㆍ16강자 100, 8강자 300, 4강자 600, 준우승자 1200, 우승자 2000 (220년 기준)<br>
|
ㆍ16강자 100, 8강자 300, 4강자 600, 준우승자 1200, 우승자 2000 (220년 기준)<br>
|
||||||
ㆍ즐거운 삼토!
|
ㆍ즐거운 삼토!
|
||||||
</font>
|
</font>
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table align=center width=2000 class='tb_layout bg0'>
|
<table align=center width=2000 class='tb_layout bg0'>
|
||||||
<tr><td><?=closeButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= closeButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+45
-30
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -24,8 +25,7 @@ foreach($db->query('SELECT troop_leader,name FROM troop WHERE nation = %i', $me[
|
|||||||
foreach ($db->query(
|
foreach ($db->query(
|
||||||
'SELECT no,name,turntime,troop,city FROM general WHERE troop!=0 AND nation = %i ORDER BY turntime ASC',
|
'SELECT no,name,turntime,troop,city FROM general WHERE troop!=0 AND nation = %i ORDER BY turntime ASC',
|
||||||
$me['nation']
|
$me['nation']
|
||||||
) as $general
|
) as $general) {
|
||||||
){
|
|
||||||
if (!key_exists($general['troop'], $troops)) {
|
if (!key_exists($general['troop'], $troops)) {
|
||||||
trigger_error("올바르지 않은 부대 소속 {$general['no']}, {$general['name']} : {$general['troop']}");
|
trigger_error("올바르지 않은 부대 소속 {$general['no']}, {$general['name']} : {$general['troop']}");
|
||||||
continue;
|
continue;
|
||||||
@@ -46,8 +46,7 @@ if($troops){
|
|||||||
foreach ($db->queryAllLists(
|
foreach ($db->queryAllLists(
|
||||||
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
|
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
|
||||||
array_column($troopLeaders, 'no')
|
array_column($troopLeaders, 'no')
|
||||||
) as [$generalID, $turnIdx, $brief]
|
) as [$generalID, $turnIdx, $brief]) {
|
||||||
){
|
|
||||||
if (!key_exists($generalID, $generalTurnList)) {
|
if (!key_exists($generalID, $generalTurnList)) {
|
||||||
$generalTurnList[$generalID] = [];
|
$generalTurnList[$generalID] = [];
|
||||||
}
|
}
|
||||||
@@ -80,29 +79,24 @@ uasort($troops, function($lhs, $rhs){
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<title><?= UniqueConst::$serverName ?>: 부대편성</title>
|
<title><?= UniqueConst::$serverName ?>: 부대편성</title>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/troop.js')?>
|
|
||||||
<?=WebUtil::printJS('js/ext.plugin_troop.js')?>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?=WebUtil::printCSS('css/troops.css')?>
|
<?= WebUtil::printDist('ts', ['common', 'troop'], true) ?>
|
||||||
<script>
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div style="width:1000px;margin:auto;">
|
<div style="width:1000px;margin:auto;">
|
||||||
<table width=1000 class='tb_layout bg0'>
|
<table width=1000 class='tb_layout bg0'>
|
||||||
<tr><td>부 대 편 성<br><?=backButton()?></td></tr>
|
<tr>
|
||||||
|
<td>부 대 편 성<br><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table id="troop_list" class='tb_layout bg0'>
|
<table id="troop_list" class='tb_layout bg0'>
|
||||||
<thead>
|
<thead>
|
||||||
@@ -114,14 +108,18 @@ uasort($troops, function($lhs, $rhs){
|
|||||||
<td width=130 class='bg1 center' style=table-layout:fixed;word-break:break-all;>부대장행동</td>
|
<td width=130 class='bg1 center' style=table-layout:fixed;word-break:break-all;>부대장행동</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tfoot><tr><td colspan='5'>
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<td colspan='5'>
|
||||||
<?php if (!$troops) : ?>
|
<?php if (!$troops) : ?>
|
||||||
<?php elseif ($me['troop'] == 0) : ?>
|
<?php elseif ($me['troop'] == 0) : ?>
|
||||||
<input type=button id='btnJoinTroop' value='부 대 가 입'>
|
<input type=button id='btnJoinTroop' value='부 대 가 입'>
|
||||||
<?php else : ?>
|
<?php else : ?>
|
||||||
<input type=button id="btnLeaveTroop" value='부 대 탈 퇴'>
|
<input type=button id="btnLeaveTroop" value='부 대 탈 퇴'>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</td></tr></tfoot>
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
<tbody>
|
<tbody>
|
||||||
<?php
|
<?php
|
||||||
foreach ($troops as $troopNo => $troop) {
|
foreach ($troops as $troopNo => $troop) {
|
||||||
@@ -155,9 +153,15 @@ foreach ($troops as $troopNo=>$troop) {
|
|||||||
<td rowspan=2><?= $troopLeader['turnText'] ?></td>
|
<td rowspan=2><?= $troopLeader['turnText'] ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center><font size=2>【턴】 <?=substr($troopLeader['turntime'], 14, 5)?></font></td>
|
<td align=center>
|
||||||
<td align=center><font size=1><?=$troopLeader['name']?></font></td></tr>
|
<font size=2>【턴】 <?= substr($troopLeader['turntime'], 14, 5) ?></font>
|
||||||
<tr><td colspan=5>
|
</td>
|
||||||
|
<td align=center>
|
||||||
|
<font size=1><?= $troopLeader['name'] ?></font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=5>
|
||||||
|
|
||||||
<?php else : ?>
|
<?php else : ?>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -167,7 +171,7 @@ foreach ($troops as $troopNo=>$troop) {
|
|||||||
<td rowspan=2 width=62><?= $genlistText ?></td>
|
<td rowspan=2 width=62><?= $genlistText ?></td>
|
||||||
<td rowspan=2>
|
<td rowspan=2>
|
||||||
<?php if ($me['no'] == $troopLeader['no']) : ?>
|
<?php if ($me['no'] == $troopLeader['no']) : ?>
|
||||||
<select id='genNo' name=gen size=3 style=color:white;background-color:black;font-size:13px;width:128px;>";
|
<select id='genNo' name=gen size=3 style=color:white;background-color:black;font-size:14px;width:128px;>";
|
||||||
<?php foreach ($troop['users'] as $troopUser) : ?>
|
<?php foreach ($troop['users'] as $troopUser) : ?>
|
||||||
<?php if ($troopUser['no'] == $me['no']) {
|
<?php if ($troopUser['no'] == $me['no']) {
|
||||||
continue;
|
continue;
|
||||||
@@ -181,11 +185,18 @@ foreach ($troops as $troopNo=>$troop) {
|
|||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td align=center><font size=2>【턴】 <?=substr($troopLeader['turntime'], 14, 5)?></font></td>
|
<tr>
|
||||||
<td align=center><font size=1><?=$troopLeader['name']?></font></td></tr>
|
<td align=center>
|
||||||
<tr><td colspan=5></td></tr>
|
<font size=2>【턴】 <?= substr($troopLeader['turntime'], 14, 5) ?></font>
|
||||||
|
</td>
|
||||||
|
<td align=center>
|
||||||
|
<font size=1><?= $troopLeader['name'] ?></font>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=5></td>
|
||||||
|
</tr>
|
||||||
<?php endif;
|
<?php endif;
|
||||||
|
|
||||||
} //foreach ($troops as $troopNo=>$troop) {
|
} //foreach ($troops as $troopNo=>$troop) {
|
||||||
?>
|
?>
|
||||||
|
|
||||||
@@ -195,7 +206,7 @@ foreach ($troops as $troopNo=>$troop) {
|
|||||||
<br>
|
<br>
|
||||||
<table width=1000 class='tb_layout bg0'>
|
<table width=1000 class='tb_layout bg0'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=80 id=bg1>부 대 명</td>
|
<td width=80 class='bg1'>부 대 명</td>
|
||||||
<td width=130><input type=text style=color:white;background-color:black; size=18 maxlength=18 id='nameplate'></td>
|
<td width=130><input type=text style=color:white;background-color:black; size=18 maxlength=18 id='nameplate'></td>
|
||||||
<?php if ($me['troop'] == 0) : ?>
|
<?php if ($me['troop'] == 0) : ?>
|
||||||
<td><input type=button id='btnCreateTroop' value='부 대 창 설'></td>
|
<td><input type=button id='btnCreateTroop' value='부 대 창 설'></td>
|
||||||
@@ -206,10 +217,14 @@ foreach ($troops as $troopNo=>$troop) {
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table width=1000 class='tb_layout bg0'>
|
<table width=1000 class='tb_layout bg0'>
|
||||||
<tr><td><?=backButton()?></td></tr>
|
<tr>
|
||||||
<tr><td><?=banner()?> </td></tr>
|
<td><?= backButton() ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?= banner() ?> </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
|
||||||
|
|
||||||
|
</html>
|
||||||
+143
-171
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -18,8 +19,7 @@ if($me){
|
|||||||
$generalID = $me['no'];
|
$generalID = $me['no'];
|
||||||
$nationID = $me['nation'];
|
$nationID = $me['nation'];
|
||||||
$city = $db->queryFirstRow('SELECT city, level, def, wall FROM city WHERE city = %i', $me['city']);
|
$city = $db->queryFirstRow('SELECT city, level, def, wall FROM city WHERE city = %i', $me['city']);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$generalID = 0;
|
$generalID = 0;
|
||||||
$nationID = 0;
|
$nationID = 0;
|
||||||
$city = [
|
$city = [
|
||||||
@@ -32,36 +32,31 @@ else{
|
|||||||
|
|
||||||
if ($nationID) {
|
if ($nationID) {
|
||||||
$nation = $db->queryFirstRow('SELECT level, type, tech, capital FROM nation WHERE nation = %i', $nationID);
|
$nation = $db->queryFirstRow('SELECT level, type, tech, capital FROM nation WHERE nation = %i', $nationID);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$nation = null;
|
$nation = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title><?= UniqueConst::$serverName ?>: 전투 시뮬레이터</title>
|
<title><?= UniqueConst::$serverName ?>: 전투 시뮬레이터</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1100" />
|
<meta name="viewport" content="width=1100" />
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?= WebUtil::printCSS('css/battle_simulator.css') ?>
|
<?= WebUtil::printCSS('css/battle_simulator.css') ?>
|
||||||
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/moment.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/download2.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<script>
|
<script>
|
||||||
var defaultSpecialDomestic = '<?= GameConst::$defaultSpecialDomestic ?>';
|
var defaultSpecialDomestic = '<?= GameConst::$defaultSpecialDomestic ?>';
|
||||||
var city = <?= Json::encode($city) ?>;
|
var city = <?= Json::encode($city) ?>;
|
||||||
var nation = <?= Json::encode($nation) ?>;
|
var nation = <?= Json::encode($nation) ?>;
|
||||||
</script>
|
</script>
|
||||||
<?=WebUtil::printJS('js/battle_simulator.js')?>
|
<?= WebUtil::printDist('ts', ['common', 'battle_simulator']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div id="container">
|
<div id="container">
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
@@ -73,34 +68,28 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="number" class="form-control" aria-describedby="text_year" value="<?= $startYear ?>" disabled>
|
<input type="number" class="form-control" aria-describedby="text_year" value="<?= $startYear ?>" disabled>
|
||||||
<div class="input-group-append">
|
<div class="input-group-text"> 년 시작 </div>
|
||||||
<span class="input-group-text">년 시작</span>
|
|
||||||
</div>
|
|
||||||
<input type="number" class="form-control" id="year" value="<?= $year ?>" min="<?= $startYear ?>">
|
<input type="number" class="form-control" id="year" value="<?= $year ?>" min="<?= $startYear ?>">
|
||||||
<div class="input-group-append">
|
<div class="input-group-text"> 년 </div>
|
||||||
<span class="input-group-text">년</span>
|
|
||||||
</div>
|
|
||||||
<input type="number" class="form-control" id="month" value="1" min="1" max="12">
|
<input type="number" class="form-control" id="month" value="1" min="1" max="12">
|
||||||
<div class="input-group-append">
|
<div class="input-group-text"> 월 </div>
|
||||||
<span class="input-group-text">월</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="btn-toolbar" role="toolbar">
|
<div class="btn-toolbar" role="toolbar">
|
||||||
<div class="input-group mr-2" role="group">
|
<div class="input-group me-2" role="group">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">
|
||||||
<span class="input-group-text">반복 횟수</span>
|
반복 횟수
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select" id="repeat_cnt">
|
<select class="form-select" id="repeat_cnt">
|
||||||
<option value="1">1회 (로그 표기)</option>
|
<option value="1">1회 (로그 표기)</option>
|
||||||
<option value="1000">1000회 (요약 표기)</option>
|
<option value="1000">1000회 (요약 표기)</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group mr-2" role="group">
|
<div class="btn-group me-2" role="group">
|
||||||
<button type="button" class="btn btn-danger btn-begin_battle">전투</button>
|
<button type="button" class="btn btn-danger btn-begin_battle">전투</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group mr-2" role="group">
|
<div class="btn-group me-2" role="group">
|
||||||
<button type="button" class="btn btn-info btn-battle-save">모두 저장</button>
|
<button type="button" class="btn btn-info btn-battle-save">모두 저장</button>
|
||||||
<input type="file" class="form_load_battle_file" accept=".json" style="display: none;" />
|
<input type="file" class="form_load_battle_file" accept=".json" style="display: none;" />
|
||||||
<button type="button" class="btn btn-primary btn-battle-load">모두 불러오기</button>
|
<button type="button" class="btn btn-primary btn-battle-load">모두 불러오기</button>
|
||||||
@@ -118,50 +107,40 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-body nation_detail dragpad_battle">
|
<div class="card-body nation_detail dragpad_battle">
|
||||||
<div class="input-group mb-1">
|
<div class="input-group mb-1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">국가 성향
|
||||||
<span class="input-group-text">국가 성향</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_nation_type" style="width:25ch;">
|
<select class="form-select form_nation_type" style="width:25ch;">
|
||||||
<?php foreach (GameConst::$availableNationType as $typeID) : ?>
|
<?php foreach (GameConst::$availableNationType as $typeID) : ?>
|
||||||
<?php $nationTypeClass = buildNationTypeClass($typeID) ?>
|
<?php $nationTypeClass = buildNationTypeClass($typeID) ?>
|
||||||
<option value="<?= $typeID ?>"><?= $nationTypeClass->getName() ?> (<?= $nationTypeClass::$pros ?>, <?= $nationTypeClass::$cons ?>)</option>
|
<option value="<?= $typeID ?>"><?= $nationTypeClass->getName() ?> (<?= $nationTypeClass::$pros ?>, <?= $nationTypeClass::$cons ?>)</option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">기술 </div>
|
||||||
<span class="input-group-text">기술</span>
|
|
||||||
</div>
|
|
||||||
<input type="number" class="form-control form_tech" value="1" min="0" max="12">
|
<input type="number" class="form-control form_tech" value="1" min="0" max="12">
|
||||||
<div class="input-group-append">
|
<div class="input-group-text">등급 </div>
|
||||||
<span class="input-group-text">등급</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group mb-3">
|
<div class="input-group mb-3">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">국가 규모 </div>
|
||||||
<span class="input-group-text">국가 규모</span>
|
<select class="form-select form_nation_level">
|
||||||
</div>
|
|
||||||
<select class="custom-select form_nation_level">
|
|
||||||
<?php foreach (getNationLevelList() as $nationLevel => [$name, $chiefCnt, $cityCnt]) : ?>
|
<?php foreach (getNationLevelList() as $nationLevel => [$name, $chiefCnt, $cityCnt]) : ?>
|
||||||
<option value="<?= $nationLevel ?>"><?= $name ?></option>
|
<option value="<?= $nationLevel ?>"><?= $name ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">도시 규모
|
||||||
<span class="input-group-text">도시 규모</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_city_level">
|
<select class="form-select form_city_level">
|
||||||
<?php foreach (getCityLevelList() as $levelID => $name) : ?>
|
<?php foreach (getCityLevelList() as $levelID => $name) : ?>
|
||||||
<option value="<?= $levelID ?>"><?= $name ?></option>
|
<option value="<?= $levelID ?>"><?= $name ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">수도
|
||||||
<span class="input-group-text">수도</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group-append btn-group btn-group-toggle" data-toggle="buttons">
|
<div class="btn-group" role="group" aria-label="수도">
|
||||||
<label class="btn btn-secondary">
|
<input type="radio" class="btn-check" name="is_attacker_capital" value="1" id="is_attacker_capital_1" autocomplete="off">
|
||||||
<input type="radio" name="is_attacker_capital" class="form_is_capital" value="1" autocomplete="off">Y
|
<label class="btn btn-secondary" for="is_attacker_capital_1">Y</label>
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary active">
|
<input type="radio" class="btn-check" name="is_attacker_capital" value="0" id="is_attacker_capital_0" autocomplete="off" checked>
|
||||||
<input type="radio" name="is_attacker_capital" class="form_is_capital" value="0" autocomplete="off">N
|
<label class="btn btn-secondary" for="is_attacker_capital_0">N</label>
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -172,12 +151,12 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
</div>
|
</div>
|
||||||
<div class="card mb-2 attacker_form general_form" data-general_no='1'>
|
<div class="card mb-2 attacker_form general_form" data-general_no='1'>
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="float-sm-left" style="line-height:25px;">출병자 설정</div>
|
<div class="float-sm-start" style="line-height:25px;">출병자 설정</div>
|
||||||
<div class="float-sm-right btn-toolbar" role="toolbar">
|
<div class="float-sm-end btn-toolbar" role="toolbar">
|
||||||
<div class="btn-group btn-group-sm mr-2" role="group">
|
<div class="btn-group btn-group-sm me-2" role="group">
|
||||||
<button type="button" class="btn btn-success btn-general-import-server">서버에서 가져오기</button>
|
<button type="button" class="btn btn-success btn-general-import-server">서버에서 가져오기</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group btn-group-sm mr-2" role="group">
|
<div class="btn-group btn-group-sm me-2" role="group">
|
||||||
<button type="button" class="btn btn-info btn-general-save">저장</button>
|
<button type="button" class="btn btn-info btn-general-save">저장</button>
|
||||||
<input type="file" class="form_load_general_file" accept=".json" style="display: none;" />
|
<input type="file" class="form_load_general_file" accept=".json" style="display: none;" />
|
||||||
<button type="button" class="btn btn-primary btn-general-load">불러오기</button>
|
<button type="button" class="btn btn-primary btn-general-load">불러오기</button>
|
||||||
@@ -193,59 +172,50 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-body dragpad_battle">
|
<div class="card-body dragpad_battle">
|
||||||
<div class="input-group mb-1">
|
<div class="input-group mb-1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">국가 성향
|
||||||
<span class="input-group-text">국가 성향</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_nation_type" style="width:25ch;">
|
<select class="form-select form_nation_type" style="width:25ch;">
|
||||||
<?php foreach (GameConst::$availableNationType as $typeID) : ?>
|
<?php foreach (GameConst::$availableNationType as $typeID) : ?>
|
||||||
<?php $nationTypeObj = buildNationTypeClass($typeID) ?>
|
<?php $nationTypeObj = buildNationTypeClass($typeID) ?>
|
||||||
<option value="<?= $typeID ?>"><?= $nationTypeObj->getName() ?> (<?= $nationTypeObj::$pros ?>, <?= $nationTypeObj::$cons ?>)</option>
|
<option value="<?= $typeID ?>"><?= $nationTypeObj->getName() ?> (<?= $nationTypeObj::$pros ?>, <?= $nationTypeObj::$cons ?>)</option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">기술
|
||||||
<span class="input-group-text">기술</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_tech" value="1" min="0" max="12">
|
<input type="number" class="form-control form_tech" value="1" min="0" max="12">
|
||||||
<div class="input-group-append">
|
<div class="input-group-text">등급
|
||||||
<span class="input-group-text">등급</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group mb-3">
|
<div class="input-group mb-3">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">국가 규모
|
||||||
<span class="input-group-text">국가 규모</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_nation_level">
|
<select class="form-select form_nation_level">
|
||||||
<?php foreach (getNationLevelList() as $nationLevel => [$name, $chiefCnt, $cityCnt]) : ?>
|
<?php foreach (getNationLevelList() as $nationLevel => [$name, $chiefCnt, $cityCnt]) : ?>
|
||||||
<option value="<?= $nationLevel ?>"><?= $name ?></option>
|
<option value="<?= $nationLevel ?>"><?= $name ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">도시 규모
|
||||||
<span class="input-group-text">도시 규모</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_city_level">
|
<select class="form-select form_city_level">
|
||||||
<?php foreach (getCityLevelList() as $levelID => $name) : ?>
|
<?php foreach (getCityLevelList() as $levelID => $name) : ?>
|
||||||
<option value="<?= $levelID ?>"><?= $name ?></option>
|
<option value="<?= $levelID ?>"><?= $name ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">수도
|
||||||
<span class="input-group-text">수도</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group-append btn-group btn-group-toggle" data-toggle="buttons">
|
<div class="btn-group" role="group" aria-label="수도">
|
||||||
<label class="btn btn-secondary">
|
<input type="radio" class="btn-check" name="is_defender_capital" value="1" id="is_defender_capital_1" autocomplete="off">
|
||||||
<input type="radio" name="is_defender_capital" class="form_is_capital" value="1" autocomplete="off">Y
|
<label class="btn btn-secondary" for="is_defender_capital_1">Y</label>
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary active">
|
<input type="radio" class="btn-check" name="is_defender_capital" value="0" id="is_defender_capital_0" autocomplete="off" checked>
|
||||||
<input type="radio" name="is_defender_capital" class="form_is_capital" value="0" autocomplete="off">N
|
<label class="btn btn-secondary" for="is_defender_capital_0">N</label>
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group mb-1">
|
<div class="input-group mb-1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">수비
|
||||||
<span class="input-group-text">수비</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_def" id="city_def" value="1000" min="10" step="10">
|
<input type="number" class="form-control form_def" id="city_def" value="1000" min="10" step="10">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">성벽
|
||||||
<span class="input-group-text">성벽</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_wall" id="city_wall" value="1000" min="0" step="10">
|
<input type="number" class="form-control form_wall" id="city_wall" value="1000" min="0" step="10">
|
||||||
</div>
|
</div>
|
||||||
@@ -253,9 +223,9 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
</div>
|
</div>
|
||||||
<div class="card mb-2 defender_add_form">
|
<div class="card mb-2 defender_add_form">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="float-sm-left" style="line-height:25px;">수비자 설정</div>
|
<div class="float-sm-start" style="line-height:25px;">수비자 설정</div>
|
||||||
<div class="float-sm-right btn-toolbar" role="toolbar">
|
<div class="float-sm-end btn-toolbar" role="toolbar">
|
||||||
<div class="btn-group btn-group-sm mr-2" role="group">
|
<div class="btn-group btn-group-sm me-2" role="group">
|
||||||
<button type="button" class="btn btn-dark btn-reorder_defender">수비 순서대로 정렬</button>
|
<button type="button" class="btn btn-dark btn-reorder_defender">수비 순서대로 정렬</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group btn-group-sm" role="group">
|
<div class="btn-group btn-group-sm" role="group">
|
||||||
@@ -266,12 +236,12 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
</div>
|
</div>
|
||||||
<div class="card mb-2 form_sample">
|
<div class="card mb-2 form_sample">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="float-sm-left" style="line-height:25px;">수비자 설정</div>
|
<div class="float-sm-start" style="line-height:25px;">수비자 설정</div>
|
||||||
<div class="float-sm-right btn-toolbar" role="toolbar">
|
<div class="float-sm-end btn-toolbar" role="toolbar">
|
||||||
<div class="btn-group btn-group-sm mr-2" role="group">
|
<div class="btn-group btn-group-sm me-2" role="group">
|
||||||
<button type="button" class="btn btn-success btn-general-import-server">서버에서 가져오기</button>
|
<button type="button" class="btn btn-success btn-general-import-server">서버에서 가져오기</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group btn-group-sm mr-2" role="group">
|
<div class="btn-group btn-group-sm me-2" role="group">
|
||||||
<button type="button" class="btn btn-info btn-general-save">저장</button>
|
<button type="button" class="btn btn-info btn-general-save">저장</button>
|
||||||
<input type="file" class="form_load_general_file" accept=".json" style="display: none;" />
|
<input type="file" class="form_load_general_file" accept=".json" style="display: none;" />
|
||||||
<button type="button" class="btn btn-primary btn-general-load">불러오기</button>
|
<button type="button" class="btn btn-primary btn-general-load">불러오기</button>
|
||||||
@@ -284,14 +254,12 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-body general_detail">
|
<div class="card-body general_detail">
|
||||||
<div class="input-group mb-3">
|
<div class="input-group mb-3">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">이름
|
||||||
<span class="input-group-text">이름</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="text" class="form-control form_general_name" value="무명" style="width:15ch;">
|
<input type="text" class="form-control form_general_name" value="무명" style="width:15ch;">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">직위
|
||||||
<span class="input-group-text">직위</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_officer_level" style="width:8ch;">
|
<select class="form-select form_officer_level" style="width:8ch;">
|
||||||
<option value="1">일반</option>
|
<option value="1">일반</option>
|
||||||
<option value="4">태수</option>
|
<option value="4">태수</option>
|
||||||
<option value="3">군사</option>
|
<option value="3">군사</option>
|
||||||
@@ -301,49 +269,42 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
<option value="11">참모</option>
|
<option value="11">참모</option>
|
||||||
<option value="12">군주</option>
|
<option value="12">군주</option>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">Level
|
||||||
<span class="input-group-text">Level</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_exp_level" value="20" min="0" max="300" step="1">
|
<input type="number" class="form-control form_exp_level" value="20" min="0" max="300" step="1">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group mb-1">
|
<div class="input-group mb-1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">통솔
|
||||||
<span class="input-group-text">통솔</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_leadership" value="50" min="1" max="300" step="1">
|
<input type="number" class="form-control form_leadership" value="50" min="1" max="300" step="1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">무력
|
||||||
<span class="input-group-text">무력</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_strength" value="50" min="1" max="300" step="1">
|
<input type="number" class="form-control form_strength" value="50" min="1" max="300" step="1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">지력
|
||||||
<span class="input-group-text">지력</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_intel" value="50" min="1" max="300" step="1">
|
<input type="number" class="form-control form_intel" value="50" min="1" max="300" step="1">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group mb-1">
|
<div class="input-group mb-1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">명마
|
||||||
<span class="input-group-text">명마</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_general_horse">
|
<select class="form-select form_general_horse">
|
||||||
<option value='None'>-</option>
|
<option value='None'>-</option>
|
||||||
<?php foreach (GameConst::$allItems['horse'] as $horseID => $cnt) : ?>
|
<?php foreach (GameConst::$allItems['horse'] as $horseID => $cnt) : ?>
|
||||||
<option value="<?= $horseID ?>"><?= getItemName($horseID) ?></option>
|
<option value="<?= $horseID ?>"><?= getItemName($horseID) ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">무기
|
||||||
<span class="input-group-text">무기</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_general_weap">
|
<select class="form-select form_general_weap">
|
||||||
<option value='None'>-</option>
|
<option value='None'>-</option>
|
||||||
<?php foreach (GameConst::$allItems['weapon'] as $weaponID => $cnt) : ?>
|
<?php foreach (GameConst::$allItems['weapon'] as $weaponID => $cnt) : ?>
|
||||||
<option value="<?= $weaponID ?>"><?= getItemName($weaponID) ?></option>
|
<option value="<?= $weaponID ?>"><?= getItemName($weaponID) ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">서적
|
||||||
<span class="input-group-text">서적</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_general_book">
|
<select class="form-select form_general_book">
|
||||||
<option value='None'>-</option>
|
<option value='None'>-</option>
|
||||||
<?php foreach (GameConst::$allItems['book'] as $bookID => $cnt) : ?>
|
<?php foreach (GameConst::$allItems['book'] as $bookID => $cnt) : ?>
|
||||||
<option value="<?= $bookID ?>"><?= getItemName($bookID) ?></option>
|
<option value="<?= $bookID ?>"><?= getItemName($bookID) ?></option>
|
||||||
@@ -351,21 +312,17 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group mb-3">
|
<div class="input-group mb-3">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">부상
|
||||||
<span class="input-group-text">부상</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_injury" value="0" min="0" max="80" step="1">
|
<input type="number" class="form-control form_injury" value="0" min="0" max="80" step="1">
|
||||||
<div class="input-group-append">
|
<div class="input-group-text">%(<span class="injury_helptext">건강</span>)
|
||||||
<span class="input-group-text">%(<span class="injury_helptext">건강</span>)</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">군량
|
||||||
<span class="input-group-text">군량</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_rice" value="5000" min="50" max="40000" step="50">
|
<input type="number" class="form-control form_rice" value="5000" min="50" max="40000" step="50">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">도구
|
||||||
<span class="input-group-text">도구</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_general_item">
|
<select class="form-select form_general_item">
|
||||||
<option value='None'>-</option>
|
<option value='None'>-</option>
|
||||||
<?php foreach (GameConst::$allItems['item'] as $itemID => $cnt) : ?>
|
<?php foreach (GameConst::$allItems['item'] as $itemID => $cnt) : ?>
|
||||||
<option value="<?= $itemID ?>"><?= getItemName($itemID) ?></option>
|
<option value="<?= $itemID ?>"><?= getItemName($itemID) ?></option>
|
||||||
@@ -373,93 +330,83 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group mb-1">
|
<div class="input-group mb-1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">병종
|
||||||
<span class="input-group-text">병종</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_crewtype">
|
<select class="form-select form_crewtype">
|
||||||
<?php foreach (GameUnitConst::all() as $crewTypeID => $crewType) : ?>
|
<?php foreach (GameUnitConst::all() as $crewTypeID => $crewType) : ?>
|
||||||
<?php if($crewType->armType === GameUnitConst::T_CASTLE){ continue; } ?>
|
<?php if ($crewType->armType === GameUnitConst::T_CASTLE) {
|
||||||
|
continue;
|
||||||
|
} ?>
|
||||||
<option value="<?= $crewTypeID ?>"><?= $crewType->name ?></option>
|
<option value="<?= $crewTypeID ?>"><?= $crewType->name ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">병사
|
||||||
<span class="input-group-text">병사</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_crew" value="7000" min="100" step="100">
|
<input type="number" class="form-control form_crew" value="7000" min="100" step="100">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">성격
|
||||||
<span class="input-group-text">성격</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_general_character">
|
<select class="form-select form_general_character">
|
||||||
<?php foreach (getCharacterList(false) as $characterID => [$name, $info]) : ?>
|
<?php foreach (getCharacterList(false) as $characterID => [$name, $info]) : ?>
|
||||||
<option value="<?= $characterID ?>"><?= $name ?></option>
|
<option value="<?= $characterID ?>"><?= $name ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group mb-3">
|
<div class="input-group mb-3">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">훈련
|
||||||
<span class="input-group-text">훈련</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_train" value="100" min="40" max="<?= GameConst::$maxTrainByWar ?>" step="1">
|
<input type="number" class="form-control form_train" value="100" min="40" max="<?= GameConst::$maxTrainByWar ?>" step="1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">사기
|
||||||
<span class="input-group-text">사기</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_atmos" value="100" min="40" max="<?= GameConst::$maxAtmosByWar ?>" step="1">
|
<input type="number" class="form-control form_atmos" value="100" min="40" max="<?= GameConst::$maxAtmosByWar ?>" step="1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">전특
|
||||||
<span class="input-group-text">전특</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_general_special_war">
|
<select class="form-select form_general_special_war">
|
||||||
<?php foreach (SpecialityHelper::getSpecialWarList(false) as $specialWarID => $specialObj) : ?>
|
<?php foreach (SpecialityHelper::getSpecialWarList(false) as $specialWarID => $specialObj) : ?>
|
||||||
<option value="<?= $specialWarID ?>"><?= $specialObj->getName() ?></option>
|
<option value="<?= $specialWarID ?>"><?= $specialObj->getName() ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group mb-1">
|
<div class="input-group mb-1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">보병숙련
|
||||||
<span class="input-group-text">보병숙련</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_dex1">
|
<select class="form-select form_dex1">
|
||||||
<?php foreach (getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]) : ?>
|
<?php foreach (getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]) : ?>
|
||||||
<option value="<?= $dexAmount ?>"><?= "{$name} (" . number_format($dexAmount) . ")" ?></option>
|
<option value="<?= $dexAmount ?>"><?= "{$name} (" . number_format($dexAmount) . ")" ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">궁병숙련
|
||||||
<span class="input-group-text">궁병숙련</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_dex2">
|
<select class="form-select form_dex2">
|
||||||
<?php foreach (getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]) : ?>
|
<?php foreach (getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]) : ?>
|
||||||
<option value="<?= $dexAmount ?>"><?= "{$name} (" . number_format($dexAmount) . ")" ?></option>
|
<option value="<?= $dexAmount ?>"><?= "{$name} (" . number_format($dexAmount) . ")" ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">기병숙련
|
||||||
<span class="input-group-text">기병숙련</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_dex3">
|
<select class="form-select form_dex3">
|
||||||
<?php foreach (getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]) : ?>
|
<?php foreach (getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]) : ?>
|
||||||
<option value="<?= $dexAmount ?>"><?= "{$name} (" . number_format($dexAmount) . ")" ?></option>
|
<option value="<?= $dexAmount ?>"><?= "{$name} (" . number_format($dexAmount) . ")" ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group mb-3">
|
<div class="input-group mb-3">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">귀병숙련
|
||||||
<span class="input-group-text">귀병숙련</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_dex4">
|
<select class="form-select form_dex4">
|
||||||
<?php foreach (getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]) : ?>
|
<?php foreach (getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]) : ?>
|
||||||
<option value="<?= $dexAmount ?>"><?= "{$name} (" . number_format($dexAmount) . ")" ?></option>
|
<option value="<?= $dexAmount ?>"><?= "{$name} (" . number_format($dexAmount) . ")" ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">차병숙련
|
||||||
<span class="input-group-text">차병숙련</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_dex5">
|
<select class="form-select form_dex5">
|
||||||
<?php foreach (getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]) : ?>
|
<?php foreach (getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]) : ?>
|
||||||
<option value="<?= $dexAmount ?>"><?= "{$name} (" . number_format($dexAmount) . ")" ?></option>
|
<option value="<?= $dexAmount ?>"><?= "{$name} (" . number_format($dexAmount) . ")" ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend only_defender">
|
<div class="input-group-text only_defender">수비여부
|
||||||
<span class="input-group-text">수비여부</span>
|
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select form_defence_train only_defender">
|
<select class="form-select form_defence_train only_defender">
|
||||||
<option value="90">훈사 90</option>
|
<option value="90">훈사 90</option>
|
||||||
<option value="80">훈사 80</option>
|
<option value="80">훈사 80</option>
|
||||||
<option value="60">훈사 60</option>
|
<option value="60">훈사 60</option>
|
||||||
@@ -468,16 +415,13 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group mb-1">
|
<div class="input-group mb-1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">전투 수
|
||||||
<span class="input-group-text">전투 수</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_warnum" value="0" step="1">
|
<input type="number" class="form-control form_warnum" value="0" step="1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">승리 수
|
||||||
<span class="input-group-text">승리 수</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_killnum" value="0" step="1">
|
<input type="number" class="form-control form_killnum" value="0" step="1">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-text">사살 수
|
||||||
<span class="input-group-text">사살 수</span>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control form_killcrew" value="0" step="1">
|
<input type="number" class="form-control form_killcrew" value="0" step="1">
|
||||||
</div>
|
</div>
|
||||||
@@ -493,15 +437,42 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
</div>
|
</div>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<tbody id="battle_result_summary">
|
<tbody id="battle_result_summary">
|
||||||
<tr><th style='width:18ch;'>전투 일시</th><td id='result_datetime'></td></tr>
|
<tr>
|
||||||
<tr><th>전투 횟수</th><td id='result_warcnt'></td></tr>
|
<th style='width:18ch;'>전투 일시</th>
|
||||||
<tr><th>전투 페이즈</th><td id='result_phase'></td></tr>
|
<td id='result_datetime'></td>
|
||||||
<tr><th>준 피해</th><td><span id='result_killed'>0</span><span id='result_varKilled'> (<span id='result_minKilled'>0</span> ~ <span id='result_maxKilled'>0</span>)</span></td></tr>
|
</tr>
|
||||||
<tr><th>받은 피해</th><td><span id='result_dead'>0</span><span id='result_varDead'> (<span id='result_minDead'>0</span> ~ <span id='result_maxDead'>0</span>)</span></td></tr>
|
<tr>
|
||||||
<tr><th>출병자 군량 소모</th><td id='result_attackerRice'></td></tr>
|
<th>전투 횟수</th>
|
||||||
<tr><th>수비자 군량 소모</th><td id='result_defenderRice'></td></tr>
|
<td id='result_warcnt'></td>
|
||||||
<tr><th>공격자 스킬</th><td id='result_attackerSkills'></td></tr>
|
</tr>
|
||||||
<tr class='result_defenderSkills'><th>수비자1 스킬</th><td></td></tr>
|
<tr>
|
||||||
|
<th>전투 페이즈</th>
|
||||||
|
<td id='result_phase'></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>준 피해</th>
|
||||||
|
<td><span id='result_killed'>0</span><span id='result_varKilled'> (<span id='result_minKilled'>0</span> ~ <span id='result_maxKilled'>0</span>)</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>받은 피해</th>
|
||||||
|
<td><span id='result_dead'>0</span><span id='result_varDead'> (<span id='result_minDead'>0</span> ~ <span id='result_maxDead'>0</span>)</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>출병자 군량 소모</th>
|
||||||
|
<td id='result_attackerRice'></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>수비자 군량 소모</th>
|
||||||
|
<td id='result_defenderRice'></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>공격자 스킬</th>
|
||||||
|
<td id='result_attackerSkills'></td>
|
||||||
|
</tr>
|
||||||
|
<tr class='result_defenderSkills'>
|
||||||
|
<th>수비자1 스킬</th>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@@ -533,7 +504,7 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">장수 목록</h5>
|
<h5 class="modal-title">장수 목록</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -543,10 +514,11 @@ var nation = <?=Json::encode($nation)?>;
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-primary" id='importFromDB'>가져오기</button>
|
<button type="button" class="btn btn-primary" id='importFromDB'>가져오기</button>
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">닫기</button>
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+14
-7
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -6,8 +7,8 @@ include "func.php";
|
|||||||
// $btn, $msg, $scoutmsg, $rate, $bill, $secretlimit
|
// $btn, $msg, $scoutmsg, $rate, $bill, $secretlimit
|
||||||
|
|
||||||
$btn = Util::getPost('btn');
|
$btn = Util::getPost('btn');
|
||||||
$msg = Util::getPost('msg');
|
//$msg = Util::getPost('msg');
|
||||||
$scoutmsg = Util::getPost('scoutmsg');
|
//$scoutmsg = Util::getPost('scoutMsg');
|
||||||
$rate = Util::getPost('rate', 'int');
|
$rate = Util::getPost('rate', 'int');
|
||||||
$bill = Util::getPost('bill', 'int');
|
$bill = Util::getPost('bill', 'int');
|
||||||
$secretlimit = Util::getPost('secretlimit', 'int');
|
$secretlimit = Util::getPost('secretlimit', 'int');
|
||||||
@@ -25,8 +26,7 @@ $permission = checkSecretPermission($me);
|
|||||||
if ($permission < 0) {
|
if ($permission < 0) {
|
||||||
header('location:b_myBossInfo.php', true, 303);
|
header('location:b_myBossInfo.php', true, 303);
|
||||||
exit();
|
exit();
|
||||||
}
|
} else if ($me['officer_level'] < 5 && $permission != 4) {
|
||||||
else if ($me['officer_level'] < 5 && $permission != 4) {
|
|
||||||
header('location:b_myBossInfo.php', true, 303);
|
header('location:b_myBossInfo.php', true, 303);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
@@ -34,14 +34,14 @@ else if ($me['officer_level'] < 5 && $permission != 4) {
|
|||||||
$nationID = $me['nation'];
|
$nationID = $me['nation'];
|
||||||
$nationStor = KVStorage::getStorage($db, $nationID, 'nation_env');
|
$nationStor = KVStorage::getStorage($db, $nationID, 'nation_env');
|
||||||
|
|
||||||
if($btn == "국가방침 수정") {
|
/*if ($btn == "국가방침 수정") {
|
||||||
$msg = mb_substr($msg, 0, 16384);
|
$msg = mb_substr($msg, 0, 16384);
|
||||||
//$msg = StringUtil::
|
//$msg = StringUtil::
|
||||||
$nationStor->notice = WebUtil::htmlPurify($msg);
|
$nationStor->notice = WebUtil::htmlPurify($msg);
|
||||||
} elseif ($btn == "임관 권유문 수정") {
|
} elseif ($btn == "임관 권유문 수정") {
|
||||||
$scoutmsg = mb_substr($scoutmsg, 0, 1000);
|
$scoutmsg = mb_substr($scoutmsg, 0, 1000);
|
||||||
$nationStor->scout_msg = WebUtil::htmlPurify($scoutmsg);
|
$nationStor->scout_msg = WebUtil::htmlPurify($scoutmsg);
|
||||||
} elseif($btn == "세율") {
|
} else*/if ($btn == "세율") {
|
||||||
$rate = Util::valueFit($rate, 5, 30);
|
$rate = Util::valueFit($rate, 5, 30);
|
||||||
$db->update('nation', [
|
$db->update('nation', [
|
||||||
'rate' => $rate,
|
'rate' => $rate,
|
||||||
@@ -65,14 +65,21 @@ if($btn == "국가방침 수정") {
|
|||||||
'scout' => 0
|
'scout' => 0
|
||||||
], 'nation=%i', $nationID);
|
], 'nation=%i', $nationID);
|
||||||
} elseif ($btn == "전쟁 금지") {
|
} elseif ($btn == "전쟁 금지") {
|
||||||
|
$avilableCnt = $nationStor->getValue('available_war_setting_cnt') ?? 0;
|
||||||
|
if ($avilableCnt > 0) {
|
||||||
$db->update('nation', [
|
$db->update('nation', [
|
||||||
'war' => 1
|
'war' => 1
|
||||||
], 'nation=%i', $nationID);
|
], 'nation=%i', $nationID);
|
||||||
|
$nationStor->setValue('available_war_setting_cnt', $avilableCnt - 1);
|
||||||
|
}
|
||||||
} elseif ($btn == "전쟁 허가") {
|
} elseif ($btn == "전쟁 허가") {
|
||||||
|
$avilableCnt = $nationStor->getValue('available_war_setting_cnt') ?? 0;
|
||||||
|
if ($avilableCnt > 0) {
|
||||||
$db->update('nation', [
|
$db->update('nation', [
|
||||||
'war' => 0
|
'war' => 0
|
||||||
], 'nation=%i', $nationID);
|
], 'nation=%i', $nationID);
|
||||||
|
$nationStor->setValue('available_war_setting_cnt', $avilableCnt - 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
header('location:b_dipcenter.php');
|
header('location:b_dipcenter.php');
|
||||||
|
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ if($btn == "자동개최설정") {
|
|||||||
$gameStor->tournament = 2;
|
$gameStor->tournament = 2;
|
||||||
$gameStor->phase = 0;
|
$gameStor->phase = 0;
|
||||||
} elseif($btn == "무명전부투입") {
|
} elseif($btn == "무명전부투입") {
|
||||||
fillLowGenAll();
|
fillLowGenAll($admin['tnmt_type']);
|
||||||
} elseif($btn == "예선") {
|
} elseif($btn == "예선") {
|
||||||
qualify($admin['tnmt_type'], $admin['tournament'], $admin['phase']);
|
qualify($admin['tnmt_type'], $admin['tournament'], $admin['phase']);
|
||||||
} elseif($btn == "예선전부") {
|
} elseif($btn == "예선전부") {
|
||||||
|
|||||||
+2
-2
@@ -15,7 +15,7 @@ $session = Session::requireGameLogin()->setReadOnly();
|
|||||||
$userID = Session::getUserID();
|
$userID = Session::getUserID();
|
||||||
|
|
||||||
$isVoteAdmin = in_array('vote', $session->acl[DB::prefix()]??[]);
|
$isVoteAdmin = in_array('vote', $session->acl[DB::prefix()]??[]);
|
||||||
$isVoteAdmin |= $session->userGrade >= 5;
|
$isVoteAdmin = $isVoteAdmin || $session->userGrade >= 5;
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
@@ -24,7 +24,7 @@ $admin = $gameStor->getValues(['develcost', 'cost', 'vote_title', 'vote', 'votec
|
|||||||
|
|
||||||
$generalID = Session::getGeneralID();
|
$generalID = Session::getGeneralID();
|
||||||
|
|
||||||
$general = General::createGeneralObjFromDB($generalID, ['vote','horse','weapon','book','item','npc'], 2);
|
$general = General::createGeneralObjFromDB($generalID, ['vote','horse','weapon','book','item','npc','imgsvr','picture','aux'], 2);
|
||||||
|
|
||||||
if($btn == "투표" && $general->getVar('vote') == 0 && $sel > 0) {
|
if($btn == "투표" && $general->getVar('vote') == 0 && $sel > 0) {
|
||||||
$develcost = $admin['develcost'] * 5;
|
$develcost = $admin['develcost'] * 5;
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.defender_add_form .general_detail{
|
.defender_add_form .general_detail{
|
||||||
display:none;
|
display:none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.form_sample{
|
.form_sample{
|
||||||
display:none;
|
display:none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type=number]{
|
input[type=number]{
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
#newArticle{
|
|
||||||
width:1000px;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.titleInput{
|
|
||||||
width:100%;
|
|
||||||
color:white;
|
|
||||||
background-color:transparent;
|
|
||||||
border:none;
|
|
||||||
margin:1px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contentInput{
|
|
||||||
width:100%;
|
|
||||||
min-height:3em;
|
|
||||||
color:white;
|
|
||||||
background-color:transparent;
|
|
||||||
border:none;
|
|
||||||
padding:1px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.articleFrame{
|
|
||||||
width:1000px;
|
|
||||||
margin: 20px auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.commentText{
|
|
||||||
width:100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.authorName, .comment .author{
|
|
||||||
width:110px;
|
|
||||||
font-size:85%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.date{
|
|
||||||
width:125px;
|
|
||||||
font-size:85%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text{
|
|
||||||
text-align:left;
|
|
||||||
padding:1px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submitComment{
|
|
||||||
width:100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.commentText{
|
|
||||||
color:white;
|
|
||||||
background-color:transparent;
|
|
||||||
border:none;
|
|
||||||
padding:1px 5px;
|
|
||||||
}
|
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
width:50px;
|
width:50px;
|
||||||
color:white;
|
color:white;
|
||||||
background-color:black;
|
background-color:black;
|
||||||
font-size:13px;
|
font-size:14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chiefTurnIdx{
|
.chiefTurnIdx{
|
||||||
@@ -42,20 +42,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.chiefTurnBox .turnHeader{
|
.chiefTurnBox .turnHeader{
|
||||||
font-weight: bold;
|
font-weight: 500;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chiefNamePlate{
|
.chiefNamePlate{
|
||||||
border-top:solid 0.67px #888888;
|
border-top:solid 0.67px #888888;
|
||||||
font-weight: bold;
|
font-weight: 500;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
line-height:21px;
|
line-height:21px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.turnIdxHeader{
|
.turnIdxHeader{
|
||||||
font-weight: bold;
|
font-weight: 500;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
width:20px;
|
width:20px;
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
.chiefTurnTime{
|
.chiefTurnTime{
|
||||||
border-top:solid 0.67px #888888;
|
border-top:solid 0.67px #888888;
|
||||||
border-right:solid 0.67px #888888;
|
border-right:solid 0.67px #888888;
|
||||||
font-weight: bold;
|
font-weight: 500;
|
||||||
background: black;
|
background: black;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
width:44px;
|
width:44px;
|
||||||
|
|||||||
+21
-32
@@ -1,21 +1,19 @@
|
|||||||
@charset "UTF-8";
|
html * {
|
||||||
|
max-height: 1000000px;
|
||||||
|
}
|
||||||
|
|
||||||
/* font-boostring Block */
|
html,
|
||||||
html * {max-height:1000000px;}
|
body {
|
||||||
|
font-family: 'Pretendard', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic';
|
||||||
|
|
||||||
html, body{
|
|
||||||
background-color: black;
|
background-color: black;
|
||||||
color: white;
|
color: white;
|
||||||
line-height: 1.3;
|
line-height: 1.3;
|
||||||
font-family:'맑은 고딕';
|
font-size: 14px;
|
||||||
font-size:13px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
table { font-family:'맑은 고딕'; }
|
input {
|
||||||
font { font-family:'맑은 고딕'; }
|
font-size: 14px;
|
||||||
input { font-family:'맑은 고딕'; font-size:13px; }
|
}
|
||||||
select { font-family:'굴림'; line-height:100%; }
|
|
||||||
|
|
||||||
.center {
|
.center {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -27,26 +25,25 @@ table.mimic_flex{
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mimic_flex td, .mimic_flex th {
|
.mimic_flex td,
|
||||||
|
.mimic_flex th {
|
||||||
border: none !important;
|
border: none !important;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
table.tb_layout {
|
table.tb_layout {
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
font-size: 13px;
|
font-size: 14px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
font-family: '맑은 고딕';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tb_layout td, .tb_layout th {
|
.tb_layout td,
|
||||||
|
.tb_layout th {
|
||||||
border: solid 1px gray;
|
border: solid 1px gray;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
font-family: '맑은 고딕';;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
div.bar_out {
|
div.bar_out {
|
||||||
@@ -70,6 +67,7 @@ div.bar_out div.bar_in{
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
|
||||||
.ev_warning {
|
.ev_warning {
|
||||||
@@ -96,6 +94,7 @@ div.bar_out div.bar_in{
|
|||||||
color: orangered;
|
color: orangered;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* TODO: 색상값이 아니라 의미에 따라 클래스 지정 */
|
/* TODO: 색상값이 아니라 의미에 따라 클래스 지정 */
|
||||||
|
|
||||||
.o_bullet::before {
|
.o_bullet::before {
|
||||||
@@ -124,8 +123,6 @@ div.bar_out div.bar_in{
|
|||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.small_war_log .name_plate {
|
.small_war_log .name_plate {
|
||||||
font-size: 0.75em;
|
font-size: 0.75em;
|
||||||
}
|
}
|
||||||
@@ -188,8 +185,7 @@ div.bar_out div.bar_in{
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tooltip {
|
.tooltip {
|
||||||
font-size:12px;
|
font-size: 12.5px;
|
||||||
font-family: '맑은 고딕';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tooltip_copyable_info .tooltiptext {
|
.tooltip_copyable_info .tooltiptext {
|
||||||
@@ -207,7 +203,8 @@ div.bar_out div.bar_in{
|
|||||||
font-size: 0;
|
font-size: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-group-xs > .btn, .btn-xs {
|
.btn-group-xs>.btn,
|
||||||
|
.btn-xs {
|
||||||
padding: .25rem .4rem;
|
padding: .25rem .4rem;
|
||||||
font-size: .875rem;
|
font-size: .875rem;
|
||||||
line-height: .5;
|
line-height: .5;
|
||||||
@@ -230,11 +227,6 @@ div.bar_out div.bar_in{
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.commandBasic{
|
|
||||||
background-color:black;
|
|
||||||
color:white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.compensatePositive {
|
.compensatePositive {
|
||||||
color: skyblue;
|
color: skyblue;
|
||||||
}
|
}
|
||||||
@@ -243,14 +235,11 @@ div.bar_out div.bar_in{
|
|||||||
color: orange;
|
color: orange;
|
||||||
}
|
}
|
||||||
|
|
||||||
.compensateNeutral{
|
|
||||||
color:white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.commandBasic.commandImpossible {
|
.commandBasic.commandImpossible {
|
||||||
background-color: red;
|
background-color: red;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.select2-selection--single.simple-select2-align-center .select2-selection__rendered {
|
.select2-selection--single.simple-select2-align-center .select2-selection__rendered {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
width:1100px;
|
width:1100px;
|
||||||
margin:auto;
|
margin:auto;
|
||||||
position:relative;
|
position:relative;
|
||||||
font-size:13px;
|
font-size:14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rankView h3{
|
.rankView h3{
|
||||||
|
|||||||
+3
-1
@@ -1,2 +1,4 @@
|
|||||||
@charset "UTF-8";
|
|
||||||
|
|
||||||
|
.form-group{
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
@charset "UTF-8";
|
|
||||||
|
|
||||||
body {
|
|
||||||
color:white;
|
|
||||||
background-color:black;
|
|
||||||
border-width:1px;
|
|
||||||
border-color:gray; background-position:center; background-repeat:repeat-y;
|
|
||||||
}
|
|
||||||
|
|
||||||
#container {
|
|
||||||
width:1000px;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.buttonPlate{
|
|
||||||
width:1000px;
|
|
||||||
height:60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toolbarButton {
|
|
||||||
float:left;
|
|
||||||
background-color:#225500;
|
|
||||||
color:white;
|
|
||||||
width:125px;
|
|
||||||
height:30px;
|
|
||||||
font-weight:bold;
|
|
||||||
font-size:13px;
|
|
||||||
margin:0;
|
|
||||||
display:block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.commandButton {
|
|
||||||
float:left;
|
|
||||||
width:100px;
|
|
||||||
height:30px;
|
|
||||||
font-weight:bold;
|
|
||||||
font-size:13px;
|
|
||||||
margin:0;
|
|
||||||
display:block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.commandButton:disabled::before{
|
|
||||||
content:'【'
|
|
||||||
}
|
|
||||||
|
|
||||||
.commandButton:disabled::after{
|
|
||||||
content:'】'
|
|
||||||
}
|
|
||||||
|
|
||||||
.commandButton:disabled{
|
|
||||||
background-color:transparent !important;
|
|
||||||
color:gray !important;
|
|
||||||
border-color:transparent !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toolbarButton2 {
|
|
||||||
float:left;
|
|
||||||
background-color:#225500;
|
|
||||||
color:magenta;
|
|
||||||
width:125px;
|
|
||||||
height:30px;
|
|
||||||
font-weight:bold;
|
|
||||||
font-size:13px;
|
|
||||||
margin:0;
|
|
||||||
display:block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nation_info td{
|
|
||||||
height:18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#generalTurnSelector{
|
|
||||||
width:50px;
|
|
||||||
color:white;
|
|
||||||
background-color:black;
|
|
||||||
font-size:13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sidebar{
|
|
||||||
position:fixed;
|
|
||||||
right:0;
|
|
||||||
top: 50%;
|
|
||||||
transform: translateY(-50%);
|
|
||||||
}
|
|
||||||
|
|
||||||
#sidebar button{
|
|
||||||
/*width:100px;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
.turn_pad{
|
|
||||||
white-space:nowrap;
|
|
||||||
font-weight:lighter;
|
|
||||||
max-width: 162px;
|
|
||||||
width: 162px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.turn_pad .turn_text{
|
|
||||||
display:inline-block;
|
|
||||||
}
|
|
||||||
+10
-3
@@ -3,8 +3,9 @@
|
|||||||
.world_map{
|
.world_map{
|
||||||
width:700px;
|
width:700px;
|
||||||
background:black;
|
background:black;
|
||||||
font-size:13px;
|
font-size:14px;
|
||||||
color:white;
|
color:white;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.map_title{
|
.map_title{
|
||||||
@@ -25,7 +26,7 @@
|
|||||||
width:160px;
|
width:160px;
|
||||||
display:block;
|
display:block;
|
||||||
line-height:20px;
|
line-height:20px;
|
||||||
font-size:13px;
|
font-size:14px;
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,6 +34,7 @@
|
|||||||
width:700px;
|
width:700px;
|
||||||
height:500px;
|
height:500px;
|
||||||
position:relative;
|
position:relative;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.map_body .map_bglayer1{
|
.map_body .map_bglayer1{
|
||||||
@@ -88,7 +90,7 @@
|
|||||||
|
|
||||||
.world_map .city_tooltip{
|
.world_map .city_tooltip{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index:6;
|
z-index:16;
|
||||||
display:none;
|
display:none;
|
||||||
min-width:120px;
|
min-width:120px;
|
||||||
border: 0.02em gray solid;
|
border: 0.02em gray solid;
|
||||||
@@ -492,3 +494,8 @@
|
|||||||
.map_basic .city_base .city_state.city_state_good{
|
.map_basic .city_base .city_state.city_state_good{
|
||||||
background-color:blue;
|
background-color:blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn.btn-minimum{
|
||||||
|
padding-top: 1px;
|
||||||
|
padding-bottom: 1px;
|
||||||
|
}
|
||||||
-202
@@ -1,202 +0,0 @@
|
|||||||
@charset "UTF-8";
|
|
||||||
|
|
||||||
/*임시용 */
|
|
||||||
|
|
||||||
#container{
|
|
||||||
width:1000px;
|
|
||||||
margin:auto;
|
|
||||||
font-size:13px;
|
|
||||||
}
|
|
||||||
/*임시용 끝*/
|
|
||||||
|
|
||||||
#message_board{
|
|
||||||
height:1370px;
|
|
||||||
position:relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#message_board section{
|
|
||||||
overflow-y:auto;
|
|
||||||
overflow-x:hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_plate{
|
|
||||||
width:100%;
|
|
||||||
outline-style:solid;
|
|
||||||
outline-width:1px;
|
|
||||||
outline-color: gray;
|
|
||||||
min-height:64px;
|
|
||||||
font-size:12px;
|
|
||||||
word-break:break-all;
|
|
||||||
color:white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_plate_private{
|
|
||||||
background-color:#5d1e1a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_plate_private.msg_plate_dest{
|
|
||||||
background-color:#5d461a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_plate_public{
|
|
||||||
background-color:#141c65;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_plate_national, .msg_plate_diplomacy{
|
|
||||||
background-color:#00582c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_plate_national.msg_plate_dest, .msg_plate_diplomacy.msg_plate_dest {
|
|
||||||
background-color:#704615;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_plate_national.msg_plate_src, .msg_plate_diplomacy.msg_plate_src {
|
|
||||||
background-color:#70153b;
|
|
||||||
}
|
|
||||||
|
|
||||||
.public_message{
|
|
||||||
height:667px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.diplomacy_message{
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.national_message{
|
|
||||||
height:667px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private_message{
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_icon{
|
|
||||||
float:left;
|
|
||||||
width:64px;
|
|
||||||
height:64px;
|
|
||||||
border-right:solid 1px gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_time{
|
|
||||||
font-size:0.75em;
|
|
||||||
font-weight:normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_header{
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom:3px;
|
|
||||||
color:white;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.message_input_form{
|
|
||||||
position:relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#msg_input{
|
|
||||||
color:white;
|
|
||||||
background-color:black;
|
|
||||||
font-size:12px;
|
|
||||||
width:715px;
|
|
||||||
margin:0 2px;
|
|
||||||
height:20px;
|
|
||||||
border:solid 1px gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
#msg_submit{
|
|
||||||
position:absolute;
|
|
||||||
right:0;
|
|
||||||
margin-right:2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#mailbox_list{
|
|
||||||
float:left;
|
|
||||||
color:white;
|
|
||||||
background-color:black;
|
|
||||||
font-size:12px;
|
|
||||||
width:160px;
|
|
||||||
height:20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.board_header{
|
|
||||||
color:white;
|
|
||||||
outline-style:solid;
|
|
||||||
outline-width:1px;
|
|
||||||
outline-color: gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
.board_side{
|
|
||||||
position:absolute;
|
|
||||||
height:1370px;
|
|
||||||
width:50%;
|
|
||||||
overflow-y: hidden;
|
|
||||||
outline-style:solid;
|
|
||||||
outline-width:1px;
|
|
||||||
outline-color: gray;
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
.board_side > div{
|
|
||||||
height: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_invalid{
|
|
||||||
color:rgba(255,255,255,0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_body{
|
|
||||||
padding-left:64px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_target{
|
|
||||||
margin:2px 2px 0 2px;
|
|
||||||
padding:2px 3px;
|
|
||||||
display:inline-block;
|
|
||||||
box-shadow: 2px 2px black;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-delete-msg{
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
margin:2px 2px 0 2px;
|
|
||||||
font-size:8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
.public_message .msg_target{
|
|
||||||
box-shadow: 2px 2px darkslategrey;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
.msg_target.msg_bright{
|
|
||||||
color:black;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_target.msg_dark{
|
|
||||||
color:white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_from_to{
|
|
||||||
display:inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_content{
|
|
||||||
margin-left:10px;
|
|
||||||
margin-right:5px;
|
|
||||||
overflow:hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_prompt{
|
|
||||||
text-align:right;
|
|
||||||
margin-top:5px;
|
|
||||||
margin-right:5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#mailbox_list option{
|
|
||||||
color:white;
|
|
||||||
background-color:black;
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
.section_bar{
|
|
||||||
text-align:center;
|
|
||||||
border:0.5px solid #aaa;
|
|
||||||
padding-right:0;
|
|
||||||
padding-left:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sub_bar{
|
|
||||||
text-align:center;
|
|
||||||
border:0.5px solid #aaa;
|
|
||||||
margin-left:-5px;
|
|
||||||
margin-right:-5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.reset_btn{
|
|
||||||
width:15ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit_btn{
|
|
||||||
margin-left:1em;
|
|
||||||
width:15ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
.control_bar{
|
|
||||||
margin-top:8pt;
|
|
||||||
text-align:right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.col-form-label{
|
|
||||||
text-align:right;
|
|
||||||
padding-right:2ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form_list{
|
|
||||||
padding:8pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
.half_section_left{
|
|
||||||
padding-right:0;
|
|
||||||
border-right:0.5px solid #aaa;
|
|
||||||
}
|
|
||||||
.half_section_right{
|
|
||||||
padding-left:0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.popover{
|
|
||||||
max-width:100%;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
.container {
|
||||||
|
width: 1000px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card_holder {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.general_card {
|
||||||
|
width: 125px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.general_card h4 {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.general_card p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.general_card .select_btn {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.general_card label {
|
||||||
|
display: block;
|
||||||
|
padding-left: 15px;
|
||||||
|
text-indent: -15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.general_card input {
|
||||||
|
width: 13px;
|
||||||
|
height: 13px;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
vertical-align: bottom;
|
||||||
|
position: relative;
|
||||||
|
top: -1px;
|
||||||
|
*overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
#outdate_token {
|
||||||
|
color: red;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#left_pad button {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom_picture {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom_personality {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom_stat {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
@@ -1,8 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
class DB{
|
//https://hub.packtpub.com/eloquent-without-laravel/
|
||||||
|
use Illuminate\Database\Capsule\Manager as Capsule;
|
||||||
|
use Illuminate\Events\Dispatcher;
|
||||||
|
use Illuminate\Container\Container;
|
||||||
|
|
||||||
|
class DB
|
||||||
|
{
|
||||||
private static $uDB = null;
|
private static $uDB = null;
|
||||||
|
private static ?Capsule $uIlluminate = null;
|
||||||
|
|
||||||
private static $host = '_tK_host_';
|
private static $host = '_tK_host_';
|
||||||
private static $user = '_tK_user_';
|
private static $user = '_tK_user_';
|
||||||
@@ -10,11 +18,36 @@ class DB{
|
|||||||
private static $dbName = '_tK_dbName_';
|
private static $dbName = '_tK_dbName_';
|
||||||
private static $port = _tK_port_;
|
private static $port = _tK_port_;
|
||||||
private static $encoding = 'utf8mb4';
|
private static $encoding = 'utf8mb4';
|
||||||
|
private static $collation = 'utf8mb4_general_ci';
|
||||||
|
|
||||||
private static $prefix = '_tK_prefix_';
|
private static $prefix = '_tK_prefix_';
|
||||||
|
|
||||||
private function __construct(){
|
private function __construct()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function illuminate(): Capsule
|
||||||
|
{
|
||||||
|
if(self::$uIlluminate !== null){
|
||||||
|
return self::$uIlluminate;
|
||||||
|
}
|
||||||
|
$capsule = new Capsule;
|
||||||
|
|
||||||
|
$capsule->addConnection([
|
||||||
|
'driver' => 'mysql',
|
||||||
|
'host' => self::$host,
|
||||||
|
'database' => self::$dbName,
|
||||||
|
'username' => self::$user,
|
||||||
|
'password' => self::$password,
|
||||||
|
'charset' => self::$encoding,
|
||||||
|
'collation' => self::$collation,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$capsule->setEventDispatcher(new Dispatcher(new Container));
|
||||||
|
$capsule->setAsGlobal();
|
||||||
|
$capsule->bootEloquent();
|
||||||
|
self::$uIlluminate = $capsule;
|
||||||
|
return $capsule;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -23,12 +56,14 @@ class DB{
|
|||||||
* @return \MeekroDB
|
* @return \MeekroDB
|
||||||
* @suppress PhanTypeMismatchProperty
|
* @suppress PhanTypeMismatchProperty
|
||||||
*/
|
*/
|
||||||
public static function db(){
|
public static function db()
|
||||||
|
{
|
||||||
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->error_handler = function () {
|
||||||
|
};
|
||||||
self::$uDB->throw_exception_on_error = true;
|
self::$uDB->throw_exception_on_error = true;
|
||||||
self::$uDB->throw_exception_on_nonsql_error = true;
|
self::$uDB->throw_exception_on_nonsql_error = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?php
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
class VersionGit extends VersionGitDynamic {
|
||||||
|
}
|
||||||
|
//{"version":"dynamic","hash":"dynamic"}
|
||||||
@@ -2,8 +2,15 @@
|
|||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
class VersionGit{
|
class VersionGit{
|
||||||
public static $version = '_tK_verionGit_';
|
static function getVersion()
|
||||||
|
{
|
||||||
|
return '_tK_verionGit_';
|
||||||
|
}
|
||||||
|
|
||||||
|
static function getHash(){
|
||||||
|
return '_tK_hash_';
|
||||||
|
}
|
||||||
|
|
||||||
private function __construct(){}
|
private function __construct(){}
|
||||||
}
|
}
|
||||||
//{"version":"_tK_verionGit_"}
|
//{"version":"_tK_verionGit_","hash":"_tK_hash_"}
|
||||||
|
|||||||
@@ -1,22 +1,18 @@
|
|||||||
<div class="buttonPlate bg1">
|
<div class="buttonPlate">
|
||||||
<div>
|
<a href="a_status.php" target="_blank" class="open-window"><button type="button" class="toolbarButton">세력도</button></a>
|
||||||
<a href="a_status.php" target="_blank"><button class="toolbarButton">세력도</button></a>
|
<a href="a_kingdomList.php" target="_blank" class="open-window"><button type="button" class="toolbarButton">세력일람</button></a>
|
||||||
<a href="a_kingdomList.php" target="_blank"><button class="toolbarButton">세력일람</button></a>
|
<a href="a_genList.php" target="_blank" class="open-window"><button type="button" class="toolbarButton">장수일람</button></a>
|
||||||
<a href="a_genList.php" target="_blank"><button class="toolbarButton">장수일람</button></a>
|
<a href="a_bestGeneral.php" target="_blank" class="open-window"><button type="button" class="toolbarButton">명장일람</button></a>
|
||||||
<a href="a_bestGeneral.php" target="_blank"><button class="toolbarButton">명장일람</button></a>
|
<a href="a_history.php" target="_blank" class="open-window"><button type="button" class="toolbarButton">연감</button></a>
|
||||||
<a href="a_history.php" target="_blank"><button class="toolbarButton">연감</button></a>
|
<a href="a_hallOfFame.php" target="_blank" class="open-window"><button type="button" class="toolbarButton">명예의전당</button></a>
|
||||||
<a href="a_hallOfFame.php" target="_blank"><button class="toolbarButton">명예의전당</button></a>
|
<a href="a_emperior.php" target="_blank" class="open-window"><button type="button" class="toolbarButton">왕조일람</button></a>
|
||||||
<a href="a_emperior.php" target="_blank"><button class="toolbarButton">왕조일람</button></a>
|
<a href="a_traffic.php" target="_blank" class="open-window"><button type="button" class="toolbarButton">접속량정보</button></a>
|
||||||
<a href="a_traffic.php" target="_blank"><button class="toolbarButton">접속량정보</button></a>
|
<a href="/bbs/board" target="_blank"><button type="button" class="toolbarButton2">삼모게시판</button></a>
|
||||||
</div>
|
<a href="/bbs/tip" target="_blank"><button type="button" class="toolbarButton">팁/강좌</button></a>
|
||||||
<div>
|
<a href="/bbs/news" target="_blank"><button type="button" class="toolbarButton">삼국 일보</button></a>
|
||||||
<a href="/bbs/board" target="_blank"><button class="toolbarButton2">삼모게시판</button></a>
|
<a href="/bbs/history2" target="_blank"><button type="button" class="toolbarButton">개인 열전</button></a>
|
||||||
<a href="/bbs/tip" target="_blank"><button class="toolbarButton">팁/강좌</button></a>
|
<a href="/bbs/history3" target="_blank"><button type="button" class="toolbarButton">국가 열전</button></a>
|
||||||
<a href="/bbs/news" target="_blank"><button class="toolbarButton">삼국 일보</button></a>
|
<a href="/bbs/patch" target="_blank"><button type="button" class="toolbarButton">패치 내역</button></a>
|
||||||
<a href="/bbs/history2" target="_blank"><button class="toolbarButton">개인 열전</button></a>
|
<a href="battle_simulator.php" target="_blank"><button type="button" class="toolbarButton">전투 시뮬레이터</button></a>
|
||||||
<a href="/bbs/history3" target="_blank"><button class="toolbarButton">국가 열전</button></a>
|
<a href="<?=$site?>" target="_blank" class="open-window"><button type="button" class="toolbarButton"><?=$call?></button></a>
|
||||||
<a href="/bbs/patch" target="_blank"><button class="toolbarButton">패치 내역</button></a>
|
|
||||||
<a href="../i_other/help.php" target="_blank"><button class="toolbarButton">튜토리얼</button></a>
|
|
||||||
<a href="<?=$site?>" target="_blank"><button class="toolbarButton"><?=$call?></button></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+396
-40
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
use sammo\Event\Action;
|
use sammo\Event\Action;
|
||||||
|
|
||||||
require_once 'process_war.php';
|
require_once 'process_war.php';
|
||||||
@@ -217,9 +218,9 @@ function myNationInfo(General $generalObj)
|
|||||||
<td colspan=4 ";
|
<td colspan=4 ";
|
||||||
|
|
||||||
if (!$nationID) {
|
if (!$nationID) {
|
||||||
echo "style='color:white;background-color:000000;font-weight:bold;font-size:13px;text-align:center;'>【재 야】";
|
echo "style='color:white;background-color:000000;font-weight:bold;font-size:14px;text-align:center;'>【재 야】";
|
||||||
} else {
|
} else {
|
||||||
echo "style='color:" . newColor($nation['color']) . ";background-color:{$nation['color']};font-weight:bold;font-size:13px;text-align:center'>국가【 {$nation['name']} 】";
|
echo "style='color:" . newColor($nation['color']) . ";background-color:{$nation['color']};font-weight:bold;font-size:14px;text-align:center'>국가【 {$nation['name']} 】";
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
@@ -460,6 +461,40 @@ function commandGroup($typename, $type = 0)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getCommandTable(General $general)
|
||||||
|
{
|
||||||
|
$db = DB::db();
|
||||||
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
$gameStor->turnOnCache();
|
||||||
|
$env = $gameStor->getAll();
|
||||||
|
|
||||||
|
$result = [];
|
||||||
|
foreach (GameConst::$availableGeneralCommand as $commandCategory => $commandList) {
|
||||||
|
$subList = [];
|
||||||
|
foreach ($commandList as $commandClassName) {
|
||||||
|
$commandObj = buildGeneralCommandClass($commandClassName, $general, $env);
|
||||||
|
if (!$commandObj->canDisplay()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$subList[] = [
|
||||||
|
'value' => Util::getClassNameFromObj($commandObj),
|
||||||
|
'compensation' => $commandObj->getCompensationStyle(),
|
||||||
|
'possible' => $commandObj->hasMinConditionMet(),
|
||||||
|
'title' => $commandObj->getCommandDetailTitle(),
|
||||||
|
'simpleName' => $commandObj->getName(),
|
||||||
|
'reqArg' => $commandObj::$reqArg,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$result[] = [
|
||||||
|
'category' => $commandCategory,
|
||||||
|
'values' => $subList
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
function printCommandTable(General $generalObj)
|
function printCommandTable(General $generalObj)
|
||||||
{
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
@@ -518,7 +553,7 @@ function chiefCommandTable(General $generalObj)
|
|||||||
$env = $gameStor->getAll();
|
$env = $gameStor->getAll();
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<select id='chiefCommandList' name='commandtype' size=1 style='height:20px;color:white;background-color:black;font-size:13px;display:inline-block;'>";
|
<select id='chiefCommandList' name='commandtype' size=1 style='height:20px;color:white;background-color:black;font-size:14px;display:inline-block;'>";
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
//보정(Pros,Cons) 여부.
|
//보정(Pros,Cons) 여부.
|
||||||
@@ -685,7 +720,7 @@ function generalInfo(General $generalObj)
|
|||||||
echo "<table width=498 class='tb_layout bg2'>
|
echo "<table width=498 class='tb_layout bg2'>
|
||||||
<tr>
|
<tr>
|
||||||
<td width=64 height=64 rowspan=3 class='generalIcon' style='text-align:center;background:no-repeat center url(\"{$imagePath}\");background-size:64px;'> </td>
|
<td width=64 height=64 rowspan=3 class='generalIcon' style='text-align:center;background:no-repeat center url(\"{$imagePath}\");background-size:64px;'> </td>
|
||||||
<td colspan=9 height=16 style=text-align:center;color:" . newColor($nation['color']) . ";background-color:{$nation['color']};font-weight:bold;font-size:13px;>{$generalObj->getName()} 【 {$officerLevelText} | {$call} | {$color}{$injury}</span> 】 " . $generalObj->getTurnTime($generalObj::TURNTIME_HMS) . "</td>
|
<td colspan=9 height=16 style=text-align:center;color:" . newColor($nation['color']) . ";background-color:{$nation['color']};font-weight:bold;font-size:14px;>{$generalObj->getName()} 【 {$officerLevelText} | {$call} | {$color}{$injury}</span> 】 " . $generalObj->getTurnTime($generalObj::TURNTIME_HMS) . "</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr height=16>
|
<tr height=16>
|
||||||
<td style='text-align:center;' class='bg1'><b>통솔</b></td>
|
<td style='text-align:center;' class='bg1'><b>통솔</b></td>
|
||||||
@@ -847,7 +882,7 @@ function generalInfo2(General $generalObj)
|
|||||||
<td style='text-align:center;'>{$generalObj->getRankVar('deathcrew')}</td>
|
<td style='text-align:center;'>{$generalObj->getRankVar('deathcrew')}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table width=498 class='tb_layout bg2'>
|
<table width=498 class='tb_layout bg2 f_tnum'>
|
||||||
<tr><td style='text-align:center;' colspan=4 class='bg1'><b>숙 련 도</b></td></tr>
|
<tr><td style='text-align:center;' colspan=4 class='bg1'><b>숙 련 도</b></td></tr>
|
||||||
<tr height=16>
|
<tr height=16>
|
||||||
<td width=64 style='text-align:center;' class='bg1'><b>보병</b></td>
|
<td width=64 style='text-align:center;' class='bg1'><b>보병</b></td>
|
||||||
@@ -909,11 +944,10 @@ function nationMsg(General $general)
|
|||||||
|
|
||||||
function banner()
|
function banner()
|
||||||
{
|
{
|
||||||
|
|
||||||
return sprintf(
|
return sprintf(
|
||||||
'<font size=2>%s %s / %s</font>',
|
'<font size=2>%s %s / %s</font>',
|
||||||
GameConst::$title,
|
GameConst::$title,
|
||||||
VersionGit::$version,
|
VersionGit::getVersion(),
|
||||||
GameConst::$banner
|
GameConst::$banner
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -1006,7 +1040,7 @@ function increaseRefresh($type = "", $cnt = 1)
|
|||||||
$isunited = $gameStor->isunited;
|
$isunited = $gameStor->isunited;
|
||||||
$opentime = $gameStor->opentime;
|
$opentime = $gameStor->opentime;
|
||||||
|
|
||||||
if ($isunited != 2 && $generalID && $userGrade < 6 && $opentime <= TimeUtil::DatetimeNow()) {
|
if ($isunited != 2 && $generalID && $userGrade < 6 && $opentime <= TimeUtil::now()) {
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'lastrefresh' => $date,
|
'lastrefresh' => $date,
|
||||||
'con' => $db->sqleval('con + %i', $cnt),
|
'con' => $db->sqleval('con + %i', $cnt),
|
||||||
@@ -1224,7 +1258,7 @@ function updateOnline()
|
|||||||
|
|
||||||
//동접수
|
//동접수
|
||||||
$before5Min = TimeUtil::nowAddMinutes(-5);
|
$before5Min = TimeUtil::nowAddMinutes(-5);
|
||||||
$onlineUser = $db->query('SELECT no,name,nation FROM general WHERE lastrefresh > %s', $before5Min);
|
$onlineUser = $db->query('SELECT no,name,nation FROM general WHERE lastrefresh > %s AND npc < 2', $before5Min);
|
||||||
$onlineNum = count($onlineUser);
|
$onlineNum = count($onlineUser);
|
||||||
$onlineNationUsers = Util::arrayGroupBy($onlineUser, 'nation');
|
$onlineNationUsers = Util::arrayGroupBy($onlineUser, 'nation');
|
||||||
|
|
||||||
@@ -1256,9 +1290,12 @@ function addAge()
|
|||||||
//나이와 호봉 증가
|
//나이와 호봉 증가
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
'age' => $db->sqleval('age+1'),
|
'age' => $db->sqleval('age+1'),
|
||||||
'belong' => $db->sqleval('belong+1')
|
|
||||||
], true);
|
], true);
|
||||||
|
|
||||||
|
$db->update('general', [
|
||||||
|
'belong' => $db->sqleval('belong+1')
|
||||||
|
], 'nation != 0');
|
||||||
|
|
||||||
[$startYear, $year, $month] = $gameStor->getValuesAsArray(['startyear', 'year', 'month']);
|
[$startYear, $year, $month] = $gameStor->getValuesAsArray(['startyear', 'year', 'month']);
|
||||||
|
|
||||||
if ($year >= $startYear + 3) {
|
if ($year >= $startYear + 3) {
|
||||||
@@ -1283,16 +1320,25 @@ function addAge()
|
|||||||
|
|
||||||
foreach ($db->query('SELECT no,name,nation,leadership,strength,intel,npc,dex1,dex2,dex3,dex4,dex5,aux from general where specage2<=age and special2=%s', GameConst::$defaultSpecialWar) as $general) {
|
foreach ($db->query('SELECT no,name,nation,leadership,strength,intel,npc,dex1,dex2,dex3,dex4,dex5,aux from general where specage2<=age and special2=%s', GameConst::$defaultSpecialWar) as $general) {
|
||||||
$generalID = $general['no'];
|
$generalID = $general['no'];
|
||||||
|
$generalAux = Json::decode($general['aux']);
|
||||||
|
|
||||||
|
$updateVars = [];
|
||||||
|
if (key_exists('inheritSpecificSpecialWar', $generalAux)) {
|
||||||
|
$special2 = $generalAux['inheritSpecificSpecialWar'];
|
||||||
|
unset($generalAux['inheritSpecificSpecialWar']);
|
||||||
|
$updateVars['aux'] = Json::encode($generalAux);
|
||||||
|
} else {
|
||||||
$special2 = SpecialityHelper::pickSpecialWar(
|
$special2 = SpecialityHelper::pickSpecialWar(
|
||||||
$general,
|
$general,
|
||||||
(Json::decode($general['aux'])['prev_types_special2'])??[]
|
($generalAux['prev_types_special2']) ?? []
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$specialClass = buildGeneralSpecialWarClass($special2);
|
$specialClass = buildGeneralSpecialWarClass($special2);
|
||||||
$specialText = $specialClass->getName();
|
$specialText = $specialClass->getName();
|
||||||
|
|
||||||
$db->update('general', [
|
$updateVars['special2'] = $special2;
|
||||||
'special2' => $special2
|
$db->update('general', $updateVars, 'no=%i', $general['no']);
|
||||||
], 'no=%i', $general['no']);
|
|
||||||
|
|
||||||
$logger = new ActionLogger($generalID, $general['nation'], $year, $month);
|
$logger = new ActionLogger($generalID, $general['nation'], $year, $month);
|
||||||
|
|
||||||
@@ -1336,17 +1382,29 @@ function triggerTournament()
|
|||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
$admin = $gameStor->getValues(['tournament', 'tnmt_trig']);
|
[$tournament, $tnmt_trig, $tnmt_pattern] = $gameStor->getValuesAsArray(['tournament', 'tnmt_trig', 'tnmt_pattern']);
|
||||||
|
|
||||||
//현재 토너먼트 없고, 자동개시 걸려있을때, 40%확률
|
//현재 토너먼트 없고, 자동개시 걸려있을때, 40%확률
|
||||||
if ($admin['tournament'] == 0 && $admin['tnmt_trig'] > 0 && rand() % 100 < 40) {
|
if ($tournament != 0) {
|
||||||
$type = rand() % 5; // 0 : 전력전, 1 : 통솔전, 2 : 일기토, 3 : 설전
|
return;
|
||||||
|
}
|
||||||
|
if ($tnmt_trig == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!Util::randBool(0.4)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$tnmt_pattern) {
|
||||||
|
// 0 : 전력전, 1 : 통솔전, 2 : 일기토, 3 : 설전
|
||||||
//전력전 40%, 통, 일, 설 각 20%
|
//전력전 40%, 통, 일, 설 각 20%
|
||||||
if ($type > 3) {
|
$tnmt_pattern = [0, 0, 1, 2, 3];
|
||||||
$type = 0;
|
shuffle($tnmt_pattern);
|
||||||
}
|
|
||||||
startTournament($admin['tnmt_trig'], $type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$tnmt_type = array_pop($tnmt_pattern);
|
||||||
|
$gameStor->setValue('tnmt_pattern', $tnmt_pattern);
|
||||||
|
startTournament($tnmt_trig, $tnmt_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
function CheckHall($no)
|
function CheckHall($no)
|
||||||
@@ -1537,7 +1595,18 @@ function giveRandomUniqueItem(General $general, string $acquireType): bool
|
|||||||
//일단은 '획득' 시에만 동작하므로 이대로 사용하기로...
|
//일단은 '획득' 시에만 동작하므로 이대로 사용하기로...
|
||||||
$occupiedUnique = [];
|
$occupiedUnique = [];
|
||||||
|
|
||||||
|
$invalidItemType = [];
|
||||||
foreach (array_keys(GameConst::$allItems) as $itemType) {
|
foreach (array_keys(GameConst::$allItems) as $itemType) {
|
||||||
|
$ownItem = $general->getItems()[$itemType] ?? null;
|
||||||
|
if ($ownItem !== null && !$ownItem->isBuyable()) {
|
||||||
|
$invalidItemType[$itemType] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (array_keys(GameConst::$allItems) as $itemType) {
|
||||||
|
if (key_exists($itemType, $invalidItemType)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
foreach ($db->queryAllLists('SELECT %b, count(*) as cnt FROM general GROUP BY %b', $itemType, $itemType) as [$itemCode, $cnt]) {
|
foreach ($db->queryAllLists('SELECT %b, count(*) as cnt FROM general GROUP BY %b', $itemType, $itemType) as [$itemCode, $cnt]) {
|
||||||
$itemClass = buildItemClass($itemCode);
|
$itemClass = buildItemClass($itemCode);
|
||||||
if (!$itemClass) {
|
if (!$itemClass) {
|
||||||
@@ -1551,7 +1620,13 @@ function giveRandomUniqueItem(General $general, string $acquireType): bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach (GameConst::$allItems as $itemType => $itemCategories) {
|
foreach (GameConst::$allItems as $itemType => $itemCategories) {
|
||||||
|
if (key_exists($itemType, $invalidItemType)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
foreach ($itemCategories as $itemCode => $cnt) {
|
foreach ($itemCategories as $itemCode => $cnt) {
|
||||||
|
if ($cnt == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (!key_exists($itemCode, $occupiedUnique)) {
|
if (!key_exists($itemCode, $occupiedUnique)) {
|
||||||
$availableUnique[] = [[$itemType, $itemCode], $cnt];
|
$availableUnique[] = [[$itemType, $itemCode], $cnt];
|
||||||
continue;
|
continue;
|
||||||
@@ -1565,9 +1640,29 @@ function giveRandomUniqueItem(General $general, string $acquireType): bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$availableUnique) {
|
if (!$availableUnique) {
|
||||||
|
if ($general->getAuxVar('inheritRandomUnique')) {
|
||||||
|
$general->setAuxVar('inheritRandomUnique', null);
|
||||||
|
$general->increaseInheritancePoint('previous', GameConst::$inheritItemRandomPoint);
|
||||||
|
$userLogger = new UserLogger($general->getVar('owner'));
|
||||||
|
$userLogger->push(sprintf("얻을 유니크가 없어 %d 포인트 반환", GameConst::$inheritItemRandomPoint), "inheritPoint");
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if ($general->getAuxVar('inheritRandomUnique')) {
|
||||||
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
[$year, $month, $initYear, $initMonth] = $gameStor->getValuesAsArray(['year', 'month', 'init_year', 'init_month']);
|
||||||
|
|
||||||
|
$relMonthByInit = Util::joinYearMonth($year, $month) - Util::joinYearMonth($initYear, $initMonth);
|
||||||
|
$availableBuyUnique = $relMonthByInit >= GameConst::$minMonthToAllowInheritItem;
|
||||||
|
|
||||||
|
if($availableBuyUnique){
|
||||||
|
$general->setAuxVar('inheritRandomUnique', null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[$itemType, $itemCode] = Util::choiceRandomUsingWeightPair($availableUnique);
|
[$itemType, $itemCode] = Util::choiceRandomUsingWeightPair($availableUnique);
|
||||||
|
|
||||||
$nationName = $general->getStaticNation()['name'];
|
$nationName = $general->getStaticNation()['name'];
|
||||||
@@ -1591,6 +1686,207 @@ function giveRandomUniqueItem(General $general, string $acquireType): bool
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function rollbackInheritUniqueTrial(General $general, string $itemKey, string $reason)
|
||||||
|
{
|
||||||
|
|
||||||
|
$ownerID = $general->getVar('owner');
|
||||||
|
|
||||||
|
$db = DB::db();
|
||||||
|
|
||||||
|
$itemTrials = $general->getAuxVar('inheritUniqueTrial');
|
||||||
|
LogText("선택유니크 롤백:{$ownerID}", [$itemKey, $itemTrials]);
|
||||||
|
unset($itemTrials[$itemKey]);
|
||||||
|
if (count($itemTrials) == 0) {
|
||||||
|
$itemTrials = null;
|
||||||
|
}
|
||||||
|
$general->setAuxVar('inheritUniqueTrial', $itemTrials);
|
||||||
|
|
||||||
|
|
||||||
|
$trialStor = KVStorage::getStorage($db, "ut_{$itemKey}");
|
||||||
|
$ownTrial = $trialStor->getValue("u{$ownerID}");
|
||||||
|
|
||||||
|
$itemObj = buildItemClass($itemKey);
|
||||||
|
$itemName = $itemObj->getName();
|
||||||
|
|
||||||
|
if ($ownTrial) {
|
||||||
|
//두 값이 general, KVStorage 둘다 있고, 이중에선 KVStorage 값을 기준으로 하자 따르자
|
||||||
|
[,, $amount] = $ownTrial;
|
||||||
|
$trialStor->deleteValue("u{$ownerID}");
|
||||||
|
$general->increaseInheritancePoint('previous', $amount);
|
||||||
|
LogText("선택유니크 롤백포인트:{$ownerID}", $amount);
|
||||||
|
|
||||||
|
$userLogger = new UserLogger($ownerID);
|
||||||
|
$userLogger->push("{$itemName} 입찰에 사용한 {$amount} 포인트 반환", "inheritPoint");
|
||||||
|
}
|
||||||
|
|
||||||
|
//메시지
|
||||||
|
|
||||||
|
$staticNation = $general->getStaticNation();
|
||||||
|
|
||||||
|
$unlimited = new \DateTime('9999-12-31');
|
||||||
|
$src = new MessageTarget(0, '', 0, 'System', '#000000');
|
||||||
|
$dest = new MessageTarget($general->getID(), $general->getName(), $general->getNationID(), $staticNation['name'], $staticNation['color'], GetImageURL($general->getVar('imgsvr'), $general->getVar('picture')));
|
||||||
|
$josaUl = JosaUtil::pick($itemName, '을');
|
||||||
|
$msg = new Message(
|
||||||
|
Message::MSGTYPE_PRIVATE,
|
||||||
|
$src,
|
||||||
|
$dest,
|
||||||
|
"{$itemName}{$josaUl} 얻지 못했습니다. {$reason}",
|
||||||
|
new DateTime(),
|
||||||
|
$unlimited,
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
$general->applyDB($db);
|
||||||
|
$msg->send(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function tryRollbackInheritUniqueItem(General $general): void
|
||||||
|
{
|
||||||
|
tryInheritUniqueItem($general, 'Rollback', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function tryInheritUniqueItem(General $general, string $acquireType = '아이템', bool $justRollback = false): bool
|
||||||
|
{
|
||||||
|
$ownerID = $general->getVar('owner');
|
||||||
|
if (!$ownerID) {
|
||||||
|
LogText("선택유니크 실패???: {$ownerID}", $general->getName());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$itemTrials = $general->getAuxVar('inheritUniqueTrial') ?? [];
|
||||||
|
arsort($itemTrials);
|
||||||
|
LogText("선택유니크항목: {$ownerID}", $itemTrials);
|
||||||
|
|
||||||
|
$db = DB::db();
|
||||||
|
|
||||||
|
$ownTarget = null;
|
||||||
|
$ownType = null;
|
||||||
|
|
||||||
|
foreach ($itemTrials as $itemKey => $amount) {
|
||||||
|
$availableItemTypes = [];
|
||||||
|
$reasons = [];
|
||||||
|
foreach (GameConst::$allItems as $itemType => $itemList) {
|
||||||
|
//아직은 그런 경우는 없지만 동일 유니크를 여러 부위에 장착할 수 있을지도 모름
|
||||||
|
if (!key_exists($itemKey, $itemList)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$ownItem = $general->getItem($itemType);
|
||||||
|
if ($ownItem->getRawClassName() == $itemKey) {
|
||||||
|
$reasons[] = '이미 그 유니크를 가지고 있습니다.';
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
if (!$ownItem->isBuyable()) {
|
||||||
|
$reasons[] = '이미 다른 유니크를 가지고 있습니다.';
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
$availableCnt = $itemList[$itemKey];
|
||||||
|
$occupiedCnt = $db->queryFirstField('SELECT count(*) FROM general WHERE %b = %s', $itemType, $itemKey);
|
||||||
|
if ($occupiedCnt >= $availableCnt) {
|
||||||
|
$reasons[] = '그 유니크는 모두 점유되었습니다.';
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$availableItemTypes[] = $itemType;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$availableItemTypes) {
|
||||||
|
rollbackInheritUniqueTrial($general, $itemKey, join(' ', $reasons));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$reasons = [];
|
||||||
|
|
||||||
|
$itemType = Util::choiceRandom($availableItemTypes);
|
||||||
|
|
||||||
|
$trialStor = KVStorage::getStorage($db, "ut_{$itemKey}"); //혹시 itemKey의 크기가 37이 넘을 수 있을까?
|
||||||
|
$anyTrials = $trialStor->getAll();
|
||||||
|
if (!$anyTrials) {
|
||||||
|
//순서가 꼬였던 모양, 실제 값은 storage를 우선시하자
|
||||||
|
rollbackInheritUniqueTrial($general, $itemKey, '절차상의 오류입니다.');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//XXX: 정렬할 필요 없지 않나?
|
||||||
|
usort($anyTrials, function ($lhsTrial, $rhsTrial) {
|
||||||
|
[,, $lhsAmount] = $lhsTrial;
|
||||||
|
[,, $rhsAmount] = $rhsTrial;
|
||||||
|
return $rhsAmount <=> $lhsAmount; //큰 값이 앞에 오도록
|
||||||
|
});
|
||||||
|
|
||||||
|
LogText("선택유니크상태 {$ownerID} {$itemKey}", $anyTrials);
|
||||||
|
|
||||||
|
//공동 1등인데 본인이 있을 수도 있다.
|
||||||
|
[,, $topAmount] = $anyTrials[0];
|
||||||
|
if ($amount < $topAmount) {
|
||||||
|
$compAmount = $topAmount / $amount;
|
||||||
|
if ($compAmount > 2.0) {
|
||||||
|
$compText = '엄청난 차이로 ';
|
||||||
|
} else if ($compAmount > 1.2) {
|
||||||
|
$compText = '큰 차이로 ';
|
||||||
|
} else if ($compAmount > 1.05) {
|
||||||
|
$compText = '';
|
||||||
|
} else {
|
||||||
|
$compText = '아슬아슬한 차이로 ';
|
||||||
|
}
|
||||||
|
rollbackInheritUniqueTrial($general, $itemKey, "{$compText}상위 입찰한 장수가 있습니다.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//내가 1위다
|
||||||
|
if ($ownTarget !== null) {
|
||||||
|
//이미 다른 아이템을 얻기로 되어있다.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$ownTarget = $itemKey;
|
||||||
|
$ownType = $itemType;
|
||||||
|
}
|
||||||
|
unset($itemKey);
|
||||||
|
unset($itemType);
|
||||||
|
|
||||||
|
if ($ownTarget === null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ($justRollback) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
LogText("선택유니크획득{$ownerID}", $ownTarget);
|
||||||
|
|
||||||
|
$trialStor = KVStorage::getStorage($db, "ut_{$ownTarget}");
|
||||||
|
$trialStor->deleteValue("u{$ownerID}");
|
||||||
|
|
||||||
|
//rollbackInheritUniqueTrial 과정 때문에 새로 받아와야함
|
||||||
|
$itemTrials = $general->getAuxVar('inheritUniqueTrial');
|
||||||
|
unset($itemTrials[$ownTarget]);
|
||||||
|
$general->setAuxVar('inheritUniqueTrial', $itemTrials);
|
||||||
|
|
||||||
|
$nationName = $general->getStaticNation()['name'];
|
||||||
|
$generalName = $general->getName();
|
||||||
|
$josaYi = JosaUtil::pick($generalName, '이');
|
||||||
|
$itemObj = buildItemClass($ownTarget);
|
||||||
|
$itemName = $itemObj->getName();
|
||||||
|
$itemRawName = $itemObj->getRawName();
|
||||||
|
$josaUl = JosaUtil::pick($itemRawName, '을');
|
||||||
|
|
||||||
|
|
||||||
|
$general->setVar($ownType, $ownTarget);
|
||||||
|
|
||||||
|
|
||||||
|
$logger = $general->getLogger();
|
||||||
|
|
||||||
|
$logger->pushGeneralActionLog("<C>{$itemName}</>{$josaUl} 습득했습니다!");
|
||||||
|
$logger->pushGeneralHistoryLog("<C>{$itemName}</>{$josaUl} 습득");
|
||||||
|
$logger->pushGlobalActionLog("<Y>{$generalName}</>{$josaYi} <C>{$itemName}</>{$josaUl} 습득했습니다!");
|
||||||
|
$logger->pushGlobalHistoryLog("<C><b>【{$acquireType}】</b></><D><b>{$nationName}</b></>의 <Y>{$generalName}</>{$josaYi} <C>{$itemName}</>{$josaUl} 습득했습니다!");
|
||||||
|
|
||||||
|
$general->applyDB($db);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
function tryUniqueItemLottery(General $general, string $acquireType = '아이템'): bool
|
function tryUniqueItemLottery(General $general, string $acquireType = '아이템'): bool
|
||||||
{
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
@@ -1600,16 +1896,50 @@ function tryUniqueItemLottery(General $general, string $acquireType = '아이템
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($general->getNPCType() > 6) {
|
$itemTypeCnt = count(GameConst::$allItems);
|
||||||
|
|
||||||
|
|
||||||
|
[$startYear, $year, $month, $initYear, $initMonth] = $gameStor->getValuesAsArray(['startyear', 'year', 'month', 'init_year', 'init_month']);
|
||||||
|
$relYear = $year - $startYear;
|
||||||
|
$maxTrialCountByYear = 1;
|
||||||
|
foreach (GameConst::$maxUniqueItemLimit as $tmpVals) {
|
||||||
|
[$targetYear, $targetTrialCnt] = $tmpVals;
|
||||||
|
if ($relYear < $targetYear) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$maxTrialCountByYear = $targetTrialCnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
$trialCnt = Util::valueFit($itemTypeCnt, null, $maxTrialCountByYear);
|
||||||
|
$maxCnt = $itemTypeCnt;
|
||||||
|
|
||||||
|
$relMonthByInit = Util::joinYearMonth($year, $month) - Util::joinYearMonth($initYear, $initMonth);
|
||||||
|
$availableBuyUnique = $relMonthByInit >= GameConst::$minMonthToAllowInheritItem;
|
||||||
|
|
||||||
|
foreach ($general->getItems() as $item) {
|
||||||
|
if (!$item->isBuyable()) {
|
||||||
|
$trialCnt -= 1;
|
||||||
|
$maxCnt -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($trialCnt <= 0) {
|
||||||
|
LogText("{$general->getName()}, {$general->getID()} 모든 아이템", $trialCnt);
|
||||||
|
if ($general->getAuxVar('inheritRandomUnique')) {
|
||||||
|
$general->setAuxVar('inheritRandomUnique', null);
|
||||||
|
$general->increaseInheritancePoint('previous', GameConst::$inheritItemRandomPoint);
|
||||||
|
$userLogger = new UserLogger($general->getVar('owner'));
|
||||||
|
$userLogger->push(sprintf("유니크를 얻을 공간이 없어 %d 포인트 반환", GameConst::$inheritItemRandomPoint), "inheritPoint");
|
||||||
|
}
|
||||||
|
tryRollbackInheritUniqueItem($general);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($general->getItems() as $item) {
|
$inheritUnique = $general->getAuxVar('inheritUniqueTrial');
|
||||||
if (!$item) {
|
if ($acquireType != '설문조사' && $inheritUnique && count($inheritUnique) && $availableBuyUnique) {
|
||||||
continue;
|
$trialResult = tryInheritUniqueItem($general, $acquireType);
|
||||||
}
|
if ($trialResult) {
|
||||||
if (!$item->isBuyable()) {
|
return true;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1617,24 +1947,42 @@ function tryUniqueItemLottery(General $general, string $acquireType = '아이템
|
|||||||
$genCount = $db->queryFirstField('SELECT count(*) FROM general WHERE npc<2');
|
$genCount = $db->queryFirstField('SELECT count(*) FROM general WHERE npc<2');
|
||||||
|
|
||||||
if ($scenario < 100) {
|
if ($scenario < 100) {
|
||||||
$prob = 1 / ($genCount * 5); // 5~6개월에 하나씩 등장
|
$prob = 1 / ($genCount * 3 * $itemTypeCnt); // 3~4개월에 하나씩 등장
|
||||||
} else {
|
} else {
|
||||||
$prob = 1 / $genCount; // 1~2개월에 하나씩 등장
|
$prob = 1 / ($genCount * $itemTypeCnt); // 1~2개월에 하나씩 등장
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($acquireType == '설문조사') {
|
if ($acquireType == '설문조사') {
|
||||||
$prob = 1 / ($genCount * 0.7 / 3); // 투표율 70%, 설문조사 한번에 2~3개 등장
|
$prob = 1 / ($genCount * $itemTypeCnt * 0.7 / 3); // 투표율 70%, 설문조사 한번에 2~3개 등장
|
||||||
} else if ($acquireType == '랜덤 임관') {
|
} else if ($acquireType == '랜덤 임관') {
|
||||||
$prob = 1 / ($genCount / 10 / 2); // 랜임시 2개(10%) 등장(200명중 20명 랜임시도?)
|
$prob = 1 / ($genCount * $itemTypeCnt / 10 / 2); // 랜임시 2개(10%) 등장(200명중 20명 랜임시도?)
|
||||||
} else if ($acquireType == '건국') {
|
} else if ($acquireType == '건국') {
|
||||||
$prob = 1 / ($genCount / 10 / 4); // 건국시 4개(20%) 등장(200명시 20국 정도 됨)
|
$prob = 1 / ($genCount * $itemTypeCnt / 10 / 4); // 건국시 4개(20%) 등장(200명시 20국 정도 됨)
|
||||||
}
|
}
|
||||||
|
|
||||||
$prob = Util::valueFit($prob, null, 1 / 3);
|
$prob = Util::valueFit($prob, null, 1 / 4); //최대치 감소
|
||||||
|
$result = false;
|
||||||
|
|
||||||
if (!Util::randBool($prob)) {
|
$prob /= sqrt(2);
|
||||||
|
$moreProb = pow(2, 1 / 4);
|
||||||
|
|
||||||
|
if ($general->getAuxVar('inheritRandomUnique') && $availableBuyUnique) {
|
||||||
|
//포인트로 랜덤 유니크 획득
|
||||||
|
$prob = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (Util::range($maxCnt) as $_idx) {
|
||||||
|
if (Util::randBool($prob)) {
|
||||||
|
$result = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$prob *= $moreProb;
|
||||||
|
}
|
||||||
|
if (!$result) {
|
||||||
|
LogText("{$general->getName()}, {$general->getID()} 유니크 실패 {$maxCnt}", $prob);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
LogText("{$general->getName()}, {$general->getID()} 유니크 성공 {$maxCnt}", $prob);
|
||||||
|
|
||||||
return giveRandomUniqueItem($general, $acquireType);
|
return giveRandomUniqueItem($general, $acquireType);
|
||||||
}
|
}
|
||||||
@@ -1672,7 +2020,8 @@ function deleteNation(General $lord, bool $applyDB):array
|
|||||||
$nationID,
|
$nationID,
|
||||||
$lordID
|
$lordID
|
||||||
),
|
),
|
||||||
['npc', 'gold', 'rice', 'experience', 'explevel', 'dedication', 'dedlevel', 'aux'], 1
|
['npc', 'gold', 'rice', 'experience', 'explevel', 'dedication', 'dedlevel', 'belong', 'aux'],
|
||||||
|
1
|
||||||
);
|
);
|
||||||
$nationGeneralList[$lordID] = $lord;
|
$nationGeneralList[$lordID] = $lord;
|
||||||
|
|
||||||
@@ -1689,6 +2038,13 @@ function deleteNation(General $lord, bool $applyDB):array
|
|||||||
|
|
||||||
// 전 장수 재야로
|
// 전 장수 재야로
|
||||||
foreach ($nationGeneralList as $general) {
|
foreach ($nationGeneralList as $general) {
|
||||||
|
$general->setAuxVar(
|
||||||
|
'max_belong',
|
||||||
|
max(
|
||||||
|
$general->getVar('belong'),
|
||||||
|
$general->getAuxVar('max_belong') ?? 0
|
||||||
|
)
|
||||||
|
);
|
||||||
$general->setVar('belong', 0);
|
$general->setVar('belong', 0);
|
||||||
$general->setVar('troop', 0);
|
$general->setVar('troop', 0);
|
||||||
$general->setVar('officer_level', 0);
|
$general->setVar('officer_level', 0);
|
||||||
@@ -1736,7 +2092,7 @@ function nextRuler(General $general)
|
|||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
[$year, $month] = $gameStor->getValuesAsArray(['year', 'month']);
|
[$year, $month, $fiction] = $gameStor->getValuesAsArray(['year', 'month', 'fiction']);
|
||||||
$nation = $general->getStaticNation();
|
$nation = $general->getStaticNation();
|
||||||
$nationName = $nation['name'];
|
$nationName = $nation['name'];
|
||||||
$nationID = $nation['nation'];
|
$nationID = $nation['nation'];
|
||||||
@@ -1744,7 +2100,7 @@ function nextRuler(General $general)
|
|||||||
$candidate = null;
|
$candidate = null;
|
||||||
|
|
||||||
//npc or npc유저인 경우 후계 찾기
|
//npc or npc유저인 경우 후계 찾기
|
||||||
if ($general->getNPCType() > 0) {
|
if (!$fiction && $general->getNPCType() > 0) {
|
||||||
$candidate = $db->queryFirstRow(
|
$candidate = $db->queryFirstRow(
|
||||||
'SELECT no,name,officer_level,IF(ABS(affinity-%i)>75,150-ABS(affinity-%i),ABS(affinity-%i)) as npcmatch2 from general where nation=%i and officer_level!=12 and 1 <= npc and npc<=3 order by npcmatch2,rand() LIMIT 1',
|
'SELECT no,name,officer_level,IF(ABS(affinity-%i)>75,150-ABS(affinity-%i),ABS(affinity-%i)) as npcmatch2 from general where nation=%i and officer_level!=12 and 1 <= npc and npc<=3 order by npcmatch2,rand() LIMIT 1',
|
||||||
$general->getVar('affinity'),
|
$general->getVar('affinity'),
|
||||||
@@ -2118,7 +2474,7 @@ function getRandTurn($term, ?\DateTimeInterface $baseDateTime = null)
|
|||||||
$randSecond = Util::randRangeInt(0, 60 * $term - 1);
|
$randSecond = Util::randRangeInt(0, 60 * $term - 1);
|
||||||
$randFraction = Util::randRangeInt(0, 999999) / 1000000; //6자리 소수
|
$randFraction = Util::randRangeInt(0, 999999) / 1000000; //6자리 소수
|
||||||
|
|
||||||
return $baseDateTime->add(TimeUtil::secondsToDateInterval($randSecond + $randFraction))->format('Y-m-d H:i:s');
|
return TimeUtil::format($baseDateTime->add(TimeUtil::secondsToDateInterval($randSecond + $randFraction)), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRandTurn2($term, ?\DateTimeInterface $baseDateTime = null)
|
function getRandTurn2($term, ?\DateTimeInterface $baseDateTime = null)
|
||||||
@@ -2133,5 +2489,5 @@ function getRandTurn2($term, ?\DateTimeInterface $baseDateTime = null)
|
|||||||
$randSecond = Util::randRangeInt(0, 60 * $term - 1);
|
$randSecond = Util::randRangeInt(0, 60 * $term - 1);
|
||||||
$randFraction = Util::randRangeInt(0, 999999) / 1000000; //6자리 소수
|
$randFraction = Util::randRangeInt(0, 999999) / 1000000; //6자리 소수
|
||||||
|
|
||||||
return $baseDateTime->sub(TimeUtil::secondsToDateInterval($randSecond + $randFraction))->format('Y-m-d H:i:s');
|
return $baseDateTime->sub(TimeUtil::secondsToDateInterval($randSecond + $randFraction))->format('Y-m-d H:i:s.u');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -378,6 +378,30 @@ function buildWarUnitTriggerClass(?string $type, WarUnit $unit, ?array $args = n
|
|||||||
return $class->newInstanceArgs(array_merge([$unit], $args));
|
return $class->newInstanceArgs(array_merge([$unit], $args));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getGeneralPoolClass(string $type){
|
||||||
|
static $basePath = __NAMESPACE__.'\\GeneralPool\\';
|
||||||
|
$classPath = ($basePath.$type);
|
||||||
|
|
||||||
|
if(class_exists($classPath)){
|
||||||
|
return $classPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \InvalidArgumentException("{$type}은 GeneralPool이 아님");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \MeekroDB $db
|
||||||
|
* @param int $owner
|
||||||
|
* @param int $pickCnt
|
||||||
|
* @param null|string $prefix
|
||||||
|
* @return AbsGeneralPool[]
|
||||||
|
*/
|
||||||
|
function pickGeneralFromPool(\MeekroDB $db, int $owner, int $pickCnt, ?string $prefix=null):array{
|
||||||
|
/** @var AbsGeneralPool */
|
||||||
|
$class = getGeneralPoolClass(GameConst::$targetGeneralPool);
|
||||||
|
return $class::pickGeneralFromPool($db, $owner, $pickCnt, $prefix);
|
||||||
|
}
|
||||||
|
|
||||||
function countPureGeneralFromRawList(?array $rawGeneralList=null):int{
|
function countPureGeneralFromRawList(?array $rawGeneralList=null):int{
|
||||||
if(!$rawGeneralList){
|
if(!$rawGeneralList){
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
+131
-32
@@ -167,7 +167,8 @@ function checkSupply()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateGeneralNumber(){
|
function updateGeneralNumber()
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
foreach ($db->queryAllLists('SELECT nation, count(*) FROM general WHERE npc != 5 GROUP BY nation') as [$nationID, $gennum]) {
|
foreach ($db->queryAllLists('SELECT nation, count(*) FROM general WHERE npc != 5 GROUP BY nation') as [$nationID, $gennum]) {
|
||||||
if ($nationID === 0) {
|
if ($nationID === 0) {
|
||||||
@@ -370,7 +371,11 @@ function postUpdateMonthly()
|
|||||||
sum(pop)*sum(pop+agri+comm+secu+wall+def)/sum(pop_max+agri_max+comm_max+secu_max+wall_max+def_max)/100
|
sum(pop)*sum(pop+agri+comm+secu+wall+def)/sum(pop_max+agri_max+comm_max+secu_max+wall_max+def_max)/100
|
||||||
) from city where nation=A.nation and supply=1
|
) from city where nation=A.nation and supply=1
|
||||||
))
|
))
|
||||||
+(select sum(leadership+strength+intel) from general where nation=A.nation)
|
+(select SUM((ra.value + 1000)/(rb.value + 1000)*(CASE WHEN g.`leadership` >= 40 THEN g.`leadership` ELSE 0 END)*2 + (SQRT(g.intel * g.strength) * 2 + g.leadership / 2)/2)
|
||||||
|
FROM general AS g
|
||||||
|
LEFT JOIN `rank_data` AS ra ON g.`no` = ra.general_id AND ra.`type` = \'killcrew_person\'
|
||||||
|
LEFT JOIN `rank_data` AS rb ON g.`no` = rb.general_id AND rb.`type` = \'deathcrew_person\'
|
||||||
|
WHERE g.nation = A.nation)
|
||||||
+(select round(sum(dex1+dex2+dex3+dex4+dex5)/1000) from general where nation=A.nation)
|
+(select round(sum(dex1+dex2+dex3+dex4+dex5)/1000) from general where nation=A.nation)
|
||||||
+(select round(sum(experience+dedication)/100) from general where nation=A.nation)
|
+(select round(sum(experience+dedication)/100) from general where nation=A.nation)
|
||||||
+(select round(avg(connect)) from general where nation=A.nation)
|
+(select round(avg(connect)) from general where nation=A.nation)
|
||||||
@@ -435,8 +440,7 @@ function postUpdateMonthly()
|
|||||||
foreach ($db->queryAllLists('SELECT me,you FROM diplomacy WHERE state=0 AND term <= 1 ORDER BY me desc, you desc') as [$me, $you]) {
|
foreach ($db->queryAllLists('SELECT me,you FROM diplomacy WHERE state=0 AND term <= 1 ORDER BY me desc, you desc') as [$me, $you]) {
|
||||||
if ($me < $you) {
|
if ($me < $you) {
|
||||||
$key = "{$me}_{$you}";
|
$key = "{$me}_{$you}";
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$key = "{$you}_{$me}";
|
$key = "{$you}_{$me}";
|
||||||
}
|
}
|
||||||
if (!key_exists($key, $stopWarList)) {
|
if (!key_exists($key, $stopWarList)) {
|
||||||
@@ -477,6 +481,21 @@ function postUpdateMonthly()
|
|||||||
'term' => 6,
|
'term' => 6,
|
||||||
], 'state = 1 AND term = 0');
|
], 'state = 1 AND term = 0');
|
||||||
|
|
||||||
|
$availableWarSettingCnt = KVStorage::getValuesFromInterNamespace($db, 'nation_env', 'available_war_setting_cnt');
|
||||||
|
foreach ($nations as $nation) {
|
||||||
|
$nationID = $nation['nation'];
|
||||||
|
if(!key_exists($nationID, $availableWarSettingCnt)){
|
||||||
|
$availableWarSettingCnt[$nationID] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach($availableWarSettingCnt as $nationID=>$cnt){
|
||||||
|
if($cnt >= GameConst::$maxAvailableWarSettingCnt){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$cnt = Util::valueFit($cnt + GameConst::$incAvailableWarSettingCnt, 0, GameConst::$maxAvailableWarSettingCnt);
|
||||||
|
(KVStorage::getStorage($db, $nationID, 'nation_env'))->setValue('available_war_setting_cnt', $cnt);
|
||||||
|
}
|
||||||
|
|
||||||
//초반이후 방랑군 자동 해체
|
//초반이후 방랑군 자동 해체
|
||||||
if ($admin['year'] >= $admin['startyear'] + 2) {
|
if ($admin['year'] >= $admin['startyear'] + 2) {
|
||||||
checkWander();
|
checkWander();
|
||||||
@@ -623,30 +642,49 @@ function updateNationState()
|
|||||||
$nation['nation'],
|
$nation['nation'],
|
||||||
$targetKillTurn
|
$targetKillTurn
|
||||||
);
|
);
|
||||||
$nationGenList = General::createGeneralObjListFromDB($nationGenIDList, ['belong'], 2);
|
$nationGenList = General::createGeneralObjListFromDB($nationGenIDList, ['belong', 'npc', 'aux'], 2);
|
||||||
|
$chiefID = null;
|
||||||
|
|
||||||
$uniqueLotteryWeightList = [];
|
$uniqueLotteryWeightList = [];
|
||||||
foreach ($nationGenList as $nationGen) {
|
|
||||||
$hasUnique = false;
|
[$startYear, $year] = $gameStor->getValuesAsArray(['startyear', 'year']);
|
||||||
foreach ($nationGen->getItems() as $item) {
|
$relYear = $year - $startYear;
|
||||||
if (!$item->isBuyable()) {
|
$maxTrialCountByYear = 1;
|
||||||
$hasUnique = true;
|
foreach (GameConst::$maxUniqueItemLimit as $tmpVals) {
|
||||||
|
[$targetYear, $targetTrialCnt] = $tmpVals;
|
||||||
|
if ($relYear < $targetYear) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
$maxTrialCountByYear = $targetTrialCnt;
|
||||||
}
|
}
|
||||||
if ($hasUnique) {
|
foreach ($nationGenList as $nationGen) {
|
||||||
|
if ($nationGen->getVar('officer_level') == 12) {
|
||||||
|
$chiefID = $nationGen->getID();
|
||||||
|
}
|
||||||
|
$trialCnt = min($maxTrialCountByYear, count(GameConst::$allItems));
|
||||||
|
|
||||||
|
foreach ($nationGen->getItems() as $item) {
|
||||||
|
if (!$item->isBuyable()) {
|
||||||
|
$trialCnt -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($trialCnt <= 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$score = $nationGen->getVar('belong') + 5;
|
$score = $nationGen->getVar('belong') + 5;
|
||||||
|
|
||||||
if ($nationGen->getVar('officer_level') == 12) {
|
if ($nationGen->getVar('officer_level') == 12) {
|
||||||
$score += 200; //NOTE: 꼬우면 군주하세요.
|
$score += 100; //NOTE: 꼬우면 군주하세요.
|
||||||
} else if ($nationGen->getVar('officer_level') == 11) {
|
} else if ($nationGen->getVar('officer_level') == 11) {
|
||||||
$score += 70;
|
$score += 50;
|
||||||
} else if ($nationGen->getVar('officer_level') > 4) {
|
} else if ($nationGen->getVar('officer_level') > 4) {
|
||||||
$score += 35;
|
$score += 35;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$score *= $trialCnt;
|
||||||
|
|
||||||
$uniqueLotteryWeightList[$nationGen->getID()] = [$nationGen, $score];
|
$uniqueLotteryWeightList[$nationGen->getID()] = [$nationGen, $score];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -661,6 +699,12 @@ function updateNationState()
|
|||||||
giveRandomUniqueItem($winnerObj, '작위보상');
|
giveRandomUniqueItem($winnerObj, '작위보상');
|
||||||
$winnerObj->applyDB($db);
|
$winnerObj->applyDB($db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($chiefID) {
|
||||||
|
$chiefObj = General::createGeneralObjFromDB($chiefID, ['belong', 'npc', 'aux'], 2);
|
||||||
|
$chiefObj->increaseInheritancePoint('unifier', 250 * $levelDiff);
|
||||||
|
$chiefObj->applyDB($db);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -680,31 +724,22 @@ function updateNationState()
|
|||||||
|
|
||||||
while ($assemblerCnt < $maxAssemblerCnt) {
|
while ($assemblerCnt < $maxAssemblerCnt) {
|
||||||
$lastAssemblerID += 1;
|
$lastAssemblerID += 1;
|
||||||
$npcObj = new Scenario\NPC(
|
$npcObj = new Scenario\GeneralBuilder(
|
||||||
999,
|
|
||||||
sprintf('부대장%4d', $lastAssemblerID),
|
sprintf('부대장%4d', $lastAssemblerID),
|
||||||
|
false,
|
||||||
null,
|
null,
|
||||||
$nation['nation'],
|
$nation['nation']
|
||||||
null,
|
|
||||||
10,
|
|
||||||
10,
|
|
||||||
10,
|
|
||||||
1,
|
|
||||||
$admin['year'] - 15,
|
|
||||||
$admin['year'] + 15,
|
|
||||||
'은둔',
|
|
||||||
'척사'
|
|
||||||
);
|
);
|
||||||
$npcObj->killturn = 70;
|
$npcObj->setAffinity(999)->setStat(10, 10, 10)
|
||||||
$npcObj->gold = 0;
|
->setSpecialSingle('척사')->setEgo('che_은둔')
|
||||||
$npcObj->rice = 0;
|
->setKillturn(70)->setGoldRice(0, 0)
|
||||||
$npcObj->npc = 5;
|
->setNPCType(5)->fillRemainSpecAsZero($admin);
|
||||||
$npcObj->build($admin);
|
$npcObj->build($admin);
|
||||||
$npcID = $npcObj->generalID;
|
$npcID = $npcObj->getGeneralID();
|
||||||
|
|
||||||
$db->insert('troop', [
|
$db->insert('troop', [
|
||||||
'troop_leader' => $npcID,
|
'troop_leader' => $npcID,
|
||||||
'name' => $npcObj->realName,
|
'name' => $npcObj->getGeneralName(),
|
||||||
'nation' => $nation['nation'],
|
'nation' => $nation['nation'],
|
||||||
]);
|
]);
|
||||||
$db->update('general', [
|
$db->update('general', [
|
||||||
@@ -987,6 +1022,17 @@ function checkEmperior()
|
|||||||
$nationLogger = new ActionLogger(0, $nationID, $admin['year'], $admin['month']);
|
$nationLogger = new ActionLogger(0, $nationID, $admin['year'], $admin['month']);
|
||||||
$nationLogger->pushNationalHistoryLog("<D><b>{$nationName}</b></>{$josaYi} 전토를 통일");
|
$nationLogger->pushNationalHistoryLog("<D><b>{$nationName}</b></>{$josaYi} 전토를 통일");
|
||||||
|
|
||||||
|
foreach (General::createGeneralObjListFromDB($db->queryFirstColumn('SELECT `no` FROM general WHERE npc < 2')) as $genObj) {
|
||||||
|
if ($genObj->getNationID() == $nationID) {
|
||||||
|
if ($genObj->getVar('officer_level') > 4) {
|
||||||
|
$genObj->increaseInheritancePoint('unifier', 2000);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
$genObj->mergeTotalInheritancePoint(true);
|
||||||
|
applyInheritanceUser($genObj->getVar('owner'));
|
||||||
|
$genObj->clearInheritancePoint();
|
||||||
|
}
|
||||||
|
|
||||||
$gameStor->isunited = 2;
|
$gameStor->isunited = 2;
|
||||||
$gameStor->conlimit = $gameStor->conlimit * 100;
|
$gameStor->conlimit = $gameStor->conlimit * 100;
|
||||||
|
|
||||||
@@ -1040,7 +1086,7 @@ function checkEmperior()
|
|||||||
$generalLogger->flush();
|
$generalLogger->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
$gen = join(', ', array_column($rawGeneral, 'name'));
|
$gen = join(', ', array_column($rawGeneralList, 'name'));
|
||||||
|
|
||||||
$stat = $db->queryFirstRow('SELECT max(nation_count) as nc, max(gen_count) as gc FROM statistic');
|
$stat = $db->queryFirstRow('SELECT max(nation_count) as nc, max(gen_count) as gc FROM statistic');
|
||||||
$genCnt = $db->queryFirstField('SELECT count(*) FROM general');
|
$genCnt = $db->queryFirstField('SELECT count(*) FROM general');
|
||||||
@@ -1137,3 +1183,56 @@ function checkEmperior()
|
|||||||
//연감 월결산
|
//연감 월결산
|
||||||
LogHistory();
|
LogHistory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function applyInheritanceUser(int $userID, bool $isRebirth = false): float
|
||||||
|
{
|
||||||
|
//FIXME: 은퇴, 사망, 천통 시점에 바로 반영한다면 여기가 아니라 general class로 이동하는 것이 옳음
|
||||||
|
//또한 굳이 merge, apply, clean 3단계를 거쳐야 할 이유도 없음
|
||||||
|
$rebirthDegraded = [
|
||||||
|
'dex' => 0.5,
|
||||||
|
];
|
||||||
|
|
||||||
|
$inheritStor = KVStorage::getStorage(DB::db(), "inheritance_{$userID}");
|
||||||
|
$totalPoint = 0;
|
||||||
|
$allPoints = $inheritStor->getAll();
|
||||||
|
if (!$allPoints || count($allPoints) == 0) {
|
||||||
|
//비었으므로 리셋 안함
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (count($allPoints) == 1 && key_exists('previous', $allPoints)) {
|
||||||
|
//이미 리셋되었으므로 리셋 안함
|
||||||
|
return $allPoints['previous'][0];
|
||||||
|
}
|
||||||
|
|
||||||
|
$userLogger = new UserLogger($userID);
|
||||||
|
|
||||||
|
$previousPoint = ($allPoints['previous'] ?? [0, 0])[0];
|
||||||
|
|
||||||
|
foreach ($allPoints as $key => [$value,]) {
|
||||||
|
if ($isRebirth && key_exists($key, $rebirthDegraded)) {
|
||||||
|
$value *= $rebirthDegraded[$key];
|
||||||
|
}
|
||||||
|
$keyText = General::INHERITANCE_KEY[$key][2];
|
||||||
|
$userLogger->push("{$keyText} 포인트 {$value} 증가", "inheritPoint");
|
||||||
|
$totalPoint += $value;
|
||||||
|
}
|
||||||
|
$totalPoint = Util::toInt($totalPoint);
|
||||||
|
$userLogger->push("포인트 {$previousPoint} => {$totalPoint}", "inheritPoint");
|
||||||
|
$userLogger->flush();
|
||||||
|
|
||||||
|
$inheritStor->resetValues();
|
||||||
|
$inheritStor->setValue('previous', [$totalPoint, null]);
|
||||||
|
return $totalPoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateMaxDomesticCritical(General $general, $score)
|
||||||
|
{
|
||||||
|
$maxDomesticCritical = $general->getAuxVar('max_domestic_critical') ?? 0;
|
||||||
|
$maxDomesticCritical += $score / 2;
|
||||||
|
$general->setAuxVar('max_domestic_critical', $maxDomesticCritical);
|
||||||
|
|
||||||
|
$oldMaxDomesticCritical = $general->getInheritancePoint('max_domestic_critical');
|
||||||
|
if ($maxDomesticCritical > $oldMaxDomesticCritical) {
|
||||||
|
$general->setInheritancePoint('max_domestic_critical', $maxDomesticCritical);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -77,12 +77,6 @@ function pushProcessLog($log) {
|
|||||||
pushRawFileLog(__DIR__."/logs/".UniqueConst::$serverID."/_{$date}_processlog.txt", $log);
|
pushRawFileLog(__DIR__."/logs/".UniqueConst::$serverID."/_{$date}_processlog.txt", $log);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function pushStepLog($log) {
|
|
||||||
$date = date('Y_m_d');
|
|
||||||
pushRawFileLog(__DIR__."/logs/".UniqueConst::$serverID."/_{$date}_steplog.txt", $log);
|
|
||||||
}
|
|
||||||
|
|
||||||
function pushLockLog($log) {
|
function pushLockLog($log) {
|
||||||
$date = date('Y_m_d');
|
$date = date('Y_m_d');
|
||||||
pushRawFileLog(__DIR__."/logs/".UniqueConst::$serverID."/_{$date}_locklog.txt", $log);
|
pushRawFileLog(__DIR__."/logs/".UniqueConst::$serverID."/_{$date}_locklog.txt", $log);
|
||||||
@@ -378,8 +372,6 @@ function getGlobalActionLogWithDate(int $year, int $month):array {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function LogHistory($isFirst=0) {
|
function LogHistory($isFirst=0) {
|
||||||
if(STEP_LOG) pushStepLog(TimeUtil::now().', LogHistory Start');
|
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
$obj = $gameStor->getValues(['startyear', 'year', 'month']);
|
$obj = $gameStor->getValues(['startyear', 'year', 'month']);
|
||||||
@@ -426,8 +418,6 @@ function LogHistory($isFirst=0) {
|
|||||||
return -($lhs['power']<=>$rhs['power']);
|
return -($lhs['power']<=>$rhs['power']);
|
||||||
});
|
});
|
||||||
|
|
||||||
if(STEP_LOG) pushStepLog(TimeUtil::now().', contents collected');
|
|
||||||
|
|
||||||
$db->insert('ng_history', [
|
$db->insert('ng_history', [
|
||||||
'server_id' => UniqueConst::$serverID,
|
'server_id' => UniqueConst::$serverID,
|
||||||
'year' => $year,
|
'year' => $year,
|
||||||
@@ -438,6 +428,5 @@ function LogHistory($isFirst=0) {
|
|||||||
'nations' => Json::encode($nations),
|
'nations' => Json::encode($nations),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if(STEP_LOG) pushStepLog(TimeUtil::now().', LogHistory Finish');
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
+51
-28
@@ -1,33 +1,47 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
function printLimitMsg($turntime) {
|
function printLimitMsg($turntime)
|
||||||
|
{
|
||||||
//FIXME: template로 이동.
|
//FIXME: template로 이동.
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>접속제한</title>
|
<title>접속제한</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<font size=4><b>
|
<font size=4><b>
|
||||||
접속 제한중입니다. 1턴 이내에 너무 많은 갱신을 하셨습니다. (다음 접속 가능 시각 : <?= $turntime ?>)<br>
|
접속 제한중입니다. 1턴 이내에 너무 많은 갱신을 하셨습니다. (다음 접속 가능 시각 : <?= $turntime ?>)<br>
|
||||||
(자신의 턴이 되면 다시 접속 가능합니다. 당신의 건강을 위해 잠시 쉬어보시는 것은 어떨까요? ^^)<br>
|
(자신의 턴이 되면 다시 접속 가능합니다. 당신의 건강을 위해 잠시 쉬어보시는 것은 어떨까요? ^^)<br>
|
||||||
</b></font>
|
</b></font>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function bar($per, $h=7) {
|
function bar($per, $h = 7)
|
||||||
if($h == 7) { $bd = 0; $h = 7; $h2 = 5; }
|
{
|
||||||
else { $bd = 1; $h = 12; $h2 = 8; }
|
if ($h == 7) {
|
||||||
|
$bd = 0;
|
||||||
|
$h = 7;
|
||||||
|
$h2 = 5;
|
||||||
|
} else {
|
||||||
|
$bd = 1;
|
||||||
|
$h = 12;
|
||||||
|
$h2 = 8;
|
||||||
|
}
|
||||||
|
|
||||||
$per = round($per, 1);
|
$per = round($per, 1);
|
||||||
|
|
||||||
@@ -39,7 +53,8 @@ function bar($per, $h=7) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function optionsForCities(callable $infoCall=null) {
|
function optionsForCities(callable $infoCall = null)
|
||||||
|
{
|
||||||
|
|
||||||
if (!$infoCall) {
|
if (!$infoCall) {
|
||||||
return join('', array_map(function ($city) {
|
return join('', array_map(function ($city) {
|
||||||
@@ -61,7 +76,8 @@ function optionsForCities(callable $infoCall=null) {
|
|||||||
return join('', array_merge($infoList, $noInfoList));
|
return join('', array_merge($infoList, $noInfoList));
|
||||||
}
|
}
|
||||||
|
|
||||||
function Submit($url, $msg="", $msg2="") {
|
function Submit($url, $msg = "", $msg2 = "")
|
||||||
|
{
|
||||||
echo "a"; // 파폭 버그 때문
|
echo "a"; // 파폭 버그 때문
|
||||||
echo "
|
echo "
|
||||||
<form method=post name=f1 action='{$url}'>
|
<form method=post name=f1 action='{$url}'>
|
||||||
@@ -73,35 +89,36 @@ function Submit($url, $msg="", $msg2="") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function GetNationColors() {
|
function GetNationColors()
|
||||||
$colors = array("#FF0000", "#800000", "#A0522D", "#FF6347", "#FFA500", "#FFDAB9", "#FFD700", "#FFFF00",
|
{
|
||||||
|
$colors = array(
|
||||||
|
"#FF0000", "#800000", "#A0522D", "#FF6347", "#FFA500", "#FFDAB9", "#FFD700", "#FFFF00",
|
||||||
"#7CFC00", "#00FF00", "#808000", "#008000", "#2E8B57", "#008080", "#20B2AA", "#6495ED", "#7FFFD4",
|
"#7CFC00", "#00FF00", "#808000", "#008000", "#2E8B57", "#008080", "#20B2AA", "#6495ED", "#7FFFD4",
|
||||||
"#AFEEEE", "#87CEEB", "#00FFFF", "#00BFFF", "#0000FF", "#000080", "#483D8B", "#7B68EE", "#BA55D3",
|
"#AFEEEE", "#87CEEB", "#00FFFF", "#00BFFF", "#0000FF", "#000080", "#483D8B", "#7B68EE", "#BA55D3",
|
||||||
"#800080", "#FF00FF", "#FFC0CB", "#F5F5DC", "#E0FFFF", "#FFFFFF", "#A9A9A9");
|
"#800080", "#FF00FF", "#FFC0CB", "#F5F5DC", "#E0FFFF", "#FFFFFF", "#A9A9A9"
|
||||||
|
);
|
||||||
return $colors;
|
return $colors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function backButton() {
|
function backButton()
|
||||||
return "
|
{
|
||||||
<input type=button value='돌아가기' onclick=location.replace('./')><br>
|
return "<button type='button' class='btn btn-primary back_btn' onclick=location.replace('./')>돌아가기</button><br>";
|
||||||
";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function CoreBackButton() {
|
function CoreBackButton()
|
||||||
return "
|
{
|
||||||
<input type=button value='돌아가기' onclick=location.replace('b_chiefcenter.php')><br>
|
return "<button type='button' class='btn btn-primary back_btn' onclick=location.replace('b_chiefcenter.php')>돌아가기</button><br>";
|
||||||
";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function closeButton() {
|
function closeButton()
|
||||||
return "
|
{
|
||||||
<input type=button value='창 닫기' onclick=window.close()><br>
|
return "<button type='button' class='btn btn-primary back_btn' onclick=window.close()>창 닫기</button><br>";
|
||||||
";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function printCitiesBasedOnDistance(int $cityNo, int $maxDistance=1):string {
|
function printCitiesBasedOnDistance(int $cityNo, int $maxDistance = 1): string
|
||||||
|
{
|
||||||
$distanceList = searchDistance($cityNo, $maxDistance, true);
|
$distanceList = searchDistance($cityNo, $maxDistance, true);
|
||||||
$result = [];
|
$result = [];
|
||||||
|
|
||||||
@@ -113,9 +130,15 @@ function printCitiesBasedOnDistance(int $cityNo, int $maxDistance=1):string {
|
|||||||
$cityStr = join(', ', $cityList);
|
$cityStr = join(', ', $cityList);
|
||||||
|
|
||||||
switch ($dist) {
|
switch ($dist) {
|
||||||
case 1: $color = "magenta"; break;
|
case 1:
|
||||||
case 2: $color = "orange"; break;
|
$color = "magenta";
|
||||||
default: $color = "yellow"; break;
|
break;
|
||||||
|
case 2:
|
||||||
|
$color = "orange";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$color = "yellow";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$result[] = "{$dist}칸 떨어진 도시 : <span style='color:{$color};font-weight:bold;'>{$cityStr}</span>";
|
$result[] = "{$dist}칸 떨어진 도시 : <span style='color:{$color};font-weight:bold;'>{$cityStr}</span>";
|
||||||
@@ -124,7 +147,8 @@ function printCitiesBasedOnDistance(int $cityNo, int $maxDistance=1):string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function info($type=0) {
|
function info($type = 0)
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
@@ -146,4 +170,3 @@ function info($type=0) {
|
|||||||
return "등록 장수 : 유저 {$gencount} / {$admin['maxgeneral']} 명 + <font color=cyan>NPC {$npccount} 명</font>";
|
return "등록 장수 : 유저 {$gencount} / {$admin['maxgeneral']} 명 + <font color=cyan>NPC {$npccount} 명</font>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+56
-29
@@ -28,7 +28,8 @@ function requireAdminPermissionHTML()
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=1024" />
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?= WebUtil::printCSS('css/common.css') ?>
|
<?= WebUtil::printDist('ts', 'common', true) ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@@ -41,28 +42,6 @@ function requireAdminPermissionHTML()
|
|||||||
return ob_get_clean();
|
return ob_get_clean();
|
||||||
}
|
}
|
||||||
|
|
||||||
function turnTable()
|
|
||||||
{
|
|
||||||
|
|
||||||
$turnList = [];
|
|
||||||
$turnList[] = "<option selected value='0'>1턴</option>";
|
|
||||||
foreach (Util::range(1, GameConst::$maxTurn) as $turnIdx) {
|
|
||||||
$turnText = $turnIdx + 1;
|
|
||||||
$turnList[] = "<option value='{$turnIdx}'>{$turnText}턴</option>";
|
|
||||||
}
|
|
||||||
|
|
||||||
$turnText = join("\n", $turnList);
|
|
||||||
|
|
||||||
return "
|
|
||||||
<select id='generalTurnSelector' name=turn[] size=11 multiple>
|
|
||||||
<option value='-3'>전체</option>
|
|
||||||
<option value='-1'>홀턴</option>
|
|
||||||
<option value='-2'>짝턴</option>
|
|
||||||
{$turnText}
|
|
||||||
</select>
|
|
||||||
";
|
|
||||||
}
|
|
||||||
|
|
||||||
function chiefTurnTable()
|
function chiefTurnTable()
|
||||||
{
|
{
|
||||||
$turnList = [];
|
$turnList = [];
|
||||||
@@ -140,7 +119,7 @@ function displaySpecialDomesticInfo(?string $type): string
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function allButton(bool $seizeNPCMode)
|
function allButton(bool $seizeNPCMode, array $opts = [])
|
||||||
{
|
{
|
||||||
if ($seizeNPCMode) {
|
if ($seizeNPCMode) {
|
||||||
$site = "a_npcList.php";
|
$site = "a_npcList.php";
|
||||||
@@ -157,14 +136,14 @@ function allButton(bool $seizeNPCMode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return $templates->render('allButton', [
|
return $templates->render('allButton', array_merge([
|
||||||
'call' => $call,
|
'call' => $call,
|
||||||
'site' => $site
|
'site' => $site
|
||||||
]);
|
], $opts));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function commandButton()
|
function commandButton(array $opts = [])
|
||||||
{
|
{
|
||||||
$session = Session::getInstance();
|
$session = Session::getInstance();
|
||||||
$userID = Session::getUserID();
|
$userID = Session::getUserID();
|
||||||
@@ -194,14 +173,14 @@ function commandButton()
|
|||||||
$showSecret = false;
|
$showSecret = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $templates->render('commandButton', [
|
return $templates->render('commandButton', array_merge([
|
||||||
'bgColor' => $bgColor,
|
'bgColor' => $bgColor,
|
||||||
'fgColor' => $fgColor,
|
'fgColor' => $fgColor,
|
||||||
'meLevel' => $me['officer_level'],
|
'meLevel' => $me['officer_level'],
|
||||||
'nationLevel' => $nation['level'],
|
'nationLevel' => $nation['level'],
|
||||||
'showSecret' => $showSecret,
|
'showSecret' => $showSecret,
|
||||||
'permission' => $permission,
|
'permission' => $permission,
|
||||||
]);
|
], $opts));
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatWounded(int $value, int $wound): string
|
function formatWounded(int $value, int $wound): string
|
||||||
@@ -272,3 +251,51 @@ function getInvitationList(array $nationList)
|
|||||||
'nationList' => $nationList
|
'nationList' => $nationList
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getAutorunInfo($autorunOption)
|
||||||
|
{
|
||||||
|
$templates = new \League\Plates\Engine(__DIR__ . '/templates');
|
||||||
|
$auto_info = [];
|
||||||
|
foreach ($autorunOption['options'] as $auto_option => $value) {
|
||||||
|
assert($value);
|
||||||
|
switch ($auto_option) {
|
||||||
|
case 'develop':
|
||||||
|
$auto_info['내정'] = '내정';
|
||||||
|
break;
|
||||||
|
case 'warp':
|
||||||
|
$auto_info['순간이동'] = '순간이동';
|
||||||
|
break;
|
||||||
|
case 'recruit':
|
||||||
|
$auto_info['징병'] = $auto_info['징병'] ?? '징병';
|
||||||
|
break;
|
||||||
|
case 'recruit_high':
|
||||||
|
$auto_info['징병'] = '모병';
|
||||||
|
break;
|
||||||
|
case 'train':
|
||||||
|
$auto_info['훈사'] = '훈련/사기진작';
|
||||||
|
break;
|
||||||
|
case 'battle':
|
||||||
|
$auto_info['출병'] = '출병';
|
||||||
|
break;
|
||||||
|
case 'chief':
|
||||||
|
$auto_info['사령턴'] = '사령턴';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$limit = Util::toInt($autorunOption['limit_minutes']);
|
||||||
|
if ($limit >= 43200) {
|
||||||
|
$auto_info['제한'] = '항상 유효';
|
||||||
|
} else if ($limit % 60 == 0) {
|
||||||
|
$auto_info['제한'] = ($limit / 60) . '시간 유효';
|
||||||
|
} else {
|
||||||
|
$auto_info['제한'] = ($limit) . '분 유효';
|
||||||
|
}
|
||||||
|
$auto_info = join(', ', array_values($auto_info));
|
||||||
|
return $templates->render('tooltip', [
|
||||||
|
'text' => '자율행동',
|
||||||
|
'info' => $auto_info,
|
||||||
|
'style' => 'text-decoration:underline',
|
||||||
|
'copyable_info' => true
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|||||||
+890
-226
@@ -1,79 +1,129 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
|
|
||||||
function processTournament() {
|
function processTournament()
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
$admin = $gameStor->getValues(['tournament', 'phase', 'tnmt_type', 'tnmt_auto', 'tnmt_time']);
|
$admin = $gameStor->getValues(['tournament', 'phase', 'tnmt_type', 'tnmt_auto', 'tnmt_time']);
|
||||||
$now = new \DateTime();
|
$now = new \DateTime();
|
||||||
$admin['now'] = $now->format('Y-m-d H:i:s');
|
$offset = $now->getTimestamp() - (new \DateTime($admin['tnmt_time']))->getTimestamp();
|
||||||
$admin['offset'] = $now->getTimestamp() - (new \DateTime($admin['tnmt_time']))->getTimestamp();
|
|
||||||
|
|
||||||
//수동일땐 무시
|
//수동일땐 무시
|
||||||
if($admin['tnmt_auto'] == 0) { return; }
|
if ($admin['tnmt_auto'] == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$type = $admin['tnmt_type'];
|
$type = $admin['tnmt_type'];
|
||||||
$tnmt = $admin['tournament'];
|
$tnmt = $admin['tournament'];
|
||||||
$phase = $admin['phase'];
|
$phase = $admin['phase'];
|
||||||
|
|
||||||
|
if ($offset < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//현시간이 스탬프 지나친경우
|
//현시간이 스탬프 지나친경우
|
||||||
if($admin['offset'] >= 0) {
|
|
||||||
switch ($admin['tnmt_auto']) {
|
switch ($admin['tnmt_auto']) {
|
||||||
case 1: $unit = 720; break;
|
case 1:
|
||||||
case 2: $unit = 420; break;
|
$unit = 720;
|
||||||
case 3: $unit = 180; break;
|
break;
|
||||||
case 4: $unit = 60; break;
|
case 2:
|
||||||
case 5: $unit = 30; break;
|
$unit = 420;
|
||||||
case 6: $unit = 15; break;
|
break;
|
||||||
case 7: $unit = 5; break;
|
case 3:
|
||||||
default: throw new MustNotBeReachedException();
|
$unit = 180;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$unit = 60;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$unit = 30;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$unit = 15;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$unit = 5;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new MustNotBeReachedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
//업데이트 횟수
|
//업데이트 횟수
|
||||||
$iter = intdiv($admin['offset'], $unit) + 1;
|
$iter = intdiv($offset, $unit) + 1;
|
||||||
|
|
||||||
for ($i = 0; $i < $iter; $i++) {
|
for ($i = 0; $i < $iter; $i++) {
|
||||||
switch ($tnmt) {
|
switch ($tnmt) {
|
||||||
case 1: //신청 마감
|
case 1: //신청 마감
|
||||||
fillLowGenAll();
|
fillLowGenAll($type);
|
||||||
$tnmt = 2; $phase = 0;
|
$tnmt = 2;
|
||||||
|
$phase = 0;
|
||||||
break;
|
break;
|
||||||
case 2: //예선중
|
case 2: //예선중
|
||||||
qualify($type, $tnmt, $phase); $phase++;
|
qualify($type, $tnmt, $phase);
|
||||||
if($phase >= 56) { $tnmt = 3; $phase = 0; }
|
$phase++;
|
||||||
|
if ($phase >= 56) {
|
||||||
|
$tnmt = 3;
|
||||||
|
$phase = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 3: //추첨중
|
case 3: //추첨중
|
||||||
selectionAll($type, $tnmt, $phase); $phase+=8;
|
selectionAll($type, $tnmt, $phase);
|
||||||
if($phase >= 32) { $tnmt = 4; $phase = 0; }
|
$phase += 8;
|
||||||
|
if ($phase >= 32) {
|
||||||
|
$tnmt = 4;
|
||||||
|
$phase = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 4: //본선중
|
case 4: //본선중
|
||||||
finallySingle($type, $tnmt, $phase); $phase++;
|
finallySingle($type, $tnmt, $phase);
|
||||||
if($phase >= 6) { $tnmt = 5; $phase = 0; }
|
$phase++;
|
||||||
|
if ($phase >= 6) {
|
||||||
|
$tnmt = 5;
|
||||||
|
$phase = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 5: //배정중
|
case 5: //배정중
|
||||||
final16set();
|
final16set();
|
||||||
$tnmt = 6; $phase = 0;
|
$tnmt = 6;
|
||||||
|
$phase = 0;
|
||||||
|
startBetting();
|
||||||
break;
|
break;
|
||||||
case 6: //베팅중
|
case 6: //베팅중
|
||||||
$tnmt = 7; $phase = 0;
|
$tnmt = 7;
|
||||||
|
$phase = 0;
|
||||||
break;
|
break;
|
||||||
case 7: //16강중
|
case 7: //16강중
|
||||||
finalFight($type, $tnmt, $phase, 16); $phase++;
|
finalFight($type, $tnmt, $phase, 16);
|
||||||
if($phase >= 8) { $tnmt = 8; $phase = 0; }
|
$phase++;
|
||||||
|
if ($phase >= 8) {
|
||||||
|
$tnmt = 8;
|
||||||
|
$phase = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 8: //8강중
|
case 8: //8강중
|
||||||
finalFight($type, $tnmt, $phase, 8); $phase++;
|
finalFight($type, $tnmt, $phase, 8);
|
||||||
if($phase >= 4) { $tnmt = 9; $phase = 0; }
|
$phase++;
|
||||||
|
if ($phase >= 4) {
|
||||||
|
$tnmt = 9;
|
||||||
|
$phase = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 9: //4강중
|
case 9: //4강중
|
||||||
finalFight($type, $tnmt, $phase, 4); $phase++;
|
finalFight($type, $tnmt, $phase, 4);
|
||||||
if($phase >= 2) { $tnmt = 10; $phase = 0; }
|
$phase++;
|
||||||
|
if ($phase >= 2) {
|
||||||
|
$tnmt = 10;
|
||||||
|
$phase = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 10: //결승중
|
case 10: //결승중
|
||||||
finalFight($type, $tnmt, $phase, 2);
|
finalFight($type, $tnmt, $phase, 2);
|
||||||
$tnmt = 0; $phase = 0;
|
$tnmt = 0;
|
||||||
|
$phase = 0;
|
||||||
setGift($type, $tnmt, $phase);
|
setGift($type, $tnmt, $phase);
|
||||||
$i = $iter;
|
$i = $iter;
|
||||||
break;
|
break;
|
||||||
@@ -82,7 +132,9 @@ function processTournament() {
|
|||||||
//베팅은 무조건 60페이즈후 진행(최대 1시간)
|
//베팅은 무조건 60페이즈후 진행(최대 1시간)
|
||||||
if ($tnmt == 6) {
|
if ($tnmt == 6) {
|
||||||
$betTerm = $unit * 60;
|
$betTerm = $unit * 60;
|
||||||
if($betTerm > 3600) { $betTerm = 3600; }
|
if ($betTerm > 3600) {
|
||||||
|
$betTerm = 3600;
|
||||||
|
}
|
||||||
//처리 초 더한 날짜
|
//처리 초 더한 날짜
|
||||||
$dt = date("Y-m-d H:i:s", strtotime($admin['tnmt_time']) + $unit * $i + $betTerm);
|
$dt = date("Y-m-d H:i:s", strtotime($admin['tnmt_time']) + $unit * $i + $betTerm);
|
||||||
$gameStor->tournament = $tnmt;
|
$gameStor->tournament = $tnmt;
|
||||||
@@ -111,72 +163,114 @@ function processTournament() {
|
|||||||
$gameStor->phase = $phase;
|
$gameStor->phase = $phase;
|
||||||
$gameStor->tnmt_time = (new \DateTimeImmutable($admin['tnmt_time']))->add(new \DateInterval("PT{$second}S"))->format('Y-m-d H:i:s');
|
$gameStor->tnmt_time = (new \DateTimeImmutable($admin['tnmt_time']))->add(new \DateInterval("PT{$second}S"))->format('Y-m-d H:i:s');
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
function getTournamentTerm() {
|
function getTournamentTerm()
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
$tnmt_auto = $gameStor->tnmt_auto;
|
$tnmt_auto = $gameStor->tnmt_auto;
|
||||||
|
|
||||||
switch ($tnmt_auto) {
|
switch ($tnmt_auto) {
|
||||||
case 0: $str = ''; break;
|
case 0:
|
||||||
case 1: $str = "경기당 12분"; break;
|
$str = '';
|
||||||
case 2: $str = "경기당 7분"; break;
|
break;
|
||||||
case 3: $str = "경기당 3분"; break;
|
case 1:
|
||||||
case 4: $str = "경기당 1분"; break;
|
$str = "경기당 12분";
|
||||||
case 5: $str = "경기당 30초"; break;
|
break;
|
||||||
case 6: $str = "경기당 15초"; break;
|
case 2:
|
||||||
case 7: $str = "경기당 5초"; break;
|
$str = "경기당 7분";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$str = "경기당 3분";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$str = "경기당 1분";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$str = "경기당 30초";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$str = "경기당 15초";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$str = "경기당 5초";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTournamentTime() {
|
function getTournamentTime()
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
list($tnmt, $tnmt_time) = $gameStor->getValuesAsArray(['tournament', 'tnmt_time']);
|
list($tnmt, $tnmt_time) = $gameStor->getValuesAsArray(['tournament', 'tnmt_time']);
|
||||||
$dt = substr($tnmt_time, 11, 5);
|
$dt = substr($tnmt_time, 11, 5);
|
||||||
switch ($tnmt) {
|
switch ($tnmt) {
|
||||||
case 1: $tnmt = "개막시간 {$dt}"; break;
|
case 1:
|
||||||
case 2: $tnmt = "다음경기 {$dt}"; break;
|
$tnmt = "개막시간 {$dt}";
|
||||||
case 3: $tnmt = "다음추첨 {$dt}"; break;
|
break;
|
||||||
case 4: $tnmt = "다음경기 {$dt}"; break;
|
case 2:
|
||||||
case 5: $tnmt = "16강배정 {$dt}"; break;
|
$tnmt = "다음경기 {$dt}";
|
||||||
case 6: $tnmt = "베팅마감 {$dt}"; break;
|
break;
|
||||||
case 7: case 8: case 9: case 10:
|
case 3:
|
||||||
$tnmt = "다음경기 {$dt}"; break;
|
$tnmt = "다음추첨 {$dt}";
|
||||||
default: $tnmt = ""; break;
|
break;
|
||||||
|
case 4:
|
||||||
|
$tnmt = "다음경기 {$dt}";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$tnmt = "16강배정 {$dt}";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$tnmt = "베팅마감 {$dt}";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
case 8:
|
||||||
|
case 9:
|
||||||
|
case 10:
|
||||||
|
$tnmt = "다음경기 {$dt}";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$tnmt = "";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return $tnmt;
|
return $tnmt;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTournament(int $tnmt) {
|
function getTournament(int $tnmt)
|
||||||
|
{
|
||||||
return [
|
return [
|
||||||
"<font color=magenta>경기 없음</font>",
|
"<span style='color:magenta;'>경기 없음</span>",
|
||||||
"<font color=orange>참가 모집중</font>",
|
"<span style='color:orange;'>참가 모집중</span>",
|
||||||
"<font color=orange>예선 진행중</font>",
|
"<span style='color:orange;'>예선 진행중</span>",
|
||||||
"<font color=orange>본선 추첨중</font>",
|
"<span style='color:orange;'>본선 추첨중</span>",
|
||||||
"<font color=orange>본선 진행중</font>",
|
"<span style='color:orange;'>본선 진행중</span>",
|
||||||
"<font color=orange>16강 배정중</font>",
|
"<span style='color:orange;'>16강 배정중</span>",
|
||||||
"<font color=orange>베팅 진행중</font>",
|
"<span style='color:orange;'>베팅 진행중</span>",
|
||||||
"<font color=orange>16강 진행중</font>",
|
"<span style='color:orange;'>16강 진행중</span>",
|
||||||
"<font color=orange>8강 진행중</font>",
|
"<span style='color:orange;'>8강 진행중</span>",
|
||||||
"<font color=orange>4강 진행중</font>",
|
"<span style='color:orange;'>4강 진행중</span>",
|
||||||
"<font color=orange>결승 진행중</font>",
|
"<span style='color:orange;'>결승 진행중</span>",
|
||||||
][$tnmt] ?? "TOURNAMENT_TYPE_ERR_{$tnmt}";
|
][$tnmt] ?? "TOURNAMENT_TYPE_ERR_{$tnmt}";
|
||||||
}
|
}
|
||||||
|
|
||||||
function printRow($k, $npc, $name, $abil, $tgame, $win, $draw, $lose, $gd, $gl, $prmt) {
|
function printRow($k, $npc, $name, $abil, $tgame, $win, $draw, $lose, $gd, $gl, $prmt)
|
||||||
|
{
|
||||||
$k += 1;
|
$k += 1;
|
||||||
if($prmt > 0) { $name = "<font color=orange>".$name."</font>"; }
|
if ($prmt > 0) {
|
||||||
elseif($npc >= 2) { $name = "<font color=cyan>".$name."</font>"; }
|
$name = "<font color=orange>" . $name . "</font>";
|
||||||
elseif($npc == 1) { $name = "<font color=skyblue>".$name."</font>"; }
|
} elseif ($npc >= 2) {
|
||||||
echo "<tr align=center><td id=bg2>$k</td><td style='font-size:80%;'>$name</td><td>$abil</td><td>$tgame</td><td>$win</td><td>$draw</td><td>$lose</td><td>$gd</td><td>$gl</td></tr>";
|
$name = "<font color=cyan>" . $name . "</font>";
|
||||||
|
} elseif ($npc == 1) {
|
||||||
|
$name = "<font color=skyblue>" . $name . "</font>";
|
||||||
|
}
|
||||||
|
echo "<tr align=center><td class='bg2'>$k</td><td style='font-size:80%;'>$name</td><td>$abil</td><td>$tgame</td><td>$win</td><td>$draw</td><td>$lose</td><td>$gd</td><td>$gl</td></tr>";
|
||||||
}
|
}
|
||||||
|
|
||||||
function printFighting($tournament, $phase) {
|
function printFighting($tournament, $phase)
|
||||||
|
{
|
||||||
$code = $tournament * 100 + $phase;
|
$code = $tournament * 100 + $phase;
|
||||||
if ($code == 0) {
|
if ($code == 0) {
|
||||||
echo "<tr valign=top>";
|
echo "<tr valign=top>";
|
||||||
@@ -228,21 +322,38 @@ function printFighting($tournament, $phase) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function startTournament($auto, $type) {
|
function startTournament($auto, $type)
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
eraseTnmtFightLogAll();
|
eraseTnmtFightLogAll();
|
||||||
|
|
||||||
switch ($auto) {
|
switch ($auto) {
|
||||||
case 1: $unit = 60; break;
|
case 1:
|
||||||
case 2: $unit = 60; break;
|
$unit = 60;
|
||||||
case 3: $unit = 60; break;
|
break;
|
||||||
case 4: $unit = 60; break;
|
case 2:
|
||||||
case 5: $unit = 30; break;
|
$unit = 60;
|
||||||
case 6: $unit = 15; break;
|
break;
|
||||||
case 7: $unit = 5; break;
|
case 3:
|
||||||
default:$unit = 60; break;
|
$unit = 60;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$unit = 60;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$unit = 30;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$unit = 15;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$unit = 5;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$unit = 60;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$admin = $gameStor->getValues(['year', 'month']);
|
$admin = $gameStor->getValues(['year', 'month']);
|
||||||
@@ -283,8 +394,7 @@ function startTournament($auto, $type) {
|
|||||||
|
|
||||||
if ($opener) {
|
if ($opener) {
|
||||||
$openerText = "황제 <Y>{$opener}</>의 명으로 ";
|
$openerText = "황제 <Y>{$opener}</>의 명으로 ";
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$openerText = '';
|
$openerText = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -296,12 +406,54 @@ function startTournament($auto, $type) {
|
|||||||
['설전', '책사'],
|
['설전', '책사'],
|
||||||
][$type];
|
][$type];
|
||||||
|
|
||||||
$history[] = "<S>◆</>{$admin['year']}년 {$admin['month']}월:{$openerText}<C>{$typeText}</> 대회가 개최됩니다! 천하의 <span class='ev_highlight'>{$genTypeText}</span>들을 모집하고 있습니다!";
|
$history[] = "<S>◆</>{$admin['year']}년 {$admin['month']}월:<B><b>【대회】</b></>{$openerText}<C>{$typeText}</> 대회가 개최됩니다! 천하의 <span class='ev_highlight'>{$genTypeText}</span>들을 모집하고 있습니다!";
|
||||||
|
|
||||||
pushGlobalHistoryLog($history, $admin['year'], $admin['month']);
|
pushGlobalHistoryLog($history, $admin['year'], $admin['month']);
|
||||||
}
|
}
|
||||||
|
|
||||||
function fillLowGenAll() {
|
function startBetting()
|
||||||
|
{
|
||||||
|
$db = DB::db();
|
||||||
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
[$year, $month, $startyear] = $gameStor->getValuesAsArray(['year', 'month', 'startyear']);
|
||||||
|
pushGlobalHistoryLog([
|
||||||
|
"<S>◆</>{$year}년 {$month}월:<B><b>【대회】</b></>우승자를 예상하는 <C>내기</>가 진행중입니다! 호사가의 참여를 기다립니다!"
|
||||||
|
], $year, $month);
|
||||||
|
|
||||||
|
$betGold = Util::valueFit(floor((3 + $year - $startyear) * 0.334) * 10, 10);
|
||||||
|
|
||||||
|
$npcList = $db->queryFirstColumn('SELECT no FROM general WHERE npc >= 2 AND gold >= (500 + %i)', $betGold);
|
||||||
|
$npcBet = [];
|
||||||
|
$betSum = [
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($npcList as $npcID) {
|
||||||
|
$target = Util::randRangeInt(0, 15);
|
||||||
|
$betSum[$target] += $betGold;
|
||||||
|
$npcBet[] = [$npcID, $target];
|
||||||
|
}
|
||||||
|
|
||||||
|
$db->update('general', [
|
||||||
|
'gold' => $db->sqleval('gold - %i', $betGold),
|
||||||
|
], 'no IN %li', $npcList);
|
||||||
|
foreach ($npcBet as [$npcID, $betTarget]) {
|
||||||
|
$targetKey = "bet{$betTarget}";
|
||||||
|
$db->update('betting', [
|
||||||
|
"bet{$betTarget}" => $db->sqleval('%b + %i', $targetKey, $betGold),
|
||||||
|
], 'general_id = %i', $npcID);
|
||||||
|
}
|
||||||
|
foreach ($betSum as $betTarget => $betSumGold) {
|
||||||
|
$targetKey = "bet{$betTarget}";
|
||||||
|
$db->update('betting', [
|
||||||
|
"bet{$betTarget}" => $db->sqleval('%b + %i', $targetKey, $betSumGold),
|
||||||
|
], 'general_id = 0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function fillLowGenAll($tnmt_type)
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
@@ -314,17 +466,7 @@ function fillLowGenAll() {
|
|||||||
'leadership' => 10,
|
'leadership' => 10,
|
||||||
'strength' => 10,
|
'strength' => 10,
|
||||||
'intel' => 10,
|
'intel' => 10,
|
||||||
'explevel'=>10
|
'lvl' => 10,
|
||||||
];
|
|
||||||
|
|
||||||
$dummyGeneral = [
|
|
||||||
'no'=>0,
|
|
||||||
'npc'=>2,
|
|
||||||
'name'=>'무명장수',
|
|
||||||
'leadership'=>10,
|
|
||||||
'strength'=>10,
|
|
||||||
'intel'=>10,
|
|
||||||
'lvl'=>0,
|
|
||||||
'h' => 'None',
|
'h' => 'None',
|
||||||
'w' => 'None',
|
'w' => 'None',
|
||||||
'b' => 'None'
|
'b' => 'None'
|
||||||
@@ -348,16 +490,43 @@ function fillLowGenAll() {
|
|||||||
|
|
||||||
$toBeFilledCnt = 8 * 8 - $currentJoinerCnt;
|
$toBeFilledCnt = 8 * 8 - $currentJoinerCnt;
|
||||||
|
|
||||||
|
$scoringCandFunction = match ($tnmt_type) {
|
||||||
|
0 => function ($gen) {
|
||||||
|
return $gen['leadership'] + $gen['strength'] + $gen['intel'];
|
||||||
|
}, //전력전
|
||||||
|
1 => function ($gen) {
|
||||||
|
return $gen['leadership'];
|
||||||
|
}, //통솔전
|
||||||
|
2 => function ($gen) {
|
||||||
|
return $gen['strength'];
|
||||||
|
}, //통솔전
|
||||||
|
3 => function ($gen) {
|
||||||
|
return $gen['intel'];
|
||||||
|
}, //통솔전
|
||||||
|
default => throw new \ValueError('invalid tnmt_type' . $tnmt_type)
|
||||||
|
};
|
||||||
|
|
||||||
//자동신청하고, 돈 있고, 아직 참가 안한 장수
|
//자동신청하고, 돈 있고, 아직 참가 안한 장수
|
||||||
$freeJoiners = $db->query(
|
$freeJoinerCandidate = [];
|
||||||
'SELECT no,npc,name,leadership,strength,intel,explevel,horse,weapon,book from general where tnmt=1 and tournament=0 order by rand() limit %d',
|
|
||||||
$toBeFilledCnt
|
foreach($db->query(
|
||||||
);
|
'SELECT no,npc,name,leadership,strength,intel,explevel,horse,weapon,book from general where tnmt=1 and tournament=0',
|
||||||
|
) as $gen){
|
||||||
|
$score = $scoringCandFunction($gen);
|
||||||
|
$freeJoinerCandidate[$gen['no']] = [$gen, $score**2];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$joinersValues = [];
|
$joinersValues = [];
|
||||||
$joinersIdx = [];
|
$joinersIdx = [];
|
||||||
|
|
||||||
foreach($freeJoiners as $general){
|
foreach(Util::range($toBeFilledCnt) as $_){
|
||||||
|
if(!$freeJoinerCandidate){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$general = Util::choiceRandomUsingWeightPair($freeJoinerCandidate);
|
||||||
|
unset($freeJoinerCandidate[$general['no']]);
|
||||||
|
|
||||||
$grpIdx = array_keys($grpCount, min($grpCount))[0];
|
$grpIdx = array_keys($grpCount, min($grpCount))[0];
|
||||||
$grpCnt = $grpCount[$grpIdx];
|
$grpCnt = $grpCount[$grpIdx];
|
||||||
$joinersValues[] = [
|
$joinersValues[] = [
|
||||||
@@ -407,19 +576,125 @@ function fillLowGenAll() {
|
|||||||
//7 8강
|
//7 8강
|
||||||
//8 4강
|
//8 4강
|
||||||
//9 결승
|
//9 결승
|
||||||
function getTwo($tournament, $phase) {
|
function getTwo($tournament, $phase)
|
||||||
|
{
|
||||||
$cand = [];
|
$cand = [];
|
||||||
switch ($tournament) {
|
switch ($tournament) {
|
||||||
case 2:
|
case 2:
|
||||||
//예선
|
//예선
|
||||||
switch ($phase % 28) {
|
switch ($phase % 28) {
|
||||||
case 0: $cand[0] = 0; $cand[1] = 1; break; case 1: $cand[0] = 2; $cand[1] = 3; break; case 2: $cand[0] = 4; $cand[1] = 5; break; case 3: $cand[0] = 6; $cand[1] = 7; break;
|
case 0:
|
||||||
case 4: $cand[0] = 0; $cand[1] = 2; break; case 5: $cand[0] = 1; $cand[1] = 3; break; case 6: $cand[0] = 4; $cand[1] = 6; break; case 7: $cand[0] = 5; $cand[1] = 7; break;
|
$cand[0] = 0;
|
||||||
case 8: $cand[0] = 0; $cand[1] = 3; break; case 9: $cand[0] = 1; $cand[1] = 6; break; case 10: $cand[0] = 2; $cand[1] = 5; break; case 11: $cand[0] = 4; $cand[1] = 7; break;
|
$cand[1] = 1;
|
||||||
case 12: $cand[0] = 0; $cand[1] = 4; break; case 13: $cand[0] = 1; $cand[1] = 5; break; case 14: $cand[0] = 2; $cand[1] = 6; break; case 15: $cand[0] = 3; $cand[1] = 7; break;
|
break;
|
||||||
case 16: $cand[0] = 0; $cand[1] = 5; break; case 17: $cand[0] = 1; $cand[1] = 4; break; case 18: $cand[0] = 2; $cand[1] = 7; break; case 19: $cand[0] = 3; $cand[1] = 6; break;
|
case 1:
|
||||||
case 20: $cand[0] = 0; $cand[1] = 6; break; case 21: $cand[0] = 1; $cand[1] = 7; break; case 22: $cand[0] = 2; $cand[1] = 4; break; case 23: $cand[0] = 3; $cand[1] = 5; break;
|
$cand[0] = 2;
|
||||||
case 24: $cand[0] = 0; $cand[1] = 7; break; case 25: $cand[0] = 1; $cand[1] = 2; break; case 26: $cand[0] = 3; $cand[1] = 4; break; case 27: $cand[0] = 5; $cand[1] = 6; break;
|
$cand[1] = 3;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$cand[0] = 4;
|
||||||
|
$cand[1] = 5;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$cand[0] = 6;
|
||||||
|
$cand[1] = 7;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$cand[0] = 0;
|
||||||
|
$cand[1] = 2;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$cand[0] = 1;
|
||||||
|
$cand[1] = 3;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$cand[0] = 4;
|
||||||
|
$cand[1] = 6;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$cand[0] = 5;
|
||||||
|
$cand[1] = 7;
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
$cand[0] = 0;
|
||||||
|
$cand[1] = 3;
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
$cand[0] = 1;
|
||||||
|
$cand[1] = 6;
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
$cand[0] = 2;
|
||||||
|
$cand[1] = 5;
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
$cand[0] = 4;
|
||||||
|
$cand[1] = 7;
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
$cand[0] = 0;
|
||||||
|
$cand[1] = 4;
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
$cand[0] = 1;
|
||||||
|
$cand[1] = 5;
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
$cand[0] = 2;
|
||||||
|
$cand[1] = 6;
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
$cand[0] = 3;
|
||||||
|
$cand[1] = 7;
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
$cand[0] = 0;
|
||||||
|
$cand[1] = 5;
|
||||||
|
break;
|
||||||
|
case 17:
|
||||||
|
$cand[0] = 1;
|
||||||
|
$cand[1] = 4;
|
||||||
|
break;
|
||||||
|
case 18:
|
||||||
|
$cand[0] = 2;
|
||||||
|
$cand[1] = 7;
|
||||||
|
break;
|
||||||
|
case 19:
|
||||||
|
$cand[0] = 3;
|
||||||
|
$cand[1] = 6;
|
||||||
|
break;
|
||||||
|
case 20:
|
||||||
|
$cand[0] = 0;
|
||||||
|
$cand[1] = 6;
|
||||||
|
break;
|
||||||
|
case 21:
|
||||||
|
$cand[0] = 1;
|
||||||
|
$cand[1] = 7;
|
||||||
|
break;
|
||||||
|
case 22:
|
||||||
|
$cand[0] = 2;
|
||||||
|
$cand[1] = 4;
|
||||||
|
break;
|
||||||
|
case 23:
|
||||||
|
$cand[0] = 3;
|
||||||
|
$cand[1] = 5;
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
$cand[0] = 0;
|
||||||
|
$cand[1] = 7;
|
||||||
|
break;
|
||||||
|
case 25:
|
||||||
|
$cand[0] = 1;
|
||||||
|
$cand[1] = 2;
|
||||||
|
break;
|
||||||
|
case 26:
|
||||||
|
$cand[0] = 3;
|
||||||
|
$cand[1] = 4;
|
||||||
|
break;
|
||||||
|
case 27:
|
||||||
|
$cand[0] = 5;
|
||||||
|
$cand[1] = 6;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if ($phase >= 28) {
|
if ($phase >= 28) {
|
||||||
$temp = $cand[0];
|
$temp = $cand[0];
|
||||||
@@ -430,16 +705,38 @@ function getTwo($tournament, $phase) {
|
|||||||
case 4:
|
case 4:
|
||||||
//본선
|
//본선
|
||||||
switch ($phase % 6) {
|
switch ($phase % 6) {
|
||||||
case 0: $cand[0] = 0; $cand[1] = 1; break; case 1: $cand[0] = 2; $cand[1] = 3; break;
|
case 0:
|
||||||
case 2: $cand[0] = 0; $cand[1] = 2; break; case 3: $cand[0] = 1; $cand[1] = 3; break;
|
$cand[0] = 0;
|
||||||
case 4: $cand[0] = 0; $cand[1] = 3; break; case 5: $cand[0] = 1; $cand[1] = 2; break;
|
$cand[1] = 1;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$cand[0] = 2;
|
||||||
|
$cand[1] = 3;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$cand[0] = 0;
|
||||||
|
$cand[1] = 2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$cand[0] = 1;
|
||||||
|
$cand[1] = 3;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$cand[0] = 0;
|
||||||
|
$cand[1] = 3;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$cand[0] = 1;
|
||||||
|
$cand[1] = 2;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return $cand;
|
return $cand;
|
||||||
}
|
}
|
||||||
|
|
||||||
function qualify($tnmt_type, $tnmt, $phase) {
|
function qualify($tnmt_type, $tnmt, $phase)
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
@@ -469,7 +766,8 @@ function qualify($tnmt_type, $tnmt, $phase) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function qualifyAll($tnmt_type, $tnmt, $phase) {
|
function qualifyAll($tnmt_type, $tnmt, $phase)
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
|
|
||||||
$start = $phase;
|
$start = $phase;
|
||||||
@@ -479,23 +777,28 @@ function qualifyAll($tnmt_type, $tnmt, $phase) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function selection($tnmt_type, $tnmt, $phase) {
|
function selection($tnmt_type, $tnmt, $phase)
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
//시드1 배정
|
//시드1 배정
|
||||||
if ($phase < 8) {
|
if ($phase < 8) {
|
||||||
$grp = $phase + 10; $grp_no = 0;
|
$grp = $phase + 10;
|
||||||
|
$grp_no = 0;
|
||||||
$general = $db->queryFirstRow('SELECT * FROM tournament WHERE prmt=1 ORDER BY rand() LIMIT 1');
|
$general = $db->queryFirstRow('SELECT * FROM tournament WHERE prmt=1 ORDER BY rand() LIMIT 1');
|
||||||
//시드2 배정
|
//시드2 배정
|
||||||
} elseif ($phase < 16) {
|
} elseif ($phase < 16) {
|
||||||
$grp = $phase - 8 + 10; $grp_no = 1;
|
$grp = $phase - 8 + 10;
|
||||||
|
$grp_no = 1;
|
||||||
$general = $db->queryFirstRow('SELECT * FROM tournament WHERE prmt=2 ORDER BY rand() LIMIT 1');
|
$general = $db->queryFirstRow('SELECT * FROM tournament WHERE prmt=2 ORDER BY rand() LIMIT 1');
|
||||||
} elseif ($phase < 24) {
|
} elseif ($phase < 24) {
|
||||||
$grp = $phase - 16 + 10; $grp_no = 2;
|
$grp = $phase - 16 + 10;
|
||||||
|
$grp_no = 2;
|
||||||
$general = $db->queryFirstRow('SELECT * FROM tournament WHERE prmt>2 ORDER BY rand() LIMIT 1');
|
$general = $db->queryFirstRow('SELECT * FROM tournament WHERE prmt>2 ORDER BY rand() LIMIT 1');
|
||||||
} else {
|
} else {
|
||||||
$grp = $phase - 24 + 10; $grp_no = 3;
|
$grp = $phase - 24 + 10;
|
||||||
|
$grp_no = 3;
|
||||||
$general = $db->queryFirstRow('SELECT * FROM tournament WHERE prmt>2 ORDER BY rand() LIMIT 1');
|
$general = $db->queryFirstRow('SELECT * FROM tournament WHERE prmt>2 ORDER BY rand() LIMIT 1');
|
||||||
}
|
}
|
||||||
//해당 시드에서 랜덤 선택
|
//해당 시드에서 랜덤 선택
|
||||||
@@ -528,7 +831,8 @@ function selection($tnmt_type, $tnmt, $phase) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectionAll($tnmt_type, $tnmt, $phase) {
|
function selectionAll($tnmt_type, $tnmt, $phase)
|
||||||
|
{
|
||||||
$start = $phase;
|
$start = $phase;
|
||||||
$end = $phase - ($phase % 8) + 8;
|
$end = $phase - ($phase % 8) + 8;
|
||||||
for ($i = $start; $i < $end; $i++) {
|
for ($i = $start; $i < $end; $i++) {
|
||||||
@@ -536,7 +840,8 @@ function selectionAll($tnmt_type, $tnmt, $phase) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function finallySingle($tnmt_type, $tnmt, $phase) {
|
function finallySingle($tnmt_type, $tnmt, $phase)
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
@@ -566,7 +871,8 @@ function finallySingle($tnmt_type, $tnmt, $phase) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function finallyAll($tnmt_type, $tnmt, $phase) {
|
function finallyAll($tnmt_type, $tnmt, $phase)
|
||||||
|
{
|
||||||
$start = $phase;
|
$start = $phase;
|
||||||
$end = $phase - ($phase % 2) + 2;
|
$end = $phase - ($phase % 2) + 2;
|
||||||
for ($i = $start; $i < $end; $i++) {
|
for ($i = $start; $i < $end; $i++) {
|
||||||
@@ -574,13 +880,14 @@ function finallyAll($tnmt_type, $tnmt, $phase) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function final16set() {
|
function final16set()
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
//1조1-5조2, 2조1-6조2, 3조1-7조2, 4조1-8조2, 5조1-1조2, 6조1-2조2, 7조1-3조2, 8조1-4조2
|
//1조1-5조2, 2조1-6조2, 3조1-7조2, 4조1-8조2, 5조1-1조2, 6조1-2조2, 7조1-3조2, 8조1-4조2
|
||||||
$grp = Array(10, 14, 11, 15, 12, 16, 13, 17, 14, 10, 15, 11, 16, 12, 17, 13);
|
$grp = array(10, 14, 11, 15, 12, 16, 13, 17, 14, 10, 15, 11, 16, 12, 17, 13);
|
||||||
$prmt = Array( 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2);
|
$prmt = array(1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2);
|
||||||
for ($i = 0; $i < 16; $i++) {
|
for ($i = 0; $i < 16; $i++) {
|
||||||
$general = $db->queryFirstRow('SELECT * FROM tournament WHERE grp=%i AND prmt=%i LIMIT 1', $grp[$i], $prmt[$i]);
|
$general = $db->queryFirstRow('SELECT * FROM tournament WHERE grp=%i AND prmt=%i LIMIT 1', $grp[$i], $prmt[$i]);
|
||||||
//16강에 추가
|
//16강에 추가
|
||||||
@@ -610,16 +917,34 @@ function final16set() {
|
|||||||
$gameStor->phase = 0;
|
$gameStor->phase = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function finalFight($tnmt_type, $tnmt, $phase, $type) {
|
function finalFight($tnmt_type, $tnmt, $phase, $type)
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 16: $offset = 20; $turn = 7; $next = 7; break;
|
case 16:
|
||||||
case 8: $offset = 30; $turn = 3; $next = 8; break;
|
$offset = 20;
|
||||||
case 4: $offset = 40; $turn = 1; $next = 9; break;
|
$turn = 7;
|
||||||
case 2: $offset = 50; $turn = 0; $next = 0; break;
|
$next = 7;
|
||||||
default: throw new MustNotBeReachedException();
|
break;
|
||||||
|
case 8:
|
||||||
|
$offset = 30;
|
||||||
|
$turn = 3;
|
||||||
|
$next = 8;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$offset = 40;
|
||||||
|
$turn = 1;
|
||||||
|
$next = 9;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$offset = 50;
|
||||||
|
$turn = 0;
|
||||||
|
$next = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new MustNotBeReachedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
$grp = $phase + $offset;
|
$grp = $phase + $offset;
|
||||||
@@ -652,7 +977,8 @@ function finalFight($tnmt_type, $tnmt, $phase, $type) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setGift($tnmt_type, $tnmt, $phase) {
|
function setGift($tnmt_type, $tnmt, $phase)
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
@@ -661,11 +987,24 @@ function setGift($tnmt_type, $tnmt, $phase) {
|
|||||||
$resultHelper = [];
|
$resultHelper = [];
|
||||||
|
|
||||||
switch ($tnmt_type) {
|
switch ($tnmt_type) {
|
||||||
case 0: $tp = "전력전"; $tp2 = "tt"; break;
|
case 0:
|
||||||
case 1: $tp = "통솔전"; $tp2 = "tl"; break;
|
$tp = "전력전";
|
||||||
case 2: $tp = "일기토"; $tp2 = "ts"; break;
|
$tp2 = "tt";
|
||||||
case 3: $tp = "설전"; $tp2 = "ti"; break;
|
break;
|
||||||
default: throw new MustNotBeReachedException();
|
case 1:
|
||||||
|
$tp = "통솔전";
|
||||||
|
$tp2 = "tl";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$tp = "일기토";
|
||||||
|
$tp2 = "ts";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$tp = "설전";
|
||||||
|
$tp2 = "ti";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new MustNotBeReachedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
//16강자 명성 돈
|
//16강자 명성 돈
|
||||||
@@ -689,7 +1028,8 @@ function setGift($tnmt_type, $tnmt, $phase) {
|
|||||||
'grp_no' => $general['grp_no'],
|
'grp_no' => $general['grp_no'],
|
||||||
'reward' => $cost,
|
'reward' => $cost,
|
||||||
'msg' => "<span class='ev_highlight'>16강 진출</span>",
|
'msg' => "<span class='ev_highlight'>16강 진출</span>",
|
||||||
'logger'=>$logger
|
'logger' => $logger,
|
||||||
|
'inheritance_point' => 10,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
//8강자 명성 돈
|
//8강자 명성 돈
|
||||||
@@ -723,6 +1063,7 @@ function setGift($tnmt_type, $tnmt, $phase) {
|
|||||||
//포상 장수 이름, 금액
|
//포상 장수 이름, 금액
|
||||||
$resultHelper[$generalID]['reward'] += $cost;
|
$resultHelper[$generalID]['reward'] += $cost;
|
||||||
$resultHelper[$generalID]['msg'] = "<span class='ev_highlight'>4강 진출</span>";
|
$resultHelper[$generalID]['msg'] = "<span class='ev_highlight'>4강 진출</span>";
|
||||||
|
General::createGeneralObjFromDB($generalID)->increaseInheritancePoint('tournament', 10);
|
||||||
}
|
}
|
||||||
//결승자 명성 돈
|
//결승자 명성 돈
|
||||||
$cost = $admin['develcost'] * 6;
|
$cost = $admin['develcost'] * 6;
|
||||||
@@ -739,6 +1080,7 @@ function setGift($tnmt_type, $tnmt, $phase) {
|
|||||||
//포상 장수 이름, 금액
|
//포상 장수 이름, 금액
|
||||||
$resultHelper[$generalID]['reward'] += $cost;
|
$resultHelper[$generalID]['reward'] += $cost;
|
||||||
$resultHelper[$generalID]['msg'] = "<span class='ev_highlight'>준우승</span>으";
|
$resultHelper[$generalID]['msg'] = "<span class='ev_highlight'>준우승</span>으";
|
||||||
|
$resultHelper[$generalID]['inheritance_point'] = 50;
|
||||||
if ($general['lose'] > 0) {
|
if ($general['lose'] > 0) {
|
||||||
$runnerUp = $general;
|
$runnerUp = $general;
|
||||||
}
|
}
|
||||||
@@ -761,6 +1103,7 @@ function setGift($tnmt_type, $tnmt, $phase) {
|
|||||||
//포상 장수 이름, 금액
|
//포상 장수 이름, 금액
|
||||||
$resultHelper[$generalID]['reward'] += $cost;
|
$resultHelper[$generalID]['reward'] += $cost;
|
||||||
$resultHelper[$generalID]['msg'] = "<span class='ev_highlight'>우승</span>으";
|
$resultHelper[$generalID]['msg'] = "<span class='ev_highlight'>우승</span>으";
|
||||||
|
$resultHelper[$generalID]['inheritance_point'] = 100;
|
||||||
$winner = $general;
|
$winner = $general;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -775,23 +1118,24 @@ function setGift($tnmt_type, $tnmt, $phase) {
|
|||||||
$runnerUpLogger = $resultHelper[$runnerUp['no']]['logger'];
|
$runnerUpLogger = $resultHelper[$runnerUp['no']]['logger'];
|
||||||
$runnerUpLogger->pushGeneralHistoryLog("<C>{$tp}</> 대회에서 준우승");
|
$runnerUpLogger->pushGeneralHistoryLog("<C>{$tp}</> 대회에서 준우승");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$winnerRewardText = number_format($resultHelper[$winner['no']]['reward']);
|
$winnerRewardText = number_format($resultHelper[$winner['no']]['reward']);
|
||||||
$runnerUpRewardText = number_format($resultHelper[$runnerUp['no']]['reward']);
|
$runnerUpRewardText = number_format($resultHelper[$runnerUp['no']]['reward']);
|
||||||
|
|
||||||
$josaYiWinner = JosaUtil::pick($winner['name'], '이');
|
$josaYiWinner = JosaUtil::pick($winner['name'], '이');
|
||||||
$josaYiRunnerUp = JosaUtil::pick($runnerUp['name'], '이');
|
$josaYiRunnerUp = JosaUtil::pick($runnerUp['name'], '이');
|
||||||
|
|
||||||
$winnerLogger->pushGlobalHistoryLog("<C>{$tp}</> 대회에서 <Y>{$winner['name']}</>{$josaYiWinner} <C>우승</>, <Y>{$runnerUp['name']}</>{$josaYiRunnerUp} <C>준우승</>을 차지하여 천하에 이름을 떨칩니다!", ActionLogger::EVENT_YEAR_MONTH);
|
$winnerLogger->pushGlobalHistoryLog("<B><b>【대회】</b></><C>{$tp}</> 대회에서 <Y>{$winner['name']}</>{$josaYiWinner} <C>우승</>, <Y>{$runnerUp['name']}</>{$josaYiRunnerUp} <C>준우승</>을 차지하여 천하에 이름을 떨칩니다!", ActionLogger::EVENT_YEAR_MONTH);
|
||||||
$winnerLogger->pushGlobalHistoryLog("<C>{$tp}</> 대회의 <S>우승자</>에게는 <C>{$winnerRewardText}</>, <S>준우승자</>에겐 <C>{$runnerUpRewardText}</>의 <S>상금</>과 약간의 <S>명성</>이 주어집니다!", ActionLogger::EVENT_YEAR_MONTH);
|
$winnerLogger->pushGlobalHistoryLog("<B><b>【대회】</b></><C>{$tp}</> 대회의 <S>우승자</>에게는 <C>{$winnerRewardText}</>, <S>준우승자</>에겐 <C>{$runnerUpRewardText}</>의 <S>상금</>과 약간의 <S>명성</>이 주어집니다!", ActionLogger::EVENT_YEAR_MONTH);
|
||||||
|
|
||||||
foreach($resultHelper as $general){
|
$generalObjList = General::createGeneralObjListFromDB(array_keys($resultHelper));
|
||||||
|
|
||||||
|
foreach ($resultHelper as $generalID => $general) {
|
||||||
$rewardText = number_format($general['reward']);
|
$rewardText = number_format($general['reward']);
|
||||||
/** @var ActionLogger */
|
/** @var ActionLogger */
|
||||||
$logger = $general['logger'];
|
$logger = $general['logger'];
|
||||||
$logger->pushGeneralActionLog("<C>{$tp}</> 대회의 {$general['msg']}로 <C>{$rewardText}</>의 <S>상금</>, 약간의 <S>명성</> 획득!", ActionLogger::EVENT_PLAIN);
|
$logger->pushGeneralActionLog("<C>{$tp}</> 대회의 {$general['msg']}로 <C>{$rewardText}</>의 <S>상금</>, 약간의 <S>명성</> 획득!", ActionLogger::EVENT_PLAIN);
|
||||||
|
//TODO: 토너먼트의 다른 값이 모두 sql에 직접 입력하므로 기반을 바꿔야함.
|
||||||
|
$generalObjList[$generalID]->increaseInheritancePoint('tournament', $general['inheritance_point']);
|
||||||
}
|
}
|
||||||
|
|
||||||
//우승자 번호
|
//우승자 번호
|
||||||
@@ -806,20 +1150,23 @@ function setGift($tnmt_type, $tnmt, $phase) {
|
|||||||
$rewardRate = round($globalBetTotal / max($globalBet[$winnerSlot], 1), 2);
|
$rewardRate = round($globalBetTotal / max($globalBet[$winnerSlot], 1), 2);
|
||||||
|
|
||||||
$betKey = "bet{$winnerSlot}";
|
$betKey = "bet{$winnerSlot}";
|
||||||
$gambleResult = Util::convertArrayToDict($db->query('SELECT general_id, %b as bet FROM betting WHERE %b > 0', $betKey, $betKey), 'general_id');
|
$gambleResult = Util::convertArrayToDict($db->query('SELECT general_id, %b as bet FROM betting WHERE %b > 0 AND general_id > 0', $betKey, $betKey), 'general_id');
|
||||||
|
|
||||||
foreach(General::createGeneralObjListFromDB(Util::squeezeFromArray($gambleResult, 'general_id'), ['gold'], 1) as $gambler){
|
foreach (General::createGeneralObjListFromDB(Util::squeezeFromArray($gambleResult, 'general_id'), ['gold', 'npc'], 1) as $gambler) {
|
||||||
$reward = Util::round($gambleResult[$gambler->getID()]['bet'] * $rewardRate);
|
$reward = Util::round($gambleResult[$gambler->getID()]['bet'] * $rewardRate);
|
||||||
$gambler->increaseVar('gold', $reward);
|
$gambler->increaseVar('gold', $reward);
|
||||||
|
if (($gambler->getNPCType() == 0) || ($gambler->getNPCType() == 1 && $gambler->getRankVar('betgold') > 0)) {
|
||||||
$gambler->increaseRankVar('betwingold', $reward);
|
$gambler->increaseRankVar('betwingold', $reward);
|
||||||
$gambler->increaseRankVar('betwin', 1);
|
$gambler->increaseRankVar('betwin', 1);
|
||||||
|
}
|
||||||
$rewardText = number_format($reward);
|
$rewardText = number_format($reward);
|
||||||
$gambler->getLogger()->pushGeneralActionLog("<C>{$tp}</> 대회의 베팅 당첨으로 <C>{$rewardText}</>의 <S>금</> 획득!", ActionLogger::EVENT_PLAIN);
|
$gambler->getLogger()->pushGeneralActionLog("<C>{$tp}</> 대회의 베팅 당첨으로 <C>{$rewardText}</>의 <S>금</> 획득!", ActionLogger::EVENT_PLAIN);
|
||||||
$gambler->applyDB($db);
|
$gambler->applyDB($db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setRefund() {
|
function setRefund()
|
||||||
|
{
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
@@ -840,7 +1187,8 @@ function setRefund() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//10차이 1.1, 50 차이 1.17, 100차이 1.2
|
//10차이 1.1, 50 차이 1.17, 100차이 1.2
|
||||||
function getLog($lvl1, $lvl2) {
|
function getLog($lvl1, $lvl2)
|
||||||
|
{
|
||||||
if ($lvl1 >= $lvl2) {
|
if ($lvl1 >= $lvl2) {
|
||||||
$ratio = 1 + log(1 + $lvl1 - $lvl2, 10) / 10;
|
$ratio = 1 + log(1 + $lvl1 - $lvl2, 10) / 10;
|
||||||
} else {
|
} else {
|
||||||
@@ -850,7 +1198,8 @@ function getLog($lvl1, $lvl2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//0 : 승무패, 1 : 승패
|
//0 : 승무패, 1 : 승패
|
||||||
function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type)
|
||||||
|
{
|
||||||
$log = [];
|
$log = [];
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
|
|
||||||
@@ -859,14 +1208,26 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
|||||||
$gen1 = $db->queryFirstRow('SELECT *,(leadership+strength+intel)*7/15 as total,h,w,b from tournament where grp=%i AND grp_no=%i', $group, $g1);
|
$gen1 = $db->queryFirstRow('SELECT *,(leadership+strength+intel)*7/15 as total,h,w,b from tournament where grp=%i AND grp_no=%i', $group, $g1);
|
||||||
$gen2 = $db->queryFirstRow('SELECT *,(leadership+strength+intel)*7/15 as total,h,w,b from tournament where grp=%i AND grp_no=%i', $group, $g2);
|
$gen2 = $db->queryFirstRow('SELECT *,(leadership+strength+intel)*7/15 as total,h,w,b from tournament where grp=%i AND grp_no=%i', $group, $g2);
|
||||||
|
|
||||||
if($type == 0) { $turn = 10; }
|
if ($type == 0) {
|
||||||
else { $turn = 100; }
|
$turn = 10;
|
||||||
|
} else {
|
||||||
|
$turn = 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if($tnmt_type == 1) { $tp = "leadership"; $tp2 = "tl"; }
|
if ($tnmt_type == 1) {
|
||||||
elseif($tnmt_type == 2) { $tp = "strength"; $tp2 = "ts"; }
|
$tp = "leadership";
|
||||||
elseif($tnmt_type == 3) { $tp = "intel"; $tp2 = "ti"; }
|
$tp2 = "tl";
|
||||||
else /*$tnmt_type == 0*/{ $tp = "total"; $tp2 = "tt"; }
|
} elseif ($tnmt_type == 2) {
|
||||||
|
$tp = "strength";
|
||||||
|
$tp2 = "ts";
|
||||||
|
} elseif ($tnmt_type == 3) {
|
||||||
|
$tp = "intel";
|
||||||
|
$tp2 = "ti";
|
||||||
|
} else /*$tnmt_type == 0*/ {
|
||||||
|
$tp = "total";
|
||||||
|
$tp2 = "tt";
|
||||||
|
}
|
||||||
|
|
||||||
$e1 = $energy1 = Util::round($gen1[$tp] * getLog($gen1['lvl'], $gen2['lvl']) * 10);
|
$e1 = $energy1 = Util::round($gen1[$tp] * getLog($gen1['lvl'], $gen2['lvl']) * 10);
|
||||||
$e2 = $energy2 = Util::round($gen2[$tp] * getLog($gen1['lvl'], $gen2['lvl']) * 10);
|
$e2 = $energy2 = Util::round($gen2[$tp] * getLog($gen1['lvl'], $gen2['lvl']) * 10);
|
||||||
@@ -885,17 +1246,21 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
|||||||
switch (rand() % 4) {
|
switch (rand() % 4) {
|
||||||
case 0:
|
case 0:
|
||||||
$josaYi = JosaUtil::pick($itemRawName, '이');
|
$josaYi = JosaUtil::pick($itemRawName, '이');
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>{$josaYi} 포효합니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>{$josaYi} 포효합니다!";
|
||||||
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
$josaYi = JosaUtil::pick($itemRawName, '이');
|
$josaYi = JosaUtil::pick($itemRawName, '이');
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>{$josaYi} 그 위용을 뽐냅니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>{$josaYi} 그 위용을 뽐냅니다!";
|
||||||
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
$josaYi = JosaUtil::pick($gen['name'], '이');
|
$josaYi = JosaUtil::pick($gen['name'], '이');
|
||||||
$josaUl = JosaUtil::pick($itemRawName, '을');
|
$josaUl = JosaUtil::pick($itemRawName, '을');
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>{$josaYi} <S>{$itemName}</>{$josaUl} 타고 있습니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>{$josaYi} <S>{$itemName}</>{$josaUl} 타고 있습니다!";
|
||||||
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
$josaYi = JosaUtil::pick($itemRawName, '이');
|
$josaYi = JosaUtil::pick($itemRawName, '이');
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>{$josaYi} 갈기를 휘날립니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>{$josaYi} 갈기를 휘날립니다!";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!$weapon->isBuyable() && ($tnmt_type == 0 || $tnmt_type == 2)) {
|
if (!$weapon->isBuyable() && ($tnmt_type == 0 || $tnmt_type == 2)) {
|
||||||
@@ -904,15 +1269,19 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
|||||||
switch (rand() % 4) {
|
switch (rand() % 4) {
|
||||||
case 0:
|
case 0:
|
||||||
$josaYi = JosaUtil::pick($itemRawName, '이');
|
$josaYi = JosaUtil::pick($itemRawName, '이');
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>{$josaYi} 번뜩입니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>{$josaYi} 번뜩입니다!";
|
||||||
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
$josaYi = JosaUtil::pick($itemRawName, '이');
|
$josaYi = JosaUtil::pick($itemRawName, '이');
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>{$josaYi} 푸르게 빛납니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>{$josaYi} 푸르게 빛납니다!";
|
||||||
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>에서 살기가 느껴집니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>의 <S>{$itemName}</>에서 살기가 느껴집니다!";
|
||||||
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
$josaYi = JosaUtil::pick($itemRawName, '이');
|
$josaYi = JosaUtil::pick($itemRawName, '이');
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>의 손에는 <S>{$itemName}</>{$josaYi} 쥐어져 있습니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>의 손에는 <S>{$itemName}</>{$josaYi} 쥐어져 있습니다!";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!$book->isBuyable() && ($tnmt_type == 0 || $tnmt_type == 3)) {
|
if (!$book->isBuyable() && ($tnmt_type == 0 || $tnmt_type == 3)) {
|
||||||
@@ -922,26 +1291,32 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
|||||||
case 0:
|
case 0:
|
||||||
$josaYi = JosaUtil::pick($gen['name'], '이');
|
$josaYi = JosaUtil::pick($gen['name'], '이');
|
||||||
$josaUl = JosaUtil::pick($itemRawName, '을');
|
$josaUl = JosaUtil::pick($itemRawName, '을');
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>{$josaYi} <S>{$itemName}</>{$josaUl} 펼쳐듭니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>{$josaYi} <S>{$itemName}</>{$josaUl} 펼쳐듭니다!";
|
||||||
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
$josaYi = JosaUtil::pick($gen['name'], '이');
|
$josaYi = JosaUtil::pick($gen['name'], '이');
|
||||||
$josaUl = JosaUtil::pick($itemRawName, '을');
|
$josaUl = JosaUtil::pick($itemRawName, '을');
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>{$josaYi} <S>{$itemName}</>{$josaUl} 품에서 꺼냅니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>{$josaYi} <S>{$itemName}</>{$josaUl} 품에서 꺼냅니다!";
|
||||||
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
$josaYi = JosaUtil::pick($gen['name'], '이');
|
$josaYi = JosaUtil::pick($gen['name'], '이');
|
||||||
$josaUl = JosaUtil::pick($itemRawName, '을');
|
$josaUl = JosaUtil::pick($itemRawName, '을');
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>{$josaYi} <S>{$itemName}</>{$josaUl} 들고 있습니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>{$josaYi} <S>{$itemName}</>{$josaUl} 들고 있습니다!";
|
||||||
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
$josaYi = JosaUtil::pick($itemRawName, '이');
|
$josaYi = JosaUtil::pick($itemRawName, '이');
|
||||||
$log[] = "<S>●</> <Y>{$gen['name']}</>의 손에는 <S>{$itemName}</>{$josaYi} 쥐어져 있습니다!"; break;
|
$log[] = "<S>●</> <Y>{$gen['name']}</>의 손에는 <S>{$itemName}</>{$josaYi} 쥐어져 있습니다!";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$log[] = "<S>●</> <Y>{$gen1['name']}</> <C>({$energy1})</> vs <C>({$energy2})</> <Y>{$gen2['name']}</>";
|
$log[] = "<S>●</> <Y>{$gen1['name']}</> <C>({$energy1})</> vs <C>({$energy2})</> <Y>{$gen2['name']}</>";
|
||||||
|
|
||||||
$gd1 = 0; $gd2 = 0;
|
$gd1 = 0;
|
||||||
$phase = 0; $sel = 2;
|
$gd2 = 0;
|
||||||
|
$phase = 0;
|
||||||
|
$sel = 2;
|
||||||
while ($phase < $turn) {
|
while ($phase < $turn) {
|
||||||
$phase++;
|
$phase++;
|
||||||
//평타
|
//평타
|
||||||
@@ -949,67 +1324,312 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
|||||||
$damage2 = Util::round($gen1[$tp] * (rand() % 21 + 90) / 130); // 90~110%
|
$damage2 = Util::round($gen1[$tp] * (rand() % 21 + 90) / 130); // 90~110%
|
||||||
//보너스타
|
//보너스타
|
||||||
$ratio = rand() % 100;
|
$ratio = rand() % 100;
|
||||||
if($gen1[$tp] >= $ratio) { $damage2 += Util::round($gen1[$tp] * (rand() % 41 + 10) / 130); } // 10~50
|
if ($gen1[$tp] >= $ratio) {
|
||||||
|
$damage2 += Util::round($gen1[$tp] * (rand() % 41 + 10) / 130);
|
||||||
|
} // 10~50
|
||||||
$ratio = rand() % 100;
|
$ratio = rand() % 100;
|
||||||
if($gen2[$tp] >= $ratio) { $damage1 += Util::round($gen2[$tp] * (rand() % 41 + 10) / 130); } // 10~50
|
if ($gen2[$tp] >= $ratio) {
|
||||||
$critical1 = 0; $critical2 = 0;
|
$damage1 += Util::round($gen2[$tp] * (rand() % 41 + 10) / 130);
|
||||||
|
} // 10~50
|
||||||
|
$critical1 = 0;
|
||||||
|
$critical2 = 0;
|
||||||
//막판 분노
|
//막판 분노
|
||||||
$ratio = rand() % 300;
|
$ratio = rand() % 300;
|
||||||
if ($e1 / 5 > $energy1 && $damage1 > $damage2 && $gen1[$tp] >= $ratio) {
|
if ($e1 / 5 > $energy1 && $damage1 > $damage2 && $gen1[$tp] >= $ratio) {
|
||||||
$damage2 *= Util::round((rand() % 301 + 200) / 100); // 200 ~ 500%
|
$damage2 *= Util::round((rand() % 301 + 200) / 100); // 200 ~ 500%
|
||||||
$critical1 = 1;
|
$critical1 = 1;
|
||||||
if ($tnmt_type == 0) { switch(rand()%2) { case 0: $str = "전력"; break; case 1: $str = "집중"; break; } }
|
if ($tnmt_type == 0) {
|
||||||
elseif($tnmt_type == 1) { switch(rand()%2) { case 0: $str = "봉시진"; break; case 1: $str = "어린진"; break; } }
|
switch (rand() % 2) {
|
||||||
elseif($tnmt_type == 2) { switch(rand()%2) { case 0: $str = "삼단"; break; case 1: $str = "나선"; break; } }
|
case 0:
|
||||||
elseif($tnmt_type == 3) { switch(rand()%2) { case 0: $str = "독설"; break; case 1: $str = "논파"; break; } }
|
$str = "전력";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "집중";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 1) {
|
||||||
|
switch (rand() % 2) {
|
||||||
|
case 0:
|
||||||
|
$str = "봉시진";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "어린진";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 2) {
|
||||||
|
switch (rand() % 2) {
|
||||||
|
case 0:
|
||||||
|
$str = "삼단";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "나선";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 3) {
|
||||||
|
switch (rand() % 2) {
|
||||||
|
case 0:
|
||||||
|
$str = "독설";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "논파";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
$log[] = "<S>●</> <Y>{$gen1['name']}</>의 분노의 <M>{$str}</> 공격!";
|
$log[] = "<S>●</> <Y>{$gen1['name']}</>의 분노의 <M>{$str}</> 공격!";
|
||||||
}
|
}
|
||||||
$ratio = rand() % 300;
|
$ratio = rand() % 300;
|
||||||
if ($e2 / 5 > $energy2 && $damage2 > $damage1 && $gen2[$tp] >= $ratio) {
|
if ($e2 / 5 > $energy2 && $damage2 > $damage1 && $gen2[$tp] >= $ratio) {
|
||||||
$damage1 *= Util::round((rand() % 301 + 200) / 100); // 200 ~ 500%
|
$damage1 *= Util::round((rand() % 301 + 200) / 100); // 200 ~ 500%
|
||||||
$critical2 = 1;
|
$critical2 = 1;
|
||||||
if($tnmt_type == 0) { switch(rand()%2) { case 0: $str = "전력"; break; case 1: $str = "집중"; break; } }
|
if ($tnmt_type == 0) {
|
||||||
elseif($tnmt_type == 1) { switch(rand()%2) { case 0: $str = "봉시진"; break; case 1: $str = "어린진"; break; } }
|
switch (rand() % 2) {
|
||||||
elseif($tnmt_type == 2) { switch(rand()%2) { case 0: $str = "삼단"; break; case 1: $str = "나선"; break; } }
|
case 0:
|
||||||
elseif($tnmt_type == 3) { switch(rand()%2) { case 0: $str = "독설"; break; case 1: $str = "논파"; break; } }
|
$str = "전력";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "집중";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 1) {
|
||||||
|
switch (rand() % 2) {
|
||||||
|
case 0:
|
||||||
|
$str = "봉시진";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "어린진";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 2) {
|
||||||
|
switch (rand() % 2) {
|
||||||
|
case 0:
|
||||||
|
$str = "삼단";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "나선";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 3) {
|
||||||
|
switch (rand() % 2) {
|
||||||
|
case 0:
|
||||||
|
$str = "독설";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "논파";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
$log[] = "<S>●</> <Y>{$gen2['name']}</>의 분노의 <M>{$str}</> 공격!";
|
$log[] = "<S>●</> <Y>{$gen2['name']}</>의 분노의 <M>{$str}</> 공격!";
|
||||||
}
|
}
|
||||||
//1합 승부
|
//1합 승부
|
||||||
if ($phase == 1) {
|
if ($phase == 1) {
|
||||||
$ratio = rand() % 400;
|
$ratio = rand() % 400;
|
||||||
if ($gen1[$tp] * 0.9 > $gen2[$tp] && $gen1[$tp] >= $ratio) {
|
if ($gen1[$tp] * 0.9 > $gen2[$tp] && $gen1[$tp] >= $ratio) {
|
||||||
$damage1 = 0; $damage2 = $e2;
|
$damage1 = 0;
|
||||||
if ($tnmt_type == 0) { $log[] = "<S>●</> <Y>{$gen1['name']}</>의 <M>압도</>!"; }
|
$damage2 = $e2;
|
||||||
elseif($tnmt_type == 1) { $log[] = "<S>●</> <Y>{$gen1['name']}</>의 <M>팔문금쇄진</>!"; }
|
if ($tnmt_type == 0) {
|
||||||
elseif($tnmt_type == 2) { $log[] = "<S>●</> <Y>{$gen1['name']}</>의 <M>일격 필살</>!"; }
|
$log[] = "<S>●</> <Y>{$gen1['name']}</>의 <M>압도</>!";
|
||||||
elseif($tnmt_type == 3) { $log[] = "<S>●</> <Y>{$gen1['name']}</>의 <M>모독 욕설</>!"; }
|
} elseif ($tnmt_type == 1) {
|
||||||
|
$log[] = "<S>●</> <Y>{$gen1['name']}</>의 <M>팔문금쇄진</>!";
|
||||||
|
} elseif ($tnmt_type == 2) {
|
||||||
|
$log[] = "<S>●</> <Y>{$gen1['name']}</>의 <M>일격 필살</>!";
|
||||||
|
} elseif ($tnmt_type == 3) {
|
||||||
|
$log[] = "<S>●</> <Y>{$gen1['name']}</>의 <M>모독 욕설</>!";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ($gen2[$tp] * 0.9 > $gen1[$tp] && $gen2[$tp] >= $ratio) {
|
if ($gen2[$tp] * 0.9 > $gen1[$tp] && $gen2[$tp] >= $ratio) {
|
||||||
$damage2 = 0; $damage1 = $e1;
|
$damage2 = 0;
|
||||||
if ($tnmt_type == 0) { $log[] = "<S>●</> <Y>{$gen2['name']}</>의 <M>압도</>!"; }
|
$damage1 = $e1;
|
||||||
elseif($tnmt_type == 1) { $log[] = "<S>●</> <Y>{$gen2['name']}</>의 <M>팔문금쇄진</>!"; }
|
if ($tnmt_type == 0) {
|
||||||
elseif($tnmt_type == 2) { $log[] = "<S>●</> <Y>{$gen2['name']}</>의 <M>일격 필살</>!"; }
|
$log[] = "<S>●</> <Y>{$gen2['name']}</>의 <M>압도</>!";
|
||||||
elseif($tnmt_type == 3) { $log[] = "<S>●</> <Y>{$gen2['name']}</>의 <M>모독 욕설</>!"; }
|
} elseif ($tnmt_type == 1) {
|
||||||
|
$log[] = "<S>●</> <Y>{$gen2['name']}</>의 <M>팔문금쇄진</>!";
|
||||||
|
} elseif ($tnmt_type == 2) {
|
||||||
|
$log[] = "<S>●</> <Y>{$gen2['name']}</>의 <M>일격 필살</>!";
|
||||||
|
} elseif ($tnmt_type == 3) {
|
||||||
|
$log[] = "<S>●</> <Y>{$gen2['name']}</>의 <M>모독 욕설</>!";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$ratio = rand() % 1000;
|
$ratio = rand() % 1000;
|
||||||
if ($critical1 == 0 && $gen1[$tp] >= $ratio) {
|
if ($critical1 == 0 && $gen1[$tp] >= $ratio) {
|
||||||
$damage2 *= Util::randRangeInt(150, 300) / 100; // 150 ~ 300%
|
$damage2 *= Util::randRangeInt(150, 300) / 100; // 150 ~ 300%
|
||||||
$critical1 = 1;
|
$critical1 = 1;
|
||||||
if ($tnmt_type == 0) { switch(rand()%6) { case 0: $str = "참격"; break; case 1: $str = "집중"; break; case 2: $str = "역공"; break; case 3: $str = "반격"; break; case 4: $str = "선제"; break; case 5: $str = "도발"; break; } }
|
if ($tnmt_type == 0) {
|
||||||
elseif($tnmt_type == 1) { switch(rand()%6) { case 0: $str = "추행진"; break; case 1: $str = "학익진"; break; case 2: $str = "장사진"; break; case 3: $str = "형액진"; break; case 4: $str = "기형진"; break; case 5: $str = "구행진"; break; } }
|
switch (rand() % 6) {
|
||||||
elseif($tnmt_type == 2) { switch(rand()%6) { case 0: $str = "기합"; break; case 1: $str = "기염"; break; case 2: $str = "반격"; break; case 3: $str = "역공"; break; case 4: $str = "삼단"; break; case 5: $str = "나선"; break; } }
|
case 0:
|
||||||
elseif($tnmt_type == 3) { switch(rand()%6) { case 0: $str = "논파"; break; case 1: $str = "항변"; break; case 2: $str = "반론"; break; case 3: $str = "반박"; break; case 4: $str = "도발"; break; case 5: $str = "면박"; break; } }
|
$str = "참격";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "집중";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$str = "역공";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$str = "반격";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$str = "선제";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$str = "도발";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 1) {
|
||||||
|
switch (rand() % 6) {
|
||||||
|
case 0:
|
||||||
|
$str = "추행진";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "학익진";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$str = "장사진";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$str = "형액진";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$str = "기형진";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$str = "구행진";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 2) {
|
||||||
|
switch (rand() % 6) {
|
||||||
|
case 0:
|
||||||
|
$str = "기합";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "기염";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$str = "반격";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$str = "역공";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$str = "삼단";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$str = "나선";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 3) {
|
||||||
|
switch (rand() % 6) {
|
||||||
|
case 0:
|
||||||
|
$str = "논파";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "항변";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$str = "반론";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$str = "반박";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$str = "도발";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$str = "면박";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
$log[] = "<S>●</> <Y>{$gen1['name']}</>의 <M>{$str}</>!";
|
$log[] = "<S>●</> <Y>{$gen1['name']}</>의 <M>{$str}</>!";
|
||||||
}
|
}
|
||||||
$ratio = rand() % 1000;
|
$ratio = rand() % 1000;
|
||||||
if ($critical2 == 0 && $gen2[$tp] >= $ratio) {
|
if ($critical2 == 0 && $gen2[$tp] >= $ratio) {
|
||||||
$damage1 *= Util::randRangeInt(150, 300) / 100; // 150 ~ 300%
|
$damage1 *= Util::randRangeInt(150, 300) / 100; // 150 ~ 300%
|
||||||
$critical2 = 1;
|
$critical2 = 1;
|
||||||
if ($tnmt_type == 0) { switch(rand()%6) { case 0: $str = "참격"; break; case 1: $str = "집중"; break; case 2: $str = "역공"; break; case 3: $str = "반격"; break; case 4: $str = "선제"; break; case 5: $str = "도발"; break; } }
|
if ($tnmt_type == 0) {
|
||||||
elseif($tnmt_type == 1) { switch(rand()%6) { case 0: $str = "추행진"; break; case 1: $str = "학익진"; break; case 2: $str = "장사진"; break; case 3: $str = "형액진"; break; case 4: $str = "기형진"; break; case 5: $str = "구행진"; break; } }
|
switch (rand() % 6) {
|
||||||
elseif($tnmt_type == 2) { switch(rand()%6) { case 0: $str = "기합"; break; case 1: $str = "기염"; break; case 2: $str = "반격"; break; case 3: $str = "역공"; break; case 4: $str = "삼단"; break; case 5: $str = "나선"; break; } }
|
case 0:
|
||||||
elseif($tnmt_type == 3) { switch(rand()%6) { case 0: $str = "논파"; break; case 1: $str = "항변"; break; case 2: $str = "반론"; break; case 3: $str = "반박"; break; case 4: $str = "도발"; break; case 5: $str = "면박"; break; } }
|
$str = "참격";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "집중";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$str = "역공";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$str = "반격";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$str = "선제";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$str = "도발";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 1) {
|
||||||
|
switch (rand() % 6) {
|
||||||
|
case 0:
|
||||||
|
$str = "추행진";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "학익진";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$str = "장사진";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$str = "형액진";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$str = "기형진";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$str = "구행진";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 2) {
|
||||||
|
switch (rand() % 6) {
|
||||||
|
case 0:
|
||||||
|
$str = "기합";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "기염";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$str = "반격";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$str = "역공";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$str = "삼단";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$str = "나선";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif ($tnmt_type == 3) {
|
||||||
|
switch (rand() % 6) {
|
||||||
|
case 0:
|
||||||
|
$str = "논파";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$str = "항변";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$str = "반론";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$str = "반박";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$str = "도발";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$str = "면박";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
$log[] = "<S>●</> <Y>{$gen2['name']}</>의 <M>{$str}</>!";
|
$log[] = "<S>●</> <Y>{$gen2['name']}</>의 <M>{$str}</>!";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1019,36 +1639,49 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
|||||||
|
|
||||||
$energy1 -= $damage1;
|
$energy1 -= $damage1;
|
||||||
$energy2 -= $damage2;
|
$energy2 -= $damage2;
|
||||||
$tDamage1 = $damage1; $tDamage2 = $damage2;
|
$tDamage1 = $damage1;
|
||||||
$tEnergy1 = $energy1; $tEnergy2 = $energy2;
|
$tDamage2 = $damage2;
|
||||||
|
$tEnergy1 = $energy1;
|
||||||
|
$tEnergy2 = $energy2;
|
||||||
if ($energy1 <= 0 && $energy2 <= 0) {
|
if ($energy1 <= 0 && $energy2 <= 0) {
|
||||||
$r1 = $tEnergy1 / Util::valueFit($tDamage1, 1);
|
$r1 = $tEnergy1 / Util::valueFit($tDamage1, 1);
|
||||||
$r2 = $tEnergy2 / Util::valueFit($tDamage2, 1);
|
$r2 = $tEnergy2 / Util::valueFit($tDamage2, 1);
|
||||||
|
|
||||||
if ($r1 > $r2) {
|
if ($r1 > $r2) {
|
||||||
$offset = Util::round($tEnergy2 * $tDamage1 / Util::valueFit($tDamage2, 1));
|
$offset = Util::round($tEnergy2 * $tDamage1 / Util::valueFit($tDamage2, 1));
|
||||||
$damage1 += $offset; $energy1 -= $offset;
|
$damage1 += $offset;
|
||||||
$damage2 += $tEnergy2; $energy2 = 0;
|
$energy1 -= $offset;
|
||||||
|
$damage2 += $tEnergy2;
|
||||||
|
$energy2 = 0;
|
||||||
} else {
|
} else {
|
||||||
$offset = Util::round($tEnergy1 * $tDamage2 / Util::valueFit($tDamage1, 1));
|
$offset = Util::round($tEnergy1 * $tDamage2 / Util::valueFit($tDamage1, 1));
|
||||||
$damage2 += $offset; $energy2 -= $offset;
|
$damage2 += $offset;
|
||||||
$damage1 += $tEnergy1; $energy1 = 0;
|
$energy2 -= $offset;
|
||||||
|
$damage1 += $tEnergy1;
|
||||||
|
$energy1 = 0;
|
||||||
}
|
}
|
||||||
} elseif ($energy1 * $energy2 <= 0) {
|
} elseif ($energy1 * $energy2 <= 0) {
|
||||||
if ($energy2 < 0) {
|
if ($energy2 < 0) {
|
||||||
$offset = Util::round($tEnergy2 * $tDamage1 / Util::valueFit($tDamage2, 1));
|
$offset = Util::round($tEnergy2 * $tDamage1 / Util::valueFit($tDamage2, 1));
|
||||||
$damage1 += $offset; $energy1 -= $offset;
|
$damage1 += $offset;
|
||||||
$damage2 += $tEnergy2; $energy2 = 0;
|
$energy1 -= $offset;
|
||||||
|
$damage2 += $tEnergy2;
|
||||||
|
$energy2 = 0;
|
||||||
}
|
}
|
||||||
if ($energy1 < 0) {
|
if ($energy1 < 0) {
|
||||||
$offset = Util::round($tEnergy1 * $tDamage2 / Util::valueFit($tDamage1, 1));
|
$offset = Util::round($tEnergy1 * $tDamage2 / Util::valueFit($tDamage1, 1));
|
||||||
$damage2 += $offset; $energy2 -= $offset;
|
$damage2 += $offset;
|
||||||
$damage1 += $tEnergy1; $energy1 = 0;
|
$energy2 -= $offset;
|
||||||
|
$damage1 += $tEnergy1;
|
||||||
|
$energy1 = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$gd1 += $damage1; $gd2 += $damage2;
|
$gd1 += $damage1;
|
||||||
$energy1 = Util::round($energy1); $energy2 = Util::round($energy2);
|
$gd2 += $damage2;
|
||||||
$damage1 = Util::round($damage1); $damage2 = Util::round($damage2);
|
$energy1 = Util::round($energy1);
|
||||||
|
$energy2 = Util::round($energy2);
|
||||||
|
$damage1 = Util::round($damage1);
|
||||||
|
$damage2 = Util::round($damage2);
|
||||||
|
|
||||||
$log[] = '<S>●</> '
|
$log[] = '<S>●</> '
|
||||||
. StringUtil::padStringAlignRight((string)$phase, 2, "0") . '合 : '
|
. StringUtil::padStringAlignRight((string)$phase, 2, "0") . '合 : '
|
||||||
@@ -1059,18 +1692,27 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
|||||||
. '<C>' . StringUtil::padStringAlignRight((string)$energy2, 3, "0") . '</>';
|
. '<C>' . StringUtil::padStringAlignRight((string)$energy2, 3, "0") . '</>';
|
||||||
|
|
||||||
if ($energy1 <= 0 && $energy2 <= 0) {
|
if ($energy1 <= 0 && $energy2 <= 0) {
|
||||||
if($type == 0) { $sel = 2; break; }
|
if ($type == 0) {
|
||||||
else {
|
$sel = 2;
|
||||||
$energy1 = Util::round($e1 / 2); $energy2 = Util::round($e2 / 2);
|
break;
|
||||||
|
} else {
|
||||||
|
$energy1 = Util::round($e1 / 2);
|
||||||
|
$energy2 = Util::round($e2 / 2);
|
||||||
$log[] = "<S>●</> <span class='ev_highlight'>재대결</span>!";
|
$log[] = "<S>●</> <span class='ev_highlight'>재대결</span>!";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($energy1 <= 0) { $sel = 1; break; }
|
if ($energy1 <= 0) {
|
||||||
if($energy2 <= 0) { $sel = 0; break; }
|
$sel = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ($energy2 <= 0) {
|
||||||
|
$sel = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$general1 = $db->queryFirstRow('SELECT value as gl FROM rank_data WHERE general_id = %i AND type = %s', $gen1['no'], $tp2.'g');
|
$gen1gl = $db->queryFirstField('SELECT value as gl FROM rank_data WHERE general_id = %i AND type = %s', $gen1['no'], $tp2 . 'g') ?? 0;
|
||||||
$general2 = $db->queryFirstRow('SELECT value as gl FROM rank_data WHERE general_id = %i AND type = %s', $gen2['no'], $tp2.'g');
|
$gen2gl = $db->queryFirstField('SELECT value as gl FROM rank_data WHERE general_id = %i AND type = %s', $gen2['no'], $tp2 . 'g') ?? 0;
|
||||||
|
|
||||||
switch ($sel) {
|
switch ($sel) {
|
||||||
case 0:
|
case 0:
|
||||||
@@ -1086,9 +1728,16 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
|||||||
'gl' => $db->sqleval('gl-%i', $gl)
|
'gl' => $db->sqleval('gl-%i', $gl)
|
||||||
], 'grp=%i AND grp_no=%i', $group, $g2);
|
], 'grp=%i AND grp_no=%i', $group, $g2);
|
||||||
|
|
||||||
if($general1['gl'] > $general2['gl']) { $gl1 = 1; $gl2 = 0; }
|
if ($gen1gl > $gen2gl) {
|
||||||
elseif($general1['gl'] == $general2['gl']) { $gl1 = 2; $gl2 = -1; }
|
$gl1 = 1;
|
||||||
else { $gl1 = 3; $gl2 = -2; }
|
$gl2 = 0;
|
||||||
|
} elseif ($gen1gl == $gen2gl) {
|
||||||
|
$gl1 = 2;
|
||||||
|
$gl2 = -1;
|
||||||
|
} else {
|
||||||
|
$gl1 = 3;
|
||||||
|
$gl2 = -2;
|
||||||
|
}
|
||||||
|
|
||||||
$gen1resKey = 'w';
|
$gen1resKey = 'w';
|
||||||
$gen2resKey = 'l';
|
$gen2resKey = 'l';
|
||||||
@@ -1106,9 +1755,16 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
|||||||
'gl' => $db->sqleval('gl+%i', $gl)
|
'gl' => $db->sqleval('gl+%i', $gl)
|
||||||
], 'grp=%i AND grp_no=%i', $group, $g2);
|
], 'grp=%i AND grp_no=%i', $group, $g2);
|
||||||
|
|
||||||
if($general2['gl'] > $general1['gl']) { $gl2 = 1; $gl1 = 0; }
|
if ($gen2gl > $gen1gl) {
|
||||||
elseif($general2['gl'] == $general1['gl']) { $gl2 = 2; $gl1 = -1; }
|
$gl2 = 1;
|
||||||
else { $gl2 = 3; $gl1 = -2; }
|
$gl1 = 0;
|
||||||
|
} elseif ($gen2gl == $gen1gl) {
|
||||||
|
$gl2 = 2;
|
||||||
|
$gl1 = -1;
|
||||||
|
} else {
|
||||||
|
$gl2 = 3;
|
||||||
|
$gl1 = -2;
|
||||||
|
}
|
||||||
|
|
||||||
$gen1resKey = 'l';
|
$gen1resKey = 'l';
|
||||||
$gen2resKey = 'w';
|
$gen2resKey = 'w';
|
||||||
@@ -1120,14 +1776,22 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
|||||||
'draw' => $db->sqleval('draw+1')
|
'draw' => $db->sqleval('draw+1')
|
||||||
], 'grp=%i AND (grp_no=%i OR grp_no=%i)', $group, $g1, $g2);
|
], 'grp=%i AND (grp_no=%i OR grp_no=%i)', $group, $g1, $g2);
|
||||||
|
|
||||||
if($general1['gl'] > $general2['gl']) { $gl2 = -1; $gl1 = 1; }
|
if ($gen1gl > $gen2gl) {
|
||||||
elseif($general1['gl'] == $general2['gl']) { $gl2 = 0; $gl1 = 0; }
|
$gl2 = -1;
|
||||||
else { $gl2 = +1; $gl1 = -1; }
|
$gl1 = 1;
|
||||||
|
} elseif ($gen1gl == $gen2gl) {
|
||||||
|
$gl2 = 0;
|
||||||
|
$gl1 = 0;
|
||||||
|
} else {
|
||||||
|
$gl2 = +1;
|
||||||
|
$gl1 = -1;
|
||||||
|
}
|
||||||
|
|
||||||
$gen1resKey = 'd';
|
$gen1resKey = 'd';
|
||||||
$gen2resKey = 'd';
|
$gen2resKey = 'd';
|
||||||
break;
|
break;
|
||||||
default: new MustNotBeReachedException();
|
default:
|
||||||
|
throw new MustNotBeReachedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
$db->update('rank_data', [
|
$db->update('rank_data', [
|
||||||
|
|||||||
+261
-241
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -64,162 +65,161 @@ if($nationID){
|
|||||||
$nationStor->cacheAll();
|
$nationStor->cacheAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
$valid = 0;
|
|
||||||
if ($gameStor->extended_general == 0) {
|
if ($gameStor->extended_general == 0) {
|
||||||
$extend = "표준";
|
$extend = "표준";
|
||||||
} else {
|
} else {
|
||||||
$extend = "확장";
|
$extend = "확장";
|
||||||
$valid = 1;
|
|
||||||
}
|
}
|
||||||
if ($gameStor->fiction == 0) {
|
if ($gameStor->fiction == 0) {
|
||||||
$fiction = "사실";
|
$fiction = "사실";
|
||||||
} else {
|
} else {
|
||||||
$fiction = "가상";
|
$fiction = "가상";
|
||||||
$valid = 1;
|
|
||||||
}
|
}
|
||||||
if ($gameStor->npcmode == 0) {
|
if ($gameStor->npcmode == 0) {
|
||||||
$npcmode = "불가능";
|
$npcmode = "불가능";
|
||||||
} else {
|
} else if ($gameStor->npcmode == 1) {
|
||||||
$npcmode = "가능";
|
$npcmode = "가능";
|
||||||
$valid = 1;
|
} else {
|
||||||
|
$npcmode = "선택 생성";
|
||||||
}
|
}
|
||||||
$color = "cyan";
|
$color = "cyan";
|
||||||
$mapTheme = $gameStor->map_theme;
|
$mapTheme = $gameStor->map_theme;
|
||||||
$serverName = UniqueConst::$serverName;
|
$serverName = UniqueConst::$serverName;
|
||||||
$serverCnt = $gameStor->server_cnt;
|
$serverCnt = $gameStor->server_cnt;
|
||||||
|
|
||||||
|
$auctionCount = $db->queryFirstField('SELECT count(`no`) FROM auction');
|
||||||
|
|
||||||
|
$myNationStatic = getNationStaticInfo($generalObj->getNationID());
|
||||||
|
$nationColorType = substr($myNationStatic['color'] ?? '#000000', 1);
|
||||||
|
|
||||||
|
$autorunUser = ($gameStor->autorun_user) ?? [];
|
||||||
|
$otherTextInfo = [];
|
||||||
|
|
||||||
|
if ($gameStor->join_mode == 'onlyRandom') {
|
||||||
|
$otherTextInfo[] = '랜덤 임관 전용';
|
||||||
|
}
|
||||||
|
if ($autorunUser['limit_minutes'] ?? false) {
|
||||||
|
$otherTextInfo[] = getAutorunInfo($autorunUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$otherTextInfo) {
|
||||||
|
$otherTextInfo = '표준';
|
||||||
|
} else {
|
||||||
|
$otherTextInfo = join(', ', $otherTextInfo);
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title><?= $serverName ?>: 메인</title>
|
<title><?= $serverName ?>: 메인</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=1024" />
|
<meta name="viewport" content="width=500" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/jquery.redirect.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/moment.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/linkify/linkify.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/linkify/linkify-string.min.js')?>
|
|
||||||
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/main.js')?>
|
|
||||||
<?= WebUtil::printJS('d_shared/base_map.js') ?>
|
<?= WebUtil::printJS('d_shared/base_map.js') ?>
|
||||||
<?=WebUtil::printJS('js/map.js')?>
|
|
||||||
<?=WebUtil::printJS('js/msg.js')?>
|
|
||||||
<script>
|
|
||||||
window.serverNick = '<?=DB::prefix()?>';
|
|
||||||
window.serverID = '<?=UniqueConst::$serverID?>';
|
|
||||||
$(function(){
|
|
||||||
reloadWorldMap({
|
|
||||||
hrefTemplate:'b_currentCity.php?citylist={0}',
|
|
||||||
useCachedMap:true
|
|
||||||
});
|
|
||||||
|
|
||||||
setInterval(function(){
|
|
||||||
refreshMsg();
|
|
||||||
}, 5000);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
<?= WebUtil::printCSS('../d_shared/common.css') ?>
|
||||||
<?=WebUtil::printCSS('css/common.css')?>
|
<?= WebUtil::printDist('vue', 'v_main', true) ?>
|
||||||
<?=WebUtil::printCSS('css/main.css')?>
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" />
|
||||||
<?= WebUtil::printCSS('css/map.css') ?>
|
<?= WebUtil::printCSS('css/map.css') ?>
|
||||||
<?=WebUtil::printCSS('css/msg.css')?>
|
<?= WebUtil::printStaticValues([
|
||||||
|
'serverNick' => DB::prefix(),
|
||||||
|
'serverID' => UniqueConst::$serverID,
|
||||||
|
'maxTurn' => GameConst::$maxTurn,
|
||||||
|
'maxPushTurn' => 12,
|
||||||
|
'commandList' => getCommandTable($generalObj),
|
||||||
|
'serverNow' => TimeUtil::now(false),
|
||||||
|
'baseColor2' => GameConst::$basecolor2,
|
||||||
|
]) ?>
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
|
||||||
<link href="https://fonts.googleapis.com/css?family=Nanum+Gothic|Nanum+Myeongjo|Nanum+Pen+Script" rel="stylesheet">
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="img_back">
|
|
||||||
|
|
||||||
<div id="container">
|
<body class="img_back sam-color-<?= $nationColorType ?>">
|
||||||
<div><?=allButton($gameStor->npcmode!=0)?></div>
|
<div id="container" class="bg0">
|
||||||
<table class="tb_layout bg0" style="width:1000px;">
|
<div class="row toolbars gx-0">
|
||||||
<tr height=50>
|
<div class="buttonPlate"><?= allButton($gameStor->npcmode == 1) ?></button></div>
|
||||||
<td colspan=5 id="server_title" align=center><font size=4>삼국지 모의전투 HiDCHe <?=$serverName.$serverCnt?>기 (<font color=cyan><?=$scenario?></font>)</font></td>
|
</div>
|
||||||
</tr>
|
<div class="tb_layout row gx-0">
|
||||||
<?php if ($valid == 1): ?>
|
<div id="server_title" class="row py-2 center">
|
||||||
<tr height=30>
|
<h3>삼국지 모의전투 HiDCHe <?= $serverName . $serverCnt ?>기 <span class="avoid-wrap">(<font color=cyan><?= $scenario ?></font>)</span></h3>
|
||||||
<td width=398 colspan=2 align=center><font color=<?=$color?>><?=$scenario?></font></td>
|
</div>
|
||||||
<td width=198 align=center><font color=<?=$color?>>NPC수 : <?=$extend?></font></td>
|
|
||||||
<td width=198 align=center><font color=<?=$color?>>NPC상성 : <?=$fiction?></font></td>
|
<div class="row center gx-0">
|
||||||
<td width=198 align=center><font color=<?=$color?>>NPC선택 : <?=$npcmode?></font></td>
|
<div class="s-border-t col py-2 col-8 col-md-4" style="color:<?= $color ?>;">
|
||||||
</tr>
|
<?= $scenario ?>
|
||||||
|
</div>
|
||||||
|
<div class="s-border-t col py-2 col-4 col-md-2" style="color:<?= $color ?>;">
|
||||||
|
NPC수 : <?= $extend ?>
|
||||||
|
</div>
|
||||||
|
<div class="s-border-t col py-2 col-4 col-md-2" style="color:<?= $color ?>;">
|
||||||
|
NPC상성 : <?= $fiction ?>
|
||||||
|
</div>
|
||||||
|
<div class="s-border-t col py-2 col-4 col-md-2" style="color:<?= $color ?>;">
|
||||||
|
NPC선택 : <?= $npcmode ?>
|
||||||
|
</div>
|
||||||
|
<div class="s-border-t col py-2 col-4 col-md-2" style="color:<?= $color ?>;">
|
||||||
|
기타 설정: <?= $otherTextInfo ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="s-border-t col py-2 col-8 col-md-4"><?= info(2) ?></div>
|
||||||
|
<div class="s-border-t col py-2 col-4 col-md-2">전체 접속자 수 : <?= $gameStor->online_user_cnt ?> 명</div>
|
||||||
|
<div class="s-border-t col py-2 col-4 col-md-2">턴당 갱신횟수 : <?= $gameStor->conlimit ?>회</div>
|
||||||
|
<div class="s-border-t col py-2 col-8 col-md-4"><?= info(3) ?></div>
|
||||||
|
<div class="s-border-t py-2 col col-6 col-md-4"><?php if ($gameStor->tournament == 0) : ?>
|
||||||
|
<span style='color:magenta'>현재 토너먼트 경기 없음</span>
|
||||||
|
<?php else : ?>
|
||||||
|
↑<span style='color:cyan'><?=
|
||||||
|
([
|
||||||
|
'전력전', '통솔전', '일기토', '설전',
|
||||||
|
])[$gameStor->tnmt_type] ?? '' ?> <?= getTournament($gameStor->tournament) ?> <?= getTournamentTime() ?></span>↑
|
||||||
|
|
||||||
|
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
<tr height=30>
|
<div class="s-border-t py-2 col col-6 col-md-2">
|
||||||
<td width=198><?=info(2)?></td>
|
<div style="display:inline-block;"><?= !$plock ? ("<span style='color:cyan;'>동작 시각: " . substr($gameStor->turntime, 5, 14) . "</span>") : ("<span style='color:magenta;'>동작 시각: " . substr($gameStor->turntime, 5, 14) . "</span>") ?></div>
|
||||||
<td width=198>전체 접속자 수 : <?=$gameStor->online_user_cnt?> 명</td>
|
</div>
|
||||||
<td width=198>턴당 갱신횟수 : <?=$gameStor->conlimit?>회</td>
|
<div class="s-border-t py-2 col col-6 col-md-2">
|
||||||
<td width=398 colspan=2><?=info(3)?></td>
|
<?php if ($auctionCount > 0) : ?>
|
||||||
</tr>
|
<span style='color:cyan'><?= $auctionCount ?>건</span> 거래 진행중
|
||||||
<tr height=30>
|
<?php else : ?>
|
||||||
<td style='text-align:center;'>
|
<span style='color:magenta'>진행중 거래 없음</span>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
<div class="s-border-t py-2 col col-6 col-md-4 vote-cell">
|
||||||
<?php
|
<?php
|
||||||
if (!$plock) {
|
|
||||||
echo "<span style='color:cyan;'>동작 시각: ".substr($gameStor->turntime, 5, 14)."</span>";
|
|
||||||
} else {
|
|
||||||
echo "<span style='color:magenta;'>동작 시각: ".substr($gameStor->turntime, 5, 14)."</span>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "
|
|
||||||
</td>
|
|
||||||
<td align=center>
|
|
||||||
";
|
|
||||||
|
|
||||||
if ($gameStor->tournament == 0) {
|
|
||||||
echo "<font color=magenta>현재 토너먼트 경기 없음</font>";
|
|
||||||
} else {
|
|
||||||
switch ($gameStor->tnmt_type) {
|
|
||||||
case 0: $str = "전력전"; break;
|
|
||||||
case 1: $str = "통솔전"; break;
|
|
||||||
case 2: $str = "일기토"; break;
|
|
||||||
case 3: $str = "설전"; break;
|
|
||||||
}
|
|
||||||
$str2 = getTournament($gameStor->tournament);
|
|
||||||
$str3 = getTournamentTime();
|
|
||||||
echo "<marquee scrollamount=2>↑<font color=cyan>{$str}</font> {$str2} {$str3}↑</marquee>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "
|
|
||||||
</td>
|
|
||||||
<td align=center>
|
|
||||||
";
|
|
||||||
|
|
||||||
$auctionCount = $db->queryFirstField('SELECT count(`no`) FROM auction');
|
|
||||||
if ($auctionCount > 0) {
|
|
||||||
echo "<marquee scrollamount=2><font color=cyan>{$auctionCount}건</font> 거래 진행중</marquee>";
|
|
||||||
} else {
|
|
||||||
echo "<font color=magenta>진행중 거래 없음</font>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "
|
|
||||||
</td>
|
|
||||||
<td colspan=2 align=center>
|
|
||||||
";
|
|
||||||
|
|
||||||
$vote = $gameStor->vote ?: [''];
|
$vote = $gameStor->vote ?: [''];
|
||||||
$vote_title = Tag2Code($gameStor->vote_title ?? '-');
|
$vote_title = Tag2Code($gameStor->vote_title ?? '-');
|
||||||
if ($vote[0] == "") {
|
|
||||||
echo "<font color=magenta>진행중 설문 없음</font>";
|
|
||||||
} else {
|
|
||||||
echo "<marquee scrollamount=3><font color=cyan>설문 진행중</font> : $vote_title</marquee>";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
echo "
|
|
||||||
</td>
|
|
||||||
</tr>";
|
|
||||||
?>
|
?>
|
||||||
<tr><td colspan=5 style="text-align:left;">접속중인 국가: <?=$gameStor->online_nation?></td></tr>
|
<?php if ($vote[0] == "") : ?>
|
||||||
<tr><td colspan=5 style="text-align:left;">운영자 메세지 : <span style='color:yellow;'><?=$gameStor->msg?></span></td></tr>
|
<span style='color:magenta'>진행중 설문 없음</span>
|
||||||
<tr><td colspan=5 style="text-align:left;"><div>【 국가방침 】</div><div><?=nationMsg($generalObj)?></div></td></tr>
|
<?php else : ?>
|
||||||
<tr><td colspan=5 style="text-align:left;">【 접속자 】<?=onlinegen($generalObj)?></td></tr>
|
<span style='color:cyan'>설문 진행중</span> : <span><?= $vote_title ?></span>
|
||||||
<?php
|
<?php endif; ?>
|
||||||
if ($session->userGrade >= 5) {
|
</div>
|
||||||
?>
|
</div>
|
||||||
<tr><td colspan=5>
|
<div class="row gx-0">
|
||||||
|
<div class="col s-border-t px-2 py-2">접속중인 국가: <?= $gameStor->online_nation ?></div>
|
||||||
|
</div>
|
||||||
|
<div class="row gx-0">
|
||||||
|
<div class="col s-border-t px-2 py-2">운영자 메세지 : <span style='color:yellow;'><?= $gameStor->msg ?></span></div>
|
||||||
|
</div>
|
||||||
|
<div class="row gx-0">
|
||||||
|
<div class="col s-border-t py-2" id="nation-msg-position">
|
||||||
|
<div class="px-2">【 국가방침 】</div>
|
||||||
|
<div id='nation-msg-box'>
|
||||||
|
<div id='nation-msg'><?= nationMsg($generalObj) ?></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row gx-0">
|
||||||
|
<div class="col s-border-t px-2 py-2">
|
||||||
|
【 접속자 】<?= onlinegen($generalObj) ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php if ($session->userGrade >= 5) : ?>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
<a href='_admin1.php' target='_blank'><button type='button'>게임관리</button></a>
|
<a href='_admin1.php' target='_blank'><button type='button'>게임관리</button></a>
|
||||||
<a href='_admin2.php' target='_blank'><button type='button'>회원관리</button></a>
|
<a href='_admin2.php' target='_blank'><button type='button'>회원관리</button></a>
|
||||||
<a href='_admin4.php' target='_blank'><button type='button'>멀티관리</button></a>
|
<a href='_admin4.php' target='_blank'><button type='button'>멀티관리</button></a>
|
||||||
@@ -227,141 +227,101 @@ if ($session->userGrade >= 5) {
|
|||||||
<a href='_admin7.php' target='_blank'><button type='button'>로그정보</button></a>
|
<a href='_admin7.php' target='_blank'><button type='button'>로그정보</button></a>
|
||||||
<a href='_admin8.php' target='_blank'><button type='button'>외교정보</button></a>
|
<a href='_admin8.php' target='_blank'><button type='button'>외교정보</button></a>
|
||||||
<a href='_119.php' target='_blank'><button type='button'>119</button></a>
|
<a href='_119.php' target='_blank'><button type='button'>119</button></a>
|
||||||
</td></tr>
|
</div>
|
||||||
<?php
|
</div>
|
||||||
}
|
<?php elseif ($session->userGrade == 4) : ?>
|
||||||
else if($session->userGrade == 4){
|
<div class="row">
|
||||||
?>
|
<div class="col">
|
||||||
<tr><td colspan=5>
|
|
||||||
<a href='_119.php' target='_blank'><button type='button'>119</button></a>
|
<a href='_119.php' target='_blank'><button type='button'>119</button></a>
|
||||||
</td></tr>
|
|
||||||
<?php
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
||||||
</table>
|
|
||||||
<table class="tb_layout bg0" style="width:1000px;" id='map_position'>
|
|
||||||
<tr>
|
|
||||||
<td style='width:700px;height:520px;' colspan=2>
|
|
||||||
<?=getMapHtml($mapTheme)?>
|
|
||||||
</td>
|
|
||||||
<td style='width:300px;vertical-align:top;' rowspan=4>
|
|
||||||
<div id="reservedCommandList" style='overflow-y:scroll;height:700px;'>
|
|
||||||
<table width="300" class="tb_layout b2">
|
|
||||||
<thead>
|
|
||||||
<tr height="24"><td colspan="4" class="center bg0"
|
|
||||||
><strong>- 명령 목록 - </strong><input value="<?=TimeUtil::now(false)?>" type="text" id="clock" size="19" style="background-color:black;color:white;border-style:none;"
|
|
||||||
></td></tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="center" style="font-weight:bold">
|
|
||||||
<?php for($turnIdx = 0; $turnIdx < GameConst::$maxTurn; $turnIdx++): ?>
|
|
||||||
<tr height='28' id="command_<?=$turnIdx?>"
|
|
||||||
><td width="24" class='idx_pad center bg0'><?=$turnIdx+1?></td
|
|
||||||
><td height='24' class='month_pad center bg1' style='min-width:70px;white-space:nowrap;overflow:hidden;'></td
|
|
||||||
><td width='42' class='time_pad center' style='background-color:black;white-space:nowrap;overflow:hidden;'></td
|
|
||||||
><td width='165' class='turn_pad center bg2'><span class='turn_text'></span></td
|
|
||||||
></tr>
|
|
||||||
<?php endfor; ?>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</div>
|
||||||
</tr>
|
<?php endif; ?>
|
||||||
<tr>
|
<div id="map_view" class="gx-0">
|
||||||
<td rowspan=3 width=50 valign=top><?=turnTable()?></td>
|
<div id="mapZone" class="view-item"><?= getMapHtml($mapTheme) ?></div>
|
||||||
<td style="width:650px;border:none;text-align:center;"><?=cityInfo($generalObj)?></td>
|
<div class="view-item" id="reservedCommandZone">
|
||||||
</tr>
|
<div id="reservedCommandList"></div>
|
||||||
<tr>
|
<div id="actionMiniPlate" class="gx-0 row">
|
||||||
<td style='width:650px;' align=right>
|
<div class="col">
|
||||||
<font color=cyan><b>←</b> Ctrl, Shift, 드래그로 복수선택 가능 반복&수정<b>→</b></font>
|
<div class="gx-1 row">
|
||||||
<select id='repeatAmount' name=sel size=1 style=color:white;background-color:black;font-size:13px;>
|
<div class="col-8 d-grid"><button type='button' class='btn btn-sammo-base2 refreshPage'>갱 신</button></div>
|
||||||
<option value=1>1턴</option>
|
<div class="col-4 d-grid"><button type='button' class='btn btn-sammo-base2' onclick="location.replace('../')">로비로</button></div>
|
||||||
<option value=2>2턴</option>
|
</div>
|
||||||
<option value=3>3턴</option>
|
</div>
|
||||||
<option value=4>4턴</option>
|
</div>
|
||||||
<option value=5>5턴</option>
|
</div>
|
||||||
<option value=6>6턴</option>
|
<div id="cityInfo" class="view-item" style="border:none;text-align:center;"><?= cityInfo($generalObj) ?></div>
|
||||||
<option value=7>7턴</option>
|
<div id="nation-position"><?php myNationInfo($generalObj); ?></div>
|
||||||
<option value=8>8턴</option>
|
<div id="general-position"><?php generalInfo($generalObj); ?></div>
|
||||||
<option value=9>9턴</option>
|
<div id="generalCommandButton" class="row gx-0">
|
||||||
<option value=10>10턴</option>
|
<div class="buttonPlate bg2"><?= commandButton(['btnClass' => 'btn btn-sammo-nation']) ?></div>
|
||||||
<option value=11>11턴</option>
|
</div>
|
||||||
<option value=12>12턴</option>
|
</div>
|
||||||
</select
|
</div>
|
||||||
><input type=button value='반복' id='repeatTurn'
|
<div id="actionMiniPlateSub" class="gx-0 row">
|
||||||
style='background-color:<?=GameConst::$basecolor2?>;color:white;width:70px;font-size:13px;margin-left:1ch;margin-right:2ch;'
|
<div class="col">
|
||||||
><input type=button value='▼미루기' id='pushTurn'
|
<div class="gx-1 row">
|
||||||
style='background-color:<?=GameConst::$basecolor2?>;color:white;width:80px;font-size:13px;'
|
<div class="col-3 d-grid"><button type='button' class="btn btn-dark" onclick="scrollHardTo('reservedCommandList')">명령으로</button></div>
|
||||||
><input type=button value='▲당기기' id='pullTurn'
|
<div class="col-5 d-grid"><button type='button' class='btn btn-sammo-base2 refreshPage'>갱 신</button></div>
|
||||||
style='background-color:<?=GameConst::$basecolor2?>;color:white;width:80px;font-size:13px;'
|
<div class="col-4 d-grid"><button type='button' class='btn btn-sammo-base2' onclick="location.replace('../')">로비로</button></div>
|
||||||
></td>
|
</div>
|
||||||
</tr>
|
</div>
|
||||||
<tr>
|
</div>
|
||||||
<td align=right style="width:650px;border:none;"><br>
|
<div class="row gx-0">
|
||||||
<?php printCommandTable($generalObj)?>
|
<div class="col-md-6" id="general_public_record-position">
|
||||||
<input type=button value='실 행' id="reserveTurn"
|
<div class="bg1 center s-border-tb"><b>장수 동향</b></div>
|
||||||
style='background-color:<?=GameConst::$basecolor2?>;color:white;width:110px;font-size:13px;'
|
<div id="general_public_record" style="text-align:left;"><?= formatHistoryToHTML(getGlobalActionLogRecent(15)) ?></div>
|
||||||
><input type=button value='갱 신' id='refreshPage'
|
</div>
|
||||||
style='background-color:<?=GameConst::$basecolor2?>;color:white;width:110px;font-size:13px;'
|
<div class="col-md-6" id="general_log-position">
|
||||||
><input type=button value='로비로' onclick="location.replace('../')"
|
<div class="bg1 center s-border-tb"><b>개인 기록</b></div>
|
||||||
style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;font-size:13px;
|
<div id="general_log" style="text-align:left;"><?= formatHistoryToHTML(getGeneralActionLogRecent($me['no'], 15)) ?></div>
|
||||||
>
|
</div>
|
||||||
</td>
|
<div class="col-12" id="world_history-position">
|
||||||
</tr>
|
<div class="bg1 center s-border-tb"><b>중원 정세</b></div>
|
||||||
</table>
|
<div id="world_history" colspan=2 style="text-align:left;"><?= formatHistoryToHTML(getGlobalHistoryLogRecent(15)) ?></div>
|
||||||
<table class="tb_layout bg0" style="width:1000px;">
|
</div>
|
||||||
<tr>
|
</div>
|
||||||
<td width=498 style="border:none;"><?php myNationInfo($generalObj); ?></td>
|
<div class="row toolbars gx-0">
|
||||||
<td width=498 style="border:none;"><?php generalInfo($generalObj); ?></td>
|
<div class="buttonPlate"><?= allButton($gameStor->npcmode == 1) ?></div>
|
||||||
</tr>
|
|
||||||
<tr><td colspan=2><?=commandButton()?></td></tr>
|
|
||||||
</table>
|
|
||||||
<table class="tb_layout bg0" id='history_position'>
|
|
||||||
<tr>
|
|
||||||
<td width=498 class='bg1 center'><b>장수 동향</b></td>
|
|
||||||
<td width=498 class='bg1 center'><b>개인 기록</b></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width=498 id="general_public_record" style="text-align:left;"><?=formatHistoryToHTML(getGlobalActionLogRecent(15))?></td>
|
|
||||||
<td width=498 id="general_log" style="text-align:left;"><?=formatHistoryToHTML(getGeneralActionLogRecent($me['no'], 15))?></td>
|
|
||||||
</tr>
|
|
||||||
<tr><td width=998 colspan=2 class='bg1 center'><b>중원 정세</b></td></tr>
|
|
||||||
<tr><td width=998 id="world_history" colspan=2 style="text-align:left;"><?=formatHistoryToHTML(getGlobalHistoryLogRecent(15))?></td></tr>
|
|
||||||
</table>
|
|
||||||
<div class="message_input_form bg0">
|
|
||||||
<select id="mailbox_list" size="1">
|
|
||||||
|
|
||||||
<select name="genlist" size="1" style="color:white;background-color:black;font-size:13px">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="message_board" class="row gx-0">
|
||||||
|
<div class="message_input_form bg0 gx-0 row">
|
||||||
|
<div id="mailbox_list-col" class="col-6 col-md-2 d-grid">
|
||||||
|
<select id="mailbox_list" size="1" class="form-control bg-dark text-white">
|
||||||
</select>
|
</select>
|
||||||
<input type="textarea" id="msg_input" maxlength="99">
|
|
||||||
<button id="msg_submit">서신전달&갱신</button><br>
|
|
||||||
내용 없이 '서신전달&갱신'을 누르면 메세지창이 갱신됩니다.
|
|
||||||
</div>
|
</div>
|
||||||
<div><?=allButton($gameStor->npcmode!=0)?></div>
|
<div id="msg_input-col" class="col-12 col-md-8 d-grid">
|
||||||
<div id="message_board"><div style="left:0;" class="board_side bg0">
|
<input type="text" id="msg_input" maxlength="99" class="form-control">
|
||||||
<div class="board_header bg0" id='public_talk_position'>전체 메시지(최고99자)</div>
|
</div>
|
||||||
|
<div id="msg_submit-col" class="col-6 col-md-2 d-grid"><button id="msg_submit" class="btn btn-primary">서신전달&갱신</button></div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 board_side bg0"><a id="public_talk_position"></a>
|
||||||
|
<div class="board_header bg0">전체 메시지(최고99자)</div>
|
||||||
<section class="public_message">
|
<section class="public_message">
|
||||||
<button type="button" class="load_old_message btn btn-secondary btn-block" data-msg_type="public">이전 메시지 불러오기</button>
|
<div class="d-grid"><button type="button" class="load_old_message btn btn-secondary" data-msg_type="public">이전 메시지 불러오기</button></div>
|
||||||
</section>
|
</section>
|
||||||
<div class="board_header bg0" id='secret_talk_position'>개인 메시지(최고99자)</div>
|
</div>
|
||||||
<section class="private_message">
|
<div class="col-md-6 board_side bg0"><a id="national_talk_position"></a>
|
||||||
<button type="button" class="load_old_message btn btn-secondary btn-block" data-msg_type="private">이전 메시지 불러오기</button>
|
|
||||||
</section>
|
|
||||||
</div><div style="right:0;" class="board_side bg0">
|
|
||||||
<div class="board_header bg0">국가 메시지(최고99자)</div>
|
<div class="board_header bg0">국가 메시지(최고99자)</div>
|
||||||
<section class="national_message">
|
<section class="national_message">
|
||||||
<button type="button" class="load_old_message btn btn-secondary btn-block" data-msg_type="national">이전 메시지 불러오기</button>
|
<div class="d-grid"><button type="button" class="load_old_message btn btn-secondary" data-msg_type="national">이전 메시지 불러오기</button></div>
|
||||||
</section>
|
</section>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 board_side bg0"><a id="private_talk_position"></a>
|
||||||
|
<div class="board_header bg0">개인 메시지(최고99자)</div>
|
||||||
|
<section class="private_message">
|
||||||
|
<div class="d-grid"><button type="button" class="load_old_message btn btn-secondary" data-msg_type="private">이전 메시지 불러오기</button></div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 board_side bg0"><a id="diplomacy_talk_position"></a>
|
||||||
<div class="board_header bg0">외교 메시지(최고99자)</div>
|
<div class="board_header bg0">외교 메시지(최고99자)</div>
|
||||||
<section class="diplomacy_message">
|
<section class="diplomacy_message">
|
||||||
<button type="button" class="load_old_message btn btn-secondary btn-block" data-msg_type="diplomacy">이전 메시지 불러오기</button>
|
<div class="d-grid"><button type="button" class="load_old_message btn btn-secondary" data-msg_type="diplomacy">이전 메시지 불러오기</button></div>
|
||||||
</section>
|
</section>
|
||||||
</div></div>
|
</div>
|
||||||
<div style="clear:left;"><?=allButton($gameStor->npcmode!=0)?><?=banner()?></div>
|
</div>
|
||||||
|
<div class="row toolbars gx-0">
|
||||||
|
<div class="buttonPlate"><?= allButton($gameStor->npcmode == 1) ?></div><?= banner() ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php
|
<?php
|
||||||
if ($con == 1) {
|
if ($con == 1) {
|
||||||
@@ -375,5 +335,65 @@ if ($me['newvote'] == 1) {
|
|||||||
MessageBox("설문조사에 참여하시면 금{$develcost}과 유니크템을 드립니다! (우측 상단 설문조사 메뉴)");
|
MessageBox("설문조사에 참여하시면 금{$develcost}과 유니크템을 드립니다! (우측 상단 설문조사 메뉴)");
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
</div>
|
||||||
|
<nav class="navbar navbar-expand fixed-bottom navbar-dark bg-dark d-sm-block d-md-none p-0" id="navbar500">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="collapse navbar-collapse">
|
||||||
|
<ul class="navbar-nav me-auto mx-auto">
|
||||||
|
<li class="nav-item dropup">
|
||||||
|
<div class="dropdown-toggle text-white btn btn-sammo-base2" id="navbarGlobal" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
외부 메뉴
|
||||||
|
</div>
|
||||||
|
<ul class="dropdown-menu dropdown-menu-start" aria-labelledby="navbarGlobal" id="navbarGlobalItems">
|
||||||
|
<?= allButton($gameStor->npcmode == 1, ['btnBegin' => '<li>', 'btnEnd' => '</li>', 'btnClass' => 'dropdown-item']) ?>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropup">
|
||||||
|
<div class="dropdown-toggle btn btn-sammo-nation" id="navbarNation" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
국가 메뉴
|
||||||
|
</div>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="navbarNation" id="navbarNationItems">
|
||||||
|
<?= commandButton(['btnBegin' => '<li>', 'btnEnd' => '</li>', 'btnClass' => 'dropdown-item']) ?>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropup">
|
||||||
|
<div class="dropdown-toggle text-white btn btn-dark" id="navbarQuick" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
빠른 이동
|
||||||
|
</div>
|
||||||
|
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown" id="navbarQuickItems">
|
||||||
|
<li><a class="dropdown-item disabled">국가 정보</a></button></li>
|
||||||
|
<hr class="dropdown-divider">
|
||||||
|
</hr>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('nation-msg-position')" class="dropdown-item">방침</button></li>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('reservedCommandList')" class="dropdown-item">명령</button></li>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('nation-position')" class="dropdown-item">국가</button></li>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('general-position')" class="dropdown-item">장수</button></li>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('cityInfo')" class="dropdown-item">도시</button></li>
|
||||||
|
<li><a class="dropdown-item disabled">동향 정보</a></button></li>
|
||||||
|
<hr class="dropdown-divider">
|
||||||
|
</hr>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('mapZone')" class="dropdown-item">지도</button></li>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('general_public_record-position')" class="dropdown-item">동향</button></li>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('general_log-position')" class="dropdown-item">개인</button></li>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('world_history-position')" class="dropdown-item">정세</button></li>
|
||||||
|
<li><span> </span></li>
|
||||||
|
<li><a class="dropdown-item disabled">메시지</a></button></li>
|
||||||
|
<hr class="dropdown-divider">
|
||||||
|
</hr>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('public_talk_position')" class="dropdown-item">전체</button></li>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('national_talk_position')" class="dropdown-item">국가</button></li>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('private_talk_position')" class="dropdown-item">개인</button></li>
|
||||||
|
<li><button type="button" onclick="scrollHardTo('diplomacy_talk_position')" class="dropdown-item">외교</button></li>
|
||||||
|
<li><button type='button' class='btn btn-sammo-base2' onclick="location.replace('../')">로비로</button></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="refreshPage btn btn-sammo-base2 text-white" role="button">갱신</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+100
-188
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -14,7 +15,7 @@ $serverName = DB::prefix();
|
|||||||
$serverAcl = $session->acl[$serverName] ?? [];
|
$serverAcl = $session->acl[$serverName] ?? [];
|
||||||
$allowReset = in_array('reset', $serverAcl);
|
$allowReset = in_array('reset', $serverAcl);
|
||||||
$allowFullReset = in_array('fullReset', $serverAcl);
|
$allowFullReset = in_array('fullReset', $serverAcl);
|
||||||
$allowReset |= $allowFullReset;
|
$allowReset = $allowReset || $allowFullReset;
|
||||||
|
|
||||||
if ($session->userGrade < 5 && !$allowReset) {
|
if ($session->userGrade < 5 && !$allowReset) {
|
||||||
die('관리자 아님');
|
die('관리자 아님');
|
||||||
@@ -23,22 +24,19 @@ if($session->userGrade < 5 && !$allowReset){
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>설치</title>
|
<title>설치</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/jquery.validate.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/install.js')?>
|
|
||||||
<?=WebUtil::printCSS('css/normalize.css')?>
|
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('css/install.css') ?>
|
<?= WebUtil::printCSS('css/install.css') ?>
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'install']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="container" style="min-width:720px;">
|
<div class="container">
|
||||||
<h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe 리셋</h1>
|
<h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe 리셋</h1>
|
||||||
<div class="row justify-content-md-center">
|
<div class="row justify-content-md-center">
|
||||||
|
|
||||||
@@ -53,31 +51,15 @@ if($session->userGrade < 5 && !$allowReset){
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="turnterm" class="col-sm-3 col-form-label">턴 시간(분)</label>
|
<label for="turnterm" class="col-sm-3 col-form-label">턴 시간(분)</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<div id="turnterm" class="btn-group btn-group-toggle" data-toggle="buttons">
|
<div id="turnterm" class="btn-group btn-group-toggle" data-bs-toggle="buttons">
|
||||||
<label class="btn btn-secondary">
|
<input type="radio" class="btn-check" name="turnterm" id="turnterm_120" value="120"><label for="turnterm_120" class="btn btn-secondary">120</label>
|
||||||
<input type="radio" name="turnterm" value="120">120
|
<input type="radio" class="btn-check" name="turnterm" id="turnterm_60" value="60" checked><label for="turnterm_60" class="btn btn-secondary">60</label>
|
||||||
</label>
|
<input type="radio" class="btn-check" name="turnterm" id="turnterm_30" value="30"><label for="turnterm_30" class="btn btn-secondary">30</label>
|
||||||
<label class="btn btn-secondary active">
|
<input type="radio" class="btn-check" name="turnterm" id="turnterm_20" value="20"><label for="turnterm_20" class="btn btn-secondary">20</label>
|
||||||
<input type="radio" name="turnterm" value="60" checked>60
|
<input type="radio" class="btn-check" name="turnterm" id="turnterm_10" value="10"><label for="turnterm_10" class="btn btn-secondary">10</label>
|
||||||
</label>
|
<input type="radio" class="btn-check" name="turnterm" id="turnterm_5" value="5"><label for="turnterm_5" class="btn btn-secondary">5</label>
|
||||||
<label class="btn btn-secondary">
|
<input type="radio" class="btn-check" name="turnterm" id="turnterm_2" value="2"><label for="turnterm_2" class="btn btn-secondary">2</label>
|
||||||
<input type="radio" name="turnterm" value="30">30
|
<input type="radio" class="btn-check" name="turnterm" id="turnterm_1" value="1"><label for="turnterm_1" class="btn btn-secondary">1</label>
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="turnterm" value="20">20
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="turnterm" value="10">10
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="turnterm" value="5">5
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="turnterm" value="2">2
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="turnterm" value="1">1
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -86,13 +68,9 @@ if($session->userGrade < 5 && !$allowReset){
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="sync" class="col-sm-3 col-form-label">시간 동기화</label>
|
<label for="sync" class="col-sm-3 col-form-label">시간 동기화</label>
|
||||||
<div class="col-sm-9" style="display: inline-flex;">
|
<div class="col-sm-9" style="display: inline-flex;">
|
||||||
<div id="sync" class="btn-group btn-group-toggle" data-toggle="buttons">
|
<div id="sync" class="btn-group btn-group-toggle" data-bs-toggle="buttons">
|
||||||
<label class="btn btn-secondary active">
|
<input class="btn-check" id="sync_1" type="radio" name="sync" value="1" checked><label class="btn btn-secondary" for="sync_1">Y</label>
|
||||||
<input type="radio" name="sync" value="1" checked>Y
|
<input class="btn-check" id="sync_0" type="radio" name="sync" value="0"><label class="btn btn-secondary" for="sync_0">N</label>
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="sync" value="0">N
|
|
||||||
</label>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<small class="text-muted">
|
<small class="text-muted">
|
||||||
@@ -102,7 +80,7 @@ if($session->userGrade < 5 && !$allowReset){
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="confirm_password" class="col-sm-3 col-form-label">시나리오 선택</label>
|
<label for="scenario_sel" class="col-sm-3 col-form-label">시나리오 선택</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<select class="form-control" name="scenario" size="1" id="scenario_sel">
|
<select class="form-control" name="scenario" size="1" id="scenario_sel">
|
||||||
</select>
|
</select>
|
||||||
@@ -113,13 +91,9 @@ if($session->userGrade < 5 && !$allowReset){
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="fiction" class="col-sm-3 col-form-label">NPC 상성</label>
|
<label for="fiction" class="col-sm-3 col-form-label">NPC 상성</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<div id="fiction" class="btn-group btn-group-toggle" data-toggle="buttons">
|
<div id="fiction" class="btn-group btn-group-toggle" data-bs-toggle="buttons">
|
||||||
<label class="btn btn-secondary active">
|
<input type="radio" id="fiction_0" class="btn-check" name="fiction" value="0" checked><label for="fiction_0" class="btn btn-secondary"> 연의 </label>
|
||||||
<input type="radio" name="fiction" value="0" checked>연의
|
<input type="radio" id="fiction_1" class="btn-check" name="fiction" value="1"><label for="fiction_1" class="btn btn-secondary"> 가상 </label>
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="fiction" value="1">가상
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -127,13 +101,19 @@ if($session->userGrade < 5 && !$allowReset){
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="extend" class="col-sm-3 col-form-label">확장 NPC</label>
|
<label for="extend" class="col-sm-3 col-form-label">확장 NPC</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<div id="extend" class="btn-group btn-group-toggle" data-toggle="buttons">
|
<div id="extend" class="btn-group btn-group-toggle" data-bs-toggle="buttons">
|
||||||
<label class="btn btn-secondary active">
|
<input type="radio" id="extend_1" class="btn-check" name="extend" value="1" checked><label for="extend_1" class="btn btn-secondary">포함</label>
|
||||||
<input type="radio" name="extend" value="1" checked>포함
|
<input type="radio" id="extend_0" class="btn-check" name="extend" value="0"><label for="extend_0" class="btn btn-secondary">미포함</label>
|
||||||
</label>
|
</div>
|
||||||
<label class="btn btn-secondary">
|
</div>
|
||||||
<input type="radio" name="extend" value="0">미포함
|
</div>
|
||||||
</label>
|
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="block_general_create" class="col-sm-3 col-form-label">장수 임의 생성</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<div id="block_general_create" class="btn-group btn-group-toggle" data-bs-toggle="buttons">
|
||||||
|
<input type="radio" class="btn-check" id="block_general_create_0" name="block_general_create" value="0" checked><label for="block_general_create_0" class="btn btn-secondary">가능</label>
|
||||||
|
<input type="radio" class="btn-check" id="block_general_create_1" name="block_general_create" value="1"><label for="block_general_create_1" class="btn btn-secondary">불가</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -141,46 +121,32 @@ if($session->userGrade < 5 && !$allowReset){
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="npcmode" class="col-sm-3 col-form-label">NPC 빙의</label>
|
<label for="npcmode" class="col-sm-3 col-form-label">NPC 빙의</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<div id="npcmode" class="btn-group btn-group-toggle" data-toggle="buttons">
|
<div id="npcmode" class="btn-group btn-group-toggle" data-bs-toggle="buttons">
|
||||||
<label class="btn btn-secondary">
|
<input type="radio" id="npcmode_1" class="btn-check" name="npcmode" value="1"><label for="npcmode_1" class="btn btn-secondary"> 가능 </label>
|
||||||
<input type="radio" name="npcmode" value="1">가능
|
<input type="radio" id="npcmode_0" class="btn-check" name="npcmode" value="0" checked><label for="npcmode_0" class="btn btn-secondary"> 불가 </label>
|
||||||
</label>
|
<input type="radio" id="npcmode_2" class="btn-check" name="npcmode" value="2"><label for="npcmode_2" class="btn btn-secondary"> 선택 생성 가능 </label>
|
||||||
<label class="btn btn-secondary active">
|
|
||||||
<input type="radio" name="npcmode" value="0" checked>불가
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label class="col-sm-3 col-form-label">휴식 턴 시 장수 턴</label>
|
<label class="col-sm-3 col-form-label" id="autorun_set_label">휴식 턴 시 장수 턴</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend btn-group btn-group-toggle" data-toggle="buttons">
|
<div class="btn-group btn-group-toggle" data-bs-toggle="buttons">
|
||||||
<label class="btn btn-secondary">
|
<input type="checkbox" id="autorun_develop" class="autorun_user_chk btn-check" data-key="develop" name="autorun_user[]" value="develop"><label class="btn btn-secondary" for="autorun_develop">내정</label>
|
||||||
<input type="checkbox" class="autorun_user_chk" data-key="develop" name="autorun_develop" id="autorun_develop">내정
|
<input type="checkbox" id="autorun_warp" class="autorun_user_chk btn-check" data-key="warp" name="autorun_user[]" value="warp"><label class="btn btn-secondary" for="autorun_warp">순간이동</label>
|
||||||
</label>
|
<input type="checkbox" id="autorun_recruit" class="autorun_user_chk btn-check" data-key="recruit" name="autorun_user[]" value="recruit"><label class="btn btn-secondary" for="autorun_recruit">징병</label>
|
||||||
<label class="btn btn-secondary">
|
<input type="checkbox" id="autorun_recruit_high" class="autorun_user_chk btn-check" data-key="recruit_high" name="autorun_user[]" value="recruit_high"><label class="btn btn-secondary" for="autorun_recruit_high">모병</label>
|
||||||
<input type="checkbox" class="autorun_user_chk" data-key="warp" name="autorun_warp" id="autorun_warp">순간이동
|
<input type="checkbox" id="autorun_train" class="autorun_user_chk btn-check" data-key="train" name="autorun_user[]" value="train"><label class="btn btn-secondary" for="autorun_train">훈사</label>
|
||||||
</label>
|
<input type="checkbox" id="autorun_battle" class="autorun_user_chk btn-check" data-key="battle" name="autorun_user[]" value="battle"><label class="btn btn-secondary" for="autorun_battle">출병</label>
|
||||||
<label class="btn btn-secondary">
|
<input type="checkbox" id="autorun_chief" class="autorun_user_chk btn-check" data-key="chief" name="autorun_user[]" value="chief"><label class="btn btn-secondary" for="autorun_chief">기본 사령턴</label>
|
||||||
<input type="checkbox" class="autorun_user_chk" data-key="recruit" name="autorun_recruit" id="autorun_recruit">징병
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="checkbox" class="autorun_user_chk" data-key="recruit_high" name="autorun_recruit_high" id="autorun_recruit_high">모병
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="checkbox" class="autorun_user_chk" data-key="train" name="autorun_train" id="autorun_train">훈사
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="checkbox" class="autorun_user_chk" data-key="battle" name="autorun_battle" id="autorun_battle">출병
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="checkbox" class="autorun_user_chk" data-key="chief" name="autorun_chief" id="autorun_chief">기본 사령턴
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group-append">
|
</div>
|
||||||
<span class="input-group-text">유효 시간</span>
|
</div>
|
||||||
|
<div class="col-sm-6 offset-sm-3">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-text">유효 시간
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select" name="autorun_user_minutes" id="autorun_user_minutes">
|
<select class="custom-select" name="autorun_user_minutes" id="autorun_user_minutes">
|
||||||
<option value="0" selected>꺼짐</option>
|
<option value="0" selected>꺼짐</option>
|
||||||
@@ -205,61 +171,12 @@ if($session->userGrade < 5 && !$allowReset){
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-3 col-form-label">휴식 턴 시 사령 턴</label>
|
|
||||||
<div class="col-sm-9">
|
|
||||||
<div class="input-group">
|
|
||||||
<div class="input-group-prepend btn-group btn-group-toggle" data-toggle="buttons">
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="autorun_chief_reward" id="autorun_chief_reward">포상/몰수
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="autorun_chief_warp" id="autorun_chief_warp">발령
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="autorun_chief_declaration" id="autorun_chief_declaration">선포
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="input-group-append">
|
|
||||||
<span class="input-group-text">유효 시간</span>
|
|
||||||
</div>
|
|
||||||
<select class="custom-select" name="autorun_chief_minutes" id="autorun_chief_minutes">
|
|
||||||
<option value="0" selected>꺼짐</option>
|
|
||||||
<option value="43200">항상</option>
|
|
||||||
<option value="10">10분</option>
|
|
||||||
<option value="20">20분</option>
|
|
||||||
<option value="30">30분</option>
|
|
||||||
<option value="60">1시간</option>
|
|
||||||
<option value="120">2시간</option>
|
|
||||||
<option value="180">3시간</option>
|
|
||||||
<option value="240">4시간</option>
|
|
||||||
<option value="360">6시간</option>
|
|
||||||
<option value="480">8시간</option>
|
|
||||||
<option value="600">10시간</option>
|
|
||||||
<option value="720">12시간</option>
|
|
||||||
<option value="1440">24시간</option>
|
|
||||||
<option value="2160">36시간</option>
|
|
||||||
<option value="2880">48시간</option>
|
|
||||||
<option value="3600">60시간</option>
|
|
||||||
<option value="4320">72시간</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="join_mode" class="col-sm-3 col-form-label">임관 모드</label>
|
<label for="join_mode" class="col-sm-3 col-form-label">임관 모드</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<div id="join_mode" class="btn-group btn-group-toggle" data-toggle="buttons">
|
<div id="join_mode" class="btn-group btn-group-toggle" data-bs-toggle="buttons">
|
||||||
<label class="btn btn-secondary active">
|
<input class="btn-check" id="join_mode_full" type="radio" name="join_mode" value="full" checked><label class="btn btn-secondary" for="join_mode_full">일반</label>
|
||||||
<input type="radio" name="join_mode" value="full" checked>일반
|
<input class="btn-check" id="join_mode_onlyRandom" type="radio" name="join_mode" value="onlyRandom"><label class="btn btn-secondary" for="join_mode_onlyRandom">랜덤 임관</label>
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="join_mode" value="onlyRandom">랜덤 임관
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -267,51 +184,27 @@ if($session->userGrade < 5 && !$allowReset){
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="show_img_level" class="col-sm-3 col-form-label">이미지 표기</label>
|
<label for="show_img_level" class="col-sm-3 col-form-label">이미지 표기</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<div id="show_img_level" class="btn-group btn-group-toggle" data-toggle="buttons">
|
<div id="show_img_level" class="btn-group btn-group-toggle" data-bs-toggle="buttons">
|
||||||
<label class="btn btn-secondary">
|
<input type="radio" id="show_img_level_0" class="btn-check" name="show_img_level" value="0"><label for="show_img_level_0" class="btn btn-secondary">안함</label>
|
||||||
<input type="radio" name="show_img_level" value="0">안함
|
<input type="radio" id="show_img_level_1" class="btn-check" name="show_img_level" value="1"><label for="show_img_level_1" class="btn btn-secondary">전콘</label>
|
||||||
</label>
|
<input type="radio" id="show_img_level_2" class="btn-check" name="show_img_level" value="2"><label for="show_img_level_2" class="btn btn-secondary">전콘, 병종</label>
|
||||||
<label class="btn btn-secondary">
|
<input type="radio" id="show_img_level_3" class="btn-check" name="show_img_level" value="3" checked><label for="show_img_level_3" class="btn btn-secondary">전콘, 병종, NPC</label>
|
||||||
<input type="radio" name="show_img_level" value="1">전콘
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary">
|
|
||||||
<input type="radio" name="show_img_level" value="2">전콘, 병종
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary active">
|
|
||||||
<input type="radio" name="show_img_level" value="3" checked>전콘, 병종, NPC
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="tournament_trig" class="col-sm-3 col-form-label">토너먼트 자동 시작<br>경기 단위</label>
|
<label for="tournament_trig" class="col-sm-3 col-form-label"><span class="text-nowrap">토너먼트 자동 시작</span> <span class="text-nowrap">경기 단위</span></label>
|
||||||
<div class="col-sm-9" id="tournament_trig">
|
<div class="col-sm-9" id="tournament_trig">
|
||||||
<div id="tournament_trig" class="btn-group-toggle btn-group flex-wrap" data-toggle="buttons">
|
<div id="tournament_trig" class="btn-group-toggle btn-group flex-wrap" data-bs-toggle="buttons">
|
||||||
<label class="btn btn-secondary w-25">
|
<input type="radio" class="btn-check" id="tournament_trig_0" name="tournament_trig" value="0"><label for="tournament_trig_0" class="btn btn-secondary w-25">안함</label>
|
||||||
<input type="radio" name="tournament_trig" value="0">안함
|
<input type="radio" class="btn-check" id="tournament_trig_1" name="tournament_trig" value="1"><label for="tournament_trig_1" class="btn btn-secondary w-25">12분(총 5일)</label>
|
||||||
</label>
|
<input type="radio" class="btn-check" id="tournament_trig_2" name="tournament_trig" value="2"><label for="tournament_trig_2" class="btn btn-secondary w-25">7분(총 10시간)</label>
|
||||||
<label class="btn btn-secondary w-25">
|
<input type="radio" class="btn-check" id="tournament_trig_3" name="tournament_trig" value="3"><label for="tournament_trig_3" class="btn btn-secondary w-25">3분(총 4시간)</label>
|
||||||
<input type="radio" name="tournament_trig" value="1">12분(총 5일)
|
<input type="radio" class="btn-check" id="tournament_trig_4" name="tournament_trig" value="4" checked><label for="tournament_trig_4" class="btn btn-secondary w-25">1분(총 82분)</label>
|
||||||
</label>
|
<input type="radio" class="btn-check" id="tournament_trig_5" name="tournament_trig" value="5"><label for="tournament_trig_5" class="btn btn-secondary w-25">30초(총 41분)</label>
|
||||||
<label class="btn btn-secondary w-25">
|
<input type="radio" class="btn-check" id="tournament_trig_6" name="tournament_trig" value="6"><label for="tournament_trig_6" class="btn btn-secondary w-25">15초(총 21분)</label>
|
||||||
<input type="radio" name="tournament_trig" value="2">7분(총 10시간)
|
<input type="radio" class="btn-check" id="tournament_trig_7" name="tournament_trig" value="7"><label for="tournament_trig_7" class="btn btn-secondary w-25">5초(총 7분)</label>
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary w-25">
|
|
||||||
<input type="radio" name="tournament_trig" value="3">3분(총 4시간)
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary w-25 active">
|
|
||||||
<input type="radio" name="tournament_trig" value="4" checked>1분(총 82분)
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary w-25">
|
|
||||||
<input type="radio" name="tournament_trig" value="5">30초(총 41분)
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary w-25">
|
|
||||||
<input type="radio" name="tournament_trig" value="6">15초(총 21분)
|
|
||||||
</label>
|
|
||||||
<label class="btn btn-secondary w-25">
|
|
||||||
<input type="radio" name="tournament_trig" value="7">5초(총 7분)
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -332,7 +225,7 @@ if($session->userGrade < 5 && !$allowReset){
|
|||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-sm-3"></div>
|
<div class="col-sm-3"></div>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9 d-grid">
|
||||||
<input type="submit" class="btn btn-primary btn-lg btn-block login-button" value="리셋 개시">
|
<input type="submit" class="btn btn-primary btn-lg btn-block login-button" value="리셋 개시">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -340,25 +233,44 @@ if($session->userGrade < 5 && !$allowReset){
|
|||||||
</div>
|
</div>
|
||||||
<h4 class="card-header">시나리오 정보</h4>
|
<h4 class="card-header">시나리오 정보</h4>
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<colgroup><col style="width:100px;"><col></colgroup>
|
<colgroup>
|
||||||
|
<col style="width:100px;">
|
||||||
|
<col>
|
||||||
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr><th>설정</th><th>값</th>
|
<tr>
|
||||||
|
<th>설정</th>
|
||||||
|
<th>값</th>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th>시작 연도</th><td ><span id="scenario_begin">180년</span><small id="scenario_begin_with_sync"></small></td></tr>
|
<tr>
|
||||||
<tr><th>NPC 수</th><td><span id="scenario_npc"></span><span id="scenario_npc_extend"></span></td></tr>
|
<th>시작 연도</th>
|
||||||
<tr><th>국가</th><td><span id="scenario_nation"></span></td></tr>
|
<td><span id="scenario_begin">180년</span><small id="scenario_begin_with_sync"></small>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>NPC 수</th>
|
||||||
|
<td><span id="scenario_npc"></span><span id="scenario_npc_extend"></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>국가</th>
|
||||||
|
<td><span id="scenario_nation"></span></td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr><td colspan="2">
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
</div><!--GAME 폼 끝-->
|
</div>
|
||||||
|
<!--GAME 폼 끝-->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+9
-8
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include "lib.php";
|
include "lib.php";
|
||||||
@@ -16,20 +17,18 @@ if($session->userGrade == 5){
|
|||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>설치</title>
|
<title>설치</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
|
||||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
|
||||||
<?=WebUtil::printJS('../e_lib/jquery.validate.min.js')?>
|
|
||||||
<?=WebUtil::printJS('js/common.js')?>
|
|
||||||
<?=WebUtil::printJS('js/install_db.js')?>
|
|
||||||
<?= WebUtil::printCSS('css/normalize.css') ?>
|
<?= WebUtil::printCSS('css/normalize.css') ?>
|
||||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
|
||||||
<?= WebUtil::printCSS('css/install.css') ?>
|
<?= WebUtil::printCSS('css/install.css') ?>
|
||||||
|
<?= WebUtil::printDist('ts', ['common', 'install_db']) ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="container" style="min-width:720px;">
|
<div class="container" style="min-width:720px;">
|
||||||
<h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe 리셋</h1>
|
<h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe 리셋</h1>
|
||||||
@@ -46,7 +45,7 @@ if($session->userGrade == 5){
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="full_reset" class="col-sm-3 col-form-label">이전 DB 초기화</label>
|
<label for="full_reset" class="col-sm-3 col-form-label">이전 DB 초기화</label>
|
||||||
<div class="col-sm-9" style="display: inline-flex;">
|
<div class="col-sm-9" style="display: inline-flex;">
|
||||||
<div id="full_reset" class="btn-group btn-group-toggle" data-toggle="buttons">
|
<div id="full_reset" class="btn-group btn-group-toggle" data-bs-toggle="buttons">
|
||||||
<label class="btn btn-secondary">
|
<label class="btn btn-secondary">
|
||||||
<input type="radio" name="full_reset" value="1">Y
|
<input type="radio" name="full_reset" value="1">Y
|
||||||
</label>
|
</label>
|
||||||
@@ -106,10 +105,12 @@ if($session->userGrade == 5){
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div><!--DB 폼 끝-->
|
</div>
|
||||||
|
<!--DB 폼 끝-->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -85,6 +85,7 @@ $result = ResetHelper::buildScenario(
|
|||||||
$options['scenario'],
|
$options['scenario'],
|
||||||
$options['fiction'],
|
$options['fiction'],
|
||||||
$options['extend'],
|
$options['extend'],
|
||||||
|
$options['block_general_create'],
|
||||||
$options['npcmode'],
|
$options['npcmode'],
|
||||||
$options['show_img_level'],
|
$options['show_img_level'],
|
||||||
$options['tournament_trig'],
|
$options['tournament_trig'],
|
||||||
|
|||||||
@@ -5,9 +5,11 @@ include('lib.php');
|
|||||||
include 'func.php';
|
include 'func.php';
|
||||||
|
|
||||||
$result = [
|
$result = [
|
||||||
"generalID"=>null,
|
"generalID"=>0,
|
||||||
"myNationID"=>null,
|
"myNationID"=>0,
|
||||||
"isChief"=>false
|
"isChief"=>false,
|
||||||
|
"officerLevel"=>0,
|
||||||
|
"permission"=>0,
|
||||||
];
|
];
|
||||||
$session = Session::requireGameLogin([])->setReadOnly();
|
$session = Session::requireGameLogin([])->setReadOnly();
|
||||||
$userID = Session::getUserID();
|
$userID = Session::getUserID();
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace sammo;
|
|
||||||
|
|
||||||
include "lib.php";
|
|
||||||
include "func.php";
|
|
||||||
|
|
||||||
WebUtil::requireAJAX();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$session = Session::requireGameLogin([])->setReadOnly();
|
|
||||||
|
|
||||||
$generalID = $session->generalID;
|
|
||||||
|
|
||||||
$turnAmount = Util::getPost('amount', 'int');
|
|
||||||
$isRepeat = Util::getPost('is_repeat', 'bool', false);
|
|
||||||
|
|
||||||
if($turnAmount == null){
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'턴이 입력되지 않았습니다.',
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(abs($turnAmount) >= GameConst::$maxTurn){
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'턴 숫자가 올바르지 않습니다.',
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if($isRepeat){
|
|
||||||
repeatGeneralCommand($generalID, $turnAmount);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
pushGeneralCommand($generalID, $turnAmount);
|
|
||||||
}
|
|
||||||
|
|
||||||
Json::die([
|
|
||||||
'result'=>true,
|
|
||||||
'reason'=>'success',
|
|
||||||
]);
|
|
||||||
@@ -157,6 +157,7 @@ foreach ($customViewColumns as $column => $reqPermission) {
|
|||||||
$resultColumns[] = $column;
|
$resultColumns[] = $column;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$generalList = [];
|
||||||
foreach ($rawGeneralList as $rawGeneral) {
|
foreach ($rawGeneralList as $rawGeneral) {
|
||||||
//General 생성?
|
//General 생성?
|
||||||
|
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace sammo;
|
|
||||||
|
|
||||||
include "lib.php";
|
|
||||||
include "func.php";
|
|
||||||
|
|
||||||
$session = Session::requireGameLogin([])->setReadOnly();
|
|
||||||
|
|
||||||
$db = DB::db();
|
|
||||||
|
|
||||||
$commandList = [];
|
|
||||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
|
||||||
$generalID = $session->generalID;
|
|
||||||
|
|
||||||
$rawTurn = $db->queryAllLists('SELECT turn_idx, action, arg, brief FROM general_turn WHERE general_id = %i ORDER BY turn_idx ASC', $generalID);
|
|
||||||
foreach($rawTurn as [$turn_idx, $action, $arg, $brief]){
|
|
||||||
$commandList[$turn_idx] = [
|
|
||||||
'action'=>$action,
|
|
||||||
'brief'=>$brief,
|
|
||||||
'arg'=>Json::decode($arg)
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
[$turnTerm, $year, $month, $lastExecute] = $gameStor->getValuesAsArray(['turnterm', 'year', 'month', 'turntime']);
|
|
||||||
|
|
||||||
$turnTime = $db->queryFirstField('SELECT turntime FROM general WHERE no=%i', $generalID);
|
|
||||||
|
|
||||||
if(cutTurn($turnTime, $turnTerm) > cutTurn($lastExecute, $turnTerm)){
|
|
||||||
//이미 이번달에 실행된 턴이다.
|
|
||||||
$month++;
|
|
||||||
if($month >= 13){
|
|
||||||
$month -= 12;
|
|
||||||
$year += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Json::die([
|
|
||||||
'result'=>true,
|
|
||||||
'turnTime'=>$turnTime,
|
|
||||||
'turnTerm'=>$turnTerm,
|
|
||||||
'year'=>$year,
|
|
||||||
'month'=>$month,
|
|
||||||
'date'=>TimeUtil::now(true),
|
|
||||||
'turn'=>$commandList
|
|
||||||
]);
|
|
||||||
@@ -37,7 +37,7 @@ list(
|
|||||||
$npcmode
|
$npcmode
|
||||||
) = $gameStor->getValuesAsArray(['maxgeneral', 'turnterm', 'npcmode']);
|
) = $gameStor->getValuesAsArray(['maxgeneral', 'turnterm', 'npcmode']);
|
||||||
|
|
||||||
if(!$npcmode){
|
if($npcmode!=1){
|
||||||
Json::die([
|
Json::die([
|
||||||
'result'=>false,
|
'result'=>false,
|
||||||
'reason'=>'빙의 가능한 서버가 아닙니다'
|
'reason'=>'빙의 가능한 서버가 아닙니다'
|
||||||
|
|||||||
@@ -0,0 +1,90 @@
|
|||||||
|
<?php
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
include "lib.php";
|
||||||
|
include "func.php";
|
||||||
|
|
||||||
|
function sortTokens(&$tokens){
|
||||||
|
usort($tokens, function($lhs, $rhs){
|
||||||
|
return array_sum($lhs['dex'])<=>array_sum($rhs['dex']);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function putInfoText(&$info){
|
||||||
|
if(key_exists('specialDomestic', $info)){
|
||||||
|
$class = buildGeneralSpecialDomesticClass($info['specialDomestic']);
|
||||||
|
$info['specialDomesticName'] = $class->getName();
|
||||||
|
$info['specialDomesticInfo'] = $class->getInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(key_exists('specialWar', $info)){
|
||||||
|
$class = buildGeneralSpecialDomesticClass($info['specialWar']);
|
||||||
|
$info['specialWarName'] = $class->getName();
|
||||||
|
$info['specialWarInfo'] = $class->getInfo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$session = Session::requireLogin([])->setReadOnly();
|
||||||
|
$userID = Session::getUserID();
|
||||||
|
|
||||||
|
$oNow = new \DateTimeImmutable();
|
||||||
|
|
||||||
|
$now = $oNow->format('Y-m-d H:i:s');
|
||||||
|
|
||||||
|
$db = DB::db();
|
||||||
|
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||||
|
|
||||||
|
$npcmode = $gameStor->getValue('npcmode');
|
||||||
|
if($npcmode!=2){
|
||||||
|
Json::die([
|
||||||
|
'result'=>false,
|
||||||
|
'reason'=>'선택 가능한 서버가 아닙니다'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$rawGeneral = $db->queryFirstRow('SELECT no, aux FROM general WHERE `owner` = %i', $userID);
|
||||||
|
if($rawGeneral){
|
||||||
|
$generalAux = Json::decode($rawGeneral['aux']);
|
||||||
|
if(key_exists('next_change', $generalAux)&& $generalAux['next_change'] > $now){
|
||||||
|
Json::die([
|
||||||
|
'result'=>false,
|
||||||
|
'reason'=>'아직 다시 고를 수 없습니다'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$tokens = $db->query('SELECT unique_name, reserved_until, info FROM `select_pool` WHERE `owner`=%i AND `reserved_until`>=%s', $userID, $now);
|
||||||
|
|
||||||
|
if($tokens){
|
||||||
|
$pick = [];
|
||||||
|
$valid_until = null;
|
||||||
|
$specialInfo = [];
|
||||||
|
foreach($tokens as $token){
|
||||||
|
$valid_until = $token['reserved_until'];
|
||||||
|
$info = Json::decode($token['info']);
|
||||||
|
putInfoText($info);
|
||||||
|
$info['uniqueName'] = $token['unique_name'];
|
||||||
|
$pick[] = $info;
|
||||||
|
}
|
||||||
|
sortTokens($pick);//좀 무식하지만..
|
||||||
|
Json::die([
|
||||||
|
'result'=>true,
|
||||||
|
'pick'=>$pick,
|
||||||
|
'validUntil'=>$valid_until
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$pick = [];
|
||||||
|
$valid_until = null;
|
||||||
|
foreach(pickGeneralFromPool($db, $userID, 14) as $pickObj){
|
||||||
|
$valid_until = $pickObj->getValidUntil();
|
||||||
|
$info = $pickObj->getInfo();
|
||||||
|
putInfoText($info);
|
||||||
|
$pick[] = $info;
|
||||||
|
}
|
||||||
|
sortTokens($pick);//좀 무식하지만..
|
||||||
|
Json::die([
|
||||||
|
'result'=>true,
|
||||||
|
'pick'=>$pick,
|
||||||
|
'validUntil'=>$valid_until
|
||||||
|
]);
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace sammo;
|
|
||||||
|
|
||||||
include 'lib.php';
|
|
||||||
include 'func.php';
|
|
||||||
|
|
||||||
WebUtil::requireAJAX();
|
|
||||||
|
|
||||||
$session = Session::requireGameLogin([])->setReadOnly();
|
|
||||||
$userID = $session::getUserID();
|
|
||||||
$serverID = UniqueConst::$serverID;
|
|
||||||
|
|
||||||
$image = $_FILES['img'];
|
|
||||||
switch ($image['error']) {
|
|
||||||
case UPLOAD_ERR_OK:
|
|
||||||
break;
|
|
||||||
case UPLOAD_ERR_NO_FILE:
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'파일이 없습니다.'
|
|
||||||
]);
|
|
||||||
case UPLOAD_ERR_INI_SIZE:
|
|
||||||
case UPLOAD_ERR_FORM_SIZE:
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'업로드된 파일이 지나치게 큽니다.'
|
|
||||||
]);
|
|
||||||
default:
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'업로드되지 않았습니다.'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!is_uploaded_file($image['tmp_name'])) {
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'제대로 파일이 업로드되지 않았습니다.'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if($image['size'] > 1048576) {
|
|
||||||
//파일크기 검사
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'1MB 이하로 올려주세요!'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$size = getImageSize($image['tmp_name']);
|
|
||||||
|
|
||||||
$imageType = $size[2];
|
|
||||||
$availableImageType = array('.jpg'=>IMAGETYPE_JPEG, '.png'=>IMAGETYPE_PNG, '.gif'=>IMAGETYPE_GIF);
|
|
||||||
$newExt = array_search($imageType, $availableImageType, true);
|
|
||||||
|
|
||||||
if(!$newExt) {
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'jpg, gif, png 파일이 아닙니다!'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$db = RootDB::db();
|
|
||||||
$imgStor = KVStorage::getStorage($db, 'img_storage');
|
|
||||||
|
|
||||||
$picName = hash_file('md5', $image['tmp_name']);
|
|
||||||
$newPicName = "$picName$newExt";
|
|
||||||
|
|
||||||
$destDir = AppConf::getUserIconPathFS().'/uploaded_image';
|
|
||||||
$dest = $destDir.'/'.$newPicName;
|
|
||||||
|
|
||||||
if(!file_exists($dest)){
|
|
||||||
if (!file_exists($destDir)) {
|
|
||||||
mkdir($destDir);
|
|
||||||
}
|
|
||||||
if(!is_dir($destDir)) {
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'버그! 업로드 경로 확인!'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
if(!is_writable($destDir)){
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'버그! 업로드 권한 확인!'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$dest = $destDir.'/'.$newPicName;
|
|
||||||
|
|
||||||
if(!move_uploaded_file($image['tmp_name'], $dest)) {
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'업로드에 실패했습니다!'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$storedStatus = $imgStor->$newPicName??[];
|
|
||||||
$imgKey = "$serverID:$userID";
|
|
||||||
if(!key_exists($imgKey, $storedStatus)){
|
|
||||||
$storedStatus[$imgKey] = TimeUtil::now();
|
|
||||||
}
|
|
||||||
|
|
||||||
$imgStor->$newPicName = $storedStatus;
|
|
||||||
|
|
||||||
Json::die([
|
|
||||||
'result'=>true,
|
|
||||||
'reason'=>'성공',
|
|
||||||
'path'=>AppConf::getUserIconPathWeb().'/uploaded_image/'.$newPicName
|
|
||||||
]);
|
|
||||||
+7
-1
@@ -19,7 +19,7 @@ $serverName = DB::prefix();
|
|||||||
$serverAcl = $session->acl[$serverName]??[];
|
$serverAcl = $session->acl[$serverName]??[];
|
||||||
$allowReset = in_array('reset', $serverAcl);
|
$allowReset = in_array('reset', $serverAcl);
|
||||||
$allowFullReset = in_array('fullReset',$serverAcl);
|
$allowFullReset = in_array('fullReset',$serverAcl);
|
||||||
$allowReset |= $allowFullReset;
|
$allowReset = $allowReset || $allowFullReset;
|
||||||
|
|
||||||
$reserve_open = Util::getPost('reserve_open');
|
$reserve_open = Util::getPost('reserve_open');
|
||||||
if($reserve_open && $reserve_open < date('Y-m-d H:i')){
|
if($reserve_open && $reserve_open < date('Y-m-d H:i')){
|
||||||
@@ -57,6 +57,7 @@ $v->rule('required', [
|
|||||||
'scenario',
|
'scenario',
|
||||||
'fiction',
|
'fiction',
|
||||||
'extend',
|
'extend',
|
||||||
|
'block_general_create',
|
||||||
'join_mode',
|
'join_mode',
|
||||||
'npcmode',
|
'npcmode',
|
||||||
'show_img_level',
|
'show_img_level',
|
||||||
@@ -67,6 +68,7 @@ $v->rule('required', [
|
|||||||
'scenario',
|
'scenario',
|
||||||
'fiction',
|
'fiction',
|
||||||
'extend',
|
'extend',
|
||||||
|
'block_general_create',
|
||||||
'npcmode',
|
'npcmode',
|
||||||
'show_img_level',
|
'show_img_level',
|
||||||
'tournament_trig',
|
'tournament_trig',
|
||||||
@@ -109,11 +111,13 @@ $scenario = (int)$_POST['scenario'];
|
|||||||
$fiction = (int)$_POST['fiction'];
|
$fiction = (int)$_POST['fiction'];
|
||||||
$extend = (int)$_POST['extend'];
|
$extend = (int)$_POST['extend'];
|
||||||
$npcmode = (int)$_POST['npcmode'];
|
$npcmode = (int)$_POST['npcmode'];
|
||||||
|
$block_general_create = (bool)$_POST['block_general_create'];
|
||||||
$show_img_level = (int)$_POST['show_img_level'];
|
$show_img_level = (int)$_POST['show_img_level'];
|
||||||
$tournament_trig = (int)$_POST['tournament_trig'];
|
$tournament_trig = (int)$_POST['tournament_trig'];
|
||||||
$join_mode = $_POST['join_mode'];
|
$join_mode = $_POST['join_mode'];
|
||||||
$autorun_user_minutes = (int)$_POST['autorun_user_minutes'];
|
$autorun_user_minutes = (int)$_POST['autorun_user_minutes'];
|
||||||
$autorun_user_options = [];
|
$autorun_user_options = [];
|
||||||
|
|
||||||
foreach(Util::getPost('autorun_user', 'array_string', []) as $autorun_option){
|
foreach(Util::getPost('autorun_user', 'array_string', []) as $autorun_option){
|
||||||
$autorun_user_options[$autorun_option] = 1;
|
$autorun_user_options[$autorun_option] = 1;
|
||||||
}
|
}
|
||||||
@@ -165,6 +169,7 @@ if($reserve_open){
|
|||||||
'scenarioName'=>$scenarioObj->getTitle(),
|
'scenarioName'=>$scenarioObj->getTitle(),
|
||||||
'fiction'=>$fiction,
|
'fiction'=>$fiction,
|
||||||
'extend'=>$extend,
|
'extend'=>$extend,
|
||||||
|
'block_general_create'=>$block_general_create,
|
||||||
'npcmode'=>$npcmode,
|
'npcmode'=>$npcmode,
|
||||||
'show_img_level'=>$show_img_level,
|
'show_img_level'=>$show_img_level,
|
||||||
'tournament_trig'=>$tournament_trig,
|
'tournament_trig'=>$tournament_trig,
|
||||||
@@ -200,6 +205,7 @@ Json::die(ResetHelper::buildScenario(
|
|||||||
$scenario,
|
$scenario,
|
||||||
$fiction,
|
$fiction,
|
||||||
$extend,
|
$extend,
|
||||||
|
$block_general_create,
|
||||||
$npcmode,
|
$npcmode,
|
||||||
$show_img_level,
|
$show_img_level,
|
||||||
$tournament_trig,
|
$tournament_trig,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ $serverName = DB::prefix();
|
|||||||
$serverAcl = $session->acl[$serverName]??[];
|
$serverAcl = $session->acl[$serverName]??[];
|
||||||
$allowReset = in_array('reset', $serverAcl);
|
$allowReset = in_array('reset', $serverAcl);
|
||||||
$allowFullReset = in_array('fullReset',$serverAcl);
|
$allowFullReset = in_array('fullReset',$serverAcl);
|
||||||
$allowReset |= $allowFullReset;
|
$allowReset = $allowReset || $allowFullReset;
|
||||||
|
|
||||||
if($session->userGrade < 5 && !$allowReset){
|
if($session->userGrade < 5 && !$allowReset){
|
||||||
Json::die([
|
Json::die([
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ if($msg === null){
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
$reason = 'success';
|
$reason = 'success';
|
||||||
|
$gameStor = KVStorage::getStorage(DB::db(), 'game_env');
|
||||||
|
$gameStor->cacheAll();
|
||||||
if($msgResponse){
|
if($msgResponse){
|
||||||
$result = $msg->agreeMessage($general['no'], $reason);
|
$result = $msg->agreeMessage($general['no'], $reason);
|
||||||
}
|
}
|
||||||
@@ -56,6 +58,6 @@ else{
|
|||||||
|
|
||||||
|
|
||||||
Json::die([
|
Json::die([
|
||||||
'result' => $result===DiplomaticMessage::ACCEPTED,
|
'result' => $result!==DiplomaticMessage::INVALID,
|
||||||
'reason' => $reason
|
'reason' => $reason
|
||||||
]);
|
]);
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user