Compare commits

..
1365 Commits
Author SHA1 Message Date
Hide_D 53f3083b73 npc 워프 기준을 태수, 군사, 시중 모두 따르도록 변경. 워프 버그 수정 2020-01-04 04:00:15 +09:00
Hide_D 61df5ed809 버그 수정 2020-01-04 03:28:31 +09:00
Hide_D 7c1baa6cf1 공백지를 고려하지 않는 버그 수정 2020-01-04 03:26:50 +09:00
Hide_D 800d4f6cc9 출병에서 1칸 떨어진 도시를 제거 2020-01-04 01:25:29 +09:00
Hide_D 1ab45af036 출병을 '어택땅'으로 변경 2020-01-04 01:23:07 +09:00
Hide_D e9b5e4d4d1 같은 병종 숙련전환하면 늘어나기만 하는 버그 수정 2019-11-26 18:49:40 +09:00
Hide_D 65aa4c29a4 NPC 버그 수정, NPC 징병 룰 변경
징병시 최대 통솔 반영
발령 시 인구 바닥난 곳 고려 안하던 것 보정
징병 기준을 통솔과 관계없이 40000명인 경우에 시도하던 버그 수정
NPC는 30000 + 20000 일 경우에만 징병함.
2019-11-10 04:08:48 +09:00
Hide_D e75b6f2d5b miniche_b js 등록 2019-10-25 18:40:32 +09:00
Hide_D dbc758095f miniche_b 추가 2019-10-24 02:19:46 +09:00
Hide_D 57a94e4a7d 연감 버그 수정 2019-10-16 02:34:46 +09:00
Hide_D 50526383f9 Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2019-10-16 02:32:51 +09:00
Hide_D 639b1dcac7 연감 출력 개선 2019-10-16 02:32:44 +09:00
Hide_D a984651888 포켓몬 맵 js 등록 2019-10-04 01:18:45 +09:00
Hide_D a8befe5478 찐 유저무쌍 추가 2019-10-03 23:39:47 +09:00
Hide_D 43ba732aad 기본 증축량 버그 수정 2019-10-03 21:15:52 +09:00
Hide_D 158068273e 포켓몬스터 전콘 안뜨는 문제 수정 2019-10-03 20:52:51 +09:00
Hide_D 94a00dbdac 포켓몬 v1 추가 2019-10-03 19:50:22 +09:00
Hide_D fedc7e5ef5 Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2019-10-03 15:12:35 +09:00
Hide_D 78ff016def 감축 조건 변경, 증/감축시 변화량을 지정가능하도록 변경 2019-10-03 15:12:25 +09:00
Hide_D 30d8324a0a 핫픽스 2019-10-02 13:37:30 +09:00
Hide_D de1fa34922 병력없을 때 공격 루틴 타는 것 방지 2019-10-01 22:06:38 +09:00
Hide_D a74b9a5e80 서신전달 빈칸 입력 테스트 2019-09-28 11:54:19 +09:00
Hide_D 79a199cbd3 자동 진행 모드일 때 모반이 거의 항상 가능해지는 버그 수정 2019-09-28 07:56:32 +09:00
Hide_D 2f2062c9e5 랜임코드 버그 수정 2019-09-26 18:42:51 +09:00
Hide_D 1dcace7a62 자율행동 항상 유효 변경 2019-09-25 02:17:27 +09:00
Hide_D 8f107b56b3 서버에서 자율행동란에 시간 추가, tooltip에 copyable_info 추가 2019-09-25 02:14:49 +09:00
Hide_D 8c6afee7c9 부대장 사망의 경우도 고려 2019-09-24 07:34:55 +09:00
Hide_D d4982f3ed9 README.md 변경 2019-09-23 01:19:49 +09:00
Hide_D f2a785f2fc imagePull 기능 추가, 인스톨러 완성 2019-09-23 00:28:15 +09:00
Hide_D 6fafcfae4e 훈사 분리 2019-09-21 23:27:43 +09:00
Hide_D 33e075f669 훈사를 분리 2019-09-21 21:29:20 +09:00
Hide_D e5fc467c4e 버그 수정 2019-09-21 21:04:17 +09:00
Hide_D b7a5de49c6 표기 일부 변경 2019-09-21 18:09:37 +09:00
Hide_D 3f145abd6f 모훈사 기준을 징병 6회로 변경 2019-09-21 17:39:13 +09:00
Hide_D 4612834870 워프 기준, 쌀 삼팜 기준 변경 2019-09-21 14:41:23 +09:00
Hide_D 83c5609fad 징병 버그 수정 2 2019-09-21 11:42:10 +09:00
Hide_D d142056098 징병 안되는 버그 수정 2019-09-21 11:39:51 +09:00
Hide_D 4d8ecf4191 진짜로 삭턴 버그 수정 2019-09-21 02:44:00 +09:00
Hide_D af6c3f466d 삭턴 버그 수정 2019-09-21 02:38:06 +09:00
Hide_D 033a2d8674 삭턴 버그 수정 2019-09-21 02:35:15 +09:00
Hide_D 9079788b2b 삭턴 기준 변경 2019-09-21 02:33:39 +09:00
Hide_D 44ddb2e480 git fetch에도 -q 2019-09-21 02:28:49 +09:00
Hide_D 295ba84071 자동 행동 세부를 툴팁으로 2019-09-21 02:27:05 +09:00
Hide_D 8773250aab 초기 병종이 보병일 때 고정되는 버그 수정 2019-09-21 02:14:25 +09:00
Hide_D c5a4602fe1 옵션 표기 버그 수정 2019-09-21 02:11:54 +09:00
Hide_D 5f4c43baf6 Merge branch 'devel' into autorun 2019-09-21 02:07:26 +09:00
Hide_D 0ef3921e17 update 서버 변경 2019-09-21 02:06:49 +09:00
Hide_D efcf0f772e server checkout 추가2 2019-09-21 01:50:36 +09:00
Hide_D ccabe847bb 루트도 git tree-ish 지정 가능 2019-09-21 01:42:21 +09:00
Hide_D 45ed63ffe3 버그 수정 2019-09-21 01:38:29 +09:00
Hide_D 7bebbe3a16 징병, 모병 추가 2019-09-21 01:09:17 +09:00
Hide_D 53ba1db79f autorun_user 초기 세팅 2019-09-20 02:12:42 +09:00
Hide_D 76c306a122 npc AI를 '사전 턴' 수행 이후에 처리하도록 변경 2019-09-20 00:41:38 +09:00
Hide_D 89c2c163cb 서버 정보에 자동행동 표기 2019-09-20 00:35:13 +09:00
Hide_D 8826061266 autorun_user 인자 세팅 2019-09-20 00:05:40 +09:00
Hide_D e684877c94 리셋 화면에서 '휴식 턴 시 장수 턴' 추가 2019-09-19 02:21:51 +09:00
Hide_D 12c8152901 docker 메시지 수정 2019-09-19 01:16:21 +09:00
Hide_D 8ba20bf4d2 Docker를 이용한 설치 안내 2019-09-15 23:25:11 +09:00
Hide_D 0bc1ad09d1 년도 변경 2019-09-15 23:19:04 +09:00
Hide_D 231c79132a run_daemon 1분 유지 수정 2019-09-15 20:59:35 +09:00
Hide_D 089803c599 cron 수정 2019-09-15 20:53:23 +09:00
Hide_D 4ea373aff6 gitignore change 2019-09-15 20:08:57 +09:00
Hide_D 0d94b8c742 Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2019-09-15 19:49:32 +09:00
Hide_D d444f19043 date_default_timezone_set 해제 2019-09-15 19:49:24 +09:00
Hide_D 87a0e73c96 인스톨러 버그 수정 2019-09-15 02:59:38 +09:00
Hide_D b5922095f0 인스톨러 임시 트윅 2019-09-15 02:50:10 +09:00
Hide_D 3fee29e9e9 setup_db에서 global_salt 추가 2019-09-15 00:55:57 +09:00
Hide_D 4e351b3be8 Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2019-09-15 00:38:00 +09:00
Hide_D 3432b900df 설치 직후 기본 gitpath 변경 2019-09-15 00:37:46 +09:00
Hide_D fb7c67f317 빙의 안되는 버그 수정, 가입/빙의 시 락 2019-08-18 18:01:11 +09:00
Hide_D 28d5a5c39a 장수 생성시 빠르게 쿼리를 날려 중복 생성하는 것이 불가능하도록 2019-08-18 17:50:38 +09:00
Hide_D e2754511d9 부대탈퇴 시 propergation 처리 실수 수정 2019-08-18 00:46:39 +09:00
Hide_D 71d179de76 서버 시간을 더 정교하게 반영하도록 수정 2019-08-16 23:42:46 +09:00
Hide_D 08523852da 마지막 남은 iframe 안녕!!! 2019-08-16 23:27:28 +09:00
Hide_D 3dd52942d2 부대 명령을 json api로 변경 2019-08-16 22:16:28 +09:00
Hide_D bb24e45028 서버가 오픈되지 않으면 벌점이 늘지 않도록 변경 2019-08-15 19:37:03 +09:00
Hide_D f8c72a6a0a NPC기술연구 관련 마저 고침 2019-08-15 16:10:39 +09:00
Hide_D fa246ff810 단순 건국 상품 롤백 2019-08-15 00:37:49 +09:00
Hide_D 1a1d384a3e 최종 보정 수정 2019-08-14 01:36:41 +09:00
Hide_D 6d85c609fd 동시에 관직이 여러번 뛸때에도 관직 보상 많이 줌 2019-08-14 01:33:50 +09:00
Hide_D e1b8dde60a 보정 롤백 2019-08-14 01:27:37 +09:00
Hide_D e8d32eef4e 작위보상의 수뇌 보정을 낮춤 2019-08-14 01:26:05 +09:00
Hide_D ec0fa686a9 여유를 '절대 시간' 으로 변경 2019-08-14 01:00:10 +09:00
Hide_D 7604273c1a 삭턴에 조금 여유를 줌 2019-08-14 00:58:56 +09:00
Hide_D 00db927ce7 작위 보상 추가 2019-08-14 00:55:45 +09:00
Hide_D 9fea24f0f6 건국 즉시 얻는 템 삭제, 유니크 복권 리팩토링, '고정된 한개'를 주는 유니크 복권 추가 2019-08-14 00:27:36 +09:00
Hide_D c903ce929f 서버 정보 추가 제공 2019-08-13 23:37:46 +09:00
Hide_D d48d9f85b3 가오픈시 별도 표기 추가 2019-08-13 23:24:05 +09:00
Hide_D 5bdf7ba316 가오픈시 삭제는 유저장만 가능하도록 변경 2019-08-13 02:24:58 +09:00
Hide_D 518c74736f 가 오픈기간내 장수 삭제/빙의해제 가능 2019-08-13 02:23:27 +09:00
Hide_D 223d2cf786 서버 가오픈시 대비 넉넉하게 시간 제공 2019-08-13 01:30:41 +09:00
Hide_D cfa2cff34a NPC의 기술 연구 기준을 '기술제한이 아니면'으로 변경 2019-08-13 00:20:07 +09:00
Hide_D 26eacfe795 랜임 버그 핫픽스 2019-07-18 21:21:58 +09:00
Hide_D b1b937ee31 (6턴 제외) 삭턴사시 본닉 공개 2019-07-17 23:32:59 +09:00
Hide_D 122479158c '장수를 따라' 임관하는 기능 추가 2019-07-17 23:06:20 +09:00
Hide_D 0af5e9ec84 외교권자 임명 시 내부적으로 warning뜨는 버그 수정 2019-07-17 21:19:34 +09:00
Hide_D cb5414f789 youtube, vimeo iframe 가능하도록 변경 2019-07-17 21:12:25 +09:00
sars 224cb1b913 server_title id 추가 2019-07-10 19:52:29 -07:00
sars 8bd84cc701 serverCnt 변수로 지정 2019-07-10 19:39:25 -07:00
sars a14dcf8b3e 깃수 출력 2019-07-10 15:27:44 -07:00
Hide_D a1a26bf8fe 훈련,사기템 효과 두배 증가, 철벽서 버그 수정 2019-06-21 10:06:05 +09:00
Hide_D fea229c4ad 사령부 턴 높이 늘림 2019-06-21 09:58:17 +09:00
Hide_D 7040d940ac 왕조 일람 정보 추가 2019-06-21 09:55:40 +09:00
Hide_D a576d72335 메인 페이지 부대 이름 관련 보조정보 추가 2019-06-21 09:51:39 +09:00
Hide_D 5aab373d20 발령, 포상, 몰수에서 보조 데이터 추가 2019-06-21 09:29:33 +09:00
Hide_D 32f8160eb2 시즌 값 추가 2019-06-18 03:32:14 +09:00
Hide_D 701355beb3 시즌 별 검색 기능 추가, 기본 값으로 현재 시즌 표기 2019-06-18 03:30:09 +09:00
Hide_D 28de7c517b UniqueConst와 game_env에 seasonIdx 추가 2019-06-18 03:12:36 +09:00
Hide_D 7365ca7a64 숙련전환 커맨드 추가 2019-06-16 04:42:43 +09:00
Hide_D 2a61813b67 스1 시나리오 업데이트 2019-06-14 23:55:43 +09:00
Hide_D 85e9223603 서버의 오픈 시간을 기록했으므로 변경 2019-05-09 02:00:25 +09:00
Hide_D 943e2be676 커맨드 창에서 가오픈 때문에 턴이 이상하게 보이는 버그 수정 2019-05-09 01:59:06 +09:00
Hide_D 2f09df7521 가오픈 일자 표시 2019-05-09 01:34:06 +09:00
Hide_D 445e445e49 예약턴 초기 릴리즈 2019-05-09 01:28:49 +09:00
Hide_D f20e4bd572 동작 시간 베이스로 변경 2019-05-05 20:13:48 +09:00
Hide_D e731371ab1 빙의 선택 시 성격과 국가 표기 2019-05-04 20:41:27 +09:00
Hide_D 5559693cb3 entrance 띄어쓰기 장수 전콘 문제 수정 2019-05-04 20:28:41 +09:00
Hide_D ca33c3b259 빙의에 약간의 편의성 추가 2019-05-04 20:09:52 +09:00
Hide_D a78fa98b3d 장수 목록에 pagenation 추가 2019-05-04 20:01:17 +09:00
Hide_D 956dc82555 장수 빙의에 장수 리스트 띄움 2019-05-04 19:46:55 +09:00
Hide_D d30a824481 디버그 코드 제거 2019-05-04 18:37:41 +09:00
Hide_D a643182eee 장수 일람 시간 문제 수정 2019-05-04 18:33:48 +09:00
Hide_D e1dbc46d8d 장수일람 API 생성 2019-05-04 18:33:09 +09:00
Hide_D e33d8776bc 서버 루트 js include 순서 변경 2019-05-04 17:08:36 +09:00
Hide_D f6d16883de 서버 기간 표기 수정 2019-05-04 17:05:48 +09:00
Hide_D 51bdd3bbfd 서버가 열린 경우 서버가 열린 기간을 표기하도록 수정 2019-05-04 17:03:03 +09:00
Hide_D 8f9ae78b8c 서버 리셋 권한자는 서버 시작, 또는 천통시 닫을 수 있음 2019-05-04 16:38:44 +09:00
Hide_D 584b7b8e45 영릉 장사 구지도 복구 2019-05-04 16:18:53 +09:00
Hide_D f74e903f1f 병종 전콘 문제 수정 2019-05-02 01:20:45 +09:00
Hide_D 4cedf112f5 sidebar 다시 제거 2019-05-02 00:53:09 +09:00
Hide_D d607a8da0f chess 맵 테스트로 추가, 전차전 php 코드 버그 수정 2019-05-02 00:50:40 +09:00
Hide_D 84a12e28df 지도 등을 추가할 경우 css, js를 새로 설정하는 기능 추가 2019-05-02 00:50:24 +09:00
Hide_D 54aa47d1a8 충차전 기본 코드 추가 2019-05-01 14:55:42 +09:00
Hide_D faaee4b945 충차전 코드 준비 2019-05-01 14:41:06 +09:00
Hide_D 0b46303f9f 시간이 지날 수록 접경 수도 농상, 성수의 디버프가 생김 2019-05-01 03:08:46 +09:00
Hide_D b98668bc60 부대장 삭턴 계산 방식 일부 변경 2019-05-01 02:57:48 +09:00
Hide_D 947e8e9512 코드 버그 수정 2019-05-01 02:47:27 +09:00
Hide_D 681918cb63 유니크 획득시 골고루 획득하도록 변경 2019-05-01 02:42:23 +09:00
Hide_D d0fae44430 도시 목록에도 전콘을 띄워줌 2019-05-01 02:33:49 +09:00
Hide_D 3e752461e8 스마트폰이더라도 neutralView(도시선택모드)에서는 두번선택 해제 2019-05-01 02:21:06 +09:00
Hide_D 1a9e6f3b1a m장 의병장 초 강화! 2019-05-01 02:06:51 +09:00
Hide_D 580275a8cf 로그인 버그 수정 2019-05-01 01:52:50 +09:00
Hide_D ee74771f16 부대장 이름을 정렬하기에 편리하도록 수정 2019-05-01 01:51:49 +09:00
Hide_D 81fa97d3ee 에러 로그 강화 2019-04-30 23:20:39 +09:00
Hide_D ae8b94b2d7 redirect 변경 2019-04-23 12:03:36 +09:00
Hide_D 7670d55f3c 갱신 되돌림.. 2019-04-23 11:05:09 +09:00
Hide_D 528ab4e203 갱신방식 변경 2019-04-23 11:01:42 +09:00
Hide_D cf1dc90137 갱신 버튼 변경 2019-04-23 10:59:03 +09:00
Hide_D f78fcc2b71 여백 주기 2019-04-11 19:53:27 +09:00
Hide_D fb2d30f2c9 서버별 아이콘 적용 가능 2019-04-11 19:50:59 +09:00
Hide_D 8781e7c6ad tooltip 처리 방식을 지연 처리로 변경 2019-04-10 23:27:53 +09:00
Hide_D c34317b1e5 년, 월로 넘치더라도 그냥 자름 2019-04-08 01:56:57 +09:00
Hide_D b09730b422 스타크래프트 1 프로게이대전 추가 2019-04-08 01:51:38 +09:00
Hide_D 0f1725a7ab 인탐 조건에서 방랑군은 다시 불가능하게. 2019-04-08 01:45:05 +09:00
Hide_D b12e0358d6 방랑군이거나, 국가의 인구가 다 차더라도 인구 탐색 가능 2019-04-08 01:43:01 +09:00
Hide_D 7ef841746a 장수수 > 10, 집합장 제외 장수수 < 10일 때, 기술이 과도하게 오르는버그 수정 2019-04-08 01:33:49 +09:00
Hide_D 2b52b2379e 새 숙련도 공식 반영, 제곱식 기반에서 세제곱식 기반으로 2019-04-08 01:21:06 +09:00
Hide_D 8dd5965c44 진유저무쌍 릴리즈 2019-04-07 23:55:44 +09:00
Hide_D b273082492 세력 장수 쿼리 버그 수정 2019-04-07 17:15:16 +09:00
Hide_D da088d88ba 세력장수 본닉 2019-04-06 14:46:07 +09:00
Hide_D fd13570074 천통시 장수 일람 2019-04-06 14:25:12 +09:00
Hide_D b5630a9dae 오타(?) 수정 2019-03-26 15:47:17 +09:00
Hide_D 0e2cab6409 명전 재 갱신 코드 추가 2019-03-26 15:44:04 +09:00
Hide_D 38dc587318 명전 등록시 문자 문제 수정 2019-03-26 15:36:38 +09:00
Hide_D 6fbddcb7c2 cache control 수정 2019-03-22 09:30:24 +09:00
Hide_D df1df2964d session_cache_limiter 삭제. no-cache가 기본값임 2019-03-22 09:26:52 +09:00
Hide_D 9b9c2546c8 확률 추가 수정 2019-03-15 15:15:00 +09:00
Hide_D 6ce0e72b33 인탐 확률 핫픽스 2019-03-15 15:00:12 +09:00
Hide_D a7784d7870 지연 threshold 증가 2019-03-10 17:20:44 +09:00
Hide_D 306ca3e04f 점령 시 도시 관직 초기화. 코드 정리 2019-03-10 17:19:35 +09:00
Hide_D 82988b0e08 장사-영릉이 이어진걸로 나오는 일반지도 버그 수정 2019-03-10 14:19:29 +09:00
Hide_D 8b27d0e249 불가침 서신 거부 불가능한 버그 수정 2019-03-10 00:47:13 +09:00
Hide_D bfae547240 은퇴 연령 값을 GameConst로 이동 2019-03-09 17:08:11 +09:00
Hide_D 0abd026f78 인탐, 의병에서 발생할 수 있는 숙련 예외 케이스 제거 2019-03-09 16:50:31 +09:00
Hide_D 3362a76de7 값 실수 수정 2019-03-09 16:41:41 +09:00
Hide_D 355b6c2e7d 인탐 확률 추가 수정 2019-03-09 16:23:47 +09:00
Hide_D 4e3c643e43 시나리오 최대 장수값 조절 2019-03-09 13:45:29 +09:00
Hide_D 760cb97db4 인탐 가속 조건 강화 2019-03-09 06:12:26 +09:00
Hide_D 0be6f7f57e 오타 수정 2019-03-09 03:43:15 +09:00
Hide_D d31223fa0c 커맨드 attr 수정 2019-03-09 02:30:12 +09:00
Hide_D 86ee9befc1 커맨드 버그 수정? 2019-03-09 02:26:50 +09:00
Hide_D d5689b061f 의병 고용으로는 무지장이 안나옴 2019-03-09 01:59:41 +09:00
Hide_D a3c4da4455 의병고용 버그 수정 2019-03-09 01:57:51 +09:00
Hide_D ee9f97f917 m장 합산 능력치 버그 수정 2019-03-09 01:05:47 +09:00
Hide_D 270c7377de 사령턴 실행후 재 로드시 수비 켬끔 리셋 관련 버그 수정 2019-03-09 00:59:16 +09:00
Hide_D 9044b57306 영입 금지시에는 인탐 확률 보정 없음 2019-03-09 00:41:38 +09:00
Hide_D 9ad815a44a Revert "커밋 취소"
This reverts commit 0843da7a7c.
2019-03-09 00:40:16 +09:00
Hide_D b7e432228b 커밋 취소 2019-03-09 00:39:13 +09:00
Hide_D 78da30f2ad m장이 아주 적을땐 잘 뽑히도록 2019-03-09 00:33:14 +09:00
Hide_D aeea53017f 인탐 장수 비율 4:4:2로 변경. 인탐장 숙련도 평준화. 인탐 확률 상승. 발견 추가. 2019-03-09 00:15:51 +09:00
Hide_D f21ebfc366 관리자 턴 당김 버그 수정 2019-03-09 00:00:00 +09:00
Hide_D 2549aa5809 의병, 인탐장도 적은 비중으로 장수 카운트에 추가 2019-03-08 22:20:45 +09:00
Hide_D b733b70ad8 황제가 있을 경우 황제. 없으면 이전 천통 군주의 명으로 토너먼트 개최 2019-03-06 01:44:24 +09:00
Hide_D f9f59bd7c2 토너먼트 변경이 변경 횟수를 깎지 않음. 수비 끔 시 훈사 3 감소 2019-03-06 01:09:34 +09:00
Hide_D 58933a6bcd 인자 버그 수정 2019-03-06 00:40:56 +09:00
Hide_D 45d7a29a95 수비 순서에 훈사 영향을 더 강하게 주도록 변경 2019-03-06 00:38:35 +09:00
Hide_D e9d1fdb4ee 두번 탭 해 도시 이동 기능 재 부활, 옵션 설정 가능 2019-03-05 23:06:34 +09:00
Hide_D 2785ca9f31 천통 시에는 계략 명장이 보임 2019-03-05 02:32:42 +09:00
Hide_D 12912a62aa 아이템에 장수명을 띄우는것은 비합리적으로 보임 2019-03-05 02:29:10 +09:00
Hide_D 2c2b078514 명장일람에서 계략 시도 장수 본닉이 뜨는 문제 수정 2019-03-05 02:27:22 +09:00
Hide_D 110294103f 천통 후에는 명장 일람에 장수 본닉이 뜨도록 2019-03-05 02:23:28 +09:00
Hide_D a9f3b839ec 명전에서 장수의 본닉이 뜨도록 2019-03-05 02:11:52 +09:00
Hide_D 6bd677ad6f 은퇴 후 명전 등록 시 '이전 값보다 높아진 경우'에만 경신하도록 수정 2019-03-05 01:45:03 +09:00
Hide_D 7d1c5f3510 집합장이 군주인 경우 아무에게나 선양 2019-03-05 01:20:27 +09:00
Hide_D a49508fd20 외교권자 등에서 인사부 연동이 안되는 버그 해결 2019-02-27 23:33:18 +09:00
Hide_D 5870213ff0 권한 관련 버그 수정 2019-02-27 23:23:53 +09:00
Hide_D 65c3d7f925 선양 버그 수정 2019-02-25 21:27:17 +09:00
Hide_D 33f4fd8fee 외교권자 버그 수정 2019-02-25 21:25:29 +09:00
Hide_D 9bdc34dc42 버그 수정 2019-02-24 19:41:00 +09:00
Hide_D ff654df997 본인 국가 아닌 곳에 임명 가능한 버그 수정 2019-02-24 01:12:59 +09:00
Hide_D b7758da2f3 회의실 기밀실 '타이틀'이 거꾸로 표기되는 버그 수정 2019-02-24 00:56:25 +09:00
Hide_D 747089f1a8 게시판 위아래 가운데 정렬.. 2019-02-24 00:55:13 +09:00
Hide_D 9ee3021b76 NPC 군주는 유저장 수뇌에게 외교권자 권한 부여 2019-02-24 00:52:42 +09:00
Hide_D 0c60ea66e3 자국 내 외교권자에게는 메시지 보낼 수 있도록 수정 2019-02-24 00:42:34 +09:00
Hide_D c3bb312b5f 선양시 외교권자 지정 코드 수정 2019-02-24 00:37:01 +09:00
Hide_D 7447a42d40 외교 서신 수락시, 국메, 외교 둘다 뜨도록 수정 2019-02-24 00:32:22 +09:00
Hide_D 3e9cc367af 게시판 이름 ㅇ 2019-02-24 00:23:45 +09:00
Hide_D 4c1790014f 메시지 변경 2019-02-20 01:40:56 +09:00
Hide_D 03fc7a579a 비재야망명 버그 수정 2019-02-17 23:57:26 +09:00
Hide_D a53db257cf 외교부 버그 수정 2019-02-14 21:28:15 +09:00
Hide_D b093cab493 한칸 띄움 2019-02-03 02:18:07 +09:00
Hide_D 9b484dc819 간이 툴바 생성 2019-02-03 01:54:58 +09:00
Hide_D 5ab26a9f8c 메시지 자동 링크 2019-02-03 00:28:29 +09:00
Hide_D b800a63bd2 고대무장 신대륙국가 추가 2019-01-31 02:24:18 +09:00
Hide_D 43a5e47fb3 애니집결 5차 반영 2019-01-31 02:14:10 +09:00
Hide_D 319545106e 외교부 버튼 조건 변경 2019-01-30 02:54:38 +09:00
Hide_D 39b261b8a0 버그 수정 2019-01-30 00:04:33 +09:00
Hide_D c9e61d1098 버그 수정 2019-01-30 00:03:36 +09:00
Hide_D 0bffdaa5fc 외교 메시지 과거 권한 문제 수정 2019-01-30 00:02:28 +09:00
Hide_D 9228510834 댓글 입력도 투명하게 2019-01-29 23:46:47 +09:00
Hide_D 0b002a8946 댓글 엔터시 입력 2019-01-29 23:43:37 +09:00
Hide_D ad43ddabe6 Merge branch 'ng_diplomacy' of ssh://storage.hided.net:2525/devsam/core into ng_diplomacy 2019-01-29 23:40:35 +09:00
Hide_D 24c022a329 회의실 기밀실 템플릿 2019-01-29 23:40:28 +09:00
Hide_D 0e48cee0d6 하야 임관시 권한 초기화 2019-01-29 17:12:04 +09:00
Hide_D 4ad1794d95 버그 수정 2019-01-29 02:57:24 +09:00
Hide_D 46cf25b585 승인시 이전 내용 중첩 2019-01-29 02:53:39 +09:00
Hide_D b3d78fc30f 파기 요청 추가 2019-01-29 02:48:41 +09:00
Hide_D 556bc06da4 시중->종사, 감찰부 권한 정리 2019-01-28 20:33:44 +09:00
Hide_D 7e8f9c463b 공개, 비밀 문구 변경 2019-01-26 06:58:12 +09:00
Hide_D 568c7779b6 템플릿 미완 부분 수정 2019-01-26 06:56:19 +09:00
Hide_D 0a0d237f4d 대체된 메시지 보기 가능 2019-01-26 06:44:34 +09:00
Hide_D c243ccbdce 틀 일부 수정 2019-01-26 06:36:48 +09:00
Hide_D 64b79d6af5 외교부 추가 2019-01-26 06:30:29 +09:00
Hide_D 016c0f3743 외교 메시지 필터링에 invalid 옵션 추가 2019-01-26 04:03:15 +09:00
Hide_D fd1599e0a7 외교 메시지 전송시 알림 2019-01-26 03:50:08 +09:00
Hide_D 7408aa6b72 조언자 인원수로 보여줌 2019-01-26 03:40:01 +09:00
Hide_D e6b2107fa9 외교부 틀 작성중. 재야의 외교 메시지는 항상 보이도록 2019-01-26 03:31:04 +09:00
Hide_D 9aff52eaad 권한 문제 수정 2019-01-25 23:29:35 +09:00
Hide_D bf5bda0f85 내무부 권한 수정 2019-01-25 22:35:49 +09:00
Hide_D ffbf2d0a93 국적 변경시 permission 초기화 2019-01-25 20:30:02 +09:00
Hide_D 82f59ef5a2 게시물 순서 변경 2019-01-25 20:17:36 +09:00
Hide_D c2c40abbb4 외교권자 기밀실 버튼 활성화 2019-01-25 19:49:29 +09:00
Hide_D bb54d732d0 수락 불가능한 문제 해결 2019-01-25 19:46:32 +09:00
Hide_D eee4e0c676 없는것보단 나은 회의실 css 2019-01-25 19:40:13 +09:00
Hide_D d9457ae017 내무부 비고란 제거 2019-01-25 19:34:36 +09:00
Hide_D bbc0b18b19 외교 메시지 삭제 조건 완화 2019-01-25 19:32:13 +09:00
Hide_D da7651311e 메시지 삭제가 안되던 버그 수정 2019-01-25 19:30:33 +09:00
Hide_D 72846f0817 인사부 수정 2019-01-25 19:22:30 +09:00
Hide_D 05ef3387ab 외교권자 임명 대기중 2019-01-25 03:16:34 +09:00
Hide_D eed44e5737 외교권자 목록 출력 2019-01-25 02:18:20 +09:00
Hide_D 27c7a85a21 게시판 기능만 동작 2019-01-25 02:11:54 +09:00
Hide_D 4f6dd046ec 게시판이 '동작만 함' 2019-01-25 01:51:26 +09:00
Hide_D 89fad9ada7 이전 외교 메시지를 불러 올 수 있음 2019-01-25 01:39:45 +09:00
Hide_D bc31b49b99 외교권자에게는 메시지를 보낼 수 없음 2019-01-25 01:28:06 +09:00
Hide_D 09444e3624 1차 버그 수정 2019-01-25 01:02:13 +09:00
Hide_D 7586243a95 DB 스키마 변경 2019-01-25 00:13:04 +09:00
Hide_D 1e1c7801e1 중간반영 2019-01-24 03:34:03 +09:00
Hide_D a363f6ef5f 외교부 틀 작성 2019-01-23 03:11:07 +09:00
Hide_D 334e1fd2da 국메 처리 방식을 변경. 국가간 메시지는 외교권자만 가능 2019-01-23 02:36:03 +09:00
Hide_D 2e8e29e93c 외교메시지 수신 기준 변경중 2019-01-23 01:37:40 +09:00
Hide_D 5e5a1a3668 기존 회의실, 기밀실 코드 삭제 2019-01-22 03:17:44 +09:00
Hide_D b93b464ebf 외교서신 응답 2019-01-22 02:47:27 +09:00
Hide_D 842ba46a95 파일 명을 namespace를 고려하여 수정 2019-01-21 02:25:54 +09:00
Hide_D 03b27d8e8f 외교 서신 추가 기능 2019-01-21 02:23:23 +09:00
Hide_D c11b41c6ba 게시물 코드 2019-01-21 02:00:48 +09:00
Hide_D 018cc526ee 게시판 글, 댓글 작성 초안 2019-01-21 01:45:32 +09:00
Hide_D edf4508e6b 권한 세팅 2019-01-18 03:01:02 +09:00
Hide_D d26a1f0312 왕 무장 관직 순서 변경 2019-01-17 23:01:05 +09:00
Hide_D 2984f6a453 무관 최종 관직을 실제 삼국지 관직 순서에 맞게 변경 2019-01-17 22:59:54 +09:00
Hide_D a00058d959 시중->종사 2019-01-17 22:44:18 +09:00
Hide_D 8e56a457f1 게시물 구조 설정 2019-01-17 03:12:26 +09:00
Hide_D 74d5f021cd tui-editor와 새 게시판 준비 2019-01-17 02:54:58 +09:00
Hide_D a37715315d permission, penalty 대응 준비 2019-01-16 02:47:48 +09:00
Hide_D d9c9977610 장수 schema 수정 2019-01-16 02:26:28 +09:00
Hide_D c2f0cbb10a 버튼 이동 코드 정리 2019-01-16 02:18:42 +09:00
Hide_D a34d00d822 DB 스키마 정리, diplomacy 테이블 정리, 코드 정리 2019-01-16 01:59:07 +09:00
Hide_D 9924ec6963 국법 기능 제거. 외교부를 위한 자리 추가 2019-01-12 18:53:01 +09:00
Hide_D 9036201887 DB 스키마 준비 2019-01-12 07:21:34 +09:00
Hide_D b2435d2430 걸그룹 전콘 문제 일부 수정 2018-12-08 20:55:48 +09:00
Hide_D afd6148770 걸그룹 대전 0.5 반영 2018-12-02 22:28:10 +09:00
Hide_D b70b58a35a 지급율 -> 지급률 2018-12-01 23:37:40 +09:00
Hide_D df963c2780 외교 메시지는 삭제 할 수 없도록 2018-12-01 18:36:43 +09:00
Hide_D 1b732c76e6 국메 삭제 가능 2018-11-30 21:49:19 +09:00
Hide_D f9489b0173 디버그 코드 제거 2018-11-30 21:44:59 +09:00
Hide_D 18942c55ae 메시지 삭제 기능 추가 2018-11-30 21:29:31 +09:00
Hide_D bf34b2f1ca 메시지 타이밍 정책 일부 수정 2018-11-30 19:03:26 +09:00
Hide_D a717a021c2 페이지당 갱신 시간을 10초에서 5초로 변경 2018-11-30 02:05:33 +09:00
Hide_D dcf718d592 메시지를 띄울 때 flex 적용 2018-11-30 01:51:24 +09:00
Hide_D f5eeb2b839 로그아웃 되었을 경우 무한히 호출하는 버그 수정 2018-11-30 01:24:45 +09:00
Hide_D bc435adc11 이전 메시지 가져오기 기능 추가 2018-11-30 01:18:07 +09:00
Hide_D aeb8e82cbd 부상으로 인한 전투 우선순위 감소를 완화 2018-11-28 23:43:42 +09:00
Hide_D 5cb2ed3ccd 등갑, 맹수 너프 2018-11-28 01:24:29 +09:00
Hide_D 93b1864d1b 자객병의 기동을 8로 상향 2018-11-28 01:20:32 +09:00
Hide_D a6efffda45 selector에 검은색 추가 2018-11-28 01:14:43 +09:00
Hide_D c89d6f1a58 도시 목록에 select2를 시험 적용 2018-11-28 01:02:56 +09:00
Hide_D d4f16abfac 암행부의 장수수에서 '부대장'이 제외됩니다. 2018-11-28 00:29:53 +09:00
Hide_D 8529f3f355 임관턴이 어찌저찌 어거지로 동작하던 버그 수정 2018-11-28 00:26:29 +09:00
Hide_D 2eb136827d 랜덤 임관을 더 고르게 합니다. 2018-11-28 00:18:09 +09:00
Hide_D 9594e6eb32 부대장은 기술연구, 전투시 기술 상승에 영향을 주지 않도록 변경 2018-11-28 00:16:34 +09:00
Hide_D 9e8111994a 통합, 합병시 부대장까지 같이 포함되는 문제 수정 2018-11-28 00:14:36 +09:00
Hide_D af0c2b7129 select2 설치 2018-11-27 23:52:12 +09:00
Hide_D 96b73a0cef 도시 목록 등 불필요한 가로바 길이 줄임 2018-11-26 22:29:11 +09:00
Hide_D 6c290ee2d3 추방시 명성 안깎이는 버그 수정, 첫 하야시 패널티 없음 2018-11-26 18:12:21 +09:00
Hide_D ca53e3de3a 반계 상향 2018-11-26 18:08:57 +09:00
Hide_D 6ea3ec700a 수비 우선 순위를 부상여부, 수뇌여부, 훈사 여부를 반영하도록 변경 2018-11-26 15:17:51 +09:00
Hide_D fe3355e08e gitignore 변경 2018-11-26 15:08:33 +09:00
Hide_D 43da95b4a5 디버그 코드 제거 2018-11-25 00:51:59 +09:00
Hide_D 3d93a63caa php의 rename을 OS의 mv로 변경 2018-11-25 00:50:41 +09:00
Hide_D 9550607da3 디버그 모드 2018-11-25 00:39:49 +09:00
Hide_D d5d9798913 rename 재수정 2018-11-25 00:37:24 +09:00
Hide_D 6cfe08235f base을 filename으로 수정 시도 2018-11-25 00:35:11 +09:00
Hide_D 49eb850ff1 파일명 에러 수정 2018-11-25 00:29:26 +09:00
Hide_D 5a558583d2 폴더명 실수.. 2018-11-24 23:46:04 +09:00
Hide_D 1e5f0d0555 이전 디렉토리를 이동하도록 변경 2018-11-24 23:44:33 +09:00
Hide_D c58caeda4c 국방 표기 방식 변경 2018-11-13 19:55:40 +09:00
Hide_D 26fc56f2b8 extractMissingPostToGlobals(); 제거 2018-11-13 02:11:00 +09:00
Hide_D 6a9e7aa89d msg overflow 적용 2018-11-11 23:32:19 +09:00
Hide_D b6c3b0cdc3 방랑군이 아니어도 건국 가능한 버그 수정 2018-10-29 03:15:45 +09:00
Hide_D 5ae91ac620 견문 무력 버그 수정 2018-10-25 01:26:59 +09:00
Hide_D 70265c55ef 3인 임관 실패시 견문 2018-10-25 01:21:52 +09:00
Hide_D 7c3b5fc31e 견문 시 무력이 떨어지지 않도록 변경 2018-10-25 01:17:04 +09:00
Hide_D a9a830caa2 기타 설정 추가 2018-10-24 03:27:22 +09:00
Hide_D b49ff3d4ed 예약 안되는 버그 수정 2018-10-24 03:22:41 +09:00
Hide_D 42310fa170 랜임 개월 수 버그 수정 2018-10-24 01:17:03 +09:00
Hide_D bfff1d9e2f 랜임 모드 버그 수정 2018-10-24 00:54:18 +09:00
Hide_D 2c98777b9f 등용장 무효화 2018-10-23 23:33:12 +09:00
Hide_D 4a91260a31 오타 수정 설명 수정 2018-10-23 16:38:25 +09:00
Hide_D 076971bcae 오타 수정 2018-10-23 16:35:28 +09:00
Hide_D 01fcc9bcab 랜덤 임관 모드 추가 2018-10-23 15:05:19 +09:00
Hide_D 348877c7cd NPC 부대장 수치 버그 수정 2018-10-07 21:46:28 +09:00
sars 478f26e75a camelCase대신 underscore_case 사용 2018-10-04 00:16:08 +09:00
sars 57cc558b9b 장수 동향, 개인 기록, 중원 정세 id 등록 2018-10-04 00:07:46 +09:00
Hide_D 20b1f8eff8 전투 우선순위에 '유니크 아이템'의 효과가 과도하게 측정되는 버그 수정 2018-10-01 23:10:47 +09:00
Hide_D f0a7990404 계략 기본 성공률을 '보급'과 거꾸로 적용한 버그 수정 2018-09-27 17:00:56 +09:00
Hide_D 27f53ff4a6 임관 코드 최종 수정 2018-09-27 16:36:55 +09:00
Hide_D 9ec5dfc8b1 사실 모드 임관 수정 2018-09-27 16:29:49 +09:00
Hide_D e4c1e414c8 사실 모드 랜임 코드 버그 수정 2018-09-27 16:27:38 +09:00
Hide_D a391650472 인증 코드 자리 수 하나 감소 2018-09-25 10:45:21 +09:00
Hide_D 3cfde2b40d 주자사, 공, 황제일 때 장수 수가 내부적으로 1 차이나게 적용되는 버그 수정 2018-09-25 10:12:42 +09:00
Hide_D 8bf1ed33dc 전환 시 '빈칸' 보정, 설명 추가 2018-09-24 04:23:47 +09:00
Hide_D 422b3be0c5 flip image 추가 2018-09-24 04:17:54 +09:00
Hide_D c34e44c4ec data-flip을 허용하고, summernote에 img 태그에 data-flip을 추가하도록 2018-09-24 03:58:40 +09:00
Hide_D a2b20eca67 장수 생성시 초기 스탯으로 '임의 버튼을 클릭'하도록 지정 2018-09-24 02:16:42 +09:00
Hide_D d41c316bfb 설치 설명에서 MariaDB만 지원한다고 변경 2018-09-23 17:31:40 +09:00
Hide_D ca1d8aab84 WebUtil.php에서 drawMenu fallback 추가. 설치시 '활성화되지 않은' KakaoKey.php 파일 추가 2018-09-23 17:31:30 +09:00
Hide_D 32e3dcff7c 이미지 업로드 기능 추가 2018-09-22 03:05:58 +09:00
Hide_D 9a23470622 초반 제한 기간 텍스트 수정 2018-09-21 02:08:51 +09:00
Hide_D c37a186802 툴팁 class 수정. 지도의 년월에 올리면 초반 제한, 기술 제한 툴팁 2018-09-21 02:06:45 +09:00
Hide_D 84c17e3b22 왕조 일람 버그 수정 2018-09-20 02:26:20 +09:00
Hide_D 64e0fca124 전쟁 기한 공식을 스택형으로 변경 2018-09-20 01:15:50 +09:00
Hide_D 5c6537fd7a 멸망 시 접경 재설정 코드 버그 수정 2018-09-20 01:02:29 +09:00
Hide_D 764a82df00 버그 수정 2018-09-20 00:43:36 +09:00
Hide_D e904911fd9 후발 주자에게, 명성, 전특, 내특에 대해 일정 부분 보상 제공 2018-09-20 00:35:38 +09:00
Hide_D a7494f72f6 NPC 부대장에게 포상하지 않도록 수정 2018-09-19 23:56:33 +09:00
Hide_D b6b53b028d 부대탄 유저장도 발령하지 않도록 수정 2018-09-19 23:37:36 +09:00
Hide_D 1743ce714a 전투 코드를 모두 generator 기반으로 변경 2018-09-19 23:29:36 +09:00
Hide_D 656f0c5d11 부대장 주는 횟수 변경 2018-09-19 22:57:06 +09:00
Hide_D d80aebe1f4 집합장 때문에 총 기술치가 깎이는 버그 수정 2018-09-19 22:55:48 +09:00
Hide_D ad48bc1962 접경 내정 상승량 감소는 '수도가 아닐때' 적용 2018-09-19 03:01:38 +09:00
Hide_D d72fbb7098 부대장에게는 금쌀이 제공되지 않도록 수정 2018-09-19 02:21:38 +09:00
Hide_D 95d5eaa09b 주석 수정 2018-09-19 02:13:44 +09:00
Hide_D b997a6159e 치안에 따른 재난 확률 변경 2018-09-19 02:09:08 +09:00
Hide_D 1cd8b7a450 전쟁 중 접경에서는 농상성수 가 제대로 안 오르도록 2018-09-19 02:00:29 +09:00
Hide_D c5a8eb4261 접경지 처리시, 공백지 접경인지 적군 접경인지 구분 2018-09-19 01:49:46 +09:00
Hide_D 8891c29cbd 트래픽이 0인 경우 버그 수정 2018-09-19 01:46:15 +09:00
Hide_D 2facdfa1dd 루드라사움에서도 보병의 성벽 대미지 증가 2018-09-19 01:33:33 +09:00
Hide_D 65c9fa0c21 보병의 성벽 상대 전투력 20% 증가 2018-09-19 01:32:04 +09:00
Hide_D e53c85dbaf 돌격에 저지 불가 제거 2018-09-19 01:16:50 +09:00
Hide_D 3a231e8e61 저지 숙련 증가 2018-09-19 01:00:25 +09:00
Hide_D 4dc7776387 차병은 성벽 전투시 부상을 입지 않음 2018-09-19 00:39:15 +09:00
Hide_D 5ca043e0f1 견고 설명 수정 2018-09-19 00:29:24 +09:00
Hide_D 9ef052c814 견고 추가 상향 2018-09-19 00:28:09 +09:00
Hide_D 6d1690beaa 소울소드 리마스터 시나리오 업데이트 2018-09-18 23:19:30 +09:00
Hide_D 171656e5be 버그 수정 ㅜ 2018-09-18 03:30:40 +09:00
Hide_D 385e7f4871 천통했을 때에는 벌점이 늘어나지 않도록 수정 2018-09-18 03:26:12 +09:00
Hide_D 89c5485784 NPC 안생기는 버그 수정 2018-09-18 03:22:55 +09:00
Hide_D 02d191ec28 변수 대소문자 버그 수정 2018-09-18 03:17:20 +09:00
Hide_D 47c3090f3a NPC 생성 루프 수정 2018-09-18 03:15:40 +09:00
Hide_D 476dac1ac1 주목, 왕이되면 NPC 부대장 하나 더 추가 2018-09-18 02:56:35 +09:00
Hide_D 8ca0d0ced4 메시지 전송 시 장수명 순서대로 정렬 2018-09-18 02:31:41 +09:00
Hide_D ab197489d7 집합장 NPC 삭턴이 실행되지 않는 문제 수정 2018-09-18 02:25:03 +09:00
Hide_D 99736d187b 통합 제의 임시 삭제 2018-09-18 02:15:48 +09:00
Hide_D 197c09bd0d 집합장 턴을 그나마 확인할 수 있도록 삭턴 조정 2018-09-18 02:02:26 +09:00
Hide_D 6cc634ba1f 집합장은 턴이 항상 풀로 차도록.. 2018-09-18 02:01:55 +09:00
Hide_D 4c89ad91d2 부대장 시작 도시를 랜덤으로 2018-09-18 01:56:32 +09:00
Hide_D d66233bce0 NPC 부대장 버그 수정 2018-09-18 01:51:28 +09:00
Hide_D b485e6927e 부대장 번호 버그 수정 2018-09-18 01:47:48 +09:00
Hide_D 74b9e8bd7b 집합장 명칭을 부대장으로 변경 2018-09-18 01:46:37 +09:00
Hide_D 545742ecc0 부대 탄 사람은 발령 로직에서 최대한 배제 2018-09-18 01:27:30 +09:00
Hide_D d9f1f65352 NPC 부대 생성 버그 수정 2018-09-18 01:18:03 +09:00
Hide_D 0904d17a5f 집합장 등장 수식 수정 2018-09-18 00:36:05 +09:00
Hide_D 87171b4246 집합장 테스트 2018-09-18 00:29:44 +09:00
Hide_D 78f8b56203 reset_token에서 불필요한 명령 제거 2018-09-17 23:06:24 +09:00
Hide_D c160c5a555 천통시 모든 국가 등재 장수의 이름이 9글자 인 경우 발생하는 버그 수정 2018-09-12 01:46:16 +09:00
Hide_D 31c7bf5348 메뉴 아이템 길이 버그 2018-09-12 01:16:17 +09:00
Hide_D 6eadf718fc meta keyword 추가 2018-09-12 00:35:50 +09:00
Hide_D effced24d1 sitemap을 위하여 메뉴를 php에서 직접 출력하도록 변경 2018-09-12 00:12:32 +09:00
Hide_D 09f399db9a robots.txt 재등록 2018-09-11 23:50:29 +09:00
Hide_D 2b73f6faea 로봇에 대문자 들어가서 삭제 2018-09-11 23:50:16 +09:00
Hide_D 943662605e Robots.txt 설명 추가 2018-09-11 23:48:02 +09:00
Hide_D 9a04962bd6 대문에 meta 태그 추가 2018-09-11 23:03:10 +09:00
Hide_D c371f6bbb5 refresh_token 변수가 잘못된 것 수정 2018-09-11 11:13:37 +09:00
Hide_D 8324e2e454 access token 체크용 디버그 2018-09-11 11:08:37 +09:00
Hide_D 30307c1b56 로그인 인증 버그 체크 2018-09-11 10:55:53 +09:00
Hide_D f139d0d2a8 로그인 인증 디버깅용 코드 추가 2018-09-10 23:12:27 +09:00
Hide_D 33843764a7 로그인 토큰을 제대로 못 받은 경우 추가 2018-09-10 23:07:44 +09:00
Hide_D aca7d7c571 createOTP 반환형 버그 2018-09-10 01:49:11 +09:00
Hide_D bff72f609c 세션 로그인시 oauth token 값이 제대로 저장 안되는 버그 수정 2018-09-10 01:09:55 +09:00
Hide_D adb03b7420 인증시 로그아웃이 바로 풀리는 버그 수정 2018-09-10 00:38:06 +09:00
Hide_D 2094e18b60 IE에서 인증이 이상한 문제 해결 2018-09-10 00:35:59 +09:00
Hide_D 541d8ddd40 토큰 시간 초과시 즉시 로그아웃 되도록 변경 2018-09-10 00:22:57 +09:00
Hide_D f996172218 Merge branch 'kakao_login' into devel 2018-09-09 23:58:51 +09:00
Hide_D f9ffc1c1f3 oauth 인증중 token_valid_until만 table column으로 분리 2018-09-09 23:57:26 +09:00
Hide_D 05085ad504 5일이 지난후 로그인 토큰을 미리 초기화 가능하도록 수정 2018-09-09 23:18:23 +09:00
Hide_D 64aecaf28b 메인 페이지에 '비밀번호 초기화' 추가 2018-09-09 21:53:00 +09:00
Hide_D 7b3ef45300 카카오 로그인 작업 개선 2018-09-09 21:16:44 +09:00
Hide_D bd25de930b 카카오 로그인용 디버깅 코드 제거 2018-09-09 20:22:34 +09:00
Hide_D 15d43c9653 카카오 로그인 초기 구현 2018-09-09 20:19:00 +09:00
Hide_D 5b7eba61cc 반계에 '동그라미' 오타 제거 2018-09-09 15:54:17 +09:00
Hide_D 2445c79805 성벽 상대로 '혼란' 계략을 사용하지 않는 버그 수정 2018-09-08 12:33:41 +09:00
Hide_D 63be2dee47 운영자 찬스 수정 2018-09-07 02:06:13 +09:00
Hide_D 5bfef1be32 운영자 찬스2 2018-09-07 02:04:50 +09:00
Hide_D 8253526f23 운영자 찬스 2018-09-07 02:03:37 +09:00
Hide_D db19548e2c 불가능한 커맨드일 때 '불가' 표기 추가 2018-09-07 00:45:38 +09:00
Hide_D 10af31f042 customCSS를 조금 더 안전하게 적용 2018-09-06 23:38:47 +09:00
Hide_D e7c6e17590 왕조 일람의 '현재'에 대한 자세히 보기를 삭제 2018-09-05 23:39:16 +09:00
Hide_D a277ac182b 통합 안되는 버그 수정 2018-09-04 15:48:18 +09:00
Hide_D 0eee613a95 외교 커맨드 수정 2018-09-04 01:39:58 +09:00
Hide_D b76fa38e09 외교 커맨드 수식 오류 수정 2018-09-04 01:33:21 +09:00
Hide_D c0f5c8a358 내 정보에서 수비, 토너먼트가 즉시 반영되지 않는 버그 수정 2018-09-03 01:09:03 +09:00
Hide_D 71dd82afe8 메인 페이지 width 일부 수정 2018-09-02 21:00:05 +09:00
Hide_D ea5425a528 commandlist 가로로 짤리는 몇몇 유저용 수정 2018-09-02 20:55:47 +09:00
Hide_D d4ba13eee3 부대 탈퇴시 확인 창이 정상적으로 뜨지 않는 버그 수정 2018-09-02 14:19:17 +09:00
Hide_D 16831880dd 이전 시간대에 대해 리셋 가능하지 않도록 변경 2018-08-31 20:36:59 +09:00
Hide_D f79fc98ba6 customCSS 추가
장수 아이콘에 generalIcon 클래스 추가
2018-08-31 20:25:10 +09:00
Hide_D 0483c75dd7 전투 시뮬레이터에서 대미지 범위 표기 2018-08-31 19:32:56 +09:00
Hide_D 3a4dcacd56 글꼴 크기 범위 추가 2018-08-30 22:06:37 +09:00
Hide_D 5f6f09674e Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2018-08-30 22:02:58 +09:00
Hide_D c785027c5c 에디터 변경 2018-08-30 22:02:51 +09:00
Hide_D d2659cea5f 원조시 특정 경우에 쌀 소모를 줄일 수 있는 버그 수정 2018-08-30 11:51:02 +09:00
Hide_D a9b966b159 증축 시 쌀 2000이 아닌 0 기준으로 계산하는 버그 수정 2018-08-30 11:49:37 +09:00
Hide_D f2c23e21c5 천도 시 쌀이 2000 미만이어도 가능한 버그 수정 2018-08-30 11:49:06 +09:00
Hide_D 53b973e2d3 장수 일람 연동 코드 버그 수정 2018-08-30 09:08:19 +09:00
Hide_D b7a570cba2 폰트 크기 변경에 대해서 즉시 반영이 되지 않는 버그 수정 2018-08-30 03:04:05 +09:00
Hide_D c77b79f0d2 글꼴 크기 커스터마이징 완료 2018-08-30 02:41:58 +09:00
Hide_D ef6678d8b0 에디터 글꼴 크기 커스터마이징 2018-08-30 02:12:48 +09:00
Hide_D 21609fa9c4 GUI 에디터 추가 옵션 2018-08-30 01:56:47 +09:00
Hide_D accc083702 gui 에디터 추가 2018-08-30 01:25:45 +09:00
Hide_D 9e677f3871 스탯 분류 방식 변경 2018-08-29 20:36:43 +09:00
Hide_D 55290eac30 네임스페이스 버그 해결 2018-08-29 15:04:44 +09:00
Hide_D d480502d33 NPC 네임스페이스 버그 해결 2018-08-29 15:03:43 +09:00
Hide_D c1cda16be0 성벽 공격 로그 수정 2018-08-28 21:56:33 +09:00
Hide_D 8ca9df9f34 '성인이 되어 등장' 시 전콘이 안뜨는 문제 해결 2018-08-28 20:36:46 +09:00
Hide_D 406b67b081 애니 집결 시나리오 변경 2018-08-28 20:29:42 +09:00
Hide_D 2c9fecf3ef 의병 고용, 인재 탐색시 기본 변종에 0 코드가 없는 경우 수정 2018-08-28 20:17:43 +09:00
Hide_D 6bc78b67bd 튜토리얼 버튼을 전투 시뮬레이터로 변경 2018-08-28 20:13:54 +09:00
Hide_D 5bbc46e070 구버전 시뮬레이터 삭제 2018-08-28 13:22:17 +09:00
Hide_D 6a9ceda361 국가에는 escape가 되어있으므로 메시지 템플릿에 2중 escape는 필요하지 않음 2018-08-28 01:49:25 +09:00
Hide_D ab2d5fd58f 이미지 출력시 주소에 빈칸이 있는 경우 안보이는 문제 해결 2018-08-27 23:39:58 +09:00
Hide_DandGogs 7018413777 Merge branch 'devel' of cappu/core into devel 2018-08-27 23:31:51 +09:00
cappu 77385616a4 테스트 겸 스탯업데이트 2018-08-27 23:17:31 +09:00
Hide_D c809f27bf5 전투 시뮬레이터를 포함한 코드 적용 2018-08-27 21:11:05 +09:00
Hide_D 493e778124 계략수비 시 전특 징병의 통솔이 반영되지 않는 버그 수정 2018-08-27 17:46:43 +09:00
Hide_D 7373af50b9 계략시 '징병' 전특의 통솔 상승을 받지 못하는 버그 수정 2018-08-27 17:43:53 +09:00
Hide_D 309f053510 화계시 도시 내정이 반영 안되는 버그 수정 2018-08-27 17:39:05 +09:00
Hide_D d976cf8a27 화계시 도시 내정이 반영 안되는 버그 수정 2018-08-27 17:38:08 +09:00
Hide_D 5d60a62a38 단어 수정 2018-08-27 13:53:07 +09:00
Hide_D a3f7dbccea 시뮬레이터 UI 일부 수정 2018-08-27 13:52:51 +09:00
Hide_D 0c4cce3339 시뮬레이터 숙련도 반영 안되는 버그 수정 2018-08-27 13:47:51 +09:00
Hide_D 58ccbc4d3d 불러오기시 json을 확장자로 지정 2018-08-27 03:13:34 +09:00
Hide_D c6cabc2087 전투 시뮬레이터 모두 저장/모두 불러오기 구현 2018-08-27 03:08:35 +09:00
Hide_D ef1f2722fc 전투 시뮬레이터 기본 기능 구현 완료 2018-08-27 02:21:45 +09:00
Hide_D 6b4a7ee03b 전투 시뮬레이션 구현 (동작) 2018-08-27 01:23:45 +09:00
Hide_D 7745a2051d 수비시 국가 성향이 공격국으로 지정되는 버그 수정 2018-08-27 00:18:50 +09:00
Hide_D eabd5e9acc 전투 시뮬레이터 구현 2018-08-27 00:18:19 +09:00
Hide_D d7dcbf98ff 전투 순서 버그 수정 2018-08-26 23:29:15 +09:00
Hide_D ff4c73f3d3 전투 종료시 로그 순서 변경 2018-08-26 23:25:47 +09:00
Hide_D dbf044b418 Revert "전투 종료 시 뜨는 로그 순서 변경"
This reverts commit 568e1b2923.
2018-08-26 23:23:06 +09:00
Hide_D 7a514e2492 쌀 소모에 '명성 버프/디버프' 성격이 적용되는 기존 버그 수정 2018-08-26 23:19:21 +09:00
Hide_D a73e533287 전투 종료 시 뜨는 로그 순서 변경 2018-08-26 23:19:09 +09:00
Hide_D 0f175ac4c6 수비 순서대로 정렬 버튼 활성화 2018-08-26 23:16:42 +09:00
Hide_D be15f1c698 쌀 소모에 '명성 버프/디버프' 성격이 적용되는 기존 버그 수정 2018-08-26 23:11:19 +09:00
Hide_D a315da6041 전투 종료 시 뜨는 로그 순서 변경 2018-08-26 22:59:14 +09:00
Hide_D 3f43f218ac 시뮬레이터 전투 준비 2018-08-26 22:32:37 +09:00
Hide_D 5c8ad646af ajax 쿼리 validation 종료 2018-08-26 22:31:14 +09:00
Hide_D 77f5fddd90 계략 실패 계수가 거꾸로 적용되는 버그 수정 2018-08-26 20:29:59 +09:00
Hide_D eab8b1ede5 전투 시뮬레이터 구현 중 2018-08-26 20:29:42 +09:00
Hide_D 2ab0896523 계략 실패 계수가 거꾸로 적용되는 버그 수정 2018-08-26 20:29:32 +09:00
Hide_D 639fe920df 전투 시뮬레이터 추가 구현 2018-08-26 20:01:08 +09:00
Hide_D 7577c84eca 국가 성향 버그 수정 2018-08-26 18:25:14 +09:00
Hide_D 22c4ec2d4a 국가 성향 출력 버그 수정 2018-08-26 18:24:35 +09:00
Hide_D 8ac85881a9 국가 성향이 제대로 등록되지 않는 버그 수정. 시뮬레이터 구현 2018-08-26 18:19:27 +09:00
Hide_D 724804efc6 전투 시뮬레이터 로컬 기능 구현 2018-08-26 17:20:47 +09:00
Hide_D ca57ef17fc 전투 시뮬레이터 추가 구현 2018-08-26 04:54:43 +09:00
Hide_D 480f015fb0 전투 시뮬레이터 구현 중 2018-08-25 11:27:29 +09:00
Hide_D d90e087f20 전투 시뮬레이터 추가 구현 2018-08-25 11:25:34 +09:00
Hide_D 3916cc0562 전투 시뮬레이터 UI 추가 구현 2018-08-25 11:15:33 +09:00
Hide_D cb54e56417 전투 시뮬레이터 작업 중 2018-08-24 03:46:21 +09:00
Hide_D 6aa606f2fa 전투 시뮬레이터 틀 작성 중 2018-08-24 01:09:17 +09:00
Hide_D 53d13a11ce 장수 생성시 능력치 덧셈이 이상한 버그 수정 2018-08-23 20:26:23 +09:00
Hide_D 9ba2b4142d 계략 시 수비 장수를 무시하는 버그 수정 2018-08-23 19:26:15 +09:00
Hide_D f5161a5b99 Merge branch 'devel' into battle_simulator 2018-08-23 18:45:32 +09:00
Hide_D f9d5d190d5 유니크 훈련,사기 템에서 훈련, 사기가 영구적으로 오르는 버그 수정 2018-08-23 16:21:18 +09:00
Hide_D eead9639a2 도시 점령시, 승수, 사기가 추가로 오르는 버그 수정 2018-08-23 16:10:49 +09:00
Hide_D 5044d5d3b4 파일 준비 2018-08-23 16:07:11 +09:00
Hide_D 44eed2c1df 탈취 확률 버그 수정 2018-08-23 01:53:00 +09:00
Hide_D e83b182e4d NPC가 기본 병종만 뽑는 버그 수정 2018-08-23 01:46:45 +09:00
Hide_D 888a76eda0 장수 생성 시 종능 부족하면 경고창 띄움 2018-08-23 01:07:25 +09:00
Hide_D 668364e583 수뇌이면 감찰부 상세 로그 표기 2018-08-22 15:27:44 +09:00
Hide_D 35c7a2d1b6 계략 로그에서 장수 부상 수치도 강조 2018-08-22 15:23:46 +09:00
Hide_D 79803178cd 민심 깎이는 로그에 반올림 적용 2018-08-22 15:22:20 +09:00
Hide_D 419ee8d8ff 전투 계략 실패 색상 버그 수정 2018-08-22 15:12:08 +09:00
Hide_D 328b3c9409 계략에 로그 추가 2018-08-22 15:11:29 +09:00
Hide_D f097508e87 탈취 버그 수정 2018-08-22 14:52:09 +09:00
Hide_D e6791ee8ec 탈취 성공시 일부는 장수가 소유 2018-08-22 14:49:15 +09:00
Hide_D cfbeba3de1 계략이 항상 성공하는 버그 수정 2018-08-22 14:43:01 +09:00
Hide_D bbc7f5a734 탈취 버그 수정 2018-08-22 14:37:48 +09:00
Hide_D e8726f03f3 탈취 버그 수정 2018-08-22 14:36:52 +09:00
Hide_D de95c6d698 계략 버그 수정 2018-08-22 14:31:37 +09:00
Hide_D 86b57447d8 계략시 소모성 아이템이 소모되지 않는 버그 수정 2018-08-22 14:29:27 +09:00
Hide_D c9d1efc6e7 계략 버그 수정 2018-08-22 14:21:53 +09:00
Hide_D dd1eeaddfa 계략 버그 수정 2018-08-22 14:20:49 +09:00
Hide_D 7f098db3de 계략 버그 수정 2018-08-22 14:18:30 +09:00
Hide_D 6468cbbfbd 계략 시전 버그 수정 2018-08-22 14:16:56 +09:00
Hide_D a30d61e842 계략 커맨드 리팩터링 2018-08-22 14:09:24 +09:00
Hide_D e0029fdc87 전투 중 사기 증가가 제대로 반영되지 않는 버그 수정 2018-08-22 02:44:59 +09:00
Hide_D 712e2c32a0 병력의 소집해제가 0분 0초가 아닌 '본인의 턴 실행 직전'에 실행되도록 변경 2018-08-22 02:18:55 +09:00
Hide_D f28e15b567 보급 끊긴 곳에 대한 계략 동작 변경 2018-08-22 02:05:24 +09:00
Hide_D 128e33661f 무한 발동 가능한 사령턴 커맨드의 명성,계급치 증가 삭제 2018-08-22 01:51:11 +09:00
sars 3916561c62 Revert "Revert "사스 권한 테스트겸, camelCase 적용""
This reverts commit 415791dddd.
2018-08-21 18:07:56 +09:00
sars 00638d074a Revert "사스 권한 테스트겸, camelCase 적용"
This reverts commit a5be15e453.
2018-08-21 18:07:05 +09:00
sars ca51b2d83a 사스 권한 테스트겸, camelCase 적용 2018-08-21 18:03:55 +09:00
Hide_D 1a879f97a2 기술 제한이 항상 걸리는 버그 수정 2018-08-21 18:02:02 +09:00
Hide_D 89d18cb7c5 성벽 전투시 떨어지는 내정 수치 수정 2018-08-21 16:41:31 +09:00
Hide_D 4e14249707 성벽 공격시 떨어지는 내정수치 수정 2018-08-21 16:35:37 +09:00
Hide_D 41f2c08da8 올바르지 않은 성격일 경우 기본 값 설정 2018-08-21 15:43:59 +09:00
Hide_D 4fca7bcfcf 저지 증가 숙련 변경 2018-08-21 14:59:58 +09:00
Hide_D 232725329a 툴팁 변경. 저지시 숙련 추가 2018-08-21 14:58:48 +09:00
Hide_D 88247851f4 징병 전특은 순수 통솔에서 15% 보정 2018-08-21 12:23:19 +09:00
Hide_D 6efaec6642 보병 상대 회피율 변경 2018-08-21 11:54:01 +09:00
Hide_D b9e31e39e2 보병은 상대의 회피를 5%p 감소 2018-08-21 11:51:09 +09:00
Hide_D e2cd8ed391 견고시 계략 성공 확률 변경 2018-08-21 11:07:28 +09:00
Hide_D 8a1641fbfa 견고 방식 변경 2018-08-21 11:04:27 +09:00
Hide_D 936f069ac3 수극 사용시 부상 정도 약화 2018-08-21 10:47:47 +09:00
Hide_D 89faad730e 전투 로그 중 회피에 오타 수정 2018-08-21 09:29:28 +09:00
Hide_D 798ab3e183 암행부 병종 표기 버그 수정 2018-08-21 02:24:58 +09:00
Hide_D 5508aa4533 전투 엔진 버그 4차 수정 2018-08-21 02:22:29 +09:00
Hide_D 81b7ebbab6 전투 엔진 버그 3차 수정 2018-08-21 02:01:56 +09:00
Hide_D 2d06e33e10 운영자가 '지도'에서 도시를 클릭할 수 있도록 변경 2018-08-21 01:32:00 +09:00
Hide_D d8cc820572 전투 엔진 버그 2차 수정 2018-08-21 01:22:18 +09:00
Hide_D d0ca46cfde 전투 엔진 버그 1차 수정 2018-08-21 00:53:00 +09:00
Hide_D 513124161e 전투 종료 코드 구현(마무리?) 2018-08-20 23:57:36 +09:00
Hide_D 7cfd8c7f79 전투 종료 코드 구현(마무리?) 2018-08-20 22:26:34 +09:00
Hide_D c32ce5e795 전투 종료 코드 구현 2018-08-20 22:20:59 +09:00
Hide_D d9c1530651 일부 게임 유틸리티 함수 간소화 2018-08-20 20:21:26 +09:00
Hide_D 305eb071a9 전투 종료 코드 구현 2018-08-20 17:24:16 +09:00
Hide_D 10dab69c63 전투 구현 반영 2018-08-20 03:48:54 +09:00
Hide_D 60ed594996 전투 구현 반영 2018-08-20 03:46:59 +09:00
Hide_D e60ddb3ee1 전투 구현 반영 2018-08-20 03:14:56 +09:00
Hide_D 26b0992285 전투 구현 반영 2018-08-19 03:47:28 +09:00
Hide_D 63f3ac807c 전투 구현 반영 2018-08-19 03:45:43 +09:00
Hide_D ed1c33eac0 전투 구현 반영 2018-08-19 03:30:47 +09:00
Hide_D e7b7fd0bcc 치료가 '필살', '회피'와 중복 가능. 전특과 의술 아이템의 치료 효과 증폭 2018-08-19 03:00:08 +09:00
Hide_D 79d2b04721 전투 구현 반영 2018-08-19 02:57:25 +09:00
Hide_D 5a8ab2d29c 전투 구현 반영 2018-08-19 02:33:42 +09:00
Hide_D ed527ac394 전투 코드 반영 2018-08-18 23:18:40 +09:00
Hide_D bf09f48196 전투 구현 반영 2018-08-18 22:21:25 +09:00
Hide_D 2a5af15aef 전투 코드 반영 2018-08-18 21:24:02 +09:00
Hide_D 1f8fe35e25 성벽 전투시 깎이는 성벽이 기존 대비 1/2 2018-08-18 20:46:30 +09:00
Hide_D 5979273a64 코드 중간 반영 2018-08-18 20:45:59 +09:00
Hide_D ef8c9e3968 전투 엔진 중간 반영 2018-08-18 19:04:13 +09:00
Hide_D baa9fdb660 유틸리티 함수 추가 2018-08-18 16:59:34 +09:00
Hide_D 35a860bb38 충차 성벽 보정 버그 수정 2018-08-18 15:18:40 +09:00
Hide_D 286939dc2c CriticalScore2, getCrew 이동 2018-08-18 14:02:53 +09:00
Hide_D dd5b1dbdd8 전투 추가 구현 2018-08-18 10:53:04 +09:00
Hide_D fb8d3a038d 새 전투 엔진 중간 반영 2018-08-18 02:26:27 +09:00
Hide_D ea5a25a671 전투 파일 추가 작성중
전투 코드 추가 준비

추가 구현
2018-08-14 23:11:03 +09:00
Hide_D d21fc4ab1d 새 전투 엔진 준비 2018-08-12 22:23:53 +09:00
Hide_D 3ae3974866 수극 사용 로그 버그 수정 2018-08-12 13:25:24 +09:00
Hide_D 71ffc3087e 전투 공식 핫픽스 2018-08-11 08:49:23 +09:00
Hide_D 8f406489d4 전콘 용량을 30KB로 증가 2018-08-10 19:58:31 +09:00
Hide_D a08d270968 루드라사움 지도 업데이트 2018-08-10 02:22:31 +09:00
Hide_D 48f13e4b82 루드라사움 스탯 수정 2018-08-08 03:47:04 +09:00
Hide_D 51060f0e4b 루드라사움 지도 업데이트 2018-08-08 03:36:00 +09:00
Hide_D c583109046 루드라사움 패치 2018-08-08 03:21:42 +09:00
Hide_D cf05b693f1 엑셀 파일에 빙의 불가 장수 목록 개념 추가 2018-08-08 02:48:17 +09:00
Hide_D d248c1ab0d 빙의가 불가능한 general_neutral 항목 추가 2018-08-08 02:45:41 +09:00
Hide_D 34623fca94 이민족 코드를 5에서 9로 이동. 그에따른 추가 코드 변경 2018-08-08 02:31:49 +09:00
Hide_D 975bdd5897 토너먼트 중복 참가 방지. 자동 참가시 돈을 받지 않음 2018-08-08 01:54:57 +09:00
Hide_D 1b3380c2ca 성벽을 때렸을 때 차숙이 오르지 않는 버그 해결 2018-08-07 04:00:31 +09:00
Hide_D bb707b4a03 명성 / 계급 계산식을 for loop 없앰 2018-08-06 01:23:39 +09:00
Hide_D acb3b6ac85 물자 조달로 올라가는 명성, 계급의 양을 다른 내정과 비슷하게 변경 2018-08-06 00:46:22 +09:00
Hide_D 80f6985f5f 지도 툴팁 line break 없앰 2018-07-30 03:23:01 +09:00
Hide_D 5e3a9c0579 지도 툴팁 너비 수정 2018-07-30 02:13:46 +09:00
Hide_D b30d62d483 루도라사움 지도 위치 수정 2018-07-30 02:11:51 +09:00
Hide_D 0ea1fdbd19 지도 출력 변경 2018-07-30 02:07:02 +09:00
Hide_D f068586f74 지도를 변경 가능하도록 업데이트 2018-07-30 02:00:53 +09:00
Hide_D 463f462e24 j_map_history에서 year가 0인 경우 2018-07-30 01:47:33 +09:00
Hide_D e0c4e3c58e 장수 생성시 기본 타입 2018-07-30 01:42:42 +09:00
Hide_D 5aa3ef38ba 연감용 루드라사움 지도 추가 2018-07-30 01:34:39 +09:00
Hide_D 827277f6a3 버그 수정 2018-07-30 01:26:12 +09:00
Hide_D 46389341db 루드라사움을 위한 시스템 보정 2018-07-30 00:37:39 +09:00
Hide_D a58f05a295 에러메시지를 VSCode에서 바로 이동하기 쉽도록 변경 2018-07-29 23:43:36 +09:00
Hide_D c0b0a0fe92 루드라사움 지도 연결 수정 2018-07-29 23:41:35 +09:00
Hide_D e9f471dd6f Neo 루드라사움 준비 2018-07-29 23:26:19 +09:00
Hide_D 7917c5dddb 부대편성 버그 수정 2018-07-29 16:20:43 +09:00
Hide_D de4541a3d9 부대 편성 일부 수정 2018-07-29 13:57:10 +09:00
Hide_D 77a496baa7 암행부 추가 확장 2018-07-28 02:38:19 +09:00
Hide_D 86e863de09 암행부 너비 추가 수정 2018-07-28 02:33:42 +09:00
Hide_D c2cfd217c2 암행부 턴 표기 수정 2018-07-28 02:02:50 +09:00
Hide_D f2366a61b0 IE11 모병창 UI 버그 수정 2018-07-28 01:58:35 +09:00
Hide_D 9959393dee IE 메인페이지 깨짐 일부 수정 2018-07-28 01:38:53 +09:00
Hide_D 16facf98f1 submit_btn 버그 수정 2018-07-28 01:32:00 +09:00
Hide_D bc8ce8832a 모/징병 페이지 변경 2018-07-28 01:24:23 +09:00
Hide_D 20bcf960ef 로그인 페이지를 모바일에서도 조금 더 잘보이게 변경 2018-07-27 18:56:01 +09:00
Hide_D 5cecd3e995 로그인 페이지가 약관 등에 가리지 않도록 변경 2018-07-27 18:47:48 +09:00
Hide_D d7ead25ea4 1턴에 어쩌다 휴식턴이 입력되는 버그 수정 2018-07-27 18:14:16 +09:00
Hide_D 75c0c375d1 장수 호칭 변경 2018-07-27 03:03:25 +09:00
Hide_D 5db4913292 세력일람 장수 표기순 변경 2018-07-27 02:39:26 +09:00
Hide_D a6a53b1d0d Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2018-07-27 02:34:02 +09:00
Hide_D 81a0c0e120 세력일람 업데이트 2018-07-27 02:33:56 +09:00
Hide_D 0dae71a644 회피 디버그 수정 2018-07-26 17:13:27 +09:00
Hide_D f8eedaa3ea 전투 디버그 2018-07-26 15:40:46 +09:00
Hide_D ce2d97a7e7 전투 회피 코드 디버깅 적용 2018-07-26 15:39:34 +09:00
Hide_D 2cb570eaca foreach reference loop 버그 2018-07-26 00:12:12 +09:00
Hide_D c8c4352957 기존 도시/암행부 스크립트 통합. 2018-07-25 23:58:58 +09:00
Hide_D a311db4555 서버 관리 창에 에러 로그 보기 버튼 추가 2018-07-23 23:44:48 +09:00
Hide_D 05c515b2da j_map_history에서 fallback arg 제거 2018-07-23 23:30:53 +09:00
Hide_D c1acf2b0fe Trace의 모든 내용이 나오도록 수정 2018-07-23 23:26:32 +09:00
Hide_D 803a2407eb 에러 로그 보기 기능 추가 2018-07-23 23:19:39 +09:00
Hide_D a87945d1fb 에러 로그 업데이트 2018-07-23 22:54:06 +09:00
Hide_D 30793e68df 에러 로그용 클래스 설정 2018-07-23 22:50:22 +09:00
Hide_D 9c666bf7a9 FileDB 클래스 추가 2018-07-23 22:37:30 +09:00
Hide_D eff1dd7c34 라이브러리 업데이트 catfan/medoo 추가 2018-07-23 21:27:26 +09:00
Hide_D e79a33ebb0 NPC 군주의 호전성 추가(?) 2018-07-23 02:56:33 +09:00
Hide_D cb0adfdeaf npc attackable 보완 2018-07-23 02:50:58 +09:00
Hide_D 6b135c343c NPC의 선포 대상을 '국력'이 낮은 국가에 더 잘 하도록 변경 2018-07-23 01:49:43 +09:00
Hide_D 6c92db524b 선포 코드를 조금더 직관적으로 수정 2018-07-23 01:28:34 +09:00
Hide_D b8dfd1c041 징,모병시 민심이 떨어지지 않는 버그 수정 2018-07-22 15:39:53 +09:00
Hide_D 54d6347c1d 사령부 휴식 커맨드가 제대로 안보이는 문제 해결 2018-07-22 15:10:37 +09:00
Hide_D 4ea6e90600 연감에 serverID가 잘못된 경우 해결 2018-07-22 03:37:14 +09:00
Hide_D 4c7628a247 부대편성의 '집합' 확인 코드가 하드코딩인 부분 수정 2018-07-22 03:28:10 +09:00
revofpla 6c7334155a 필살확률 무조건 최소 50%인 버그 픽스 2018-07-21 13:49:15 +09:00
revofpla 480e3ea974 체섭 버그로 인한 핫픽스 1차
- 징병 숙련 100배 문제
 - 모병 비용 2배로 계산 안되는 문제
2018-07-21 13:12:52 +09:00
Hide_D 1f639a5bc6 애니집결 시나리오 번호 변경 2018-07-20 19:53:21 +09:00
Hide_D ccf3b07c3a 애니집결 업데이트 2018-07-20 19:51:11 +09:00
Hide_D d8508f2b72 충차가 1등급 되기만 하면 쓸 수 있던 버그 수정 2018-07-20 10:44:14 +09:00
Hide_D 5e13961ec8 protected인 자료에 접근해서 발생하는 문제 수정 2018-07-20 10:05:08 +09:00
Hide_D 80b1139371 버튼 너비 수정 2018-07-20 09:12:37 +09:00
Hide_D 635b41765c 계정 관리 창 살짝 넓힘 2018-07-20 09:08:04 +09:00
Hide_D 4b03686aa2 숙련 단련 버그 수정 2018-07-20 09:01:50 +09:00
Hide_D bfb0d8d639 message 템플릿 버그 수정 2018-07-20 00:06:03 +09:00
Hide_D 93d4a0211d 등용장의 경우에도 누를수 없는 경우 수정 2018-07-19 23:59:27 +09:00
Hide_D cd31bc69ef 추방 버그 수정 2018-07-19 23:13:05 +09:00
Hide_D 4a7b84d6de 외교 서신 레벨 지정 2018-07-19 22:19:26 +09:00
Hide_D 3142714c11 리셋 첫 해에는 추방해도 제약 없음 2018-07-19 21:25:00 +09:00
Hide_D 7ea10416a9 임관 권유 메시지 창 2018-07-19 21:03:42 +09:00
Hide_D 3e427db0f1 relativeYear에 음수 불가 2018-07-19 20:53:46 +09:00
Hide_D 9f7b18d294 시작 시 develcost가 0인 버그 해결 2018-07-19 20:50:29 +09:00
Hide_D 9af0e351b8 Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2018-07-19 20:06:51 +09:00
Hide_D 5c6aa2340d 공백지 시나리오에 특기 연령 문제 해결 2018-07-19 20:06:39 +09:00
Hide_D 4424ec48cf 전투시 병종 명 버그 수정 2018-07-19 10:59:01 +09:00
Hide_D 61be34581e 반복 버튼 키움 2018-07-19 02:33:59 +09:00
Hide_D 731978356d Credit 양식 추가 2018-07-19 02:29:03 +09:00
Hide_D d5223ad1ab 리셋 시 사령부 Command encode가 제대로 이뤄지지 않았던 버그 수정 2018-07-19 01:42:16 +09:00
Hide_D 7cfdfab198 연감에서도 비교적 빠르게 동작하도록 설정 2018-07-19 01:31:13 +09:00
Hide_D eb70e51ac1 실시간 맵은 캐싱하도록 처리 2018-07-19 01:21:00 +09:00
Hide_D 1d48e7c7ae 영웅 난무 220 제목 변경 2018-07-19 00:51:47 +09:00
Hide_D d6fc9fc8c3 지도가 들어간 곳에 부트스트랩 추가 2018-07-19 00:46:15 +09:00
Hide_D 8ada0976fe 연감에 부트스트랩 없는 문제 해결 2018-07-19 00:44:01 +09:00
Hide_D 389ff5e9a4 지도에 도시명 켬끔 추가 2018-07-19 00:39:05 +09:00
Hide_D 5179e0228c 최대 스탯 표기 변경 2018-07-18 23:44:41 +09:00
Hide_D 2268526314 내 정보 페이지 툴팁 안나오는 문제 2018-07-18 23:14:52 +09:00
Hide_D db4bc0eafe 도시 좌표 업데이트 2018-07-18 23:11:02 +09:00
Hide_D 6edaf79df1 출력 병종 에러 2018-07-18 22:26:15 +09:00
Hide_D 79cead3b59 도시 css contain 2018-07-18 22:24:22 +09:00
Hide_D db1b12b85c 훈련에서 사기 하락 문구 삭제 2018-07-18 16:54:25 +09:00
Hide_D 9360b7675a 천인 강림 극 소형맵 2018-07-18 14:23:12 +09:00
Hide_D 9c82fd17fe 훈련시 사기 감소하지 않음 2018-07-18 11:18:33 +09:00
Hide_D 3a4665e473 맵 업데이트 2018-07-18 10:46:33 +09:00
Hide_D b34f4648ee 호로->사수, 몇몇 소성들 다시 진,수로 롤백 2018-07-18 10:41:06 +09:00
Hide_D 0de786d2ea 쿼리 받아오는 것 수정 2018-07-18 09:28:53 +09:00
Hide_D ec7aafa1ff history 받아오는 버그 수정 2018-07-18 09:28:10 +09:00
Hide_D 30c219716d 오타 수정 2018-07-18 09:08:20 +09:00
Hide_D 5dd47cb89b 오타수정 2018-07-18 09:05:36 +09:00
Hide_D abe856bd3f 버그 수정. 오타 수정 2018-07-18 08:24:09 +09:00
Hide_D 6ecb009466 오타 수정 2018-07-18 04:51:19 +09:00
Hide_D 3b4b2383a8 $me 버그 2018-07-18 04:50:17 +09:00
Hide_D 4ddd46c4a2 모병코드 2018-07-18 04:49:30 +09:00
Hide_D 69ec2469b4 쌀 검사 코드 2018-07-18 04:47:28 +09:00
Hide_D 5789af801a 징모병창 코스트 2018-07-18 04:44:12 +09:00
Hide_D 7171b6302b formattext 2018-07-18 04:41:08 +09:00
Hide_D 51d4818b1e gameStor 값 버그 2018-07-18 04:40:18 +09:00
Hide_D 1c2875e7fc 모병창 수정 2018-07-18 04:37:00 +09:00
Hide_D 5048a88310 징병창 우선 부활 2018-07-18 04:30:54 +09:00
Hide_D aef37f4362 징모병창 변수명 에러 2018-07-18 04:18:15 +09:00
Hide_D d04641041b 아이템 return 값 수정 2018-07-18 04:15:28 +09:00
Hide_D 67b2ccea86 급한대로 도시명 띄움 2018-07-18 04:10:07 +09:00
Hide_D 5ff9ca3c99 miniche가 최신 버전이 아닌 버그 수정 2018-07-18 03:44:32 +09:00
Hide_D fe55df8b2f 버그 체크 2018-07-18 03:41:45 +09:00
Hide_D 457f605898 버그 수정 2018-07-18 03:32:47 +09:00
Hide_D 0f2625133f 미니체 basemap 2018-07-18 03:05:36 +09:00
Hide_D fa34dbdf6f 초기 버그 수정 2018-07-18 03:04:59 +09:00
Hide_D 050913b0b4 영난 1c 2018-07-18 02:58:56 +09:00
Hide_D a47e47d42c 도시 정보 업데이트 2018-07-18 02:57:08 +09:00
Hide_D 43d994b59a credit 링크 추가 2018-07-18 02:31:15 +09:00
Hide_D e8204d46ce 커스텀 맵 준비 2018-07-18 00:25:51 +09:00
Hide_D fece659cfb 변수명 통일 2018-07-16 02:56:52 +09:00
Hide_D 695265b299 병종 코드를 GameUnitConst, GameUnitDetail에 기반하도록 변경 2018-07-16 02:54:47 +09:00
Hide_D b652ed0b33 병종 테이블에 상성 값 확장 2018-07-16 01:43:11 +09:00
Hide_D 9a641552e4 전투 코드 반영 중 2018-07-15 01:46:29 +09:00
Hide_D 3d18aeb5bc 징병, 모병 form 수정 2018-07-15 01:01:36 +09:00
Hide_D b545afce50 모병, 징병 코드 재 구현. 능력치 상승/감소 코드 재구현 2018-07-14 22:41:10 +09:00
Hide_D 8fca98c0c9 ActionLogger rollback 추가 2018-07-14 18:23:31 +09:00
Hide_D 0a98c71dfe 현재까지 작업물 보강, 모.징병 페이지 개선 중 2018-07-14 18:17:37 +09:00
Hide_D ed75f39094 ActionLogger 보강 2018-07-14 18:17:18 +09:00
Hide_D 456245f23a ActionLogger 추가 2018-07-14 17:53:08 +09:00
Hide_D b4529c9338 병종값 변경 2018-07-13 00:41:56 +09:00
Hide_D 0ca7a8ab8a 병종 테이블에 '병종 타입' 지정, 턴 커맨드를 json array로 변경 2018-07-13 00:12:12 +09:00
Hide_D 02f2209e8f GameConst에 mapName과 unitSet추가 2018-07-12 01:59:32 +09:00
Hide_D fb72d02912 d_setting 디렉도리 보관 방식 변경 2018-07-12 01:56:46 +09:00
Hide_D 665fb25fc1 기본 파일 추가 2018-07-12 01:02:28 +09:00
Hide_D 742c3c7156 맵 규격 재 정의 2018-07-12 01:00:24 +09:00
Hide_D 637dbbba0d 새 지도 준비를 위해 커밋 2018-07-12 00:20:43 +09:00
Hide_D f2a3bc4626 메시지함 높이 고정을 최소 높이로 변경 2018-07-11 23:49:57 +09:00
Hide_D e8ffa44544 메시지함 사라지는 버그 수정? 2018-07-11 23:04:38 +09:00
Hide_D bc09287666 도움 주신 분 임시 삭제. 나중에 Credit으로 되살리기로 2018-07-11 22:37:36 +09:00
Hide_D 392d9055fe td tr 되돌려놓음 2018-07-11 22:18:08 +09:00
Hide_D 0ee833d7ae list 일부 수정. tfoot 안에 tr td없는거 수정 2018-07-11 22:17:03 +09:00
Hide_D 3074bc00d7 지도 표기에서 box 표기 문제로 일부 수정 2018-07-11 22:04:20 +09:00
Hide_D cb6fb590c4 귀병, 환술 설명 수정 2018-07-11 21:53:13 +09:00
Hide_D a7270b2cd2 장수 성격, 아이템 설명 툴팁 추가 2018-07-11 21:50:01 +09:00
Hide_D 0d925af065 tooltip html trim 추가 2018-07-11 20:52:46 +09:00
Hide_D 7c7991e8ae 특기 없을 때 텍스트 수정 2018-07-11 20:51:13 +09:00
Hide_D 54461b6ea4 특기가 없는 경우에도 tooltip 띄우도록 2018-07-11 17:03:47 +09:00
Hide_D 6a17497fbd 빙의 시에도 전특 표기 2018-07-11 03:27:27 +09:00
Hide_D 84f18aa4b6 특기 전 페이지에 반영 2018-07-11 03:03:52 +09:00
Hide_D 73ab38563f 특기 마우스 오버 1차 적용 2018-07-11 02:47:31 +09:00
Hide_D 1f2b40e4d4 message form box sizing 변경. 메인 페이지에 bootstrap css 적용 2018-07-11 01:31:59 +09:00
Hide_D 1d920c5935 darkly 적용 2018-07-11 01:19:24 +09:00
Hide_D 037a1e9c0c 툴팁 준비 2018-07-11 01:15:22 +09:00
Hide_D 87e324d4d9 bootstrap 최신 버전으로 2018-07-11 01:15:02 +09:00
Hide_D d1e9b489e3 공성 전특 버그 수정. 전특 설명을 위한 텍스트 추가 2018-07-11 00:53:10 +09:00
Hide_D 34f1d538d1 세력도시에서 n장, m장 임명이 불가능한 버그 수정 2018-07-07 05:13:22 +09:00
Hide_D fb8d2a2e01 구버전 첩보 마이그레이션시 지도 표기 버그 수정 2018-07-07 04:58:19 +09:00
Hide_D 837db5183e 첩보를 join '|' 에서 json dict로 변경 2018-07-07 04:39:44 +09:00
Hide_D a556877a17 현재 진행중인 깃수인 경우 장수가 안 죽었으면 안나타나는 문제 해결 2018-07-05 00:24:03 +09:00
Hide_D bcbd6dc4db 왕조일람 버그 수정 2018-07-05 00:12:34 +09:00
Hide_D 41f7ad8d75 왕조 일람에 아무것도 없을 때 '현재'가 안보이는 문제 해결 2018-07-05 00:10:33 +09:00
Hide_D 258d4b28da 왕조 일람에 현재 국가 표시 2018-07-05 00:05:48 +09:00
Hide_D 31e900c422 메시지 버그 수정 2018-07-03 22:09:07 +09:00
Hide_D 7b1a76871a parseJsonPost 기반 동작 포기 2018-07-03 21:35:17 +09:00
Hide_D c6f3e7672f 국가 정보 빈칸 2018-07-03 20:48:34 +09:00
Hide_D 540c31903c 월마다 최대 국력, 최대 병력, 최대 도시 수를 계산하는 코드 추가. ng_old_nations에도 반영 2018-07-03 20:43:14 +09:00
Hide_D 3e5262d7a3 nation 테이블에 aux 추가 2018-07-03 20:09:36 +09:00
Hide_D 2b36ffef45 왕조일람 임시 갱신 2018-07-03 06:59:27 +09:00
Hide_D 4c25d2275c 버튼 대체 css 추가. form 일부 제거 2018-07-03 02:55:45 +09:00
Hide_D 6c66fcdfc3 명예의 전당 시나리오명 제대로 표기 안되는 문제 해결 2018-07-02 19:45:41 +09:00
Hide_D aaa972d767 명예의 전당 배경색 오류 수정 2018-07-02 19:15:43 +09:00
Hide_D 45c8538426 빙의 해제시 닉네임 초기화 2018-07-02 03:23:20 +09:00
Hide_D 95702724a9 베팅수익률 오타 2018-07-01 15:34:20 +09:00
Hide_D 98c4d3853c 명장 일람 레퍼런스 값 미표기 문제 해결 2018-07-01 15:30:15 +09:00
Hide_D 7c91143f39 명장일람에서 제약 조건 수정 2018-07-01 15:27:41 +09:00
Hide_D 56e6f57568 회원 가입시 링크 변경 2018-07-01 03:58:47 +09:00
Hide_D ccab456679 세력도시 스크립트 동작 안하는 문제 해결 2018-07-01 01:35:47 +09:00
Hide_D 5af000ca43 html 5 비표준 스크립트 제거 2018-07-01 01:28:35 +09:00
Hide_D 354c8f04ae IE=edge 대소문자 주의 2018-06-30 01:52:07 +09:00
Hide_D 3fbd336b45 Revert "컬러 프로필 적용"
This reverts commit 4f279c49c8.
2018-06-30 01:32:46 +09:00
Hide_D 3c0b86a322 컬러 프로필 적용 2018-06-30 01:26:23 +09:00
Hide_D fca4b69d5a 범장 -> 만능장 2018-06-30 01:18:52 +09:00
Hide_D ce62072761 확장 스크립트를 위해 태그 일부 정리 2018-06-30 00:28:45 +09:00
Hide_D 93dd7a8478 extractMissingPostToGlobals 호환을 위해 server_id 인자명 변경 2018-06-29 16:23:48 +09:00
Hide_D 02fb84a312 font boosting 약화 2018-06-29 14:46:06 +09:00
Hide_D f3e68989e5 뷰포트 추가 지정 2018-06-29 14:41:09 +09:00
Hide_D 468050a9ce 뷰포트 크기 변경 2018-06-29 14:37:30 +09:00
Hide_D f37a602da3 모든 웹 페이지에 viewport 지정 2018-06-29 14:32:59 +09:00
Hide_D 2979691d7e 기본 폰트 크기 지정 2018-06-29 14:20:20 +09:00
Hide_D 72920a0432 unset대신 []로 초기화 2018-06-29 09:35:24 +09:00
Hide_D e81075ef04 history 함수 인자 제한 완화 2018-06-29 09:28:58 +09:00
Hide_D df1a99d877 기본 폰트 지정 2018-06-29 09:16:40 +09:00
Hide_D 10e825dc9f 예약 테이블 점검. 스키마 수정 2018-06-29 01:50:28 +09:00
Hide_D 07ba7933fb 토너먼트 inf 버그 수정 2018-06-29 01:25:43 +09:00
Hide_D 3059eac0fd jquery 버전 업데이트 2018-06-29 01:22:03 +09:00
Hide_D aa33aa6d4f Json 에러시 에러 표기하도록 2018-06-29 00:30:05 +09:00
Hide_D 0a1cdeeaa3 세력일람 코드 변경 2018-06-28 14:16:38 +09:00
Hide_D e4bef47b7e 세력일람 연동 2018-06-28 14:14:56 +09:00
Hide_D f551f994b5 세력도시 코드 일단 통합 2018-06-28 13:57:21 +09:00
Hide_D 4b7a3af691 IE에서 카카오 2018-06-28 13:39:58 +09:00
Hide_D 6f88a80118 randBool이 아니라 randF 써서 생기는 버그 수정 2018-06-28 01:57:41 +09:00
Hide_D e03715ee46 천통 안되는 버그 수정 2018-06-28 00:28:00 +09:00
Hide_D aafe6d8863 천통시 저장되는 데이터 변경 2018-06-27 03:43:01 +09:00
Hide_D 47005483cd 버그 수정 2018-06-27 03:05:39 +09:00
Hide_D 378075955a 서버 오픈시 천통국 체크가 이상한 버그 수정 2018-06-27 03:04:54 +09:00
Hide_D 2059797904 사망, 천통시 장수를 ng_old_generals에 보관 2018-06-27 02:53:58 +09:00
Hide_D 8c711242a9 왕조 일람에 연감을 볼 수 있도록 통합 2018-06-27 02:12:59 +09:00
Hide_D 481894c89b 모든 국가 멸망 케이스에 ng_old_nations 백업 추가 2018-06-27 01:55:28 +09:00
Hide_D ba53275322 천통시 깃수 자동 표기 2018-06-27 01:49:46 +09:00
Hide_D cfe2b4c1bd 사소한 코드 수정 2018-06-27 01:34:11 +09:00
Hide_D 60e83f8324 오타 수정 2018-06-27 01:26:02 +09:00
Hide_D ceac040d82 명전에 0 이하는 안받도록 변경 2018-06-27 01:25:50 +09:00
Hide_D 89d400c81a 연감 월 표기 버그 수정 2018-06-27 01:22:16 +09:00
Hide_D 4cf7bca399 왕조 일람에서 서버 정보와 국가 정보를 보관하도록 변경 2018-06-27 01:14:34 +09:00
Hide_D 761441622e 왕조일람 '전체보기' 기능 살림 2018-06-26 23:05:04 +09:00
Hide_D 1b814abf0b 천통 시 왕조 일람용 테이블에 server_id 기록. 연감에 server_id로 이전 연감 조회기능 추가 2018-06-26 23:01:43 +09:00
Hide_D 62a2147e33 천통국 정상 추가 2018-06-26 22:45:47 +09:00
Hide_D 246dff9c87 명장일람 버그? 2018-06-26 16:27:51 +09:00
Hide_D 50494beb27 명장 일람 보정 시도 2018-06-26 16:21:47 +09:00
Hide_D ce3b3ebfd8 명장 일람, 설전 승률 % 표기 오류 2018-06-26 16:18:58 +09:00
Hide_D 213090c32e 오타 수정 2018-06-26 09:45:15 +09:00
Hide_D adb8668197 크롬과 파이어폭스에 최적화 2018-06-26 09:44:26 +09:00
Hide_D 0023677003 임관 권유문 길이 제한 2018-06-26 04:13:41 +09:00
Hide_D 0b19a37ad4 초반 3년 수뇌 임명 방식 변경 2018-06-26 03:52:17 +09:00
Hide_D 9f34ae5d28 천통시 재야 장수도 저장 2018-06-26 03:33:56 +09:00
Hide_D 6f07b5cf08 ng_games에 시나리오명 남도록 수정 2018-06-26 03:20:57 +09:00
Hide_D 0f39431157 chmod 재설정 2018-06-26 03:19:47 +09:00
Hide_D bc1a470e64 디렉토리 권한 문제 해결 2018-06-26 03:15:38 +09:00
Hide_D 09e24f5684 ng_games 누락분 추가 2018-06-26 03:10:50 +09:00
Hide_D 2f27ea4c8a schema 값 꼬이는 문제 해결 2018-06-26 03:06:34 +09:00
Hide_D d09aba70b7 천통시에도 ng_old_nations에 데이터가 저장되도록 변경 2018-06-26 03:00:02 +09:00
Hide_D 69b0a80684 명장 일람, 명예의 전당 최종 개선 2018-06-26 02:36:20 +09:00
Hide_D 48f0c56a9e 국가 멸망시 국가 정보 백업 2018-06-26 00:47:54 +09:00
Hide_D 83833a3693 등용장 및 메시지 일괄 전송 TODO 해결 2018-06-26 00:45:31 +09:00
Hide_D 18429d52d4 명장 일람, 명예의 전당 코드 재구현. 연감 등에 이전 국가 기록 남기도록 설정 2018-06-26 00:32:43 +09:00
Hide_D 58cc90083b 서버 별명에 연월일 추가 2018-06-25 16:08:19 +09:00
Hide_D 2772161144 왕조 일람 테이블 구조 변경. 2018-06-25 01:53:16 +09:00
Hide_D 0e95259b14 게임 오픈 시 logs에 서브 디렉토리를 사용하도록 변경 2018-06-25 01:45:23 +09:00
Hide_D 3d9f38f1e3 건국 등 문자열 입력 변경 2018-06-25 00:46:07 +09:00
Hide_D ba3accd834 스페이스 바 등 몇몇 문자열 가능하게 처리 & 문자열 보정 2018-06-24 04:44:34 +09:00
Hide_D 0786e40ebd 국방 표기 변경 2018-06-24 04:18:54 +09:00
Hide_D 8a56393159 임관 권유 메시지를 템플릿으로 이동 2018-06-24 04:12:19 +09:00
Hide_D 5ca8a6ecfa purifier 1차 적용 2018-06-24 03:47:44 +09:00
Hide_D 5c82edc4be html purifier 보강 2018-06-24 02:56:38 +09:00
Hide_D 093c04bc24 포상 계수 조절 2018-06-23 23:49:22 +09:00
Hide_D 131dd46a38 무지장의 경우에는 쌀 적게 주도록 수정 2018-06-23 22:58:11 +09:00
Hide_D 6b1b4fdfbb 베팅 표기 오류 변경 2018-06-23 22:55:59 +09:00
Hide_D e4ad779b37 npc 발령 로직 변경. 유저 무지장 포상 로직 변경 2018-06-23 22:52:43 +09:00
Hide_D 65d817624e 인사부 조건 검사 순서 변경 2018-06-23 14:36:05 +09:00
Hide_D 66501189c4 적극적 금쌀 교환 2018-06-23 14:22:41 +09:00
Hide_D 4303898bb8 금쌀 계수 조정 2018-06-23 14:10:52 +09:00
Hide_D 7d76a9d3ed 인사부 임명 해제 불가 버그 수정 2018-06-23 13:28:36 +09:00
Hide_D 1cc42f341b 내정, 전투 기준 일부 변경 2018-06-23 13:08:16 +09:00
Hide_D 0b41ee0a29 내정 발령시 내정 찬곳으로는 안함 2018-06-23 12:57:11 +09:00
Hide_D 66b6c4d04f query 간소화 2018-06-23 05:37:34 +09:00
Hide_D 6502843d6c 포상 전략 변경 2018-06-23 05:22:49 +09:00
Hide_D 5ecfe72e19 발령 전략 변경 2018-06-23 05:06:10 +09:00
Hide_D f28cdefffe npc 발령 전략 변경 2018-06-23 05:00:57 +09:00
Hide_D 40494f2cf1 전방 설정을 5개월 내로 변경 2018-06-23 04:51:07 +09:00
Hide_D f2664c112b NPC 사령턴 로직 새로 작성 2018-06-23 04:45:27 +09:00
Hide_D 41d91df355 상인 거래시 110% 가 잘 적용되도록 변경. 삭제된 거상 문구 수정 2018-06-23 02:23:06 +09:00
Hide_D 965671dd93 key,value pair를 보존한 섞기 추가 2018-06-23 02:22:49 +09:00
Hide_D c8d08e4b2c 저격 특기, 활 유니크, 수극 확률이 각각 적용되도록 수정 2018-06-23 02:22:32 +09:00
Hide_D 2897a9b484 환상향 시나리오 전콘 방식 재 적용 2018-06-21 20:16:01 +09:00
Hide_D d190e59d83 장수 등록시 최저 스탯이 10으로 표시되는 버그 수정 2018-06-21 02:55:52 +09:00
Hide_D 0bb25e8773 천인 강림 개선 2018-06-21 02:47:29 +09:00
Hide_D 37e1903cb1 HTML Purifier 추가 2018-06-21 02:27:02 +09:00
Hide_D b402846d43 PHP 7.2 버전용으로 올림! 2018-06-21 02:17:31 +09:00
Hide_D c1a6dd385a 설문 제목이 제대로 표시되지 않는 버그 수정 2018-06-19 02:42:55 +09:00
Hide_D ccbef236d3 업데이트 기능 추가 2018-06-19 02:11:17 +09:00
Hide_D d7b9e8b2e0 투표 동작 방식 변경 2018-06-19 01:49:16 +09:00
Hide_D deaf77d3d0 Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2018-06-19 01:42:46 +09:00
Hide_D 5c738f97ed 투표 권한 추가 2018-06-19 01:42:40 +09:00
Hide_D c9f7f7ab08 공지 수정 불가능한 버그 수정 2018-06-18 10:11:56 +09:00
Hide_D 746977d5d0 서버 열단, 리셋 부분 권한 추가 2018-06-18 03:21:52 +09:00
Hide_D acb09bfe71 시나리오 생성시 잘못된 도시를 입력한 경우에도 정상 빌드되도록 수정 2018-06-18 02:23:30 +09:00
Hide_D e2a1203b43 시나리오 두개 수정 2018-06-18 02:01:45 +09:00
Hide_D 124036cea6 npc 생성시 전콘이 있는지 확인하는 코드 추가. 걸그룹 대전 변경 2018-06-16 11:01:12 +09:00
Hide_D 2ac1d82826 buildScoutMessage에서 null 반환 가능하던 문제 수정 2018-06-16 00:42:48 +09:00
Hide_D fa4e0c1948 이미지 주소 기반 자동 NPC 전콘 설정 기능 추가. 루드라사움 추가 2018-06-15 03:32:37 +09:00
Hide_D 735427ead0 기본 iconPath 설정 2018-06-15 02:18:44 +09:00
Hide_D 4fa99a7e1b 변환 코드를 v3에 맞게 변경 2018-06-15 02:17:07 +09:00
Hide_D 2f963a205a 등용장 안 받아지는 버그 수정 2018-06-14 02:41:36 +09:00
Hide_D 1f03f7e7c3 빙의 모드에서 장수 칸 여유있게 2018-06-14 02:00:09 +09:00
Hide_D 31689fb6ba processCommand에 affinity 없는 버그 수정, 등용장 못받는 버그 수정 2018-06-14 01:57:28 +09:00
Hide_D cf7ebbd314 Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2018-06-14 01:49:22 +09:00
Hide_D 40a953aed5 storage의 isunited 변수 문제 2018-06-14 01:49:15 +09:00
revofpla c4d999ada7 가상시나리오 16(애니집결) 추가 2018-06-13 17:46:34 +09:00
Hide_D fff6b4e155 개전시 조사 버그 2018-06-13 10:20:48 +09:00
Hide_D 380e08d89f 랜임시 장수수를 셀 때 유저장, 빙의장, n장만 카운트하도록 변경 2018-06-13 04:17:18 +09:00
Hide_D 96c8199092 거병 확률 최종 수정 2018-06-13 03:50:51 +09:00
Hide_D 54870cf067 거병 확률 재 수정 2018-06-13 03:29:09 +09:00
Hide_D 8654447aac 추방 기준을 3년 이내로 재 변경 2018-06-13 03:28:11 +09:00
Hide_D 28a690cbba 추방 후 임관 확률 재 조정 2018-06-13 03:27:08 +09:00
Hide_D 52d1a48c0b 거병 확률 변경. NPC 임관 확률 추가 변경 2018-06-13 03:21:55 +09:00
Hide_D f45333db5e 임관 속도 조정 2018-06-13 03:06:30 +09:00
Hide_D c920e45934 임관 시도 확률 변경, NPC 랜임시 부상 패널티 약화 2018-06-13 02:51:39 +09:00
Hide_D dd86ef4591 걸그룹 시나리오 수정, NPC 임관 확률 대폭 감소 2018-06-13 02:45:00 +09:00
Hide_D b9fb00f042 npc 거병 확률 수정 2018-06-13 02:29:37 +09:00
Hide_D 355d9fd995 거병 확률 계수 변경 2018-06-13 02:24:52 +09:00
Hide_D b68c13c4f2 임관시 $general['nations'] 를 Json Array로 변경 2018-06-13 02:21:31 +09:00
Hide_D f2803291ab 일부 브라우저에서 명령창 줄 넘어감 방지 2018-06-13 00:53:31 +09:00
Hide_D 54df034c77 Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2018-06-12 22:28:10 +09:00
Hide_D 7317b8bc18 JosaUtil 응급 대응 2018-06-12 13:05:22 +09:00
Hide_D 2f030a6dd6 NPC 임관 로직 변경 2018-06-12 02:47:33 +09:00
Hide_D ef0dec32ee 임관 제한을 하드코딩 10에서 Const로 전환 2018-06-12 01:32:34 +09:00
Hide_D e7f5850c31 Session 클래스 구조 살짝 수정. 호출 구조 살짝 수정.
환상향 시나리오 전콘 반영(임시)
2018-06-11 22:55:32 +09:00
Hide_D d1d81e03d1 makenation 텍스트에 null이 들어가는경우(??)에도 우회 동작.
변환 스크립트에서 숫자 장수명 대응
2018-06-11 20:27:55 +09:00
Hide_D c65d6565df checkSupply를 검출하기 쉬도록 변경 2018-06-11 03:20:18 +09:00
Hide_D a2d40ecf4a 재야가 아닌 NPC 시나리오 생성시 버그 수정 2018-06-11 03:19:47 +09:00
Hide_D 7291c828c0 isGameLoggedIn 추가 2018-06-11 02:16:07 +09:00
revofpla 01caa625bd 환상향 시나리오 및 소울소드(8글자 신규) 업데이트 2018-06-10 16:55:34 +09:00
Hide_D 6cad6f45fe 전투 로그 숫자를 최악의 조건에도 표현 가능하도록 수정 2018-06-04 03:05:30 +09:00
Hide_D a6936ac8d7 연감 표기 수정 2018-06-04 02:28:33 +09:00
Hide_D eb9ae00d24 명예의 전당 글자수 반영 2018-06-04 01:52:33 +09:00
Hide_D b8c8321757 명장일람 글자 반영 2018-06-04 01:51:10 +09:00
Hide_D 41235bed5d 닉네임 길이 9자 2018-06-04 01:11:02 +09:00
Hide_D 7367eb1c45 메시지 시스템에 9자 닉네임 적용 2018-06-04 01:03:05 +09:00
Hide_D f9d90c38ef 전투 로그 길이 축소 2018-06-01 03:11:46 +09:00
Hide_D 275d9b1c25 한자 케이스 우회 2018-06-01 03:01:06 +09:00
Hide_D 663c24b31f 나머지 조사 변경 2018-06-01 02:49:21 +09:00
Hide_D beb501354d (이)가 조사 적용 2018-06-01 02:37:32 +09:00
Hide_D ba165239c3 (으)로 조사 반영 2018-06-01 01:59:19 +09:00
Hide_D e64ef5de84 (을)를 에 조사 적용 2018-06-01 01:43:40 +09:00
Hide_D c6bbbe081d 조사 유틸 한자 포함 2018-06-01 00:34:33 +09:00
Hide_D 66dcefc844 JosaUtil 버그 수정. 알파벳+숫자 형태 수정 2018-05-31 23:58:49 +09:00
Hide_D 93d580e74e 조사 처리 클래스 추가 2018-05-31 02:50:58 +09:00
Hide_D 9eb35b55c6 설문조사 너비 반영 2018-05-31 02:49:48 +09:00
Hide_D d2e052dfa3 회의실, 기밀실 너비 수정 2018-05-31 01:20:26 +09:00
Hide_D ddd889c42c 중원정보 너비 수정 2018-05-31 00:59:27 +09:00
Hide_D 70da3909a9 cacheValue 버그 수정 2018-05-31 00:52:43 +09:00
Hide_D c398b55f3c 턴 밀림 버그 수정 2018-05-31 00:46:40 +09:00
Hide_D 317c42b384 장수명을 9글자까지 반영할 수 있도록 수정하고. 레이아웃 틀어지지 않도록 수정 진행중 2018-05-30 02:47:33 +09:00
revofpla a95903ceff 소울소드 시나리오(가상14번) 추가 2018-05-29 14:40:49 +09:00
Hide_D 98c386622a 버그 수정 2018-05-29 01:50:50 +09:00
Hide_D 398f54cced 군주가 지정되지 않더라도 안전하게 동작 2018-05-29 01:49:06 +09:00
Hide_D c337ff2f67 변환 스크립트 동작 변경, 환상향 시나리오 적용 2018-05-29 01:28:03 +09:00
Hide_D d9f6f7956e 시나리오 json 파일에서 받아오는 규격 확장
국가를 'string'으로 표기 가능하도록 변경
전콘 번호를 'string'으로 표기 가능하도록 변경
2018-05-28 23:08:59 +09:00
revofpla 30e2432fc3 걸그룹대전 스텟 변경 2018-05-28 18:50:02 +09:00
Hide_D 8238f27dfa 환상향 스탯 2018-05-26 22:32:46 +09:00
Hide_D b00d8f2ebd 하드리셋 버그 수정 2018-05-26 17:51:46 +09:00
Hide_D 98168c61b3 서버 2개 추가. 냐. 퍄. 2018-05-26 17:47:54 +09:00
Hide_D 6627797cc6 Merge branch 'devel' of https://storage.hided.net/gogs/devsam/core into devel 2018-05-26 17:36:36 +09:00
Hide_D 30e54c3d0e 34번 시나리오 중복 장수 제거 2018-05-25 23:12:33 +09:00
Hide_D ee3764f5f5 걸그룹 시나리오 추가 2018-05-25 22:50:59 +09:00
Hide_D a86e4cf64b 전콘 사이즈 확장 2018-05-25 00:51:03 +09:00
Hide_D 78ea405e40 영웅난무 스탯 변경 2018-05-24 23:41:38 +09:00
Hide_D f99583dc99 시나리오 능력치 수정. 영웅난무2 수정 2018-05-24 23:39:42 +09:00
Hide_D b9e5ddce94 c_myBossInfo 수정. RegNPC nullable 변경 2018-05-24 23:33:07 +09:00
Hide_D 1d28f22577 도시 정보, 장수 목록 2018-05-22 02:36:00 +09:00
Hide_D 90235660db 세력 도시 너비 조절 2018-05-22 02:25:53 +09:00
Hide_D 8e12aea3ff 오타 수정 2018-05-22 01:51:19 +09:00
Hide_D 280ff18526 세력 일람에서 장수명 너비 확보 2018-05-22 01:50:47 +09:00
Hide_D 9e88b03438 autoreset 버그 수정 2018-05-21 23:52:13 +09:00
Hide_D 14213ea3cd 토너먼트 인자 실수 체크 2018-05-21 23:22:49 +09:00
Hide_D 5352a507b2 삼11 시나리오 유저 스탯캡 조절 2018-05-21 22:54:25 +09:00
Hide_D 3b382199fc 리셋 시 최대 스탯 보여주도록 변경 2018-05-21 22:51:03 +09:00
Hide_D 67dea49a9b 삼국지11 시나리오 스탯 재 변경 2018-05-21 22:33:06 +09:00
Hide_D 8bdca87bf9 확장 장수 안되는 버그 해결. 환상향 시나리오 추가 2018-05-21 16:17:33 +09:00
Hide_D 8085e96fdd gameStor 대소문자 마저 수정 2018-05-21 16:05:17 +09:00
Hide_D 86b40695e6 외교 서신 안 받아지는 버그 수정. 의병, m장 스탯 버그 해결 2018-05-21 12:16:02 +09:00
Hide_D 676f98659a storage 테이블 생성 문제 해결 2018-05-21 05:38:43 +09:00
Hide_D 2fbf8bc2e2 누락된 GameCustomConst 추가 2018-05-21 05:30:38 +09:00
Hide_D bf233f7552 시나리오마다 별도로 스탯 제한치를 설정 가능하도록 변경 2018-05-21 05:10:44 +09:00
Hide_D 2c3e577c4e 설문조사 수정 2018-05-21 03:54:43 +09:00
Hide_D 7270de6775 Merge branch 'devel' into kvstorage_game 2018-05-21 03:54:16 +09:00
Hide_D e45f3a7d03 턴 지연 버그 수정. 설문조사 % 막대 2018-05-21 03:51:04 +09:00
Hide_D 742e2e8003 설문조사 offset 버그 2018-05-21 03:42:04 +09:00
Hide_D 4cdec6c393 투표 버그 수정 2018-05-21 03:39:42 +09:00
Hide_D a2d273bdc9 설문조사 보이도록 2018-05-21 03:37:59 +09:00
Hide_D a163fbef7f 설문조사 동작 2018-05-21 03:35:53 +09:00
Hide_D ec226ede65 스탯 31 생몰년 2018-05-21 03:20:15 +09:00
Hide_D 771fcbec6a 장수 생성 버그 수정 2018-05-21 03:16:06 +09:00
Hide_D ae62669fe8 KBO 중복 장수 제거, 삼국지 11 스탯 시나리오 추가 2018-05-21 03:11:26 +09:00
Hide_D 4823795c50 토너먼트 '투입' 버그 수정 2018-05-21 01:47:36 +09:00
Hide_D a80442399d KVStorage를 무조건 소문자만 받도록 설정 2018-05-21 01:32:30 +09:00
Hide_D 913b308892 $game_env -> $admin 2018-05-21 01:05:59 +09:00
Hide_D 21837d0869 getDBValues 쓴 부분 수정 2018-05-21 00:58:28 +09:00
Hide_D 5706fcfb7d DateInterval namespace버그 수정 2018-05-21 00:51:38 +09:00
Hide_D 5bc3b55400 turnterm 대소문자 버그 수정 2018-05-21 00:49:24 +09:00
Hide_D ffbe2844e4 npcmode 대소문자 버그 수정 2018-05-21 00:47:42 +09:00
Hide_D 7776b35cab kvstorage 버그 수정 2018-05-21 00:23:50 +09:00
Hide_D c39794c086 scneraio_frame을 올바르게 서술 2018-05-20 23:04:22 +09:00
Hide_D 6aaa50364b 인사부에 스탯, 삭턴 보이도록 2018-05-20 22:37:18 +09:00
Hide_D d0778550ab Merge branch 'devel' into kvstorage_game 2018-05-20 22:20:03 +09:00
Hide_D 8cba6ac16a 커스텀 종능 대비 json 변경 2018-05-20 22:19:23 +09:00
Hide_D 0516007130 game 테이블을 모두 gameStor로 변환 2018-05-20 03:43:02 +09:00
Hide_D af9df325f0 현재까지 작업 분량 반영 2018-05-20 02:23:44 +09:00
Hide_D 4dd69db652 장수 도시를 제대로 못 받는 버그 수정 2018-05-15 22:42:14 +09:00
Hide_D 316d466795 방랑군 시나리오를 제대로 시작할 수 없는 버그 수정 2018-05-15 22:38:05 +09:00
Hide_D 3fb5b99af3 시나리오 8번 버그 수정, printJS, printCSS 버그 수정 2018-05-15 22:10:33 +09:00
Hide_D 1764504ea3 23번 시나리오 변경 2018-05-14 23:05:45 +09:00
Hide_D fab0495a39 game table 이전 2018-05-13 01:31:28 +09:00
Hide_D 166eafe4ee game 테이블을 KVStorage로 일부 대체 2018-05-13 01:26:44 +09:00
Hide_D 9d6181ede1 game table을 KVStorage로 일부 대체 2018-05-13 00:52:16 +09:00
Hide_D 67ecd514a4 KVStorage의 game namespace를 game_env로 '편의를 위해' 변경 2018-05-12 22:21:53 +09:00
Hide_D 52f4b79fdf KVStorage로 game 테이블 대체 준비 2018-05-12 22:05:44 +09:00
Hide_D 5e74a34d3e 관리자 도구 css 파일명 이상 수정 2018-05-12 16:12:45 +09:00
Hide_D 288be33eac js, css 캐시 문제로 printJS, printCSS 함수를 이용하도록 변경 2018-05-12 16:09:32 +09:00
Hide_D 451a759cca common.css 버전 올림 2018-05-12 13:01:39 +09:00
Hide_D a9052705a8 바 막대 100% 넘을때 문제 해결, 분쟁현황 막대 수정 2018-05-12 13:00:28 +09:00
Hide_D 5490e74f04 부운영자도 회원 관리 가능하도록 변경 2018-05-12 06:30:45 +09:00
Hide_D ab5768998b admin_server.js에 버전명 지정 2018-05-12 06:12:21 +09:00
Hide_D b71ae96d66 부운영자가 hwe 서버(base server)를 업데이트 할 수 없는 버그 해결 2018-05-12 06:11:31 +09:00
Hide_D e3528ac82f 부운영자도 기존의 git tree-ish 경로로 업데이트 할 수 있도록 변경 2018-05-12 06:08:48 +09:00
Hide_D bad5a3c0ef 가장 마지막에 업데이트한 git tree-ish path를 저장하는 기능 추가 2018-05-12 06:04:06 +09:00
Hide_D bb49e6dec7 KVStorage 버그 수정 2018-05-12 06:03:29 +09:00
Hide_D 2d24ba659f KVStorage에 unset 추가 2018-05-12 05:46:43 +09:00
Hide_D 29ce47251a KVStorage가 사용할 db를 직접 선택할 수 있도록 변경.
KVStorage를 전역으로 이동
2018-05-12 05:40:15 +09:00
Hide_D d02a84e87e kvstorage를 schema에 추가 2018-05-12 05:36:25 +09:00
Hide_D c5d008ec47 KVStorage에 reset추가 2018-05-12 05:32:18 +09:00
Hide_D 798be5fd5c 이용 약관, 개인정보처리 방침 이동 2018-05-12 05:07:55 +09:00
Hide_D ab6bb54eae KVStorage 추가 2018-05-12 04:59:44 +09:00
Hide_D ae24d18adb isClose의 함수이름을 isNeighbor로 변경 2018-05-12 02:04:21 +09:00
Hide_D dcfb49d927 firefox groove에 color 적용 안되는 문제 해결 2018-05-11 03:46:50 +09:00
Hide_D d82ab51d58 모병, 징병창 가운데 정렬 2018-05-11 03:30:57 +09:00
Hide_D 5166001956 턴 명령 창 가운데 정렬 2018-05-11 03:21:10 +09:00
Hide_D aa46fc9668 html5 비호환 border=1, border=0 제거. bar 태그를 div로 변경 2018-05-11 03:16:24 +09:00
Hide_D beea13ff4b checkSupply()에서 국가 select 쿼리 직접하도록 변경 2018-05-09 01:44:22 +09:00
Hide_D 766d0b3ad5 빙의 탈출 기능 임시 제한 2018-05-08 23:40:35 +09:00
Hide_D 64e279d859 빙의시 로그가 잘못 남는 버그 수정 2018-05-08 23:39:48 +09:00
Hide_D a3f6a8e8ab symfony/lock 추가 2018-05-08 00:38:29 +09:00
Hide_D 330853c98d 30번 시나리오 2018-05-07 19:34:56 +09:00
Hide_D 776e16b58b 빙의 선택 대기 시간 변경 2018-05-07 12:39:03 +09:00
Hide_D 70b1f23a49 빙의 해제용 삭턴 세팅.
- 10분 미만은 30분
- 10분 이하는 60분 대기 필요
2018-05-05 23:25:21 +09:00
Hide_D 5e4493b49a 빙의 목록을 종능 순으로 정렬해서 표현 2018-05-05 23:03:10 +09:00
Hide_D dec24e09cf 빙의시 장수명 빼먹는 버그 수정 2018-05-05 22:52:53 +09:00
Hide_D 95445d8f8a 빙의창에서 만료 후 다른 장수 보기 시 안보이는 문제 해결 2018-05-05 22:46:56 +09:00
Hide_D 683a844a08 빙의 코드 개선
- 유효 기간 관련 늘림.
- 유효 기간 가까워지면 색으로 표시. 만료 표기도 추가
- 다른 장수 보기를 남은 초 기준으로 수정
2018-05-05 22:39:21 +09:00
Hide_D a75eb5b74e 장수 선택 테이블을 schema에 추가 2018-05-05 21:44:15 +09:00
Hide_D 5dfb844c7e 빙의 재선택 시간을 빠르게 2018-05-05 21:40:59 +09:00
Hide_D 20f991a205 빙의시 오래된 데이터 삭제 2018-05-05 21:22:38 +09:00
Hide_D 3c1c339498 장수 빙의 코드 변경 2018-05-05 21:20:15 +09:00
Hide_D 5974028c4d 빙의 장수 기능 추가(선택은 미완) 2018-05-05 19:51:56 +09:00
Hide_D a534b8f812 시나리오 30번 수정 2018-05-05 19:49:22 +09:00
Hide_D cb2fbf1a32 common.js에 iconpath 연산 코드 추가 2018-05-05 19:49:07 +09:00
Hide_D a1392652ae config.css에서 div, button에 적용되던 전역 style 제거
모바일 화면에서 입구 햄버거 버튼 동작
2018-05-05 19:48:38 +09:00
Hide_D 69af23b60a Session에서 requireLogin 인자 이름을 직관적으로 변경 2018-05-05 19:45:10 +09:00
Hide_D 063b3d37a6 exception이 trace 수정하도록 임시 수정 2018-05-05 19:44:22 +09:00
Hide_D ebf9b4b75d 가상 상성인 경우 새 장수는 재야임. 2018-04-30 00:15:43 +09:00
Hide_D 45fd06c195 성인으로 등장시 월이 제대로 로그로 남지 않는 버그 수정 2018-04-30 00:01:11 +09:00
Hide_D 7db3675e71 성인 등장이 꼭 1월이 아니어도 되도록 변경 2018-04-29 23:31:21 +09:00
Hide_D a19661199e Date의 비교 대상 lhs, rhs가 바뀐 버그 수정 2018-04-29 23:13:49 +09:00
Hide_D 953196ec78 예약 오픈 시 데이터를 바로 날리진 않도록 설정 2018-04-29 12:55:16 +09:00
Hide_D d5be6e3e08 내 정보에서 숙련도를 수치로 표기 2018-04-29 04:29:46 +09:00
Hide_D 551b79d8c2 관리자 패널 접속 허용, 접속 제한 쿼리 버그 수정 2018-04-29 04:02:23 +09:00
Hide_DandGogs 95a22f228c Merge branch 'devel' of devsam/core into master 2018-04-29 03:17:12 +09:00
Hide_D a242b9a20e 주요 메뉴에 상단 바 추가 2018-04-29 03:08:30 +09:00
Hide_D 19e91b2de0 입구 코드 추가 2018-04-29 02:44:09 +09:00
Hide_DandGogs eac92293fc Merge branch 'devel' of devsam/core into master 2018-04-29 02:01:54 +09:00
Hide_D a1397e41aa 트래픽 버그 수정 2018-04-29 01:58:59 +09:00
Hide_D 13fccb998e 년도 계산 공식 재 수정. 시나리오 시작시 남은 개월 수를 계산. 반동탁연합 시나리오 외교 추가 2018-04-29 01:47:48 +09:00
Hide_D 1e54220230 연, 월 계산 방식 변경 2018-04-29 01:19:31 +09:00
Hide_D 6b2000bb39 올스타전 내특/전특 2018-04-29 00:53:49 +09:00
Hide_D 5f3fbdb089 KBO 올스타전 리뉴얼 2018-04-29 00:45:12 +09:00
Hide_D 63e888c9b1 특성에 '랜덤', '랜덤전특', '랜점내특' 가능. 0으로 지정 가능 2018-04-29 00:28:06 +09:00
Hide_D e97e702c2e 가상 모드 대응. 랜덤 특성 세팅 추가 2018-04-28 23:55:22 +09:00
Hide_D 657c35f876 git tree 지정이 안되는 업데이트 유저는 기존에 업데이트된 값을 이용하도록 변경 2018-04-28 23:36:35 +09:00
Hide_D bc79250f96 Merge branch 'master' of ssh://storage.hided.net:2525/devsam/core into devel 2018-04-28 22:42:01 +09:00
Hide_D dd7846e995 설정 저장용 key_value storage 추가. ROW_FORMAT=DYNAMIC 삭제 2018-04-28 22:01:58 +09:00
Hide_D 8a5483d508 연감 벌점 감소 2018-04-28 21:52:14 +09:00
Hide_D 805053e921 NPC 포상 잘 안주는 문제 우회 시도 2018-04-28 21:04:55 +09:00
Hide_D 170a32a1bd 등용장 메시지 송신이 이상한 문제 해결.
인사부 '공석' 지정 가능
2018-04-28 20:49:38 +09:00
Hide_D 5262d424b4 방랑의 제한 조건 추가 2018-04-28 20:38:19 +09:00
Hide_D 9c3c1045ac 줄간격 문제 해결(inline에 line-height 적용해제) 2018-04-28 20:29:33 +09:00
Hide_D 2d1a3f5da9 많은 버그 수정
커맨드 실행 중 로그아웃 된 경우 버그 수정
국기 변경에 에러 있던 점 수정
등용장 수락시 송신자 명성 안 늘어나는 버그 수정
2018-04-28 20:10:33 +09:00
Hide_D 088260bbc6 npc 재야일때 e_notice 에러 수정 2018-04-28 19:13:18 +09:00
Hide_D 18ebbbc555 oauth_kakao autoload 빼먹은거 수정 2018-04-28 19:10:03 +09:00
Hide_D 80b70a8765 국가 명 너비를 살짝 더 늘림 2018-04-28 18:48:58 +09:00
Hide_D d3d4cce8b5 서버 설명 2018-04-28 18:09:55 +09:00
Hide_D 76bfcd4fa8 베팅 버그 수정 2018-04-28 02:37:47 +09:00
Hide_D 7cbe383a8a 토너먼트 문자열 버그 수정 2018-04-28 02:36:59 +09:00
Hide_D 0488ebf071 무지장 유저장 포상 기준 변경 2018-04-28 02:25:08 +09:00
Hide_D 1cfab53472 문자열 자르기 버그 수정 2018-04-28 01:26:32 +09:00
Hide_D 084c7a2626 선포시 양국 모두 뜨도록 2018-04-28 01:16:00 +09:00
Hide_D 161836a233 상성 가상인 경우 상성이 리셋되지 않는 버그 해결 2018-04-28 01:08:54 +09:00
Hide_D c86ac7d20f 가입 일자 표기, 개인정보 제3자 제공 동의 버튼 추가. 철회 버튼도 추가 2018-04-28 00:23:51 +09:00
Hide_D 20cceec090 IE11에서 javascript 기본 argument 안되는 것 수정 2018-04-28 00:00:46 +09:00
Hide_D 62c6ba362d 개인정보처리방침 & 이용약관 링크 추가 2018-04-27 23:51:57 +09:00
Hide_D 5ed31881e6 PrintElapsedTime 제거 2018-04-27 23:40:50 +09:00
Hide_D 647c51fe0f 외교 서신, 등용장 수락시 올바르지 않을 경우 alert
건국 시 장수 이름과 같아도 건국 가능하도록 변경
2018-04-27 23:08:55 +09:00
Hide_D a2d3ac9e70 시나리오 생성시 장수의 NPC 메시지가 입력되지 않는 버그 해결 2018-04-27 22:51:39 +09:00
Hide_D 20f74f6645 각 페이지에 서버 이름 표기 2018-04-27 22:36:29 +09:00
Hide_D 0bb1ed6f18 서버 리셋 시 서버 이름을 받아오도록 설정 2018-04-27 22:28:16 +09:00
Hide_D 2102a852cb 가상, 사실 거꾸로 표기한 점 수정 2018-04-27 22:21:43 +09:00
Hide_D 0cfb80b7bf 카카오 로그인 버튼을 직관적으로 변경 2018-04-27 22:09:57 +09:00
Hide_D 4297ea9e40 로그인 & 가입 버튼 추가 2018-04-27 21:37:37 +09:00
Hide_D 0ce36e93bd 예약 오픈 테이블은 리셋에도 유지하도록 변경 2018-04-25 21:31:39 +09:00
Hide_D 18bd5f4246 NPC 대사 제대로 안하는 버그 수정 2018-04-25 21:25:04 +09:00
Hide_D 2e7bcd9038 Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2018-04-25 21:04:50 +09:00
Hide_D bfef0c28bc 리셋 시 폐쇄를 외부에서 하면 예약 리셋이 안되던 버그 수정 2018-04-25 21:04:41 +09:00
Hide_D b447065651 scenario 30번 수정 2018-04-25 18:12:08 +09:00
Hide_D f540f87e77 KBO 올스타전 시나리오 추가 2018-04-25 18:04:01 +09:00
Hide_D 6ebe3454af 예약 안내 조건 버그 수정 2018-04-25 08:15:55 +09:00
Hide_D 7e00500870 예약 리셋시 초기화 에러 표기 가능하도록 변경 2018-04-25 03:10:09 +09:00
Hide_D bc37dd1df7 '폐쇄 여부'를 server_basic_info에서 판단하도록 설정 2018-04-25 03:07:02 +09:00
Hide_D 77aca09f53 상성 여부로 메시지 변경 2018-04-25 03:02:31 +09:00
Hide_D 23fb1194ee 서버 예약 오픈을 UI에 통합 2018-04-25 02:56:11 +09:00
Hide_D 6253b757ec 기본 예약 리셋 동작 2018-04-25 02:13:40 +09:00
Hide_D 9122342fb9 FIXME: 리셋 헬퍼 꼴보기 싫으니 분리할 것 2018-04-25 00:44:33 +09:00
Hide_D fb42a32089 리셋 코드를 별도 코드로 분리 2018-04-25 00:43:09 +09:00
Hide_D 5c7f4c43ae 리셋 시 토너먼트 개최 여부도 같이 설정 2018-04-25 00:28:26 +09:00
Hide_D 3da256cc29 토너먼트 타이틀 정보 약간 개선 2018-04-25 00:05:08 +09:00
Hide_D 717c576cba n장 끼리 포상 제대로 안하는 버그 수정 2018-04-24 02:16:50 +09:00
Hide_D ddb4011b5d 몰수 조건 강화 2018-04-24 02:12:04 +09:00
Hide_D 48207b9300 포상 조건 재 수정. 무지장이라도 금쌀이 너무 적으면 주긴 함 2018-04-24 01:58:07 +09:00
Hide_D 388afe6fb4 CityHelper에서 getAllNationCities가 올바르게 동작하지 않던 버그 해결 2018-04-24 01:15:05 +09:00
Hide_D 99b459766a 무지장 헌납 로직 추가
포상 로직에서 무지장. 사망 예정장은 제외
2018-04-24 00:53:26 +09:00
Hide_D 230fc5ba53 훼섭은 닫히던 문제 마저 수정 2018-04-23 23:51:47 +09:00
Hide_D 9c266b7b1c 불가침 수락 년도 제대로 안보이는 버그 수정 2018-04-23 23:51:02 +09:00
Hide_D 603599d666 업데이트 후 서버를 닫지 않도록 변경 2018-04-23 23:48:59 +09:00
Hide_D b3cd29ac95 명전 테이블에 unique index가 안걸려있던 버그 수정 2018-04-23 01:21:05 +09:00
Hide_D a4beab86c2 도시 정보 턴 시간값을 +1 2018-04-22 12:24:42 +09:00
Hide_D 3a84e0d064 run_daemon 고도화. 1분에 4번 부름 2018-04-22 02:35:21 +09:00
Hide_D 31f1eb2d28 턴 실행 데몬 2018-04-22 02:18:51 +09:00
Hide_D d73c0c6f0c 남귀병이 기술 1등급 병종이었다니! 2018-04-22 01:32:25 +09:00
Hide_D 36409cf066 game, nation, city, general을 myisam으로 변경 2018-04-21 23:47:02 +09:00
Hide_D 556e1059f9 인사부 버그 수정
메인 페이지에서 재야 인사 에러 안나게 수정
2018-04-21 23:19:29 +09:00
Hide_D 131a6cb6c3 건국 버그 수정 2018-04-21 23:08:51 +09:00
Hide_D 598943eb1b 방랑군 상태에서 세력 도시 클릭 불가. 인사부 가능.
설치시 운영자 삭턴
시나리오 29 재 디자인
지도에서 로그인 유저 검사
2018-04-21 22:43:46 +09:00
Hide_D bf746393b8 천인강림 시나리오 리 밸런싱 2018-04-21 21:52:17 +09:00
Hide_D 70b6997436 연감에서 장수 로그 컬럼 길이 연장 2018-04-21 21:10:03 +09:00
Hide_D b26c6a04c0 삭턴 버그로 생긴 버그 수정 2018-04-21 17:27:45 +09:00
Hide_D 4f262a03e4 command_Single 동작 변경 2018-04-21 16:18:07 +09:00
Hide_D a0ca3dc3f6 TODO 추가 2018-04-21 15:59:05 +09:00
Hide_D f58736277f 삭턴 버그 수정 2018-04-21 15:58:41 +09:00
Hide_D 473cae169e 퀘섭 빙의시 계정이름이 아니라 닉네임으로 기록하도록 변경 2018-04-21 14:14:41 +09:00
Hide_D 4b956385bd 메시지 전송을 위해 일괄 2018-04-21 13:16:50 +09:00
Hide_D 481494a885 전체 메시지 안 보내지던 것 수정
10초마다 메시지
2018-04-21 13:06:10 +09:00
Hide_D 243604d6c1 30초마다 메시지 폴링! 2018-04-21 12:28:32 +09:00
Hide_D dc97c71e0b 1월을 놓치면 태어나지 않으므로 Date 기준을 ==에서 >=로 변경 2018-04-21 12:20:55 +09:00
Hide_D e6b4832b5d index.php에 level 없는 버그 2018-04-21 11:49:55 +09:00
Hide_D 00ac67e8ac 시나리오 시작 년도 수정 2018-04-21 11:11:25 +09:00
Hide_D 953b609b32 임관, 장수 선택시 설명 색 변경 2018-04-21 10:54:07 +09:00
Hide_D a5875be39b 쿼리 인덱스 2018-04-21 10:48:55 +09:00
Hide_D 0f45de8384 부상 코드 2018-04-21 10:47:09 +09:00
Hide_D d119200287 서버 업데이트 순서 틀림 2018-04-21 10:43:21 +09:00
Hide_D b9fa0bea6e mkdir 권한 변경 2018-04-21 10:42:30 +09:00
Hide_D 3a28180700 도시 정보 주석 제거 2018-04-21 10:17:24 +09:00
Hide_D 5b6f456d5c 도시 정보 업데이트 2018-04-21 10:15:04 +09:00
Hide_D fb1ae6ea88 투표율 안보이는 버그 수정 2018-04-21 08:56:54 +09:00
Hide_D 50582a0e8b 내무부에 textarea 적용 2018-04-21 07:57:41 +09:00
Hide_D 8fe3d0258a 건국되지 않았을 때 버튼 처리 변경 2018-04-21 07:57:26 +09:00
Hide_D f2537b20de allButton 예제 2018-04-20 02:19:42 +09:00
Hide_D 31d6850e6e 게시판 리스트 변경 2018-04-20 02:17:38 +09:00
Hide_D 31468d5425 전력전 비율을 50% -> 40%로 내림 2018-04-19 22:55:11 +09:00
Hide_D 688b839315 지도 배경 그림이 올바르지 않은 버그 수정 2018-04-19 22:50:40 +09:00
Hide_D fa4c9046fc Merge branch 'devel' of ssh://storage.hided.net:2525/devsam/core into devel 2018-04-19 20:08:31 +09:00
Hide_D c7560f9113 체섭에서 세션 시간 가져옮 2018-04-19 20:08:05 +09:00
Hide_D f7e3966310 부운영자 계정 권한 지정 2018-04-19 10:35:49 +09:00
Hide_D 7359237da4 항복 권고시 divide 0 나올 수 있는 문제 우회 2018-04-19 02:56:55 +09:00
Hide_D d617203c05 reply 추가 2018-04-19 02:55:35 +09:00
Hide_D 910526ba44 oauth 버그 2018-04-19 02:50:00 +09:00
Hide_D c1842703d7 Session ID 변경 2018-04-19 02:43:10 +09:00
Hide_D 2f9d2e2bc2 추방시 color 필요하던 점 2018-04-19 02:36:11 +09:00
Hide_D 20d7e005a0 도움말 에러 2018-04-19 02:34:44 +09:00
Hide_D 0ce5a88e49 NPC 추방시 warning 2018-04-19 02:34:38 +09:00
Hide_D 4af10fb485 유니크 아이템 warning 2018-04-19 02:34:28 +09:00
Hide_D f872113e99 토너먼트 warning 제거 2018-04-19 01:55:31 +09:00
Hide_D f33fefd188 도시에서 턴이 4개만 보이는 버그 수정 2018-04-19 01:53:02 +09:00
Hide_D 8c2f4f9dc9 Message 마지막 인자가 없엇 ㅓ터지는 버그 수정 2018-04-19 01:51:27 +09:00
Hide_D 3b6e7c5c28 몰수 시 NPC 반항 에러 2018-04-19 01:50:01 +09:00
Hide_D 595c11a9a7 NPC 사령턴이 '미설정'일때 2018-04-19 01:45:35 +09:00
Hide_D 1ab7b57885 숙련 단련 로그 버그 수정 2018-04-19 01:40:20 +09:00
Hide_D 07130e6022 선포 옵션 변경 2018-04-19 01:38:28 +09:00
Hide_D 2cc2f7eb23 NPC 몰수를 더 잘하도록 설정 2018-04-19 01:30:31 +09:00
Hide_D c798ac49b9 선포 메시지 버그 2018-04-19 01:21:28 +09:00
Hide_D a8796edbd3 체크 방식 유형 변경 2018-04-19 01:16:38 +09:00
Hide_D a4ead74cb2 등용장 로그 이상하게 뜨는것 수정 2018-04-19 00:27:35 +09:00
Hide_D 0beb00c5e5 등용장 탈때 삭턴 NULL되는 버그 수정 2018-04-19 00:26:09 +09:00
Hide_D 3d43690303 훈사 80 못 고치는 버그 수정 2018-04-19 00:22:26 +09:00
Hide_D 938c819e9a 베팅장 INF 수정 2018-04-19 00:19:56 +09:00
Hide_D 889ced68ed 베팅장 warning 우회 2018-04-19 00:18:31 +09:00
Hide_D de97384424 베팅창 warning 수정 2018-04-19 00:17:30 +09:00
Hide_D f6ffc20a23 등용장 장수열전 기록 안되는 버그 수정 2018-04-19 00:10:19 +09:00
Hide_D c0ec82051f $cities 변수 없음 수정 2018-04-19 00:04:30 +09:00
Hide_D 91273522c0 오탈자 수정 2018-04-19 00:03:46 +09:00
Hide_D 20a475466d 등용장 '등용장 안 타지는' 버그 수정 2018-04-18 23:54:48 +09:00
Hide_D 10b6a4ff6e 등용장 버그 고침(송신자에게도 감) 2018-04-18 23:48:47 +09:00
Hide_D 2a4e59d6e2 등용장 버그 수정(임관 국가) 2018-04-18 23:44:49 +09:00
Hide_D c016ea7c52 등용장 버그 수정 2018-04-18 23:44:17 +09:00
Hide_D 00bece9c9c 임관금지 거꾸로된것 수정 2018-04-18 23:42:27 +09:00
Hide_D 44ed61c14e touchmode 삭제 다른 방안을 찾아보는걸로 2018-04-18 23:24:33 +09:00
Hide_D 002b7ae534 등용장 버그 수정 2018-04-18 23:20:47 +09:00
Hide_D 63000bdd22 등용장 버그 수정 2018-04-18 23:18:55 +09:00
Hide_D 20fd52b32d 등용장 버그 수정 2018-04-18 23:17:55 +09:00
Hide_D 7a3064d37b 첩보시 병종 메시지 수정 2018-04-18 23:16:05 +09:00
Hide_D 7fea0a41c6 지도 수준을 없앰 2018-04-18 22:57:38 +09:00
Hide_D e701540d7f 외교 서신 (이)가 2018-04-18 22:37:00 +09:00
Hide_D 5187ebbf52 추방 몰수 선포 등 상황에서 메시지 안 나타나는 버그 수정 2018-04-18 22:34:13 +09:00
Hide_D df26c511b5 금쌀 2500단위도 추가 2018-04-18 22:18:39 +09:00
Hide_D 0e650da34a 메시지창 정렬.
몰/포 1200, 1500 추가
2018-04-18 22:16:59 +09:00
Hide_D 2c382da773 부대가 없더라도 부대 가입 버튼이 뜨는 버그 해결 2018-04-18 22:05:58 +09:00
Hide_D e709ee5db8 불필요한 array_get 삭제. 모병 칸 버튼을 징병->모병 2018-04-18 22:03:01 +09:00
Hide_D d550415b65 세션 설정시 오타 수정 2018-04-18 22:00:11 +09:00
Hide_D 9ec144e8f6 사령부 인덱스 버그 2018-04-18 21:58:01 +09:00
Hide_D 9458307612 사령부 표기 수정 2018-04-18 21:55:22 +09:00
Hide_D 915c5fcd8e npc 몰포 버그 수정 2018-04-18 21:51:44 +09:00
Hide_D 0df1293139 체결 메시지에도 년도 뜨도록 수정 2018-04-18 21:46:26 +09:00
Hide_D 9bcd18c42e 모,징병시 특성 병종이 2000 만 넘어도 뜨는 문제 해결 2018-04-18 21:42:09 +09:00
Hide_D 1c853107b7 불가침 제의 서신 수정 2018-04-18 21:38:56 +09:00
Hide_D 3f21e28ef7 유저에게 포상량이 확실히 더 많아짐 2018-04-18 21:24:00 +09:00
Hide_D 61244fcef9 추가한 커밋에서 불필요한 npc 코드 제거 2018-04-18 21:17:39 +09:00
Hide_D 03c930ce7d npc가 유저에게 포상, 몰수하는 기준을 더 후하게 잡음 2018-04-18 21:16:49 +09:00
Hide_D f57c4967f2 NPC 삼/팜 버그 마저 수정 2018-04-18 13:56:36 +09:00
Hide_D 49f40d56b0 회피 잘못 적용되는 버그 수정 2018-04-18 10:13:32 +09:00
Hide_D 190fcabbac NPC 삼팜 버그 2018-04-18 09:43:58 +09:00
Hide_D 8bccf449ad NPC 감찰부에서 장수 행동 2018-04-18 09:38:32 +09:00
Hide_D f7dc1a588b 능력치 받아올 때 general이 NULL인 경우도 대응 2018-04-18 09:24:10 +09:00
Hide_D 0eb91c6301 버튼들 '뒤로 가기' 가능하도록 직접 링크로 변경 2018-04-18 00:08:12 +09:00
Hide_D 0fa4d88ea9 lock 파일 경로 체크 2018-04-18 00:01:40 +09:00
Hide_D 18e355b701 bool 변수 받는 문제 해결. 전콘 안 고를 수 있도록 선택 2018-04-17 23:39:36 +09:00
Hide_D 1cb877503d 불가침 합의 시 년 표기가 이상한 문제 2018-04-17 23:30:48 +09:00
Hide_D b65e691255 벌점 안 쌓이는 버그 수정 2018-04-17 23:17:16 +09:00
Hide_D a4ee43f12b 세력도 아래 안보이는 것 해결 2018-04-17 23:04:37 +09:00
Hide_D f71c61a55b 특수 권한 유저 추가 2018-04-17 22:57:10 +09:00
Hide_D 418130f4cd bool 변환에서 false 조건 하나 더 추가 2018-04-17 22:44:39 +09:00
Hide_D 1566aa0243 국가색 새로 2018-04-17 22:15:11 +09:00
Hide_D ab546f66f0 국가간 갠메 2018-04-17 22:13:36 +09:00
Hide_D fc021dae54 등용장 살림 2018-04-17 22:03:23 +09:00
Hide_D 58a7b3afe1 등용장 잠시 살림 2018-04-17 22:03:08 +09:00
Hide_D 72f41df5d2 사령부 warning 2018-04-17 21:59:48 +09:00
Hide_D 8fd6b91cf7 아이템 습득시 warning 해결 2018-04-17 21:57:03 +09:00
Hide_D cf2ace32d1 로그아웃 버튼 삭제 2018-04-17 21:39:08 +09:00
Hide_D 05c4f721f2 메시지창 모바일에서 안보이는 것 해결 2018-04-17 21:37:59 +09:00
Hide_D b2096cc274 불가침 서신 개월수 안보이는 문제 해결, 개월수 년으로 보이는 문제 해결 2018-04-17 21:35:13 +09:00
Hide_D 067df49914 29번 능력치 변경 2018-04-17 20:59:16 +09:00
Hide_D 6961298e53 이미지 못 불러오는 문제 해결 2018-04-17 20:48:49 +09:00
Hide_D 3e6523002c 이벤트 메시지 변경 2018-04-17 20:43:18 +09:00
Hide_D c26add7b04 29번 시나리오 급조 2018-04-17 20:40:56 +09:00
Hide_D 12d50fec03 장수 등록 시 scenario 값과 show_img_level 값 2018-04-17 20:16:04 +09:00
Hide_D a43bbc9f23 proc.php 2018-04-17 20:09:35 +09:00
Hide_D 2bec3b253c proc readonly 2018-04-17 20:09:11 +09:00
Hide_D a69f256168 약관 추가 2018-04-17 20:08:15 +09:00
Hide_D d7fb88eed6 TimeZone 세팅 2018-04-17 19:23:05 +09:00
Hide_D bfd79f479e 파일 경로를 절대 경로로 변경 2018-04-17 19:21:30 +09:00
Hide_D 7ec3fcc78e 대문자 GAME 수정 2018-04-17 19:11:09 +09:00
Hide_DandGogs 858a09b429 Merge branch 'devel' of devsam/core into master 2018-04-17 04:33:14 +09:00
Hide_D da7fcafb27 사령부 NPC 색상 2018-04-17 03:45:57 +09:00
Hide_D 7f7d8b2099 명장일람 표기 오류 수정 2018-04-17 03:43:22 +09:00
Hide_D b5fb2e9cf4 중원 정보 분쟁 현황을 제대로 보여줌 2018-04-17 03:39:17 +09:00
Hide_D d9ffdf9df8 외교 서신 밀리는 버그 수정 2018-04-17 03:23:02 +09:00
Hide_D f919187b91 불가침 메시지 수정 2018-04-17 03:22:53 +09:00
Hide_D d5ead5b74f 재야일때 secretlimit 경고 뜨는거 해결 2018-04-17 03:11:00 +09:00
Hide_D ec1be2c887 합병 항복 안되는 버그 수정 2018-04-17 03:10:38 +09:00
Hide_D af0c470923 부대 가입 안되는 버그 수정 2018-04-17 03:10:25 +09:00
Hide_D 78ce7d20e3 거래장 에러로그 수정 2018-04-17 03:10:18 +09:00
Hide_D 932ce9bf51 도시 정보 배경 안보이는 ㅓㄱ수정 2018-04-17 03:06:55 +09:00
Hide_D 3d602b49bf 메시지 표기 프레임 변경 2018-04-17 02:14:58 +09:00
Hide_D 33b7d228f9 긴급 천도 버그 수정 2018-04-17 02:14:48 +09:00
Hide_D 95a8fd5495 토너먼트 표기 2018-04-17 02:14:38 +09:00
Hide_D 87bc416fc7 인사부 표기 버그 수정 2018-04-17 02:14:31 +09:00
Hide_D 8c21eec168 메시지 관련 버그 우회 2018-04-17 01:55:12 +09:00
Hide_D 7ef3f0d5c5 임시로 외교 서신 받는 기능 추가 2018-04-17 01:54:57 +09:00
Hide_D e90e508005 빙의 후 페이지 이동 2018-04-17 01:54:42 +09:00
Hide_D 816daed570 warning 방지 2018-04-17 01:54:03 +09:00
Hide_D 3626266763 시작 년도가 없는 경우 설정 2018-04-17 01:53:55 +09:00
Hide_D 6c117a628c 가운데에 버튼 세트 추가 2018-04-17 01:53:45 +09:00
Hide_D d3225dfb41 버그 수정 2018-04-17 01:53:32 +09:00
Hide_D bd7e7540d8 사령부 출력 오동작 수정 2018-04-17 01:53:23 +09:00
Hide_D 48088748df schema 버그 수정. DB에서 Exception 제대로 안 던지는 버그 해결 2018-04-17 00:18:38 +09:00
Hide_D 7a5eecc3e1 갠메를 보냈을 때 알림 표시 2018-04-17 00:03:40 +09:00
Hide_D 51d7dede55 nation table에서 외교 서신 보관용 column 삭제 2018-04-16 23:58:36 +09:00
Hide_D bcad77ec06 사령턴 외교 서신 재구현 2018-04-16 23:53:54 +09:00
Hide_D 9b79d12521 재야에서는 국메가 안보내지던 버그 수정
일반장이 국메를 보낼 수 없던 버그 수정
외교 서신 클래스 에러 수정
2018-04-16 23:29:17 +09:00
Hide_D 4b33461c70 _admin2의 query를 수정.
- 메시지 전송을 새로 만든 구현을 사용함.
- 테이블 두개 (MEMBER, SYSTEM)을 소문자로 변경
2018-04-16 22:31:54 +09:00
Hide_D bc3a8fefd8 최근 메시지만 전송 받도록 수정. 2018-04-16 08:18:40 +09:00
Hide_D db97400b43 기본 갠메, 국메, 전메 동작 2018-04-16 02:20:05 +09:00
Hide_D 3ad4032239 메시지 입력 버그 수정 중 2018-04-16 02:06:05 +09:00
Hide_D 1d0fb7151d lib.php의 글로벌 변수를 GameConst로 이동
- 계략의 게임 내 영단어를 trick에서 sabotage로 변경
2018-04-16 02:05:46 +09:00
Hide_D 0c9099c868 메시지 첫 동작 2018-04-16 01:09:43 +09:00
Hide_D c87cbaa0a6 등용장 생성시 버그 수정 2018-04-16 00:03:48 +09:00
Hide_D 5a94bf434a css style에서 단위(px)가 설정되지 않은 것들 수정 2018-04-15 23:57:22 +09:00
Hide_D d567f3218a 재야를 따로 다루던 코드 제거 2018-04-15 23:51:46 +09:00
Hide_D 5d97c4ebea mailbox 리스트에서 '재야'를 내부 코드로 처리 2018-04-15 23:48:39 +09:00
Hide_D c3be464774 메시지 시스템 외부로 연결중. 2018-04-15 23:42:59 +09:00
Hide_D 0d1e10a2ce 소소한 수정 switch 무서워라.. 2018-04-15 23:42:47 +09:00
Hide_D 723a7bbfba 장수 생성 시 오류 나던 문제 해결
- Validation 문제
2018-04-15 23:42:30 +09:00
Hide_D 6a100ed2c1 국가 정보 반환시 0인 경우에 한해 재야도 반환.
- 재야의 색을 #000000 으로 설정
2018-04-15 23:41:36 +09:00
Hide_D 5a6cd7fb46 서버에서 아이콘 주소를 바로 돌려주는 기능 추가 2018-04-15 23:39:41 +09:00
Hide_D 871c99a67a 외교 서신 메시지 파트 구현 완료
- 메시지 전송시 수신자에게만 전송 가능한 옵션 추가
- 메시지 추가 옵션으로 delete 옵션 제시.
2018-04-15 21:40:21 +09:00
Hide_D 7bdde2ac8a 외교 서신 상세 내용 추가
- 등용장의 로그 부분은 메시지로 뺌
2018-04-15 21:01:42 +09:00
Hide_D 3564282acb 라이선스 추가 2018-04-15 16:35:38 +09:00
Hide_D 13e24dbcb4 이미지 다운로드도 추가 2018-04-15 16:22:57 +09:00
Hide_D 0026e9cb15 이미지 다운로드도 추가 2018-04-15 16:22:45 +09:00
Hide_D 156795d7e9 readme 추가 2018-04-15 16:17:32 +09:00
Hide_D e41d73b5bd Diplomacy 생성자에서 두 국가르 받도록 변경
인접국 판단 로직을 두경우로 나눔
Diplomacy 클래스 구현중...
2018-04-15 04:07:59 +09:00
Hide_D 655cd1700c DiplomaticMessage 작성중
ScoutMessage 버그 개선
2018-04-15 02:41:00 +09:00
Hide_D 9fb455d38a 등용장 거절시 함수명 버그 수정 2018-04-14 23:46:02 +09:00
Hide_D 879a1e1c61 등용장 내부 로직 처리를 분리 2018-04-14 23:10:46 +09:00
Hide_D e614092690 MessageTarget의 부모 클래스 Target 추가 2018-04-14 22:12:40 +09:00
Hide_D 4ebe51d978 \DateTime 오타 수정 2018-04-14 15:44:47 +09:00
Hide_D 10a29e584f 상수 경고 추가 2018-04-14 15:40:08 +09:00
Hide_D a88982940b 등용장 구현을 위한 ScoutMessage 클래스 완성 2018-04-14 15:37:52 +09:00
Hide_D b92a95cc07 이미지 빠진부분 마저 반영 2018-04-14 03:51:43 +09:00
Hide_D bffca5e163 새 병종 이미지 적용
- 64px 이미지 태그들을 width="64px"가 아니라 width="64"로 변경
2018-04-14 03:27:36 +09:00
Hide_D b56919a343 팝업 차단에 막히는 문제 해결... 2018-04-14 02:52:03 +09:00
Hide_D b797bab7e0 누락된 getReq 추가. 버그 수정 2018-04-14 02:42:58 +09:00
Hide_D a03d2cee63 lib.php에서 강제로 $_POST 추출을 시행하던 부분을 세부 파일로 이동. 2018-04-14 00:28:24 +09:00
Hide_D 67fef4b73d 전콘 적용 버그 수정
갱신정보 제대로 안보이는 문제 수정
분쟁 정보 제대로 안보이는 문제 수정
2018-04-14 00:15:54 +09:00
Hide_D 253a953dfe SQL Injection 대응을 위해 파일 상단에 Util::getReq 사용 2018-04-14 00:15:25 +09:00
Hide_D be7154284e 등용장 수락 코드 작성중 2018-04-13 15:48:47 +09:00
Hide_D 02f90842fe TM 서버 밸런스 패치 이식 2018-04-13 03:41:39 +09:00
Hide_D 0b17a289c8 내정 수치를 tm과 일치 2018-04-13 02:42:10 +09:00
Hide_DandGogs c2298efaf0 Merge branch 'devel' of devsam/core into master 2018-04-13 02:27:07 +09:00
Hide_D e858ad0c33 깜빡한 문구 수정 2018-04-13 02:17:22 +09:00
Hide_D fb1acfa09c 명전 초기값이 없어서 등록할 수 없는 버그 수정 2018-04-13 02:16:15 +09:00
Hide_D 033466edcc 공백지 점령용 예비 코드에 '수도'가 지정되지 않은 문제 해결
천통 가능
2018-04-13 01:52:27 +09:00
Hide_D 3a472506cf 버그 수정... 2018-04-13 01:35:47 +09:00
Hide_D cea015bd4d 전특, 내특 검색을 위한 별도 클래스 제작 2018-04-13 01:01:32 +09:00
Hide_D 8aaf161fd0 세력도 안보이는 문제 해결 2018-04-13 00:54:02 +09:00
Hide_D 1529ab6469 분리한 긴천 함수 호출 버그 2018-04-13 00:38:37 +09:00
Hide_D 1a3b456f39 긴천 함수 분리.
멸망시 등용장이 동작하지 않으므로 일단 끔
2018-04-13 00:26:21 +09:00
Hide_D ac3672a87e 긴천 위치가 엉뚱하게 되는 버그 수정.
getGenSpecial을 마구잡이로 부르는 함수로 인하여 우회
2018-04-13 00:06:32 +09:00
Hide_D a866cb63a4 getConquerNation 버그 수정 2018-04-12 21:32:04 +09:00
Hide_D 943251c56f 에러 코드 출력 방식 변경 2018-04-12 21:31:45 +09:00
Hide_D 4d2b10b979 에러 표기 방식 변경.
- DB 에러도 throw exception을 수행
- exception handler 추가.
- error 발생시 콜 스택을 json 형태로 보관
2018-04-12 21:24:28 +09:00
Hide_D c87614ab2d 연감 지도가 json 기반으로 바뀌었으므로 j 붙임 2018-04-12 20:53:19 +09:00
Hide_D 67dee551b6 분쟁현황 표기 버그 일부 추가 수정 2018-04-12 05:22:20 +09:00
Hide_D 2ee20ce92c 분쟁 코드를 json기반으로 변경 2018-04-12 05:17:32 +09:00
Hide_D cd8ec0687f 성벽 공격시 '국가'를 구해오는 과정에서 공백지를 고려하지 않은 부분 수정 2018-04-12 04:16:02 +09:00
Hide_D 6881b531d7 post type 빠진 것 추가 2018-04-12 04:00:29 +09:00
Hide_D 2eae9b2062 긴천 시 도시 참조하는 부분에 Undefined offset 문제 발생하는 것 해결 2018-04-12 03:34:09 +09:00
Hide_D b055baa7d3 출병시 인접 도시 체크 룰을 DB가 아니라 CityConst에 기반하도록 변경 2018-04-12 03:26:32 +09:00
Hide_D fc0ad32335 사령부 출력 에러 우회. 2018-04-12 03:08:36 +09:00
Hide_D 42cd2fafdd Json에 PASS_THROUGH 옵션 추가 2018-04-12 02:59:44 +09:00
Hide_D 6220d030dc $_POST, $_GET 남은 부분 제거. 연감 지도 받아오는 부분 재 작성 2018-04-12 02:57:53 +09:00
Hide_D 8961dd60a2 $_POST btn 빼먹은거 추가 2018-04-12 02:47:28 +09:00
Hide_D 2726bc13c4 b_myGenInfo 관직 제대로 표기 안된 문제 해결 2018-04-12 02:42:40 +09:00
Hide_D 967c14a972 $sel 변수를 이용한 잘못된 selected 출력 문제를 우회 2018-04-12 02:37:05 +09:00
Hide_D 74d86b7897 POST에 type, btn, gen 빠진것 보정 2018-04-12 02:31:30 +09:00
Hide_D 5a176568e9 b_tournament 진행중에 그래프 그리는 문제 해결 2018-04-12 02:21:11 +09:00
Hide_D 279478c15b 등용장 발부시 국가명 빼먹은 것 수정 2018-04-12 02:18:35 +09:00
Hide_D f5f7c81c20 헌납에서 방랑군일때는 헌납이 가능하게 했던 흔적 수정 2018-04-12 02:11:55 +09:00
Hide_D 3c2499580c checkStatistic() 함수 index 빈 것 해결 2018-04-12 02:08:54 +09:00
Hide_D 45a104f9c0 padString에 문자열 너비가 원하는 길이보다 길때 버그 수정
명장 일람 데이터가 비었을 때 발생하는 버그 수정.
2018-04-12 01:48:16 +09:00
Hide_D a5b0c7f99f 배신한 장수는 유니크를 못먹게 하려는 코드의 흔적을 제거(동작하지 않았음) 2018-04-12 01:40:22 +09:00
Hide_D 643a2822a0 퇴각시 $oppose를 해제하여 마지막 페이즈 쌀 소모하는 문제 해결. 2018-04-12 01:27:29 +09:00
Hide_D be8e22309f _traffic.txt 제대로 작성 못하는 버그 수정.
쌀 소모량 못 받아오는 버그 수정.
getAtt, getDef에서 $game이 더이상 필요없으므로 삭제
2018-04-12 01:16:37 +09:00
Hide_D 8273c3f231 optionsForCities array_map 빼먹은거 수정 2018-04-11 20:57:12 +09:00
Hide_D e9ceb0bdd6 Citys 함수명 변경 2018-04-11 20:49:26 +09:00
Hide_D c204f36aa7 강행 실해하던 것 해결 2018-04-11 20:19:42 +09:00
Hide_D 869ee4b233 레벨이 300이 되면 전투엔진이 터지는 문제 수정 2018-04-11 19:54:25 +09:00
Hide_D f0c6243964 연감 장수 동향 안뜨는 문제도 해결 2018-04-11 03:16:50 +09:00
Hide_D b46a197a5c 연감 지도 엔진 변경 2018-04-11 03:09:49 +09:00
Hide_D d39c04da76 '유기체' 삭제 관리자 명(Hide_D)와 서버명 HiDCHe 로 변경. 2018-04-11 02:20:23 +09:00
Hide_D 22f1f3c227 페이지 리다이렉트 방식 변경
<script>location.replace</script>에서 PHP redirect header를 직접 이용하는 방식으로.
2018-04-11 02:14:03 +09:00
Hide_D 2b3efd0924 전투 수식에 TM서버 내용 반영 2018-04-11 01:50:29 +09:00
Hide_D 3004b20c87 버그 패치
- 메인 페이지에서 턴 실행으로 세션락이 걸리지 않도록.
- 토너먼트에서 매 라운드마다 텍스트가 초기화 되지 않던 문제 해결
- 전투 로그 표기에서  불필요한 빈칸 제거
2018-04-11 01:08:12 +09:00
Hide_D 5c8194b36d 로그 출력 거꾸로 된 것 보정 2018-04-10 22:44:12 +09:00
Hide_D e487846c56 전투 로그 바꾼것 제대로 안나오는 것을 수정 2018-04-10 22:44:00 +09:00
Hide_D 0437d45997 벌점 기준을 현실화 2018-04-10 22:43:45 +09:00
Hide_D 8dd5154de3 searchDistance에서 거리 계산 종료 조건 버그 수정 2018-04-10 21:32:27 +09:00
Hide_D bc519284fb 도시 병종 체크 버그 수정 2018-04-10 21:28:10 +09:00
Hide_D 19e06cc12e 메인 페이지 새 버튼 추가 준비 2018-04-10 21:21:58 +09:00
Hide_D 16e5601651 checkLimit 함수에 입력값이 없어도 자동으로 수행하도록 변경 2018-04-10 21:20:57 +09:00
Hide_D 8f9077dff8 명장 일람 아이템 표기 버그 수정, 사령부 턴 정상 리다이렉트, 개인 기록 역순 표기 문제 해결 2018-04-10 21:20:35 +09:00
Hide_D 9831685bb9 병종 가격 계산 버그, 접경 계산 버그, 긴급 천도 버그 수정 2018-04-10 21:11:56 +09:00
Hide_D 1412834b60 턴 갱신, 당기기, 밀기 코드 재 작성 2018-04-10 21:11:12 +09:00
Hide_D b8636763c1 Message::send 반환값 정리 2018-04-10 02:53:35 +09:00
Hide_D fe4823bb8d sendToSender() 반환값 2018-04-10 02:52:18 +09:00
Hide_D 7ef9a2fdca msg send 반환 방식 변경 2018-04-10 02:51:13 +09:00
Hide_D 9f627ca2f8 함수 이름 변경 2018-04-10 02:46:01 +09:00
Hide_D 2404ab2047 메시지 클래스 새로 작성 2018-04-10 02:38:36 +09:00
Hide_D 50d1c4cd34 dateFormat에 포맷 추가. error 페이지 표기 수정 2018-04-09 03:21:11 +09:00
Hide_D 269a40ca9d stylesheet 잘못 불러오는 문제 해결.
jquery.redirect 추가.
global 변수 extract 우회가 제대로 동작하지 않던 문제 해결
2018-04-09 02:56:45 +09:00
Hide_D 2a814dbbf9 하드리셋 시 UniqueConst가 없어져 세션에서 generalID, generalName을 확인할 수 없는 문제 수정 2018-04-09 01:56:12 +09:00
977 changed files with 116120 additions and 20217 deletions
+9 -7
View File
@@ -1,11 +1,4 @@
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
# 체섭 ignore
*.log
@@ -15,6 +8,8 @@ d_log/*.txt
d_log/*.zip
sess_*
*/logs/*.txt
*/logs/*/*.txt
*/logs/preserved
err.txt
che/.htaccess
kwe/.htaccess
@@ -27,9 +22,11 @@ d_shared
d_pic/*.jpg
d_pic/*.gif
d_pic/*.png
d_pic/uploaded_image
d_setting/*.php
*/d_setting/*.php
*/d_setting/templates/*.php
**/old/*
test.php
@@ -37,6 +34,11 @@ test.php
/che
/kwe
/pwe
/nya
/pya
/twe
phpinfo.php
vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/*
*.sqlite3
+1 -1
View File
@@ -32,7 +32,7 @@ return [
'hwe/func_npc.php',
'hwe/func_process_chief.php',
'hwe/func_process_personnel.php',
'hwe/func_process_trick.php',
'hwe/func_process_sabotage.php',
'hwe/func_process.php',
'hwe/func_string.php',
'hwe/func_template.php',
+5 -1
View File
@@ -5,11 +5,13 @@
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/logs/*.txt": true,
"**/logs/**/*.txt": true,
"**/session/sess*":true,
"/che":true,
"/kwe":true,
"/pwe":true,
"/nya":true,
"/pya":true,
"/twe":true,
},
@@ -19,6 +21,8 @@
"/che":true,
"/kwe":true,
"/pwe":true,
"/nya":true,
"/pya":true,
"/twe":true,
},
}
+21
View File
@@ -0,0 +1,21 @@
The MIT License
Copyright (c) 2020 Hide_D, 62che
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
+67
View File
@@ -0,0 +1,67 @@
# 삼국지 모의전투 HiDCHe
삼국지 모의전투 유기체서버를 기반으로 더욱 더 진화한 서버입니다.
## 요구사항
* Apache2
* <code>mpm_event</code> 권장
* PHP 7.2 이상
* <code>php-fpm</code> 권장
* php에서 curl, pdo-sqlite을 실행가능해야 합니다. (기본값: 지원)
* mysqlnd가 지원되어야합니다. (기본값: 지원)
* mysqli
* gd
* MariaDB 10.2.1 이상
* 현재 MySQL은 지원하지 않습니다.
* <code>git</code>
* <code>curl</code>
Linux는 Ubuntu 16.04, 18.04, Windows는 Windows 10에서 XAMPP를 사용한 환경에서 테스트되었습니다.
## Docker를 이용한 설치
https://storage.hided.net/gogs/devsam/docker 를 참고해 주세요.
## 수동 설치
본 게임은 <code>git</code>을 이용한 업그레이드 시스템을 구현하였으므로, <code>git</code>이 필요합니다.
또한 웹 서비스 데몬을 운영중인 사용자(일반적으로 <code>www-data</code>, <code>apache</code>)에게 디렉토리 권한이 주어져야합니다.
### 다운로드
웹 데몬 user가 <code>www-data</code>인 경우 다음과 같이 입력하여 최신 배포버전과 이미지 파일을 얻을 수 있습니다.
```
sudo -u www-data git clone https://storage.hided.net/gogs/devsam/core.git
sudo -u www-data git clone https://storage.hided.net/gogs/devsam/image.git
```
> 이미지는 hook/git_hook.php을 통해 동기화되며, 서버 설치 과정에 이미지 갱신 키를 지정하는 것으로 '훼' 서버 업데이트 시 동기화됩니다. 이미지 서버가 게임 서버와 별개여도 동작하나, php와 git을 지원해야합니다.
### 설치
이후 해당 경로를 웹 브라우저를 통해 접근하여 설치를 진행할 수 있습니다.
Database 수는 로그인 관리 서버 1개, 내부 서버 7개로, 총 8개의 Database가 필요합니다. 내부 설정을 고쳐서 서버 수를 늘리거나 줄일 경우 그에 맞는 Database 수가 필요합니다. 또한 Database마다 관리할 별도의 계정을 만드는 것을 추천합니다.
설치 이후에는 서버관리 페이지에서 **업데이트** 명령을 통해 원 클릭 업데이트가 가능합니다.
## 카카오로그인 연동
서버 설치 시 카카오 로그인 연동을 위한 API KEY를 입력받습니다.
만약 설치 이후 API KEY를 변경하고자 하는 경우 <code>d_setting/KakaoKey.php</code>에서 API키를 변경해야 합니다.
## 라이선스
본 게임을 수정하거나 재배포할 경우 다음 중 하나의 라이선스를 선택하여 적용할 수 있습니다.
* MIT License
* GPL 2.0 또는 이후
만약 별도의 라이선스를 적용하고자 할 경우 Hide_D에게 문의하여 주십시오.
+6 -2
View File
@@ -1,6 +1,6 @@
{
"name":"sammo-hid/sammo",
"description":"삼국지 모의전투 HiD",
"description":"삼국지 모의전투 HiDCHe",
"license": [
"MIT",
"GPL-2.0-or-later",
@@ -16,7 +16,11 @@
"firephp/firephp-core": "^0.4.0",
"vlucas/valitron": "^1.4",
"php-extended/php-tail": "^2.1",
"pguardiario/phpuri": "^1.0"
"pguardiario/phpuri": "^1.0",
"symfony/lock": "^4.1",
"ezyang/htmlpurifier": "^4.10",
"xemlock/htmlpurifier-html5": "^0.1.7",
"catfan/medoo": "^1.5"
},
"autoload": {
"psr-4": {
Generated
+249 -39
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "1753c2c2ad9fe40ecc5c6ae541dd2e78",
"content-hash": "3fceaf3c2925068c7e757ab12036e29e",
"packages": [
{
"name": "brandonwamboldt/utilphp",
@@ -52,6 +52,112 @@
],
"time": "2015-02-02T17:56:14+00:00"
},
{
"name": "catfan/medoo",
"version": "v1.5.7",
"source": {
"type": "git",
"url": "https://github.com/catfan/Medoo.git",
"reference": "8d90cba0e8ff176028847527d0ea76fe41a06ecf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/catfan/Medoo/zipball/8d90cba0e8ff176028847527d0ea76fe41a06ecf",
"reference": "8d90cba0e8ff176028847527d0ea76fe41a06ecf",
"shasum": ""
},
"require": {
"ext-pdo": "*",
"php": ">=5.4"
},
"suggest": {
"ext-pdo_dblib": "For MSSQL or Sybase database on Linux/UNIX platform",
"ext-pdo_mysql": "For MySQL or MariaDB database",
"ext-pdo_oci": "For Oracle database",
"ext-pdo_oci8": "For Oracle version 8 database",
"ext-pdo_pqsql": "For PostgreSQL database",
"ext-pdo_sqlite": "For SQLite database",
"ext-pdo_sqlsrv": "For MSSQL database"
},
"type": "framework",
"autoload": {
"psr-4": {
"Medoo\\": "/src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Angel Lai",
"email": "angel@catfan.me"
}
],
"description": "The lightest PHP database framework to accelerate development",
"homepage": "https://medoo.in",
"keywords": [
"database",
"lightweight",
"mariadb",
"mssql",
"mysql",
"oracle",
"php framework",
"postgresql",
"sql",
"sqlite"
],
"time": "2018-06-14T18:59:08+00:00"
},
{
"name": "ezyang/htmlpurifier",
"version": "v4.10.0",
"source": {
"type": "git",
"url": "https://github.com/ezyang/htmlpurifier.git",
"reference": "d85d39da4576a6934b72480be6978fb10c860021"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d85d39da4576a6934b72480be6978fb10c860021",
"reference": "d85d39da4576a6934b72480be6978fb10c860021",
"shasum": ""
},
"require": {
"php": ">=5.2"
},
"require-dev": {
"simpletest/simpletest": "^1.1"
},
"type": "library",
"autoload": {
"psr-0": {
"HTMLPurifier": "library/"
},
"files": [
"library/HTMLPurifier.composer.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL"
],
"authors": [
{
"name": "Edward Z. Yang",
"email": "admin@htmlpurifier.org",
"homepage": "http://ezyang.com"
}
],
"description": "Standards compliant HTML filter written in PHP",
"homepage": "http://htmlpurifier.org/",
"keywords": [
"html"
],
"time": "2018-02-23T01:58:20+00:00"
},
{
"name": "firephp/firephp-core",
"version": "v0.4.0",
@@ -90,16 +196,16 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "6.3.2",
"version": "6.3.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90"
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/68d0ea14d5a3f42a20e87632a5f84931e2709c90",
"reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"shasum": ""
},
"require": {
@@ -109,7 +215,7 @@
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
"psr/log": "^1.0"
},
"suggest": {
@@ -151,7 +257,7 @@
"rest",
"web service"
],
"time": "2018-03-26T16:33:04+00:00"
"time": "2018-04-22T15:46:56+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -271,16 +377,16 @@
},
{
"name": "leafo/scssphp",
"version": "v0.7.5",
"version": "v0.7.7",
"source": {
"type": "git",
"url": "https://github.com/leafo/scssphp.git",
"reference": "8b538d828bbb75276974605c4a1a435e939da74e"
"reference": "1d656f8c02a3a69404bba6b28ec4e06edddf0f49"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/leafo/scssphp/zipball/8b538d828bbb75276974605c4a1a435e939da74e",
"reference": "8b538d828bbb75276974605c4a1a435e939da74e",
"url": "https://api.github.com/repos/leafo/scssphp/zipball/1d656f8c02a3a69404bba6b28ec4e06edddf0f49",
"reference": "1d656f8c02a3a69404bba6b28ec4e06edddf0f49",
"shasum": ""
},
"require": {
@@ -319,7 +425,7 @@
"scss",
"stylesheet"
],
"time": "2018-02-09T02:04:21+00:00"
"time": "2018-07-22T01:22:08+00:00"
},
{
"name": "league/plates",
@@ -480,16 +586,16 @@
},
{
"name": "php-extended/php-system",
"version": "1.3.0",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/php-extended/php-system.git",
"reference": "66727d5dc0a665916bd7e08bcfb9820e7be1d20c"
"url": "https://gitlab.com/php-extended/php-system.git",
"reference": "9e6b3c2009ef56dc123efc43900e40cdf217ace0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-extended/php-system/zipball/66727d5dc0a665916bd7e08bcfb9820e7be1d20c",
"reference": "66727d5dc0a665916bd7e08bcfb9820e7be1d20c",
"url": "https://gitlab.com/api/v4/projects/php-extended%2Fphp-system/repository/archive.zip?sha=9e6b3c2009ef56dc123efc43900e40cdf217ace0",
"reference": "9e6b3c2009ef56dc123efc43900e40cdf217ace0",
"shasum": ""
},
"type": "library",
@@ -505,31 +611,31 @@
"authors": [
{
"name": "Anastaszor",
"role": "developer"
"role": "Developer"
}
],
"description": "A generic way to find informations about the running system",
"homepage": "https://github.com/php-extended/php-system",
"homepage": "https://gitlab.com/php-extended/php-system",
"keywords": [
"operating system",
"os",
"php",
"system"
],
"time": "2017-01-14T11:56:24+00:00"
"time": "2018-06-07T06:03:27+00:00"
},
{
"name": "php-extended/php-tail",
"version": "2.1.1",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/php-extended/php-tail.git",
"reference": "eabf7bee64f8c30fe9b9e1176562fdb903c54ae7"
"url": "https://gitlab.com/php-extended/php-tail.git",
"reference": "19fbd3a79ccc071954f28296b2c44754335304a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-extended/php-tail/zipball/eabf7bee64f8c30fe9b9e1176562fdb903c54ae7",
"reference": "eabf7bee64f8c30fe9b9e1176562fdb903c54ae7",
"url": "https://gitlab.com/api/v4/projects/php-extended%2Fphp-tail/repository/archive.zip?sha=19fbd3a79ccc071954f28296b2c44754335304a0",
"reference": "19fbd3a79ccc071954f28296b2c44754335304a0",
"shasum": ""
},
"require": {
@@ -548,11 +654,11 @@
"authors": [
{
"name": "Anastaszor",
"role": "developer"
"role": "Developer"
}
],
"description": "A smart way to tail files depending of the environment",
"homepage": "https://github.com/php-extended/php-tail",
"homepage": "https://gitlab.com/php-extended/php-tail",
"keywords": [
"cheat",
"mighty",
@@ -560,7 +666,7 @@
"php",
"tail"
],
"time": "2017-07-25T13:52:42+00:00"
"time": "2018-06-07T06:04:58+00:00"
},
{
"name": "psr/http-message",
@@ -703,34 +809,98 @@
"time": "2014-06-16T22:40:22+00:00"
},
{
"name": "vlucas/valitron",
"version": "v1.4.2",
"name": "symfony/lock",
"version": "v4.1.1",
"source": {
"type": "git",
"url": "https://github.com/vlucas/valitron.git",
"reference": "87775d76268beda2afa085bdd6e44b17e98907c6"
"url": "https://github.com/symfony/lock.git",
"reference": "d508b5dd92272cb74300396ecaadde969d0f7976"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vlucas/valitron/zipball/87775d76268beda2afa085bdd6e44b17e98907c6",
"reference": "87775d76268beda2afa085bdd6e44b17e98907c6",
"url": "https://api.github.com/repos/symfony/lock/zipball/d508b5dd92272cb74300396ecaadde969d0f7976",
"reference": "d508b5dd92272cb74300396ecaadde969d0f7976",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"psr/log": "~1.0"
},
"require-dev": {
"predis/predis": "~1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.1-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Lock\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
},
{
"name": "Jérémy Derussé",
"email": "jeremy@derusse.com"
}
],
"description": "Symfony Lock Component",
"homepage": "https://symfony.com",
"keywords": [
"cas",
"flock",
"locking",
"mutex",
"redlock",
"semaphore"
],
"time": "2018-06-21T11:15:46+00:00"
},
{
"name": "vlucas/valitron",
"version": "v1.4.3",
"source": {
"type": "git",
"url": "https://github.com/vlucas/valitron.git",
"reference": "3c5463315bfa23b17f8949b100a960d035234e43"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vlucas/valitron/zipball/3c5463315bfa23b17f8949b100a960d035234e43",
"reference": "3c5463315bfa23b17f8949b100a960d035234e43",
"shasum": ""
},
"require": {
"php": ">=5.3.2"
},
"require-dev": {
"phpunit/phpunit": "~4.0"
"phpunit/phpunit": "^4.8.35 || ^5.5 || ^6.5"
},
"suggest": {
"ext-mbstring": "It can support the multiple bytes string length."
},
"type": "library",
"autoload": {
"psr-0": {
"Valitron": "src/"
"psr-4": {
"Valitron\\": "src/Valitron"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD"
"BSD-3-Clause"
],
"authors": [
{
@@ -746,7 +916,47 @@
"validation",
"validator"
],
"time": "2017-10-30T23:15:06+00:00"
"time": "2018-05-06T10:45:26+00:00"
},
{
"name": "xemlock/htmlpurifier-html5",
"version": "v0.1.7",
"source": {
"type": "git",
"url": "https://github.com/xemlock/htmlpurifier-html5.git",
"reference": "b4b35e51ec75e0207c23035f7d9a354bdcdac359"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/xemlock/htmlpurifier-html5/zipball/b4b35e51ec75e0207c23035f7d9a354bdcdac359",
"reference": "b4b35e51ec75e0207c23035f7d9a354bdcdac359",
"shasum": ""
},
"require": {
"ezyang/htmlpurifier": "^4.7",
"php": ">=5.2"
},
"require-dev": {
"phpunit/phpunit": "4.7.*|5.7.*"
},
"type": "library",
"autoload": {
"classmap": [
"library/HTMLPurifier/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "xemlock",
"email": "xemlock@gmail.com"
}
],
"description": "HTML Purifier definitions for HTML5 elements",
"time": "2018-06-07T14:30:17+00:00"
}
],
"packages-dev": [],
BIN
View File
Binary file not shown.
+112 -39
View File
@@ -1,14 +1,16 @@
@charset "utf-8";
* { margin: 0px; padding: 0px; }
body { color:white; background-color:black; border-width:1; border-color:gray; }
table {
body {
color:white; background-color:black; font-family: '맑은 고딕';
}
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;
padding: 0px;
font-size: 13px;
word-break: break-all;
text-align: center;
font-family: '맑은 고딕'; line-height: 110%;
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;
@@ -16,21 +18,15 @@ th, td {
font-size: 13px;
word-break: break-all;
text-align: center;
font-family: '맑은 고딕'; line-height: 110%;
font-family: '맑은 고딕';
}
a.just_link {
text-decoration: none;
}
div {
margin:0px;
padding: 0px;
word-break: break-all;
font-family: '맑은 고딕';
}
.with_border{
margin:0;
border: solid 1px;
border-spacing: 0px;
border-collapse: separate;
@@ -45,6 +41,8 @@ div {
line-height:50px;
font-size: 30px; font-weight: bold;
text-align: center;
color:white;
padding:0;
}
.legacy_layout div {
@@ -53,20 +51,9 @@ div {
font-size: 13px;
word-break: break-all;
text-align: center;
font-family: '맑은 고딕'; line-height: 110%;
font-family: '맑은 고딕';;
}
font { font-family: '맑은 고딕'; line-height: 110%; }
/*
input {
width: 100px; height: 18px;
background-color: black; color: white;
font-family: '맑은 고딕';
font-size: 13px;
line-height: 110%;
}
*/
.obj_fill{
display:block;
width:100%;
@@ -74,31 +61,24 @@ input {
}
button.with_skin {
padding:0 4px;
background-color: black; color: white;
font-family: '맑은 고딕';
font-size: 13px;
line-height: 110%;
}
button.with_skin:disabled {
background-color:#333333;
}
input.with_skin {
background-color: black; color: white;
font-family: '맑은 고딕';
font-size: 13px;
line-height: 110%;
}
select {
width: 100px; height: 18px;
background-color: black; color: white;
font-family: '맑은 고딕';
font-size: 13px;
line-height: 110%;
}
button {
width: 100px; height: 20px;
background-color: black; color: white;
font-family: '맑은 고딕';
font-size: 13px;
input.with_skin:disabled {
background-color: #333333;
}
.font0 { font-size: 10px; }
@@ -106,4 +86,97 @@ button {
.font2 { font-size: 15px; }
.font3 { font-size: 20px; }
.font4 { font-size: 30px; }
.font5 { font-size: 50px; }
.font5 { font-size: 50px; }
caption.section_title {
caption-side:top;
}
.samButton{
float:left;
display:block;
padding:0;
margin:0;
text-decoration: none;
position:relative;
}
a.samButton.disabled {
pointer-events: none;
cursor: default;
}
.samButtonOuter{
display: table;
border: outset 2px white;
box-sizing: border-box;
font-weight:bold;
padding: 1px 6px;
width:125px;
height:30px;
background-color:#000000;
color:#ffffff;
}
.samButtonOuter:active{
border: inset 2px white;
}
.samButtonInner{
display: table-cell;
vertical-align: middle;
width: 100%;
margin: 0 auto;
text-align: center;
user-select: none;
}
.samToolbarButton > .samButtonOuter{
width:125px;
height:30px;
background-color:#225500;
color:white;
}
.samToolbarButton2 > .samButtonOuter{
width:125px;
height:30px;
background-color:#225500;
color:magenta;
}
.samCommandButton > .samButtonOuter{
width:111px;
height:30px;
}
.samCommandButton.disabled > .samButtonOuter{
background-color:transparent !important;
color:gray !important;
border-color:transparent !important;
}
.samCommandButton.disabled > .samButtonOuter > .samButtonInner::before{
content:'【'
}
.samCommandButton.disabled > .samButtonOuter > .samButtonInner::after{
content:'】'
}
.tooltip_copyable_info .tooltiptext{
display: inline;
color: rgba(0,0,0,0);
font-size: 0;
}
.tooltiptext {
display: none;
}
.hidden_but_copyable{
color: rgba(0,0,0,0);
font-size: 0;
}
+13 -93
View File
@@ -1,5 +1,9 @@
@charset "utf-8";
body{
line-height: 1.3;
}
#server_notice {
margin:10px 0;
border: none;
@@ -55,77 +59,6 @@
text-align:center;
}
/*Legacy*/
#Entrance_00 {
width: 800px;
position: absolute; top: 50px; left: 50%;
margin-left: -400px;
border: none;
}
#Entrance_0004 {
width: 52px; height: 52px;
position: absolute; top: 0px; left: -62px;
border: 1px solid white;
}
#Entrance_0005 {
width: 160px; height: 600px;
position: absolute; top: 62px; left: -170px;
}
#Entrance_0006 {
width: 160px; height: 600px;
position: absolute; top: 62px; left: 810px;
}
#Entrance_0000 {
width: 800px; height: 134px;
position: absolute; top: 0px; left: 0px;
}
#Entrance_000000 {
width: 798px; height: 50px;
position: absolute; top: 0px; left: 0px;
font-size: 30px; font-weight: bold;
}
#Entrance_000001 {
width: 798px; height: 20px;
position: absolute; top: 52px; left: 0px;
border: none;
}
#Entrance_00000000 {
width: 98px; height: 20px;
position: absolute; top: 0px; left: 0px;
}
#Entrance_00000001 {
width: 398px; height: 20px;
position: absolute; top: 0px; left: 100px;
}
#Entrance_00000002 {
width: 178px; height: 20px;
position: absolute; top: 0px; left: 500px;
}
#Entrance_00000003 {
width: 118px; height: 20px;
position: absolute; top: 0px; left: 680px;
}
#Entrance_000002 {
width: 798px; height: 64px;
position: absolute; top: 74px; left: 0px;
border: none;
}
.Entrance_ServerList {
width: 800px; height: 64px;
border: none;
@@ -195,27 +128,14 @@
color: magenta; font-size: 15px; font-weight: bold;
}
.Entrance_Nya {
color: #e67e22; font-size: 15px; font-weight: bold;
}
.Entrance_Pya {
color: #9b59b6; font-size: 15px; font-weight: bold;
}
.Entrance_Hwe {
color: red; font-size: 15px; font-weight: bold;
}
#Entrance_0001 {
width: 800px; height: 130px;
position: absolute; top: 154px; left: 0px;
}
#Entrance_000100 {
width: 798px; height: 50px;
position: absolute; top: 0px; left: 0px;
font-size: 30px; font-weight: bold;
}
#Entrance_000101 {
width: 200px; height: 50px;
position: absolute; top: 65px; left: 150px;
}
#Entrance_000102 {
width: 200px; height: 50px;
position: absolute; top: 65px; left: 450px;
}
}
+59 -3
View File
@@ -52,8 +52,8 @@ input::-webkit-input-placeholder {
}
.login-button{
margin-top: 5px;
.login_btn_group{
margin-top: 5px;
}
.login-register{
@@ -62,8 +62,21 @@ input::-webkit-input-placeholder {
}
.col-form-label{
text-align:center;
}
.terms{
max-height: 200px; overflow: auto;
max-height: 200px; overflow-y: auto;
}
.terms pre{
width:100%;
white-space: pre-wrap; /* Since CSS 2.1 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
.vertical-center {
@@ -72,4 +85,47 @@ input::-webkit-input-placeholder {
display: flex;
align-items: center;
}
.full-content {
position:fixed;
left:0;
top:0;
width:100%;
height:100%;
margin:0;
padding:0;
z-index:800;
}
#login_card{
z-index:801;
}
#btn_kakao_login{
cursor: pointer;
height:46px;
width:116px;
background-color: transparent;
color:transparent;
border:0;
background-size: 100%; /* To fill the dimensions of container (button), or */
background-repeat: no-repeat;
background-position: bottom center;
margin-top:5px;
background-image:url('../oauth_kakao/kakao_login_join.png');
}
#btn_kakao_login:hover {
background-image:url('../oauth_kakao/kakao_login_join_ov.png');
}
#bottom_box{
position:fixed;
bottom:0;
width:100%;
left:0;
}
#bottom_box .container{
text-align:center;
}
+1
View File
File diff suppressed because one or more lines are too long
+1
View File
File diff suppressed because one or more lines are too long
+12 -174
View File
@@ -1,7 +1,7 @@
@charset "utf-8";
#user_info_container{
width:500px;
width:550px;
position:absolute;
left:50%;
margin-left:-250px;
@@ -21,6 +21,7 @@
right: 6px;
margin:6px;
height:40px;
line-height:40px;
}
#btn_delete_me{
@@ -37,15 +38,15 @@
#image_upload_filename{
position:absolute;
height:16px;
height:20px;
left:10px;
width:130px;
top:16px;
top:12px;
}
#image_upload_fake_btn{
top:16px;
height:20px;
top:12px;
height:22px;
right:10px;
position:absolute;
}
@@ -53,8 +54,7 @@
#image_upload{
opacity: 0;
position:absolute;
top:16px;
height:22px;
top:12px;
left:0;
height:20px;
width:100%;
@@ -70,7 +70,6 @@
bottom:0;
left:0;
width:50%;
height:20px;
}
#btn_remove_icon{
@@ -78,171 +77,10 @@
bottom:0;
right:0;
width:50%;
height:20px;
}
#EntranceManage_00 {
width: 500px; height: 409px;
z-index: 2;
}
#EntranceManage_0000 {
width: 498px; height: 50px;
}
#EntranceManage_0001 {
width: 100px; height: 30px;
}
#EntranceManage_0002 {
width: 498px; height: 25px;
}
#EntranceManage_0003 {
width: 98px; height: 84px;
line-height: 84px;
}
#EntranceManage_0004 {
width: 148px; height: 84px;
line-height: 84px;
}
#EntranceManage_0005 {
width: 98px; height: 84px;
line-height: 84px;
}
#EntranceManage_0006 {
width: 148px; height: 84px;
text-align: left;
}
#EntranceManage_000600 {
width: 80px; height: 17px;
}
#EntranceManage_000601 {
width: 80px; height: 17px;
}
#EntranceManage_000602 {
width: 80px; height: 17px;
}
#EntranceManage_000603 {
width: 144px; height: 20px;
}
#EntranceManage_0007 {
width: 98px; height: 64px;
line-height: 64px;
}
#EntranceManage_0008 {
width: 148px; height: 64px;
line-height: 64px;
}
#EntranceManage_0009 {
width: 98px; height: 64px;
line-height: 64px;
}
#EntranceManage_0010 {
width: 148px; height: 64px;
line-height: 64px;
}
#EntranceManage_0011 {
width: 98px; height: 20px;
}
#EntranceManage_0012 {
width: 148px; height: 20px;
}
#EntranceManage_0013 {
width: 248px; height: 20px;
}
#EntranceManage_0014 {
width: 98px; height: 64px;
line-height: 64px;
}
#EntranceManage_0015 {
width: 148px; height: 64px;
}
#EntranceManage_001500 {
width: 64px; height: 64px;
}
#EntranceManage_001501 {
width: 64px; height: 64px;
}
#EntranceManage_0016 {
width: 248px; height: 64px;
}
#EntranceManage_001600 {
width: 100px; height: 16px;
display: none;
}
#EntranceManage_001601 {
width: 70px; height: 20px;
}
#EntranceManage_001602 {
width: 85px; height: 20px;
}
#EntranceManage_001603 {
width: 85px; height: 20px;
}
#EntranceManage_0017 {
width: 98px; height: 100px;
line-height: 100px;
}
#EntranceManage_0018 {
width: 398px; height: 100px;
text-align: left;
}
#EntranceManage_0019 {
width: 149px; height: 20px;
}
#EntranceManage_0020 {
width: 500px; height: 20px;
border: none;
}
#EntranceManage_002000 {
width: 500px;
}
#EntranceManage_00200000 {
width: 498px; height: 20px;
}
.EntranceManage_Sequence {
width: 48px; height: 20px;
}
.EntranceManage_Date {
width: 148px; height: 20px;
}
.EntranceManage_Amount {
width: 148px; height: 20px;
}
.EntranceManage_Cumul {
width: 148px; height: 20px;
}
#third_use_disallow{
display:none;
margin-left:10px;
width:40px;
}
+2 -2
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3 -3
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+132
View File
@@ -0,0 +1,132 @@
//download.js v3.0, by dandavis; 2008-2014. [CCBY2] see http://danml.com/download.html for tests/usage
// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime
// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs
// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support
// data can be a string, Blob, File, or dataURL
function download(data, strFileName, strMimeType) {
var self = window, // this script is only for browsers anyway...
u = "application/octet-stream", // this default mime also triggers iframe downloads
m = strMimeType || u,
x = data,
D = document,
a = D.createElement("a"),
z = function(a){return String(a);},
B = self.Blob || self.MozBlob || self.WebKitBlob || z,
BB = self.MSBlobBuilder || self.WebKitBlobBuilder || self.BlobBuilder,
fn = strFileName || "download",
blob,
b,
ua,
fr;
//if(typeof B.bind === 'function' ){ B=B.bind(self); }
if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
x=[x, m];
m=x[0];
x=x[1];
}
//go ahead and download dataURLs right away
if(String(x).match(/^data\:[\w+\-]+\/[\w+\-]+[,;]/)){
return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:
navigator.msSaveBlob(d2b(x), fn) :
saver(x) ; // everyone else can save dataURLs un-processed
}//end if dataURL passed?
try{
blob = x instanceof B ?
x :
new B([x], {type: m}) ;
}catch(y){
if(BB){
b = new BB();
b.append([x]);
blob = b.getBlob(m); // the blob
}
}
function d2b(u) {
var p= u.split(/[:;,]/),
t= p[1],
dec= p[2] == "base64" ? atob : decodeURIComponent,
bin= dec(p.pop()),
mx= bin.length,
i= 0,
uia= new Uint8Array(mx);
for(i;i<mx;++i) uia[i]= bin.charCodeAt(i);
return new B([uia], {type: t});
}
function saver(url, winMode){
if ('download' in a) { //html5 A[download]
a.href = url;
a.setAttribute("download", fn);
a.innerHTML = "downloading...";
D.body.appendChild(a);
setTimeout(function() {
a.click();
D.body.removeChild(a);
if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(a.href);}, 250 );}
}, 66);
return true;
}
//do iframe dataURL download (old ch+FF):
var f = D.createElement("iframe");
D.body.appendChild(f);
if(!winMode){ // force a mime that will download:
url="data:"+url.replace(/^data:([\w\/\-\+]+)/, u);
}
f.src = url;
setTimeout(function(){ D.body.removeChild(f); }, 333);
}//end saver
if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)
return navigator.msSaveBlob(blob, fn);
}
if(self.URL){ // simple fast and modern way using Blob and URL:
saver(self.URL.createObjectURL(blob), true);
}else{
// handle non-Blob()+non-URL browsers:
if(typeof blob === "string" || blob.constructor===z ){
try{
return saver( "data:" + m + ";base64," + self.btoa(blob) );
}catch(y){
return saver( "data:" + m + "," + encodeURIComponent(blob) );
}
}
// Blob but not URL:
fr=new FileReader();
fr.onload=function(e){
saver(this.result);
};
fr.readAsDataURL(blob);
}
return true;
} /* end download() */
Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

-4
View File
File diff suppressed because one or more lines are too long
+2
View File
File diff suppressed because one or more lines are too long
+7
View File
File diff suppressed because one or more lines are too long
+13
View File
File diff suppressed because one or more lines are too long
+152
View File
@@ -0,0 +1,152 @@
/*
jQuery Redirect v1.1.1
Copyright (c) 2013-2017 Miguel Galante
Copyright (c) 2011-2013 Nemanja Avramovic, www.avramovic.info
Licensed under CC BY-SA 4.0 License: http://creativecommons.org/licenses/by-sa/4.0/
This means everyone is allowed to:
Share - copy and redistribute the material in any medium or format
Adapt - remix, transform, and build upon the material for any purpose, even commercially.
Under following conditions:
Attribution - You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
ShareAlike - If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
*/
(function ($) {
'use strict';
/**
* jQuery Redirect
* @param {string} url - Url of the redirection
* @param {Object} values - (optional) An object with the data to send. If not present will look for values as QueryString in the target url.
* @param {string} method - (optional) The HTTP verb can be GET or POST (defaults to POST)
* @param {string} target - (optional) The target of the form. "_blank" will open the url in a new window.
* @param {boolean} traditional - (optional) This provides the same function as jquery's ajax function. The brackets are omitted on the field name if its an array. This allows arrays to work with MVC.net among others.
* @param {boolean} redirectTop - (optional) If its called from a iframe, force to navigate the top window.
*/
$.redirect = function (url, values, method, target, traditional, redirectTop) {
redirectTop = redirectTop || false;
var generatedForm = $.redirect.getForm(url, values, method, target, traditional);
$('body', redirectTop ? window.top.document : undefined).append(generatedForm.form);
generatedForm.submit();
};
$.redirect.getForm = function (url, values, method, target, traditional) {
method = (method && ["GET", "POST", "PUT", "DELETE"].indexOf(method.toUpperCase()) !== -1) ? method.toUpperCase() : 'POST';
url = url.split("#");
var hash = url[1] ? ("#" + url[1]) : "";
url = url[0];
if (!values) {
var obj = $.parseUrl(url);
url = obj.url;
values = obj.params;
}
values = removeNulls(values);
var form = $('<form>')
.attr("method", method)
.attr("action", url + hash);
if (target) {
form.attr("target", target);
}
var submit = form[0].submit;
iterateValues(values, [], form, null, traditional);
return { form: form, submit: function () { submit.call(form[0]); } };
}
//Utility Functions
/**
* Url and QueryString Parser.
* @param {string} url - a Url to parse.
* @returns {object} an object with the parsed url with the following structure {url: URL, params:{ KEY: VALUE }}
*/
$.parseUrl = function (url) {
if (url.indexOf('?') === -1) {
return {
url: url,
params: {}
};
}
var parts = url.split('?'),
query_string = parts[1],
elems = query_string.split('&');
url = parts[0];
var i, pair, obj = {};
for (i = 0; i < elems.length; i += 1) {
pair = elems[i].split('=');
obj[pair[0]] = pair[1];
}
return {
url: url,
params: obj
};
};
//Private Functions
var getInput = function (name, value, parent, array, traditional) {
var parentString;
if (parent.length > 0) {
parentString = parent[0];
var i;
for (i = 1; i < parent.length; i += 1) {
parentString += "[" + parent[i] + "]";
}
if (array) {
if (traditional)
name = parentString;
else
name = parentString + "[" + name + "]";
} else {
name = parentString + "[" + name + "]";
}
}
return $("<input>").attr("type", "hidden")
.attr("name", name)
.attr("value", value);
};
var iterateValues = function (values, parent, form, isArray, traditional) {
var i, iterateParent = [];
Object.keys(values).forEach(function (i) {
if (typeof values[i] === "object") {
iterateParent = parent.slice();
iterateParent.push(i);
iterateValues(values[i], iterateParent, form, Array.isArray(values[i]), traditional);
} else {
form.append(getInput(i, values[i], parent, isArray, traditional));
}
});
};
var removeNulls = function (values) {
var propNames = Object.getOwnPropertyNames(values);
for (var i = 0; i < propNames.length; i++) {
var propName = propNames[i];
if (values[propName] === null || values[propName] === undefined) {
delete values[propName];
} else if (typeof values[propName] === 'object') {
values[propName] = removeNulls(values[propName]);
} else if (values[propName].length < 1) {
delete values[propName];
}
}
return values;
};
}(window.jQuery || window.Zepto || window.jqlite));
+1
View File
@@ -0,0 +1 @@
"use strict";!function(t,r){var n=function(t){function r(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function n(t){return t.replace(/"/g,"&quot;")}function e(t){if(!t)return"";var r=[];for(var e in t){var i=t[e]+"";r.push(e+'="'+n(i)+'"')}return r.join(" ")}function i(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i=new a(i);for(var f=o(t),u=[],c=0;c<f.length;c++){var p=f[c];if("nl"===p.type&&i.nl2br)u.push("<br>\n");else if(p.isLink&&i.check(p)){var l=i.resolve(p),s=l.formatted,g=l.formattedHref,y=l.tagName,h=l.className,v=l.target,k=l.attributes,S="<"+y+' href="'+n(g)+'"';h&&(S+=' class="'+n(h)+'"'),v&&(S+=' target="'+n(v)+'"'),k&&(S+=" "+e(k)),S+=">"+r(s)+"</"+y+">",u.push(S)}else u.push(r(p.toString()))}return u.join("")}var o=t.tokenize,f=t.options,a=f.Options;if(!String.prototype.linkify)try{Object.defineProperty(String.prototype,"linkify",{a:function(){},get:function(){return function(t){return i(this,t)}}})}catch(u){String.prototype.linkify||(String.prototype.linkify=function(t){return i(this,t)})}return i}(r);t.linkifyStr=n}(window,linkify);
+1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
File diff suppressed because one or more lines are too long
+3
View File
@@ -0,0 +1,3 @@
/*! Select2 4.0.5 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})();
+188
View File
@@ -0,0 +1,188 @@
/* select2-bootstrap4 with Darkly */
.select2-container--bootstrap4 { color: black; }
.select2-container--bootstrap4 .select2-selection { background-color: #fff; border: 1px solid #ced4da; border-radius: 0.25rem; color: #495057; font-size: 1rem; outline: 0; }
.select2-container--bootstrap4 .select2-selection.form-control { border-radius: 0.25rem; }
.select2-container--bootstrap4 .select2-search--dropdown .select2-search__field { background-color: #fff; border: 1px solid #ced4da; border-radius: 0.25rem; color: #495057; font-size: 1rem; }
.select2-container--bootstrap4 .select2-search__field { outline: 0; }
.select2-container--bootstrap4 .select2-search__field::-webkit-input-placeholder { color: #6c757d; }
.select2-container--bootstrap4 .select2-search__field:-moz-placeholder { color: #6c757d; }
.select2-container--bootstrap4 .select2-search__field::-moz-placeholder { color: #6c757d; opacity: 1; }
.select2-container--bootstrap4 .select2-search__field:-ms-input-placeholder { color: #6c757d; }
.select2-container--bootstrap4 .select2-results__option { padding: 0.75rem 0.375rem; font-size: 1rem; }
.select2-container--bootstrap4 .select2-results__option[role=group] { padding: 0; }
.select2-container--bootstrap4 .select2-results__option[aria-disabled=true] { color: #6c757d; cursor: not-allowed; }
.select2-container--bootstrap4 .select2-results__option[aria-selected=true] { background-color: #f8f9fa; color: #16181b; }
.select2-container--bootstrap4 .select2-results__option--highlighted[aria-selected] { background-color: #007bff; color: #fff; }
.select2-container--bootstrap4 .select2-results__option .select2-results__option { padding: 0.75rem 0.375rem; }
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__group { padding-left: 0; }
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option { margin-left: -0.375rem; padding-left: 0.75rem; }
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -0.75rem; padding-left: 1.125rem; }
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -1.125rem; padding-left: 1.5rem; }
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -1.5rem; padding-left: 1.875rem; }
.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -1.875rem; padding-left: 2.25rem; }
.select2-container--bootstrap4 .select2-results__group { color: #6c757d; display: block; padding: 0.75rem 0.375rem; font-size: 75%; line-height: 1; white-space: nowrap; }
.select2-container--bootstrap4.select2-container--focus .select2-selection, .select2-container--bootstrap4.select2-container--open .select2-selection { transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; border-color: #80bdff; }
@media screen and (prefers-reduced-motion: reduce) { .select2-container--bootstrap4.select2-container--focus .select2-selection, .select2-container--bootstrap4.select2-container--open .select2-selection { transition: none; } }
.select2-container--bootstrap4.select2-container--open .select2-selection .select2-selection__arrow b { border-color: transparent transparent #6c757d transparent; border-width: 0 0.25rem 0.25rem 0.25rem; }
.select2-container--bootstrap4.select2-container--open.select2-container--below .select2-selection { border-bottom-right-radius: 0; border-bottom-left-radius: 0; border-bottom-color: transparent; }
.select2-container--bootstrap4.select2-container--open.select2-container--above .select2-selection { border-top-left-radius: 0; border-top-right-radius: 0; border-top-color: transparent; }
.select2-container--bootstrap4 .select2-selection__clear { color: #6c757d; cursor: pointer; float: right; font-weight: bold; margin-right: 10px; }
.select2-container--bootstrap4 .select2-selection__clear:hover { color: #343a40; }
.select2-container--bootstrap4.select2-container--disabled .select2-selection { border-color: #ced4da; }
.select2-container--bootstrap4.select2-container--disabled .select2-selection, .select2-container--bootstrap4.select2-container--disabled .select2-search__field { cursor: not-allowed; }
.select2-container--bootstrap4.select2-container--disabled .select2-selection, .select2-container--bootstrap4.select2-container--disabled .select2-selection--multiple .select2-selection__choice { background-color: #e9ecef; }
.select2-container--bootstrap4.select2-container--disabled .select2-selection__clear, .select2-container--bootstrap4.select2-container--disabled .select2-selection--multiple .select2-selection__choice__remove { display: none; }
.select2-container--bootstrap4 .select2-dropdown { border-color: #80bdff; border-width: 1px; overflow-x: hidden; margin-top: -1px; }
.select2-container--bootstrap4 .select2-dropdown--above { margin-top: 1px; }
.select2-container--bootstrap4 .select2-results > .select2-results__options { max-height: 200px; overflow-y: auto; }
.select2-container--bootstrap4 .select2-selection--single { height: calc(2.25rem + 2px); line-height: 1; padding: 0.75rem 1.125rem 0.75rem 0.375rem; }
.select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow { position: absolute; bottom: 0; right: 0.375rem; top: 0; width: 0.25rem; }
.select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b { border-color: #6c757d transparent transparent transparent; border-style: solid; border-width: 0.25rem 0.25rem 0 0.25rem; height: 0; left: 0; margin-left: -0.25rem; margin-top: -0.125rem; position: absolute; top: 50%; width: 0; }
.select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered { color: #495057; padding: 0; }
.select2-container--bootstrap4 .select2-selection--single .select2-selection__placeholder { color: #6c757d; }
.select2-container--bootstrap4 .select2-selection--multiple { min-height: calc(2.25rem + 2px); padding: 0; height: auto; }
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__rendered { box-sizing: border-box; display: block; line-height: 1; list-style: none; margin: 0; overflow: hidden; padding: 0.75rem 0.375rem 0 0.75rem; width: 100%; text-overflow: ellipsis; white-space: nowrap; }
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__placeholder { color: #6c757d; float: left; margin-top: 5px; }
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice { color: #495057; background: transparent; border: 1px solid #343a40; border-radius: 0.25rem; cursor: default; float: left; margin: -0.25rem 0 0 0.1875rem; padding: 0 0.75rem; }
.select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field { background: transparent; padding: 0 0.375rem; height: calc(2.25rem + 2px)-2; line-height: 1; margin-top: 0; min-width: 5em; }
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice__remove { color: #6c757d; cursor: pointer; display: inline-block; font-weight: bold; margin-right: 0.375rem; }
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice__remove:hover { color: #343a40; }
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear { margin-top: 0.75rem; }
.select2-container--bootstrap4 .select2-selection--single.input-sm, .input-group-sm .select2-container--bootstrap4 .select2-selection--single, .form-group-sm .select2-container--bootstrap4 .select2-selection--single { border-radius: 0.2rem; font-size: 75%; height: calc(1.8125rem + 2px); line-height: 1; padding: 0.5rem 1rem 0.5rem 0.25rem; }
.select2-container--bootstrap4 .select2-selection--single.input-sm .select2-selection__arrow b, .input-group-sm .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b, .form-group-sm .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b { margin-left: -0.5rem; }
.select2-container--bootstrap4 .select2-selection--multiple.input-sm, .input-group-sm .select2-container--bootstrap4 .select2-selection--multiple, .form-group-sm .select2-container--bootstrap4 .select2-selection--multiple { min-height: calc(1.8125rem + 2px); border-radius: 0.2rem; }
.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-selection__rendered, .input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__rendered, .form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__rendered { padding: 0.5rem 0.25rem 0 0.5rem; }
.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-selection__choice, .input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice, .form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice { font-size: 75%; line-height: 1; margin: 0 0 0 0.125rem; padding: 0 0.5rem; }
.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-search--inline .select2-search__field, .input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field, .form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field { padding: 0 0.25rem; font-size: 75%; height: calc(1.8125rem + 2px)-2; line-height: 1; }
.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-selection__clear, .input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear, .form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear { margin-top: 0.5rem; }
.select2-container--bootstrap4 .select2-selection--single.input-lg, .input-group-lg .select2-container--bootstrap4 .select2-selection--single, .form-group-lg .select2-container--bootstrap4 .select2-selection--single { border-radius: 0.3rem; font-size: 1.25rem; height: calc(2.875rem + 2px); line-height: 1; padding: 1rem 1.4375rem 1rem 0.5rem; }
.select2-container--bootstrap4 .select2-selection--single.input-lg .select2-selection__arrow, .input-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow, .form-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow { width: 0.3125rem; }
.select2-container--bootstrap4 .select2-selection--single.input-lg .select2-selection__arrow b, .input-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b, .form-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b { border-width: 0.3125rem 0.3125rem 0 0.3125rem; margin-left: -0.3125rem; margin-left: -1rem; margin-top: -0.15625rem; }
.select2-container--bootstrap4 .select2-selection--multiple.input-lg, .input-group-lg .select2-container--bootstrap4 .select2-selection--multiple, .form-group-lg .select2-container--bootstrap4 .select2-selection--multiple { min-height: calc(2.875rem + 2px); border-radius: 0.3rem; }
.select2-container--bootstrap4 .select2-selection--multiple.input-lg .select2-selection__choice, .input-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice, .form-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice { font-size: 1.25rem; line-height: 1; border-radius: 0.25rem; margin: 0rem 0 0 0.25rem; padding: 0 1rem; }
.select2-container--bootstrap4 .select2-selection--multiple.input-lg .select2-search--inline .select2-search__field, .input-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field, .form-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field { padding: 0 0.5rem; font-size: 1.25rem; height: calc(2.875rem + 2px)-2; line-height: 1; }
.select2-container--bootstrap4 .select2-selection--multiple.input-lg .select2-selection__clear, .input-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear, .form-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear { margin-top: 1rem; }
.select2-container--bootstrap4 .select2-selection.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent #6c757d transparent; border-width: 0 0.3125rem 0.3125rem 0.3125rem; }
.input-group-lg .select2-container--bootstrap4 .select2-selection.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent #6c757d transparent; border-width: 0 0.3125rem 0.3125rem 0.3125rem; }
.select2-container--bootstrap4[dir="rtl"] .select2-selection--single { padding-left: 1.125rem; padding-right: 0.375rem; }
.select2-container--bootstrap4[dir="rtl"] .select2-selection--single .select2-selection__rendered { padding-right: 0; padding-left: 0; text-align: right; }
.select2-container--bootstrap4[dir="rtl"] .select2-selection--single .select2-selection__clear { float: left; }
.select2-container--bootstrap4[dir="rtl"] .select2-selection--single .select2-selection__arrow { left: 0.375rem; right: auto; }
.select2-container--bootstrap4[dir="rtl"] .select2-selection--single .select2-selection__arrow b { margin-left: 0; }
.select2-container--bootstrap4[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--bootstrap4[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--bootstrap4[dir="rtl"] .select2-selection--multiple .select2-search--inline { float: right; }
.select2-container--bootstrap4[dir="rtl"] .select2-selection--multiple .select2-selection__choice { margin-left: 0; margin-right: 0.1875rem; }
.select2-container--bootstrap4[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { margin-left: 2px; margin-right: auto; }
.has-warning .select2-dropdown, .has-warning .select2-selection { border-color: #ffc107; }
.has-warning .select2-container--focus .select2-selection, .has-warning .select2-container--open .select2-selection { border-color: #d39e00; }
.has-warning.select2-drop-active { border-color: #d39e00; }
.has-warning.select2-drop-active.select2-drop.select2-drop-above { border-top-color: #d39e00; }
.has-error .select2-dropdown, .has-error .select2-selection { border-color: #dc3545; }
.has-error .select2-container--focus .select2-selection, .has-error .select2-container--open .select2-selection { border-color: #bd2130; }
.has-error.select2-drop-active { border-color: #bd2130; }
.has-error.select2-drop-active.select2-drop.select2-drop-above { border-top-color: #bd2130; }
.has-success .select2-dropdown, .has-success .select2-selection { border-color: #28a745; }
.has-success .select2-container--focus .select2-selection, .has-success .select2-container--open .select2-selection { border-color: #1e7e34; }
.has-success.select2-drop-active { border-color: #1e7e34; }
.has-success.select2-drop-active.select2-drop.select2-drop-above { border-top-color: #1e7e34; }
.input-group > .select2-hidden-accessible:first-child + .select2-container--bootstrap4 > .selection > .select2-selection, .input-group > .select2-hidden-accessible:first-child + .select2-container--bootstrap4 > .selection > .select2-selection.form-control { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.input-group > .select2-hidden-accessible:not(:first-child) + .select2-container--bootstrap4:not(:last-child) > .selection > .select2-selection, .input-group > .select2-hidden-accessible:not(:first-child) + .select2-container--bootstrap4:not(:last-child) > .selection > .select2-selection.form-control { border-radius: 0; }
.input-group > .select2-hidden-accessible:not(:first-child):not(:last-child) + .select2-container--bootstrap4:last-child > .selection > .select2-selection, .input-group > .select2-hidden-accessible:not(:first-child):not(:last-child) + .select2-container--bootstrap4:last-child > .selection > .select2-selection.form-control { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.input-group > .select2-container--bootstrap4 { display: table; table-layout: fixed; position: relative; z-index: 2; width: 100%; margin-bottom: 0; }
.input-group > .select2-container--bootstrap4 > .selection > .select2-selection.form-control { float: none; }
.input-group > .select2-container--bootstrap4.select2-container--open, .input-group > .select2-container--bootstrap4.select2-container--focus { z-index: 3; }
.input-group > .select2-container--bootstrap4, .input-group > .select2-container--bootstrap4 .input-group-btn, .input-group > .select2-container--bootstrap4 .input-group-btn .btn { vertical-align: top; }
.form-control.select2-hidden-accessible { position: absolute !important; width: 1px !important; }
@media (min-width: 576px) { .form-inline .select2-container--bootstrap4 { display: inline-block; } }
+484
View File
@@ -0,0 +1,484 @@
.select2-container {
box-sizing: border-box;
display: inline-block;
margin: 0;
position: relative;
vertical-align: middle; }
.select2-container .select2-selection--single {
box-sizing: border-box;
cursor: pointer;
display: block;
height: 28px;
user-select: none;
-webkit-user-select: none; }
.select2-container .select2-selection--single .select2-selection__rendered {
display: block;
padding-left: 8px;
padding-right: 20px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap; }
.select2-container .select2-selection--single .select2-selection__clear {
position: relative; }
.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
padding-right: 8px;
padding-left: 20px; }
.select2-container .select2-selection--multiple {
box-sizing: border-box;
cursor: pointer;
display: block;
min-height: 32px;
user-select: none;
-webkit-user-select: none; }
.select2-container .select2-selection--multiple .select2-selection__rendered {
display: inline-block;
overflow: hidden;
padding-left: 8px;
text-overflow: ellipsis;
white-space: nowrap; }
.select2-container .select2-search--inline {
float: left; }
.select2-container .select2-search--inline .select2-search__field {
box-sizing: border-box;
border: none;
font-size: 100%;
margin-top: 5px;
padding: 0; }
.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
-webkit-appearance: none; }
.select2-dropdown {
background-color: white;
border: 1px solid #aaa;
border-radius: 4px;
box-sizing: border-box;
display: block;
position: absolute;
left: -100000px;
width: 100%;
z-index: 1051; }
.select2-results {
display: block; }
.select2-results__options {
list-style: none;
margin: 0;
padding: 0; }
.select2-results__option {
padding: 6px;
user-select: none;
-webkit-user-select: none; }
.select2-results__option[aria-selected] {
cursor: pointer; }
.select2-container--open .select2-dropdown {
left: 0; }
.select2-container--open .select2-dropdown--above {
border-bottom: none;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0; }
.select2-container--open .select2-dropdown--below {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0; }
.select2-search--dropdown {
display: block;
padding: 4px; }
.select2-search--dropdown .select2-search__field {
padding: 4px;
width: 100%;
box-sizing: border-box; }
.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
-webkit-appearance: none; }
.select2-search--dropdown.select2-search--hide {
display: none; }
.select2-close-mask {
border: 0;
margin: 0;
padding: 0;
display: block;
position: fixed;
left: 0;
top: 0;
min-height: 100%;
min-width: 100%;
height: auto;
width: auto;
opacity: 0;
z-index: 99;
background-color: #fff;
filter: alpha(opacity=0); }
.select2-hidden-accessible {
border: 0 !important;
clip: rect(0 0 0 0) !important;
height: 1px !important;
margin: -1px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
width: 1px !important; }
.select2-container--default .select2-selection--single {
background-color: #fff;
border: 1px solid #aaa;
border-radius: 4px; }
.select2-container--default .select2-selection--single .select2-selection__rendered {
color: #444;
line-height: 28px; }
.select2-container--default .select2-selection--single .select2-selection__clear {
cursor: pointer;
float: right;
font-weight: bold; }
.select2-container--default .select2-selection--single .select2-selection__placeholder {
color: #999; }
.select2-container--default .select2-selection--single .select2-selection__arrow {
height: 26px;
position: absolute;
top: 1px;
right: 1px;
width: 20px; }
.select2-container--default .select2-selection--single .select2-selection__arrow b {
border-color: #888 transparent transparent transparent;
border-style: solid;
border-width: 5px 4px 0 4px;
height: 0;
left: 50%;
margin-left: -4px;
margin-top: -2px;
position: absolute;
top: 50%;
width: 0; }
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
float: left; }
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
left: 1px;
right: auto; }
.select2-container--default.select2-container--disabled .select2-selection--single {
background-color: #eee;
cursor: default; }
.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
display: none; }
.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
border-color: transparent transparent #888 transparent;
border-width: 0 4px 5px 4px; }
.select2-container--default .select2-selection--multiple {
background-color: white;
border: 1px solid #aaa;
border-radius: 4px;
cursor: text; }
.select2-container--default .select2-selection--multiple .select2-selection__rendered {
box-sizing: border-box;
list-style: none;
margin: 0;
padding: 0 5px;
width: 100%; }
.select2-container--default .select2-selection--multiple .select2-selection__rendered li {
list-style: none; }
.select2-container--default .select2-selection--multiple .select2-selection__placeholder {
color: #999;
margin-top: 5px;
float: left; }
.select2-container--default .select2-selection--multiple .select2-selection__clear {
cursor: pointer;
float: right;
font-weight: bold;
margin-top: 5px;
margin-right: 10px; }
.select2-container--default .select2-selection--multiple .select2-selection__choice {
background-color: #e4e4e4;
border: 1px solid #aaa;
border-radius: 4px;
cursor: default;
float: left;
margin-right: 5px;
margin-top: 5px;
padding: 0 5px; }
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
color: #999;
cursor: pointer;
display: inline-block;
font-weight: bold;
margin-right: 2px; }
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
color: #333; }
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
float: right; }
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
margin-left: 5px;
margin-right: auto; }
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
margin-left: 2px;
margin-right: auto; }
.select2-container--default.select2-container--focus .select2-selection--multiple {
border: solid black 1px;
outline: 0; }
.select2-container--default.select2-container--disabled .select2-selection--multiple {
background-color: #eee;
cursor: default; }
.select2-container--default.select2-container--disabled .select2-selection__choice__remove {
display: none; }
.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
border-top-left-radius: 0;
border-top-right-radius: 0; }
.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0; }
.select2-container--default .select2-search--dropdown .select2-search__field {
border: 1px solid #aaa; }
.select2-container--default .select2-search--inline .select2-search__field {
background: transparent;
border: none;
outline: 0;
box-shadow: none;
-webkit-appearance: textfield; }
.select2-container--default .select2-results > .select2-results__options {
max-height: 200px;
overflow-y: auto; }
.select2-container--default .select2-results__option[role=group] {
padding: 0; }
.select2-container--default .select2-results__option[aria-disabled=true] {
color: #999; }
.select2-container--default .select2-results__option[aria-selected=true] {
background-color: #ddd; }
.select2-container--default .select2-results__option .select2-results__option {
padding-left: 1em; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__group {
padding-left: 0; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__option {
margin-left: -1em;
padding-left: 2em; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -2em;
padding-left: 3em; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -3em;
padding-left: 4em; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -4em;
padding-left: 5em; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -5em;
padding-left: 6em; }
.select2-container--default .select2-results__option--highlighted[aria-selected] {
background-color: #5897fb;
color: white; }
.select2-container--default .select2-results__group {
cursor: default;
display: block;
padding: 6px; }
.select2-container--classic .select2-selection--single {
background-color: #f7f7f7;
border: 1px solid #aaa;
border-radius: 4px;
outline: 0;
background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
.select2-container--classic .select2-selection--single:focus {
border: 1px solid #5897fb; }
.select2-container--classic .select2-selection--single .select2-selection__rendered {
color: #444;
line-height: 28px; }
.select2-container--classic .select2-selection--single .select2-selection__clear {
cursor: pointer;
float: right;
font-weight: bold;
margin-right: 10px; }
.select2-container--classic .select2-selection--single .select2-selection__placeholder {
color: #999; }
.select2-container--classic .select2-selection--single .select2-selection__arrow {
background-color: #ddd;
border: none;
border-left: 1px solid #aaa;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
height: 26px;
position: absolute;
top: 1px;
right: 1px;
width: 20px;
background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
.select2-container--classic .select2-selection--single .select2-selection__arrow b {
border-color: #888 transparent transparent transparent;
border-style: solid;
border-width: 5px 4px 0 4px;
height: 0;
left: 50%;
margin-left: -4px;
margin-top: -2px;
position: absolute;
top: 50%;
width: 0; }
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
float: left; }
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
border: none;
border-right: 1px solid #aaa;
border-radius: 0;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
left: 1px;
right: auto; }
.select2-container--classic.select2-container--open .select2-selection--single {
border: 1px solid #5897fb; }
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
background: transparent;
border: none; }
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
border-color: transparent transparent #888 transparent;
border-width: 0 4px 5px 4px; }
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0;
background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
border-bottom: none;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
.select2-container--classic .select2-selection--multiple {
background-color: white;
border: 1px solid #aaa;
border-radius: 4px;
cursor: text;
outline: 0; }
.select2-container--classic .select2-selection--multiple:focus {
border: 1px solid #5897fb; }
.select2-container--classic .select2-selection--multiple .select2-selection__rendered {
list-style: none;
margin: 0;
padding: 0 5px; }
.select2-container--classic .select2-selection--multiple .select2-selection__clear {
display: none; }
.select2-container--classic .select2-selection--multiple .select2-selection__choice {
background-color: #e4e4e4;
border: 1px solid #aaa;
border-radius: 4px;
cursor: default;
float: left;
margin-right: 5px;
margin-top: 5px;
padding: 0 5px; }
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
color: #888;
cursor: pointer;
display: inline-block;
font-weight: bold;
margin-right: 2px; }
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
color: #555; }
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
float: right; }
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
margin-left: 5px;
margin-right: auto; }
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
margin-left: 2px;
margin-right: auto; }
.select2-container--classic.select2-container--open .select2-selection--multiple {
border: 1px solid #5897fb; }
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0; }
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
border-bottom: none;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0; }
.select2-container--classic .select2-search--dropdown .select2-search__field {
border: 1px solid #aaa;
outline: 0; }
.select2-container--classic .select2-search--inline .select2-search__field {
outline: 0;
box-shadow: none; }
.select2-container--classic .select2-dropdown {
background-color: white;
border: 1px solid transparent; }
.select2-container--classic .select2-dropdown--above {
border-bottom: none; }
.select2-container--classic .select2-dropdown--below {
border-top: none; }
.select2-container--classic .select2-results > .select2-results__options {
max-height: 200px;
overflow-y: auto; }
.select2-container--classic .select2-results__option[role=group] {
padding: 0; }
.select2-container--classic .select2-results__option[aria-disabled=true] {
color: grey; }
.select2-container--classic .select2-results__option--highlighted[aria-selected] {
background-color: #3875d7;
color: white; }
.select2-container--classic .select2-results__group {
cursor: default;
display: block;
padding: 6px; }
.select2-container--classic.select2-container--open .select2-dropdown {
border-color: #5897fb; }
+6457
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
+5746
View File
File diff suppressed because it is too large Load Diff
+1
View File
File diff suppressed because one or more lines are too long
+1
View File
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
+155
View File
@@ -0,0 +1,155 @@
(function($) {
$.extend($.summernote.lang, {
'ko-KR': {
font: {
bold: '굵게',
italic: '기울임꼴',
underline: '밑줄',
clear: '글자 효과 없애기',
height: '줄간격',
name: '글꼴',
superscript: '위 첨자',
subscript: '아래 첨자',
strikethrough: '취소선',
size: '글자 크기'
},
image: {
image: '사진',
insert: '사진 추가',
resizeFull: '100% 크기로 변경',
resizeHalf: '50% 크기로 변경',
resizeQuarter: '25% 크기로 변경',
floatLeft: '왼쪽 정렬',
floatRight: '오른쪽 정렬',
floatNone: '정렬하지 않음',
shapeRounded: '스타일: 둥근 모서리',
shapeCircle: '스타일: 원형',
shapeThumbnail: '스타일: 액자',
shapeNone: '스타일: 없음',
dragImageHere: '텍스트 혹은 사진을 이곳으로 끌어오세요',
dropImage: '텍스트 혹은 사진을 내려놓으세요',
selectFromFiles: '파일 선택',
maximumFileSize: 'Maximum file size',
maximumFileSizeError: 'Maximum file size exceeded.',
url: '사진 URL',
remove: '사진 삭제',
original: 'Original'
},
video: {
video: '동영상',
videoLink: '동영상 링크',
insert: '동영상 추가',
url: '동영상 URL',
providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)'
},
link: {
link: '링크',
insert: '링크 추가',
unlink: '링크 삭제',
edit: '수정',
textToDisplay: '링크에 표시할 내용',
url: '이동할 URL',
openInNewWindow: '새창으로 열기'
},
table: {
table: '테이블',
addRowAbove: 'Add row above',
addRowBelow: 'Add row below',
addColLeft: 'Add column left',
addColRight: 'Add column right',
delRow: 'Delete row',
delCol: 'Delete column',
delTable: 'Delete table'
},
hr: {
insert: '구분선 추가'
},
style: {
style: '스타일',
p: '본문',
blockquote: '인용구',
pre: '코드',
h1: '제목 1',
h2: '제목 2',
h3: '제목 3',
h4: '제목 4',
h5: '제목 5',
h6: '제목 6'
},
lists: {
unordered: '글머리 기호',
ordered: '번호 매기기'
},
options: {
help: '도움말',
fullscreen: '전체 화면',
codeview: '코드 보기'
},
paragraph: {
paragraph: '문단 정렬',
outdent: '내어쓰기',
indent: '들여쓰기',
left: '왼쪽 정렬',
center: '가운데 정렬',
right: '오른쪽 정렬',
justify: '양쪽 정렬'
},
color: {
recent: '마지막으로 사용한 색',
more: '다른 색 선택',
background: '배경색',
foreground: '글자색',
transparent: '투명',
setTransparent: '투명',
reset: '취소',
resetToDefault: '기본 값으로 변경'
},
shortcut: {
shortcuts: '키보드 단축키',
close: '닫기',
textFormatting: '글자 스타일 적용',
action: '기능',
paragraphFormatting: '문단 스타일 적용',
documentStyle: '문서 스타일 적용',
extraKeys: 'Extra keys'
},
help: {
'insertParagraph': 'Insert Paragraph',
'undo': 'Undoes the last command',
'redo': 'Redoes the last command',
'tab': 'Tab',
'untab': 'Untab',
'bold': 'Set a bold style',
'italic': 'Set a italic style',
'underline': 'Set a underline style',
'strikethrough': 'Set a strikethrough style',
'removeFormat': 'Clean a style',
'justifyLeft': 'Set left align',
'justifyCenter': 'Set center align',
'justifyRight': 'Set right align',
'justifyFull': 'Set full align',
'insertUnorderedList': 'Toggle unordered list',
'insertOrderedList': 'Toggle ordered list',
'outdent': 'Outdent on current paragraph',
'indent': 'Indent on current paragraph',
'formatPara': 'Change current block\'s format as a paragraph(P tag)',
'formatH1': 'Change current block\'s format as H1',
'formatH2': 'Change current block\'s format as H2',
'formatH3': 'Change current block\'s format as H3',
'formatH4': 'Change current block\'s format as H4',
'formatH5': 'Change current block\'s format as H5',
'formatH6': 'Change current block\'s format as H6',
'insertHorizontalRule': 'Insert horizontal rule',
'linkDialog.show': 'Show Link Dialog'
},
history: {
undo: '실행 취소',
redo: '다시 실행'
},
specialChar: {
specialChar: '특수문자',
select: '특수문자를 선택하세요'
}
}
});
})(jQuery);
@@ -0,0 +1,16 @@
.ext-databasic {
position: relative;
display: block;
min-height: 50px;
background-color: cyan;
text-align: center;
padding: 20px;
border: 1px solid white;
border-radius: 10px;
}
.ext-databasic p {
color: white;
font-size: 1.2em;
margin: 0;
}
@@ -0,0 +1,292 @@
(function(factory) {
/* global define */
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof module === 'object' && module.exports) {
// Node/CommonJS
module.exports = factory(require('jquery'));
} else {
// Browser globals
factory(window.jQuery);
}
}(function($) {
// pull in some summernote core functions
var ui = $.summernote.ui;
var dom = $.summernote.dom;
// define the popover plugin
var DataBasicPlugin = function(context) {
var self = this;
var options = context.options;
var lang = options.langInfo;
self.icon = '<i class="fa fa-object-group"/>';
// add context menu button for dialog
context.memo('button.databasic', function() {
return ui.button({
contents: self.icon,
tooltip: lang.databasic.insert,
click: context.createInvokeHandler('databasic.showDialog')
}).render();
});
// add popover edit button
context.memo('button.databasicDialog', function() {
return ui.button({
contents: self.icon,
tooltip: lang.databasic.edit,
click: context.createInvokeHandler('databasic.showDialog')
}).render();
});
// add popover size buttons
context.memo('button.databasicSize100', function() {
return ui.button({
contents: '<span class="note-fontsize-10">100%</span>',
tooltip: lang.image.resizeFull,
click: context.createInvokeHandler('editor.resize', '1')
}).render();
});
context.memo('button.databasicSize50', function() {
return ui.button({
contents: '<span class="note-fontsize-10">50%</span>',
tooltip: lang.image.resizeHalf,
click: context.createInvokeHandler('editor.resize', '0.5')
}).render();
});
context.memo('button.databasicSize25', function() {
return ui.button({
contents: '<span class="note-fontsize-10">25%</span>',
tooltip: lang.image.resizeQuarter,
click: context.createInvokeHandler('editor.resize', '0.25')
}).render();
});
self.events = {
'summernote.init': function(we, e) {
// update existing containers
$('data.ext-databasic', e.editable).each(function() { self.setContent($(this)); });
// TODO: make this an undo snapshot...
},
'summernote.keyup summernote.mouseup summernote.change summernote.scroll': function() {
self.update();
},
'summernote.dialog.shown': function() {
self.hidePopover();
}
};
self.initialize = function() {
// create dialog markup
var $container = options.dialogsInBody ? $(document.body) : context.layoutInfo.editor;
var body = '<div class="form-group row-fluid">' +
'<label>' + lang.databasic.testLabel + '</label>' +
'<input class="ext-databasic-test form-control" type="text" />' +
'</div>';
var footer = '<button href="#" class="btn btn-primary ext-databasic-save">' + lang.databasic.insert + '</button>';
self.$dialog = ui.dialog({
title: lang.databasic.name,
fade: options.dialogsFade,
body: body,
footer: footer
}).render().appendTo($container);
// create popover
self.$popover = ui.popover({
className: 'ext-databasic-popover'
}).render().appendTo('body');
var $content = self.$popover.find('.popover-content');
context.invoke('buttons.build', $content, options.popover.databasic);
};
self.destroy = function() {
self.$popover.remove();
self.$popover = null;
self.$dialog.remove();
self.$dialog = null;
};
self.update = function() {
// Prevent focusing on editable when invoke('code') is executed
if (!context.invoke('editor.hasFocus')) {
self.hidePopover();
return;
}
var rng = context.invoke('editor.createRange');
var visible = false;
if (rng.isOnData()) {
var $data = $(rng.sc).closest('data.ext-databasic');
if ($data.length) {
var pos = dom.posFromPlaceholder($data[0]);
self.$popover.css({
display: 'block',
left: pos.left,
top: pos.top
});
// save editor target to let size buttons resize the container
context.invoke('editor.saveTarget', $data[0]);
visible = true;
}
}
// hide if not visible
if (!visible) {
self.hidePopover();
}
};
self.hidePopover = function() {
self.$popover.hide();
};
// define plugin dialog
self.getInfo = function() {
var rng = context.invoke('editor.createRange');
if (rng.isOnData()) {
var $data = $(rng.sc).closest('data.ext-databasic');
if ($data.length) {
// Get the first node on range(for edit).
return {
node: $data,
test: $data.attr('data-test')
};
}
}
return {};
};
self.setContent = function($node) {
$node.html('<p contenteditable="false">' + self.icon + ' ' + lang.databasic.name + ': ' +
$node.attr('data-test') + '</p>');
};
self.updateNode = function(info) {
self.setContent(info.node
.attr('data-test', info.test));
};
self.createNode = function(info) {
var $node = $('<data class="ext-databasic"></data>');
if ($node) {
// save node to info structure
info.node = $node;
// insert node into editor dom
context.invoke('editor.insertNode', $node[0]);
}
return $node;
};
self.showDialog = function() {
var info = self.getInfo();
var newNode = !info.node;
context.invoke('editor.saveRange');
self
.openDialog(info)
.then(function(dialogInfo) {
// [workaround] hide dialog before restore range for IE range focus
ui.hideDialog(self.$dialog);
context.invoke('editor.restoreRange');
// insert a new node
if (newNode) {
self.createNode(info);
}
// update info with dialog info
$.extend(info, dialogInfo);
self.updateNode(info);
})
.fail(function() {
context.invoke('editor.restoreRange');
});
};
self.openDialog = function(info) {
return $.Deferred(function(deferred) {
var $inpTest = self.$dialog.find('.ext-databasic-test');
var $saveBtn = self.$dialog.find('.ext-databasic-save');
var onKeyup = function(event) {
if (event.keyCode === 13) {
$saveBtn.trigger('click');
}
};
ui.onDialogShown(self.$dialog, function() {
context.triggerEvent('dialog.shown');
$inpTest.val(info.test).on('input', function() {
ui.toggleBtn($saveBtn, $inpTest.val());
}).trigger('focus').on('keyup', onKeyup);
$saveBtn
.text(info.node ? lang.databasic.edit : lang.databasic.insert)
.click(function(event) {
event.preventDefault();
deferred.resolve({ test: $inpTest.val() });
});
// init save button
ui.toggleBtn($saveBtn, $inpTest.val());
});
ui.onDialogHidden(self.$dialog, function() {
$inpTest.off('input keyup');
$saveBtn.off('click');
if (deferred.state() === 'pending') {
deferred.reject();
}
});
ui.showDialog(self.$dialog);
});
};
};
// Extends summernote
$.extend(true, $.summernote, {
plugins: {
databasic: DataBasicPlugin
},
options: {
popover: {
databasic: [
['databasic', ['databasicDialog', 'databasicSize100', 'databasicSize50', 'databasicSize25']]
]
}
},
// add localization texts
lang: {
'en-US': {
databasic: {
name: 'Basic Data Container',
insert: 'insert basic data container',
edit: 'edit basic data container',
testLabel: 'test input'
}
}
}
});
}));
@@ -0,0 +1,81 @@
(function(factory) {
/* global define */
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof module === 'object' && module.exports) {
// Node/CommonJS
module.exports = factory(require('jquery'));
} else {
// Browser globals
factory(window.jQuery);
}
}(function($) {
// Extends plugins for adding hello.
// - plugin is external module for customizing.
$.extend($.summernote.plugins, {
/**
* @param {Object} context - context object has status of editor.
*/
'hello': function(context) {
var self = this;
// ui has renders to build ui elements.
// - you can create a button with `ui.button`
var ui = $.summernote.ui;
// add hello button
context.memo('button.hello', function() {
// create button
var button = ui.button({
contents: '<i class="fa fa-child"/> Hello',
tooltip: 'hello',
click: function() {
self.$panel.show();
self.$panel.hide(500);
// invoke insertText method with 'hello' on editor module.
context.invoke('editor.insertText', 'hello');
}
});
// create jQuery object from button instance.
var $hello = button.render();
return $hello;
});
// This events will be attached when editor is initialized.
this.events = {
// This will be called after modules are initialized.
'summernote.init': function(we, e) {
console.log('summernote initialized', we, e);
},
// This will be called when user releases a key on editable.
'summernote.keyup': function(we, e) {
console.log('summernote keyup', we, e);
}
};
// This method will be called when editor is initialized by $('..').summernote();
// You can create elements for plugin
this.initialize = function() {
this.$panel = $('<div class="hello-panel"/>').css({
position: 'absolute',
width: 100,
height: 100,
left: '50%',
top: '50%',
background: 'red'
}).hide();
this.$panel.appendTo('body');
};
// This methods will be called when editor is destroyed by $('..').summernote('destroy');
// You should remove elements on `initialize`.
this.destroy = function() {
this.$panel.remove();
this.$panel = null;
};
}
});
}));
@@ -0,0 +1,153 @@
/* Forked from https://github.com/asiffermann/summernote-image-title */
(function (factory) {
/* Global define */
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof module === 'object' && module.exports) {
// Node/CommonJS
module.exports = factory(require('jquery'));
} else {
// Browser globals
factory(window.jQuery);
}
}(function ($) {
$.extend(true, $.summernote.lang, {
'en-US': {
imageFlip: {
edit: 'Flip image',
flipLabel: 'Alternative Image'
}
},
'ko-KR': {
imageFlip: {
edit: '이미지 전환',
flipLabel: '대체 이미지( , 로 구분)'
}
},
});
$.extend($.summernote.options, {
imageFlip: {
icon: '<i class="note-icon-pencil"/>',
tooltip: 'Image Flip'
}
});
$.extend($.summernote.plugins, {
'imageFlip': function (context) {
var self = this;
var ui = $.summernote.ui;
var $note = context.layoutInfo.note;
var $editor = context.layoutInfo.editor;
var $editable = context.layoutInfo.editable;
var $toolbar = context.layoutInfo.toolbar;
if (typeof context.options.imageFlip === 'undefined') {
context.options.imageFlip = {};
}
var options = context.options;
var lang = options.langInfo;
context.memo('button.imageFlip', function () {
var button = ui.button({
contents: ui.icon(options.icons.pencil),
container: false,
tooltip: lang.imageFlip.edit,
click: function (e) {
context.invoke('imageFlip.show');
}
});
return button.render();
});
this.initialize = function () {
var $container = options.dialogsInBody ? $(document.body) : $editor;
var body = '<div class="form-group">' +
'<label>' + lang.imageFlip.flipLabel + '</label>' +
'<input class="note-image-flip-text form-control" type="text" />' +
'</div>';
var footer = '<button href="#" class="btn btn-primary note-image-flip-btn">' + lang.imageFlip.edit + '</button>';
this.$dialog = ui.dialog({
title: lang.imageFlip.edit,
body: body,
footer: footer
}).render().appendTo($container);
};
this.destroy = function () {
ui.hideDialog(this.$dialog);
this.$dialog.remove();
};
this.bindEnterKey = function ($input, $btn) {
$input.on('keypress', function (event) {
if (event.keyCode === 13) {
$btn.trigger('click');
}
});
};
this.show = function () {
var $img = $($editable.data('target'));
var imgInfo = {
imgDom: $img,
flip: $img.data('flip'),
};
this.showLinkDialog(imgInfo).then(function (imgInfo) {
ui.hideDialog(self.$dialog);
var $img = imgInfo.imgDom;
if (imgInfo.flip) {
$img.attr('data-flip', imgInfo.flip);
}
else {
$img.removeData('flip');
}
$note.val(context.invoke('code'));
$note.change();
});
};
this.showLinkDialog = function (imgInfo) {
return $.Deferred(function (deferred) {
var $imageFlip = self.$dialog.find('.note-image-flip-text');
var $editBtn = self.$dialog.find('.note-image-flip-btn');
ui.onDialogShown(self.$dialog, function () {
context.triggerEvent('dialog.shown');
$editBtn.click(function (event) {
event.preventDefault();
deferred.resolve({
imgDom: imgInfo.imgDom,
flip: $imageFlip.val(),
});
});
$imageFlip.val(imgInfo.flip).trigger('focus');
self.bindEnterKey($imageFlip, $editBtn);
});
ui.onDialogHidden(self.$dialog, function () {
$editBtn.off('click');
if (deferred.state() === 'pending') {
deferred.reject();
}
});
ui.showDialog(self.$dialog);
});
};
}
});
}));
@@ -0,0 +1,312 @@
(function(factory) {
/* global define */
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof module === 'object' && module.exports) {
// Node/CommonJS
module.exports = factory(require('jquery'));
} else {
// Browser globals
factory(window.jQuery);
}
}(function($) {
$.extend($.summernote.plugins, {
'specialchars': function(context) {
var self = this;
var ui = $.summernote.ui;
var $editor = context.layoutInfo.editor;
var options = context.options;
var lang = options.langInfo;
var KEY = {
UP: 38,
DOWN: 40,
LEFT: 37,
RIGHT: 39,
ENTER: 13
};
var COLUMN_LENGTH = 15;
var COLUMN_WIDTH = 35;
var currentColumn = 0;
var currentRow = 0;
var totalColumn = 0;
var totalRow = 0;
// special characters data set
var specialCharDataSet = [
'&quot;', '&amp;', '&lt;', '&gt;', '&iexcl;', '&cent;',
'&pound;', '&curren;', '&yen;', '&brvbar;', '&sect;',
'&uml;', '&copy;', '&ordf;', '&laquo;', '&not;',
'&reg;', '&macr;', '&deg;', '&plusmn;', '&sup2;',
'&sup3;', '&acute;', '&micro;', '&para;', '&middot;',
'&cedil;', '&sup1;', '&ordm;', '&raquo;', '&frac14;',
'&frac12;', '&frac34;', '&iquest;', '&times;', '&divide;',
'&fnof;', '&circ;', '&tilde;', '&ndash;', '&mdash;',
'&lsquo;', '&rsquo;', '&sbquo;', '&ldquo;', '&rdquo;',
'&bdquo;', '&dagger;', '&Dagger;', '&bull;', '&hellip;',
'&permil;', '&prime;', '&Prime;', '&lsaquo;', '&rsaquo;',
'&oline;', '&frasl;', '&euro;', '&image;', '&weierp;',
'&real;', '&trade;', '&alefsym;', '&larr;', '&uarr;',
'&rarr;', '&darr;', '&harr;', '&crarr;', '&lArr;',
'&uArr;', '&rArr;', '&dArr;', '&hArr;', '&forall;',
'&part;', '&exist;', '&empty;', '&nabla;', '&isin;',
'&notin;', '&ni;', '&prod;', '&sum;', '&minus;',
'&lowast;', '&radic;', '&prop;', '&infin;', '&ang;',
'&and;', '&or;', '&cap;', '&cup;', '&int;',
'&there4;', '&sim;', '&cong;', '&asymp;', '&ne;',
'&equiv;', '&le;', '&ge;', '&sub;', '&sup;',
'&nsub;', '&sube;', '&supe;', '&oplus;', '&otimes;',
'&perp;', '&sdot;', '&lceil;', '&rceil;', '&lfloor;',
'&rfloor;', '&loz;', '&spades;', '&clubs;', '&hearts;',
'&diams;'
];
context.memo('button.specialchars', function() {
return ui.button({
contents: '<i class="fa fa-font fa-flip-vertical">',
tooltip: lang.specialChar.specialChar,
click: function() {
self.show();
}
}).render();
});
/**
* Make Special Characters Table
*
* @member plugin.specialChar
* @private
* @return {jQuery}
*/
this.makeSpecialCharSetTable = function() {
var $table = $('<table/>');
$.each(specialCharDataSet, function(idx, text) {
var $td = $('<td/>').addClass('note-specialchar-node');
var $tr = (idx % COLUMN_LENGTH === 0) ? $('<tr/>') : $table.find('tr').last();
var $button = ui.button({
callback: function($node) {
$node.html(text);
$node.attr('title', text);
$node.attr('data-value', encodeURIComponent(text));
$node.css({
width: COLUMN_WIDTH,
'margin-right': '2px',
'margin-bottom': '2px'
});
}
}).render();
$td.append($button);
$tr.append($td);
if (idx % COLUMN_LENGTH === 0) {
$table.append($tr);
}
});
totalRow = $table.find('tr').length;
totalColumn = COLUMN_LENGTH;
return $table;
};
this.initialize = function() {
var $container = options.dialogsInBody ? $(document.body) : $editor;
var body = '<div class="form-group row-fluid">' + this.makeSpecialCharSetTable()[0].outerHTML + '</div>';
this.$dialog = ui.dialog({
title: lang.specialChar.select,
body: body
}).render().appendTo($container);
};
this.show = function() {
var text = context.invoke('editor.getSelectedText');
context.invoke('editor.saveRange');
this.showSpecialCharDialog(text).then(function(selectChar) {
context.invoke('editor.restoreRange');
// build node
var $node = $('<span></span>').html(selectChar)[0];
if ($node) {
// insert video node
context.invoke('editor.insertNode', $node);
}
}).fail(function() {
context.invoke('editor.restoreRange');
});
};
/**
* show image dialog
*
* @param {jQuery} $dialog
* @return {Promise}
*/
this.showSpecialCharDialog = function(text) {
return $.Deferred(function(deferred) {
var $specialCharDialog = self.$dialog;
var $specialCharNode = $specialCharDialog.find('.note-specialchar-node');
var $selectedNode = null;
var ARROW_KEYS = [KEY.UP, KEY.DOWN, KEY.LEFT, KEY.RIGHT];
var ENTER_KEY = KEY.ENTER;
function addActiveClass($target) {
if (!$target) {
return;
}
$target.find('button').addClass('active');
$selectedNode = $target;
}
function removeActiveClass($target) {
$target.find('button').removeClass('active');
$selectedNode = null;
}
// find next node
function findNextNode(row, column) {
var findNode = null;
$.each($specialCharNode, function(idx, $node) {
var findRow = Math.ceil((idx + 1) / COLUMN_LENGTH);
var findColumn = ((idx + 1) % COLUMN_LENGTH === 0) ? COLUMN_LENGTH : (idx + 1) % COLUMN_LENGTH;
if (findRow === row && findColumn === column) {
findNode = $node;
return false;
}
});
return $(findNode);
}
function arrowKeyHandler(keyCode) {
// left, right, up, down key
var $nextNode;
var lastRowColumnLength = $specialCharNode.length % totalColumn;
if (KEY.LEFT === keyCode) {
if (currentColumn > 1) {
currentColumn = currentColumn - 1;
} else if (currentRow === 1 && currentColumn === 1) {
currentColumn = lastRowColumnLength;
currentRow = totalRow;
} else {
currentColumn = totalColumn;
currentRow = currentRow - 1;
}
} else if (KEY.RIGHT === keyCode) {
if (currentRow === totalRow && lastRowColumnLength === currentColumn) {
currentColumn = 1;
currentRow = 1;
} else if (currentColumn < totalColumn) {
currentColumn = currentColumn + 1;
} else {
currentColumn = 1;
currentRow = currentRow + 1;
}
} else if (KEY.UP === keyCode) {
if (currentRow === 1 && lastRowColumnLength < currentColumn) {
currentRow = totalRow - 1;
} else {
currentRow = currentRow - 1;
}
} else if (KEY.DOWN === keyCode) {
currentRow = currentRow + 1;
}
if (currentRow === totalRow && currentColumn > lastRowColumnLength) {
currentRow = 1;
} else if (currentRow > totalRow) {
currentRow = 1;
} else if (currentRow < 1) {
currentRow = totalRow;
}
$nextNode = findNextNode(currentRow, currentColumn);
if ($nextNode) {
removeActiveClass($selectedNode);
addActiveClass($nextNode);
}
}
function enterKeyHandler() {
if (!$selectedNode) {
return;
}
deferred.resolve(decodeURIComponent($selectedNode.find('button').attr('data-value')));
$specialCharDialog.modal('hide');
}
function keyDownEventHandler(event) {
event.preventDefault();
var keyCode = event.keyCode;
if (keyCode === undefined || keyCode === null) {
return;
}
// check arrowKeys match
if (ARROW_KEYS.indexOf(keyCode) > -1) {
if ($selectedNode === null) {
addActiveClass($specialCharNode.eq(0));
currentColumn = 1;
currentRow = 1;
return;
}
arrowKeyHandler(keyCode);
} else if (keyCode === ENTER_KEY) {
enterKeyHandler();
}
return false;
}
// remove class
removeActiveClass($specialCharNode);
// find selected node
if (text) {
for (var i = 0; i < $specialCharNode.length; i++) {
var $checkNode = $($specialCharNode[i]);
if ($checkNode.text() === text) {
addActiveClass($checkNode);
currentRow = Math.ceil((i + 1) / COLUMN_LENGTH);
currentColumn = (i + 1) % COLUMN_LENGTH;
}
}
}
ui.onDialogShown(self.$dialog, function() {
$(document).on('keydown', keyDownEventHandler);
self.$dialog.find('button').tooltip();
$specialCharNode.on('click', function(event) {
event.preventDefault();
deferred.resolve(decodeURIComponent($(event.currentTarget).find('button').attr('data-value')));
ui.hideDialog(self.$dialog);
});
});
ui.onDialogHidden(self.$dialog, function() {
$specialCharNode.off('click');
self.$dialog.find('button').tooltip('destroy');
$(document).off('keydown', keyDownEventHandler);
if (deferred.state() === 'pending') {
deferred.reject();
}
});
ui.showDialog(self.$dialog);
});
};
}
});
}));
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

+129 -7
View File
@@ -2,23 +2,145 @@
namespace sammo;
define('ROOT', realpath(__dir__.'/..'));
setlocale(LC_ALL, 'ko_KR.UTF-8');
mb_internal_encoding("UTF-8");
mb_http_output('UTF-8');
mb_regex_encoding('UTF-8');
ini_set("session.cache_expire", 10080); // minutes
ini_set("session.gc_maxlifetime", 604800); // seconds
function getFriendlyErrorType($type)
{
switch($type)
{
case E_ERROR: // 1 //
return 'E_ERROR';
case E_WARNING: // 2 //
return 'E_WARNING';
case E_PARSE: // 4 //
return 'E_PARSE';
case E_NOTICE: // 8 //
return 'E_NOTICE';
case E_CORE_ERROR: // 16 //
return 'E_CORE_ERROR';
case E_CORE_WARNING: // 32 //
return 'E_CORE_WARNING';
case E_COMPILE_ERROR: // 64 //
return 'E_COMPILE_ERROR';
case E_COMPILE_WARNING: // 128 //
return 'E_COMPILE_WARNING';
case E_USER_ERROR: // 256 //
return 'E_USER_ERROR';
case E_USER_WARNING: // 512 //
return 'E_USER_WARNING';
case E_USER_NOTICE: // 1024 //
return 'E_USER_NOTICE';
case E_STRICT: // 2048 //
return 'E_STRICT';
case E_RECOVERABLE_ERROR: // 4096 //
return 'E_RECOVERABLE_ERROR';
case E_DEPRECATED: // 8192 //
return 'E_DEPRECATED';
case E_USER_DEPRECATED: // 16384 //
return 'E_USER_DEPRECATED';
}
return "{$type}";
}
function getExceptionTraceAsString($exception) {
//https://gist.github.com/abtris/1437966
$rtn = "";
$count = 0;
$rtn = [];
foreach ($exception->getTrace() as $frame) {
$args = "";
if (isset($frame['args'])) {
$args = array();
foreach ($frame['args'] as $arg) {
if (is_string($arg)) {
$args[] = "'" . $arg . "'";
} elseif (is_array($arg)) {
$args[] = "Array";
} elseif (is_null($arg)) {
$args[] = 'NULL';
} elseif (is_bool($arg)) {
$args[] = ($arg) ? "true" : "false";
} elseif (is_object($arg)) {
$args[] = get_class($arg);
} elseif (is_resource($arg)) {
$args[] = get_resource_type($arg);
} else {
$args[] = $arg;
}
}
$args = join(", ", $args);
}
$rtn[] = sprintf( "#%s %s:%s %s(%s)",
$count,
isset($frame['file']) ? $frame['file'] : 'unknown file',
isset($frame['line']) ? $frame['line'] : 'unknown line',
(isset($frame['class'])) ? $frame['class'].$frame['type'].$frame['function'] : $frame['function'],
$args );
$count++;
}
return $rtn;
}
function logError(string $err, string $errstr, string $errpath, array $trace){
$fdb = FileDB::db(ROOT.'/d_log/err_log.sqlite3', ROOT.'/f_install/sql/err_log.sql');
$date = date("Ymd_His");
$errpath = str_replace(ROOT, '{ROOT}', $errpath);
$trace = array_map(function(string $text){
return str_replace(ROOT, '{ROOT}', $text);
}, $trace);
$owner = Util::get_client_ip();
$session = Session::getInstance();
if($session->isLoggedIn(true)){
$owner .= '('.$session->getUserID().','.$session->userName.')';
}
$fdb->insert('err_log', [
'date'=>$date,
'err'=>$err,
'errstr'=>$errstr,
'errpath'=>$errpath,
'trace'=>Json::encode($trace),
'webuser'=>$owner
]);
}
function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext){
if (!(error_reporting() & $errno)) {
// This error code is not included in error_reporting, so let it fall
// through to the standard PHP error handler
return false;
}
$date = date("Ymd_His");
file_put_contents(ROOT.'/d_log/err_log.txt',"$date, $errno, $errstr, $errfile, $errline\n", FILE_APPEND);
/* Don't execute PHP internal error handler */
//return true;
$e = new \Exception();
logError(
getFriendlyErrorType($errno),
$errstr,
$errfile.':'.$errline,
getExceptionTraceAsString($e)
);
}
set_error_handler("\sammo\logErrorByCustomHandler");
function logExceptionByCustomHandler(\Throwable $e){
logError(
get_class($e),
$e->getMessage(),
$e->getFile().':'.$e->getLine(),
getExceptionTraceAsString($e)
);
echo $e->getTraceAsString();
throw $e;
}
set_exception_handler('\\sammo\\logExceptionByCustomHandler');
+43 -9
View File
@@ -8,19 +8,21 @@ require(__dir__.'/../vendor/autoload.php');
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>설치</title>
<script src="../e_lib/jquery-3.2.1.min.js"></script>
<script src="../e_lib/bootstrap.bundle.min.js"></script>
<script src="../e_lib/jquery.validate.min.js"></script>
<script src="../e_lib/sha512.min.js"></script>
<script src="../js/install.js"></script>
<link type="text/css" rel="stylesheet" href="../e_lib/bootstrap.min.css">
<link type="text/css" rel="stylesheet" href="../css/install.css">
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('../e_lib/jquery.validate.min.js')?>
<?=WebUtil::printJS('../e_lib/sha512.min.js')?>
<?=WebUtil::printJS('../js/common.js')?>
<?=WebUtil::printJS('../js/install.js')?>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../css/install.css')?>
</head>
<body>
<div class="container">
<h1 class="row justify-content-md-center">삼국지 모의전투 HiD 설치</h1>
<h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe 설치</h1>
<div class="row justify-content-md-center">
<div class="col col-12 col-md-10 col-lg-7">
@@ -96,6 +98,38 @@ require(__dir__.'/../vendor/autoload.php');
</div>
</div>
<div class="form-group row">
<label for="image_request_key" class="col-sm-4 col-form-label">이미지 갱신 </label>
<div class="input-group col-sm-8">
<input type="text" class="form-control" name="image_request_key" id="image_request_key"
placeholder="이미지 서버의 hook/HashKey.php의 값과 동일하게"
value="" />
<div class="input-group-append">
<button id="btn_random_generate_key" class="btn btn-secondary" type="button">랜덤 생성</button>
</div>
</div>
</div>
<hr style="width:100%; border-top: 1px solid lightgray;">
<div class="form-group row">
<label for="kakao_rest_key" class="col-sm-4 col-form-label">카카오 API Rest Key</label>
<div class="col-sm-8">
<input type="text" class="form-control" name="kakao_rest_key" id="kakao_rest_key"
placeholder="카카오톡 API의 Rest Key"
value="" />
</div>
</div>
<div class="form-group row">
<label for="kakao_admin_key" class="col-sm-4 col-form-label">카카오 API Admin Key</label>
<div class="col-sm-8">
<input type="text" class="form-control" name="kakao_admin_key" id="kakao_admin_key"
placeholder="카카오톡 API의 Admin Key"
value="" />
</div>
</div>
<div class="form-group row">
<div class="col-sm-4"></div>
<div class="col-sm-8">
+1
View File
@@ -52,6 +52,7 @@ $rootDB->insert('member',[
'oauth_type' => 'NONE',
'id' => $username,
'email' => null,
'token_valid_until'=>'2999-01-01 00:00:00',
'pw' => $finalPassword,
'salt' => $userSalt,
'grade'=> 6,
+1 -1
View File
@@ -24,7 +24,7 @@ $rootDB->error_handler = function($params){
]);
};
$memberCnt = $rootDB->queryFirstField('SELECT count(`NO`) from MEMBER');
$memberCnt = $rootDB->queryFirstField('SELECT count(`NO`) from member');
if($memberCnt == 0){
Json::die([
'step'=>'admin',
+36 -2
View File
@@ -11,6 +11,11 @@ $dbName = Util::getReq('db_name');
$servHost = Util::getReq('serv_host');
$sharedIconPath = Util::getReq('shared_icon_path');
$gameImagePath = Util::getReq('game_image_path');
$imageRequestKey = Util::getReq('image_request_key');
$kakaoRESTKey = Util::getReq('kakao_rest_key', 'string', '');
$kakaoAdminKey = Util::getReq('kakao_admin_key', 'string', '');
if (!$host || !$port || !$username || !$password || !$dbName || !$servHost || !$sharedIconPath || !$gameImagePath) {
Json::die([
@@ -186,6 +191,8 @@ $globalSalt = bin2hex(random_bytes(16));
$sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost);
$gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost);
$imageRequestPath = WebUtil::resolveRelativePath($gameImagePath.'/../hook/git_pull.php', $servHost);
$imageKeyInstallPath = WebUtil::resolveRelativePath($gameImagePath.'/../hook/InstallKey.php', $servHost);
$result = Util::generateFileUsingSimpleTemplate(
__dir__.'/templates/ServConfig.orig.php',
@@ -193,11 +200,17 @@ $result = Util::generateFileUsingSimpleTemplate(
[
'serverBasePath'=>$servHost,
'sharedIconPath'=>$sharedIconPath,
'gameImagePath'=>$gameImagePath
'gameImagePath'=>$gameImagePath,
'imageRequestPath'=>$imageRequestPath,
'imageRequestKey'=>$imageRequestKey
],
true
);
if($imageRequestKey){
@file_get_contents($imageKeyInstallPath.'?key='.$imageRequestKey);
}
if ($result !== true) {
Json::die([
'result'=>false,
@@ -216,6 +229,13 @@ $result = Util::generateFileUsingSimpleTemplate(
true
);
$result = Util::generateFileUsingSimpleTemplate(
__dir__.'/templates/menu.orig.json',
ROOT.'/d_shared/menu.json',
[],
true
);
if ($result !== true) {
Json::die([
'result'=>false,
@@ -256,6 +276,19 @@ $result = Util::generateFileUsingSimpleTemplate(
]
);
$kakaoRedirectURI = WebUtil::resolveRelativePath('oauth_kakao/oauth.php', $servHost.'/');
Util::generateFileUsingSimpleTemplate(
__dir__.'/templates/KakaoKey.orig.php',
ROOT.'/d_setting/KakaoKey.php',
[
'REST_API_KEY'=>$kakaoRESTKey,
'ADMIN_KEY'=>$kakaoAdminKey,
'REDIRECT_URI'=>$kakaoRedirectURI
],
true
);
if ($result !== true) {
Json::die([
'result'=>false,
@@ -265,5 +298,6 @@ if ($result !== true) {
Json::die([
'result'=>true,
'reason'=>'success'
'reason'=>'success',
'globalSalt'=>$globalSalt
]);
+117
View File
@@ -0,0 +1,117 @@
<?php
namespace sammo;
require(__dir__.'/../vendor/autoload.php');
$session = Session::requireLogin([])->setReadOnly();
if($session->userGrade < 6){
Json::die([
'result'=>false,
'reason'=>'관리자 아님'
]);
}
$servHost = Util::getReq('serv_host');
$sharedIconPath = Util::getReq('shared_icon_path');
$gameImagePath = Util::getReq('game_image_path');
if($servHost){
if(!$sharedIconPath || $gameImagePath){
Json::die([
'result'=>false,
'reason'=>'serv_host가 지정된 경우, sharedIconPath와 gameImagePath가 모두 지정되어야합니다.'
]);
}
$sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost);
$gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost);
$result = Util::generateFileUsingSimpleTemplate(
__dir__.'/templates/ServConfig.orig.php',
ROOT.'/d_setting/ServConfig.php',
[
'serverBasePath'=>$servHost,
'sharedIconPath'=>$sharedIconPath,
'gameImagePath'=>$gameImagePath
],
true
);
if ($result !== true) {
Json::die([
'result'=>false,
'reason'=>$result
]);
}
}
else if($sharedIconPath || $gameImagePath){
$servHost = ServConfig::$serverWebPath;
if($sharedIconPath){
$sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost);
}
else{
$sharedIconPath = ServConfig::$sharedIconPath;
}
if($gameImagePath){
$gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost);
}
else{
$gameImagePath = ServConfig::$gameImagePath;
}
$result = Util::generateFileUsingSimpleTemplate(
__dir__.'/templates/ServConfig.orig.php',
ROOT.'/d_setting/ServConfig.php',
[
'serverBasePath'=>$servHost,
'sharedIconPath'=>$sharedIconPath,
'gameImagePath'=>$gameImagePath
],
true
);
if ($result !== true) {
Json::die([
'result'=>false,
'reason'=>$result
]);
}
}
else{
$servHost = ServConfig::$serverWebPath;
$sharedIconPath = ServConfig::$sharedIconPath;
$gameImagePath = ServConfig::$gameImagePath;
}
$result = Util::generateFileUsingSimpleTemplate(
__dir__.'/templates/common_path.orig.js',
ROOT.'/d_shared/common_path.js',
[
'serverBasePath'=>$servHost,
'sharedIconPath'=>$sharedIconPath,
'gameImagePath'=>$gameImagePath
],
true
);
$result = Util::generateFileUsingSimpleTemplate(
__dir__.'/templates/common.orig.css',
ROOT.'/d_shared/common.css',
[
'serverBasePath'=>$servHost,
'sharedIconPath'=>$sharedIconPath,
'gameImagePath'=>$gameImagePath
],
true
);
if ($result !== true) {
Json::die([
'result'=>false,
'reason'=>$result
]);
}
+21 -2
View File
@@ -20,14 +20,19 @@ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `member` (
`NO` INT(11) NOT NULL AUTO_INCREMENT,
`oauth_id` BIGINT(20) NULL DEFAULT NULL,
`oauth_type` ENUM('NONE','KAKAO') NOT NULL,
`ID` VARCHAR(64) NOT NULL,
`EMAIL` VARCHAR(64) NULL DEFAULT NULL,
`oauth_type` ENUM('NONE','KAKAO') NOT NULL,
`oauth_info` TEXT NOT NULL DEFAULT '{}',
`token_valid_until` DATETIME NULL DEFAULT NULL,
`PW` CHAR(128) NOT NULL,
`salt` CHAR(16) NOT NULL,
`third_use` INT(1) NOT NULL DEFAULT '0',
`NAME` VARCHAR(64) NOT NULL,
`PICTURE` VARCHAR(64) NULL DEFAULT 'default.jpg',
`IMGSVR` INT(1) NULL DEFAULT '0',
`acl` TEXT NOT NULL DEFAULT '{}' COMMENT 'json',
`penalty` TEXT NOT NULL DEFAULT '{}' COMMENT 'json',
`GRADE` INT(1) NULL DEFAULT '1',
`REG_NUM` INT(3) NULL DEFAULT '0',
`REG_DATE` DATETIME NOT NULL,
@@ -53,4 +58,18 @@ CREATE TABLE `member_log` (
INDEX `action` (`member_no`, `action_type`, `date`),
INDEX `member` (`member_no`, `date`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
###################
# KV storage
###################
CREATE TABLE if not exists `storage` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`namespace` VARCHAR(40) NOT NULL,
`key` VARCHAR(40) NOT NULL,
`value` TEXT NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `key` (`namespace`, `key`)
)
COLLATE='utf8mb4_general_ci'
ENGINE=MyISAM
+12
View File
@@ -0,0 +1,12 @@
CREATE TABLE IF NOT EXISTS `err_log` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`date` TEXT NOT NULL,
`err` TEXT NOT NULL,
`errstr` TEXT NOT NULL,
`errpath` TEXT NOT NULL,
`trace` TEXT NOT NULL,
`webuser` TEXT NULL
);
CREATE INDEX IF NOT EXISTS `date` ON `err_log` (
`date` DESC
);
+4
View File
@@ -29,6 +29,10 @@ class RootDB
if (self::$uDB === null) {
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->error_handler= function(){};
self::$uDB->throw_exception_on_error = true;
self::$uDB->throw_exception_on_nonsql_error = true;
}
return self::$uDB;
}
+19 -4
View File
@@ -10,22 +10,37 @@ class ServConfig
public static $serverWebPath = '_tK_serverBasePath_';
public static $sharedIconPath = '_tK_sharedIconPath_';
public static $gameImagePath = "_tK_gameImagePath_";
public static $imageRequestPath = "_tK_imageRequestPath_";
public static $imageRequestKey = '_tK_imageRequestKey_';
public static function getSharedIconPath() : string
public static function getSharedIconPath(string $filepath='') : string
{
if($filepath){
return static::$sharedIconPath."/{$filepath}";
}
return static::$sharedIconPath;
}
public static function getUserIconPath() : string
public static function getUserIconPath(string $filepath='') : string
{
return AppConf::getUserIconPathWeb();
return AppConf::getUserIconPathWeb($filepath);
}
public static function getGameImagePath() : string
public static function getGameImagePath(string $filepath='') : string
{
if($filepath){
return static::$gameImagePath."/{$filepath}";
}
return static::$gameImagePath;
}
public static function getImagePullURI() : string
{
$now = time();
$req_hash = Util::hashPassword(sprintf("%016x",$now), static::$imageRequestKey);
return static::$imageRequestPath."?req={$req_hash}&time={$now}";
}
/**
* 서버 주소 반환. 서버의 경로가 하부 디렉토리인 경우에 하부 디렉토리까지 포함
+97 -9
View File
@@ -41,18 +41,106 @@
url('_tK_gameImagePath_/winter.gif') no-repeat right;
}
.map_spring .map_body{
background: url('_tK_gameImagePath_/map1.jpg') no-repeat;
/*체 지도*/
.map_theme_che.map_spring .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_spring.jpg') no-repeat;
}
.map_summer .map_body{
background: url('_tK_gameImagePath_/map2.jpg') no-repeat;
.map_theme_che.map_summer .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_summer.jpg') no-repeat;
}
.map_fall .map_body{
background: url('_tK_gameImagePath_/map3.jpg') no-repeat;
.map_theme_che.map_fall .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_fall.jpg') no-repeat;
}
.map_winter .map_body{
background: url('_tK_gameImagePath_/map4.jpg') no-repeat;
}
.map_theme_che.map_winter .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_winter.jpg') no-repeat;
}
.map_theme_che .map_bgroad{
background: url('_tK_gameImagePath_/map/che/che_road.png') no-repeat;
}
/*미니체 지도*/
.map_theme_miniche.map_spring .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_spring.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche.map_summer .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_summer.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche.map_fall .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_fall.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche.map_winter .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_winter.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche .map_bgroad{
background: url('_tK_gameImagePath_/map/che/miniche_road.png') no-repeat;
background-size: 700px 500px;
}
/*미니체 지도*/
.map_theme_miniche_b.map_spring .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_spring.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_b.map_summer .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_summer.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_b.map_fall .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_fall.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_b.map_winter .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_winter.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_b .map_bgroad{
background: url('_tK_gameImagePath_/map/che/miniche_road.png') no-repeat;
background-size: 700px 500px;
}
/*루드라사움 지도*/
.map_theme_ludo_rathowm .map_bglayer1{
background: url('_tK_gameImagePath_/map/ludo_rathowm/back.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_ludo_rathowm .map_bgroad{
background: url('_tK_gameImagePath_/map/ludo_rathowm/road.png') no-repeat;
background-size: 700px 500px;
}
.world_map.map_theme_ludo_rathowm .map_title .map_title_text::before {
color:white;
content:'LP';
margin-right:1ch;
}
/*체스판 지도*/
.map_theme_chess .map_bglayer1{
background: url('_tK_gameImagePath_/map/chess/chessboard.png') no-repeat;
background-size: 700px 500px;
}
/*포켓몬 v1 지도*/
.map_theme_pokemon_v1 .map_bglayer1{
background: url('_tK_gameImagePath_/map/pokemon_v1/back_pal8.png') no-repeat;
background-size: 700px 500px;
}
+8
View File
@@ -0,0 +1,8 @@
[
["/bbs/board", "삼모게시판", "_blank"],
["/bbs/tip", "팁/강좌", "_blank"],
["/bbs/news", "삼국 일보", "_blank"],
["/bbs/history2", "개인 열전", "_blank"],
["/bbs/history3", "국가 열전", "_blank"],
["/bbs/patch", "패치 내역", "_blank"]
]
+17 -14
View File
@@ -5,15 +5,17 @@ include "lib.php";
include "func.php";
$session = Session::requireGameLogin()->setReadOnly();
if($session->userGrade < 5) {
?><!DOCTYPE html>
if($session->userGrade < 4) {
?>
<!DOCTYPE html>
<html>
<head>
<title>관리메뉴</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
관리자가 아닙니다.<br>
@@ -25,11 +27,10 @@ if($session->userGrade < 5) {
}
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
$query = "select turntime,tnmt_time from game";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$admin = MYDB_fetch_array($result);
[$turntime, $tnmt_time] = $gameStor->getValuesAsArray(['turntime','tnmt_time']);
$query = "select plock from plock";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
@@ -38,15 +39,17 @@ $plock = MYDB_fetch_array($result);
<!DOCTYPE html>
<html>
<head>
<title>삼국지 모의전투 PHP (유기체서버)</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<title>삼국지 모의전투 HiDCHe</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
<form action=_119_b.php method=post>
시간조정 : <input type=text size=3 name=minute><input type=submit name=btn value='분당김'><input type=submit name=btn value='분지연'> 최종갱신 : <?=$admin['turntime']?><br>
시간조정 : <input type=text size=3 name=minute2><input type=submit name=btn value='토너분당김'><input type=submit name=btn value='토너분지연'> 토너먼트 : <?=$admin['tnmt_time']?><br>
시간조정 : <input type=text size=3 name=minute><input type=submit name=btn value='분당김'><input type=submit name=btn value='분지연'> 최종갱신 : <?=$turntime?><br>
시간조정 : <input type=text size=3 name=minute2><input type=submit name=btn value='토너분당김'><input type=submit name=btn value='토너분지연'> 토너먼트 : <?=$tnmt_time?><br>
봉급지급 : <input type=submit name=btn value='금지급'><input type=submit name=btn value='쌀지급'><br>
: <input type=submit name=btn value='락걸기'><input type=submit name=btn value='락풀기'> 현재 : <?=$plock['plock']>0?"동결중":"가동중"?><br>
</form>
+46 -28
View File
@@ -6,9 +6,9 @@ include "func.php";
$session = Session::requireGameLogin()->setReadOnly();
if($session->userGrade < 5){
//echo "<script>location.replace('_119.php');</script>";
echo '_119.php';//TODO:debug all and replace
if($session->userGrade < 4){
header('location:_119.php');
die();
}
$v = new Validator($_POST);
@@ -20,36 +20,58 @@ if(!$v->validate()){
Error($v->errorStr());
}
$btn = Util::getReq('btn');
$minute = Util::getReq('minute', 'int');
$minute2 = Util::getReq('minute2', 'int');
$db = DB::db();
$connect=$db->get();
extractMissingPostToGlobals();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
switch($btn) {
case "분당김":
$query = "update game set turntime=DATE_SUB(turntime, INTERVAL $minute MINUTE),starttime=DATE_SUB(starttime, INTERVAL $minute MINUTE),tnmt_time=DATE_SUB(tnmt_time, INTERVAL $minute MINUTE)";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update general set turntime=DATE_SUB(turntime, INTERVAL $minute MINUTE)";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update auction set expire=DATE_SUB(expire, INTERVAL $minute MINUTE)";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gameStor->cacheValues(['turntime', 'starttime', 'tnmt_time']);
$turntime = (new \DateTimeImmutable($gameStor->turntime))->sub(new \DateInterval("PT{$minute}M"));
$starttime = (new \DateTimeImmutable($gameStor->starttime))->sub(new \DateInterval("PT{$minute}M"));
$tnmt_time = (new \DateTimeImmutable($gameStor->tnmt_time))->sub(new \DateInterval("PT{$minute}M"));
$gameStor->turntime = $turntime->format('Y-m-d H:i:s');
$gameStor->starttime = $starttime->format('Y-m-d H:i:s');
$gameStor->tnmt_time = $tnmt_time->format('Y-m-d H:i:s');
$db->update('general', [
'turntime'=>$db->sqleval('DATE_SUB(turntime, INTERVAL %i MINUTE)', $minute)
], true);
$db->update('auction', [
'expire'=>$db->sqleval('DATE_SUB(expire, INTERVAL %i MINUTE)', $minute)
], true);
break;
case "분지연":
$query = "update game set turntime=DATE_ADD(turntime, INTERVAL $minute MINUTE),starttime=DATE_ADD(starttime, INTERVAL $minute MINUTE),tnmt_time=DATE_ADD(tnmt_time, INTERVAL $minute MINUTE)";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update general set turntime=DATE_ADD(turntime, INTERVAL $minute MINUTE)";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update auction set expire=DATE_ADD(expire, INTERVAL $minute MINUTE)";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gameStor->cacheValues(['turntime', 'starttime', 'tnmt_time']);
$turntime = (new \DateTimeImmutable($gameStor->turntime))->add(new \DateInterval("PT{$minute}M"));
$starttime = (new \DateTimeImmutable($gameStor->starttime))->add(new \DateInterval("PT{$minute}M"));
$tnmt_time = (new \DateTimeImmutable($gameStor->tnmt_time))->add(new \DateInterval("PT{$minute}M"));
$gameStor->turntime = $turntime->format('Y-m-d H:i:s');
$gameStor->starttime = $starttime->format('Y-m-d H:i:s');
$gameStor->tnmt_time = $tnmt_time->format('Y-m-d H:i:s');
$db->update('general', [
'turntime'=>$db->sqleval('DATE_ADD(turntime, INTERVAL %i MINUTE)', $minute)
], true);
$db->update('auction', [
'expire'=>$db->sqleval('DATE_ADD(expire, INTERVAL %i MINUTE)', $minute)
], true);
break;
case "토너분당김":
$query = "update game set tnmt_time=DATE_SUB(tnmt_time, INTERVAL $minute2 MINUTE)";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$tnmt_time = new \DateTime($gameStor->tnmt_time);
$tnmt_time->sub(new \DateInterval("PT{$minute2}M"));
$gameStor->tnmt_time = $tnmt_time->format('Y-m-d H:i:s');
break;
case "토너분지연":
$query = "update game set tnmt_time=DATE_ADD(tnmt_time, INTERVAL $minute2 MINUTE)";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$tnmt_time = new \DateTimeImmutable($gameStor->tnmt_time);
$tnmt_time->add(new \DateInterval("PT{$minute2}M"));
$gameStor->tnmt_time = $tnmt_time->format('Y-m-d H:i:s');
break;
case "금지급":
processGoldIncome();
@@ -58,15 +80,11 @@ case "쌀지급":
processRiceIncome();
break;
case "락걸기":
$query = "update plock set plock=1";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('plock', ['plock'=>1], true);
break;
case "락풀기":
$query = "update plock set plock=0";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('plock', ['plock'=>0], true);
break;
}
//echo "<script>location.replace('_119.php');</script>";
//echo '_119.php';//TODO:debug all and replace
header('Location:_119.php');
header('Location:_119.php', true, 303);
+18 -15
View File
@@ -7,22 +7,23 @@ include "func.php";
$session = Session::requireGameLogin()->setReadOnly();
if($session->userGrade < 5) {
echo "<!DOCTYPE html>
?>
<!DOCTYPE html>
<html>
<head>
<title>관리메뉴</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
관리자가 아닙니다.<br>
";
echo banner();
echo "
<?=banner()?>
</body>
</html>";
</html>
<?php
exit();
}
@@ -35,16 +36,18 @@ $admin = getAdmin();
<html>
<head>
<title>게임관리</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class="tb_layout bg0">
<tr><td> <br><?=backButton()?></td></tr>
</table>
<form name=form1 method=post action=_admin1_submit.php>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class="tb_layout bg0">
<tr><td width=110 align=right>운영자메세지</td>
<td colspan=3><input type=textarea size=90 style=color:white;background-color:black; name=msg value='<?=$admin['msg']?>'><input type=submit name=btn value=변경></td></td>
</tr>
@@ -81,7 +84,7 @@ $admin = getAdmin();
</tr>
</table>
</form>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=backButton()?></td></tr>
<tr><td><?=banner()?> </td></tr>
</table>
+16 -18
View File
@@ -7,8 +7,8 @@ include "func.php";
$session = Session::requireGameLogin()->setReadOnly();
if ($session->userGrade < 5) {
//echo "<script>location.replace('_admin1.php');</script>";
echo '_admin1.php';//TODO:debug all and replace
header('location:_admin1.php');
die();
}
$v = new Validator($_POST);
@@ -17,27 +17,30 @@ $v->rule('integer', [
'minutes2'
])->rule('dateFormat', [
'starttime'
]);
], 'Y-m-d H:i:s');
if (!$v->validate()) {
Error($v->errorStr());
}
$msg = Util::getReq('msg');
$btn = Util::getReq('btn');
$log = Util::getReq('log');
$starttime = Util::getReq('starttime', 'string', (new \DateTime())->format('Y-m-d H:i:s'));
$maxgeneral = Util::getReq('maxgeneral', 'int', GameConst::$defaultMaxGeneral);
$maxnation = Util::getReq('maxnation', 'int', GameConst::$defaultMaxNation);
$startyear = Util::getReq('startyear', 'int', GameConst::$defaultStartYear);
extractMissingPostToGlobals();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
$admin = getAdmin();
switch ($btn) {
case "변경":
$msg = addslashes(SQ2DQ($msg));
$query = "update game set msg='$msg'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gameStor->msg = $msg;
break;
case "로그쓰기":
$lognum = $admin['historyindex'] + 1;
@@ -47,20 +50,16 @@ switch ($btn) {
pushWorldHistory(["<R>★</><S>{$log}</>"]);
break;
case "변경1":
$query = "update game set starttime='$starttime'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gameStor->starttime = (new \DateTime($starttime))->format('Y-m-d H:i:s');
break;
case "변경2":
$query = "update game set maxgeneral='$maxgeneral'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gameStor->maxgeneral = $maxgeneral;
break;
case "변경3":
$query = "update game set maxnation='$maxnation'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gameStor->maxnation = $maxnation;
break;
case "변경4":
$query = "update game set startyear='$startyear'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gameStor->startyear = $startyear;
break;
case "1분턴":
case "2분턴":
@@ -84,8 +83,8 @@ switch ($btn) {
$turn = ($admin['year'] - $admin['startyear']) * 12 + $admin['month'] - 1;
$starttime = date("Y-m-d H:i:s", strtotime($admin['turntime']) - $turn * $unit);
$starttime = cutTurn($starttime, $turnterm);
$query = "update game set turnterm='$turnterm',starttime='$starttime'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gameStor->turnterm = $turnterm;
$gameStor->starttime = $starttime;
// 턴시간이 길어지는 경우 랜덤턴 배정
if ($turnterm < $admin['turnterm']) {
$query = "select no from general";
@@ -117,5 +116,4 @@ switch ($btn) {
break;
}
//echo "<script>location.replace('_admin1.php');</script>";
echo '_admin1.php';//TODO:debug all and replace
header('location:_admin1.php');
+23 -28
View File
@@ -7,66 +7,61 @@ include "func.php";
$session = Session::requireGameLogin()->setReadOnly();
if($session->userGrade < 5) {
echo "<!DOCTYPE html>
?>
<!DOCTYPE html>
<html>
<head>
<title>관리메뉴</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
관리자가 아닙니다.<br>
";
echo banner();
echo "
<?=banner()?>
</body>
</html>";
</html>
<?php
exit();
}
$db = DB::db();
$connect=$db->get();
$query = "select conlimit from game limit 1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$admin = MYDB_fetch_array($result);
?>
<!DOCTYPE html>
<html>
<head>
<title>회원관리</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td> <br><?=backButton()?></td></tr>
</table>
<form name=form1 method=post action=_admin2_submit.php>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr>
<td width=80 align=center>접속제한</td>
<td width=713 align=center><input type=submit name=btn value='전체 접속허용'><input type=submit name=btn value='전체 접속제한'></td>
</tr>
</table>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr>
<td width=80 align=center rowspan=12>회원선택<br><br><font color=cyan>NPC</font><br><font color=skyblue>NPC유저</font><br><font color=red>접속제한</font><br><b style=background-color:red;>블럭회원</b></td>
<td width=105 rowspan=12>
<?php
echo "
<select name=genlist[] size=20 multiple style=color:white;background-color:black;font-size:13>";
<select name=genlist[] size=20 multiple style='color:white;background-color:black;font-size:13px'>";
$generalList = $db->query('SELECT `no`, `name`, npc, `block` FROM general ORDER BY npc, binary(`name`)');
$query = "select no,name,npc,block from general order by npc,binary(name)";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($result);
for($i=0; $i < $gencount; $i++) {
$general = MYDB_fetch_array($result);
foreach($generalList as $general){
$style = "style=;";
if($general['block'] > 0) { $style .= "background-color:red;"; }
if($general['npc'] >= 2) { $style .= "color:cyan;"; }
@@ -81,7 +76,7 @@ echo "
</td>
<td width=100 align=center>아이템 지급</td>
<td width=504>
<select name=weap size=1 style=color:white;background-color:black;font-size:13>";
<select name=weap size=1 style='color:white;background-color:black;font-size:13px'>";
for($i=0; $i < 27; $i++) {
echo "
<option value={$i}>{$i}</option>";
@@ -131,7 +126,7 @@ for($i=0; $i < 27; $i++) {
</tr>
</table>
</form>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=backButton()?></td></tr>
<tr><td><?=banner()?> </td></tr>
</table>
+243 -197
View File
@@ -4,11 +4,15 @@ namespace sammo;
include "lib.php";
include "func.php";
$btn = Util::getReq('btn');
$weap = Util::getReq('weap', 'int');
$genlist = Util::getReq('genlist', 'array_int');
$msg = Util::getReq('msg', 'string');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireLogin()->loginGame();
$session = Session::requireLogin()->loginGame()->setReadOnly();
if($session->userGrade < 5) {
header('location:_admin2.php');
@@ -17,292 +21,334 @@ if($session->userGrade < 5) {
$generalID = $session->generalID;
if(!$generalID){
header('location:_admin2.php');
die();
}
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
$src = MessageTarget::buildQuick($session->generalID);
switch($btn) {
case "전체 접속허용":
$query = "update general set con=0";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('general', [
'con'=>0
], true);
break;
case "전체 접속제한":
$query = "update general set con=1000";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('general', [
'con'=>1000
], true);
break;
case "블럭 해제":
$db->update('general', [
'block'=>0
], '`no` IN %li', $genlist);
DB::db()->query('update general set block=0 where no IN %li', $genlist);
break;
case "1단계 블럭":
$date = date('Y-m-d H:i:s');
$db = DB::db();
$db->query('update general set block=1,killturn=24 where no IN %li',$genlist);
//FIXME: subquery로 하는게 더 빠를 듯.
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
RootDB::db()->query('update MEMBER set block_num=block_num+1,block_date=%s where no IN %ls', $date, $uid);
$db->update('general', [
'block'=>1,
'killturn'=>24
], '`no` IN %li', $genlist);
$uid = $db->queryFirstColumn('SELECT `owner` FROM general WHERE `no` IN %li', $genlist);
RootDB::db()->update('member',[
'block_num'=>$db->sqleval('block_num+1'),
'block_date'=>$date
], 'id IN %li', $uid);
break;
case "2단계 블럭":
$date = date('Y-m-d H:i:s');
$db = DB::db();
$db->query('update general set gold=0,rice=0,block=2,killturn=24 where no IN %li',$genlist);
$db->update('general', [
'gold'=>0,
'rice'=>0,
'block'=>2,
'killturn'=>24
], '`no` IN %li', $genlist);
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
RootDB::db()->query('update MEMBER set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
RootDB::db()->update('member',[
'block_num'=>$db->sqleval('block_num+1'),
'block_date'=>$date
], 'id IN %li', $uid);
break;
case "3단계 블럭":
$date = date('Y-m-d H:i:s');
$db = DB::db();
$db->query('update general set gold=0,rice=0,block=3,killturn=24 where no IN %li',$genlist);
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
RootDB::db()->query('update MEMBER set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
$db->update('general', [
'gold'=>0,
'rice'=>0,
'block'=>3,
'killturn'=>24
], '`no` IN %li', $genlist);
$uid = $db->queryFirstColumn('SELECT `owner` from general where no IN %li', $genlist);
RootDB::db()->update('member',[
'block_num'=>$db->sqleval('block_num+1'),
'block_date'=>$date
], 'id IN %li', $uid);
break;
case "무한삭턴":
DB::db()->query('update general set killturn=8000 where no IN %li',$genlist);
$db->update('general', [
'killturn'=>8000
], '`no` IN %li', $genlist);
break;
case "강제 사망":
$date = date('Y-m-d H:i:s');
DB::db()->query('update general set turn0=0,killturn=0,turntime=%s where no IN %li',$date, $genlist);
$db->update('general', [
'turn0'=>EncodeCommand(0, 0, 0, 0),
'killturn'=>0,
'turntime'=>$date,
], '`no` IN %li', $genlist);
break;
case "특기 부여":
$admin = DB::db()->queryFirstRow('select `year`, `month` from `game` where `no`=1');
[$year, $month] = $gameStor->getValuesAsArray(['year', 'month']);
$text = "특기 부여!";
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
$msg = "특기 부여!";
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
}
for($i=0; $i < count($genlist); $i++) {
$query = "select no,leader,power,intel from general where no='$genlist[$i]'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
foreach($db->query("SELECT `no`,leader,power,intel,dex0,dex10,dex20,dex30,dex40 FROM general WHERE `no` IN %li", $genlist) as $general){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($general['no']), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
$special2 = getSpecial2($general['leader'], $general['power'], $general['intel']);
$query = "update general set specage2=age,special2='$special2' where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$log[0] = "<C>●</>특기 【<b><L>".getGenSpecial($special2)."</></b>】(을)를 익혔습니다!";
pushGeneralHistory($general, "<C>●</>{$admin['year']}{$admin['month']}월:특기 【<b><C>".getGenSpecial($special2)."</></b>】(을)를 습득");
pushGenLog($general, $log);
$specialWar = SpecialityConst::pickSpecialWar($general);
$db->update('general', [
'specage2'=>$db->sqleval('age'),
'special2'=>$specialWar
], 'no=%i', $general['no']);
$specialWarName = SpecialityConst::WAR[$specialWar][0];
$josaUl = JosaUtil::pick($specialWarName, '을');
pushGeneralHistory($general, "<C>●</>{$year}{$month}월:특기 【<b><C>{$specialWarName}</></b>】{$josaUl} 습득");
pushGenLog($general, ["<C>●</>특기 【<b><L>{$specialWarName}</></b>】{$josaUl} 익혔습니다!"]);
}
break;
case "경험치1000":
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
$msg = $btn." 지급!";
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
}
for($i=0; $i < count($genlist); $i++) {
$query = "update general set experience=experience+1000 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$text = $btn." 지급!";
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
$db->update('general',[
'experience'=>$db->sqleval('experience+1000')
], '`no` IN %li', $genlist);
break;
case "공헌치1000":
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
$msg = $btn." 지급!";
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
}
for($i=0; $i < count($genlist); $i++) {
$query = "update general set dedication=dedication+1000 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$text = $btn." 지급!";
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
$db->update('general',[
'dedication'=>$db->sqleval('dedication+1000')
], '`no` IN %li', $genlist);
break;
case "보숙10000":
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
$msg = "보병숙련도+10000 지급!";
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
}
for($i=0; $i < count($genlist); $i++) {
$query = "update general set dex0=dex0+10000 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$text = "보병숙련도+10000 지급!";
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
$db->update('general',[
'dex0'=>$db->sqleval('dex0+10000')
], '`no` IN %li', $genlist);
break;
case "궁숙10000":
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
$msg = "궁병숙련도+10000 지급!";
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
}
for($i=0; $i < count($genlist); $i++) {
$query = "update general set dex10=dex10+10000 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$text = "궁병숙련도+10000 지급!";
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
$db->update('general',[
'dex10'=>$db->sqleval('dex10+10000')
], '`no` IN %li', $genlist);
break;
case "기숙10000":
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
$msg = "기병숙련도+10000 지급!";
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
}
for($i=0; $i < count($genlist); $i++) {
$query = "update general set dex20=dex20+10000 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$src = MessageTarget::buildQuick($session->generalID);
$text = "기병숙련도+10000 지급!";
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
$db->update('general',[
'dex20'=>$db->sqleval('dex20+10000')
], '`no` IN %li', $genlist);
break;
case "귀숙10000":
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
$msg = "귀병숙련도+10000 지급!";
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
}
for($i=0; $i < count($genlist); $i++) {
$query = "update general set dex30=dex30+10000 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$src = MessageTarget::buildQuick($session->generalID);
$text = "귀병숙련도+10000 지급!";
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
$db->update('general',[
'dex30'=>$db->sqleval('dex30+10000')
], '`no` IN %li', $genlist);
break;
case "차숙10000":
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
$msg = "차병숙련도+10000 지급!";
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
}
for($i=0; $i < count($genlist); $i++) {
$query = "update general set dex40=dex40+10000 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$src = MessageTarget::buildQuick($session->generalID);
$text = "차병숙련도+10000 지급!";
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
$db->update('general',[
'dex40'=>$db->sqleval('dex40+10000')
], '`no` IN %li', $genlist);
break;
case "접속 허용":
for($i=0; $i < count($genlist); $i++) {
$query = "update general set con=0 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
$db->update('general',[
'con'=>0
], '`no` IN %li', $genlist);
break;
case "접속 제한":
for($i=0; $i < count($genlist); $i++) {
$query = "update general set con=1000 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
$db->update('general',[
'con'=>1000
], '`no` IN %li', $genlist);
break;
case "메세지 전달":
//TODO:새 갠메 시스템으로 변경
$date = date('Y-m-d H:i:s');
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
$text = $msg;
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
break;
case "무기지급":
$date = date('Y-m-d H:i:s');
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
if($weap == 0) { $msg = "무기 회수!"; }
else { $msg = getWeapName($weap)." 지급!"; }
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
if($weap == 0) {
$text = "무기 회수!";
}
for($i=0; $i < count($genlist); $i++) {
if($weap == 0) {
$query = "update general set weap='0' where no='$genlist[$i]'";
} else {
$query = "update general set weap='$weap' where no='$genlist[$i]' and weap<'$weap'";
}
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
else {
$text = getWeapName($weap)." 지급!";
}
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
if($weap == 0){
$db->update('general', [
'weap'=>0
], '`no` IN %li', $genlist);
}
else{
$db->update('general', [
'weap'=>$weap
], '`no` IN %li AND weap < %i', $genlist, $weap);
}
break;
case "책지급":
$date = date('Y-m-d H:i:s');
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
if($weap == 0) { $msg = "서적 회수!"; }
else { $msg = getBookName($weap)." 지급!"; }
// 상대에게 발송
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
if($weap == 0) {
$text = "책 회수!";
}
for($i=0; $i < count($genlist); $i++) {
if($weap == 0) {
$query = "update general set book='0' where no='$genlist[$i]'";
} else {
$query = "update general set book='$weap' where no='$genlist[$i]' and book<'$weap'";
}
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
else {
$text = getBookName($weap)." 지급!";
}
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
if($weap == 0){
$db->update('general', [
'book'=>0
], '`no` IN %li', $genlist);
}
else{
$db->update('general', [
'book'=>$weap
], '`no` IN %li AND book < %i', $genlist, $weap);
}
break;
case "말지급":
$date = date('Y-m-d H:i:s');
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
if($weap == 0) { $msg = "말 회수!"; }
else { $msg = getHorseName($weap)." 지급!"; }
// 상대에게 발송
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
if($weap == 0) {
$text = "말 회수!";
}
for($i=0; $i < count($genlist); $i++) {
if($weap == 0) {
$query = "update general set horse='0' where no='$genlist[$i]'";
} else {
$query = "update general set horse='$weap' where no='$genlist[$i]' and horse<'$weap'";
}
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
else {
$text = getHorseName($weap)." 지급!";
}
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
if($weap == 0){
$db->update('general', [
'horse'=>0
], '`no` IN %li', $genlist);
}
else{
$db->update('general', [
'horse'=>$weap
], '`no` IN %li AND horse < %i', $genlist, $weap);
}
break;
case "도구지급":
$date = date('Y-m-d H:i:s');
for($i=0; $i < count($genlist); $i++) {
$you = DB::db()->queryFirstRow('select `no`, `nation` from `general` where `no` = %i', $genlist[$i]);
if($weap == 0) { $msg = "특수도구 회수!"; }
else { $msg = getItemName($weap)." 지급!"; }
// 상대에게 발송
sendMessage('private', ['id'=>$generalID, 'nation_id'=>0], ['id'=>$you['no'], 'nation_id'=>$you['nation']], $msg);
if($weap == 0) {
$text = "특수도구 회수!";
}
for($i=0; $i < count($genlist); $i++) {
if($weap == 0) {
$query = "update general set item='0' where no='$genlist[$i]'";
} else {
$query = "update general set item='$weap' where no='$genlist[$i]' and item<'$weap'";
}
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
else {
$text = getItemName($weap)." 지급!";
}
foreach($genlist as $generalID){
$msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []);
$msg->send(true);
}
if($weap == 0){
$db->update('general', [
'item'=>0
], '`no` IN %li', $genlist);
}
else{
$db->update('general', [
'item'=>$weap
], '`no` IN %li AND item < %i', $genlist, $weap);
}
break;
case "NPC해제":
for($i=0; $i < count($genlist); $i++) {
$query = "update general set npc=1 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
$db->update('general', [
'npc'=>1
], '`no` IN %li', $genlist);
break;
case "하야입력":
for($i=0; $i < count($genlist); $i++) {
$query = "update general set turn0='00000000000045' where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
$db->update('general', [
'turn0'=>EncodeCommand(0, 0, 0, 45)
], '`no` IN %li', $genlist);
break;
case "방랑해산":
for($i=0; $i < count($genlist); $i++) {
$query = "update general set turn0='00000000000047',turn1='00000000000056' where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
$db->update('general', [
'turn0'=>EncodeCommand(0, 0, 0, 47),
'turn1'=>EncodeCommand(0, 0, 0, 56)
], '`no` IN %li', $genlist);
break;
case "NPC설정":
for($i=0; $i < count($genlist); $i++) {
$query = "update general set npc=2 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
$db->update('general', [
'npc'=>2
], '`no` IN %li', $genlist);
break;
case "00턴":
$query = "select turnterm from game limit 1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$admin = MYDB_fetch_array($result);
$turnterm = $gameStor->turnterm;
for($i=0; $i < count($genlist); $i++) {
$turntime = getRandTurn($admin['turnterm']);
$cutTurn = cutTurn($turntime, $admin['turnterm']);
$query = "update general set turntime='$cutTurn' where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
foreach($genlist as $generalID){
$turntime = getRandTurn($turnterm);
$cutTurn = cutTurn($turntime, $turnterm);
$db->update('general', [
'turntime'=>$curTurn
], '`no` IN %li', $genlist);
}
break;
case "랜덤턴":
$query = "select turnterm from game limit 1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$admin = MYDB_fetch_array($result);
for($i=0; $i < count($genlist); $i++) {
$turntime = getRandTurn($admin['turnterm']);
$query = "update general set turntime='$turntime' where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
foreach($genlist as $generalID){
$turntime = getRandTurn($turnterm);
$db->update('general', [
'turntime'=>$turntime
], '`no` IN %li', $genlist);
}
break;
}
//echo "<script>location.replace('_admin2.php');</script>";
echo '_admin2.php';//TODO:debug all and replace
header('location:_admin2.php');
+24 -27
View File
@@ -7,65 +7,62 @@ include "func.php";
$session = Session::requireGameLogin()->setReadOnly();
if($session->userGrade < 5) {
echo "<!DOCTYPE html>
?>
<!DOCTYPE html>
<html>
<head>
<title>관리메뉴</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
관리자가 아닙니다.<br>
";
echo banner();
echo "
<?=banner()?>
</body>
</html>";
</html>
<?php
exit();
}
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
$query = "select conlimit from game limit 1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$admin = MYDB_fetch_array($result);
$conlimit = $gameStor->conlimit;
?>
<!DOCTYPE html>
<html>
<head>
<title>멀티관리</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td> <br><?=backButton()?></td></tr>
</table>
<form name=form1 method=post action=_admin4_submit.php>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr>
<td width=80 align=center rowspan=3>회원선택<br><br><font color=cyan>NPC</font><br><font color=skyblue>NPC유저</font><br><font color=red>접속제한</font><br><b style=background-color:red;>블럭회원</b></td>
<td width=105 rowspan=3>
<?php
echo "
<select name=genlist[] size=20 multiple style=color:white;background-color:black;font-size:13>";
<select name=genlist[] size=20 multiple style='color:white;background-color:black;font-size:13px'>";
$query = "select no,name,npc,block from general where ip!='' order by npc,ip";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($result);
for($i=0; $i < $gencount; $i++) {
$general = MYDB_fetch_array($result);
foreach($db->query('SELECT no,name,npc,block,con from general where ip!=\'\' order by npc,ip') as $general){
$style = "style=;";
if($general['block'] > 0) { $style .= "background-color:red;"; }
if($general['npc'] >= 2) { $style .= "color:cyan;"; }
elseif($general['npc'] == 1) { $style .= "color:skyblue;"; }
if($general['con'] > $admin['conlimit']) { $style .= "color:red;"; }
if($general['con'] > $conlimit) { $style .= "color:red;"; }
echo "
<option value={$general['no']} $style>{$general['name']}</option>";
@@ -90,7 +87,7 @@ echo "
<td><input type=textarea size=60 maxlength=255 name=msg style=background-color:black;color:white;><input type=submit name=btn value='메세지 전달'></td>
</tr>
</table>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr>
<td align=center width=100>장수명</td>
<td align=center width=180>최근로그인</td>
@@ -137,7 +134,7 @@ echo "
//NOTE: password의 md5 해시가 같은지 확인하는 방식으로는 앞으로 잡아낼 수 없다. 폐기
?>
</form>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=backButton()?></td></tr>
<tr><td><?=banner()?> </td></tr>
</table>
+26 -9
View File
@@ -7,12 +7,17 @@ include "func.php";
$session = Session::requireGameLogin()->setReadOnly();
if($session->userGrade < 5) {
//echo "<script>location.replace('_admin4.php');</script>";
echo '_admin4.php';//TODO:debug all and replace
header('location:_admin4.php');
die();
}
$btn = Util::getReq('btn');
$genlist = Util::getReq('genlist', 'array_int');
$msg = Util::getReq('msg','string', '메시지');
extractMissingPostToGlobals();
$db = DB::db();
$connect=$db->get();
//NOTE: 왜 기능이 admin2와 admin4가 같이 있는가?
//NOTE: 왜 블럭 시 admin4에선 금쌀을 없애지 않는가?
@@ -26,37 +31,49 @@ switch($btn) {
$db->query('update general set block=1,killturn=24 where no IN %li',$genlist);
//FIXME: subquery로 하는게 더 빠를 듯.
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
RootDB::db()->query('update MEMBER set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
RootDB::db()->query('update member set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
break;
case "2단계 블럭":
$date = date('Y-m-d H:i:s');
$db = DB::db();
$db->query('update general set block=2,killturn=24 where no IN %li',$genlist);
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
RootDB::db()->query('update MEMBER set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
RootDB::db()->query('update member set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
break;
case "3단계 블럭":
$date = date('Y-m-d H:i:s');
$db = DB::db();
$db->query('update general set block=3,killturn=24 where no IN %li',$genlist);
$uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist);
RootDB::db()->query('update MEMBER set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
RootDB::db()->query('update member set block_num=block_num+1,block_date=%s where id IN %ls', $date, $uid);
break;
case "무한삭턴":
DB::db()->query('update general set killturn=8000 where no IN %li',$genlist);
break;
case "강제 사망":
$date = date('Y-m-d H:i:s');
DB::db()->query('update general set turn0=0,killturn=0,turntime=%s where no IN %li',$date, $genlist);
DB::db()->query('update general set turn0=%s,killturn=0,turntime=%s where no IN %li',EncodeCommand(0, 0, 0, 0),$date, $genlist);
break;
case "메세지 전달":
//TODO:새 갠메 시스템으로 변경
$date = date('Y-m-d H:i:s');
$src = MessageTarget::buildQuick($session->generalID);
for($i=0; $i < count($genlist); $i++) {
$msgObj = new Message(
Message::MSGTYPE_PRIVATE,
$src,
MessageTarget::buildQuick($genlist[$i]),
$msg,
new DateTime(),
new \DateTime('9999-12-31'),
[]
);
if($msgObj){
$msgObj->send(true);
}
}
break;
}
//echo "<script>location.replace('_admin4.php');</script>";
echo '_admin4.php'; //TODO:debug all and replace
header('location:_admin4.php');
+32 -29
View File
@@ -7,57 +7,60 @@ include "func.php";
$type = Util::getReq('type', 'int', 0);
$type2 = Util::getReq('type2', 'int', 0);
if($type < 0 || $type > 17){
$type = 0;
}
if($type2 < 0 || $type2 > 6){
$type2 = 0;
}
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
if($session->userGrade < 5) {
echo "<!DOCTYPE html>
?>
<!DOCTYPE html>
<html>
<head>
<title>관리메뉴</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
관리자가 아닙니다.<br>
";
echo banner();
echo "
<?=banner()?>
</body>
</html>";
</html>
<?php
exit();
}
$db = DB::db();
$connect=$db->get();
if($type == 0) {
$type = 0;
}
if($type2 == 0) {
$type2 = 0;
}
$sel = [];
$sel2 = [];
$sel[$type] = "selected";
$sel2[$type2] = "selected";
$query = "select conlimit from game limit 1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$admin = MYDB_fetch_array($result);
?>
<!DOCTYPE html>
<html>
<head>
<title>일제정보</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td> <br><?=closeButton()?></td></tr>
<tr><td>
<form name=form1 method=post>정렬순서 :
@@ -112,7 +115,7 @@ for($i=1; $i <= $count; $i++) {
</td></tr>
</table>
<table align=center width=1600 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px; id=bg0>
<table align=center width=1600 class="tb_layout bg0">
<tr id=bg1>
<td align=center>국명</td>
<td align=center>접률</td>
@@ -155,7 +158,7 @@ SELECT
A.chemi,
A.color,
A.tech,
A.tricklimit,
A.sabotagelimit,
A.gold,
A.rice,
COUNT(B.nation) AS gennum,
@@ -230,7 +233,7 @@ for($i=0; $i < $nationCount; $i++) {
<td align=center>&nbsp;{$gen['cnt']}&nbsp;</td>
<td align=center>&nbsp;{$city['cnt']}&nbsp;</td>
<td align=center>&nbsp;{$nation['tech']}&nbsp;</td>
<td align=center>&nbsp;{$nation['tricklimit']}&nbsp;</td>
<td align=center>&nbsp;{$nation['sabotagelimit']}&nbsp;</td>
<td align=center>&nbsp;{$nation['gold']}&nbsp;</td>
<td align=center>&nbsp;{$nation['rice']}&nbsp;</td>
<td align=center>&nbsp;{$gen['avgg']}&nbsp;</td>
@@ -259,11 +262,11 @@ for($i=0; $i < $nationCount; $i++) {
?>
</table>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<tr><td><?=getTrickLogRecent(20)?></td></tr>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=getSabotageLogRecent(20)?></td></tr>
</table>
<table align=center width=1760 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px; id=bg0>
<table align=center width=1760 class="tb_layout bg0">
<tr id=bg1>
<td width=30 align=center></td>
<td width=30 align=center></td>
@@ -314,7 +317,7 @@ for($i=0; $i < $count; $i++) {
?>
</table>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=closeButton()?></td></tr>
<tr><td><?=banner()?> </td></tr>
</table>
+6 -4
View File
@@ -4,15 +4,18 @@ namespace sammo;
include "lib.php";
include "func.php";
$btn = Util::getReq('btn');
$nation = Util::getReq('nation', 'int');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
if($session->userGrade < 5) {
//echo "<script>location.replace('_admin5.php');</script>";
echo '_admin5.php';//TODO:debug all and replace
header('location:_admin5.php');
die();
}
$db = DB::db();
@@ -34,7 +37,6 @@ switch($btn) {
break;
}
//echo "<script>location.replace('_admin5.php');</script>";
echo '_admin5.php';//TODO:debug all and replace
header('location:_admin5.php');
+30 -23
View File
@@ -3,35 +3,40 @@ namespace sammo;
include "lib.php";
include "func.php";
$type = Util::getReq('type', 'int', 0);
if($type < 0 || $type > 4){
$type = 0;
}
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
if($session->userGrade < 5) {
echo "<!DOCTYPE html>
?>
<!DOCTYPE html>
<html>
<head>
<title>관리메뉴</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
관리자가 아닙니다.<br>
";
echo banner();
echo "
<?=banner()?>
</body>
</html>";
</html>
<?php
exit();
}
$db = DB::db();
$connect=$db->get();
if($type == 0) {
$type = 0;
}
$sel[$type] = "selected";
?>
@@ -39,25 +44,27 @@ $sel[$type] = "selected";
<html>
<head>
<title>접속정보</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td> <br><?=closeButton()?></td></tr>
<tr><td><form name=form1 method=post>정렬순서 :
<select name=type size=1>
<option <?=$sel[0]?> value=0>접속률</option>
<option <?=$sel[1]?> value=1>총갱신</option>
<option <?=$sel[2]?> value=2>갱신/턴</option>
<option <?=$sel[3]?> value=3>총로그인</option>
<option <?=$sel[4]?> value=4>갱신/로그인</option>
<option <?=$sel[0]??''?> value=0>접속률</option>
<option <?=$sel[1]??''?> value=1>총갱신</option>
<option <?=$sel[2]??''?> value=2>갱신/턴</option>
<option <?=$sel[3]??''?> value=3>총로그인</option>
<option <?=$sel[4]??''?> value=4>갱신/로그인</option>
</select>
<input type=submit value='정렬하기'></form>
</td></tr>
</table>
<table align=center border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center class='tb_layout bg0'>
<tr id=bg1>
<td align=center width=120>장수명</td>
<td align=center width=50>접속률</td>
@@ -96,7 +103,7 @@ for($i=0; $i < $gencount; $i++) {
?>
</table>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=closeButton()?></td></tr>
<tr><td><?=banner()?> </td></tr>
</table>
+33 -22
View File
@@ -3,26 +3,38 @@ namespace sammo;
include "lib.php";
include "func.php";
$btn = Util::getReq('btn');
$gen = Util::getReq('gen', 'int', 0);
$type = Util::getReq('type', 'int', 0);
if($type < 0 || $type > 3){
$type = 0;
}
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
if($session->userGrade < 5) {
echo "<!DOCTYPE html>
?>
<!DOCTYPE html>
<html>
<head>
<title>관리메뉴</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
관리자가 아닙니다.<br>
";
echo banner();
echo "
<?=banner()?>
</body>
</html>";
</html>
<?php
exit();
}
@@ -33,30 +45,29 @@ if($btn == '정렬하기') {
$gen = 0;
}
if($type == 0) {
$type = 0;
}
$sel[$type] = "selected";
?>
<!DOCTYPE html>
<html>
<head>
<title>로그정보</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td> <br><?=closeButton()?></td></tr>
<tr><td>
<form name=form1 method=post>
정렬순서 :
<select name=type size=1>
<option <?=$sel[0]?> value=0>최근턴</option>
<option <?=$sel[1]?> value=1>최근전투</option>
<option <?=$sel[2]?> value=2>장수명</option>
<option <?=$sel[3]?> value=3>전투수</option>
<option <?=$sel[0]??''?> value=0>최근턴</option>
<option <?=$sel[1]??''?> value=1>최근전투</option>
<option <?=$sel[2]??''?> value=2>장수명</option>
<option <?=$sel[3]??''?> value=3>전투수</option>
</select>
<input type=submit name=btn value='정렬하기'>
대상장수 :
@@ -91,7 +102,7 @@ for($i=0; $i < $gencount; $i++) {
</form>
</td></tr>
</table>
<table width=1000 align=center border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table width=1000 align=center class='tb_layout bg0'>
<tr>
<td width=50% align=center id=bg1><font color=skyblue size=3> </font></td>
<td width=50% align=center id=bg1><font color=orange size=3>-</font></td>
@@ -128,7 +139,7 @@ for($i=0; $i < $gencount; $i++) {
</td>
</tr>
</table>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=closeButton()?></td></tr>
<tr><td><?=banner()?> </td></tr>
</table>
+32 -62
View File
@@ -3,26 +3,34 @@ namespace sammo;
include "lib.php";
include "func.php";
$btn = Util::getReq('btn');
$gen = Util::getReq('gen', 'int', 0);
$type = 0;
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
if ($session->userGrade < 5) {
echo "<!DOCTYPE html>
?>
<!DOCTYPE html>
<html>
<head>
<title>관리메뉴</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
관리자가 아닙니다.<br>
";
echo banner();
echo "
<?=banner()?>
</body>
</html>";
</html>
<?php
exit();
}
@@ -33,40 +41,38 @@ if ($btn == '정렬하기') {
$gen = 0;
}
if ($type == 0) {
$type = 0;
}
$sel[$type] = "selected";
?>
<!DOCTYPE html>
<html>
<head>
<title>외교정보</title>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td> <br><?=closeButton()?></td></tr>
<tr><td>
<form name=form1 method=post>
정렬순서 :
<select name=type size=1>
<option <?=$sel[0]?> value=0>상태</option>
<option <?=$sel[0]??''?> value=0>상태</option>
</select>
<input type=submit name=btn value='정렬하기'>
</form>
</td></tr>
</table>
<table width=1000 align=center border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table width=1000 align=center class='tb_layout bg0'>
<tr><td colspan=9 align=center bgcolor=blue> </td></tr>
<tr>
<td width=100 align=center id=bg1> </td>
<td width=100 align=center id=bg1> </td>
<td width=130 align=center id=bg1> </td>
<td width=130 align=center id=bg1> </td>
<td width=80 align=center id=bg1> </td>
<td width=60 align=center id=bg1> </td>
<td align=center id=bg1> </td>
</tr>
<?php
@@ -77,9 +83,9 @@ foreach (getAllNationStaticInfo() as $nation) {
$nationColor[$nation['nation']] = $nation['color'];
}
switch ($type) {
case 0: $query = "select * from diplomacy where me < you order by state desc"; break;
}
$query = "select * from diplomacy where me < you order by state desc";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$dipcount = MYDB_num_rows($result);
for ($i=0; $i < $dipcount; $i++) {
@@ -88,11 +94,7 @@ for ($i=0; $i < $dipcount; $i++) {
$me = $dip['me'];
$you = $dip['you'];
$query = "select reserved,showing from diplomacy where you='$me' and me='$you'";
$result2 = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$dip2 = MYDB_fetch_array($result2);
if ($dip['state'] == 2 && $dip['fixed'] == "" && $dip['reserved'] == "" && $dip2['reserved'] == "") {
if ($dip['state'] == 2) {
continue;
}
@@ -108,37 +110,6 @@ for ($i=0; $i < $dipcount; $i++) {
}
$date = date('Y-m-d H:i:s');
$note = "";
if ($dip['fixed'] != "") {
if ($dip['state'] == 7) {
$note .= $dip['fixed'];
} else {
$note .= "<font color=gray>{$dip['fixed']}</font>";
}
if ($dip['reserved'] != "" || $dip2['reserved'] != "") {
$note .= "<br>";
}
}
if ($dip['reserved'] != "") {
if ($dip['showing'] >= $date) {
$note .= "<font color=skyblue>아국측 제의</font>: {$dip['reserved']}";
} else {
$note .= "<font color=gray>아국측 제의: {$dip['reserved']}</font>";
}
if ($dip2['reserved'] != "") {
$note .= "<br>";
}
}
if ($dip2['reserved'] != "") {
if ($dip2['showing'] >= $date) {
$note .= "<font color=limegreen>상대측 제의</font>: {$dip2['reserved']}";
} else {
$note .= "<font color=gray>상대측 제의: {$dip2['reserved']}</font>";
}
}
if ($note == "") {
$note = "&nbsp;";
}
echo "
<tr>
@@ -146,12 +117,11 @@ for ($i=0; $i < $dipcount; $i++) {
<td align=center style=color:".newColor($nationColor[$you]).";background-color:{$nationColor[$you]};>$nationName[$you]</td>
<td align=center>$state</td>
<td align=center>{$dip['term']} 개월</td>
<td align=left style=font-size:7px;>{$note}</td>
</tr>";
}
?>
</table>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=closeButton()?></td></tr>
<tr><td><?=banner()?> </td></tr>
</table>
+25
View File
@@ -0,0 +1,25 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
if($session->userGrade < 5) {
die('권한 부족');
}
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
if(!$gameStor->isunited){
die('아직 천통하지 않았습니다');
}
foreach($db->queryFirstColumn(
'SELECT no FROM general WHERE npc != 0 and age >= %i',
GameConst::$retirementYear
) as $generalNo){
CheckHall($generalNo);
}
-1657
View File
@@ -1,1657 +0,0 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
//로그인 검사
$isgen = Util::getReq('isgen');
$leader1 = Util::getReq('leader1', 'int', 0);
$power1 = Util::getReq('power1', 'int', 0);
$intel1 = Util::getReq('intel1', 'int', 0);
$type1 = Util::getReq('type1', 'int', 0);
$crew1 = Util::getReq('crew1', 'int', 0);
$train1 = Util::getReq('train1', 'int', 0);
$atmos1 = Util::getReq('atmos1', 'int', 0);
$level1 = Util::getReq('level1', 'int', 0);
$explevel1 = Util::getReq('explevel1', 'int', 0);
$tech1 = Util::getReq('tech1', 'int', 0);
$dex10 = Util::getReq('dex10', 'int', 0);
$dex110 = Util::getReq('dex110', 'int', 0);
$dex120 = Util::getReq('dex120', 'int', 0);
$dex130 = Util::getReq('dex130', 'int', 0);
$dex140 = Util::getReq('dex140', 'int', 0);
$dx10 = array_fill(0, 20, '');
$dx110 = array_fill(0, 20, '');
$dx120 = array_fill(0, 20, '');
$dx130 = array_fill(0, 20, '');
$dx140 = array_fill(0, 20, '');
$leader2 = Util::getReq('leader2', 'int', 0);
$power2 = Util::getReq('power2', 'int', 0);
$intel2 = Util::getReq('intel2', 'int', 0);
$type2 = Util::getReq('type2', 'int', 0);
$crew2 = Util::getReq('crew2', 'int', 0);
$train2 = Util::getReq('train2', 'int', 0);
$atmos2 = Util::getReq('atmos2', 'int', 0);
$level2 = Util::getReq('level2', 'int', 0);
$explevel2 = Util::getReq('explevel2', 'int', 0);
$tech2 = Util::getReq('tech2', 'int', 0);
$dex20 = Util::getReq('dex20', 'int', 0);
$dex210 = Util::getReq('dex210', 'int', 0);
$dex220 = Util::getReq('dex220', 'int', 0);
$dex230 = Util::getReq('dex230', 'int', 0);
$dex240 = Util::getReq('dex240', 'int', 0);
$dx20 = array_fill(0, 20, '');
$dx210 = array_fill(0, 20, '');
$dx220 = array_fill(0, 20, '');
$dx230 = array_fill(0, 20, '');
$dx240 = array_fill(0, 20, '');
$def = Util::getReq('def', 'int', 0);
$wall = Util::getReq('wall', 'int', 0);
$atmos3 = Util::getReq('atmos3', 'int', 0);
$train3 = Util::getReq('train3', 'int', 0);
$sellevel1 = array_fill(0, 13, '');
$sel1 = array_fill(0,44, '');
$tch1 = array_fill(0,11, '');
$sellevel2 = array_fill(0, 13, '');
$sel2 = array_fill(0,44, '');
$tch2 = array_fill(0,11, '');
$dec = 0;
$rice = 0;
$db = DB::db();
$connect=$db->get();
increaseRefresh("시뮬", 2);
$query = "select no,tournament,con,turntime from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$query = "select * from game limit 1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$game = MYDB_fetch_array($result);
$con = checkLimit($me['con'], $game['conlimit']);
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
if($session->userGrade < 3) {
echo "특별회원이 아닙니다.";
exit();
}
$mydeathnumSum = 0;
$mykillnumSum = 0;
$expSum = 0;
$ricingSum = 0;
$expSum2 = 0;
$ricingSum2 = 0;
if($isgen == "장수평균" || $isgen == "성벽평균") {
$simulCount = 1000;
} else {
$simulCount = 1;
}
$general = [
'no'=>1
];
$oppose = [
'no'=>2
];
$city = [
'gen1'=>0,
'gen2'=>0,
'gen3'=>0,
];
if($isgen == "장수공격" || $isgen == "성벽공격" || $isgen == "장수평균" || $isgen == "성벽평균") {
$msg2 = "";
for($i=0; $i < $simulCount; $i++) {
$general['leader'] = $leader1;
$general['power'] = $power1;
$general['intel'] = $intel1;
$general['crewtype'] = $type1;
$general['crew'] = $crew1;
$general['train'] = $train1;
$general['atmos'] = $atmos1;
$general['level'] = $level1;
$general['explevel'] = $explevel1;
$general['dex0'] = $dex10;
$general['dex10'] = $dex110;
$general['dex20'] = $dex120;
$general['dex30'] = $dex130;
$general['dex40'] = $dex140;
$general['injury'] = 0;
$general['horse'] = 0;
$general['weap'] = 0;
$general['book'] = 0;
$oppose['leader'] = $leader2;
$oppose['power'] = $power2;
$oppose['intel'] = $intel2;
$oppose['crewtype'] = $type2;
$oppose['crew'] = $crew2;
$oppose['train'] = $train2;
$oppose['atmos'] = $atmos2;
$oppose['level'] = $level2;
$oppose['explevel'] = $explevel2;
$oppose['dex0'] = $dex20;
$oppose['dex10'] = $dex210;
$oppose['dex20'] = $dex220;
$oppose['dex30'] = $dex230;
$oppose['dex40'] = $dex240;
$oppose['injury'] = 0;
$oppose['horse'] = 0;
$oppose['weap'] = 0;
$oppose['book'] = 0;
$city['def'] = $def;
$city['wall'] = $wall;
$city['agri'] = 0;
$city['comm'] = 0;
$city['secu'] = 0;
if($isgen == "장수공격" || $isgen == "장수평균") {
$opposecount = 1;
} else {
$opposecount = 0;
}
$warphase = getRate($game, $general['crewtype'], "spd"); //병종간 페이즈 수 얻기
// 우선 스케일링
$city['def'] *= 10;
$city['wall'] *= 10;
$msg = "";
$msg .= "<C>●</>1월:공격장수가 <R>공격</>합니다.<br>";
$exp = 0; //병사 소진 시킨 만큼
$opexp = 0;
$exp2 = 1; //능력경험치
$phase = 0;
while($phase < $warphase) {
// 장수가 없어서 도시 공격
if($opposecount == 0) {
$msg .= "<C>●</>".GameUnitConst::byID($general['crewtype'])->name."(으)로 성을 <M>공격</>합니다.<br>";
$mykillnum = 0; $mydeathnum = 0;
while($phase < $warphase) {
$phase++;
$myAtt = getAtt($game, $general, $tech1, 0);
$myDef = getDef($game, $general, $tech1);
$cityAtt = getCityAtt($city);
$cityDef = getCityDef($city);
// 감소할 병사 수
$cityCrew = GameConst::$armperphase + $myAtt - $cityDef;
$myCrew = GameConst::$armperphase + $cityAtt - $myDef;
$cityweight = $myAtt - $cityDef;
$myweight = $cityAtt - $myDef;
//훈련 사기따라
$myCrew = getCrew($myCrew, $atmos3, $general['train']);
$cityCrew = getCrew($cityCrew, $general['atmos'], $train3);
//숙련도 따라
$genDexAtt = getGenDex($general, $general['crewtype']);
$genDexDef = getGenDex($general, 40);
$cityCrew *= getDexLog($genDexAtt, ($train3-60)*7200);
$myCrew *= getDexLog(($atmos3-60)*7200, $genDexDef);
$avoid = 1;
// 병종간 특성
if(intdiv($general['crewtype'], 10) == 3) { // 귀병
$int = $general['intel'] + getBookEff($general['book']);
if($general['crewtype'] == 30) {
$ratio2 = $int * 5; // 0~500 즉 50%
} elseif($general['crewtype'] == 31) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($general['crewtype'] == 32) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($general['crewtype'] == 33) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($general['crewtype'] == 34) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($general['crewtype'] == 35) {
$ratio2 = $int * 8; // 0~800 즉 80%
} elseif($general['crewtype'] == 36) {
$ratio2 = $int * 8; // 0~800 즉 80%
} elseif($general['crewtype'] == 37) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($general['crewtype'] == 38) {
$ratio2 = $int * 6; // 0~600 즉 60%
}
$ratio = rand() % 1000; // 0~999
if($ratio <= $ratio2) {
$ratio = rand() % 100; // 0~99
if($ratio >= 30) {
$type = rand() % 3;
switch($type) {
case 0:
$msg .= "<C>●</><D>급습</>을 <C>성공</>했다!<br>";
$cityCrew *= 1.2;
break;
case 1:
$msg .= "<C>●</><D>위보</>를 <C>성공</>했다!<br>";
$cityCrew *= 1.4;
break;
case 2:
$msg .= "<C>●</><D>혼란</>을 <C>성공</>했다!<br>";
$cityCrew *= 1.6;
break;
}
} else {
$type = rand() % 3;
switch($type) {
case 0:
$msg .= "<C>●</><D>급습</>을 <R>실패</>했다!<br>";
$cityCrew /= 1.2;
$myCrew *= 1.2;
break;
case 1:
$msg .= "<C>●</><D>위보</>를 <R>실패</>했다!<br>";
$cityCrew /= 1.4;
$myCrew *= 1.4;
break;
case 2:
$msg .= "<C>●</><D>혼란</>을 <R>실패</>했다!<br>";
$cityCrew /= 1.6;
$myCrew *= 1.6;
break;
}
}
}
} elseif($general['crewtype'] == 40) { // 정란
$cityCrew = $cityCrew * 1.5;
} elseif($general['crewtype'] == 41) { // 충차
$cityCrew = $cityCrew * 2.0;
} elseif($general['crewtype'] == 42) { // 벽력거
$cityCrew = $cityCrew * 1.5;
}
//군주, 참모, 장군 공격 보정 5%
if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 10 || $general['level'] == 8 || $general['level'] == 6) {
$cityCrew = $cityCrew * 1.05;
}
//레벨 보정
$cityCrew = $cityCrew * (100 + $general['explevel']/6)/100;
//크리
$rd = rand() % 100; // 0 ~ 99
$ratio = CriticalRatio3($general['leader'], $general['power'], $general['intel']);
if($ratio >= $rd && $avoid == 1) {
$msg .= "<C>●</><C>필살</>공격!</><br>";
$cityCrew = CriticalScore2($cityCrew);
$avoid = 0;
}
//회피
$ratio = rand() % 100; // 0 ~ 99
$ratio2 = getRate($game, $general['crewtype'], "avd"); //회피율
if($ratio < $ratio2 && $avoid == 1) {
$msg .= "<C>●</><C>회피</>했다!</><br>";
$myCrew /= 10; // 10%만 소모
$avoid = 0;
}
//랜타추가
$cityCrew *= (rand() % 21 + 90)/100; // 90~110%
$myCrew *= (rand() % 21 + 90)/100; // 90~110%
$general['crew'] -= Util::round($myCrew);
$city['def'] -= Util::round($cityCrew);
$city['wall'] -= Util::round($cityCrew);
$tempMyCrew = $myCrew; $tempCityCrew = $cityCrew;
$tempGeneralCrew = $general['crew']; $tempCityDef = $city['def'];
if($city['wall'] <= 0) { $city['wall'] = 0; }
if($city['def'] < 0) {
$offset = Util::round($tempCityDef*$tempMyCrew/$tempCityCrew);
$myCrew += $offset;
$general['crew'] -= $offset;
$cityCrew += $tempCityDef;
$city['def'] = 0;
}
if($general['crew'] < 0) {
$offset = Util::round($tempGeneralCrew*$tempCityCrew/$tempMyCrew);
$cityCrew += $offset;
$city['def'] -= $offset;
$myCrew += $tempGeneralCrew;
$general['crew'] = 0;
}
$exp += $cityCrew;
$opexp += $myCrew;
$general['crew'] = Util::round($general['crew']);
$cityCrew = Util::round($cityCrew);
$myCrew = Util::round($myCrew);
$myAtt = round($myAtt, 2);
$myDef = round($myDef, 2);
$cityAtt = round($cityAtt, 2);
$cityDef = round($cityDef, 2);
$msg .= "<C>●</> $phase : <Y1>【공격장수】</> <C>{$general['crew']} (-$myCrew)</> VS <C>{$city['def']} (-$cityCrew)</> <Y1>【성벽】</><br>";
$mykillnum += $cityCrew; $mydeathnum += $myCrew;
if($city['def'] <= 0) { break; }
if($general['crew'] <= 0) { break; }
}
// 도시쌀 소모 계산
$opexp = Util::round($opexp / 50);
$rice = Util::round($opexp * 4 * getCrewtypeRice($game, 0, 0) * ($train3/100 - 0.2));
//원래대로 스케일링
$city['def'] = Util::round($city['def'] / 10);
$city['wall'] = Util::round($city['wall'] / 10);
//내정 감소
$dec = Util::round($cityCrew / 10);
$city['agri'] -= $dec;
$city['comm'] -= $dec;
$city['secu'] -= $dec;
if($city['agri'] < 0) { $city['agri'] = 0; }
if($city['comm'] < 0) { $city['comm'] = 0; }
if($city['secu'] < 0) { $city['secu'] = 0; }
$msg .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</><br>";
$msg .= "<R>★</>【성벽】내정 감소량 : $dec 【성벽】쌀 소모 : $rice<br>";
// $msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</>   ";
// $msg2 .= "<R>★</>【성벽】내정 감소량 : $dec 【성벽】쌀 소모 : $rice<br>";
if($city['def'] == 0 || $general['crew'] == 0) {
break;
}
// 장수 대결
} else {
$msg .= "<C>●</>".GameUnitConst::byID($general['crewtype'])->name."(으)로 <Y>수비장수</>의 ".GameUnitConst::byID($oppose['crewtype'])->name."(을)를 공격합니다.<br>";
$mykillnum = 0; $mydeathnum = 0;
while($phase < $warphase) {
$phase++;
$myAtt = getAtt($game, $general, $tech1, 0);
$myDef = getDef($game, $general, $tech1);
$opAtt = getAtt($game, $oppose, $tech2, 0);
$opDef = getDef($game, $oppose, $tech2);
// 감소할 병사 수
$myCrew = GameConst::$armperphase + $opAtt - $myDef;
$opCrew = GameConst::$armperphase + $myAtt - $opDef;
//훈련 사기따라
$myCrew = getCrew($myCrew, $oppose['atmos'], $general['train']);
$opCrew = getCrew($opCrew, $general['atmos'], $oppose['train']);
//숙련도 따라
$genDexAtt = getGenDex($general, $general['crewtype']);
$genDexDef = getGenDex($general, $oppose['crewtype']);
$oppDexAtt = getGenDex($oppose, $oppose['crewtype']);
$oppDexDef = getGenDex($oppose, $general['crewtype']);
$opCrew *= getDexLog($genDexAtt, $oppDexDef);
$myCrew *= getDexLog($oppDexAtt, $genDexDef);
$myAvoid = 1;
$opAvoid = 1;
// 병종간 특성
if(intdiv($general['crewtype'], 10) == 3) { // 귀병
$int = $general['intel'] + getBookEff($general['book']);
if($general['crewtype'] == 30) {
$ratio2 = $int * 5; // 0~500 즉 50%
} elseif($general['crewtype'] == 31) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($general['crewtype'] == 32) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($general['crewtype'] == 33) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($general['crewtype'] == 34) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($general['crewtype'] == 35) {
$ratio2 = $int * 8; // 0~800 즉 80%
} elseif($general['crewtype'] == 36) {
$ratio2 = $int * 8; // 0~800 즉 80%
} elseif($general['crewtype'] == 37) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($general['crewtype'] == 38) {
$ratio2 = $int * 6; // 0~600 즉 60%
}
$ratio = rand() % 1000; // 0~999
if($ratio <= $ratio2) {
$ratio = rand() % 100;
if($ratio >= 30) {
$type = rand() % 5; // 0~4
switch($type) {
case 0:
$msg .= "<C>●</><D>위보</>를 <C>성공</>했다!<br>";
$opCrew *= 1.2;
break;
case 1:
$msg .= "<C>●</><D>매복</>을 <C>성공</>했다!<br>";
$opCrew *= 1.4;
break;
case 2:
$msg .= "<C>●</><D>반목</>을 <C>성공</>했다!<br>";
$opCrew *= 1.6;
break;
case 3:
$msg .= "<C>●</><D>화계</>를 <C>성공</>했다!<br>";
$opCrew *= 1.8;
break;
case 4:
$msg .= "<C>●</><D>혼란</>을 <C>성공</>했다!<br>";
$opCrew *= 2.0;
break;
}
} else {
$type = rand() % 5; // 0~4
switch($type) {
case 0:
$msg .= "<C>●</><D>위보</>를 <R>실패</>했다!<br>";
$opCrew /= 1.1;
$myCrew *= 1.1;
break;
case 1:
$msg .= "<C>●</><D>매복</>을 <R>실패</>했다!<br>";
$opCrew /= 1.2;
$myCrew *= 1.2;
break;
case 2:
$msg .= "<C>●</><D>반목</>을 <R>실패</>했다!<br>";
$opCrew /= 1.3;
$myCrew *= 1.3;
break;
case 3:
$msg .= "<C>●</><D>화계</>를 <R>실패</>했다!<br>";
$opCrew /= 1.4;
$myCrew *= 1.4;
break;
case 4:
$msg .= "<C>●</><D>혼란</>을 <R>실패</>했다!<br>";
$opCrew /= 1.5;
$myCrew *= 1.5;
break;
}
}
}
}
// 상대 장수 병종간 특성
if(intdiv($oppose['crewtype'], 10) == 3) { // 귀병
$int = $oppose['intel'] + getBookEff($oppose['book']);
if($oppose['crewtype'] == 30) {
$ratio2 = $int * 5; // 0~500 즉 50%
} elseif($oppose['crewtype'] == 31) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($oppose['crewtype'] == 32) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($oppose['crewtype'] == 33) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($oppose['crewtype'] == 34) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($oppose['crewtype'] == 35) {
$ratio2 = $int * 8; // 0~800 즉 80%
} elseif($oppose['crewtype'] == 36) {
$ratio2 = $int * 8; // 0~800 즉 80%
} elseif($oppose['crewtype'] == 37) {
$ratio2 = $int * 6; // 0~600 즉 60%
} elseif($oppose['crewtype'] == 38) {
$ratio2 = $int * 6; // 0~600 즉 60%
}
$ratio = rand() % 1000; // 0~999
if($ratio <= $ratio2) {
$ratio = rand() % 100;
if($ratio >= 30) {
$type = rand() % 5; // 0~4
switch($type) {
case 0:
$msg .= "<C>●</><D>위보</>에 당했다!<br>";
$myCrew *= 1.2;
break;
case 1:
$msg .= "<C>●</><D>매복</>에 당했다!<br>";
$myCrew *= 1.4;
break;
case 2:
$msg .= "<C>●</><D>반목</>에 당했다!<br>";
$myCrew *= 1.6;
break;
case 3:
$msg .= "<C>●</><D>화계</>에 당했다!<br>";
$myCrew *= 1.8;
break;
case 4:
$msg .= "<C>●</><D>혼란</>에 당했다!<br>";
$myCrew *= 2.0;
break;
}
} else {
$type = rand() % 5; // 0~4
switch($type) {
case 0:
$msg .= "<C>●</><D>위보</>를 간파했다!<br>";
$myCrew /= 1.1;
$opCrew *= 1.1;
break;
case 1:
$msg .= "<C>●</><D>매복</>을 간파했다!<br>";
$myCrew /= 1.2;
$opCrew *= 1.2;
break;
case 2:
$msg .= "<C>●</><D>반목</>을 간파했다!<br>";
$myCrew /= 1.3;
$opCrew *= 1.3;
break;
case 3:
$msg .= "<C>●</><D>화계</>를 간파했다!<br>";
$myCrew /= 1.4;
$opCrew *= 1.4;
break;
case 4:
$msg .= "<C>●</><D>혼란</>을 간파했다!<br>";
$myCrew /= 1.5;
$opCrew *= 1.5;
break;
}
}
}
}
if($oppose['crewtype'] == 43) { // 목우
$r = 0;
$r += $oppose['atmos'];
$r += $oppose['train'];
$ratio = rand() % 400; // 최대 50% 저지
if($ratio < $r && $opAvoid == 1) {
$msg .= "<C>●</><R>저지</>당했다!</><br>";
$opAvoid = 0;
continue;
}
}
// my 입장 상성
// 보병계열 > 궁병계열
if(intdiv($general['crewtype'], 10) == 0 && intdiv($oppose['crewtype'], 10) == 1) {
$myCrew *= 0.8;
$opCrew *= 1.2;
}
// 궁병계열 > 기병계열
if(intdiv($general['crewtype'], 10) == 1 && intdiv($oppose['crewtype'], 10) == 2) {
$myCrew *= 0.8;
$opCrew *= 1.2;
}
// 기병계열 > 보병계열
if(intdiv($general['crewtype'], 10) == 2 && intdiv($oppose['crewtype'], 10) == 0) {
$myCrew *= 0.8;
$opCrew *= 1.2;
}
// 차병계열
if(intdiv($general['crewtype'], 10) == 4) {
$myCrew *= 1.2;
$opCrew *= 0.8;
}
// op 입장 상성
// 보병계열 > 궁병계열
if(intdiv($oppose['crewtype'], 10) == 0 && intdiv($general['crewtype'], 10) == 1) {
$opCrew *= 0.8;
$myCrew *= 1.2;
}
// 궁병계열 > 기병계열
if(intdiv($oppose['crewtype'], 10) == 1 && intdiv($general['crewtype'], 10) == 2) {
$opCrew *= 0.8;
$myCrew *= 1.2;
}
// 기병계열 > 보병계열
if(intdiv($oppose['crewtype'], 10) == 2 && intdiv($general['crewtype'], 10) == 0) {
$opCrew *= 0.8;
$myCrew *= 1.2;
}
// 차병계열
if(intdiv($oppose['crewtype'], 10) == 4) {
$opCrew *= 1.2;
$myCrew *= 0.8;
}
//군주, 참모, 장군 공격 보정 5%
if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 10 || $general['level'] == 8 || $general['level'] == 6) {
$opCrew = $opCrew * 1.05;
}
//상대장수 관직 보정
//군주, 참모, 모사 방어 보정 5%
if($oppose['level'] == 12 || $oppose['level'] == 11 || $oppose['level'] == 9 || $oppose['level'] == 7 || $oppose['level'] == 5) {
$opCrew = $opCrew * 0.95;
} elseif($oppose['level'] == 4 && $oppose['no'] == $city['gen1']) { // 태수 보정
$opCrew = $opCrew * 0.95;
} elseif($oppose['level'] == 3 && $oppose['no'] == $city['gen2']) { // 군사 보정
$opCrew = $opCrew * 0.95;
} elseif($oppose['level'] == 2 && $oppose['no'] == $city['gen3']) { // 시중 보정
$opCrew = $opCrew * 0.95;
}
//레벨 보정
$myCrew = $myCrew * ((100 - $general['explevel']/3)/100);
$opCrew = $opCrew / ((100 - $general['explevel']/3)/100);
$myCrew = $myCrew / ((100 - $oppose['explevel']/3)/100);
$opCrew = $opCrew * ((100 - $oppose['explevel']/3)/100);
//크리
$rd = rand() % 100; // 0 ~ 99
$ratio = CriticalRatio3($general['leader'], $general['power'], $general['intel']);
if($ratio >= $rd && $myAvoid == 1) {
$msg .= "<C>●</><C>필살</>공격!</><br>";
$opCrew = CriticalScore2($opCrew);
$myAvoid = 0;
}
//크리
$rd = rand() % 100; // 0 ~ 99
$ratio = CriticalRatio3($oppose['leader'], $oppose['power'], $oppose['intel']);
if($ratio >= $rd && $opAvoid == 1) {
$msg .= "<C>●</>상대의 <R>필살</>공격!</><br>";
$myCrew = CriticalScore2($myCrew);
$opAvoid = 0;
}
//회피
$ratio = rand() % 100; // 0 ~ 99
$ratio2 = getRate($game, $general['crewtype'], "avd"); //회피율
if($ratio < $ratio2 && $myAvoid == 1) {
$msg .= "<C>●</><C>회피</>했다!</><br>";
$myCrew /= 10; // 10%만 소모
$myAvoid = 0;
}
//회피
$ratio = rand() % 100; // 0 ~ 99
$ratio2 = getRate($game, $oppose['crewtype'], "avd"); //회피율
if($ratio < $ratio2 && $opAvoid == 1) {
$msg .= "<C>●</>상대가 <R>회피</>했다!</><br>";
$opCrew /= 10; // 10%만 소모
$opAvoid = 0;
}
//랜타추가
$opCrew *= (rand() % 21 + 90)/100; // 90~110%
$myCrew *= (rand() % 21 + 90)/100; // 90~110%
$general['crew'] -= Util::round($myCrew);
$oppose['crew'] -= Util::round($opCrew);
$tempMyCrew = $myCrew; $tempOpCrew = $opCrew;
$tempGeneralCrew = $general['crew']; $tempOpposeCrew = $oppose['crew'];
if($general['crew'] <= 0 && $oppose['crew'] <= 0) {
$r1 = $tempGeneralCrew / $tempMyCrew;
$r2 = $tempOpposeCrew / $tempOpCrew;
if($r1 > $r2) {
$offset = Util::round($tempOpposeCrew*$tempMyCrew/$tempOpCrew);
$myCrew += $offset;
$general['crew'] -= $offset;
$opCrew += $tempOpposeCrew;
$oppose['crew'] = 0;
} else {
$offset = Util::round($tempGeneralCrew*$tempOpCrew/$tempMyCrew);
$opCrew += $offset;
$oppose['crew'] -= $offset;
$myCrew += $tempGeneralCrew;
$general['crew'] = 0;
}
} elseif($general['crew'] * $oppose['crew'] <= 0) {
if($oppose['crew'] < 0) {
$offset = Util::round($tempOpposeCrew*$tempMyCrew/$tempOpCrew);
$myCrew += $offset;
$general['crew'] -= $offset;
$opCrew += $tempOpposeCrew;
$oppose['crew'] = 0;
}
if($general['crew'] < 0) {
$offset = Util::round($tempGeneralCrew*$tempOpCrew/$tempMyCrew);
$opCrew += $offset;
$oppose['crew'] -= $offset;
$myCrew += $tempGeneralCrew;
$general['crew'] = 0;
}
}
$exp += $opCrew;
$opexp += $myCrew;
$general['crew'] = Util::round($general['crew']);
$oppose['crew'] = Util::round($oppose['crew']);
$myCrew = Util::round($myCrew);
$opCrew = Util::round($opCrew);
$myAtt = round($myAtt, 2);
$myDef = round($myDef, 2);
$opAtt = round($opAtt, 2);
$opDef = round($opDef, 2);
$msg .= "<C>●</> $phase : <Y1>【공격장수】</> <C>{$general['crew']} (-$myCrew)</> VS <C>{$oppose['crew']} (-$opCrew)</> <Y1>【수비장수】</><br>";
$mykillnum += $opCrew; $mydeathnum += $myCrew;
if($oppose['crew'] <= 0) { break; }
if($general['crew'] <= 0) { break; }
}
$msg .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</><br>";
// $msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</>   ";
}
}
// 공헌, 명성 상승
$exp = Util::round($exp / 50);
$ricing = ($exp * 5 * getCrewtypeRice($game, $general['crewtype'], $tech1));
$msg .= "★ 【공격장수】공헌 상승 : $exp 쌀 소비 : {$exp}x5x".getCrewtypeRice($game, $general['crewtype'], $tech1)." = $ricing<br>";
// $msg2 .= "★ 【공격장수】공헌 상승 : $exp 쌀 소비 : {$exp}x5x".getCrewtypeRice($game, $general['crewtype'], $tech1)." = $ricing<br>";
$msg = ConvertLog($msg, 1);
$mydeathnumSum += $mydeathnum;
$mykillnumSum += $mykillnum;
$expSum += $exp;
$ricingSum += $ricing;
$expSum2 += $dec;
$ricingSum2 += $rice;
}
$mydeathnumSum /= $simulCount;
$mykillnumSum /= $simulCount;
$expSum /= $simulCount;
$ricingSum /= $simulCount;
$expSum2 /= $simulCount;
$ricingSum2 /= $simulCount;
if($isgen == "성벽평균") {
$msg2 .= "{$simulCount}회 평균<br>";
$msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnumSum</> vs <C>-$mykillnumSum</>   ";
$msg2 .= "<R>★</>【성벽】내정 감소량 : $expSum2 【성벽】쌀 소모 : $ricingSum2<br>";
$msg2 .= "★ 【공격장수】공헌 상승 : $expSum 쌀 소비 : {$expSum}x5x".getCrewtypeRice($game, $general['crewtype'], $tech1)." = $ricingSum<br>";
} elseif($isgen == "장수평균") {
$msg2 .= "{$simulCount}회 평균<br>";
$msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnumSum</> vs <C>-$mykillnumSum</>   ";
$msg2 .= "★ 【공격장수】공헌 상승 : $expSum 쌀 소비 : {$expSum}x5x".getCrewtypeRice($game, $general['crewtype'], $tech1)." = $ricingSum<br>";
}
$msg2 = ConvertLog($msg2, 1);
} else {
$leader1 = 70;
$power1 = 70;
$intel1 = 10;
$type1 = 0;
$crew1 = 7000;
$train1 = 100;
$atmos1 = 100;
$level1 = 1;
$explevel1 = 20;
$leader2 = 70;
$power2 = 70;
$intel2 = 10;
$type2 = 0;
$crew2 = 7000;
$train2 = 100;
$atmos2 = 100;
$level2 = 1;
$explevel2 = 20;
$def = 7000;
$wall = 7000;
$train3 = $game['city_rate'];
$atmos3 = $game['city_rate'];
}
switch($level1) {
case 12: $sellevel1[12] = "selected"; break;
case 11: $sellevel1[11] = "selected"; break;
case 10: $sellevel1[10] = "selected"; break;
case 9: $sellevel1[9] = "selected"; break;
case 8: $sellevel1[8] = "selected"; break;
case 7: $sellevel1[7] = "selected"; break;
case 6: $sellevel1[6] = "selected"; break;
case 5: $sellevel1[5] = "selected"; break;
case 1: $sellevel1[1] = "selected"; break;
}
switch($level2) {
case 12: $sellevel2[12] = "selected"; break;
case 11: $sellevel2[11] = "selected"; break;
case 10: $sellevel2[10] = "selected"; break;
case 9: $sellevel2[9] = "selected"; break;
case 8: $sellevel2[8] = "selected"; break;
case 7: $sellevel2[7] = "selected"; break;
case 6: $sellevel2[6] = "selected"; break;
case 5: $sellevel2[5] = "selected"; break;
case 1: $sellevel2[1] = "selected"; break;
}
switch($type1) {
case 0: $sel1[0] = "selected"; break;
case 1: $sel1[1] = "selected"; break;
case 2: $sel1[2] = "selected"; break;
case 3: $sel1[3] = "selected"; break;
case 4: $sel1[4] = "selected"; break;
case 5: $sel1[5] = "selected"; break;
case 10: $sel1[10] = "selected"; break;
case 11: $sel1[11] = "selected"; break;
case 12: $sel1[12] = "selected"; break;
case 13: $sel1[13] = "selected"; break;
case 14: $sel1[14] = "selected"; break;
case 20: $sel1[20] = "selected"; break;
case 21: $sel1[21] = "selected"; break;
case 22: $sel1[22] = "selected"; break;
case 23: $sel1[23] = "selected"; break;
case 24: $sel1[24] = "selected"; break;
case 25: $sel1[25] = "selected"; break;
case 26: $sel1[26] = "selected"; break;
case 27: $sel1[27] = "selected"; break;
case 30: $sel1[30] = "selected"; break;
case 31: $sel1[31] = "selected"; break;
case 32: $sel1[32] = "selected"; break;
case 33: $sel1[33] = "selected"; break;
case 34: $sel1[34] = "selected"; break;
case 35: $sel1[35] = "selected"; break;
case 36: $sel1[36] = "selected"; break;
case 37: $sel1[37] = "selected"; break;
case 38: $sel1[38] = "selected"; break;
case 40: $sel1[40] = "selected"; break;
case 41: $sel1[41] = "selected"; break;
case 42: $sel1[42] = "selected"; break;
case 43: $sel1[43] = "selected"; break;
}
switch($type2) {
case 0: $sel2[0] = "selected"; break;
case 1: $sel2[1] = "selected"; break;
case 2: $sel2[2] = "selected"; break;
case 3: $sel2[3] = "selected"; break;
case 4: $sel2[4] = "selected"; break;
case 5: $sel2[5] = "selected"; break;
case 10: $sel2[10] = "selected"; break;
case 11: $sel2[11] = "selected"; break;
case 12: $sel2[12] = "selected"; break;
case 13: $sel2[13] = "selected"; break;
case 14: $sel2[14] = "selected"; break;
case 20: $sel2[20] = "selected"; break;
case 21: $sel2[21] = "selected"; break;
case 22: $sel2[22] = "selected"; break;
case 23: $sel2[23] = "selected"; break;
case 24: $sel2[24] = "selected"; break;
case 25: $sel2[25] = "selected"; break;
case 26: $sel2[26] = "selected"; break;
case 27: $sel2[27] = "selected"; break;
case 30: $sel2[30] = "selected"; break;
case 31: $sel2[31] = "selected"; break;
case 32: $sel2[32] = "selected"; break;
case 33: $sel2[33] = "selected"; break;
case 34: $sel2[34] = "selected"; break;
case 35: $sel2[35] = "selected"; break;
case 36: $sel2[36] = "selected"; break;
case 37: $sel2[37] = "selected"; break;
case 38: $sel2[38] = "selected"; break;
case 40: $sel2[40] = "selected"; break;
case 41: $sel2[41] = "selected"; break;
case 42: $sel2[42] = "selected"; break;
case 43: $sel2[43] = "selected"; break;
}
switch($tech1) {
case 0: $tch1[0] = "selected"; break;
case 1000: $tch1[1] = "selected"; break;
case 2000: $tch1[2] = "selected"; break;
case 3000: $tch1[3] = "selected"; break;
case 4000: $tch1[4] = "selected"; break;
case 5000: $tch1[5] = "selected"; break;
case 6000: $tch1[6] = "selected"; break;
case 7000: $tch1[7] = "selected"; break;
case 8000: $tch1[8] = "selected"; break;
case 9000: $tch1[9] = "selected"; break;
case 10000: $tch1[10] = "selected"; break;
}
switch($tech2) {
case 0: $tch2[0] = "selected"; break;
case 1000: $tch2[1] = "selected"; break;
case 2000: $tch2[2] = "selected"; break;
case 3000: $tch2[3] = "selected"; break;
case 4000: $tch2[4] = "selected"; break;
case 5000: $tch2[5] = "selected"; break;
case 6000: $tch2[6] = "selected"; break;
case 7000: $tch2[7] = "selected"; break;
case 8000: $tch2[8] = "selected"; break;
case 9000: $tch2[9] = "selected"; break;
case 10000: $tch2[10] = "selected"; break;
}
switch($dex10) {
case 0: $dx10[0] = "selected"; break;
case 2500: $dx10[1] = "selected"; break;
case 7500: $dx10[2] = "selected"; break;
case 15000: $dx10[3] = "selected"; break;
case 25000: $dx10[4] = "selected"; break;
case 37500: $dx10[5] = "selected"; break;
case 52500: $dx10[6] = "selected"; break;
case 70000: $dx10[7] = "selected"; break;
case 90000: $dx10[8] = "selected"; break;
case 112500: $dx10[9] = "selected"; break;
case 137500: $dx10[10] = "selected"; break;
case 165000: $dx10[11] = "selected"; break;
case 195000: $dx10[12] = "selected"; break;
case 227500: $dx10[13] = "selected"; break;
case 262500: $dx10[14] = "selected"; break;
case 300000: $dx10[15] = "selected"; break;
case 340000: $dx10[16] = "selected"; break;
case 382500: $dx10[17] = "selected"; break;
case 427500: $dx10[18] = "selected"; break;
}
switch($dex110) {
case 0: $dx110[0] = "selected"; break;
case 2500: $dx110[1] = "selected"; break;
case 7500: $dx110[2] = "selected"; break;
case 15000: $dx110[3] = "selected"; break;
case 25000: $dx110[4] = "selected"; break;
case 37500: $dx110[5] = "selected"; break;
case 52500: $dx110[6] = "selected"; break;
case 70000: $dx110[7] = "selected"; break;
case 90000: $dx110[8] = "selected"; break;
case 112500: $dx110[9] = "selected"; break;
case 137500: $dx110[10] = "selected"; break;
case 165000: $dx110[11] = "selected"; break;
case 195000: $dx110[12] = "selected"; break;
case 227500: $dx110[13] = "selected"; break;
case 262500: $dx110[14] = "selected"; break;
case 300000: $dx110[15] = "selected"; break;
case 340000: $dx110[16] = "selected"; break;
case 382500: $dx110[17] = "selected"; break;
case 427500: $dx110[18] = "selected"; break;
}
switch($dex120) {
case 0: $dx120[0] = "selected"; break;
case 2500: $dx120[1] = "selected"; break;
case 7500: $dx120[2] = "selected"; break;
case 15000: $dx120[3] = "selected"; break;
case 25000: $dx120[4] = "selected"; break;
case 37500: $dx120[5] = "selected"; break;
case 52500: $dx120[6] = "selected"; break;
case 70000: $dx120[7] = "selected"; break;
case 90000: $dx120[8] = "selected"; break;
case 112500: $dx120[9] = "selected"; break;
case 137500: $dx120[10] = "selected"; break;
case 165000: $dx120[11] = "selected"; break;
case 195000: $dx120[12] = "selected"; break;
case 227500: $dx120[13] = "selected"; break;
case 262500: $dx120[14] = "selected"; break;
case 300000: $dx120[15] = "selected"; break;
case 340000: $dx120[16] = "selected"; break;
case 382500: $dx120[17] = "selected"; break;
case 427500: $dx120[18] = "selected"; break;
}
switch($dex130) {
case 0: $dx130[0] = "selected"; break;
case 2500: $dx130[1] = "selected"; break;
case 7500: $dx130[2] = "selected"; break;
case 15000: $dx130[3] = "selected"; break;
case 25000: $dx130[4] = "selected"; break;
case 37500: $dx130[5] = "selected"; break;
case 52500: $dx130[6] = "selected"; break;
case 70000: $dx130[7] = "selected"; break;
case 90000: $dx130[8] = "selected"; break;
case 112500: $dx130[9] = "selected"; break;
case 137500: $dx130[10] = "selected"; break;
case 165000: $dx130[11] = "selected"; break;
case 195000: $dx130[12] = "selected"; break;
case 227500: $dx130[13] = "selected"; break;
case 262500: $dx130[14] = "selected"; break;
case 300000: $dx130[15] = "selected"; break;
case 340000: $dx130[16] = "selected"; break;
case 382500: $dx130[17] = "selected"; break;
case 427500: $dx130[18] = "selected"; break;
}
switch($dex140) {
case 0: $dx140[0] = "selected"; break;
case 2500: $dx140[1] = "selected"; break;
case 7500: $dx140[2] = "selected"; break;
case 15000: $dx140[3] = "selected"; break;
case 25000: $dx140[4] = "selected"; break;
case 37500: $dx140[5] = "selected"; break;
case 52500: $dx140[6] = "selected"; break;
case 70000: $dx140[7] = "selected"; break;
case 90000: $dx140[8] = "selected"; break;
case 112500: $dx140[9] = "selected"; break;
case 137500: $dx140[10] = "selected"; break;
case 165000: $dx140[11] = "selected"; break;
case 195000: $dx140[12] = "selected"; break;
case 227500: $dx140[13] = "selected"; break;
case 262500: $dx140[14] = "selected"; break;
case 300000: $dx140[15] = "selected"; break;
case 340000: $dx140[16] = "selected"; break;
case 382500: $dx140[17] = "selected"; break;
case 427500: $dx140[18] = "selected"; break;
}
switch($dex20) {
case 0: $dx20[0] = "selected"; break;
case 2500: $dx20[1] = "selected"; break;
case 7500: $dx20[2] = "selected"; break;
case 15000: $dx20[3] = "selected"; break;
case 25000: $dx20[4] = "selected"; break;
case 37500: $dx20[5] = "selected"; break;
case 52500: $dx20[6] = "selected"; break;
case 70000: $dx20[7] = "selected"; break;
case 90000: $dx20[8] = "selected"; break;
case 112500: $dx20[9] = "selected"; break;
case 137500: $dx20[10] = "selected"; break;
case 165000: $dx20[11] = "selected"; break;
case 195000: $dx20[12] = "selected"; break;
case 227500: $dx20[13] = "selected"; break;
case 262500: $dx20[14] = "selected"; break;
case 300000: $dx20[15] = "selected"; break;
case 340000: $dx20[16] = "selected"; break;
case 382500: $dx20[17] = "selected"; break;
case 427500: $dx20[18] = "selected"; break;
}
switch($dex210) {
case 0: $dx210[0] = "selected"; break;
case 2500: $dx210[1] = "selected"; break;
case 7500: $dx210[2] = "selected"; break;
case 15000: $dx210[3] = "selected"; break;
case 25000: $dx210[4] = "selected"; break;
case 37500: $dx210[5] = "selected"; break;
case 52500: $dx210[6] = "selected"; break;
case 70000: $dx210[7] = "selected"; break;
case 90000: $dx210[8] = "selected"; break;
case 112500: $dx210[9] = "selected"; break;
case 137500: $dx210[10] = "selected"; break;
case 165000: $dx210[11] = "selected"; break;
case 195000: $dx210[12] = "selected"; break;
case 227500: $dx210[13] = "selected"; break;
case 262500: $dx210[14] = "selected"; break;
case 300000: $dx210[15] = "selected"; break;
case 340000: $dx210[16] = "selected"; break;
case 382500: $dx210[17] = "selected"; break;
case 427500: $dx210[18] = "selected"; break;
}
switch($dex220) {
case 0: $dx220[0] = "selected"; break;
case 2500: $dx220[1] = "selected"; break;
case 7500: $dx220[2] = "selected"; break;
case 15000: $dx220[3] = "selected"; break;
case 25000: $dx220[4] = "selected"; break;
case 37500: $dx220[5] = "selected"; break;
case 52500: $dx220[6] = "selected"; break;
case 70000: $dx220[7] = "selected"; break;
case 90000: $dx220[8] = "selected"; break;
case 112500: $dx220[9] = "selected"; break;
case 137500: $dx220[10] = "selected"; break;
case 165000: $dx220[11] = "selected"; break;
case 195000: $dx220[12] = "selected"; break;
case 227500: $dx220[13] = "selected"; break;
case 262500: $dx220[14] = "selected"; break;
case 300000: $dx220[15] = "selected"; break;
case 340000: $dx220[16] = "selected"; break;
case 382500: $dx220[17] = "selected"; break;
case 427500: $dx220[18] = "selected"; break;
}
switch($dex230) {
case 0: $dx230[0] = "selected"; break;
case 2500: $dx230[1] = "selected"; break;
case 7500: $dx230[2] = "selected"; break;
case 15000: $dx230[3] = "selected"; break;
case 25000: $dx230[4] = "selected"; break;
case 37500: $dx230[5] = "selected"; break;
case 52500: $dx230[6] = "selected"; break;
case 70000: $dx230[7] = "selected"; break;
case 90000: $dx230[8] = "selected"; break;
case 112500: $dx230[9] = "selected"; break;
case 137500: $dx230[10] = "selected"; break;
case 165000: $dx230[11] = "selected"; break;
case 195000: $dx230[12] = "selected"; break;
case 227500: $dx230[13] = "selected"; break;
case 262500: $dx230[14] = "selected"; break;
case 300000: $dx230[15] = "selected"; break;
case 340000: $dx230[16] = "selected"; break;
case 382500: $dx230[17] = "selected"; break;
case 427500: $dx230[18] = "selected"; break;
}
switch($dex240) {
case 0: $dx240[0] = "selected"; break;
case 2500: $dx240[1] = "selected"; break;
case 7500: $dx240[2] = "selected"; break;
case 15000: $dx240[3] = "selected"; break;
case 25000: $dx240[4] = "selected"; break;
case 37500: $dx240[5] = "selected"; break;
case 52500: $dx240[6] = "selected"; break;
case 70000: $dx240[7] = "selected"; break;
case 90000: $dx240[8] = "selected"; break;
case 112500: $dx240[9] = "selected"; break;
case 137500: $dx240[10] = "selected"; break;
case 165000: $dx240[11] = "selected"; break;
case 195000: $dx240[12] = "selected"; break;
case 227500: $dx240[13] = "selected"; break;
case 262500: $dx240[14] = "selected"; break;
case 300000: $dx240[15] = "selected"; break;
case 340000: $dx240[16] = "selected"; break;
case 382500: $dx240[17] = "selected"; break;
case 427500: $dx240[18] = "selected"; break;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<title>전투시뮬레이션</title>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<style type="text/css">
select { background-color:black;color:white; }
input { background-color:black;color:white; }
</style>
</head>
<body>
<form method=post action=_simul.php>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<tr id=bg1>
<td>공격장수</td>
<td>상대장수</td>
<td>상대성벽</td>
</tr>
<tr>
<td>관직
<select name=level1 size=1>
<option <?=$sellevel1[1]?> value=1>일반</option>
<option <?=$sellevel1[5]?> value=5>제3모사</option>
<option <?=$sellevel1[6]?> value=6>제3장군</option>
<option <?=$sellevel1[7]?> value=7>제2모사</option>
<option <?=$sellevel1[8]?> value=8>제2장군</option>
<option <?=$sellevel1[9]?> value=9>제1모사</option>
<option <?=$sellevel1[10]?> value=10>제1장군</option>
<option <?=$sellevel1[11]?> value=11>참모</option>
<option <?=$sellevel1[12]?> value=12>군주</option>
</select>
</td>
<td>관직
<select name=level2 size=1>
<option <?=$sellevel2[1]?> value=1>일반</option>
<option <?=$sellevel2[5]?> value=5>제3모사</option>
<option <?=$sellevel2[6]?> value=6>제3장군</option>
<option <?=$sellevel2[7]?> value=7>제2모사</option>
<option <?=$sellevel2[8]?> value=8>제2장군</option>
<option <?=$sellevel2[9]?> value=9>제1모사</option>
<option <?=$sellevel2[10]?> value=10>제1장군</option>
<option <?=$sellevel2[11]?> value=11>참모</option>
<option <?=$sellevel2[12]?> value=12>군주</option>
</select>
</td>
<td>-</td>
<tr>
<td>Lv <input size=2 maxlength=2 name=explevel1 value=<?=$explevel1?>></td>
<td>Lv <input size=2 maxlength=2 name=explevel2 value=<?=$explevel2?>></td>
<td>-</td>
</tr>
<tr>
<td>통솔 <input size=3 maxlength=3 name=leader1 value=<?=$leader1?>></td>
<td>통솔 <input size=3 maxlength=3 name=leader2 value=<?=$leader2?>></td>
<td>-</td>
</tr>
<tr>
<td>무력 <input size=3 maxlength=3 name=power1 value=<?=$power1?>></td>
<td>무력 <input size=3 maxlength=3 name=power2 value=<?=$power2?>></td>
<td>-</td>
</tr>
<tr>
<td>지력 <input size=3 maxlength=3 name=intel1 value=<?=$intel1?>></td>
<td>지력 <input size=3 maxlength=3 name=intel2 value=<?=$intel2?>></td>
<td>-</td>
</tr>
<tr>
<td>병종
<select name=type1 size=1>
<option value=0>--------</option>
<option <?=$sel1[0]?> value=0>보병</option>
<option <?=$sel1[1]?> value=1>청주병</option>
<option <?=$sel1[2]?> value=2>수병</option>
<option <?=$sel1[3]?> value=3>자객병</option>
<option <?=$sel1[4]?> value=4>근위병</option>
<option <?=$sel1[5]?> value=5>등갑병</option>
<option value=0>--------</option>
<option <?=$sel1[10]?> value=10>궁병</option>
<option <?=$sel1[11]?> value=11>궁기병</option>
<option <?=$sel1[12]?> value=12>연노병</option>
<option <?=$sel1[13]?> value=13>강궁병</option>
<option <?=$sel1[14]?> value=14>석궁병</option>
<option value=0>--------</option>
<option <?=$sel1[20]?> value=20>기병</option>
<option <?=$sel1[21]?> value=21>백마병</option>
<option <?=$sel1[22]?> value=22>중장기병</option>
<option <?=$sel1[23]?> value=23>돌격기병</option>
<option <?=$sel1[24]?> value=24>철기병</option>
<option <?=$sel1[25]?> value=25>수렵기병</option>
<option <?=$sel1[26]?> value=26>맹수병</option>
<option <?=$sel1[27]?> value=27>호표기병</option>
<option value=0>--------</option>
<option <?=$sel1[30]?> value=30>귀병</option>
<option <?=$sel1[31]?> value=31>신귀병</option>
<option <?=$sel1[32]?> value=32>백귀병</option>
<option <?=$sel1[33]?> value=33>흑귀병</option>
<option <?=$sel1[34]?> value=34>악귀병</option>
<option <?=$sel1[35]?> value=35>남귀병</option>
<option <?=$sel1[36]?> value=36>황귀병</option>
<option <?=$sel1[37]?> value=37>천귀병</option>
<option <?=$sel1[38]?> value=38>마귀병</option>
<option value=0>--------</option>
<option <?=$sel1[40]?> value=40>정란</option>
<option <?=$sel1[41]?> value=41>충차</option>
<option <?=$sel1[42]?> value=42>벽력거</option>
<option <?=$sel1[43]?> value=43>목우</option>
</select>
</td>
<td>병종
<select name=type2 size=1>
<option value=0>--------</option>
<option <?=$sel2[0]?> value=0>보병</option>
<option <?=$sel2[1]?> value=1>청주병</option>
<option <?=$sel2[2]?> value=2>수병</option>
<option <?=$sel2[3]?> value=3>자객병</option>
<option <?=$sel2[4]?> value=4>근위병</option>
<option <?=$sel2[5]?> value=5>등갑병</option>
<option value=0>--------</option>
<option <?=$sel2[10]?> value=10>궁병</option>
<option <?=$sel2[11]?> value=11>궁기병</option>
<option <?=$sel2[12]?> value=12>연노병</option>
<option <?=$sel2[13]?> value=13>강궁병</option>
<option <?=$sel2[14]?> value=14>석궁병</option>
<option value=0>--------</option>
<option <?=$sel2[20]?> value=20>기병</option>
<option <?=$sel2[21]?> value=21>백마병</option>
<option <?=$sel2[22]?> value=22>중장기병</option>
<option <?=$sel2[23]?> value=23>돌격기병</option>
<option <?=$sel2[24]?> value=24>철기병</option>
<option <?=$sel2[25]?> value=25>수렵기병</option>
<option <?=$sel2[26]?> value=26>맹수병</option>
<option <?=$sel2[27]?> value=27>호표기병</option>
<option value=0>--------</option>
<option <?=$sel2[30]?> value=30>귀병</option>
<option <?=$sel2[31]?> value=31>신귀병</option>
<option <?=$sel2[32]?> value=32>백귀병</option>
<option <?=$sel2[33]?> value=33>흑귀병</option>
<option <?=$sel2[34]?> value=34>악귀병</option>
<option <?=$sel2[35]?> value=35>남귀병</option>
<option <?=$sel2[36]?> value=36>황귀병</option>
<option <?=$sel2[37]?> value=37>천귀병</option>
<option <?=$sel2[38]?> value=38>마귀병</option>
<option value=0>--------</option>
<option <?=$sel2[40]?> value=40>정란</option>
<option <?=$sel2[41]?> value=41>충차</option>
<option <?=$sel2[42]?> value=42>벽력거</option>
<option <?=$sel2[43]?> value=43>목우</option>
</select>
</td>
<td>성벽 <input size=4 maxlength=4 name=wall value=<?=$wall?>></td>
</tr>
<tr>
<td>병력 <input size=5 maxlength=5 name=crew1 value=<?=$crew1?>></td>
<td>병력 <input size=5 maxlength=5 name=crew2 value=<?=$crew2?>></td>
<td>수비 <input size=4 maxlength=4 name=def value=<?=$def?>></td>
</tr>
<tr>
<td>훈련 <input size=3 maxlength=3 name=train1 value=<?=$train1?>></td>
<td>훈련 <input size=3 maxlength=3 name=train2 value=<?=$train2?>></td>
<td>훈련 <input size=3 maxlength=3 name=train3 value=<?=$train3?>></td>
</tr>
<tr>
<td>사기 <input size=3 maxlength=3 name=atmos1 value=<?=$atmos1?>></td>
<td>사기 <input size=3 maxlength=3 name=atmos2 value=<?=$atmos2?>></td>
<td>사기 <input size=3 maxlength=3 name=atmos3 value=<?=$atmos3?>></td>
</tr>
<tr>
<td>기술
<select name=tech1 size=1>
<option <?=$tch1[0]?> value=0>0등급</option>
<option <?=$tch1[1]?> value=1000>1등급</option>
<option <?=$tch1[2]?> value=2000>2등급</option>
<option <?=$tch1[3]?> value=3000>3등급</option>
<option <?=$tch1[4]?> value=4000>4등급</option>
<option <?=$tch1[5]?> value=5000>5등급</option>
<option <?=$tch1[6]?> value=6000>6등급</option>
<option <?=$tch1[7]?> value=7000>7등급</option>
<option <?=$tch1[8]?> value=8000>8등급</option>
<option <?=$tch1[9]?> value=9000>9등급</option>
<option <?=$tch1[10]?> value=10000>10등급</option>
</select>
</td>
<td>기술
<select name=tech2 size=1>
<option <?=$tch2[0]?> value=0>0등급</option>
<option <?=$tch2[1]?> value=1000>1등급</option>
<option <?=$tch2[2]?> value=2000>2등급</option>
<option <?=$tch2[3]?> value=3000>3등급</option>
<option <?=$tch2[4]?> value=4000>4등급</option>
<option <?=$tch2[5]?> value=5000>5등급</option>
<option <?=$tch2[6]?> value=6000>6등급</option>
<option <?=$tch2[7]?> value=7000>7등급</option>
<option <?=$tch2[8]?> value=8000>8등급</option>
<option <?=$tch2[9]?> value=9000>9등급</option>
<option <?=$tch2[10]?> value=10000>10등급</option>
</select>
</td>
<td>-</td>
</tr>
<tr>
<td>
<select name=dex10 size=1>
<option <?=$dx10[0]?> value=0>F</option>
<option <?=$dx10[1]?> value=2500>E-</option>
<option <?=$dx10[2]?> value=7500>E</option>
<option <?=$dx10[3]?> value=15000>E+</option>
<option <?=$dx10[4]?> value=25000>D-</option>
<option <?=$dx10[5]?> value=37500>D</option>
<option <?=$dx10[6]?> value=52500>D+</option>
<option <?=$dx10[7]?> value=70000>C-</option>
<option <?=$dx10[8]?> value=90000>C</option>
<option <?=$dx10[9]?> value=112500>C+</option>
<option <?=$dx10[10]?> value=137500>B-</option>
<option <?=$dx10[11]?> value=165000>B</option>
<option <?=$dx10[12]?> value=195000>B+</option>
<option <?=$dx10[13]?> value=227500>A-</option>
<option <?=$dx10[14]?> value=262500>A</option>
<option <?=$dx10[15]?> value=300000>A+</option>
<option <?=$dx10[16]?> value=340000>S</option>
<option <?=$dx10[17]?> value=382500>SS</option>
<option <?=$dx10[18]?> value=427500>SSS</option>
</select>
<select name=dex110 size=1>
<option <?=$dx110[0]?> value=0>F</option>
<option <?=$dx110[1]?> value=2500>E-</option>
<option <?=$dx110[2]?> value=7500>E</option>
<option <?=$dx110[3]?> value=15000>E+</option>
<option <?=$dx110[4]?> value=25000>D-</option>
<option <?=$dx110[5]?> value=37500>D</option>
<option <?=$dx110[6]?> value=52500>D+</option>
<option <?=$dx110[7]?> value=70000>C-</option>
<option <?=$dx110[8]?> value=90000>C</option>
<option <?=$dx110[9]?> value=112500>C+</option>
<option <?=$dx110[10]?> value=137500>B-</option>
<option <?=$dx110[11]?> value=165000>B</option>
<option <?=$dx110[12]?> value=195000>B+</option>
<option <?=$dx110[13]?> value=227500>A-</option>
<option <?=$dx110[14]?> value=262500>A</option>
<option <?=$dx110[15]?> value=300000>A+</option>
<option <?=$dx110[16]?> value=340000>S</option>
<option <?=$dx110[17]?> value=382500>SS</option>
<option <?=$dx110[18]?> value=427500>SSS</option>
</select>
<select name=dex120 size=1>
<option <?=$dx120[0]?> value=0>F</option>
<option <?=$dx120[1]?> value=2500>E-</option>
<option <?=$dx120[2]?> value=7500>E</option>
<option <?=$dx120[3]?> value=15000>E+</option>
<option <?=$dx120[4]?> value=25000>D-</option>
<option <?=$dx120[5]?> value=37500>D</option>
<option <?=$dx120[6]?> value=52500>D+</option>
<option <?=$dx120[7]?> value=70000>C-</option>
<option <?=$dx120[8]?> value=90000>C</option>
<option <?=$dx120[9]?> value=112500>C+</option>
<option <?=$dx120[10]?> value=137500>B-</option>
<option <?=$dx120[11]?> value=165000>B</option>
<option <?=$dx120[12]?> value=195000>B+</option>
<option <?=$dx120[13]?> value=227500>A-</option>
<option <?=$dx120[14]?> value=262500>A</option>
<option <?=$dx120[15]?> value=300000>A+</option>
<option <?=$dx120[16]?> value=340000>S</option>
<option <?=$dx120[17]?> value=382500>SS</option>
<option <?=$dx120[18]?> value=427500>SSS</option>
</select>
<select name=dex130 size=1>
<option <?=$dx130[0]?> value=0>F</option>
<option <?=$dx130[1]?> value=2500>E-</option>
<option <?=$dx130[2]?> value=7500>E</option>
<option <?=$dx130[3]?> value=15000>E+</option>
<option <?=$dx130[4]?> value=25000>D-</option>
<option <?=$dx130[5]?> value=37500>D</option>
<option <?=$dx130[6]?> value=52500>D+</option>
<option <?=$dx130[7]?> value=70000>C-</option>
<option <?=$dx130[8]?> value=90000>C</option>
<option <?=$dx130[9]?> value=112500>C+</option>
<option <?=$dx130[10]?> value=137500>B-</option>
<option <?=$dx130[11]?> value=165000>B</option>
<option <?=$dx130[12]?> value=195000>B+</option>
<option <?=$dx130[13]?> value=227500>A-</option>
<option <?=$dx130[14]?> value=262500>A</option>
<option <?=$dx130[15]?> value=300000>A+</option>
<option <?=$dx130[16]?> value=340000>S</option>
<option <?=$dx130[17]?> value=382500>SS</option>
<option <?=$dx130[18]?> value=427500>SSS</option>
</select>
<select name=dex140 size=1>
<option <?=$dx140[0]?> value=0>F</option>
<option <?=$dx140[1]?> value=2500>E-</option>
<option <?=$dx140[2]?> value=7500>E</option>
<option <?=$dx140[3]?> value=15000>E+</option>
<option <?=$dx140[4]?> value=25000>D-</option>
<option <?=$dx140[5]?> value=37500>D</option>
<option <?=$dx140[6]?> value=52500>D+</option>
<option <?=$dx140[7]?> value=70000>C-</option>
<option <?=$dx140[8]?> value=90000>C</option>
<option <?=$dx140[9]?> value=112500>C+</option>
<option <?=$dx140[10]?> value=137500>B-</option>
<option <?=$dx140[11]?> value=165000>B</option>
<option <?=$dx140[12]?> value=195000>B+</option>
<option <?=$dx140[13]?> value=227500>A-</option>
<option <?=$dx140[14]?> value=262500>A</option>
<option <?=$dx140[15]?> value=300000>A+</option>
<option <?=$dx140[16]?> value=340000>S</option>
<option <?=$dx140[17]?> value=382500>SS</option>
<option <?=$dx140[18]?> value=427500>SSS</option>
</select>
</td>
<td>
<select name=dex20 size=1>
<option <?=$dx20[0]?> value=0>F</option>
<option <?=$dx20[1]?> value=2500>E-</option>
<option <?=$dx20[2]?> value=7500>E</option>
<option <?=$dx20[3]?> value=15000>E+</option>
<option <?=$dx20[4]?> value=25000>D-</option>
<option <?=$dx20[5]?> value=37500>D</option>
<option <?=$dx20[6]?> value=52500>D+</option>
<option <?=$dx20[7]?> value=70000>C-</option>
<option <?=$dx20[8]?> value=90000>C</option>
<option <?=$dx20[9]?> value=112500>C+</option>
<option <?=$dx20[10]?> value=137500>B-</option>
<option <?=$dx20[11]?> value=165000>B</option>
<option <?=$dx20[12]?> value=195000>B+</option>
<option <?=$dx20[13]?> value=227500>A-</option>
<option <?=$dx20[14]?> value=262500>A</option>
<option <?=$dx20[15]?> value=300000>A+</option>
<option <?=$dx20[16]?> value=340000>S</option>
<option <?=$dx20[17]?> value=382500>SS</option>
<option <?=$dx20[18]?> value=427500>SSS</option>
</select>
<select name=dex210 size=1>
<option <?=$dx210[0]?> value=0>F</option>
<option <?=$dx210[1]?> value=2500>E-</option>
<option <?=$dx210[2]?> value=7500>E</option>
<option <?=$dx210[3]?> value=15000>E+</option>
<option <?=$dx210[4]?> value=25000>D-</option>
<option <?=$dx210[5]?> value=37500>D</option>
<option <?=$dx210[6]?> value=52500>D+</option>
<option <?=$dx210[7]?> value=70000>C-</option>
<option <?=$dx210[8]?> value=90000>C</option>
<option <?=$dx210[9]?> value=112500>C+</option>
<option <?=$dx210[10]?> value=137500>B-</option>
<option <?=$dx210[11]?> value=165000>B</option>
<option <?=$dx210[12]?> value=195000>B+</option>
<option <?=$dx210[13]?> value=227500>A-</option>
<option <?=$dx210[14]?> value=262500>A</option>
<option <?=$dx210[15]?> value=300000>A+</option>
<option <?=$dx210[16]?> value=340000>S</option>
<option <?=$dx210[17]?> value=382500>SS</option>
<option <?=$dx210[18]?> value=427500>SSS</option>
</select>
<select name=dex220 size=1>
<option <?=$dx220[0]?> value=0>F</option>
<option <?=$dx220[1]?> value=2500>E-</option>
<option <?=$dx220[2]?> value=7500>E</option>
<option <?=$dx220[3]?> value=15000>E+</option>
<option <?=$dx220[4]?> value=25000>D-</option>
<option <?=$dx220[5]?> value=37500>D</option>
<option <?=$dx220[6]?> value=52500>D+</option>
<option <?=$dx220[7]?> value=70000>C-</option>
<option <?=$dx220[8]?> value=90000>C</option>
<option <?=$dx220[9]?> value=112500>C+</option>
<option <?=$dx220[10]?> value=137500>B-</option>
<option <?=$dx220[11]?> value=165000>B</option>
<option <?=$dx220[12]?> value=195000>B+</option>
<option <?=$dx220[13]?> value=227500>A-</option>
<option <?=$dx220[14]?> value=262500>A</option>
<option <?=$dx220[15]?> value=300000>A+</option>
<option <?=$dx220[16]?> value=340000>S</option>
<option <?=$dx220[17]?> value=382500>SS</option>
<option <?=$dx220[18]?> value=427500>SSS</option>
</select>
<select name=dex230 size=1>
<option <?=$dx230[0]?> value=0>F</option>
<option <?=$dx230[1]?> value=2500>E-</option>
<option <?=$dx230[2]?> value=7500>E</option>
<option <?=$dx230[3]?> value=15000>E+</option>
<option <?=$dx230[4]?> value=25000>D-</option>
<option <?=$dx230[5]?> value=37500>D</option>
<option <?=$dx230[6]?> value=52500>D+</option>
<option <?=$dx230[7]?> value=70000>C-</option>
<option <?=$dx230[8]?> value=90000>C</option>
<option <?=$dx230[9]?> value=112500>C+</option>
<option <?=$dx230[10]?> value=137500>B-</option>
<option <?=$dx230[11]?> value=165000>B</option>
<option <?=$dx230[12]?> value=195000>B+</option>
<option <?=$dx230[13]?> value=227500>A-</option>
<option <?=$dx230[14]?> value=262500>A</option>
<option <?=$dx230[15]?> value=300000>A+</option>
<option <?=$dx230[16]?> value=340000>S</option>
<option <?=$dx230[17]?> value=382500>SS</option>
<option <?=$dx230[18]?> value=427500>SSS</option>
</select>
<select name=dex240 size=1>
<option <?=$dx240[0]?> value=0>F</option>
<option <?=$dx240[1]?> value=2500>E-</option>
<option <?=$dx240[2]?> value=7500>E</option>
<option <?=$dx240[3]?> value=15000>E+</option>
<option <?=$dx240[4]?> value=25000>D-</option>
<option <?=$dx240[5]?> value=37500>D</option>
<option <?=$dx240[6]?> value=52500>D+</option>
<option <?=$dx240[7]?> value=70000>C-</option>
<option <?=$dx240[8]?> value=90000>C</option>
<option <?=$dx240[9]?> value=112500>C+</option>
<option <?=$dx240[10]?> value=137500>B-</option>
<option <?=$dx240[11]?> value=165000>B</option>
<option <?=$dx240[12]?> value=195000>B+</option>
<option <?=$dx240[13]?> value=227500>A-</option>
<option <?=$dx240[14]?> value=262500>A</option>
<option <?=$dx240[15]?> value=300000>A+</option>
<option <?=$dx240[16]?> value=340000>S</option>
<option <?=$dx240[17]?> value=382500>SS</option>
<option <?=$dx240[18]?> value=427500>SSS</option>
</select>
</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>
<input type=submit name=isgen value=장수공격>
<?='<input type=submit name=isgen value=장수평균>'?>
</td>
<td>
<input type=submit name=isgen value=성벽공격>
<?='<input type=submit name=isgen value=성벽평균>'?>
</td>
</tr>
<tr><td colspan=3>
<?php
if($isgen == "장수공격" || $isgen == "성벽공격") {
echo $msg;
} elseif($isgen == "장수평균" || $isgen == "성벽평균") {
echo $msg2;
}
?>
</td></tr>
</table>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<tr id=bg1>
<td align=right></td>
<td align=center>공격</td>
<td align=center>방어</td>
<td align=center>기동</td>
<td align=center>회피</td>
<td align=center>가격</td>
<td align=center>군량</td>
<td width=500 align=center>-</td>
</tr>
<?php
for($i=0; $i <= 5; $i++) {
printSimul($game, $i);
}
echo "
<tr><td height=5 colspan=8 id=bg1></td></tr>";
for($i=10; $i <= 14; $i++) {
printSimul($game, $i);
}
echo "
<tr><td height=5 colspan=8 id=bg1></td></tr>";
for($i=20; $i <= 27; $i++) {
printSimul($game, $i);
}
echo "
<tr><td height=5 colspan=8 id=bg1></td></tr>";
for($i=30; $i <= 38; $i++) {
printSimul($game, $i);
}
echo "
<tr><td height=5 colspan=8 id=bg1></td></tr>";
for($i=40; $i <= 43; $i++) {
printSimul($game, $i);
}
echo "
<tr><td height=5 colspan=8 id=bg1></td></tr>";
?>
</table>
</form>
</body>
<?php PrintElapsedTime(); ?>
</html>
<?php
function printSimul($game, $i) {
$att = $game["att{$i}"];
$def = $game["def{$i}"];
$spd = $game["spd{$i}"];
$avd = $game["avd{$i}"];
$cst = $game["cst{$i}"];
$ric = $game["ric{$i}"];
echo "
<tr>
<td align=right>".GameUnitConst::byId($i)->name."</td>
<td align=center>$att</td>
<td align=center>$def</td>
<td align=center>$spd</td>
<td align=center>$avd</td>
<td align=center>$cst</td>
<td align=center>$ric</td>
<td align=center>-</td>
</tr>";
}
+225 -285
View File
@@ -3,45 +3,42 @@ namespace sammo;
include "lib.php";
include "func.php";
$btn = Util::getReq('btn');
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$connect=$db->get();
$gameStor = KVStorage::getStorage($db, 'game_env');
increaseRefresh("명장일람", 2);
increaseRefresh("명장일람", 1);
$query = "select conlimit from game limit 1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$admin = MYDB_fetch_array($result);
$query = "select con,turntime from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$me = MYDB_fetch_array($result);
$con = checkLimit($me['con'], $admin['conlimit']);
if ($con >= 2) {
printLimitMsg($me['turntime']);
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<title>명장일람</title>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1136" />
<title><?=UniqueConst::$serverName?>: 명장일람</title>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<?=WebUtil::printCSS('css/hallOfFame.css')?>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('js/common.js')?>
</head>
<body>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1100 class='tb_layout bg0'>
<tr><td> <br><?=closeButton()?></td></tr>
</table>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1100 class='tb_layout bg0'>
<form name=form1 action=a_bestGeneral.php method=post>
<tr><td align=center>
<input type=submit name=btn value='유저 보기'>
@@ -49,293 +46,236 @@ if ($con >= 2) {
</td></tr>
</form>
</table>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<div style="margin:auto;width=1000px;">
<?php
if (isset($btn) && $btn == "NPC 보기") {
$sel = "npc>=2";
} else {
$sel = "npc<2";
$ownerNameList = [];
if($gameStor->isunited){
foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){
$ownerNameList[$ownerID] = $ownerName;
}
}
$nationName = [];
$nationColor = [];
$nationName = [0=>'재야'];
$nationColor = [0=>'#000000'];
foreach (getAllNationStaticInfo() as $nation) {
$nationName[$nation['nation']] = $nation['name'];
$nationColor[$nation['nation']] = $nation['color'];
}
$type = array(
"명 성",
"계 급",
"계 략 성 공",
"전 투 횟 수",
"승 리",
"승 률",
"사 살",
"살 상 률",
"보 병 숙 련 도",
"궁 병 숙 련 도",
"기 병 숙 련 도",
"귀 병 숙 련 도",
"차 병 숙 련 도",
"전 력 전 승 률",
"통 솔 전 승 률",
"일 기 토 승 률",
"설 전 ",
"베 팅 투 자 액",
"베 팅 당 첨",
"베 팅 수 익 금",
"베 팅 수 익 률"
);
$types = [
["명 성", "int", function($v){$v['value'] = $v['experience']; return $v; }],
["계 급", "int", function($v){$v['value'] = $v['dedication']; return $v; }],
["계 략 성 공", "int", function($v) use ($gameStor){
$v['value'] = $v['firenum'];
if($gameStor->isunited){
return $v;
}
$v['nationName'] = '???';
$v['pictureFullPath'] = GetImageURL(0)."/default.jpg";
$v['name'] = '???';
$v['owner_name'] = null;
$v['bgColor'] = GameConst::$basecolor4;
$v['fgColor'] = newColor($v['bgColor']);
return $v;
}],
["전 투 횟 수", "int", function($v){$v['value'] = $v['warnum']; return $v; }],
["", "int", function($v){$v['value'] = $v['killnum']; return $v; }],
["승 률", "percent", function($v){
if($v['warnum'] < 10){
$v['value'] = 0;
}
else{
$v['value'] = $v['killnum'] / max(1, $v['warnum']);
}
return $v;
}],
["사 살", "int", function($v){$v['value'] = $v['killcrew']; return $v; }],
["살 상 률", "percent", function($v){
if($v['warnum'] < 10){
$v['value'] = 0;
}
else{
$v['value'] = $v['killcrew'] / max(1, $v['deathcrew']);
}
return $v;
}],
["보 병 숙 련 도", "int", function($v){$v['value'] = $v['dex0']; return $v; }],
["궁 병 숙 련 도", "int", function($v){$v['value'] = $v['dex10']; return $v; }],
["기 병 숙 련 도", "int", function($v){$v['value'] = $v['dex20']; return $v; }],
["귀 병 숙 련 도", "int", function($v){$v['value'] = $v['dex30']; return $v; }],
["차 병 숙 련 도", "int", function($v){$v['value'] = $v['dex40']; return $v; }],
["전 력 전 승 률", "percent", function($v){
$totalCnt = $v['ttw']+$v['ttd']+$v['ttl'];
if($totalCnt < 50){
$v['value'] = 0;
}
else{
$v['value'] = $v['ttw']/max(1, $totalCnt);
}
return $v;
}],
["통 솔 전 승 률", "percent", function($v){
$totalCnt = $v['tlw']+$v['tld']+$v['tll'];
if($totalCnt < 50){
$v['value'] = 0;
}
else{
$v['value'] = $v['tlw']/max(1, $totalCnt);
}
return $v;
}],
["일 기 토 승 률", "percent", function($v){
$totalCnt = $v['tpw']+$v['tpd']+$v['tpl'];
if($totalCnt < 50){
$v['value'] = 0;
}
else{
$v['value'] = $v['tpw']/max(1, $totalCnt);
}
return $v;
}],
["설 전 승 률", "percent", function($v){
$totalCnt = $v['tiw']+$v['tid']+$v['til'];
if($totalCnt < 50){
$v['value'] = 0;
}
else{
$v['value'] = $v['tiw']/max(1, $totalCnt);
}
return $v;
}],
["베 팅 투 자 액", "int", function($v){$v['value'] = $v['betgold']; return $v; }],
["베 팅 당 첨", "int", function($v){$v['value'] = $v['betwin']; return $v; }],
["베 팅 수 익 금", "int", function($v){$v['value'] = $v['betwingold']; return $v; }],
["베 팅 수 익 률", "percent", function($v){
if($v['betgold'] < 1000){
$v['value'] = 0;
}
else{
$v['value'] = $v['betwingold']/max(1, $v['betgold']);
}
return $v;
}],
];
for ($i=0; $i < 21; $i++) {
$name = [];
$data = [];
$color = [];
$pic = [];
switch ($i) {
case 0: $query = "select nation,no,name,picture,imgsvr,experience as data from general where $sel order by data desc limit 0,10"; break;
case 1: $query = "select nation,no,name,picture,imgsvr,dedication as data from general where $sel order by data desc limit 0,10"; break;
case 2: $query = "select nation,no,name,picture,imgsvr,firenum as data from general where $sel order by data desc limit 0,10"; break;
case 3: $query = "select nation,no,name,picture,imgsvr,warnum as data from general where $sel order by data desc limit 0,10"; break;
case 4: $query = "select nation,no,name,picture,imgsvr,killnum as data from general where $sel order by data desc limit 0,10"; break;
case 5: $query = "select nation,no,name,picture,imgsvr,killnum/warnum*10000 as data from general where warnum>=10 and $sel order by data desc limit 0,10"; break;
case 6: $query = "select nation,no,name,picture,imgsvr,killcrew as data from general where $sel order by data desc limit 0,10"; break;
case 7: $query = "select nation,no,name,picture,imgsvr,killcrew/deathcrew*10000 as data from general where warnum>=10 and $sel order by data desc limit 0,10"; break;
case 8: $query = "select nation,no,name,picture,imgsvr,dex0 as data from general where $sel order by data desc limit 0,10"; break;
case 9: $query = "select nation,no,name,picture,imgsvr,dex10 as data from general where $sel order by data desc limit 0,10"; break;
case 10: $query = "select nation,no,name,picture,imgsvr,dex20 as data from general where $sel order by data desc limit 0,10"; break;
case 11: $query = "select nation,no,name,picture,imgsvr,dex30 as data from general where $sel order by data desc limit 0,10"; break;
case 12: $query = "select nation,no,name,picture,imgsvr,dex40 as data from general where $sel order by data desc limit 0,10"; break;
case 13: $query = "select nation,no,name,picture,imgsvr,ttw/(ttw+ttd+ttl)*10000 as data from general where $sel and (ttw+ttd+ttl)>=50 order by data desc limit 0,10"; break;
case 14: $query = "select nation,no,name,picture,imgsvr,tlw/(tlw+tld+tll)*10000 as data from general where $sel and (tlw+tld+tll)>=50 order by data desc limit 0,10"; break;
case 15: $query = "select nation,no,name,picture,imgsvr,tpw/(tpw+tpd+tpl)*10000 as data from general where $sel and (tpw+tpd+tpl)>=50 order by data desc limit 0,10"; break;
case 16: $query = "select nation,no,name,picture,imgsvr,tiw/(tiw+tid+til)*10000 as data from general where $sel and (tiw+tid+til)>=50 order by data desc limit 0,10"; break;
case 17: $query = "select nation,no,name,picture,imgsvr,betgold as data from general where $sel order by data desc limit 0,10"; break;
case 18: $query = "select nation,no,name,picture,imgsvr,betwin as data from general where $sel order by data desc limit 0,10"; break;
case 19: $query = "select nation,no,name,picture,imgsvr,betwingold as data from general where $sel order by data desc limit 0,10"; break;
case 20: $query = "select nation,no,name,picture,imgsvr,betwingold/betgold*10000 as data from general where $sel and betgold >= 1000 order by data desc limit 0,10"; break;
$generals = array_map(function($general) use($nationColor, $nationName) {
$general['bgColor'] = $nationColor[$general['nation']]??GameConst::$basecolor4;
$general['fgColor'] = newColor($general['bgColor']);
$general['nationName'] = $nationName[$general['nation']];
if(key_exists('picture', $general)){
$imageTemp = GetImageURL($general['imgsvr']);
$general['pictureFullPath'] = "$imageTemp/{$general['picture']}";
}
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
echo "
<tr><td align=center colspan=10 id=bg1><font size=4>$type[$i]</font></td></tr>
<tr align=center id=bg2><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr>
<tr>";
for ($k=0; $k < 10; $k++) {
$gen = MYDB_fetch_array($result);
if ($i != 2) {
if (isset($gen)) {
$name[$k] = $gen['name'];
$nation[$k] = $gen['nation'] == 0 ? "재야" : $nationName[$gen['nation']];
$data[$k] = $gen['data'];
$color[$k] = $gen['nation'] == 0 ? "#FFFFFF" : $nationColor[$gen['nation']];
$pic[$k] = $gen['picture'];
} else {
$name[$k] = "-";
$nation[$k] = "-";
$data[$k] = "-";
$color[$k] = GameConst::$basecolor4;
$pic[$k] = "";
}
} else {
$name[$k] = "???";
$nation[$k] = "???";
$data[$k] = $gen['data'];
$color[$k] = GameConst::$basecolor4;
$gen['imgsvr'] = 0;
$pic[$k] = "9999.jpg";
}
if ($color[$k] == "") {
$color[$k] = GameConst::$basecolor4;
}
if ($nation[$k] == "") {
$nation[$k] = "&nbsp;";
}
if ($pic[$k] == "") {
echo "<td align=center>&nbsp;</td>";
} else {
$imageTemp = GetImageURL($gen['imgsvr']);
echo "<td align=center><img src={$imageTemp}/{$pic[$k]}></img></td>";
}
else{
$general['pictureFullPath'] = GetImageURL(0)."/default.jpg";
}
echo "</tr><tr>";
return $general;
}, $db->query(
"SELECT nation,no,name,name2 as owner_name, owner, picture, imgsvr,
experience, dedication, firenum, warnum, killnum, killcrew, deathcrew,
dex0, dex10, dex20, dex30, dex40,
ttw, ttd, ttl, tlw, tld, tll, tpw, tpd, tpl, tiw, tid, til,
betgold, betwin, betwingold,
horse, weap, book, item
FROM general WHERE %l", $btn == "NPC 보기"?"npc>=2":"npc<2"));
for ($k=0; $k < 10; $k++) {
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$nation[$k]}</td>";
}
echo "</tr><tr>";
$templates = new \League\Plates\Engine('templates');
for ($k=0; $k < 10; $k++) {
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$name[$k]}</td>";
}
foreach($types as $idx=>[$typeName, $typeValue, $typeFunc]){
$validCnt = 0;
$typeGenerals = array_map(function($general) use($typeValue, $typeFunc, &$validCnt, $ownerNameList){
$general['owner_name'] = $ownerNameList[$general['owner']]??null;
$general = ($typeFunc)($general);
$value = $general['value'];
echo "</tr><tr>";
for ($k=0; $k < 10; $k++) {
if ($i == 5 || $i == 7 || $i == 20) {
$data[$k] = intdiv($data[$k], 100).".".($data[$k]%100)." %";
if($value > 0){
$validCnt+=1;
}
if ($i >= 13 && $i <= 16) {
$data[$k] = intdiv($data[$k], 100).".".($data[$k]%100)." %";
if($typeValue == 'percent'){
$general['printValue'] = number_format($value*100, 2).'%';
}
echo "<td align=center>{$data[$k]}</td>";
}
echo "</tr><tr><td colspan=10 height=5 id=bg1></td></tr>";
else {
$general['printValue'] = number_format($value);
}
return $general;
}, $generals);
usort($typeGenerals, function($lhs, $rhs){
//내림차순
return -($lhs['value'] <=> $rhs['value']);
});
echo $templates->render('hallOfFrame', [
'typeName'=>$typeName,
'generals'=>array_slice($typeGenerals, 0, min(10, $validCnt))
]);
}
echo "
</table>
<br>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
";
$type = array(
"명 마",
"명 검",
"명 서",
"도 구"
);
$call = array(
"horse",
"weap",
"book",
"item"
);
$func = array(
"getHorseName",
"getWeapName",
"getBookName",
"getItemName"
);
for ($i=0; $i < 4; $i++) {
$name = [];
$data = [];
$color = [];
$pic = [];
echo "
<tr><td align=center colspan=10 id=bg1><font size=4>$type[$i]</font></td></tr>
<tr align=center id=bg2>";
for ($k=26; $k > 16; $k--) {
$str = $func[$i]($k);
echo "<td>".$str."</td>";
}
echo "</tr><tr>";
for ($k=26; $k > 16; $k--) {
$query = "select nation,no,name,picture,imgsvr from general where {$call[$i]}={$k}";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gen = MYDB_fetch_array($result);
if (isset($gen)) {
$name[$k] = $gen['name'];
$nation[$k] = $gen['nation'] == 0 ? "재야" : $nationName[$gen['nation']];
$color[$k] = $gen['nation'] == 0 ? "#FFFFFF" : $nationColor[$gen['nation']];
$pic[$k] = $gen['picture'];
} else {
$name[$k] = "미발견";
$nation[$k] = "-";
$color[$k] = "";
$pic[$k] = "";
}
if ($color[$k] == "") {
$color[$k] = GameConst::$basecolor4;
}
if ($nation[$k] == "") {
$nation[$k] = "&nbsp;";
}
if ($pic[$k] == "") {
echo "<td align=center>&nbsp;</td>";
} else {
$imageTemp = GetImageURL($gen['imgsvr']??0);
echo "<td align=center><img src={$imageTemp}/{$pic[$k]}></img></td>";
}
}
echo "</tr><tr>";
for ($k=26; $k > 16; $k--) {
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$nation[$k]}</td>";
}
echo "</tr><tr>";
for ($k=26; $k > 16; $k--) {
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$name[$k]}</td>";
}
echo "</tr><tr><td colspan=10 height=5 id=bg1></td></tr>";
echo "
<tr align=center id=bg2>";
for ($k=16; $k > 6; $k--) {
$str = $func[$i]($k);
echo "<td>".$str."</td>";
}
echo "</tr><tr>";
for ($k=16; $k > 6; $k--) {
$query = "select nation,no,name,picture,imgsvr from general where {$call[$i]}={$k}";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gen = MYDB_fetch_array($result);
if (isset($gen)) {
$name[$k] = $gen['name'];
$nation[$k] = $gen['nation'] == 0 ? "재야" : $nationName[$gen['nation']];
$color[$k] = $gen['nation'] == 0 ? "#FFFFFF" : $nationColor[$gen['nation']];
$pic[$k] = $gen['picture'];
} else {
$name[$k] = "미발견";
$nation[$k] = "-";
$color[$k] = "";
$pic[$k] = "";
}
if ($color[$k] == "") {
$color[$k] = GameConst::$basecolor4;
}
if ($nation[$k] == "") {
$nation[$k] = "&nbsp;";
}
if ($pic[$k] == "") {
echo "<td align=center>&nbsp;</td>";
} else {
$imageTemp = GetImageURL($gen['imgsvr']??0);
echo "<td align=center><img src={$imageTemp}/{$pic[$k]}></img></td>";
}
}
echo "</tr><tr>";
for ($k=16; $k > 6; $k--) {
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$nation[$k]}</td>";
}
echo "</tr><tr>";
for ($k=16; $k > 6; $k--) {
echo "<td align=center style=background-color:{$color[$k]};color:".newColor($color[$k]).">{$name[$k]}</td>";
}
echo "</tr><tr><td colspan=10 height=5 id=bg1></td></tr>";
}
?>
</table>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
</div>
<div style="margin:auto;width=1000px;margin-top:5px;">
<?php
//유니크 아이템 소유자
$itemTypes = [
["명 마", 'horse', function($v){return getHorseName($v);}, 7, 26, []],
["명 검", 'weap', function($v){return getWeapName($v);}, 7, 26, []],
["명 서", 'book', function($v){return getBookName($v);}, 7, 26, []],
["도 구", 'item', function($v){return displayItemInfo($v);}, 7, 26, []],
];
$simpleItemTypes = array_map(function($itemType){return $itemType[1];}, $itemTypes);
foreach($generals as $general){
foreach($itemTypes as $itemIdx=>[,$itemType, $itemFunc,,,]){
$itemCode = $general[$itemType];
if($itemCode <= 6){
continue;
}
$itemName = ($itemFunc)($itemCode);
$general['rankName'] = $itemName;
$general['value'] = $itemCode;
$itemTypes[$itemIdx][5][$itemCode] = $general;
}
}
foreach($itemTypes as [$itemNameType, $itemType, $itemFunc, $itemMinCode, $itemMaxCode, $itemOwners]){
$itemRanker = [];
for($itemCode = $itemMaxCode; $itemCode >= $itemMinCode; $itemCode--){
if(!key_exists($itemCode, $itemOwners)){
$emptyCard = [
'rankName' => ($itemFunc)($itemCode),
'pictureFullPath' => GetImageURL(0)."/default.jpg",
'value'=>$itemCode,
'name'=>'미발견',
'bgColor'=>GameConst::$basecolor4,
'fgColor'=>newColor(GameConst::$basecolor4),
];
$itemRanker[$itemCode] = $emptyCard;
continue;
}
$general = $itemOwners[$itemCode];
$itemRanker[$itemCode] = $general;
}
echo $templates->render('hallOfFrame', [
'typeName'=>$itemNameType,
'generals'=>$itemRanker
]);
}
?>
</div>
<table align=center width=1100 class='tb_layout bg0'>
<tr><td><?=closeButton()?></td></tr>
<tr><td><?=banner()?> </td></tr>
</table>
<?php PrintElapsedTime(); ?>
</body>
</html>
+74 -150
View File
@@ -4,202 +4,126 @@ namespace sammo;
include "lib.php";
include "func.php";
$select = Util::getReq('select', 'int', 0);
$db = DB::db();
$connect=$db->get();
increaseRefresh("왕조일람", 2);
increaseRefresh("왕조일람", 1);
?>
<!DOCTYPE html>
<html>
<head>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<title>왕조일람</title>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<title><?=UniqueConst::$serverName?>: 왕조일람</title>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style="font-size:13px;word-break:break-all;color:white;background-color:black" id=bg0>
<table align=center width=1000 class="tb_layout bg0">
<tr><td> <br>
<input type=button value='창 닫기' onclick=window.close()><br>
<button onclick=window.close()> 닫기</button><br>
</td></tr>
</table>
<?php
if ($select == 0) {
$query = "select * from emperior order by no desc";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$empcount = MYDB_num_rows($result);
$showCurrentNation = true;
for ($i=0; $i < $empcount; $i++) {
$emperior = MYDB_fetch_array($result);
$emperiors = $db->query('SELECT * FROM emperior ORDER BY `no` DESC');
echo "
<form action=a_emperior.php method=post>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style='font-size:13px;word-break:break-all;color:white;' id=bg0>
if($emperiors){
$serverID = $emperior[0]['server_id']??($emperior[0]['serverID']??null);
if($serverID == UniqueConst::$serverID){
$showCurrentNation = false;
}
}
if ($showCurrentNation) {
$gameStor = KVStorage::getStorage($db, 'game_env');
[$year, $month] = $gameStor->getValuesAsArray(['year', 'month']);
?>
<table align=center width=1000 style="margin-top:10px;" class='tb_layout bg0'>
<tr>
<td bgcolor=skyblue align=center colspan=8>
<font size=5>{$emperior['phase']}</font>
<input type=submit value='자세히'>
<input type=hidden name=select value='{$emperior['no']}'>
<td style="background-color:#333333;" align=center colspan=8>
<font size=5>현재 (<?=$year?>年 <?=$month?>月)</font>
<a href="a_history.php"><button>역사 보기</button></a>
</td>
</tr>
<tr>
<td align=center style=color:".newColor($emperior['color'])."; bgcolor={$emperior['color']} colspan=8>
<font size=5>{$emperior['name']} ({$emperior['year']} {$emperior['month']})</font>
</td>
</tr>
<tr>
<td id=bg1 align=center width=123> </td>
<td align=center width=123>{$emperior['power']}</td>
<td id=bg1 align=center width=123> </td>
<td align=center width=123>{$emperior['gennum']}</td>
<td id=bg1 align=center width=123> </td>
<td align=center width=123>{$emperior['citynum']}</td>
<td id=bg1 align=center width=123> </td>
<td align=center width=123>{$emperior['type']}</td>
</tr>
<tr>
<td id=bg1 width=123 align=center> </td>
<td width=123 align=center>{$emperior['l12name']}</td>
<td id=bg1 width=123 align=center> </td>
<td width=123 align=center>{$emperior['l11name']}</td>
<td id=bg1 width=123 align=center> </td>
<td width=123 align=center>{$emperior['l10name']}</td>
<td id=bg1 width=123 align=center> </td>
<td width=123 align=center>{$emperior['l9name']}</td>
</tr>
</table>
</form>";
}
} else {
$query = "select * from emperior where no='$select'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$emperior = MYDB_fetch_array($result);
echo "
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style='font-size:13px;word-break:break-all;color:white;' id=bg0>
<?php
}
foreach($emperiors as $emperior){
$serverID = $emperior['server_id']??($emperior['serverID']??null);
?>
<table align=center width=1000 style="margin-top:10px;" class='tb_layout bg0'>
<tr>
<td bgcolor=skyblue align=center colspan=6>
<font size=5>{$emperior['phase']}</font>
<input type=submit value='전체보기'>
<input type=hidden name=select value='0'>
<td bgcolor=skyblue align=center colspan=8>
<font size=5><?=$emperior['phase']?></font>
<a href="a_emperior_detail.php?select=<?=$emperior['no']?>"><button>자세히</button></a>
<?php if($emperior['server_id']): ?>
<a href="a_history.php?serverID=<?=$emperior['server_id']?>"><button>역사 보기</button></a>
<?php endif ?>
</td>
</tr>
<tr>
<td id=bg1 width=98 align=center> <br>(최종 / 최대)</td>
<td align=center width=398 colspan=2>{$emperior['nation_count']}</td>
<td id=bg1 width=98 align=center> <br>(최종 / 최대)</td>
<td align=center width=398 colspan=2>{$emperior['gen_count']}</td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5>{$emperior['nation_name']}</td>
</tr>
<tr>
<td id=bg1 align=center>국가별 성향</td>
<td colspan=5>{$emperior['nation_hist']}</td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5>{$emperior['personal_hist']}</td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5>{$emperior['special_hist']}</td>
</tr>
<tr>
<td align=center style=color:".newColor($emperior['color'])."; bgcolor={$emperior['color']} colspan=6>
<font size=5>{$emperior['name']} ({$emperior['year']} {$emperior['month']})</font>
<td align=center style=color:".newColor($emperior['color'])."; bgcolor=<?=$emperior['color']?> colspan=8>
<font size=5><?=$emperior['name']?> (<?=$emperior['year']?>年 <?=$emperior['month']?>月)</font>
</td>
</tr>
<tr>
<td id=bg1 width=98 align=center> </td>
<td align=center width=398 colspan=2>{$emperior['power']}</td>
<td id=bg1 width=98 align=center> </td>
<td align=center width=398 colspan=2>{$emperior['type']}</td>
</tr>
<tr>
<td id=bg1 width=98 align=center> </td>
<td align=center width=398 colspan=2>{$emperior['gennum']}</td>
<td id=bg1 width=98 align=center> </td>
<td align=center width=398 colspan=2>{$emperior['citynum']}</td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td align=center colspan=2>{$emperior['pop']}</td>
<td id=bg1 align=center> </td>
<td align=center colspan=2>{$emperior['poprate']}</td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td align=center colspan=2>{$emperior['gold']}</td>
<td id=bg1 align=center> </td>
<td align=center colspan=2>{$emperior['rice']}</td>
<td id=bg1 align=center width=80> </td>
<td align=center width=170><?=$emperior['power']?></td>
<td id=bg1 align=center width=80> </td>
<td align=center width=170><?=$emperior['gennum']?></td>
<td id=bg1 align=center width=80> </td>
<td align=center width=170><?=$emperior['citynum']?></td>
<td id=bg1 align=center width=80> </td>
<td align=center width=170><?=$emperior['type']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332>{$emperior['l12name']}</td>
<td align=center><?=$emperior['l12name']?></td>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332>{$emperior['l11name']}</td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332>{$emperior['l10name']}</td>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332>{$emperior['l9name']}</td>
</tr>
<tr>
<td align=center><?=$emperior['l11name']?></td>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332>{$emperior['l8name']}</td>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332>{$emperior['l7name']}</td>
<td align=center><?=$emperior['l10name']?></td>
<td id=bg1 align=center> </td>
<td align=center><?=$emperior['l9name']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332>{$emperior['l6name']}</td>
<td align=center><?=$emperior['l8name']?></td>
<td id=bg1 align=center> </td>
<td align=center><?=$emperior['l7name']?></td>
<td id=bg1 align=center> </td>
<td align=center><?=$emperior['l6name']?></td>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332>{$emperior['l5name']}</td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5>{$emperior['tiger']}</td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5>{$emperior['eagle']}</td>
</tr>
<tr>
<td id=bg1 align=center> <br>(공헌도 순서)</td>
<td colspan=5>{$emperior['gen']}</td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5>".ConvertLog($emperior['history'], 1)."</td>
<td align=center><?=$emperior['l5name']?></td>
</tr>
</table>
";
<?php
}
?>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all;color:white; id=bg0>
<table style="margin-top:10px;" align=center width=1000 class='tb_layout bg0'>
<tr><td><?=closeButton()?></td></tr>
<tr><td><?=banner()?></td></tr>
</table>
<?php PrintElapsedTime(); ?>
</body>
</html>
</html>
+30 -25
View File
@@ -15,15 +15,21 @@ increaseRefresh("왕조일람", 2);
<html>
<head>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<title>왕조일람</title>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<title><?=UniqueConst::$serverName?>: 왕조일람</title>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td> <br>
<input type=button value='창 닫기' onclick=window.close()><br>
</td></tr>
@@ -41,7 +47,7 @@ if ($select == 0) {
echo "
<form action=a_emperior2.php method=post>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr>
<td bgcolor=skyblue align=center colspan=8>
<font size=5>{$emperior['phase']}</font>
@@ -55,24 +61,24 @@ if ($select == 0) {
</td>
</tr>
<tr>
<td id=bg1 align=center width=123> </td>
<td align=center width=123>{$emperior['power']}</td>
<td id=bg1 align=center width=123> </td>
<td align=center width=123>{$emperior['gennum']}</td>
<td id=bg1 align=center width=123> </td>
<td align=center width=123>{$emperior['citynum']}</td>
<td id=bg1 align=center width=123> </td>
<td align=center width=123>{$emperior['type']}</td>
<td id=bg1 align=center width=80> </td>
<td align=center width=170>{$emperior['power']}</td>
<td id=bg1 align=center width=80> </td>
<td align=center width=170>{$emperior['gennum']}</td>
<td id=bg1 align=center width=80> </td>
<td align=center width=170>{$emperior['citynum']}</td>
<td id=bg1 align=center width=80> </td>
<td align=center width=170>{$emperior['type']}</td>
</tr>
<tr>
<td id=bg1 width=123 align=center> </td>
<td width=123 align=center>{$emperior['l12name']}</td>
<td id=bg1 width=123 align=center> </td>
<td width=123 align=center>{$emperior['l11name']}</td>
<td id=bg1 width=123 align=center> </td>
<td width=123 align=center>{$emperior['l10name']}</td>
<td id=bg1 width=123 align=center> </td>
<td width=123 align=center>{$emperior['l9name']}</td>
<td id=bg1 align=center> </td>
<td align=center>{$emperior['l12name']}</td>
<td id=bg1 align=center> </td>
<td align=center>{$emperior['l11name']}</td>
<td id=bg1 align=center> </td>
<td align=center>{$emperior['l10name']}</td>
<td id=bg1 align=center> </td>
<td align=center>{$emperior['l9name']}</td>
</tr>
</table>
</form>";
@@ -84,7 +90,7 @@ if ($select == 0) {
echo "
<form action=a_emperior2.php method=post>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr>
<td bgcolor=skyblue align=center colspan=6>
<font size=5>{$emperior['phase']}</font>
@@ -196,11 +202,10 @@ if ($select == 0) {
}
?>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=closeButton()?></td></tr>
<tr><td><?=banner()?></td></tr>
</table>
<?php PrintElapsedTime(); ?>
</body>
</html>
+214
View File
@@ -0,0 +1,214 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
$select = Util::getReq('select', 'int', 0);
$db = DB::db();
$templates = new \League\Plates\Engine('templates');
$templates->registerFunction('ConvertLog', '\sammo\ConvertLog');
$templates->registerFunction('newColor', '\sammo\newColor');
increaseRefresh("왕조일람", 1);
$emperior = $db->queryFirstRow('SELECT * FROM emperior WHERE `no`=%i',$select);
$serverID = $emperior['server_id']??($emperior['serverID']??null);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<title><?=UniqueConst::$serverName?>: 왕조일람</title>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
</head>
<body>
<table align=center width=1000 class="tb_layout bg0">
<tr><td> <br>
<button onclick=window.close()> 닫기</button>
<div style="float:right;"><a href="a_emperior.php"><button>전체보기</button></a><div>
</td></tr>
</table>
<?php
if($emperior):
?>
<table align=center width=1000 class='tb_layout bg0'>
<tr>
<td bgcolor=skyblue align=center colspan=6>
<font size=5><?=$emperior['phase']?></font>
</td>
</tr>
<tr>
<td id=bg1 width=98 align=center> <br>(최종 / 최대)</td>
<td align=center width=398 colspan=2><?=$emperior['nation_count']?></td>
<td id=bg1 width=98 align=center> <br>(최종 / 최대)</td>
<td align=center width=398 colspan=2><?=$emperior['gen_count']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5><?=$emperior['nation_name']?></td>
</tr>
<tr>
<td id=bg1 align=center>국가별 성향</td>
<td colspan=5><?=$emperior['nation_hist']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5><?=$emperior['personal_hist']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5><?=$emperior['special_hist']?></td>
</tr>
<tr>
<td align=center style=color:<?=newColor($emperior['color'])?>; bgcolor=<?=$emperior['color']?> colspan=6>
<font size=5><?=$emperior['name']?> (<?=$emperior['year']?>年 <?=$emperior['month']?>月)</font>
</td>
</tr>
<tr>
<td id=bg1 width=98 align=center> </td>
<td align=center width=398 colspan=2><?=$emperior['power']?></td>
<td id=bg1 width=98 align=center> </td>
<td align=center width=398 colspan=2><?=$emperior['type']?></td>
</tr>
<tr>
<td id=bg1 width=98 align=center> </td>
<td align=center width=398 colspan=2><?=$emperior['gennum']?></td>
<td id=bg1 width=98 align=center> </td>
<td align=center width=398 colspan=2><?=$emperior['citynum']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td align=center colspan=2><?=$emperior['pop']?></td>
<td id=bg1 align=center> </td>
<td align=center colspan=2><?=$emperior['poprate']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td align=center colspan=2><?=$emperior['gold']?></td>
<td id=bg1 align=center> </td>
<td align=center colspan=2><?=$emperior['rice']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332><?=$emperior['l12name']?></td>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332><?=$emperior['l11name']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332><?=$emperior['l10name']?></td>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332><?=$emperior['l9name']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332><?=$emperior['l8name']?></td>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332><?=$emperior['l7name']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332><?=$emperior['l6name']?></td>
<td id=bg1 align=center> </td>
<td width=64>&nbsp;</td>
<td width=332><?=$emperior['l5name']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5><?=$emperior['tiger']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5><?=$emperior['eagle']?></td>
</tr>
<tr>
<td id=bg1 align=center> <br>(공헌도 순서)</td>
<td colspan=5><?=$emperior['gen']?></td>
</tr>
<tr>
<td id=bg1 align=center> </td>
<td colspan=5><?=ConvertLog($emperior['history'], 1)?></td>
</tr>
</table>
<?php
endif;
$showServers = $emperior;
if(!$serverID){
$serverID = UniqueConst::$serverID;
}
if($showServers){
$nations = $db->query('SELECT * FROM ng_old_nations WHERE server_id=%s ORDER BY date DESC', $serverID);
foreach($nations as $nation){
if(!$nation['nation']??null){
continue;
}
$nation += Json::decode($nation['data']);
$nation['typeName'] = getNationType($nation['type']);
$nation['levelName'] = getNationLevel($nation['level']);
if($nation['generals']){
$generals = $db->query('SELECT `general_no`, `name`, `last_yearmonth` FROM ng_old_generals WHERE server_id=%s AND general_no IN %li', $serverID, $nation['generals']);
if(count($generals) != count($nation['generals']) && $serverID == UniqueConst::$serverID){
$liveGenerals = $nation['generals'];
foreach($generals as $general){
if(in_array($general['general_no'], $nation['generals'])){
unset($nation['generals'][$general['general_no']]);
}
}
$liveGenerals = $db->query('SELECT `no`as`general_no`, `name` FROM general WHERE no IN %li', $liveGenerals);
$nation['generalsFull'] = array_merge($liveGenerals, $generals);
}
else{
$nation['generalsFull'] = $generals;
}
}
else{
$nation['generalsFull'] = [];
}
if(key_exists('aux', $nation) && !is_array($nation['aux'])){
$nation += Json::decode($nation['aux']);
}
echo $templates->render('oldNation', $nation);
}
}
?>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=closeButton()?></td></tr>
<tr><td><?=banner()?></td></tr>
</table>
</body>
</html>
+101 -66
View File
@@ -3,45 +3,61 @@ namespace sammo;
include "lib.php";
include "func.php";
$type = Util::getReq('type', 'int', 9);
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("장수일람", 2);
$query = "select conlimit from game limit 1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$admin = MYDB_fetch_array($result);
$query = "select con,turntime from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$me = MYDB_fetch_array($result);
$con = checkLimit($me['con'], $admin['conlimit']);
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
$con = checkLimit($me['con']);
if ($con >= 2) {
printLimitMsg($me['turntime']);
exit();
}
if(!isset($type) || $type == 0) {
if ($type <= 0 || $type > 15) {
$type = 9;
}
$ownerNameList = [];
if($gameStor->isunited){
foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){
$ownerNameList[$ownerID] = $ownerName;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
<title>장수일람</title>
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
<link rel='stylesheet' href='css/common.css' type='text/css'>
<script type="text/javascript" src="../e_lib/jquery-3.2.1.min.js"></script>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<title><?=UniqueConst::$serverName?>: 장수일람</title>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('../d_shared/common_path.js')?>
<?=WebUtil::printJS('js/common.js')?>
</head>
<body>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td> <br><?=closeButton()?></td></tr>
<tr><td><form name=form1 method=post>정렬순서 :
<select id='viewType' name='type' size=1>
@@ -68,104 +84,124 @@ if(!isset($type) || $type == 0) {
$nationname = [];
$nationlevel = [];
$nationname[0] = "-";
foreach(getAllNationStaticInfo() as $nation){
foreach (getAllNationStaticInfo() as $nation) {
$nationname[$nation['nation']] = $nation['name'];
$nationlevel[$nation['nation']] = $nation['level'];
}
switch($type) {
case 1: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by nation"; break;
case 2: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by leader desc"; break;
case 3: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by power desc"; break;
case 4: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by intel desc"; break;
case 5: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by experience desc"; break;
case 6: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by dedication desc"; break;
case 7: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by level desc"; break;
case 8: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by killturn"; break;
case 9: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by connect desc"; break;
case 10: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by experience desc"; break;
case 11: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by personal"; break;
case 12: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by special desc"; break;
case 13: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by special2 desc"; break;
case 14: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by age desc"; break;
case 15: $query = "select picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by npc desc"; break;
}
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($genresult);
[$orderKey, $orderDesc] = [
1=>['nation', false],
2=>['leader', true],
3=>['power', true],
4=>['intel', true],
5=>['experience', true],
6=>['dedication', true],
7=>['level', true],
8=>['killturn', false],
9=>['connect', true],
10=>['experience', true],
11=>['personal', true],
12=>['special', true],
13=>['special2', true],
14=>['age', true],
15=>['npc', true],
][$type];
$generalList = $db->query('SELECT owner,no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by %b %l', $orderKey, $orderDesc?'desc':'');
echo"
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr>
<td width=64 align=center id=bg1> </td>
<td width=100 align=center id=bg1> </td>
<td width=50 align=center id=bg1>연령</td>
<td width=50 align=center id=bg1>성격</td>
<td width=90 align=center id=bg1>특기</td>
<td width=50 align=center id=bg1> </td>
<td width=100 align=center id=bg1> </td>
<td width=60 align=center id=bg1> </td>
<td width=60 align=center id=bg1> </td>
<td width=80 align=center id=bg1> </td>
<td width=140 align=center id=bg1> </td>
<td width=45 align=center id=bg1>연령</td>
<td width=45 align=center id=bg1>성격</td>
<td width=80 align=center id=bg1>특기</td>
<td width=45 align=center id=bg1> </td>
<td width=140 align=center id=bg1> </td>
<td width=55 align=center id=bg1> </td>
<td width=55 align=center id=bg1> </td>
<td width=75 align=center id=bg1> </td>
<td width=45 align=center id=bg1>통솔</td>
<td width=45 align=center id=bg1>무력</td>
<td width=45 align=center id=bg1>지력</td>
<td width=45 align=center id=bg1>삭턴</td>
<td width=84 align=center id=bg1>벌점</td>
<td width=70 align=center id=bg1>벌점</td>
</tr>";
for($j=0; $j < $gencount; $j++) {
$general = MYDB_fetch_array($genresult);
foreach($generalList as $general){
$nation = $nationname[$general['nation']];
if($general['level'] == 12) {
if ($general['level'] == 12) {
$lbonus = $nationlevel[$general['nation']] * 2;
} elseif($general['level'] >= 5) {
} elseif ($general['level'] >= 5) {
$lbonus = $nationlevel[$general['nation']];
} else {
$lbonus = 0;
}
if($lbonus > 0) {
$lbonus = "<font color=cyan>+{$lbonus}</font>";
if ($lbonus > 0) {
$lbonusText = "<font color=cyan>+{$lbonus}</font>";
} else {
$lbonus = "";
$lbonusText = "";
}
if($general['injury'] > 0) {
if ($general['injury'] > 0) {
$leader = intdiv($general['leader'] * (100 - $general['injury']), 100);
$power = intdiv($general['power'] * (100 - $general['injury']), 100);
$intel = intdiv($general['intel'] * (100 - $general['injury']), 100);
$leader = "<font color=red>{$leader}</font>{$lbonus}";
$leader = "<font color=red>{$leader}</font>{$lbonusText}";
$power = "<font color=red>{$power}</font>";
$intel = "<font color=red>{$intel}</font>";
} else {
$leader = "{$general['leader']}{$lbonus}";
$leader = "{$general['leader']}{$lbonusText}";
$power = "{$general['power']}";
$intel = "{$general['intel']}";
}
if($general['npc'] >= 2) { $name = "<font color=cyan>{$general['name']}</font>"; }
elseif($general['npc'] == 1) { $name = "<font color=skyblue>{$general['name']}</font>"; }
else { $name = "{$general['name']}"; }
if ($general['npc'] >= 2) {
$name = "<font color=cyan>{$general['name']}</font>";
} elseif ($general['npc'] == 1) {
$name = "<font color=skyblue>{$general['name']}</font>";
} else {
$name = "{$general['name']}";
}
if(key_exists($general['owner'], $ownerNameList)){
$name = $name.'<br><small>('.$ownerNameList[$general['owner']].')</small>';
}
$general['connect'] = Util::round($general['connect'] / 10) * 10;
$imageTemp = GetImageURL($general['imgsvr']);
echo "
<tr>
<td align=center><img src={$imageTemp}/{$general['picture']}></img></td>
<tr data-general-id='{$general['no']}'
data-general-wounded='{$general['injury']}'
data-general-leadership='{$general['leader']}'
data-general-leadership-bonus='{$lbonus}'
data-general-power='{$general['power']}'
data-general-intel='{$general['intel']}'
data-is-npc='".($general['npc']>=2?'true':'false')."'
>
<td align=center><img class='generalIcon' width='64' height='64' src='{$imageTemp}/{$general['picture']}'></img></td>
<td align=center>$name</td>
<td align=center>{$general['age']}</td>
<td align=center>".getGenChar($general['personal'])."</td>
<td align=center>".getGenSpecial($general['special'])." / ".getGenSpecial($general['special2'])."</td>
<td align=center>".displayCharInfo($general['personal'])."</td>
<td align=center>".displaySpecialInfo($general['special'])." / ".displaySpecialInfo($general['special2'])."</td>
<td align=center>Lv ".getExpLevel($general['experience'])."</td>
<td align=center>{$nation}</td>
<td align=center>".getHonor($general['experience'])."</td>
<td align=center>".getDed($general['dedication'])."</td>
<td align=center>"; echo getLevel($general['level']); echo "</td>
<td align=center>";
echo getLevel($general['level']);
echo "</td>
<td align=center>$leader</td>
<td align=center>$power</td>
<td align=center>$intel</td>
<td align=center>{$general['killturn']}</td>
<td align=center>{$general['connect']}"; echo "<br>".getConnect($general['connect'])."</td>
<td align=center>{$general['connect']}";
echo "<br>【".getConnect($general['connect'])."】</td>
</tr>";
}
echo "
@@ -174,11 +210,10 @@ echo "
?>
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 bordercolordark=gray bordercolorlight=black style=font-size:13px;word-break:break-all; id=bg0>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=closeButton()?></td></tr>
<tr><td><?=banner()?></td></tr>
</table>
<?php PrintElapsedTime(); ?>
<script type="text/javascript">
$(document).ready(function() {
$("#viewType").val("<?=$type?>").attr("selected", "selected");

Some files were not shown because too many files have changed in this diff Show More