Compare commits

...
671 Commits
Author SHA1 Message Date
Hide_D 0561cc3320 토너먼트값, 전투, 계략값을 분리 2020-03-29 05:03:49 +09:00
Hide_D 6f47e92050 버그 수정 2020-03-28 19:56:11 +09:00
Hide_D 9a67ac7509 __dir__ -> __DIR__ 2020-03-28 19:48:09 +09:00
Hide_D d922993eaf VAL2를 VAL_max로 변경 2020-03-28 19:43:40 +09:00
Hide_D 9fa2225283 Array type arg js 처리 2020-03-25 02:56:45 +09:00
Hide_D 35eadad96b 금액 단위를 GameConst로 이동, 원조 추가
arg 목록으로 amountList 추가
2020-03-25 02:54:33 +09:00
Hide_D 081416475e dev에서 쉽게 확인가능한 코드 이전 2020-03-23 02:11:00 +09:00
Hide_D 12492c842c MyISAM to Aria 2020-03-23 00:24:17 +09:00
Hide_D 68e01c1e73 dev 코드와 일치 2020-03-22 23:30:11 +09:00
Hide_D bdcc79ce34 dev와 composer 버전 일치 2020-03-22 23:22:50 +09:00
Hide_D 869ad39ddc 의병모집 버그 수정 2020-03-22 04:20:21 +09:00
Hide_D 30e1e35090 의병모집 구현 2020-03-22 04:16:42 +09:00
Hide_D 6c185ffd09 전략 DetailTitle/ isReservable 완화 2020-03-22 03:17:05 +09:00
Hide_D a9435f8f32 사령턴 커맨드 버그 수정 2020-03-22 02:47:44 +09:00
Hide_D 9ea8d3ec97 피장파장 추가 2020-03-22 02:34:04 +09:00
Hide_D d918234bb8 버그 수정, 허보 구현 2020-03-21 20:17:39 +09:00
Hide_D afbbbaa855 백성동원, 버그 수정 2020-03-21 19:13:13 +09:00
Hide_D a844ef31a2 오타 수정 2020-03-21 17:36:53 +09:00
Hide_D b469ce0504 수몰 구현, createGeneralObjFromDB 최적화 2020-03-21 17:36:36 +09:00
Hide_D ed2bc8c390 등용수락에서 destNationID 빠진것 추가 2020-03-13 01:45:42 +09:00
Hide_D cb246e859e 등용 수락 변경, Aux 처리 추가
nations->aux.joinedNations
dummyGeneral에 exp,ded 추가
scheme에서 nations 제거
2020-03-13 01:44:18 +09:00
Hide_D 3d6b99c004 필사즉생 디버그 수정 2020-03-12 22:02:50 +09:00
Hide_D 842942c0fe 필사즉생 구현 2020-03-12 21:57:57 +09:00
Hide_D 71c4a84833 불가침 메시지를 좀더 명확히 2020-03-12 15:59:36 +09:00
Hide_D d1bc434ced 불가침 외교 커맨드 부활. 버그 수정 2020-03-12 15:58:14 +09:00
Hide_D 59f7448aa7 Constraint 변경 내용 버그 수정 2020-03-11 22:17:26 +09:00
Hide_D 4408692565 Contraint Reason 추가 2020-03-11 21:49:41 +09:00
Hide_D 2e8607b811 지도 선택 살짝 수정 2020-03-11 21:38:49 +09:00
Hide_D 2f2890e582 선전포고에 지도 추가 2020-03-11 18:10:41 +09:00
Hide_D e2b39be3ff 선전포고 구현 2020-03-11 17:08:55 +09:00
Hide_D 7ada07a99a 버그 수정
랜덤임관, 모반시도
2020-03-08 22:55:10 +09:00
Hide_D 6b16573f6b 커맨드 brief 수정, 내무부 버그 수정 2020-03-08 20:01:49 +09:00
Hide_D 1de49fe998 증여 버그 수정, 출병을 현 코드에 맞게 수정 2020-03-08 19:30:49 +09:00
Hide_D 7109e66ad8 사령부 밀기 당기기 추가, 기존 코드 삭제 2020-03-08 13:26:56 +09:00
Hide_D d21c2f67ba 버그 수정, 커맨드 사이즈 자동 반영 2020-03-08 13:18:54 +09:00
Hide_D 0d39add09c 아이템 구매 버그 수정, 아이템 호칭문제 수정 2020-03-08 12:03:23 +09:00
Hide_D 5e1f7ea571 버그 수정 2020-03-08 09:57:32 +09:00
Hide_D 35c71bd21b arg 경고 회피, 사령부 버그 수정, 턴반복 추가 2020-03-07 23:12:59 +09:00
Hide_D e6a39f246d 발령,몰수,포상 활성화, 사령턴 턴 입력 활성화 2020-03-07 19:52:33 +09:00
Hide_D 65cd8af9e1 버그 수정, 사령부 UI 복구 2020-03-07 18:04:23 +09:00
Hide_D e916f2fc40 버그 수정.. 2020-03-06 20:01:11 +09:00
Hide_D 13da80ee85 버그 수정 2020-03-05 23:53:59 +09:00
Hide_D 4f4045363b 징병 폼 완료 2020-03-05 21:53:37 +09:00
Hide_D 9600e18c92 징병 구현중 2019-11-27 13:54:19 +09:00
Hide_D d5aefccadc 버그 수정2 2019-10-10 02:42:49 +09:00
Hide_D 9e64b268cf 버그 수정 2019-10-10 02:39:25 +09:00
Hide_D 0893bf6473 func_time_event 재작성, 수입관련 코드 수정 2019-10-10 02:36:42 +09:00
Hide_D 21f8b814e0 버그 수정. getStatValue 성능 향상 2019-10-09 15:57:18 +09:00
Hide_D 10fd22ba81 코드 일부 수정 2019-10-09 14:43:26 +09:00
Hide_D a3fef6c62f round 문제 수정 2019-10-09 12:36:06 +09:00
Hide_D d750167a00 버그 수정 2019-10-09 12:12:23 +09:00
Hide_D 241bf62fdc isConsumableNow 버그 수정 2019-10-09 11:38:28 +09:00
Hide_D bc5574615d 아이템 관련 버그 수정 2019-10-09 11:34:56 +09:00
Hide_D 48cac053fd 버그 수정 2019-10-09 03:19:50 +09:00
Hide_D 25837f6393 버그 수정 2019-10-08 02:29:07 +09:00
Hide_D b281362c98 구 코드 삭제 2019-10-07 02:06:02 +09:00
Hide_D e5050bb6c8 장수 커맨드 설명 추가 2019-10-07 00:38:52 +09:00
Hide_D 2d0c3ef881 소비 금액 반올림 2019-10-07 00:17:17 +09:00
Hide_D ee029aac10 커맨드 상세 입력 페이지 초기 구현 2019-10-07 00:09:13 +09:00
Hide_D da205c09f9 기본 커맨드 입력 가능하도록 구현 2019-10-06 22:39:13 +09:00
Hide_D 07317b86a2 오타 수정 2019-10-06 19:26:41 +09:00
Hide_D 79e2543266 NPC 수뇌 임명 버그 수정 2019-10-06 19:26:08 +09:00
Hide_D 303cbcd188 디버깅용 변경 2019-10-06 19:06:49 +09:00
Hide_D a47905541c 턴 표기 '드디어' 추가 2019-10-06 19:01:46 +09:00
Hide_D 4e988db50f 버그 수정 2019-10-06 16:14:41 +09:00
Hide_D 9dc3d83a77 세력 일람 쿼리 최적화 2019-10-06 16:05:20 +09:00
Hide_D 934c1b0cfe 버그 수정... 2019-10-06 14:49:41 +09:00
Hide_D 70181d95c7 전투 버그 수정 중 2019-10-06 02:49:54 +09:00
Hide_D 8a210103c0 장수 정보 버그 수정 2019-10-06 02:02:31 +09:00
Hide_D df96381759 기존 파일 제거 2019-10-06 01:46:38 +09:00
Hide_D 2006845ff7 턴 버그 수정, 아이템 관련 구 코드 수정 2019-10-06 01:45:50 +09:00
Hide_D 44f0e78086 turntime 관련 조정중 2019-10-05 10:52:31 +09:00
Hide_D 824956a34d 버그 수정 2019-10-05 03:11:44 +09:00
Hide_D 1e7e01b6b0 gen123 => officer432 2019-10-05 02:45:20 +09:00
Hide_D cd25aaaca6 버그 수정 2019-10-05 01:19:58 +09:00
Hide_D d481047eb4 iAction,name,info, buildiActionCache, mode, myInfo 2019-10-05 01:17:43 +09:00
Hide_D 1699ac6e08 일부 버그 수정 old 파일 삭제 2019-10-04 23:03:19 +09:00
Hide_D 79b7188578 weap -> weapon 2019-10-04 18:15:12 +09:00
Hide_D 843f469914 leader->leadership, power->strength 2019-10-04 18:07:42 +09:00
Hide_D 71254e86f4 버그 수정 2019-10-04 16:33:00 +09:00
Hide_D 07328847f4 아이템 속성이 동적으로 변경되어 static 제거 2019-10-04 14:30:45 +09:00
Hide_D 9181cbfee5 lbonus를TriggerGeneralLevel, calcLeadershipBonus로통합 2019-10-04 13:02:16 +09:00
Hide_D 4aef22aac8 stat 관련 데이터 수정 2019-10-04 12:50:48 +09:00
Hide_D 512266abf4 season merge 2019-10-04 11:44:03 +09:00
Hide_D ef64f180a2 season 반영 안된것 마저 추가 2019-10-04 11:39:08 +09:00
Hide_D 9e45800367 94f3906949...06f86c6c27 반영, 시즌 값, 부대정보, 왕조일람 2019-07-20 15:48:30 +09:00
Hide_D f027f7f225 훈련, 사기템 효과 두배 2019-07-20 15:32:01 +09:00
Hide_D 6f7ac86e7f c0a30a2640...ff00990520 까지 반영 2019-07-20 15:29:47 +09:00
Hide_D 93d298ef75 장수 생성 시 본닉 항상 추가. 사망시 본닉 출력 2019-07-20 15:22:51 +09:00
Hide_D 121a892c9a 버그 수정 2019-06-17 03:13:05 +09:00
Hide_D 9222e2bbdd 장비매매버그 수정 2019-06-17 03:11:33 +09:00
Hide_D fe78d82ace 장비매매버그 수정 2019-06-17 03:10:41 +09:00
Hide_D 77e98d9942 커맨드 선택 form 구현 중 2019-06-17 03:08:05 +09:00
Hide_D 2b1efae238 아이템 관련 속성 일부 변경, 유니크 획득 코드를 수정 2019-06-17 02:47:00 +09:00
Hide_D d70740b38c 이동 초기 구현 2019-06-16 21:41:31 +09:00
Hide_D 3ebb30795c 버그 수정, 턴 입력 form 준비 2019-06-16 21:07:08 +09:00
Hide_D 5d42730e9a js, css 출력을 위한 코드 추가 2019-06-16 17:07:43 +09:00
Hide_D 923777899e 도시 목록 임시 구현 2019-06-16 03:47:58 +09:00
Hide_D 05b9187a3b 스1 시나리오 업데이트 2019-06-14 23:56:06 +09:00
Hide_D 1198baba67 버그 수정 2019-06-13 02:43:25 +09:00
Hide_D d4b7cdc97c 아이템 int->string 반영 2019-06-10 02:20:48 +09:00
Hide_D bb7e93ac2d 쌀 거래만 가능하므로 아이템 거래는 삭제 2019-06-09 22:56:51 +09:00
Hide_D 59c0c6cfb8 아이템 코드를 String으로 바꾸었으므로 연동 대상 또한 변경 2019-06-09 22:50:39 +09:00
Hide_D 8699a43a22 버그 수정 2019-06-08 04:56:32 +09:00
Hide_D 5529651f91 TriggerCaller에 약간의 유연성 추가 2019-06-08 03:04:31 +09:00
Hide_D a6f225ae9d 구 코드 수정 2019-06-08 03:03:11 +09:00
Hide_D fceda31c11 전특 구현 완료 2019-06-08 02:56:15 +09:00
Hide_D e5a5281e10 BaseWarUnitTrigger, TriggerCaller 구조 변경, 클래스 반영 2019-06-06 22:32:35 +09:00
Hide_D ede1d89569 회피시도 추가, spl_object_hash를 spl_object_id로 변경 2019-06-06 03:34:47 +09:00
Hide_D 44b9ba96c3 전투 이벤트 갱신 2019-06-05 01:36:57 +09:00
Hide_D 7fd8bfbe4e 전투 스킬 세팅 중 2019-05-31 02:28:08 +09:00
Hide_D 17654633dc 서적 등록 2019-05-15 03:04:34 +09:00
Hide_D 8fd0a54018 명마, 무기 타입 변경 2019-05-15 03:00:00 +09:00
Hide_D efe8a476da 명마 등록 2019-05-15 02:29:21 +09:00
Hide_D ac0f6c6b6c 아이템에 consumable 개념 추가, GameConstBase에 아이템 준비 2019-05-13 03:17:48 +09:00
Hide_D 8c163515db 아이템 전량 구현, 말, 무기, 책 준비 2019-05-13 02:44:01 +09:00
Hide_D 7ce1e64ee8 WarUnitTrigger 개편, 병종 Trigger 개념 추가, 저지, 성벽부상무효 2019-05-13 00:49:44 +09:00
Hide_D b6e667a291 저격 다시 세팅, 아이템 namespace 버그 수정, 전투치료(의술) 구현 2019-05-12 21:03:21 +09:00
Hide_D 5c7522fd1f 가오픈 merge 2019-05-10 01:29:01 +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 a3925de127 턴 시간 동작 안내 2019-05-05 20:14:53 +09:00
Hide_D f20e4bd572 동작 시간 베이스로 변경 2019-05-05 20:13:48 +09:00
Hide_D 816c2ac1c4 devel merge 2019-05-05 17:58:27 +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 00a6e9798f 수극을 통한 저격 예시 2019-04-29 02:04:45 +09:00
Hide_D 17a59cbdd5 병종이 행동에 전투에 event로 개입 가능하도록 수정 중 2019-04-29 01:01:47 +09:00
Hide_D d4c9a0a47a processWar 입출력 부근을 General Object로 변경 2019-04-29 00:13:25 +09:00
Hide_D 6423c22cf8 부대 번호를 부대장 ID로 변경 2019-04-28 20:50:25 +09:00
Hide_D e21fbaff83 WarUnit의 일부 요소를 General과 ActionSpecialWar 등으로 분리 2019-04-28 05:43:59 +09:00
Hide_D 99e6a2676b 버그 수정, 구조 변경 2019-04-28 03:49:03 +09:00
Hide_D ab47f40ee1 버그 수정 2019-04-28 02:54:01 +09:00
Hide_D a7f000e51e 버그 수정 2019-04-28 02:17:20 +09:00
Hide_D 0d9eabcaa0 버그 수정 2019-04-28 01:54:44 +09:00
Hide_D b1c63d7f5e 일부 수정. 버그 수정. 2019-04-28 00:18:36 +09:00
Hide_D 820c72820d 버그 수정 2019-04-24 02:47:50 +09:00
Hide_D 300065504b 버그 수정 2019-04-24 02:36:50 +09:00
Hide_D 8aa846b349 버그 수정 2019-04-24 01:17:21 +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 dd81dcc9c6 버그 수정 2019-04-21 22:29:08 +09:00
Hide_D a31c949734 db schema에 not null. 2019-04-21 22:17:23 +09:00
Hide_D 3536d5c413 err_log 강화 2019-04-21 22:15:41 +09:00
Hide_D 0e50216cee 버그 수정 2019-04-21 21:15:53 +09:00
Hide_D 16fed754a9 버그 수정 2019-04-21 16:57:05 +09:00
Hide_D c7748934b8 버그 수정 2019-04-21 16:27:57 +09:00
Hide_D d46b3154cc 버그 수정 2019-04-21 16:06:27 +09:00
Hide_D f8bcfba90e 버그 수정 2019-04-21 15:41:02 +09:00
Hide_D 45a4ca5298 부대장 숫자를 '능동적'으로 재 계산 2019-04-21 15:32:36 +09:00
Hide_D 88e3a9852b 버그 수정 2019-04-21 12:52:57 +09:00
Hide_D cf1f023379 버그 수정 2019-04-21 12:11:01 +09:00
Hide_D b4b6f5a1f7 버그 수정 2019-04-21 11:43:23 +09:00
Hide_D a21eef6e84 버그 수정 2019-04-21 04:53:14 +09:00
Hide_D 3beca8bba5 TimeUtil 버그 수정 2019-04-21 03:31:23 +09:00
Hide_D b5d66dba8a 버그 수정 2019-04-21 03:05:53 +09:00
Hide_D 24d01a2156 버그 수정 2019-04-21 03:04:08 +09:00
Hide_D 45d848cbb9 버그 수정 2019-04-21 02:55:32 +09:00
Hide_D e2f649dd35 버그 수정 2019-04-21 02:53:27 +09:00
Hide_D 183bffbc0e devel 반영 2019-04-21 02:42:43 +09:00
Hide_D a874415859 count를 써야할 자리에 MYDB_num_rows를 쓰는 코드 수정, 일부 정리 2019-04-21 02:34:22 +09:00
Hide_D 93b33ba383 천통시 최소 명전 등록 가능 연도를 GameConst로 2019-04-21 02:30:12 +09:00
Hide_D 26420719f3 $connect 쓰는 부분 일부 제거 2019-04-21 01:54:22 +09:00
Hide_D dc6a35d656 에러 반환 타입 수정 2019-04-21 01:47:01 +09:00
Hide_D 51da0bd7b7 버그 수정 2019-04-21 01:38:17 +09:00
Hide_D 1afb2c6883 오타 수정 2019-04-20 02:54:24 +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 bc59521cc8 Merge commit 'f6eae2274f6d56403c0644829042ce4d72b80ec9' into ng_turn 2019-04-07 23:45:17 +09:00
Hide_D 815822ef40 v0.10.1까지 merge 마저 반영 2019-04-07 23:36:09 +09:00
Hide_D 9e6d33cc1a v0.10.1까지 merge 2019-04-07 23:35:54 +09:00
Hide_D 44df85f2bd [881bf08aee]v.0.10.0 커밋까지 반영 2019-04-07 23:23:46 +09:00
Hide_D 2c15c7087e devel 코드 merge 2019-04-07 22:58:44 +09:00
Hide_D 6b281628ed [f8bb7aaf30]ng_diplomacy 적용 2019-04-07 22:52:50 +09:00
Hide_D 9f74db0aff Merge commit 'b6f76562e2c6999af16502d802bd523a8484e167' into ng_turn 2019-04-07 22:44:43 +09:00
Hide_D 83ea5c7fa3 중첩된 내용 merge 2019-04-07 22:42:39 +09:00
Hide_D bf6fe3482b 이전 외교 메시지를 불러 올 수 있음 2019-04-07 22:31:08 +09:00
Hide_D f4d6803720 외교권자에게는 메시지를 보낼 수 없음 2019-04-07 22:30:00 +09:00
Hide_D 23c2a16286 1차 버그 수정 2019-04-07 22:29:46 +09:00
Hide_D afc301fad2 DB 스키마 변경 2019-04-07 22:29:29 +09:00
Hide_D 1c0a50e48f 중간반영 2019-04-07 22:28:57 +09:00
Hide_D 02e119d0da 외교부 틀 작성 2019-04-07 22:27:49 +09:00
Hide_D 06fcc383ce 국메 처리 방식을 변경. 국가간 메시지는 외교권자만 가능 2019-04-07 22:27:14 +09:00
Hide_D 408b1f76e4 외교메시지 수신 기준 변경중 2019-04-07 22:26:50 +09:00
Hide_D 3a879a37e2 [5f0258022a]기존 회의실, 기밀실 코드 삭제 2019-04-07 22:20:25 +09:00
Hide_D 9e1bb50d78 외교서신 응답 2019-04-07 22:17:46 +09:00
Hide_D 25dcf426b1 파일 명을 namespace를 고려하여 수정 2019-04-07 22:17:33 +09:00
Hide_D 7b7baaea62 외교 서신 추가 기능 2019-04-07 22:17:13 +09:00
Hide_D 36d83804d0 게시물 코드 2019-04-07 22:16:43 +09:00
Hide_D 7c46d2e27f 게시판 글, 댓글 작성 초안 2019-04-07 22:16:19 +09:00
Hide_D d4acad33ea [b422cac734]권한 세팅 2019-04-07 22:15:53 +09:00
Hide_D 91cc1159bc 왕 무장 관직 순서 변경 2019-04-07 22:08:19 +09:00
Hide_D 21b7068c90 무관 최종 관직을 실제 삼국지 관직 순서에 맞게 변경 2019-04-07 22:05:33 +09:00
Hide_D 682d2bf922 [8d6c4ed713]시중->종사 2019-04-07 21:34:36 +09:00
Hide_D 3ff6788405 [1ddce7ac2e]게시물 구조 설정 2019-04-07 21:33:09 +09:00
Hide_D e59a8606ab tui-editor와 새 게시판 준비 2019-04-07 21:31:28 +09:00
Hide_D 157285ddb6 permission, penalty 대응 준비 2019-04-07 21:31:03 +09:00
Hide_D f49c3e0ff7 [18d11b2c6a]장수 schema 수정 2019-04-07 21:30:24 +09:00
Hide_D 345877b9fd [00bbf4eae2]버튼 이동 코드 정리 2019-04-07 21:28:45 +09:00
Hide_D 37e4105585 [3cf9d39cf2]DB 스키마 정리, diplomacy 테이블 정리, 코드 정리 2019-04-07 21:27:08 +09:00
Hide_D 4a05b59b4b 병합 충돌 오타 수정 2019-04-07 21:12:20 +09:00
Hide_D 57322d75d7 [8ee2def02a]국법 기능 제거. 외교부를 위한 자리 추가 2019-04-07 21:11:46 +09:00
Hide_D 4ccc2c1f71 DB 스키마 준비 2019-04-07 21:08:38 +09:00
Hide_D 652b32619d [51e9de0e79]DB 스키마 준비 2019-04-07 21:08:28 +09:00
Hide_D 57b3611965 걸그룹 전콘 문제 일부 수정 2019-04-07 21:06:47 +09:00
Hide_D afbf9e619a 걸그룹 대전 0.5 반영 2019-04-07 21:06:23 +09:00
Hide_D 060b1da388 [ca6e97be65]지급율 -> 지급률 2019-04-07 21:04:08 +09:00
Hide_D 38024b6be4 외교 메시지는 삭제 할 수 없도록 2019-04-07 21:03:01 +09:00
Hide_D 6aede6e48b 국메 삭제 가능 2019-04-07 21:02:45 +09:00
Hide_D b27adfbe27 디버그 코드 제거 2019-04-07 21:02:18 +09:00
Hide_D b28e3b2a00 메시지 삭제 기능 추가 2019-04-07 21:01:38 +09:00
Hide_D ffe4374519 메시지 타이밍 정책 일부 수정 2019-04-07 21:01:17 +09:00
Hide_D 793df087ae 페이지당 갱신 시간을 10초에서 5초로 변경 2019-04-07 20:58:19 +09:00
Hide_D 85eadd5856 메시지를 띄울 때 flex 적용 2019-04-07 20:57:48 +09:00
Hide_D 359efe0036 로그아웃 되었을 경우 무한히 호출하는 버그 수정 2019-04-07 20:56:56 +09:00
Hide_D 3186691b7b 이전 메시지 가져오기 기능 추가 2019-04-07 20:56:19 +09:00
Hide_D 044c795f38 부상으로 인한 전투 우선순위 감소를 완화 2019-04-07 20:55:31 +09:00
Hide_D f7128449ca 등갑, 맹수 너프 2019-04-07 20:54:27 +09:00
Hide_D 3d0c5165b7 자객병의 기동을 8로 상향 2019-04-07 20:54:00 +09:00
Hide_D fc6cda86df selector에 검은색 추가 2019-04-07 20:53:35 +09:00
Hide_D 59877e181e 도시 목록에 select2를 시험 적용 2019-04-07 20:52:41 +09:00
Hide_D 506b1a17d1 암행부의 장수수에서 '부대장'이 제외됩니다. 2019-04-07 20:42:15 +09:00
Hide_D 214c2ba0ad 임관턴이 어찌저찌 어거지로 동작하던 버그 수정 2019-04-07 20:40:30 +09:00
Hide_D 387312bc87 랜덤임관 인자 버그 수정 2019-04-07 20:36:49 +09:00
Hide_D 3d3da04e58 [4103831401,+]부대장은 기술연구, 전투시 기술,전략턴에 영향을 주지 않도록 변경 2019-04-07 20:33:47 +09:00
Hide_D 7ec0cbb43c 통합, 합병시 부대장까지 같이 포함되는 문제 수정 2019-04-07 19:58:38 +09:00
Hide_D 1cd834579c select2 설치 2019-04-07 19:56:52 +09:00
Hide_D a11005c14b [eaa9e6d840]불필요한 가로바 길이 줄임 2019-04-07 19:55:54 +09:00
Hide_D ea1480e286 [e5da1905c6]추방시 명성 안깎이는 버그 수정 2019-04-07 19:53:30 +09:00
Hide_D f1dd328c38 [864b94f62a]반계 상향 2019-04-07 19:51:19 +09:00
Hide_D 44295de206 [cac19cad4d]수비 우선 순위를 부상여부, 수뇌여부, 훈사 여부를 반영하도록 변경 2019-04-07 19:48:51 +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 42f08f5027 첫 화면 띄우기 성공 2018-11-26 04:05:34 +09:00
Hide_D 7a1c8882e6 general_turn, nation_turn 대응 2018-11-26 01:32:42 +09:00
Hide_D 2c193e7e48 버그 1차 수정 2018-11-26 00:03:11 +09:00
Hide_D 9714c1c9f6 git ignore 변경, 소소한 버그 수정 2018-11-25 21:01:39 +09:00
Hide_D c8f72b5f14 j_set_general_command, j_set_nation_command 구현 2018-11-25 20:35:29 +09:00
Hide_D be0439f771 이전 디렉토리를 이동하도록 변경 2018-11-25 00:58:17 +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 e2b0b03c96 button에 type="button" 지정 2018-11-24 22:38:09 +09:00
Hide_D b9fb9f1b34 사령턴 반환값 수정 2018-11-24 22:29:50 +09:00
Hide_D 52fd932fd8 사령부 UI 간결화, (구현은 아직), 일부 변수명 변경 2018-11-24 22:22:27 +09:00
Hide_D b0cc200df7 data-reqArg 추가 2018-11-23 03:13:03 +09:00
Hide_D 05b32db37d 커맨드 출력 준비 2018-11-23 03:12:08 +09:00
Hide_D 41f7192532 기본 커맨드 지정 2018-11-23 02:23:19 +09:00
Hide_D fa420303dc $reqArg 지정 2018-11-23 02:07:44 +09:00
Hide_D b7fd539755 불가침 제의 구현 2018-11-22 02:48:42 +09:00
Hide_D cfb8b03446 diplomacy_ticket 테이블 추가 2018-11-22 02:26:07 +09:00
Hide_D 712601041d 구 불가침 코드 삭제 2018-11-22 02:15:24 +09:00
Hide_D 36093eccaf 선전포고 추가, DisallowDiplomacyStatus 구현 변경 2018-11-22 02:13:23 +09:00
Hide_D 58eb6d4210 sabotagelimit을 strategic_cmd_limit로 변경 2018-11-18 03:57:22 +09:00
Hide_D 2166429cbf 발령 구현 2018-11-18 03:57:09 +09:00
Hide_D 236ab10b11 단련 버그 수정 2018-11-17 21:17:39 +09:00
Hide_D 99142fdde3 몰수, 포상 구현, 증여 헌납 버그 수정 2018-11-17 15:40:34 +09:00
Hide_D ca6755d8b5 func_process_chief 백업 2018-11-17 02:17:09 +09:00
Hide_D 92ad333863 선동, 탈취, 파괴 구현 2018-11-17 01:57:21 +09:00
Hide_D 4c48272b4c 화계 구현 2018-11-17 01:44:54 +09:00
Hide_D ab5bd1db69 item의 static 변경 2018-11-17 01:33:17 +09:00
Hide_D 5d1cd10f5d sabotage 백업 2018-11-17 00:24:36 +09:00
Hide_D ef784be082 func_process_personnel.php 삭제 2018-11-17 00:24:12 +09:00
Hide_D 855c41a0e9 방랑 구현 2018-11-17 00:22:53 +09:00
Hide_D 6ef9667f72 Constraint 수정 2018-11-16 23:35:43 +09:00
Hide_D 068d384e7a 모반 구현 2018-11-15 03:42:55 +09:00
Hide_D c3699a8595 ConstraintHelper 추가 2018-11-15 03:33:44 +09:00
Hide_D 2cb7513355 국방 표기 방식 변경 2018-11-15 01:23:32 +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 c44ae2f00c extractMissingPostToGlobals(); 제거 2018-11-13 02:10:17 +09:00
Hide_D a00b62ffcc 글 넘치는 것 해결 2018-11-11 23:52:54 +09:00
Hide_D 6a9e7aa89d msg overflow 적용 2018-11-11 23:32:19 +09:00
Hide_D 6206b38a78 해산 수정 2018-11-11 23:30:39 +09:00
Hide_D 1767bfa70d nextRuler 재구현 2018-11-11 21:29:06 +09:00
Hide_D b1d6611923 해산 구현 2018-11-11 20:46:12 +09:00
Hide_D a6a713f40e 랜임 코드 수정 2018-11-11 20:28:05 +09:00
Hide_D e76ad04207 선형 랜덤에서 값이 음수가 들어가는 경우 보정 2018-11-11 19:53:49 +09:00
Hide_D a231adbfdd 랜덤 임관시 제곱근에서 선형으로 변경 2018-11-11 19:44:14 +09:00
Hide_D 88f97ecb4e defulatGold, defaultRice 개념 지정 2018-11-11 19:38:43 +09:00
Hide_D 68a471b859 선양 추가 2018-11-09 00:14:26 +09:00
Hide_D 9393324e1f 인증 토큰 '초기화' 문구를 '연장'으로 변경 2018-11-08 16:01:01 +09:00
Hide_D 944931f7d1 거병 추가 2018-11-06 02:50:25 +09:00
Hide_D 5a56be8a75 하야 메시지 출력 수정 2018-11-06 01:34:40 +09:00
Hide_D fe7aebae05 건국 구현 2018-10-31 02:39:40 +09:00
Hide_D b6c3b0cdc3 방랑군이 아니어도 건국 가능한 버그 수정 2018-10-29 03:15:45 +09:00
Hide_D fd734fadbc 건국 조건 설정 2018-10-29 03:14:03 +09:00
Hide_D a3dc250698 글자 너비를 반각 18자까지 확장 2018-10-29 02:39:23 +09:00
Hide_D 3f2d36284f 랜임 코드 마저 반영 2018-10-28 03:35:32 +09:00
Hide_D 60d5184a7b 랜덤 임관 깃수용 코드 이식 2018-10-28 03:32:03 +09:00
Hide_D da612bdc7b 오타 수정 2018-10-28 03:15:07 +09:00
Hide_D 628a085ba8 ReqEnvValue 추가 2018-10-28 03:14:03 +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 f56f201bad 건국 코드 준비 2018-10-22 02:30:44 +09:00
Hide_D 45e579f0ef 하야 추가 2018-10-21 22:35:02 +09:00
Hide_D 39db811361 인재탐색 추가. gencount, npc_id 관련 수정 2018-10-21 21:53:34 +09:00
Hide_D ff87555eba 임관 추가. 유니크 복권 추첨을 General 클래스 용으로 변경 2018-10-21 15:20:27 +09:00
Hide_D 6c5c2d40bc argTest를 로직 순서에 맞게 변경 2018-10-21 14:28:29 +09:00
Hide_D c08459e370 등용 추가 2018-10-21 03:02:22 +09:00
Hide_D 42418394ed 군량매매 구현 2018-10-21 02:36:05 +09:00
Hide_D 64fd0e2f28 아이템 구현. 장비매매 추가 2018-10-21 01:55:09 +09:00
Hide_D 2de061203b 징병 모병 추가, iAction 구조 일부 변경 2018-10-20 23:31:32 +09:00
Hide_D cee0d3f03e 일부 DB 값 관련 정보 변경. update 쿼리, insert into 쿼리 일부 변경 2018-10-20 17:41:48 +09:00
Hide_D aa19ae129b 전투태세, 첩보 추가, 기존 코드 일부 정리 2018-10-20 16:45:57 +09:00
Hide_D aecbf8ccb3 견문 추가 2018-10-20 03:24:34 +09:00
Hide_D 7e5c19f507 증여 추가 2018-10-20 02:11:23 +09:00
Hide_D b178ecd494 요양 헌납 추가 2018-10-19 02:47:07 +09:00
Hide_D 05d5039fab 출병 커맨드 구현 2018-10-17 17:42:47 +09:00
Hide_D 1004e5a8bd generalSource 폐기 2018-10-17 16:01:38 +09:00
Hide_D dbcfe6fc6e createGeneralObjFromDB 추가 2018-10-17 15:34:32 +09:00
Hide_D 56698aefe6 집합, 귀환 추가 2018-10-17 02:38:51 +09:00
Hide_D cbd2e136ed 강행, 단련 추가 2018-10-17 02:01:00 +09:00
Hide_D 9846d7f8e4 이동 구현. BaseCommand에 GeneralSource 연결. 2018-10-16 02:29:33 +09:00
Hide_D d16c86a4d7 소집해제 추가. 커맨드 버그 수정 2018-10-16 01:01:50 +09:00
Hide_D 292e642d16 func_process에서 훈련, 사기 삭제 2018-10-16 00:55:44 +09:00
Hide_D 90736b52be 물자조달 턴 추가 기타 커맨드 버그 수정 2018-10-16 00:53:19 +09:00
Hide_D 928e8a200b 사기진작 추가 2018-10-15 02:09:19 +09:00
Hide_D 2ee06eab2d 훈련 턴 추가 2018-10-15 02:05:39 +09:00
Hide_D 01913983ea 턴에 canDisplay() 추가 2018-10-15 01:28:03 +09:00
Hide_D 0aa2f2c44d NPC능동 추가 2018-10-15 01:23:44 +09:00
Hide_D f66d655782 func_npc.php 삭제 2018-10-15 00:51:50 +09:00
Hide_D 4094a08198 NPC 사령턴 일부 수정 2018-10-15 00:14:44 +09:00
Hide_D 05389da412 NPC 새로짜던 사령턴 파기 2018-10-15 00:11:26 +09:00
Hide_D e38258b04b 장수 이전턴 코딩 2018-10-15 00:11:01 +09:00
Hide_D 0cd0e2f730 NPC 수뇌턴 정비 2018-10-13 01:44:20 +09:00
Hide_D d2c7483db1 NPC 일반장 턴 완성 2018-10-12 00:57:21 +09:00
Hide_D d388c52ccd 전투 턴 관련 등록 2018-10-11 23:22:44 +09:00
Hide_D 4a2954d3a4 NPC 행동 재 작성중 2018-10-11 01:07:37 +09:00
Hide_D 804b9a1d71 접경 방식 수정. 상업 투자의 접경식도 같이 수정 2018-10-11 00:33:06 +09:00
Hide_D 1067efbbee 접경 코드를 1(곧 접경), 2(공백지[출병가능]), 3(적 도시[출병가능]) 으로 구분 2018-10-11 00:28:11 +09:00
Hide_D d41ecbeed6 NPC 군주 거병시 이동 로직 수정 2018-10-10 22:24:13 +09:00
Hide_D f93148b7d7 NPC 군주턴 까지 완료 2018-10-08 03:36:43 +09:00
Hide_D 348877c7cd NPC 부대장 수치 버그 수정 2018-10-07 21:46:28 +09:00
Hide_D fb7c2573bf 부대장 수치 버그 수정 2018-10-07 21:43:21 +09:00
Hide_D e4fcc77b0a 능력치 변경시 색상 변경 2018-10-07 19:23:26 +09:00
Hide_D 5c9b79729f AI에서 '내정풀' 인식 2018-10-06 04:18:08 +09:00
Hide_D 00d4541537 NPC 행동 코드 재 구현중 2018-10-06 04:08:53 +09:00
Hide_D 1660e563ab buildGeneralCommandClass류 구현 2018-10-06 04:08:43 +09:00
Hide_D b94081c45b npc 처리용 새 클래스 준비중 2018-10-06 01:52:14 +09:00
Hide_D f7b59f0140 커맨드 관련 구 코드 이전 2018-10-06 00:13:13 +09:00
Hide_D 22aecbe4ba turn0 사용하는 부분 리팩토링 2018-10-06 00:12:16 +09:00
Hide_D be98db9023 Merge branch 'devel' into ng_turn 2018-10-05 21:50:54 +09:00
Hide_D 828e095e64 getGeneralTurnBrief 연동 코드 수정 2018-10-05 21:49:53 +09:00
Hide_D 8e1e21b960 general에 getID 추가 2018-10-05 21:04:43 +09:00
Hide_D 303d8815e3 중간 작업(getGeneralTurnBrief, turn0, npc_turn 작업 남음) 2018-10-04 02:37:54 +09:00
Hide_D ba574dda62 유틸리티 함수 추가 2018-10-04 02:07:31 +09:00
Hide_D bf630b5f7d 턴 요약 위해 getBrief 추가 2018-10-04 01:57:56 +09:00
Hide_D 9b4bf148cc general.turn0 기반 코드 일부를 general_turn 기반으로 변경 2018-10-04 01:18:23 +09:00
Hide_D f5212b4aa1 processCommand 함수 삭제 2018-10-04 01:12:38 +09:00
Hide_D eea4cdf379 스키마 수정 2018-10-04 01:10:31 +09:00
Hide_D e909b48fea 유틸리티 함수들 일부 수정. 랜덤값 뽑기 함수 하나 더 추가 2018-10-04 01:08:56 +09:00
Hide_D 258aabbdde sql 선언 수정 2018-10-04 00:20:30 +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 29984d4b09 지난 턴 관리 부분 이상한 부분 수정 2018-10-03 22:41:49 +09:00
Hide_D e1a266e5d8 '지난 턴'을 관리하는 기능 추가 2018-10-03 22:38:05 +09:00
Hide_D a33a7317cc 턴 커맨드에 getPreReqTurn, getPostReqTurn 추가 2018-10-03 17:45:47 +09:00
Hide_D 1d0bcd857e LastTurn 관리용 객체 추가 2018-10-03 17:27:04 +09:00
Hide_D 040da2429f lock 버그 수정 2018-10-03 16:21:00 +09:00
Hide_D 978a395421 lock 버그 수정 2018-10-03 16:20:47 +09:00
Hide_D 63e5625d62 사령턴 수행용 '지난턴' 추가 2018-10-02 03:06:17 +09:00
Hide_D 38bbae13b9 버그 수정. 커맨드. 사령턴 실행. 2018-10-02 02:27:42 +09:00
Hide_D e975a8106f 코드 정리. 버그 수정. 접경 디버프 반영 2018-10-02 02:27:29 +09:00
Hide_D 6a49887ad7 preprocessCommand 정리 2018-10-02 00:15:15 +09:00
Hide_D 5565ec2ddb 우선 순위를 오름차순으로 변경 2018-10-02 00:11:27 +09:00
Hide_D 20b1f8eff8 전투 우선순위에 '유니크 아이템'의 효과가 과도하게 측정되는 버그 수정 2018-10-01 23:10:47 +09:00
Hide_D 34fd000df9 전투 우선순위에 '유니크 아이템'의 효과가 과도하게 측정되는 버그 수정 2018-10-01 23:10:27 +09:00
Hide_D 1132177e2d 의술의 도시 치료 커맨드 추가 2018-10-01 03:35:07 +09:00
Hide_D 5be39c04ef ?> 제거 2018-10-01 03:03:30 +09:00
Hide_D 0ee4593608 Trigger 추가 수정 2018-10-01 03:02:03 +09:00
Hide_D f301344587 trigger 구성을 올바르게 수정 2018-10-01 02:52:27 +09:00
Hide_D d2c5c856ab Trigger, Action 역할 재정의 2018-10-01 02:02:30 +09:00
Hide_D 5f8e4ae10c 기본 커맨드를 새 turn 테이블 기준으로 변경 2018-09-30 03:17:55 +09:00
Hide_D 4ff30b1a9d command로 새 table용 장수, 수뇌 턴 당기기,밀기 추가 2018-09-30 03:07:24 +09:00
Hide_D a0b215dab6 Command 구조 일부 수정 2018-09-30 03:04:20 +09:00
Hide_D 144e82d7e2 updateTurntime을 TurnExecutionHelper로 이동 2018-09-30 02:05:55 +09:00
Hide_D 79252ba3b0 사망, 환생을 General 클래스로 이동 2018-09-30 02:05:37 +09:00
Hide_D c5286093f9 사망 메시지를 별도로 분리 2018-09-30 02:05:12 +09:00
Hide_D 5ad194bd45 코드 병합 2018-09-29 22:37:30 +09:00
Hide_D 501113da44 gitignore 조정 2018-09-29 22:29:02 +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 b79045eddb 전투 특기 클래스 추가, 2018-09-17 03:31:36 +09:00
Hide_D 6eb67b1a3c 일단 push 2018-09-17 02:57:44 +09:00
Hide_D 777ec39bd9 턴 수행 constraint를 상세하게 분리, argTest 추가. 턴 커맨드 실행용 클래스, ajax 파일 준비 2018-09-16 22:16:08 +09:00
Hide_D 9dcafaaa38 reset_token에서 불필요한 명령 제거 2018-09-16 17:58:56 +09:00
Hide_D 097e2fb653 턴 표기 방식 대폭 변경 2018-09-16 04:54:17 +09:00
Hide_D e7aa97634b 동결, 지연인 경우에 한해 커맨드 창의 월 표시가 다르게 되던 문제 수정.
addTurn, subTurn, cutTurn 등에서 밀리초 표기 개선
2018-09-16 04:52:13 +09:00
Hide_D 447b9f265f Auction에서 구형 Ymd his 변경 2018-09-16 04:41:00 +09:00
Hide_D 029a6f03b7 서버의 분턴 변경시 '정확히' 현재 턴에 비례해서 변경되도록 변경 2018-09-16 04:38:06 +09:00
Hide_D ae4a349d79 랜덤 턴에서 '소수점'을 다룸 2018-09-16 04:18:22 +09:00
Hide_D 35728c7911 TimeUtil 리팩토링 2018-09-16 04:14:22 +09:00
Hide_D 469330f270 TimeUtil을 소수점 시간을 고려할 수 있도록 수정 2018-09-16 03:54:24 +09:00
Hide_D 03f9c56928 정장, 선정 커맨드 문제로 명성,계급 반영 위치 이동 2018-09-15 03:49:08 +09:00
Hide_D ed2a2a8975 기술연구의 calcBaseScore는 상업 투자 것을 가져오기로 2018-09-15 03:44:10 +09:00
Hide_D b5380f183c 내정 커맨드 버그 수정, 정착장려, 주민선정 추가, RemainCityTrust 추가, succ -> success 2018-09-15 03:42:09 +09:00
Hide_D f5bcaba352 phan 타겟 버전 변경 2018-09-15 02:52:40 +09:00
Hide_D 5a70b23db9 필요없어진 gennum2 삭제. gennum 재연산 2018-09-15 02:51:33 +09:00
Hide_D fc3487e545 사용되지 않는 chemi 제거 2018-09-15 02:43:24 +09:00
Hide_D a4863dc8d7 totaltech, tech를 float tech로 일원화, NPC가 기술레벨 10을 넘으면 기연 안하는 버그 수정 2018-09-15 02:37:11 +09:00
Hide_D af12a08e25 기술연구 추가 2018-09-15 01:53:17 +09:00
Hide_D 312dc294b3 내정턴 성공 확률 계산을 실패->성공->일반에서 성공->실패->일반으로 변경 2018-09-15 01:33:44 +09:00
Hide_D d958dd5ee4 func_process 이전 코드 분리 2018-09-15 00:59:51 +09:00
Hide_D 1ddc49b17b 기본 내정턴을 클래스 기반으로 가능하도록 수정 2018-09-15 00:57:58 +09:00
Hide_D 322541b16f 농상치성수 내정 코드 구현 2018-09-15 00:40:24 +09:00
Hide_D 00cb10f029 BaseCommand에 '대상이 지정되지 않아' 대략적으로 가능성을 추측해야하는 경우 추가 2018-09-15 00:39:03 +09:00
Hide_D ed24a721ed General의 통합 interface 간소화 2018-09-15 00:38:28 +09:00
Hide_D 9fc10e0f65 농지 개간, 상업 투자를 외부 커맨드로 연결 2018-09-14 02:35:27 +09:00
Hide_D ab212e0565 모 징병 코드의 uniqueItem을 uniqueItemEx로 변경 2018-09-14 02:28:05 +09:00
Hide_D eac0049577 농지개간, 상업투자 구현, General 클래스로 checkStatChange 이동, uniqueItemEx 추가(및 재구현) 2018-09-14 02:26:41 +09:00
Hide_D 9d1d51d0d7 119 코드에서 $connect 제거 2018-09-14 00:58:55 +09:00
Hide_D 4fd3c4ada6 상업투자 구현 중 2018-09-13 03:02:51 +09:00
Hide_D dd73d8fc69 General에 iActionTrigger 활성화 2018-09-13 02:38:27 +09:00
Hide_D b89d37c8c5 getPersonalityClass 추가 2018-09-13 02:21:42 +09:00
Hide_D bc4983c771 전략 관련 보정 함수 명 변경 2018-09-13 02:10:37 +09:00
Hide_D e6c186b31b 은둔 보정 수정 2018-09-13 01:52:36 +09:00
Hide_D b106fa55d3 상업투자 구현 중 2018-09-13 01:43:44 +09:00
Hide_D 981e42c5a9 trigger 타입에서 $tunType을 한글로 변경. 성격 추가. 계략 성공 확률을 onCalcDomestic으로 통합. 2018-09-13 01:43:32 +09:00
Hide_D 89bf457878 Merge branch 'devel' into ng_turn 2018-09-12 00:54:48 +09:00
Hide_D 91a36eb9a0 머지 2018-09-11 21:40:07 +09:00
Hide_D a3d0ceb6a5 내정턴 준비 2018-09-05 01:28:58 +09:00
Hide_D 7679c11b5b 외교 커맨드 수식 오류 수정 2018-09-04 01:30:06 +09:00
Hide_D e7ae2ab441 내특을 int에서 string으로 변경 2018-09-03 02:07:41 +09:00
Hide_D dd5feb0e2c 내 정보에서 수비, 토너먼트가 즉시 반영되지 않는 버그 수정 2018-09-03 01:08:42 +09:00
Hide_D b95d05c134 내특을 iActionTrigger로 구현 2018-09-03 01:03:51 +09:00
Hide_D 87bdd0016e onCalcDomesticTurnScore 구조 변경 2018-09-02 23:11:07 +09:00
Hide_D b9befa4e63 국가 성향 증가/감소 기본 구현 완료 2018-09-02 23:02:12 +09:00
Hide_D d9ed00ddee 치안, 수성, 민심까지 반영 완료 2018-09-02 22:50:25 +09:00
Hide_D 4c2b484c2b 계략 확률, 전략턴, 기술 반영 2018-09-02 22:19:38 +09:00
Hide_D ff31e41fec 금수입, 살수입 반영 2018-09-02 22:04:08 +09:00
Hide_D 34204f6183 onCalcDomesticTurnScore 변경 TriggerNationType에서 숫자 id 제거 2018-09-02 21:57:44 +09:00
Hide_D 6fc8763895 국가 성향 converter를 TriggerNationType으로 통합 2018-09-02 21:37:23 +09:00
Hide_D 1a0914196f getNationTypeList 변경 2018-09-02 20:54:32 +09:00
Hide_D 9dd1adacd2 nation type을 char로 변경하고 해당하는 iActionTrigger 추가 2018-09-02 19:52:04 +09:00
Hide_D 93c5268fbc ActionTrigger 초안 추가 2018-09-02 19:51:48 +09:00
Hide_D 98edc89fa0 LazyVarUpdater를 활용하는 General 클래스 추가 2018-09-02 19:51:17 +09:00
Hide_D 3aad412102 명성에 따른 보정치 함수 추가 2018-09-02 19:50:50 +09:00
Hide_D a2ee9524fb updateVar 정리 2018-09-02 19:50:31 +09:00
Hide_D 78955a1540 범용성을 목적으로 LazyVarUpdater를 분리 2018-09-02 17:25:04 +09:00
Hide_D f412b7e734 구버전 전투 코드 삭제 2018-09-02 17:18:05 +09:00
Hide_D b13f3004e2 잘못된 rate->trust 변경 복구 2018-09-02 16:05:44 +09:00
Hide_D a093b0f8e8 도시의 민심을 int에서 float으로 변경하고 명칭을 rate에서 trust로 변경 2018-09-02 16:03:04 +09:00
Hide_D 34a84c6548 contraint 일괄 체크 함수 추가 2018-09-02 14:18:59 +09:00
Hide_D 6c52c1177b 부대 탈퇴시 확인 창이 정상적으로 뜨지 않는 버그 수정 2018-09-02 14:18:44 +09:00
Hide_D f9bc312f91 도시명 표기시 ==== 기호 제거 2018-09-02 14:15:24 +09:00
Hide_D 7283153f44 contraint 추가 2018-09-02 13:46:57 +09:00
Hide_D df6b2bd0e8 초기 constraint 지정 2018-09-02 13:17:26 +09:00
1081 changed files with 68051 additions and 39321 deletions
+2
View File
@@ -16,6 +16,7 @@ d_log/*.zip
sess_*
*/logs/*.txt
*/logs/*/*.txt
*/logs/preserved
err.txt
che/.htaccess
kwe/.htaccess
@@ -28,6 +29,7 @@ d_shared
d_pic/*.jpg
d_pic/*.gif
d_pic/*.png
d_pic/uploaded_image
d_setting/*.php
*/d_setting/*.php
+1 -4
View File
@@ -11,7 +11,7 @@ return [
// If this is set to null,
// then Phan assumes the PHP version which is closest to the minor version
// of the php executable used to execute phan.
"target_php_version" => '7.0',
"target_php_version" => '7.2',
'backward_compatibility_checks ' => false,
'ignore_undeclared_variables_in_global_scope' => false,
'minimum_severity'=>\Phan\Issue::SEVERITY_LOW,
@@ -29,10 +29,7 @@ return [
'hwe/func_legacy.php',
'hwe/func_map.php',
'hwe/func_message.php',
'hwe/func_npc.php',
'hwe/func_process_chief.php',
'hwe/func_process_personnel.php',
'hwe/func_process_sabotage.php',
'hwe/func_process.php',
'hwe/func_string.php',
'hwe/func_template.php',
+5 -1
View File
@@ -24,5 +24,9 @@
"/nya":true,
"/pya":true,
"/twe":true,
},
},
"cSpell.words": [
"josa",
"sammo"
],
}
+1 -1
View File
@@ -1,6 +1,6 @@
The MIT License
Copyright (c) 2018 Hide_D, 62che
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
+18 -10
View File
@@ -7,18 +7,26 @@
* Apache2
* <code>mpm_event</code> 권장
* PHP 7.2 이상
* PHP 7.3 이상
* <code>php-fpm</code> 권장
* php에서 curl을 실행가능해야 합니다.
* MySQL 5.6 이상, 또는 MariaDB 10.0 이상
* php에서 curl, pdo-sqlite을 실행가능해야 합니다. (기본값: 지원)
* mysqlnd가 지원되어야합니다. (기본값: 지원)
* mysqli
* gd
* MariaDB 10.2.1 이상
* 현재 MySQL은 지원하지 않습니다.
* <code>git</code>
* <code>curl</code>
Linux는 Ubuntu 16.04, Windows는 Windows 10에서 XAMPP를 사용한 환경에서 테스트되었습니다.
Linux는 Ubuntu 16.04, 18.04, Windows는 Windows 10에서 XAMPP를 사용한 환경에서 테스트되었습니다.
Docker를 이용한 설치는 계획중입니다.
## 설치
## Docker를 이용한 설치
https://storage.hided.net/gogs/devsam/docker 를 참고해 주세요.
## 수동 설치
본 게임은 <code>git</code>을 이용한 업그레이드 시스템을 구현하였으므로, <code>git</code>이 필요합니다.
또한 웹 서비스 데몬을 운영중인 사용자(일반적으로 <code>www-data</code>, <code>apache</code>)에게 디렉토리 권한이 주어져야합니다.
@@ -28,11 +36,11 @@ Docker를 이용한 설치는 계획중입니다.
웹 데몬 user가 <code>www-data</code>인 경우 다음과 같이 입력하여 최신 배포버전과 이미지 파일을 얻을 수 있습니다.
```
sudo -u www-data git clone ssh://git@storage.hided.net:2525/devsam/core.git
git clone ssh://git@storage.hided.net:2525/devsam/image.git
sudo -u www-data git clone https://storage.hided.net/gogs/devsam/core.git
sudo -u www-data git clone https://storage.hided.net/gogs/devsam/image.git
```
> 이미지는 git hook을 이용한 업데이트 기능을 제공하지만 아직 범용성 있는 설계가 되어있진 않습니다.
> 이미지는 hook/git_hook.php을 통해 동기화되며, 서버 설치 과정에 이미지 갱신 키를 지정하는 것으로 '훼' 서버 업데이트 시 동기화됩니다. 이미지 서버가 게임 서버와 별개여도 동작하나, php와 git을 지원해야합니다.
### 설치
@@ -45,9 +53,9 @@ Database 수는 로그인 관리 서버 1개, 내부 서버 7개로, 총 8개의
## 카카오로그인 연동
현재 카카오로그인 API KEY를 입력하는 작업이 설치과정에 추가되어있지 않습니다.
서버 설치 시 카카오 로그인 연동을 위한 API KEY를 입력습니다.
<code>f_install/templates/KakaoKey.orig.php</code> 를 <code>d_setting/KakaoKey.php</code>로 복사한 후 API 키를 입력하여야 합니다.
만약 설치 이후 API KEY를 변경하고자 하는 경우 <code>d_setting/KakaoKey.php</code>에서 API키를 변경해야 합니다.
## 라이선스
+6 -1
View File
@@ -6,12 +6,17 @@
"GPL-2.0-or-later",
"proprietary"
],
"config": {
"platform": {
"php": "7.3"
}
},
"require": {
"brandonwamboldt/utilphp": "^1.1",
"sergeytsalkov/meekrodb": "^2.3",
"league/plates": "^3.3",
"guzzlehttp/guzzle": "^6.3",
"leafo/scssphp": "^0.7.5",
"scssphp/scssphp": "^1.0",
"monolog/monolog": "^1.23",
"firephp/firephp-core": "^0.4.0",
"vlucas/valitron": "^1.4",
Generated
+200 -123
View File
@@ -1,10 +1,10 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "3fceaf3c2925068c7e757ab12036e29e",
"content-hash": "b5b5695ed0b1b04fa672f99972d8caad",
"packages": [
{
"name": "brandonwamboldt/utilphp",
@@ -54,16 +54,16 @@
},
{
"name": "catfan/medoo",
"version": "v1.5.7",
"version": "v1.7.8",
"source": {
"type": "git",
"url": "https://github.com/catfan/Medoo.git",
"reference": "8d90cba0e8ff176028847527d0ea76fe41a06ecf"
"reference": "dd9d570584cfb1e09ec470608479b86e41d5b60d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/catfan/Medoo/zipball/8d90cba0e8ff176028847527d0ea76fe41a06ecf",
"reference": "8d90cba0e8ff176028847527d0ea76fe41a06ecf",
"url": "https://api.github.com/repos/catfan/Medoo/zipball/dd9d570584cfb1e09ec470608479b86e41d5b60d",
"reference": "dd9d570584cfb1e09ec470608479b86e41d5b60d",
"shasum": ""
},
"require": {
@@ -77,7 +77,7 @@
"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"
"ext-pdo_sqlsrv": "For MSSQL database on both Window/Liunx platform"
},
"type": "framework",
"autoload": {
@@ -95,10 +95,11 @@
"email": "angel@catfan.me"
}
],
"description": "The lightest PHP database framework to accelerate development",
"description": "The lightweight PHP database framework to accelerate development",
"homepage": "https://medoo.in",
"keywords": [
"database",
"database library",
"lightweight",
"mariadb",
"mssql",
@@ -109,27 +110,27 @@
"sql",
"sqlite"
],
"time": "2018-06-14T18:59:08+00:00"
"time": "2019-12-19T05:04:34+00:00"
},
{
"name": "ezyang/htmlpurifier",
"version": "v4.10.0",
"version": "v4.12.0",
"source": {
"type": "git",
"url": "https://github.com/ezyang/htmlpurifier.git",
"reference": "d85d39da4576a6934b72480be6978fb10c860021"
"reference": "a617e55bc62a87eec73bd456d146d134ad716f03"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d85d39da4576a6934b72480be6978fb10c860021",
"reference": "d85d39da4576a6934b72480be6978fb10c860021",
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/a617e55bc62a87eec73bd456d146d134ad716f03",
"reference": "a617e55bc62a87eec73bd456d146d134ad716f03",
"shasum": ""
},
"require": {
"php": ">=5.2"
},
"require-dev": {
"simpletest/simpletest": "^1.1"
"simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd"
},
"type": "library",
"autoload": {
@@ -142,7 +143,7 @@
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL"
"LGPL-2.1-or-later"
],
"authors": [
{
@@ -156,7 +157,7 @@
"keywords": [
"html"
],
"time": "2018-02-23T01:58:20+00:00"
"time": "2019-10-28T03:44:26+00:00"
},
{
"name": "firephp/firephp-core",
@@ -196,44 +197,46 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "6.3.3",
"version": "6.5.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
"reference": "43ece0e75098b7ecd8d13918293029e555a50f82"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82",
"reference": "43ece0e75098b7ecd8d13918293029e555a50f82",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.4",
"guzzlehttp/psr7": "^1.6.1",
"php": ">=5.5"
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
"psr/log": "^1.0"
"psr/log": "^1.1"
},
"suggest": {
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
"psr/log": "Required for using the Log middleware"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.3-dev"
"dev-master": "6.5-dev"
}
},
"autoload": {
"files": [
"src/functions_include.php"
],
"psr-4": {
"GuzzleHttp\\": "src/"
}
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -257,7 +260,7 @@
"rest",
"web service"
],
"time": "2018-04-22T15:46:56+00:00"
"time": "2019-12-23T11:57:10+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -312,32 +315,37 @@
},
{
"name": "guzzlehttp/psr7",
"version": "1.4.2",
"version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
"reference": "239400de7a173fe9901b9ac7c06497751f00727a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
"reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
"reference": "239400de7a173fe9901b9ac7c06497751f00727a",
"shasum": ""
},
"require": {
"php": ">=5.4.0",
"psr/http-message": "~1.0"
"psr/http-message": "~1.0",
"ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
},
"provide": {
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"phpunit/phpunit": "~4.0"
"ext-zlib": "*",
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
},
"suggest": {
"zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
"dev-master": "1.6-dev"
}
},
"autoload": {
@@ -367,65 +375,14 @@
"keywords": [
"http",
"message",
"psr-7",
"request",
"response",
"stream",
"uri",
"url"
],
"time": "2017-03-20T17:10:46+00:00"
},
{
"name": "leafo/scssphp",
"version": "v0.7.7",
"source": {
"type": "git",
"url": "https://github.com/leafo/scssphp.git",
"reference": "1d656f8c02a3a69404bba6b28ec4e06edddf0f49"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/leafo/scssphp/zipball/1d656f8c02a3a69404bba6b28ec4e06edddf0f49",
"reference": "1d656f8c02a3a69404bba6b28ec4e06edddf0f49",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "~4.6",
"squizlabs/php_codesniffer": "~2.5"
},
"bin": [
"bin/pscss"
],
"type": "library",
"autoload": {
"psr-4": {
"Leafo\\ScssPhp\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Leaf Corcoran",
"email": "leafot@gmail.com",
"homepage": "http://leafo.net"
}
],
"description": "scssphp is a compiler for SCSS written in PHP.",
"homepage": "http://leafo.github.io/scssphp/",
"keywords": [
"css",
"less",
"sass",
"scss",
"stylesheet"
],
"time": "2018-07-22T01:22:08+00:00"
"time": "2019-07-01T23:21:34+00:00"
},
{
"name": "league/plates",
@@ -484,16 +441,16 @@
},
{
"name": "monolog/monolog",
"version": "1.23.0",
"version": "1.25.3",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4"
"reference": "fa82921994db851a8becaf3787a9e73c5976b6f1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
"reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/fa82921994db851a8becaf3787a9e73c5976b6f1",
"reference": "fa82921994db851a8becaf3787a9e73c5976b6f1",
"shasum": ""
},
"require": {
@@ -558,7 +515,7 @@
"logging",
"psr-3"
],
"time": "2017-06-19T01:22:40+00:00"
"time": "2019-12-20T14:15:16+00:00"
},
{
"name": "pguardiario/phpuri",
@@ -720,16 +677,16 @@
},
{
"name": "psr/log",
"version": "1.0.2",
"version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
"shasum": ""
},
"require": {
@@ -738,7 +695,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
"dev-master": "1.1.x-dev"
}
},
"autoload": {
@@ -763,7 +720,108 @@
"psr",
"psr-3"
],
"time": "2016-10-10T12:19:37+00:00"
"time": "2019-11-01T11:05:21+00:00"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/ralouphie/getallheaders.git",
"reference": "120b605dfeb996808c31b6477290a714d356e822"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
"reference": "120b605dfeb996808c31b6477290a714d356e822",
"shasum": ""
},
"require": {
"php": ">=5.6"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^5 || ^6.5"
},
"type": "library",
"autoload": {
"files": [
"src/getallheaders.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ralph Khattar",
"email": "ralph.khattar@gmail.com"
}
],
"description": "A polyfill for getallheaders.",
"time": "2019-03-08T08:55:37+00:00"
},
{
"name": "scssphp/scssphp",
"version": "1.0.6",
"source": {
"type": "git",
"url": "https://github.com/scssphp/scssphp.git",
"reference": "5b3c9d704950d8f9637f5110c36c281ec47dc13c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/scssphp/scssphp/zipball/5b3c9d704950d8f9637f5110c36c281ec47dc13c",
"reference": "5b3c9d704950d8f9637f5110c36c281ec47dc13c",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-json": "*",
"php": ">=5.6.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3",
"squizlabs/php_codesniffer": "~2.5",
"twbs/bootstrap": "~4.3",
"zurb/foundation": "~6.5"
},
"bin": [
"bin/pscss"
],
"type": "library",
"autoload": {
"psr-4": {
"ScssPhp\\ScssPhp\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Anthon Pang",
"email": "apang@softwaredevelopment.ca",
"homepage": "https://github.com/robocoder"
},
{
"name": "Cédric Morin",
"email": "cedric@yterium.com",
"homepage": "https://github.com/Cerdic"
}
],
"description": "scssphp is a compiler for SCSS written in PHP.",
"homepage": "http://scssphp.github.io/scssphp/",
"keywords": [
"css",
"less",
"sass",
"scss",
"stylesheet"
],
"time": "2019-12-12T05:00:52+00:00"
},
{
"name": "sergeytsalkov/meekrodb",
@@ -810,29 +868,34 @@
},
{
"name": "symfony/lock",
"version": "v4.1.1",
"version": "v4.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/lock.git",
"reference": "d508b5dd92272cb74300396ecaadde969d0f7976"
"reference": "6c4f5b620871cfef5b004fc57f2ca74572ae03b3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/lock/zipball/d508b5dd92272cb74300396ecaadde969d0f7976",
"reference": "d508b5dd92272cb74300396ecaadde969d0f7976",
"url": "https://api.github.com/repos/symfony/lock/zipball/6c4f5b620871cfef5b004fc57f2ca74572ae03b3",
"reference": "6c4f5b620871cfef5b004fc57f2ca74572ae03b3",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"psr/log": "~1.0"
},
"conflict": {
"doctrine/dbal": "<2.5"
},
"require-dev": {
"doctrine/dbal": "~2.5",
"mongodb/mongodb": "~1.1",
"predis/predis": "~1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.1-dev"
"dev-master": "4.4-dev"
}
},
"autoload": {
@@ -848,13 +911,13 @@
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
},
{
"name": "Jérémy Derussé",
"email": "jeremy@derusse.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Lock Component",
@@ -867,20 +930,20 @@
"redlock",
"semaphore"
],
"time": "2018-06-21T11:15:46+00:00"
"time": "2020-01-04T13:00:46+00:00"
},
{
"name": "vlucas/valitron",
"version": "v1.4.3",
"version": "v1.4.7",
"source": {
"type": "git",
"url": "https://github.com/vlucas/valitron.git",
"reference": "3c5463315bfa23b17f8949b100a960d035234e43"
"reference": "a03072bed1679660200766d134507a30193eaf6d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vlucas/valitron/zipball/3c5463315bfa23b17f8949b100a960d035234e43",
"reference": "3c5463315bfa23b17f8949b100a960d035234e43",
"url": "https://api.github.com/repos/vlucas/valitron/zipball/a03072bed1679660200766d134507a30193eaf6d",
"reference": "a03072bed1679660200766d134507a30193eaf6d",
"shasum": ""
},
"require": {
@@ -916,28 +979,29 @@
"validation",
"validator"
],
"time": "2018-05-06T10:45:26+00:00"
"time": "2019-08-29T19:49:43+00:00"
},
{
"name": "xemlock/htmlpurifier-html5",
"version": "v0.1.7",
"version": "v0.1.11",
"source": {
"type": "git",
"url": "https://github.com/xemlock/htmlpurifier-html5.git",
"reference": "b4b35e51ec75e0207c23035f7d9a354bdcdac359"
"reference": "f0d563f9fd4a82a3d759043483f9a94c0d8c2255"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/xemlock/htmlpurifier-html5/zipball/b4b35e51ec75e0207c23035f7d9a354bdcdac359",
"reference": "b4b35e51ec75e0207c23035f7d9a354bdcdac359",
"url": "https://api.github.com/repos/xemlock/htmlpurifier-html5/zipball/f0d563f9fd4a82a3d759043483f9a94c0d8c2255",
"reference": "f0d563f9fd4a82a3d759043483f9a94c0d8c2255",
"shasum": ""
},
"require": {
"ezyang/htmlpurifier": "^4.7",
"ezyang/htmlpurifier": "^4.8",
"php": ">=5.2"
},
"require-dev": {
"phpunit/phpunit": "4.7.*|5.7.*"
"php-coveralls/php-coveralls": "^1.1|^2.1",
"phpunit/phpunit": ">=4.7 <8.0"
},
"type": "library",
"autoload": {
@@ -955,8 +1019,18 @@
"email": "xemlock@gmail.com"
}
],
"description": "HTML Purifier definitions for HTML5 elements",
"time": "2018-06-07T14:30:17+00:00"
"description": "HTML5 element definitions for HTML Purifier",
"keywords": [
"HTML5",
"Purifier",
"html",
"htmlpurifier",
"security",
"tidy",
"validator",
"xss"
],
"time": "2019-08-07T17:19:21+00:00"
}
],
"packages-dev": [],
@@ -966,5 +1040,8 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
"platform-dev": [],
"platform-overrides": {
"php": "7.3"
}
}
BIN
View File
Binary file not shown.
+15
View File
@@ -164,4 +164,19 @@ a.samButton.disabled {
.samCommandButton.disabled > .samButtonOuter > .samButtonInner::after{
content:'】'
}
.tooltip_copyable_info .tooltiptext{
display: inline;
color: rgba(0,0,0,0);
font-size: 0;
}
.tooltiptext {
display: none;
}
.hidden_but_copyable{
color: rgba(0,0,0,0);
font-size: 0;
}
+1
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
+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
@@ -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);
});
};
}
});
}));
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

+15 -3
View File
@@ -1,7 +1,7 @@
<?php
namespace sammo;
define('ROOT', realpath(__dir__.'/..'));
define('ROOT', realpath(__DIR__.'/..'));
setlocale(LC_ALL, 'ko_KR.UTF-8');
date_default_timezone_set('Asia/Seoul');
mb_internal_encoding("UTF-8");
@@ -88,19 +88,28 @@ function getExceptionTraceAsString($exception) {
return $rtn;
}
function logError(string $err, string $errstr, array $trace){
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,
'trace'=>Json::encode($trace)
'errpath'=>$errpath,
'trace'=>Json::encode($trace),
'webuser'=>$owner
]);
}
@@ -116,6 +125,7 @@ function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, in
logError(
getFriendlyErrorType($errno),
$errstr,
$errfile.':'.$errline,
getExceptionTraceAsString($e)
);
}
@@ -123,9 +133,11 @@ set_error_handler("\sammo\logErrorByCustomHandler");
function logExceptionByCustomHandler(\Throwable $e){
logError(
get_class($e),
$e->getMessage(),
$e->getFile().':'.$e->getLine(),
getExceptionTraceAsString($e)
);
+33 -1
View File
@@ -1,7 +1,7 @@
<?php
namespace sammo;
require(__dir__.'/../vendor/autoload.php');
require(__DIR__.'/../vendor/autoload.php');
?>
<!DOCTYPE html>
@@ -98,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">
+2 -2
View File
@@ -1,7 +1,7 @@
<?php
namespace sammo;
require(__dir__.'/../vendor/autoload.php');
require(__DIR__.'/../vendor/autoload.php');
session_start();
session_destroy();
@@ -46,7 +46,7 @@ if($memberCnt > 0){
$userSalt = bin2hex(random_bytes(8));
$finalPassword = Util::hashPassword($userSalt, $password);
$nowDate = TimeUtil::DatetimeNow();
$nowDate = TimeUtil::now();
$rootDB->insert('member',[
'oauth_type' => 'NONE',
+1 -1
View File
@@ -1,7 +1,7 @@
<?php
namespace sammo;
require(__dir__.'/../vendor/autoload.php');
require(__DIR__.'/../vendor/autoload.php');
if(!class_exists('\\sammo\\RootDB')){
Json::die([
+38 -11
View File
@@ -1,7 +1,7 @@
<?php
namespace sammo;
require(__dir__.'/../vendor/autoload.php');
require(__DIR__.'/../vendor/autoload.php');
$host = Util::getReq('db_host');
$port = Util::getReq('db_port', 'int');
@@ -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([
@@ -160,7 +165,7 @@ $rootDB->error_handler = function ($params) {
$mysqli_obj = $rootDB->get(); //로그인에 실패할 경우 자동으로 dbConnFail()이 실행됨.
if ($mysqli_obj->multi_query(file_get_contents(__dir__.'/sql/common_schema.sql'))) {
if ($mysqli_obj->multi_query(file_get_contents(__DIR__.'/sql/common_schema.sql'))) {
while (true) {
if (!$mysqli_obj->more_results()) {
break;
@@ -174,8 +179,8 @@ if ($mysqli_obj->multi_query(file_get_contents(__dir__.'/sql/common_schema.sql')
$rootDB->insert('system', array(
'REG' => 'N',
'LOGIN' => 'N',
'CRT_DATE' => TimeUtil::DatetimeNow(),
'MDF_DATE' => TimeUtil::DatetimeNow()
'CRT_DATE' => TimeUtil::now(),
'MDF_DATE' => TimeUtil::now()
));
$globalSalt = bin2hex(random_bytes(16));
@@ -186,18 +191,26 @@ $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',
__DIR__.'/templates/ServConfig.orig.php',
ROOT.'/d_setting/ServConfig.php',
[
'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,
@@ -206,7 +219,7 @@ if ($result !== true) {
}
$result = Util::generateFileUsingSimpleTemplate(
__dir__.'/templates/common_path.orig.js',
__DIR__.'/templates/common_path.orig.js',
ROOT.'/d_shared/common_path.js',
[
'serverBasePath'=>$servHost,
@@ -217,7 +230,7 @@ $result = Util::generateFileUsingSimpleTemplate(
);
$result = Util::generateFileUsingSimpleTemplate(
__dir__.'/templates/menu.orig.json',
__DIR__.'/templates/menu.orig.json',
ROOT.'/d_shared/menu.json',
[],
true
@@ -232,7 +245,7 @@ if ($result !== true) {
$result = Util::generateFileUsingSimpleTemplate(
__dir__.'/templates/common.orig.css',
__DIR__.'/templates/common.orig.css',
ROOT.'/d_shared/common.css',
[
'serverBasePath'=>$servHost,
@@ -251,7 +264,7 @@ if ($result !== true) {
$result = Util::generateFileUsingSimpleTemplate(
__dir__.'/templates/RootDB.orig.php',
__DIR__.'/templates/RootDB.orig.php',
ROOT.'/d_setting/RootDB.php',
[
'host'=>$host,
@@ -263,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,
@@ -272,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
]);
}
+3 -2
View File
@@ -14,7 +14,7 @@ CREATE TABLE `system` (
`MDF_DATE` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`NO`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
-- 회원 테이블
CREATE TABLE `member` (
@@ -32,6 +32,7 @@ CREATE TABLE `member` (
`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,
@@ -44,7 +45,7 @@ CREATE TABLE `member` (
UNIQUE INDEX `kauth_id` (`oauth_id`),
INDEX `delete_after` (`delete_after`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ENGINE=Aria DEFAULT CHARSET=utf8mb4;
-- 로그인 로그 테이블
CREATE TABLE `member_log` (
+3 -1
View File
@@ -3,7 +3,9 @@ CREATE TABLE IF NOT EXISTS `err_log` (
`date` TEXT NOT NULL,
`err` TEXT NOT NULL,
`errstr` TEXT NOT NULL,
`trace` 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
+9
View File
@@ -10,6 +10,8 @@ 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 $filepath='') : string
{
@@ -32,6 +34,13 @@ class ServConfig
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}";
}
/**
* 서버 주소 반환. 서버의 경로가 하부 디렉토리인 경우에 하부 디렉토리까지 포함
+67 -21
View File
@@ -88,6 +88,59 @@
background-size: 700px 500px;
}
/*미니체 지도*/
.map_theme_miniche_b.map_spring .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_spring.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_b.map_summer .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_summer.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_b.map_fall .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_fall.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_b.map_winter .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_winter.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_b .map_bgroad{
background: url('_tK_gameImagePath_/map/che/miniche_road.png') no-repeat;
background-size: 700px 500px;
}
/*미니체 지도*/
.map_theme_miniche_clean.map_spring .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_spring.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_clean.map_summer .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_summer.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_clean.map_fall .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_fall.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_clean.map_winter .map_bglayer1{
background: url('_tK_gameImagePath_/map/che/bg_winter.jpg') no-repeat;
background-size: 700px 500px;
}
.map_theme_miniche_clean .map_bgroad{
background: url('_tK_gameImagePath_/map/che/miniche_road.png') no-repeat;
background-size: 700px 500px;
}
/*루드라사움 지도*/
.map_theme_ludo_rathowm .map_bglayer1{
background: url('_tK_gameImagePath_/map/ludo_rathowm/back.jpg') no-repeat;
@@ -99,28 +152,21 @@
background-size: 700px 500px;
}
.map_theme_ludo_rathowm.map_detail.map_spring .map_title_text{
background:
url('_tK_gameImagePath_/spring.gif') no-repeat right;
}
.map_theme_ludo_rathowm.map_detail.map_summer .map_title_text{
background:
url('_tK_gameImagePath_/summer.gif') no-repeat right;
}
.map_theme_ludo_rathowm.map_detail.map_fall .map_title_text{
background:
url('_tK_gameImagePath_/fall.gif') no-repeat right;
}
.map_theme_ludo_rathowm.map_detail.map_winter .map_title_text{
background:
url('_tK_gameImagePath_/winter.gif') no-repeat right;
}
.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;
}
+2 -5
View File
@@ -28,13 +28,10 @@ if($session->userGrade < 4) {
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
[$turntime, $tnmt_time] = $gameStor->getValuesAsArray(['turntime','tnmt_time']);
$query = "select plock from plock";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$plock = MYDB_fetch_array($result);
$plock = $db->queryFirstField('SELECT plock FROM plock');
?>
<!DOCTYPE html>
<html>
@@ -51,7 +48,7 @@ $plock = MYDB_fetch_array($result);
시간조정 : <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>
: <input type=submit name=btn value='락걸기'><input type=submit name=btn value='락풀기'> 현재 : <?=$plock>0?"동결중":"가동중"?><br>
</form>
</body>
</html>
+35 -9
View File
@@ -24,35 +24,53 @@ $btn = Util::getReq('btn');
$minute = Util::getReq('minute', 'int');
$minute2 = Util::getReq('minute2', 'int');
extractMissingPostToGlobals();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
switch($btn) {
case "분당김":
$locked = false;
for($i = 0; $i < 10; $i++){
if(tryLock()){
$locked = true;
break;
}
usleep(500000);
}
$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->turntime = $turntime->format('Y-m-d H:i:s.u');
$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)
'turntime'=>$db->sqleval('DATE_SUB(turntime, INTERVAL %i MINUTE)', $minute)
], true);
$db->update('auction', [
'expire'=>$db->sqleval('DATE_ADD(expire, INTERVAL %i MINUTE)', $minute)
'expire'=>$db->sqleval('DATE_SUB(expire, INTERVAL %i MINUTE)', $minute)
], true);
if($locked){
unlock();
}
break;
case "분지연":
$locked = false;
for($i = 0; $i < 5; $i++){
if(tryLock()){
$locked = true;
break;
}
sleep(0.5);
}
$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->turntime = $turntime->format('Y-m-d H:i:s.u');
$gameStor->starttime = $starttime->format('Y-m-d H:i:s');
$gameStor->tnmt_time = $tnmt_time->format('Y-m-d H:i:s');
@@ -62,6 +80,9 @@ case "분지연":
$db->update('auction', [
'expire'=>$db->sqleval('DATE_ADD(expire, INTERVAL %i MINUTE)', $minute)
], true);
if($locked){
unlock();
}
break;
case "토너분당김":
$tnmt_time = new \DateTime($gameStor->tnmt_time);
@@ -80,11 +101,16 @@ case "쌀지급":
processRiceIncome();
break;
case "락걸기":
$db->update('plock', ['plock'=>1], true);
$db->update('plock', [
'plock'=>1,
'locktime'=>TimeUtil::now(true)
], true);
break;
case "락풀기":
$db->update('plock', ['plock'=>0], true);
$db->update('plock', [
'plock'=>0
], true);
break;
}
header('Location:_119.php');
header('Location:_119.php', true, 303);
-7
View File
@@ -28,7 +28,6 @@ if($session->userGrade < 5) {
}
$db = DB::db();
$connect=$db->get();
$admin = getAdmin();
?>
@@ -66,12 +65,6 @@ $admin = getAdmin();
<td width=110 align=right>최대 국가</td>
<td width=285><input type=text size=3 maxlength=2 style=color:white;background-color:black;text-align:right; name=maxnation value=<?=$admin['maxnation']?>><input type=submit name=btn value=변경3></td>
</tr>
<tr>
<td width=110 align=right></td>
<td width=285></td>
<td width=110 align=right>현재 수입률</td>
<td width=285><?=$admin['gold_rate']?>%</td>
</tr>
<tr>
<td width=110 align=right>시작 년도</td>
<td width=285><input type=text size=3 maxlength=3 style=color:white;background-color:black;text-align:right; name=startyear value='<?=$admin['startyear']?>'><input type=submit name=btn value=변경4></td>
+18 -36
View File
@@ -30,11 +30,8 @@ $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();
@@ -43,10 +40,6 @@ switch ($btn) {
$gameStor->msg = $msg;
break;
case "로그쓰기":
$lognum = $admin['historyindex'] + 1;
if ($lognum >= 29) {
$lognum = 0;
}
pushWorldHistory(["<R>★</><S>{$log}</>"]);
break;
case "변경1":
@@ -69,6 +62,7 @@ switch ($btn) {
case "30분턴":
case "60분턴":
case "120분턴":
$admin = $gameStor->getValues(['turntime', 'turnterm', 'year', 'startyear', 'month']);
switch ($btn) {
case "1분턴": $turnterm = 1; break;
case "2분턴": $turnterm = 2; break;
@@ -79,39 +73,27 @@ switch ($btn) {
case "60분턴": $turnterm = 60; break;
case "120분턴": $turnterm = 120; break;
}
$oldunit = $admin['turnterm'] * 60;
$unit = $turnterm * 60;
$unitDiff = $unit / $oldunit;
$servTurnTime = new \DateTimeImmutable($admin['turntime']);
foreach ($db->query('SELECT no,turntime FROM general') as $gen) {
$genTurnTime = new \DateTimeImmutable($gen['turntime']);
$timeDiff = TimeUtil::DateIntervalToSeconds($genTurnTime->diff($servTurnTime));
$timeDiff *= $unitDiff;
$newGenTurnTime = $servTurnTime->add(TimeUtil::secondsToDateInterval($timeDiff));
$db->update('general', [
'turntime'=>$newGenTurnTime->format('Y-m-d H:i:s.u')
], 'no=%i', $gen['no']);
}
$turn = ($admin['year'] - $admin['startyear']) * 12 + $admin['month'] - 1;
$starttime = date("Y-m-d H:i:s", strtotime($admin['turntime']) - $turn * $unit);
$starttime = cutTurn($starttime, $turnterm);
$starttime = $servTurnTime->sub(TimeUtil::secondsToDateInterval($turn * $unit))->format('Y-m-d H:i:s');
$starttime = cutTurn($starttime, $turnterm, false);
$gameStor->turnterm = $turnterm;
$gameStor->starttime = $starttime;
// 턴시간이 길어지는 경우 랜덤턴 배정
if ($turnterm < $admin['turnterm']) {
$query = "select no from general";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$count = MYDB_num_rows($result);
for ($i=0; $i < $count; $i++) {
$gen = MYDB_fetch_array($result);
$turntime = getRandTurn($turnterm);
$query = "update general set turntime='$turntime' where no='{$gen['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
}
// 턴시간이 너무 멀리 떨어진 선수 제대로 보정
} else {
$query = "select no,turntime from general";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$count = MYDB_num_rows($result);
for ($i=0; $i < $count; $i++) {
$gen = MYDB_fetch_array($result);
$num = intdiv((strtotime($gen['turntime']) - strtotime($admin['turntime'])), $unit);
if ($num > 0) {
$gen['turntime'] = date("Y-m-d H:i:s", strtotime($gen['turntime']) - $unit * $num);
$query = "update general set turntime='{$gen['turntime']}' where no='{$gen['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
}
}
}
pushWorldHistory(["<R>★</>턴시간이 <C>$btn</>으로 변경됩니다."]);
break;
}
+16 -4
View File
@@ -76,7 +76,19 @@ echo "
</td>
<td width=100 align=center>아이템 지급</td>
<td width=504>
<select name=weap size=1 style='color:white;background-color:black;font-size:13px'>";
<select name=weapon size=1 style='color:white;background-color:black;font-size:13px'>";
foreach(GameConst::$allItems as $itemCategories){
foreach($itemCategories as $item=>$cnt){
if($cnt == 0){
continue;
}
$itemObj = buildItemClass($item);
if($itemObj->isBuyable()){
continue;
}
}
}
for($i=0; $i < 27; $i++) {
echo "
<option value={$i}>{$i}</option>";
@@ -113,12 +125,12 @@ for($i=0; $i < 27; $i++) {
<td><input type=submit name=btn value='접속 허용'><input type=submit name=btn value='접속 제한'></td>
</tr>
<tr>
<td align=center>턴설정</td>
<td align=center> 시각 설정</td>
<td><input type=submit name=btn value='00턴'><input type=submit name=btn value='랜덤턴'></td>
</tr>
<tr>
<td align=center>NPC해제</td>
<td><input type=submit name=btn value='NPC해제'><input type=submit name=btn value='하야입력'><input type=submit name=btn value='방랑해산'><input type=submit name=btn value='NPC설정'></td>
<td align=center>명령 설정</td>
<td><input type=submit name=btn value='하야입력'><input type=submit name=btn value='방랑해산'></td>
</tr>
<tr>
<td align=center>메세지 전달</td>
+57 -52
View File
@@ -5,12 +5,10 @@ include "lib.php";
include "func.php";
$btn = Util::getReq('btn');
$weap = Util::getReq('weap', 'int');
$item = Util::getReq('item', 'string');
$genlist = Util::getReq('genlist', 'array_int');
$msg = Util::getReq('msg', 'string');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireLogin()->loginGame()->setReadOnly();
@@ -26,10 +24,15 @@ if(!$generalID){
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
$src = MessageTarget::buildQuick($session->generalID);
$genObjList = [];
$env = [];
if($genlist){
$genObjList = General::createGeneralObjListFromDB($genlist);
$env = $gameStor->cacheAll();
}
switch($btn) {
case "전체 접속허용":
$db->update('general', [
@@ -48,7 +51,7 @@ switch($btn) {
DB::db()->query('update general set block=0 where no IN %li', $genlist);
break;
case "1단계 블럭":
$date = date('Y-m-d H:i:s');
$date = TimeUtil::now();
$db->update('general', [
'block'=>1,
'killturn'=>24
@@ -60,7 +63,7 @@ switch($btn) {
], 'id IN %li', $uid);
break;
case "2단계 블럭":
$date = date('Y-m-d H:i:s');
$date = TimeUtil::now();
$db->update('general', [
'gold'=>0,
'rice'=>0,
@@ -74,7 +77,7 @@ switch($btn) {
], 'id IN %li', $uid);
break;
case "3단계 블럭":
$date = date('Y-m-d H:i:s');
$date = TimeUtil::now();
$db->update('general', [
'gold'=>0,
'rice'=>0,
@@ -93,18 +96,22 @@ switch($btn) {
], '`no` IN %li', $genlist);
break;
case "강제 사망":
$date = date('Y-m-d H:i:s');
$date = TimeUtil::now(true);
$db->update('general', [
'turn0'=>EncodeCommand(0, 0, 0, 0),
'killturn'=>0,
'turntime'=>$date,
], '`no` IN %li', $genlist);
$db->update('general_turn', [
'action'=>'휴식',
'arg'=>'{}',
'brief'=>'휴식',
], 'general_id IN %li AND turn_idx = 0', $genlist);
break;
case "특기 부여":
[$year, $month] = $gameStor->getValuesAsArray(['year', 'month']);
$text = "특기 부여!";
foreach($db->query("SELECT `no`,leader,power,intel,dex0,dex10,dex20,dex30,dex40 FROM general WHERE `no` IN %li", $genlist) as $general){
foreach($db->query("SELECT `no`,leadership,strength,intel,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);
@@ -206,7 +213,7 @@ switch($btn) {
], '`no` IN %li', $genlist);
break;
case "메세지 전달":
$text = $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);
@@ -214,11 +221,11 @@ switch($btn) {
break;
case "무기지급":
if($weap == 0) {
if($item == 'None') {
$text = "무기 회수!";
}
else {
$text = getWeapName($weap)." 지급!";
$text = getItemName($item)." 지급!";
}
foreach($genlist as $generalID){
@@ -226,23 +233,23 @@ switch($btn) {
$msg->send(true);
}
if($weap == 0){
if($item === 'None'){
$db->update('general', [
'weap'=>0
'weapon'=>'None'
], '`no` IN %li', $genlist);
}
else{
$db->update('general', [
'weap'=>$weap
], '`no` IN %li AND weap < %i', $genlist, $weap);
'weapon'=>$item
], '`no` IN %li', $genlist, $item);
}
break;
case "책지급":
if($weap == 0) {
if($item == 'None') {
$text = "책 회수!";
}
else {
$text = getBookName($weap)." 지급!";
$text = getItemName($item)." 지급!";
}
foreach($genlist as $generalID){
@@ -250,23 +257,23 @@ switch($btn) {
$msg->send(true);
}
if($weap == 0){
if($item == 'None'){
$db->update('general', [
'book'=>0
'book'=>'None'
], '`no` IN %li', $genlist);
}
else{
$db->update('general', [
'book'=>$weap
], '`no` IN %li AND book < %i', $genlist, $weap);
'book'=>$item
], '`no` IN %li', $genlist);
}
break;
case "말지급":
if($weap == 0) {
if($item == 'None') {
$text = "말 회수!";
}
else {
$text = getHorseName($weap)." 지급!";
$text = getItemName($item)." 지급!";
}
foreach($genlist as $generalID){
@@ -274,23 +281,23 @@ switch($btn) {
$msg->send(true);
}
if($weap == 0){
if($item == 'None'){
$db->update('general', [
'horse'=>0
'horse'=>'None'
], '`no` IN %li', $genlist);
}
else{
$db->update('general', [
'horse'=>$weap
], '`no` IN %li AND horse < %i', $genlist, $weap);
'horse'=>$item
], '`no` IN %li', $genlist);
}
break;
case "도구지급":
if($weap == 0) {
if($item == 'None') {
$text = "특수도구 회수!";
}
else {
$text = getItemName($weap)." 지급!";
$text = getItemName($item)." 지급!";
}
foreach($genlist as $generalID){
@@ -298,37 +305,35 @@ switch($btn) {
$msg->send(true);
}
if($weap == 0){
if($item == 'None'){
$db->update('general', [
'item'=>0
'item'=>'None'
], '`no` IN %li', $genlist);
}
else{
$db->update('general', [
'item'=>$weap
], '`no` IN %li AND item < %i', $genlist, $weap);
'item'=>$item
], '`no` IN %li AND item < %i', $genlist, $item);
}
break;
case "NPC해제":
$db->update('general', [
'npc'=>1
], '`no` IN %li', $genlist);
break;
case "하야입력":
$db->update('general', [
'turn0'=>EncodeCommand(0, 0, 0, 45)
], '`no` IN %li', $genlist);
$db->update('general_turn', [
'action'=>'che_하야',
'arg'=>'{}',
'brief'=>'하야',
], 'general_id IN %li AND turn_idx = 0', $genlist);
break;
case "방랑해산":
$db->update('general', [
'turn0'=>EncodeCommand(0, 0, 0, 47),
'turn1'=>EncodeCommand(0, 0, 0, 56)
], '`no` IN %li', $genlist);
break;
case "NPC설정":
$db->update('general', [
'npc'=>2
], '`no` IN %li', $genlist);
$db->update('general_turn', [
'action'=>'che_방랑',
'arg'=>'{}',
'brief'=>'방랑',
], 'general_id IN %li AND turn_idx = 0', $genlist);
$db->update('general_turn', [
'action'=>'che_해산',
'arg'=>'{}',
'brief'=>'해산',
], 'general_id IN %li AND turn_idx = 1', $genlist);
break;
case "00턴":
$turnterm = $gameStor->turnterm;
+15 -10
View File
@@ -15,8 +15,6 @@ $btn = Util::getReq('btn');
$genlist = Util::getReq('genlist', 'array_int');
$msg = Util::getReq('msg','string', '메시지');
extractMissingPostToGlobals();
$db = DB::db();
//NOTE: 왜 기능이 admin2와 admin4가 같이 있는가?
@@ -26,7 +24,7 @@ switch($btn) {
DB::db()->query('update general set block=0 where no IN %li', $genlist);
break;
case "1단계 블럭":
$date = date('Y-m-d H:i:s');
$date = TimeUtil::now();
$db = DB::db();
$db->query('update general set block=1,killturn=24 where no IN %li',$genlist);
//FIXME: subquery로 하는게 더 빠를 듯.
@@ -34,14 +32,14 @@ switch($btn) {
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');
$date = TimeUtil::now();
$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);
break;
case "3단계 블럭":
$date = date('Y-m-d H:i:s');
$date = TimeUtil::now();
$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);
@@ -51,12 +49,19 @@ switch($btn) {
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=%s,killturn=0,turntime=%s where no IN %li',EncodeCommand(0, 0, 0, 0),$date, $genlist);
$date = TimeUtil::now(true);
$db->update('general', [
'killturn'=>0,
'turntime'=>$date,
], '`no` IN %li', $genlist);
$db->update('general_turn', [
'action'=>'휴식',
'arg'=>'{}',
'brief'=>'휴식'
], 'general_id IN %li AND turn_idx = 0', $genlist);
break;
case "메세지 전달":
//TODO:새 갠메 시스템으로 변경
$date = date('Y-m-d H:i:s');
$date = TimeUtil::now();
$src = MessageTarget::buildQuick($session->generalID);
for($i=0; $i < count($genlist); $i++) {
$msgObj = new Message(
@@ -64,7 +69,7 @@ switch($btn) {
$src,
MessageTarget::buildQuick($genlist[$i]),
$msg,
new DateTime(),
new \DateTime(),
new \DateTime('9999-12-31'),
[]
);
+29 -33
View File
@@ -14,8 +14,6 @@ if($type2 < 0 || $type2 > 6){
$type2 = 0;
}
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
@@ -121,7 +119,6 @@ for($i=1; $i <= $count; $i++) {
<td align=center>접률</td>
<td align=center>단접</td>
<td align=center>국력</td>
<td align=center>단합</td>
<td align=center>장수</td>
<td align=center>속령</td>
<td align=center>기술</td>
@@ -155,10 +152,9 @@ SELECT
A.nation,
A.name,
A.power,
A.chemi,
A.color,
A.tech,
A.sabotagelimit,
A.strategic_cmd_limit,
A.gold,
A.rice,
COUNT(B.nation) AS gennum,
@@ -182,8 +178,8 @@ switch($type) {
case 4: $query .= " order by A.rice desc"; break;
case 5: $query .= " order by avg(B.gold) desc"; break;
case 6: $query .= " order by avg(B.rice) desc"; break;
case 7: $query .= " order by avg(B.leader) desc"; break;
case 8: $query .= " order by avg(B.power) desc"; break;
case 7: $query .= " order by avg(B.leadership) desc"; break;
case 8: $query .= " order by avg(B.strength) desc"; break;
case 9: $query .= " order by avg(B.intel) desc"; break;
case 10: $query .= " order by avg(B.explevel) desc"; break;
case 11: $query .= " order by avg(B.connect) desc"; break;
@@ -202,8 +198,8 @@ for($i=0; $i < $nationCount; $i++) {
$query = "select COUNT(*) as cnt,
ROUND(AVG(gold)) as avgg,
ROUND(AVG(rice)) as avgr,
SUM(leader) as leader, ROUND(AVG(leader), 1) as avgl,
ROUND(AVG(power), 1) as avgp,
SUM(leadership) as leadership, ROUND(AVG(leadership), 1) as avgl,
ROUND(AVG(strength), 1) as avgs,
ROUND(AVG(intel), 1) as avgi,
ROUND(AVG(explevel), 1) as avge,
SUM(crew) as crew
@@ -212,13 +208,14 @@ for($i=0; $i < $nationCount; $i++) {
$gen = MYDB_fetch_array($genResult);
$query = "select COUNT(*) as cnt,
SUM(pop) as pop, SUM(pop2) as pop2,
ROUND(SUM(pop)/SUM(pop2)*100, 2) as rate,
ROUND(SUM(agri)/SUM(agri2)*100, 2) as agri,
ROUND(SUM(comm)/SUM(comm2)*100, 2) as comm,
ROUND(SUM(secu)/SUM(secu2)*100, 2) as secu,
ROUND(SUM(wall)/SUM(wall2)*100, 2) as wall,
ROUND(SUM(def)/SUM(def2)*100, 2) as def
SUM(pop) as pop, SUM(pop_max) as pop_max,
ROUND(SUM(pop)/SUM(pop_max)*100, 2) as rate,
trust,
ROUND(SUM(agri)/SUM(agri_max)*100, 2) as agri,
ROUND(SUM(comm)/SUM(comm_max)*100, 2) as comm,
ROUND(SUM(secu)/SUM(secu_max)*100, 2) as secu,
ROUND(SUM(wall)/SUM(wall_max)*100, 2) as wall,
ROUND(SUM(def)/SUM(def_max)*100, 2) as def
from city where nation='{$nation['nation']}'";
$cityResult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$city = MYDB_fetch_array($cityResult);
@@ -229,27 +226,26 @@ for($i=0; $i < $nationCount; $i++) {
<td align=center>&nbsp;{$nation['connect']}&nbsp;</td>
<td align=center>&nbsp;{$nation['con']}&nbsp;</td>
<td align=center>&nbsp;{$nation['power']}&nbsp;</td>
<td align=center>&nbsp;{$nation['chemi']}&nbsp;</td>
<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['sabotagelimit']}&nbsp;</td>
<td align=right>&nbsp;".sprintf('%.1f',$nation['tech'])."&nbsp;</td>
<td align=center>&nbsp;{$nation['strategic_cmd_limit']}&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>
<td align=center>&nbsp;{$gen['avgr']}&nbsp;</td>
<td align=center>&nbsp;{$gen['avgl']}&nbsp;</td>
<td align=center>&nbsp;{$gen['avgp']}&nbsp;</td>
<td align=center>&nbsp;{$gen['avgi']}&nbsp;</td>
<td align=center>&nbsp;{$gen['avge']}&nbsp;</td>
<td align=center>&nbsp;{$nation['dex0']}&nbsp;</td>
<td align=center>&nbsp;{$nation['dex10']}&nbsp;</td>
<td align=center>&nbsp;{$nation['dex20']}&nbsp;</td>
<td align=center>&nbsp;{$nation['dex30']}&nbsp;</td>
<td align=center>&nbsp;{$nation['dex40']}&nbsp;</td>
<td align=center>&nbsp;{$gen['crew']}/{$gen['leader']}00&nbsp;</td>
<td align=center>&nbsp;{$city['pop']}/{$city['pop2']}&nbsp;</td>
<td align=center>&nbsp;{$city['rate']}%&nbsp;</td>
<td align=right>&nbsp;{$gen['avgg']}&nbsp;</td>
<td align=right>&nbsp;{$gen['avgr']}&nbsp;</td>
<td align=right>&nbsp;{$gen['avgl']}&nbsp;</td>
<td align=right>&nbsp;{$gen['avgs']}&nbsp;</td>
<td align=right>&nbsp;{$gen['avgi']}&nbsp;</td>
<td align=right>&nbsp;{$gen['avge']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex0']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex10']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex20']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex30']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex40']}&nbsp;</td>
<td align=right>&nbsp;{$gen['crew']}/{$gen['leadership']}00&nbsp;</td>
<td align=center>&nbsp;{$city['pop']}/{$city['pop_max']}&nbsp;</td>
<td align=center>&nbsp;".sprintf('%.1f',$city['pop']/$city['pop_max']*100)."%&nbsp;</td>
<td align=center>&nbsp;{$city['agri']}%&nbsp;</td>
<td align=center>&nbsp;{$city['comm']}%&nbsp;</td>
<td align=center>&nbsp;{$city['secu']}%&nbsp;</td>
+9 -3
View File
@@ -7,8 +7,6 @@ include "func.php";
$btn = Util::getReq('btn');
$nation = Util::getReq('nation', 'int');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
@@ -19,10 +17,10 @@ if($session->userGrade < 5) {
}
$db = DB::db();
$connect=$db->get();
switch($btn) {
case "국가변경":
$oldNation = $db->queryFirstField('SELECT nation FROM general WHERE owner=%i', $userID);
if($nation == 0) {
$db->update('general', [
'nation'=>0,
@@ -33,6 +31,14 @@ switch($btn) {
'nation'=>$nation,
'level'=>1,
], 'owner=%i', $userID);
$db->update('nation', [
'gennum'=>$db->sqleval('gennum + 1')
], 'nation=%i', $oldNation);
}
if($oldNation != 0){
$db->update('nation', [
'gennum'=>$db->sqleval('gennum - 1')
], 'nation=%i', $oldNation);
}
break;
}
-1
View File
@@ -8,7 +8,6 @@ $type = Util::getReq('type', 'int', 0);
if($type < 0 || $type > 4){
$type = 0;
}
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
+62 -36
View File
@@ -6,14 +6,31 @@ include "func.php";
$btn = Util::getReq('btn');
$gen = Util::getReq('gen', 'int', 0);
$type = Util::getReq('type', 'int', 0);
$reqQueryType = Util::getReq('query_type', 'string', null);
if($type < 0 || $type > 3){
$type = 0;
// $queryTypeText, $reqArgType(0=>None, 1=>AdditionalColumn, 2=>rankVal, 3=>aux), $comp
$queryMap = [
'turntime' => ['최근턴', 0, function($lhs, $rhs){
return -($lhs['turntime']<=>$rhs['turntime']);
}],
'recwar' => ['최근전투', 1, function($lhs, $rhs){
return -($lhs['recwar']<=>$rhs['recwar']);
}],
'name' => ['장수명', 0, function($lhs, $rhs){
if($lhs['npc'] !== $rhs['npc']){
return $lhs['npc']<=>$rhs['npc'];
}
return $lhs['name']<=>$rhs['name'];
}],
'warnum' => ['전투수', 1, function($lhs, $rhs){
return -($lhs['warnum']<=>$rhs['warnum']);
}]
];
if($reqQueryType === null || !key_exists($reqQueryType, $queryMap)){
$reqQueryType = Util::array_first_key($queryMap);
}
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
@@ -45,7 +62,39 @@ if($btn == '정렬하기') {
$gen = 0;
}
$sel[$type] = "selected";
[$queryTypeText, $reqArgType, $comp] = $queryMap[$reqQueryType];
if($reqArgType===0){
$generalBasicList = $db->query('SELECT no, name, nation, npc, turntime FROM general');
}
else if($reqArgType===1){
$generalBasicList = $db->query('SELECT no, name, nation, npc, turntime, %b FROM general', $reqQueryType);
}
else if($reqArgType===2){
$generalBasicList = $db->query('SELECT no, name, nation, npc, turntime, value as %b
FROM general LEFT JOIN rank_data
ON general.no = rank_data.general_id
WHERE rank_data.type = %b',
$reqQueryType, $reqQueryType
);
}
else if($reqArgType===3){
$generalBasicList = array_map(function($arr){
$arr['aux'] = Json::decode($arr['aux']);
return $arr;
}, $db->query('SELECT no, name, nation, npc, turntime, aux FROM general'));
}
else{
throw new \sammo\MustNotBeReachedException();
}
usort($generalBasicList, $comp);
if(!$gen){
$gen = $generalBasicList[0]['no'];
}
$generalObj = General::createGeneralObjFromDB($gen);
?>
<!DOCTYPE html>
<html>
@@ -64,39 +113,16 @@ $sel[$type] = "selected";
<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>
<?php foreach($queryMap as $queryType => [$queryTypeText,]): ?>
<option <?=$queryKey==$reqQueryType?'selected':''?> value='<?=$queryKey?>'><?=$queryTypeText?></option>
<?php endforeach; ?>
</select>
<input type=submit name=btn value='정렬하기'>
대상장수 :
<select name=gen size=1>
<?php
switch($type) {
case 0: $query = "select no,name from general order by turntime desc"; break;
case 1: $query = "select no,name from general order by recwar desc"; break;
case 2: $query = "select no,name from general order by npc,binary(name)"; break;
case 3: $query = "select no,name from general order by warnum desc"; break;
}
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($result);
for($i=0; $i < $gencount; $i++) {
$general = MYDB_fetch_array($result);
// 선택 없으면 맨 처음 장수
if($gen == 0) {
$gen = $general['no'];
}
if($gen == $general['no']) {
echo "
<option selected value={$general['no']}>{$general['name']}</option>";
} else {
echo "
<option value={$general['no']}>{$general['name']}</option>";
}
}
?>
<?php foreach($generalBasicList as $general): ?>
<option <?=$gen==$general['no']?'selected':''?>><?=getNationStaticInfo($general['nation'])['name']?> - <?=$general['name']?> (<?=$general['turntime']?>)</option>
<?php endforeach; ?>
</select>
<input type=submit name=btn value='조회하기'>
</form>
@@ -109,7 +135,7 @@ for($i=0; $i < $gencount; $i++) {
</tr>
<tr>
<td valign=top>
<?php generalInfo($gen); generalInfo2($gen); ?>
<?php generalInfo($generalObj); generalInfo2($generalObj); ?>
</td>
<td valign=top>&nbsp;
</td>
+2 -41
View File
@@ -8,8 +8,6 @@ $btn = Util::getReq('btn');
$gen = Util::getReq('gen', 'int', 0);
$type = 0;
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
@@ -73,7 +71,6 @@ $sel[$type] = "selected";
<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
@@ -95,11 +92,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;
}
@@ -114,38 +107,7 @@ for ($i=0; $i < $dipcount; $i++) {
case 7: $state = "<font color=green>불가침</font>"; break;
}
$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;";
}
$date = TimeUtil::now();
echo "
<tr>
@@ -153,7 +115,6 @@ 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>";
}
?>
+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);
}
+51 -27
View File
@@ -6,8 +6,6 @@ include "func.php";
$btn = Util::getReq('btn');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
@@ -16,6 +14,7 @@ $db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
increaseRefresh("명장일람", 1);
$templates = new \League\Plates\Engine(__DIR__.'/templates');
?>
<!DOCTYPE html>
@@ -48,9 +47,15 @@ increaseRefresh("명장일람", 1);
</td></tr>
</form>
</table>
<div style="margin:auto;width=1000px;">
<div style="margin:auto;width:1000px;">
<?php
$ownerNameList = [];
if($gameStor->isunited){
foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){
$ownerNameList[$ownerID] = $ownerName;
}
}
$nationName = [0=>'재야'];
$nationColor = [0=>'#000000'];
@@ -62,8 +67,11 @@ foreach (getAllNationStaticInfo() as $nation) {
$types = [
["명 성", "int", function($v){$v['value'] = $v['experience']; return $v; }],
["계 급", "int", function($v){$v['value'] = $v['dedication']; return $v; }],
["계 략 성 공", "int", function($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'] = '???';
@@ -119,12 +127,12 @@ $types = [
return $v;
}],
["일 기 토 승 률", "percent", function($v){
$totalCnt = $v['tpw']+$v['tpd']+$v['tpl'];
$totalCnt = $v['tsw']+$v['tsd']+$v['tsl'];
if($totalCnt < 50){
$v['value'] = 0;
}
else{
$v['value'] = $v['tpw']/max(1, $totalCnt);
$v['value'] = $v['tsw']/max(1, $totalCnt);
}
return $v;
}],
@@ -143,7 +151,7 @@ $types = [
["베 팅 당 첨", "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){
if($v['betgold'] < GameConst::$defaultGold){
$v['value'] = 0;
}
else{
@@ -153,7 +161,15 @@ $types = [
}],
];
$generals = array_map(function($general) use($nationColor, $nationName) {
$generals = [];
foreach($db->query(
"SELECT nation,no,name,name2 as owner_name, owner, picture, imgsvr,
experience, dedication,
dex0, dex10, dex20, dex30, dex40,
horse, weapon, book, item
FROM general WHERE %l", $btn == "NPC 보기"?"npc>=2":"npc<2") as $general
){
$generalID = $general['no'];
$general['bgColor'] = $nationColor[$general['nation']]??GameConst::$basecolor4;
$general['fgColor'] = newColor($general['bgColor']);
$general['nationName'] = $nationName[$general['nation']];
@@ -166,22 +182,19 @@ $generals = array_map(function($general) use($nationColor, $nationName) {
$general['pictureFullPath'] = GetImageURL(0)."/default.jpg";
}
return $general;
}, $db->query(
"SELECT nation,no,name,name2 as owner_name, picture, imgsvr,
experience, dedication, firenum, warnum, killnum, killcrew, deathcrew,
dex0, dex10, dex20, dex30, dex40,
ttw, ttd, ttl, tlw, tld, tll, tpw, tpd, tpl, tiw, tid, til,
betgold, betwin, betwingold,
horse, weap, book, item
FROM general WHERE %l", $btn == "NPC 보기"?"npc>=2":"npc<2"));
$generals[$generalID] = $general;
}
foreach($db->queryAllLists('SELECT general_id, `type`, `value` FROM rank_data') as [$generalID, $typeKey, $value]){
$generals[$generalID][$typeKey] = $value;
}
$templates = new \League\Plates\Engine('templates');
foreach($types as $idx=>[$typeName, $typeValue, $typeFunc]){
$validCnt = 0;
$typeGenerals = array_map(function($general) use($typeValue, $typeFunc, &$validCnt){
$typeGenerals = array_map(function($general) use($typeValue, $typeFunc, &$validCnt, $ownerNameList){
$general['owner_name'] = $ownerNameList[$general['owner']]??null;
$general = ($typeFunc)($general);
$value = $general['value'];
@@ -211,27 +224,38 @@ foreach($types as $idx=>[$typeName, $typeValue, $typeFunc]){
}
?>
</div>
<div style="margin:auto;width=1000px;margin-top:5px;">
<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, []],
'horse'=>'명 마',
'weapon'=>'명 검',
'book'=>'명 서',
'item'=>'도 구'
];
$simpleItemTypes = array_map(function($itemType){return $itemType[1];}, $itemTypes);
$simpleItemTypes = array_keys($itemTypes); array_map(function($itemType){return $itemType[1];}, $itemTypes);
foreach($generals as $general){
foreach($itemTypes as $itemIdx=>[,$itemType, $itemFunc,,,]){
$itemCode = $general[$itemType];
if($itemCode <= 6){
$itemClass = buildItemClass($itemCode);
if(!$itemClass->isBuyable()){
continue;
}
$itemName = ($itemFunc)($itemCode);
$general['rankName'] = $itemName;
$info = $itemClass->getInfo();
$name = $itemClass->getName();
if($info){
$name = $templates->render('tooltip', [
'text'=>$text,
'info'=>$info,
]);
}
$general['rankName'] = $name;
$general['value'] = $itemCode;
$itemTypes[$itemIdx][5][$itemCode] = $general;
}
+14 -4
View File
@@ -54,7 +54,7 @@ if ($showCurrentNation) {
<tr>
<td style="background-color:#333333;" align=center colspan=8>
<font size=5>현재 (<?=$year?>年 <?=$month?>月)</font>
<a href="a_history.php"><button>역사 보기</button></a>
<a href="a_history.php"><button type='button'>역사 보기</button></a>
</td>
</tr>
</table>
@@ -71,10 +71,10 @@ foreach($emperiors as $emperior){
<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>
<a href="a_emperior_detail.php?select=<?=$emperior['no']?>"><button type='button'>자세히</button></a>
<?php if($emperior['server_id']): ?>
<a href="a_history.php?serverID=<?=$emperior['server_id']?>"><button>역사 보기</button></a>
<a href="a_history.php?serverID=<?=$emperior['server_id']?>"><button type='button'>역사 보기</button></a>
<?php endif ?>
</td>
</tr>
@@ -98,11 +98,21 @@ foreach($emperiors as $emperior){
<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 id=bg1 align=center> </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 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 align=center><?=$emperior['l5name']?></td>
</tr>
</table>
-2
View File
@@ -6,8 +6,6 @@ include "func.php";
$select = Util::getReq('select', 'int', 0);
extractMissingPostToGlobals();
$db = DB::db();
$connect=$db->get();
+2 -2
View File
@@ -39,7 +39,7 @@ $serverID = $emperior['server_id']??($emperior['serverID']??null);
<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>
<div style="float:right;"><a href="a_emperior.php"><button type='button'>전체보기</button></a><div>
</td></tr>
</table>
@@ -179,7 +179,7 @@ if($showServers){
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) != $nation['generals'] && $serverID == UniqueConst::$serverID){
if(count($generals) != count($nation['generals']) && $serverID == UniqueConst::$serverID){
$liveGenerals = $nation['generals'];
foreach($generals as $general){
if(in_array($general['general_no'], $nation['generals'])){
+49 -48
View File
@@ -6,21 +6,16 @@ include "func.php";
$type = Util::getReq('type', 'int', 9);
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("장수일람", 2);
$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);
$me = $db->queryFirstRow('SELECT con,turntime FROM general WHERE owner = %i', $userID);
$con = checkLimit($me['con']);
if ($con >= 2) {
@@ -32,6 +27,13 @@ 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>
@@ -84,26 +86,26 @@ foreach (getAllNationStaticInfo() as $nation) {
$nationlevel[$nation['nation']] = $nation['level'];
}
switch ($type) { //FIXME: $query 처리 조심.
case 1: $query = "select no,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 no,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 no,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 no,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 no,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 no,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 no,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 no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by killturn"; break;
default:
case 9: $query = "select no,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 no,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 no,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 no,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 no,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 no,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 no,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=>['leadership', true],
3=>['strength', 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,leadership,strength,intel,experience,dedication,level,killturn,connect from general order by %b %l', $orderKey, $orderDesc?'desc':'');
echo"
<table align=center width=1000 class='tb_layout bg0'>
@@ -124,17 +126,10 @@ echo"
<td width=45 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) {
$lbonus = $nationlevel[$general['nation']] * 2;
} elseif ($general['level'] >= 5) {
$lbonus = $nationlevel[$general['nation']];
} else {
$lbonus = 0;
}
$lbonus = calcLeadershipBonus($general['level'], $nationlevel[$general['nation']]??0);
if ($lbonus > 0) {
$lbonusText = "<font color=cyan>+{$lbonus}</font>";
} else {
@@ -142,18 +137,20 @@ for ($j=0; $j < $gencount; $j++) {
}
if ($general['injury'] > 0) {
$leader = intdiv($general['leader'] * (100 - $general['injury']), 100);
$power = intdiv($general['power'] * (100 - $general['injury']), 100);
$leadership = intdiv($general['leadership'] * (100 - $general['injury']), 100);
$strength = intdiv($general['strength'] * (100 - $general['injury']), 100);
$intel = intdiv($general['intel'] * (100 - $general['injury']), 100);
$leader = "<font color=red>{$leader}</font>{$lbonusText}";
$power = "<font color=red>{$power}</font>";
$leadership = "<font color=red>{$leadership}</font>{$lbonusText}";
$strength = "<font color=red>{$strength}</font>";
$intel = "<font color=red>{$intel}</font>";
} else {
$leader = "{$general['leader']}{$lbonusText}";
$power = "{$general['power']}";
$leadership = "{$general['leadership']}{$lbonusText}";
$strength = "{$general['strength']}";
$intel = "{$general['intel']}";
}
if ($general['npc'] >= 2) {
$name = "<font color=cyan>{$general['name']}</font>";
} elseif ($general['npc'] == 1) {
@@ -162,15 +159,19 @@ for ($j=0; $j < $gencount; $j++) {
$name = "{$general['name']}";
}
$general['connect'] = Util::round($general['connect'] / 10) * 10;
if(key_exists($general['owner'], $ownerNameList)){
$name = $name.'<br><small>('.$ownerNameList[$general['owner']].')</small>';
}
$general['connect'] = Util::round($general['connect'], -1);
$imageTemp = GetImageURL($general['imgsvr']);
echo "
<tr data-general-id='{$general['no']}'
data-general-wounded='{$general['injury']}'
data-general-leadership='{$general['leader']}'
data-general-leadership='{$general['leadership']}'
data-general-leadership-bonus='{$lbonus}'
data-general-power='{$general['power']}'
data-general-strength='{$general['strength']}'
data-general-intel='{$general['intel']}'
data-is-npc='".($general['npc']>=2?'true':'false')."'
>
@@ -178,16 +179,16 @@ for ($j=0; $j < $gencount; $j++) {
<td align=center>$name</td>
<td align=center>{$general['age']}</td>
<td align=center>".displayCharInfo($general['personal'])."</td>
<td align=center>".displaySpecialInfo($general['special'])." / ".displaySpecialInfo($general['special2'])."</td>
<td align=center>".displaySpecialDomesticInfo($general['special'])." / ".displaySpecialWarInfo($general['special2'])."</td>
<td align=center>Lv ".getExpLevel($general['experience'])."</td>
<td align=center>{$nation}</td>
<td align=center>".getHonor($general['experience'])."</td>
<td align=center>".getDed($general['dedication'])."</td>
<td align=center>";
echo getLevel($general['level']);
echo getLevelText($general['level']);
echo "</td>
<td align=center>$leader</td>
<td align=center>$power</td>
<td align=center>$leadership</td>
<td align=center>$strength</td>
<td align=center>$intel</td>
<td align=center>{$general['killturn']}</td>
<td align=center>{$general['connect']}";
+41 -14
View File
@@ -5,26 +5,36 @@ include "lib.php";
include "func.php";
$session = Session::getInstance()->setReadOnly();
$seasonIdx = Util::getReq('seasonIdx', 'int', UniqueConst::$seasonIdx);
$scenarioIdx = Util::getReq('scenarioIdx', 'int', null);
$db = DB::db();
increaseRefresh("명예의전당", 1);
$scenarioList= [];
foreach($db->query('SELECT scenario_name as name, count(scenario) as cnt, scenario from ng_games group by scenario order by scenario asc') as $scenarioInfo){
$scenarioList[$scenarioInfo['scenario']] = $scenarioInfo;
}
$scenarioList = (function(){
$db = DB::db();
$scenarioList= [];
foreach($db->query('SELECT season, scenario_name as name, count(scenario) as cnt, scenario from ng_games group by season, scenario order by season desc, scenario asc') as $scenarioInfo){
$seasonIdx = $scenarioInfo['season'];
$scenarioIdx = $scenarioInfo['scenario'];
if(!key_exists($seasonIdx, $scenarioList)){
$scenarioList[$seasonIdx] = [];
}
$scenarioList[$seasonIdx][$scenarioIdx] = $scenarioInfo;
}
return $scenarioList;
})();
if($scenarioIdx !== null || key_exists($scenarioIdx, $scenarioList)){
$searchScenarioName = $scenarioList[$scenarioIdx]['name'];
$searchFilter = $db->sqleval('scenario = %i', $scenarioIdx);
$searchScenarioName = $scenarioList[$seasonIdx][$scenarioIdx]['name'];
$searchFilter = $db->sqleval('season = %i AND scenario = %i', $seasonIdx, $scenarioIdx);
}
else{
$searchScenarioName = '* 모두 *';
$searchFilter = $db->sqleval(true);
$searchFilter = $db->sqleval('season = %i', $seasonIdx);
}
?>
@@ -53,12 +63,19 @@ else{
<tr><td> <br><?=closeButton()?></td></tr>
<tr><td>
시나리오 검색 : <select id="by_scenario" name="by_scenario">
<option value="" <?=$scenarioIdx?"selected='selected'":''?>>* 종합 *</option>
<?php foreach($scenarioList as $info): ?>
<option
value="<?=$info['scenario']?>"
<?=($info['scenario']===$scenarioIdx)?"selected='selected'":''?>
><?=$info['name']?>(<?=$info['cnt']?>회)</option>
<?php foreach($scenarioList as $iterSeasonIdx=>$subScenarioList): ?>
<option
data-season="<?=$iterSeasonIdx?>"
value=""
<?=($iterSeasonIdx == $seasonIdx && $scenarioIdx === null)?"selected='selected'":''?>
>* 시즌 : <?=$iterSeasonIdx?> 종합 *</option>
<?php foreach($subScenarioList as $info): ?>
<option
data-season="<?=$iterSeasonIdx?>"
value="<?=$info['scenario']?>"
<?=($iterSeasonIdx == $seasonIdx && $info['scenario']===$scenarioIdx)?"selected='selected'":''?>
><?=$info['name']?>(<?=$info['cnt']?>회)</option>
<?php endforeach; ?>
<?php endforeach; ?>
?>
</select>
@@ -92,12 +109,22 @@ $types = [
$templates = new \League\Plates\Engine('templates');
$ownerNameList = [];
foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){
$ownerNameList[$ownerID] = $ownerName;
}
foreach($types as $idx=>[$typeName, $typeValue]) {
$hallResult = $db->query('SELECT * FROM ng_hall WHERE `type`=%i AND %? ORDER BY `value` DESC LIMIT 10', $idx, $searchFilter);
$hallResult = array_map(function($general)use($typeValue){
$hallResult = array_map(function($general)use($typeValue, $ownerNameList){
$aux = Json::decode($general['aux']);
$general += $aux;
if(key_exists($general['owner'], $ownerNameList)){
$general['owner_name'] = $ownerNameList[$general['owner']];
}
if(!key_exists('bgColor', $general)){
if(!key_exists('color', $general)){
$general['bgColor'] = GameConst::$basecolor4;
+14 -20
View File
@@ -7,8 +7,6 @@ $btn = Util::getReq('btn');
$yearmonth = Util::getReq('yearmonth', 'int');
$serverID = Util::getReq('serverID', 'string', null);
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
@@ -88,6 +86,8 @@ if ($month <= 0) {
$month += 12;
}
$history = $db->queryFirstRow('SELECT log,genlog,nation,power,gen,city FROM history WHERE server_id = %s AND year = %i AND month = %i', $serverID, $year, $month);
?>
<!DOCTYPE html>
<html>
@@ -103,12 +103,19 @@ if ($month <= 0) {
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printJS("js/map/theme_{$mapTheme}.js")?>
<?=WebUtil::printJS('js/map.js')?>
<?=WebUtil::printJS('js/history.js')?>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<?=WebUtil::printCSS('css/map.css')?>
<script>
var startYear = <?=$s_year?>;
var startMonth = <?=$s_month?>;
var lastYear = <?=$e_year?>;
var lastMonth = <?=$e_month?>;
var selectYear = <?=$year?>;
var selectMonth = <?=$month?>;
</script>
</head>
<body>
@@ -118,22 +125,9 @@ if ($month <= 0) {
<form name=form1 method=post>
년월 선택 :
<input type=submit name=btn value="◀◀ 이전달">
<select name=yearmonth size=1>
<?php
$dates = $db->queryAllLists('SELECT year, month FROM history WHERE server_id = %s ORDER BY year ASC, month ASC', $serverID);
foreach($dates as [$hYear, $hMonth]){
$value = "".$hYear.StringUtil::padStringAlignRight($hMonth, 2, "0");
if ($hYear == $year && $hMonth == $month) {
echo "
<option selected value={$value}>{$hYear} {$hMonth}</option>";
} else {
echo "
<option value={$value}>{$hYear} {$hMonth}</option>";
}
}
$history = $db->queryFirstRow('SELECT log,genlog,nation,power,gen,city FROM history WHERE server_id = %s AND year = %i AND month = %i', $serverID, $year, $month);
?>
<select id='yearmonth' name=yearmonth size=1>
<option selected='selected'><?=$year?>년 <?=$month?>월</option>
<option><?=$e_year?>년 12월</option>
</select>
<input type=submit name=btn value='조회하기'>
<input type=submit name=btn value="다음달 ▶▶">
+72 -134
View File
@@ -9,13 +9,10 @@ $userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("세력일람", 2);
$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);
$me = $db->queryFirstRow('SELECT con, turntime FROM general WHERE owner=%i', $userID);
$con = checkLimit($me['con']);
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
@@ -43,92 +40,51 @@ if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
<tr><td> <br><?=closeButton()?></td></tr>
</table>
<?php
$query = "select nation,name,color,level,type,power,gennum,capital from nation order by power desc";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$count = MYDB_num_rows($result);
for($i=1; $i <= $count; $i++) {
$nation = MYDB_fetch_array($result); //국가정보
$nations = getAllNationStaticInfo();
uasort($nations, function($lhs, $rhs){return $rhs['power']<=>$lhs['power'];});
$query = "select city,name from city where nation='{$nation['nation']}'"; // 도시 이름 목록
$cityresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$citycount = MYDB_num_rows($cityresult);
$nations[0] = getNationStaticInfo(0);
$query = "select npc,name,city from general where nation='{$nation['nation']}' and level='12'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$level12 = MYDB_fetch_array($genresult);
foreach($db->query('SELECT npc,name,city,nation,level,penalty,permission FROM general ORDER BY dedication DESC') as $general){
$nationID = $general['nation'];
if(!key_exists('generals', $nations[$nationID])){
$nations[$nationID]['generals'] = [];
}
$nations[$nationID]['generals'][] = $general;
}
$query = "select npc,name from general where nation='{$nation['nation']}' and level='11'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$level11 = MYDB_fetch_array($genresult);
foreach ($db->queryAllLists('SELECT city, name, nation FROM city') as [$cityID, $cityName, $nationID]) {
if(!key_exists('cities', $nations[$nationID])){
$nations[$nationID]['cities'] = [];
}
$nations[$nationID]['cities'][$cityID] = $cityName;
}
$query = "select npc,name from general where nation='{$nation['nation']}' and level='10'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$level10 = MYDB_fetch_array($genresult);
foreach ($nations as $nation) {
if ($nation['nation'] == 0) {
//재야 도시, 장수
continue;
}
$generals = $nation['generals'];
$query = "select npc,name from general where nation='{$nation['nation']}' and level='9'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$level9 = MYDB_fetch_array($genresult);
$query = "select npc,name from general where nation='{$nation['nation']}' and level='8'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$level8 = MYDB_fetch_array($genresult);
$query = "select npc,name from general where nation='{$nation['nation']}' and level='7'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$level7 = MYDB_fetch_array($genresult);
$query = "select npc,name from general where nation='{$nation['nation']}' and level='6'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$level6 = MYDB_fetch_array($genresult);
$query = "select npc,name from general where nation='{$nation['nation']}' and level='5'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$level5 = MYDB_fetch_array($genresult);
$query = "select npc,name from general where nation='{$nation['nation']}' order by dedication desc"; // 장수 목록
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($genresult);
if($level12['name'] == "") { $l12 = "-"; }
elseif($level12['npc'] >= 2) { $l12 = "<font color=cyan>{$level12['name']}</font>"; }
elseif($level12['npc'] == 1) { $l12 = "<font color=skyblue>{$level12['name']}</font>"; }
else { $l12 = $level12['name']; }
if($level11['name'] == "") { $l11 = "-"; }
elseif($level11['npc'] >= 2) { $l11 = "<font color=cyan>{$level11['name']}</font>"; }
elseif($level11['npc'] == 1) { $l11 = "<font color=skyblue>{$level11['name']}</font>"; }
else { $l11 = $level11['name']; }
if($level10['name'] == "") { $l10 = "-"; }
elseif($level10['npc'] >= 2) { $l10 = "<font color=cyan>{$level10['name']}</font>"; }
elseif($level10['npc'] == 1) { $l10 = "<font color=skyblue>{$level10['name']}</font>"; }
else { $l10 = $level10['name']; }
if($level9['name'] == "") { $l9 = "-"; }
elseif($level9['npc'] >= 2) { $l9 = "<font color=cyan>{$level9['name']}</font>"; }
elseif($level9['npc'] == 1) { $l9 = "<font color=skyblue>{$level9['name']}</font>"; }
else { $l9 = $level9['name']; }
if($level8['name'] == "") { $l8 = "-"; }
elseif($level8['npc'] >= 2) { $l8 = "<font color=cyan>{$level8['name']}</font>"; }
elseif($level8['npc'] == 1) { $l8 = "<font color=skyblue>{$level8['name']}</font>"; }
else { $l8 = $level8['name']; }
if($level7['name'] == "") { $l7 = "-"; }
elseif($level7['npc'] >= 2) { $l7 = "<font color=cyan>{$level7['name']}</font>"; }
elseif($level7['npc'] == 1) { $l7 = "<font color=skyblue>{$level7['name']}</font>"; }
else { $l7 = $level7['name']; }
if($level6['name'] == "") { $l6 = "-"; }
elseif($level6['npc'] >= 2) { $l6 = "<font color=cyan>{$level6['name']}</font>"; }
elseif($level6['npc'] == 1) { $l6 = "<font color=skyblue>{$level6['name']}</font>"; }
else { $l6 = $level6['name']; }
if($level5['name'] == "") { $l5 = "-"; }
elseif($level5['npc'] >= 2) { $l5 = "<font color=cyan>{$level5['name']}</font>"; }
elseif($level5['npc'] == 1) { $l5 = "<font color=skyblue>{$level5['name']}</font>"; }
else { $l5 = $level5['name']; }
$chiefs = [];
$ambassadors = [];
$auditors = [];
foreach($generals as $general){
$generalLevel = $general['level'];
if($generalLevel >= 5){
$chiefs[$generalLevel] = $general;
}
$generalPermission = checkSecretPermission($general, false);
if($generalPermission == 4){
$ambassadors[] = $general['name'];
}
else if($generalPermission == 3){
$auditors[] = $general['name'];
}
}
echo "
<table align=center width=1000 class='tb_layout bg2'>
@@ -143,55 +99,48 @@ for($i=1; $i <= $count; $i++) {
<td width=80 align=center id=bg1> </td>
<td width=170 align=center>{$nation['power']}</td>
<td width=80 align=center id=bg1>장수 / 속령</td>
<td width=170 align=center>{$gencount} / {$citycount}</td>
</tr>
<td width=170 align=center>".count($generals)." / ".count($nation['cities'])."</td>
";
for($chiefLevel = 12; $chiefLevel >= 5; $chiefLevel--){
if($chiefLevel % 4 == 0){
echo '</tr><tr>';
}
$chief = $chiefs[$chiefLevel]??['name'=>'-','npc'=>0];
$levelText = getLevelText($chiefLevel, $nation['level']);
$chiefText = getColoredName($chief['name'], $chief['npc']);
echo "<td class='center bg1'>{$levelText}</td>
<td class='center'>{$chiefText}</td>";
}
echo "</tr>
<tr>
<td align=center id=bg1>".getLevel(12, $nation['level'])."</td>
<td align=center>$l12</td>
<td align=center id=bg1>".getLevel(11, $nation['level'])."</td>
<td align=center>$l11</td>
<td align=center id=bg1>".getLevel(10, $nation['level'])."</td>
<td align=center>$l10</td>
<td align=center id=bg1>".getLevel( 9, $nation['level'])."</td>
<td align=center>$l9</td>
</tr>
<tr>
<td align=center id=bg1>".getLevel( 8, $nation['level'])."</td>
<td align=center>$l8</td>
<td align=center id=bg1>".getLevel( 7, $nation['level'])."</td>
<td align=center>$l7</td>
<td align=center id=bg1>".getLevel( 6, $nation['level'])."</td>
<td align=center>$l6</td>
<td align=center id=bg1>".getLevel( 5, $nation['level'])."</td>
<td align=center>$l5</td>
</tr>
<td align=center id=bg1>외교권자</td><td colspan=5>";
echo join(', ', $ambassadors);
echo "</td><td align=center id=bg1>조언자</td><td align=center >";
echo count($auditors).'명';
echo "</td></tr>
<tr>
<td colspan=8>";
if($nation['level'] > 0) {
echo "속령 일람 : ";
for($j=0; $j < $citycount; $j++) {
$city = MYDB_fetch_array($cityresult);
if($city['city'] == $nation['capital']) {
echo "<font color=cyan>[{$city['name']}]</font>, ";
foreach($nation['cities'] as $cityID => $cityName) {
if($cityID == $nation['capital']) {
echo "<font color=cyan>[{$cityName}]</font>, ";
} else {
echo "{$city['name']}, ";
echo "{$cityName}, ";
}
}
} else {
$query = "select name from city where city='{$level12['city']}'"; // 군주 위치 도시 이름
$cityResult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$city = MYDB_fetch_array($cityResult);
$cityName = CityConst::byID($chiefs[12]['city'])->name;
echo "현재 위치 : <font color=yellow>{$city['name']}</font>";
echo "현재 위치 : <font color=yellow>{$cityName}</font>";
}
echo"
</td>
</tr>
<tr>
<td colspan=8> 장수 일람 : ";
for($j=0; $j < $gencount; $j++) {
$general = MYDB_fetch_array($genresult);
foreach($generals as $general){
if($general['npc'] >= 2) { echo "<font color=cyan>{$general['name']}</font>, "; }
elseif($general['npc'] == 1) { echo "<font color=skyblue>{$general['name']}</font>, "; }
else { echo "{$general['name']}, "; }
@@ -204,14 +153,6 @@ for($i=1; $i <= $count; $i++) {
}
//재야
$query = "select npc,name from general where nation='0'"; // 장수 목록
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($genresult);
$query = "select name from city where nation='0'"; // 도시 이름 목록
$cityresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$citycount = MYDB_num_rows($cityresult);
echo "
<table align=center width=1000 class='tb_layout bg2'>
<tr>
@@ -220,26 +161,23 @@ echo "
<tr>
<td width=498 align=center>&nbsp;</td>
<td width=123 align=center id=bg1> </td>
<td width=123 align=center>{$gencount}</td>
<td width=123 align=center>".count($nations[0]['generals'])."</td>
<td width=123 align=center id=bg1> </td>
<td width=123 align=center>{$citycount}</td>
<td width=123 align=center>".count($nations[0]['cities']??[])."</td>
</tr>
<tr>
<td colspan=5> 속령 일람 : ";
for($j=0; $j < $citycount; $j++) {
$city = MYDB_fetch_array($cityresult);
echo "{$city['name']}, ";
foreach($nations[0]['cities']??[] as $cityName) {
echo "{$cityName}, ";
}
echo"
</td>
</tr>
<tr>
<td colspan=5> 장수 일람 : ";
for($j=0; $j < $gencount; $j++) {
$general = MYDB_fetch_array($genresult);
if($general['npc'] >= 2) { echo "<font color=cyan>{$general['name']}</font>, "; }
elseif($general['npc'] == 1) { echo "<font color=skyblue>{$general['name']}</font>, "; }
else { echo "{$general['name']}, "; }
foreach($nations[0]['generals'] as $general) {
$generalText = getColoredName($general['name'], $general['npc']);
echo "{$generalText}, ";
}
echo"
</td>
+11 -13
View File
@@ -6,8 +6,6 @@ include "func.php";
$type = Util::getReq('type', 'int', 1);
extractMissingPostToGlobals();
if($type <= 0 || $type > 8){
$type = 1;
}
@@ -64,14 +62,14 @@ foreach (getAllNationStaticInfo() as $nation) {
switch ($type) {//FIXME: $query 처리 부실
default:
case 1: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by binary(name)"; break;
case 2: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by nation"; break;
case 3: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by sum desc"; break;
case 4: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by leader"; break;
case 5: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by power"; break;
case 6: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by intel"; break;
case 7: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by experience"; break;
case 8: $query = "select npc,nation,name,name2,special,special2,personal,leader,power,intel,leader+power+intel as sum,explevel,experience,dedication from general where npc=1 order by dedication"; break;
case 1: $query = "select npc,nation,name,name2,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general where npc=1 order by binary(name)"; break;
case 2: $query = "select npc,nation,name,name2,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general where npc=1 order by nation"; break;
case 3: $query = "select npc,nation,name,name2,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general where npc=1 order by sum desc"; break;
case 4: $query = "select npc,nation,name,name2,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general where npc=1 order by leadership"; break;
case 5: $query = "select npc,nation,name,name2,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general where npc=1 order by strength"; break;
case 6: $query = "select npc,nation,name,name2,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general where npc=1 order by intel"; break;
case 7: $query = "select npc,nation,name,name2,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general where npc=1 order by experience"; break;
case 8: $query = "select npc,nation,name,name2,special,special2,personal,leadership,strength,intel,leadership+strength+intel as sum,explevel,experience,dedication from general where npc=1 order by dedication"; break;
}
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gencount = MYDB_num_rows($genresult);
@@ -111,10 +109,10 @@ for ($j=0; $j < $gencount; $j++) {
<td align=center>Lv {$general['explevel']}</td>
<td align=center>{$nation}</td>
<td align=center>".displayCharInfo($general['personal'])."</td>
<td align=center>".displaySpecialInfo($general['special'])." / ".displaySpecialInfo($general['special2'])."</td>
<td align=center>".displaySpecialDomesticInfo($general['special'])." / ".displaySpecialWarInfo($general['special2'])."</td>
<td align=center>{$general['sum']}</td>
<td align=center>{$general['leader']}</td>
<td align=center>{$general['power']}</td>
<td align=center>{$general['leadership']}</td>
<td align=center>{$general['strength']}</td>
<td align=center>{$general['intel']}</td>
<td align=center>{$general['experience']}</td>
<td align=center>{$general['dedication']}</td>
+1 -1
View File
@@ -12,7 +12,7 @@ $gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("세력도", 2);
checkTurn();
TurnExecutionHelper::executeAllCommand();
$mapTheme = $gameStor->map_theme??'che';
+2 -3
View File
@@ -6,13 +6,12 @@ include "func.php";
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("갱신정보", 2);
$admin = $gameStor->getValues(['year','month','refresh','maxrefresh','maxonline']);
$log = getRawFileLogRecent(__dir__.'/logs/'.UniqueConst::$serverID.'/_traffic.txt', 11, 100);
$log = getRawFileLogRecent(__DIR__.'/logs/'.UniqueConst::$serverID.'/_traffic.txt', 11, 100);
$date = [];
$year = [];
@@ -31,7 +30,7 @@ foreach($log as $i=>$value){
}
$year[] = $admin['year'];
$month[] = $admin['month'];
$date[] = date('Y-m-d H:i:s');
$date[] = TimeUtil::now();
if ($admin['maxrefresh'] == 0) {
$admin['maxrefresh'] = 1;
+7 -26
View File
@@ -8,16 +8,13 @@ $session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("설문조사", 1);
$isVoteAdmin = in_array('vote', $session->acl[DB::prefix()]??[]);
$isVoteAdmin |= $session->userGrade >= 5;
$query = "select no,vote from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$me = MYDB_fetch_array($result);
$me = $db->queryFirstRow('SELECT no,vote from general where owner=%i', $userID);
$admin = $gameStor->getValues(['develcost','voteopen','vote_title','vote','votecomment']);
$vote_title = $admin['vote_title']??'-';
@@ -84,13 +81,8 @@ echo "
</tr>
";
$query = "select no from general where vote>0 and npc<2";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$voteCount = MYDB_num_rows($result);
$query = "select no from general where npc<2";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$allCount = MYDB_num_rows($result);
$voteCount = $db->queryFirstField('SELECT count(no) FROM general WHERE vote>0 AND npc<2');
$allCount = $db->queryFirstField('SELECT count(no) FROM general WHERE npc<2');
$percentage = round($voteCount / $allCount * 100, 1);
@@ -106,9 +98,7 @@ for ($i=1; $i < $voteTypeCount; $i++) {
<input type=radio name=sel value={$i}>
";
} elseif ($admin['voteopen'] >= 1 || $isVoteAdmin) {
$query = "select no from general where vote='{$i}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$vCount = MYDB_num_rows($result);
$vCount = $db->queryFirstField('SELECT count(no) FROM general WHERE vote=%i', $i);
$per = @round($vCount / $voteCount * 100, 1);
echo "{$vCount} 표 ({$per}%)";
@@ -268,9 +258,7 @@ if ($admin['voteopen'] >= 1 || $isVoteAdmin) {
}
if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
$query = "select no from general where nation=0 and npc<2";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$memCount = MYDB_num_rows($result);
$memCount = $db->queryFirstField('SELECT count(no) FROM general WHERE nation=0 AND npc <2');
if ($memCount == 0) {
$memCount = 1;
}
@@ -312,15 +300,8 @@ if ($admin['voteopen'] >= 2 || $isVoteAdmin) {
</tr>
";
$query = "select nation,color,name,gennum from nation order by gennum desc";
$nationResult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$nationcount = MYDB_num_rows($nationResult);
for ($i=0; $i < $nationcount; $i++) {
$nation = MYDB_fetch_array($nationResult);
$query = "select no from general where nation='{$nation['nation']}' and npc<2";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$memCount = MYDB_num_rows($result);
foreach($db->query('SELECT nation,color,name,gennum from nation order by gennum desc') as $i=>$nation){
$memCount = $db->queryFirstField('SELECT count(no) FROM general WHERE nation=%i AND npc<2', $nation['nation']);
+10 -28
View File
@@ -7,8 +7,6 @@ include "func.php";
$msg = Util::getReq('msg');
$msg2 = Util::getReq('msg2');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
@@ -29,17 +27,12 @@ if ($con >= 2) {
exit();
}
$query = "select no from auction where no1='{$me['no']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$tradeCount = MYDB_num_rows($result);
$query = "select no from auction where no2='{$me['no']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$bidCount = MYDB_num_rows($result);
$tradeCount = $db->queryFirstField('SELECT count(no) FROM auction WHERE no1=%i', $me['no']);
$bidCount = $db->queryFirstField('SELECT count(no) FROM auction where no2=%i', $me['no']);
$btCount = $tradeCount + $bidCount;
if ($session->userGrade >= 5 || ($me['special'] != 30 && $btCount < 1) || ($me['special'] == 30 && $btCount < 3)) {
if ($session->userGrade >= 5) {
$btn = "submit";
} else {
$btn = "hidden";
@@ -95,13 +88,12 @@ $count = MYDB_num_rows($result);
$chk = 0;
for ($i=0; $i < $count; $i++) {
$auction = MYDB_fetch_array($result);
$itemname = GetStuffName($auction['stuff']);
$radio = "";
$alert = "";
$alert2 = "";
if ($auction['no1'] == $me['no']) {
$radio = " disabled";
} elseif ($auction['no2'] > 0 && $auction['amount'] * 2 <= $auction['value'] && $auction['stuff'] == 0) {
} elseif ($auction['no2'] > 0 && $auction['amount'] * 2 <= $auction['value']) {
$radio = " disabled";
$alert = "<font color=red>";
$alert2 = "</font>";
@@ -115,15 +107,13 @@ for ($i=0; $i < $count; $i++) {
}
$pv = round($auction['value'] * 100 / $auction['amount']) / 100 + 0.001;
$pv = substr((string)$pv, 0, 4);
if ($auction['stuff'] != 0) {
$pv = '-';
}
echo "
<tr align=center>
<td>{$auction['no']}</td>
<td><input type=radio name=sel value={$auction['no']}{$radio}></td>
<td>{$auction['name1']}</td>
<td>{$itemname}</td>
<td></td>
<td>{$auction['amount']}</td>
<td> {$auction['cost']}</td>
<td>{$alert} {$auction['value']}{$alert2}</td>
@@ -150,9 +140,7 @@ for ($i=0; $i < $count; $i++) {
<td align=center id=bg1>거래등록</td>
<td colspan=10>
 종료: <input type=text style=color:white;background-color:black; size=2 maxlength=2 name=term value=12>
 물품: <select size=1 name=stuff style=color:white;background-color:black;>
<option style=color:white; value=0></option>
</select>
 물품:
 판매량: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=amount value=1000>
 시작가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=cost value=500>
 즉구가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=topv value=2000>
@@ -193,13 +181,12 @@ $count = MYDB_num_rows($result);
$chk = 0;
for ($i=0; $i < $count; $i++) {
$auction = MYDB_fetch_array($result);
$itemname = GetStuffName($auction['stuff']);
$radio = "";
$alert = "";
$alert2 = "";
if ($auction['no1'] == $me['no']) {
$radio = " disabled";
} elseif ($auction['no2'] > 0 && $auction['amount'] >= $auction['value'] * 2 && $auction['stuff'] == 0) {
} elseif ($auction['no2'] > 0 && $auction['amount'] >= $auction['value'] * 2) {
$radio = " disabled";
$alert = "<font color=red>";
$alert2 = "</font>";
@@ -213,15 +200,12 @@ for ($i=0; $i < $count; $i++) {
}
$pv = round($auction['value'] * 100 / $auction['amount']) / 100 + 0.001;
$pv = substr((string)$pv, 0, 4);
if ($auction['stuff'] != 0) {
$pv = '-';
}
echo "
<tr align=center>
<td>{$auction['no']}</td>
<td><input type=radio name=sel value={$auction['no']}{$radio}></td>
<td>{$auction['name1']}</td>
<td>{$itemname}</td>
<td></td>
<td>{$auction['amount']}</td>
<td> {$auction['cost']}</td>
<td>{$alert} {$auction['value']}{$alert2}</td>
@@ -248,9 +232,7 @@ for ($i=0; $i < $count; $i++) {
<td align=center id=bg1>거래등록</td>
<td colspan=10>
 종료: <input type=text style=color:white;background-color:black; size=2 maxlength=2 name=term value=12>
 물품: <select size=1 name=stuff style=color:white;background-color:black;>
<option style=color:white; value=0></option>
</select>
 물품:
 구입량: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=amount value=1000>
 시작가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=cost value=2000>
 즉구가: <input type=text style=color:white;background-color:black; size=5 maxlength=5 name=topv value=500>
+77 -48
View File
@@ -10,13 +10,36 @@ $v->rule('required', 'gen')
$btn = Util::getReq('btn');
$gen = Util::getReq('gen', 'int', 0);
$type = Util::getReq('type', 'int', 0);
$reqQueryType = Util::getReq('query_type', 'string', null);
if ($type < 0 || $type > 3) {
$type = 0;
// $queryTypeText, $reqArgType(0=>None, 1=>AdditionalColumn, 2=>rankVal, 3=>aux), $comp
$queryMap = [
'turntime' => ['최근턴', 0, function($lhs, $rhs){
return -($lhs['turntime']<=>$rhs['turntime']);
}],
'recwar' => ['최근전투', 1, function($lhs, $rhs){
return -($lhs['recwar']<=>$rhs['recwar']);
}],
'name' => ['장수명', 0, function($lhs, $rhs){
if($lhs['npc'] !== $rhs['npc']){
return $lhs['npc']<=>$rhs['npc'];
}
return $lhs['name']<=>$rhs['name'];
}],
'warnum' => ['전투수', 1, function($lhs, $rhs){
return -($lhs['warnum']<=>$rhs['warnum']);
}]
];
if($reqQueryType === null || !key_exists($reqQueryType, $queryMap)){
$reqQueryType = Util::array_first_key($queryMap);
}
if($reqQueryType === null || !key_exists($reqQueryType, $queryMap)){
$reqQueryType = Util::array_first_key($queryMap);
}
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
@@ -28,14 +51,14 @@ $connect=$db->get();
increaseRefresh("감찰부", 2);
//전투 추진을 위해 갱신
checkTurn();
TurnExecutionHelper::executeAllCommand();
$gameStor->resetCache();
$query = "select nation from general where no='$gen'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$general = MYDB_fetch_array($result);
$query = "select no,nation,level,con,turntime,belong from general where owner='{$userID}'";
$query = "select no,nation,level,con,turntime,belong,permission,penalty from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$me = MYDB_fetch_array($result);
@@ -49,11 +72,14 @@ if ($con >= 2) {
exit();
}
//재야인 경우
$meLevel = $me['level'];
if ($meLevel == 0 || ($meLevel == 1 && $me['belong'] < $nation['secretlimit'])) {
echo "수뇌부가 아니거나 사관년도가 부족합니다.";
exit();
$permission = checkSecretPermission($me);
if($permission < 0){
echo '국가에 소속되어있지 않습니다.';
die();
}
else if ($permission < 1) {
echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.";
die();
}
//잘못된 접근
@@ -65,9 +91,39 @@ if ($btn == '정렬하기') {
$gen = 0;
}
$sel = [];
$sel[$type] = "selected";
[$queryTypeText, $reqArgType, $comp] = $queryMap[$reqQueryType];
if($reqArgType===0){
$generalBasicList = $db->query('SELECT no, name, npc, turntime FROM general');
}
else if($reqArgType===1){
$generalBasicList = $db->query('SELECT no, name, npc, turntime, %b FROM general', $reqQueryType);
}
else if($reqArgType===2){
$generalBasicList = $db->query('SELECT no, name, npc, turntime, value as %b
FROM general LEFT JOIN rank_data
ON general.no = rank_data.general_id
WHERE rank_data.type = %b',
$reqQueryType, $reqQueryType
);
}
else if($reqArgType===3){
$generalBasicList = array_map(function($arr){
$arr['aux'] = Json::decode($arr['aux']);
return $arr;
}, $db->query('SELECT no, name, npc, turntime, aux FROM general'));
}
else{
throw new \sammo\MustNotBeReachedException();
}
usort($generalBasicList, $comp);
if(!$gen){
$gen = $generalBasicList[0]['no'];
}
$showGeneral = General::createGeneralObjFromDB($gen);
?>
<!DOCTYPE html>
<html>
@@ -93,43 +149,16 @@ $sel[$type] = "selected";
<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>
<?php foreach($queryMap as $queryType => [$queryTypeText,]): ?>
<option <?=$queryKey==$reqQueryType?'selected':''?> value='<?=$queryKey?>'><?=$queryTypeText?></option>
<?php endforeach; ?>
</select>
<input type=submit name=btn value='정렬하기'>
대상장수 :
<select name=gen size=1>
<?php
switch ($type) {
default:
case 0: $query = "select no,name,npc from general where nation='{$me['nation']}' order by turntime desc"; break;
case 1: $query = "select no,name,npc from general where nation='{$me['nation']}' order by recwar desc"; break;
case 2: $query = "select no,name,npc from general where nation='{$me['nation']}' order by npc,binary(name)"; break;
case 3: $query = "select no,name,npc from general where nation='{$me['nation']}' order by warnum desc"; break;
}
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gencount = MYDB_num_rows($result);
$npc = 0;
for ($i=0; $i < $gencount; $i++) {
$general = MYDB_fetch_array($result);
// 선택 없으면 맨 처음 장수
if ($gen == 0) {
$gen = $general['no'];
}
if($gen == $general['no']){
$npc = $general['npc'];
}
if ($gen == $general['no']) {
echo "
<option selected value={$general['no']}>{$general['name']}</option>";
} else {
echo "
<option value={$general['no']}>{$general['name']}</option>";
}
}
?>
<?php foreach($generalBasicList as $general): ?>
<option <?=$gen==$general['no']?'selected':''?>><?=$general['name']?> (<?=$general['turntime']?>)</option>
<?php endforeach; ?>
</select>
<input type=submit name=btn value='조회하기'>
</form>
@@ -142,7 +171,7 @@ for ($i=0; $i < $gencount; $i++) {
</tr>
<tr>
<td valign=top>
<?php generalInfo($gen); generalInfo2($gen); ?>
<?php generalInfo($showGeneral); generalInfo2($showGeneral); ?>
</td>
<td valign=top>
<?=getGeneralHistoryAll($gen)?>
@@ -160,7 +189,7 @@ for ($i=0; $i < $gencount; $i++) {
<?=getBatResRecent($gen, 24)?>
</td>
</tr>
<?php if($npc > 1 || $meLevel >= 5): ?>
<?php if($npc > 1 || $permission >= 2): ?>
<tr>
<td align=center id=bg1><font color=orange size=3>개인 기록</font></td>
<td align=center id=bg1><font color=orange size=3>&nbsp;</font></td>
+26 -32
View File
@@ -12,17 +12,20 @@ $gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("베팅장", 1);
checkTurn();
TurnExecutionHelper::executeAllCommand();
$query = "select no,tournament,con,turntime,bet0+bet1+bet2+bet3+bet4+bet5+bet6+bet7+bet8+bet9+bet10+bet11+bet12+bet13+bet14+bet15 as bet from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$me = MYDB_fetch_array($result);
$generalID = $session->generalID;
$admin = $gameStor->getValues(['tournament','phase','tnmt_type','develcost','bet0','bet1','bet2','bet3','bet4','bet5','bet6','bet7','bet8','bet9','bet10','bet11','bet12','bet13','bet14','bet15']);
$admin['bet'] =
$admin['bet0'] + $admin['bet1'] + $admin['bet2'] + $admin['bet3'] + $admin['bet4'] +
$admin['bet5'] + $admin['bet6'] + $admin['bet7'] + $admin['bet8'] + $admin['bet9'] +
$admin['bet10'] + $admin['bet11'] + $admin['bet12'] + $admin['bet13'] + $admin['bet14'] + $admin['bet15'];
//NOTE: general_id만 빼기 귀찮음.
$myBet = array_splice($db->queryFirstList('SELECT * FROM betting WHERE general_id = %i', $generalID), -16);
$globalBet = array_splice($db->queryFirstList('SELECT * FROM betting WHERE general_id = 0'), -16);
$me = $db->queryFirstRow('SELECT no,tournament,con,turntime from general where owner=%i', $userID);
$myBetTotal = array_sum($myBet);
$globalBetTotal = array_sum($globalBet);
$admin = $gameStor->getValues(['tournament','phase','tnmt_type','develcost']);
$con = checkLimit($me['con']);
if ($con >= 2) {
@@ -32,10 +35,10 @@ if ($con >= 2) {
switch ($admin['tnmt_type']) {
default: throw new \RuntimeException('Invalid tnmt_type');break;
case 0: $tnmt_type = "<font color=cyan>전력전</font>"; $tp = "tot"; $tp2 = "종합"; $tp3 = "total"; break;
case 1: $tnmt_type = "<font color=cyan>통솔전</font>"; $tp = "ldr"; $tp2 = "통솔"; $tp3 = "leader"; break;
case 2: $tnmt_type = "<font color=cyan>일기토</font>"; $tp = "pwr"; $tp2 = "무력"; $tp3 = "power"; break;
case 3: $tnmt_type = "<font color=cyan>설전</font>"; $tp = "itl"; $tp2 = "지력"; $tp3 = "intel"; break;
case 0: $tnmt_type = "<font color=cyan>전력전</font>"; $tp = "total"; $tp2 = "종합"; $tp3 = "total"; break;
case 1: $tnmt_type = "<font color=cyan>통솔전</font>"; $tp = "leadership"; $tp2 = "통솔"; $tp3 = "leadership"; break;
case 2: $tnmt_type = "<font color=cyan>일기토</font>"; $tp = "strength"; $tp2 = "무력"; $tp3 = "strength"; break;
case 3: $tnmt_type = "<font color=cyan>설전</font>"; $tp = "intel"; $tp2 = "지력"; $tp3 = "intel"; break;
}
$str1 = getTournament($admin['tournament']);
@@ -62,6 +65,7 @@ if($str3){
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printJS('js/betting.js')?>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
@@ -74,7 +78,7 @@ if($str3){
<table align=center width=1120 class='tb_layout bg0'>
<tr><td colspan=16><input type=button value='갱신' onclick='location.reload()'></td></tr>
<tr><td colspan=16 align=center><font color=white size=6><?=$tnmt_type?> (<?=$str1.$str2.$str3?>)</font></td></tr>
<tr><td height=50 colspan=16 align=center id=bg2><font color=limegreen size=6>16 상황</font><br><font color=orange size=3>(전체 금액 : <?=$admin['bet']?> / 내 투자 금액 : <?=$me['bet']?>)</font></td></tr>
<tr><td height=50 colspan=16 align=center id=bg2><font color=limegreen size=6>16 상황</font><br><font color=orange size=3>(전체 금액 : <?=$globalBetTotal?> / 내 투자 금액 : <?=$myBetTotal?>)</font></td></tr>
</table>
<table align=center width=1120 class='mimic_flex bg0' style='border:solid 1px gray;font-size:10px;'>
<tr align=center><td height=10 colspan=16></td></tr>
@@ -282,23 +286,16 @@ for ($i=0; $i < 16; $i++) {
echo "<td width=70>{$gen[$i]}</td>";
}
$query = "select bet0,bet1,bet2,bet3,bet4,bet5,bet6,bet7,bet8,bet9,bet10,bet11,bet12,bet13,bet14,bet15 from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$me = MYDB_fetch_array($result);
$myBet = [];
$bet = [];
$gold = [];
for ($i=0; $i < 16; $i++) {
$myBet[$i] = $me["bet{$i}"];
}
for ($i=0; $i < 16; $i++) {
if($admin["bet{$i}"] == 0){
if($globalBet[$i] == 0){
$bet[$i] = "";
}
else{
$bet[$i] = round($admin['bet'] / $admin["bet{$i}"], 2);
$bet[$i] = round($globalBetTotal / $globalBet[$i], 2);
}
}
@@ -352,13 +349,12 @@ echo "
if ($admin['tournament'] == 6) {
echo "
<form method=post action=c_betting.php>
<tr align=center>";
for ($i=0; $i < 16; $i++) {
echo "
<td>
<select size=1 name=gold{$i} style=color:white;background-color:black;>
<select size=1 id='target_{$i}' style=color:white;background-color:black;>
<option style=color:white; value=10>금10</option>
<option style=color:white; value=20>금20</option>
<option style=color:white; value=50>금50</option>
@@ -376,12 +372,10 @@ if ($admin['tournament'] == 6) {
for ($i=0; $i < 16; $i++) {
echo "
<td><input type=submit name=btn{$i} value=베팅! style=width:100%;color:white;background-color:black;></td>";
<td><input type=button class='submitBtn' data-target='{$i}' value=베팅! style=width:100%;color:white;background-color:black;></td>";
}
echo "
</tr>
</form>";
echo "</tr>";
}
?>
@@ -401,8 +395,8 @@ if ($admin['tournament'] == 6) {
$type1 = array("전 력 전", "통 솔 전", "일 기 토", "설 전");
$type2 = array("종합", "통솔", "무력", "지력");
$type3 = array("tt", "tl", "tp", "ti");
$type4 = array("total", "leader", "power", "intel");
$type3 = array("tt", "tl", "ts", "ti");
$type4 = array("total", "leadership", "strength", "intel");
for ($i=0; $i < 4; $i++) {
$grp = $i;
@@ -412,7 +406,7 @@ for ($i=0; $i < 4; $i++) {
<tr><td colspan=9 align=center style=color:white;background-color:black;><font size=4>{$type1[$i]}</font></td></tr>
<tr id=bg1><td align=center></td><td align=center>장수</td><td align=center>{$type2[$i]}</td><td align=center></td><td align=center></td><td align=center></td><td align=center></td><td align=center></td><td align=center></td></tr>";
$query = "select npc,name,leader,power,intel,leader+power+intel as total,{$type3[$i]}p as prize,{$type3[$i]}w+{$type3[$i]}d+{$type3[$i]}l as game,{$type3[$i]}w as win,{$type3[$i]}d as draw,{$type3[$i]}l as lose,{$type3[$i]}g as gl from general order by gl desc, game desc, win desc, draw desc, lose, no limit 0,30";
$query = "select npc,name,leadership,strength,intel,leadership+strength+intel as total,{$type3[$i]}p as prize,{$type3[$i]}w+{$type3[$i]}d+{$type3[$i]}l as game,{$type3[$i]}w as win,{$type3[$i]}d as draw,{$type3[$i]}l as lose,{$type3[$i]}g as gl from general order by gl desc, game desc, win desc, draw desc, lose, no limit 0,30";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
for ($k=1; $k <= 30; $k++) {
$general = MYDB_fetch_array($result);
-82
View File
@@ -1,82 +0,0 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$connect=$db->get();
increaseRefresh("기밀실", 1);
$query = "select no,nation,level from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
if($me['level'] < 5) {
echo "수뇌부가 아닙니다.";
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title><?=UniqueConst::$serverName?>: 기밀실</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::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>
<div style='width:1000px;margin:auto'>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td> <br><?=backButton()?></td></tr>
<form name=form1 method=post action=c_chiefboard.php>
<tr><td align=center>
제목 <input type=textarea maxlength=50 name=title style=color:white;background-color:black;width:830px;>
</td>
</tr>
<tr><td>
<textarea name=msg style=color:white;background-color:black;width:998px;height:200px;></textarea><br>
<input type=submit value=저장하기>
<input type=hidden name=num value=-1>
</td></tr>
</form>
</table>
<br>
<?php
$nation = getNation($me['nation']);
//20개 메세지
$index = $nation['coreindex'];
for($i=0; $i < 20; $i++) {
$who = "coreboard{$index}_who";
$query = "select name,picture,imgsvr from general where no='$nation[$who]'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
if($nation["coreboard{$index}"] != '') { msgprint($nation["coreboard{$index}"], $general['name'], $general['picture'], $general['imgsvr'], $nation["coreboard{$index}_when"], $index, 1); }
$index--;
if($index < 0) { $index = 19; }
}
?>
<table width=1000 class='tb_layout bg0'>
<tr><td><?=backButton()?></td></tr>
<tr><td><?=banner()?></td></tr>
</table>
</div>
</body>
</html>
+80 -167
View File
@@ -6,73 +6,7 @@ include "func.php";
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("사령부", 1);
$query = "select no,nation,level,con,turntime,belong from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$query = "select secretlimit from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nation = MYDB_fetch_array($result);
$con = checkLimit($me['con']);
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
if($me['level'] == 0 || ($me['level'] == 1 && $me['belong'] < $nation['secretlimit'])) {
echo "수뇌부가 아니거나 사관년도가 부족합니다.";
exit();
}
if($me['level'] >= 5) { $btn = "submit"; $btn2 = "button"; }
else { $btn = "hidden"; $btn2 = "hidden"; }
$date = date('Y-m-d H:i:s');
// 명령 목록
$admin = $gameStor->getValues(['year','month','turnterm']);
$query = "
select nation,level,
l12turn0,l12turn1,l12turn2,l12turn3,l12turn4,l12turn5,l12turn6,l12turn7,l12turn8,l12turn9,l12turn10,l12turn11,
l11turn0,l11turn1,l11turn2,l11turn3,l11turn4,l11turn5,l11turn6,l11turn7,l11turn8,l11turn9,l11turn10,l11turn11,
l10turn0,l10turn1,l10turn2,l10turn3,l10turn4,l10turn5,l10turn6,l10turn7,l10turn8,l10turn9,l10turn10,l10turn11,
l9turn0, l9turn1, l9turn2, l9turn3, l9turn4, l9turn5, l9turn6, l9turn7, l9turn8, l9turn9, l9turn10, l9turn11,
l8turn0, l8turn1, l8turn2, l8turn3, l8turn4, l8turn5, l8turn6, l8turn7, l8turn8, l8turn9, l8turn10, l8turn11,
l7turn0, l7turn1, l7turn2, l7turn3, l7turn4, l7turn5, l7turn6, l7turn7, l7turn8, l7turn9, l7turn10, l7turn11,
l6turn0, l6turn1, l6turn2, l6turn3, l6turn4, l6turn5, l6turn6, l6turn7, l6turn8, l6turn9, l6turn10, l6turn11,
l5turn0, l5turn1, l5turn2, l5turn3, l5turn4, l5turn5, l5turn6, l5turn7, l5turn8, l5turn9, l5turn10, l5turn11
from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nation = MYDB_fetch_array($result);
$lv = getNationChiefLevel($nation['level']);
$turn = [];
for($i=12; $i >= $lv; $i--) {
$turn[$i] = getCoreTurn($nation, $i);
$query = "select name,turntime,npc from general where level={$i} and nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gen[$i] = MYDB_fetch_array($result)??[
'npc'=>0,
'name'=>'',
'turntime'=>''
];
}
for($i= $lv - 1; $i>=5; $i--){
$gen[$i] = [
'npc'=>0,
'name'=>'',
'turntime'=>''
];
}
$generalObj = General::createGeneralObjFromDB($session->generalID);
?>
<!DOCTYPE html>
<html>
@@ -83,116 +17,95 @@ for($i= $lv - 1; $i>=5; $i--){
<title><?=UniqueConst::$serverName?>: 사령부</title>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('../e_lib/jquery.redirect.js')?>
<?=WebUtil::printJS('../e_lib/moment.min.js')?>
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printJS('js/chiefCenter.js')?>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<?=WebUtil::printCSS('css/chiefCenter.css')?>
<script type="text/javascript">
function turn(type) {
if(type == 0) location.replace('turn_push_core.php');
else if(type == 1) location.replace('turn_pop_core.php');
}
var maxChiefTurn = <?=GameConst::$maxChiefTurn?>;
</script>
</head>
<body>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td> <input type=button value='갱신' onclick=location.replace('b_chiefcenter.php')><br><?=backButton()?></td></tr>
</table>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td colspan=10 align=center bgcolor=skyblue>수뇌부 일정</td></tr>
<tr><td colspan=10 align=center>
<?php
$year = $admin['year'];
$month = $admin['month'];
$date = substr(date('Y-m-d H:i:s'), 14);
$totaldate = [];
$turntime = [];
$turndate = [];
for($i=12; $i >= $lv; $i--) {
$totaldate[$i] = $gen[$i]['turntime'];
$turntime[$i] = substr($gen[$i]['turntime'], 14);
}
//FIXME: 각 칸을 div로 놓으면 네개씩 출력하는 삽질이 필요없다.
for($k=0; $k < 2; $k++) {
$l4 = 12 - $k; $l3 = 10 - $k; $l2 = 8 - $k; $l1 = 6 - $k;
if ($gen[$l4]['npc'] >= 2) { $gen[$l4]['name'] = "<font color=cyan>".($gen[$l4]['name']??'')."</font>"; }
elseif($gen[$l4]['npc'] == 1) { $gen[$l4]['name'] = "<font color=skyblue>".($gen[$l4]['name']??'')."</font>"; }
if ($gen[$l3]['npc'] >= 2) { $gen[$l3]['name'] = "<font color=cyan>".($gen[$l3]['name']??'')."</font>"; }
elseif($gen[$l3]['npc'] == 1) { $gen[$l3]['name'] = "<font color=skyblue>".($gen[$l3]['name']??'')."</font>"; }
if ($gen[$l2]['npc'] >= 2) { $gen[$l2]['name'] = "<font color=cyan>".($gen[$l2]['name']??'')."</font>"; }
elseif($gen[$l2]['npc'] == 1) { $gen[$l2]['name'] = "<font color=skyblue>".($gen[$l2]['name']??'')."</font>"; }
if ($gen[$l1]['npc'] >= 2) { $gen[$l1]['name'] = "<font color=cyan>".($gen[$l1]['name']??'')."</font>"; }
elseif($gen[$l1]['npc'] == 1) { $gen[$l1]['name'] = "<font color=skyblue>".($gen[$l1]['name']??'')."</font>"; }
echo "
<tr>
<td align=center id=bg1>.</td>
<td colspan=2 align=center id=bg1><b>".getLevel($l4, $nation['level'])." : ".($gen[$l4]['name']??'')."</b></td>
<td colspan=2 align=center id=bg1><b>".getLevel($l3, $nation['level'])." : ".($gen[$l3]['name']??'')."</b></td>
<td colspan=2 align=center id=bg1><b>".getLevel($l2, $nation['level'])." : ".($gen[$l2]['name']??'')."</b></td>
<td colspan=2 align=center id=bg1><b>".getLevel($l1, $nation['level'])." : ".($gen[$l1]['name']??'')."</b></td>
<td align=center id=bg1>.</td>
</tr>
";
for($i=0; $i < 12; $i++) {
$turndate[$l4] = substr($totaldate[$l4]??'', 11, 5);
$turndate[$l3] = substr($totaldate[$l3]??'', 11, 5);
$turndate[$l2] = substr($totaldate[$l2]??'', 11, 5);
$turndate[$l1] = substr($totaldate[$l1]??'', 11, 5);
$j = $i + 1;
$td4 = $turndate[$l4]??"-";
$td3 = $turndate[$l3]??"-";
$td2 = $turndate[$l2]??"-";
$td1 = $turndate[$l1]??"-";
$tn4 = $turn[$l4][$i]??"-";
$tn3 = $turn[$l3][$i]??"-";
$tn2 = $turn[$l2][$i]??"-";
$tn1 = $turn[$l1][$i]??"-";
echo "
<tr>
<td width=20 align=center id=bg0><b>$j</b></td>
<td width=43 align=center bgcolor=black><b>$td4</b></td>
<td width=192 align=center height=24 style=table-layout:fixed; id=bg2>$tn4</td>
<td width=43 align=center bgcolor=black><b>$td3</b></td>
<td width=192 align=center height=24 style=table-layout:fixed; id=bg2>$tn3</td>
<td width=43 align=center bgcolor=black><b>$td2</b></td>
<td width=192 align=center height=24 style=table-layout:fixed; id=bg2>$tn2</td>
<td width=43 align=center bgcolor=black><b>$td1</b></td>
<td width=192 align=center height=24 style=table-layout:fixed; id=bg2>$tn1</td>
<td width=20 align=center id=bg0><b>$j</b></td>
</tr>
";
if($totaldate[$l4]??'') { $totaldate[$l4] = addTurn($totaldate[$l4], $admin['turnterm']); }
if($totaldate[$l3]??'') { $totaldate[$l3] = addTurn($totaldate[$l3], $admin['turnterm']); }
if($totaldate[$l2]??'') { $totaldate[$l2] = addTurn($totaldate[$l2], $admin['turnterm']); }
if($totaldate[$l1]??'') { $totaldate[$l1] = addTurn($totaldate[$l1], $admin['turnterm']); }
}
if($k == 0) {
echo "<form action=processing.php method=post><tr><td colspan=5 align=right>";
echo CoreTurnTable();
echo "</td><td colspan=5>
<input type={$btn2} style=background-color:".GameConst::$basecolor2.";color:white;width:58px;font-size:13px; value='미루기▼' onclick='turn(0)'>
<input type={$btn2} style=background-color:".GameConst::$basecolor2.";color:white;width:58px;font-size:13px; value='▲당기기' onclick='turn(1)'>
<br>";
CoreCommandTable();
echo "<input type={$btn} style=background-color:".GameConst::$basecolor2.";color:white;width:55px;font-size:13px; value='실 행'></td></tr></form>";
}
}
?>
</table>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=backButton()?></td></tr>
<tr><td><?=banner()?></td></tr>
</table>
<div id='container' class='tb_layout bg0' style='width:1000px;margin:auto;border:solid 1px #888888;'>
<div class='tb_layout bg0'> <button type='button' id='reloadTable'>갱신</button><br>
<?=backButton()?></div>
<div style='background-color:skyblue;text-align:center;'>수뇌부 일정</div>
<div class="chiefSubTable" style='height:<?=22*(GameConst::$maxChiefTurn+1)?>px;'
><div class='chiefTurnIdxPanel'
><div class='bg1 chiefTurnIdx'>.</div
<?php foreach(range(1, 12) as $idx):?>
><div class='bg0 chiefTurnIdx'><?=$idx?></div
<?php endforeach; ?>
></div
<?php foreach([12, 10, 8, 6] as $chiefIdx): ?>
><div class='bg2 chiefPlate' style='flex-grow:1;' id='chief_<?=$chiefIdx?>'
><div class='bg1 chiefNamePlate'><span class='chiefLevelText'>-</span> : <span class='chiefName'>&nbsp;</span></div
<?php foreach(range(1, GameConst::$maxChiefTurn) as $turnIdx): ?>
><div class='chiefTurnBox turn<?=$turnIdx?>'
><div class='chiefTurnTime'>&nbsp;</div
><div class='chiefTurnPad'><span class='chiefTurnText'>&nbsp;</span></div
></div
<?php endforeach; ?>
></div
<?php endforeach; ?>
><div class='chiefTurnIdxPanel tail'
><div class='bg1 chiefTurnIdx'>.</div
<?php foreach(range(1, GameConst::$maxChiefTurn) as $idx):?>
><div class='bg0 chiefTurnIdx'><?=$idx?></div
<?php endforeach; ?>
></div
></div
><div id='controlPlate' style='display:flex;flex-flow:row wrap;justify-content:center;'
><div style='width:400px;text-align:right;'
><?=chiefTurnTable()
?></div
><div style='width:400px;display: flex;justify-content: center;flex-direction: column;'
><div
><input type='button' id='turnPush' style='visibility:hidden;background-color:<?=GameConst::$basecolor2?>;color:white;font-size:13px;' value='미루기▼'
><input type='button' id='turnPull' style='visibility:hidden;background-color:<?=GameConst::$basecolor2?>;color:white;font-size:13px;' value='▲당기기'
></div
><div
><?=chiefCommandTable($generalObj)
?><input type='button' id='setCommand' style='visibility:hidden;background-color:<?=GameConst::$basecolor2?>;color:white;font-size:13px;' value='실 행'
></div
></div
></div
><div class="chiefSubTable" style='height:<?=22*(GameConst::$maxChiefTurn+1)?>px;'
><div class='chiefTurnIdxPanel'
><div class='bg1 chiefTurnIdx'>.</div
<?php foreach(range(1, GameConst::$maxChiefTurn) as $idx):?>
><div class='bg0 chiefTurnIdx'><?=$idx?></div
<?php endforeach; ?>
></div
<?php foreach([11, 9, 7, 5] as $chiefIdx): ?>
><div class='bg2 chiefPlate' style='flex-grow:1;' id='chief_<?=$chiefIdx?>'
><div class='bg1 chiefNamePlate'><span class='chiefLevelText'>-</span> : <span class='chiefName'>&nbsp;</span></div
<?php foreach(range(1, GameConst::$maxChiefTurn) as $turnIdx): ?>
><div class='chiefTurnBox turn<?=$turnIdx?>'
><div class='chiefTurnTime'>&nbsp;</div
><div class='chiefTurnPad'><span class='chiefTurnText'>&nbsp;</span></div
></div
<?php endforeach; ?>
></div
<?php endforeach; ?>
><div class='chiefTurnIdxPanel tail'
><div class='bg1 chiefTurnIdx'>.</div
<?php foreach(range(1, 12) as $idx):?>
><div class='bg0 chiefTurnIdx'><?=$idx?></div
<?php endforeach; ?>
></div
></div
><div
><?=backButton()
?><?=banner()
?></div>
</div>
</body>
</html>
+100 -74
View File
@@ -6,8 +6,6 @@ include "func.php";
$citylist = Util::getReq('citylist', 'int');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
@@ -37,8 +35,12 @@ $templates = new \League\Plates\Engine('templates');
<meta name="viewport" content="width=1024" />
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('../e_lib/select2/select2.full.min.js')?>
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printJS('js/currentCity.js')?>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../e_lib/select2/select2.min.css')?>
<?=WebUtil::printCSS('../e_lib/select2/select2-bootstrap4.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<style>
@@ -65,8 +67,9 @@ $templates = new \League\Plates\Engine('templates');
<table align=center width=1000 class='tb_layout bg0'>
<tr>
<td width=998>
<form name=cityselect method=get>도시선택 :
<select name=citylist size=1 style=color:white;background-color:black;width:798px;>
<form name=cityselect method=get>
<div style='text-align:center;'>도시선택 :
<select id="citySelector" name=citylist size=1 style='display:inline-block;min-width:400px;'>
<?php
if(!$citylist){
$citylist = $me['city'];
@@ -81,11 +84,11 @@ if($me['level'] == 0) {
echo "
<option value={$city['city']}";
if($city['city'] == $citylist) { echo " selected"; $valid = 1; }
echo ">==================================================".StringUtil::padString($city['name'], 4, '_')."";
echo ">【".StringUtil::padString($city['name'], 4, '_')."";
if($city['nation'] == 0) echo "공백지";
elseif($me['nation'] == $city['nation']) echo "본국==";
else echo "타국==";
echo "============================================</option>";
elseif($me['nation'] == $city['nation']) echo "본국";
else echo "타국";
echo "</option>";
} else {
// 아국 도시들 선택
$query = "select city,name,nation from city where nation='{$me['nation']}'";
@@ -97,11 +100,11 @@ if($me['level'] == 0) {
echo "
<option value={$city['city']}";
if($city['city'] == $citylist) { echo " selected"; $valid = 1; }
echo ">==================================================".StringUtil::padString($city['name'], 4, '_')."";
echo ">【".StringUtil::padString($city['name'], 4, '_')."";
if($city['nation'] == 0) echo "공백지";
elseif($me['nation'] == $city['nation']) echo "본국==";
else echo "타국==";
echo "============================================</option>";
elseif($me['nation'] == $city['nation']) echo "본국";
else echo "타국";
echo "</option>";
}
// 아국 장수가 있는 타국 도시들 선택
@@ -114,11 +117,11 @@ if($me['level'] == 0) {
echo "
<option value={$city['city']}";
if($city['city'] == $citylist) { echo " selected"; $valid = 1; }
echo ">==================================================".StringUtil::padString($city['name'], 4, '_')."";
echo ">【".StringUtil::padString($city['name'], 4, '_')."";
if($city['nation'] == 0) echo "공백지";
elseif($me['nation'] == $city['nation']) echo "본국==";
else echo "타국==";
echo "============================================</option>";
elseif($me['nation'] == $city['nation']) echo "본국";
else echo "타국";
echo "</option>";
}
}
@@ -130,13 +133,6 @@ if($myNation['level'] > 0) {
if($rawSpy == ''){
$spyCities = [];
}
else if(strpos($rawSpy, '|') !== false || is_numeric($rawSpy)){
//TODO: 0.8 버전 이후에는 삭제할 것. 이후 버전은 json으로 변경됨.
$spyCities = array_map(function($val){
$val = intval($val);
return intdiv($val, 10);
}, 'intval',explode('|', $myNation['spy']));
}
else{
$spyCities = array_keys(Json::decode($rawSpy));
}
@@ -146,19 +142,18 @@ if($myNation['level'] > 0) {
foreach ($db->query('SELECT city,name,nation FROM city WHERE city in %li', $spyCities) as $city) {
echo "<option value={$city['city']}";
if($city['city'] == $citylist) { echo " selected"; $valid = 1; }
echo ">==================================================".StringUtil::padString($city['name'], 4, '_')."";
echo ">【".StringUtil::padString($city['name'], 4, '_')."";
if($city['nation'] == 0) echo "공백지";
elseif($me['nation'] == $city['nation']) echo "본국==";
else echo "타국==";
echo "============================================</option>";
elseif($me['nation'] == $city['nation']) echo "본국";
else echo "타국";
echo "</option>";
}
}
}
echo "
</select>
<input type=submit value='도 시 선 택'>
</select></div>
<p align=center>명령 화면에서 도시를 클릭하셔도 됩니다.</p>
</form>
</td>
@@ -177,19 +172,48 @@ if($valid == 0 && $userGrade < 5) {
$city = $db->queryFirstRow('SELECT * FROM city WHERE city=%i', $citylist);
$cityNation = getNationStaticInfo($city['nation']);
//태수, 군사, 시중
$gen1 = $db->queryFirstRow('SELECT `name`, npc FROM general WHERE `no`=%i', $city['gen1']);
$gen2 = $db->queryFirstRow('SELECT `name`, npc FROM general WHERE `no`=%i', $city['gen2']);
$gen3 = $db->queryFirstRow('SELECT `name`, npc FROM general WHERE `no`=%i', $city['gen3']);
//태수, 군사, 종사
$officer = [
4=>['name'=>'-', 'npc'=>0],
3=>['name'=>'-', 'npc'=>0],
2=>['name'=>'-', 'npc'=>0]
];
$officerQuery = [];
if($city['officer4']){ $officerQuery[] = $city['officer4']; }
if($city['officer3']){ $officerQuery[] = $city['officer3']; }
if($city['officer2']){ $officerQuery[] = $city['officer2']; }
if($officerQuery){
foreach($db->query('SELECT `name`, npc, `level` FROM general WHERE `no` IN %li', $city['officer4']) as $officerInfo){
$officer[$officerInfo['level']] = $officerInfo;
}
}
if($city['trade'] == 0) {
if($city['trade'] === null) {
$city['trade'] = "- ";
}
$query = "select npc,mode,no,picture,imgsvr,name,injury,leader,power,intel,level,nation,crewtype,crew,train,atmos,term,turn0,turn1,turn2,turn3,turn4,turn5 from general where city='{$city['city']}' order by dedication desc"; // 장수 목록
$query = "select npc,defence_train,no,picture,imgsvr,name,injury,leadership,strength,intel,level,nation,crewtype,crew,train,atmos from general where city='{$city['city']}' order by dedication desc"; // 장수 목록
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($genresult);
$generals = $db->query(
'SELECT npc,defence_train,no,picture,imgsvr,name,injury,leadership,strength,intel,level,nation,crewtype,crew,train,atmos from general where city=%i order by name',
$city['city']
);
$generalTurnList = [];
foreach($db->queryAllLists(
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
array_column($generals, 'no')
) as [$generalID, $turnIdx, $brief]
){
if(!key_exists($generalID, $generalTurnList)){
$generalTurnList[$generalID] = [];
}
$generalTurnList[$generalID][$turnIdx] = $brief;
}
$nationname = [];
$nationlevel = [];
foreach(getAllNationStaticInfo() as $nation){
@@ -224,16 +248,16 @@ for($j=0; $j < $gencount; $j++) {
$name = $general['name'];
$nameText = formatName($name, $general['npc']);
$leadership = $general['leader'];
$power = $general['power'];
$leadership = $general['leadership'];
$strength = $general['strength'];
$intel = $general['intel'];
$leadershipText = formatWounded($leadership, $general['injury']);
$powerText = formatWounded($power, $general['injury']);
$strengthText = formatWounded($strength, $general['injury']);
$intelText = formatWounded($intel, $general['injury']);
$level = $general['level'];
$levelText = getLevel($general['level']);
$levelText = getLevelText($general['level']);
if($general['level'] == 12) {
$leadershipBonus = $nationInfo['level'] * 2;
@@ -245,8 +269,8 @@ for($j=0; $j < $gencount; $j++) {
$leadershipBonusText = formatLeadershipBonus($leadershipBonus);
if($ourGeneral){
$defenceMode = $general['mode'];
$defenceModeText = formatDefenceMode($defenceMode);
$defenceTrain = $general['defence_train'];
$defenceTrainText = formatDefenceTrain($defenceTrain);
$crewType = $general['crewtype'];
$crewTypeText = GameUnitConst::byId($crewType)->name;
$crew = $general['crew'];
@@ -254,8 +278,8 @@ for($j=0; $j < $gencount; $j++) {
$atmos = $general['atmos'];
}
else{
$defenceMode = 0;
$defenceModeText = '';
$defenceTrain = 0;
$defenceTrainText = '';
$crewType = 0;
$crewTypeText = '';
$crew = $general['crew'];
@@ -268,7 +292,8 @@ for($j=0; $j < $gencount; $j++) {
if($ourGeneral && !$isNPC){
$turnText = [];
foreach(getTurn($general, 1) as $turnRawIdx=>$turn){
$generalObj = new General($general, null, null, null, false);
foreach($generalTurnList[$generalObj->getID()] as $turnRawIdx=>$turn){
$turnIdx = $turnRawIdx+1;
$turnText[] = "{$turnIdx} : $turn";
}
@@ -280,6 +305,7 @@ for($j=0; $j < $gencount; $j++) {
$generalsFormat[] = [
'ourGeneral'=>$ourGeneral,
'iconPath'=>GetImageURL($general['imgsvr']).'/'.$general['picture'],
'isNPC'=>$isNPC,
'wounded'=>$wounded,
'name'=>$name,
@@ -290,12 +316,12 @@ for($j=0; $j < $gencount; $j++) {
'leadershipBonusText'=>$leadershipBonusText,
'level'=>$level,
'levelText'=>$levelText,
'power'=>$power,
'powerText'=>$powerText,
'strength'=>$strength,
'strengthText'=>$strengthText,
'intel'=>$intel,
'intelText'=>$intelText,
'defenceMode'=>$defenceMode,
'defenceModeText'=>$defenceModeText,
'defenceTrain'=>$defenceTrain,
'defenceTrainText'=>$defenceTrainText,
'crewType'=>$crewType,
'crewTypeText'=>$crewTypeText,
'crew'=>$crew,
@@ -348,33 +374,33 @@ foreach($generalsFormat as $general){
}
$armedGenTotal += 1;
if($general['train'] >= 90 && $general['atmos'] >= 90){
$minTrain = min($general['train'], $general['atmos']);
if($minTrain >= 90){
$crew90 += $general['crew'];
$gen90 += 1;
}
$chkDef = false;
if($general['train'] >= 80 && $general['atmos'] >= 80){
if($minTrain >= 80){
$crew80 += $general['crew'];
$gen80 += 1;
if($general['defenceMode'] == 2){
$crewDef += $general['crew'];
$genDef += 1;
$chkDef = true;
}
}
if($general['train'] >= 60 && $general['atmos'] >= 60){
if($minTrain >= 60){
$crew60 += $general['crew'];
$gen60 += 1;
if($general['defenceMode'] == 1 && !$chkDef){
$crewDef += $general['crew'];
$genDef += 1;
$chkDef = true;
}
}
if($minTrain >= $general['defenceTrain']){
$crewDef += $general['crew'];
$genDef += 1;
$chkDef = true;
}
}
?>
@@ -390,31 +416,31 @@ foreach($generalsFormat as $general){
</tr>
<tr>
<td align=center width=48 class=bg1>주민</td>
<td align=center width=112><?=$city['pop']?>/<?=$city['pop2']?></td>
<td align=center width=112><?=$city['pop']?>/<?=$city['pop_max']?></td>
<td align=center width=48 class=bg1>농업</td>
<td align=center width=108><?=$city['agri']?>/<?=$city['agri2']?></td>
<td align=center width=108><?=$city['agri']?>/<?=$city['agri_max']?></td>
<td align=center width=48 class=bg1>상업</td>
<td align=center width=108><?=$city['comm']?>/<?=$city['comm2']?></td>
<td align=center width=108><?=$city['comm']?>/<?=$city['comm_max']?></td>
<td align=center width=48 class=bg1>치안</td>
<td align=center width=108><?=$city['secu']?>/<?=$city['secu2']?></td>
<td align=center width=108><?=$city['secu']?>/<?=$city['secu_max']?></td>
<td align=center width=48 class=bg1>수비</td>
<td align=center width=108><?=$city['def']?>/<?=$city['def2']?></td>
<td align=center width=108><?=$city['def']?>/<?=$city['def_max']?></td>
<td align=center width=48 class=bg1>성벽</td>
<td align=center width=108><?=$city['wall']?>/<?=$city['wall2']?></td>
<td align=center width=108><?=$city['wall']?>/<?=$city['wall_max']?></td>
</tr>
<tr>
<td align=center class=bg1>민심</td>
<td align=center><?=$city['rate']?></td>
<td align=center><?=round($city['trust'], 1)?></td>
<td align=center class=bg1>시세</td>
<td align=center><?=$city['trade']?>%</td>
<td align=center class=bg1>인구</td>
<td align=center><?=round($city['pop']/$city['pop2']*100, 2)?>%</td>
<td align=center><?=round($city['pop']/$city['pop_max']*100, 2)?>%</td>
<td align=center class=bg1>태수</td>
<td align=center><?=$gen1['name']??'-'?></td>
<td align=center><?=$officer[4]['name']?></td>
<td align=center class=bg1>군사</td>
<td align=center><?=$gen2['name']??'-'?></td>
<td align=center class=bg1>시중</td>
<td align=center><?=$gen3['name']??'-'?></td>
<td align=center><?=$officer[3]['name']?></td>
<td align=center class=bg1>종사</td>
<td align=center><?=$officer[2]['name']?></td>
</tr>
<tr>
<td align=center class=bg1>도시명</td>
+88 -146
View File
@@ -13,13 +13,10 @@ $connect=$db->get();
increaseRefresh("내무부", 1);
$query = "select no,nation,level,con,turntime,belong from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$me = MYDB_fetch_array($result);
$me = $db->queryFirstRow('SELECT no, nation, level, con, turntime, belong, permission, penalty FROM general WHERE owner=%i', $userID);
$query = "select secretlimit from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$nation = MYDB_fetch_array($result);
$nationID = $me['nation'];
$nation = $db->queryFirstRow('SELECT nation,level,name,color,type,gold,rice,bill,rate,scout,war,secretlimit,msg,scoutmsg,capital FROM nation WHERE nation = %i', $nationID);
$con = checkLimit($me['con']);
if ($con >= 2) {
@@ -27,9 +24,14 @@ if ($con >= 2) {
exit();
}
if ($me['level'] == 0 || ($me['level'] == 1 && $me['belong'] < $nation['secretlimit'])) {
echo "수뇌부가 아니거나 사관년도가 부족합니다.";
exit();
$permission = checkSecretPermission($me);
if($permission < 0){
echo '국가에 소속되어있지 않습니다.';
die();
}
else if ($permission < 1) {
echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.";
die();
}
if ($me['level'] >= 5) {
@@ -49,12 +51,15 @@ if ($me['level'] >= 5) {
<meta name="viewport" content="width=1024" />
<title><?=UniqueConst::$serverName?>: 내무부</title>
<script>
var editable = <?=($me['level']>=5?'true':'false')?>;
var editable = <?=(($me['level']>=5||$permission==4)?'true':'false')?>;
var nationMsg = <?=Json::encode($nation['msg']??'')?>;
var scoutmsg = <?=Json::encode($nation['scoutmsg']??'')?>;
</script>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('../e_lib/summernote/summernote-bs4.min.js')?>
<?=WebUtil::printJS('../e_lib/summernote/lang/summernote-ko-KR.js')?>
<?=WebUtil::printJS('../e_lib/summernote/plugin/image-sammo/summernote-image-flip.js')?>
<?=WebUtil::printJS('../d_shared/common_path.js')?>
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printJS('js/dipcenter.js')?>
@@ -81,155 +86,92 @@ var editable = <?=($me['level']>=5?'true':'false')?>;
<td width=80 align=center class=bg1>상태</td>
<td width=60 align=center class=bg1>기간</td>
<td width=100 align=center class=bg1> </td>
<td align=center class=bg1> </td>
</tr>
<?php
$admin = $gameStor->getValues(['year','month']);
$query = "select nation,name,color,power,gennum from nation order by power desc";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$nationcount = MYDB_num_rows($result);
for ($i=0; $i < $nationcount; $i++) {
$nation = MYDB_fetch_array($result);
$cityCntList = Util::convertPairArrayToDict($db->queryAllLists('SELECT nation, count(city) FROM city GROUP BY nation'));
$dipStateList = Util::convertArrayToDict($db->query('SELECT you,state,term FROM diplomacy WHERE me = %i', $nationID), 'you');
// 아국표시
if ($nation['nation'] == $me['nation']) {
//속령수
$query = "select city from city where nation='{$nation['nation']}'";
$result2 = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$citycount = MYDB_num_rows($result2);
echo "
<tr>
<td align=center style=color:".newColor($nation['color']).";background-color:{$nation['color']};>{$nation['name']}</td>
<td align=center>{$nation['power']}</td>
<td align=center>{$nation['gennum']}</td>
<td align=center>$citycount</td>
<td align=center>-</td>
<td align=center>-</td>
<td align=center>-</td>
<td align=left style=font-size:7px;>-</td>
</tr>";
continue;
}
$query = "select state,term,fixed,reserved,showing from diplomacy where me='{$me['nation']}' and you='{$nation['nation']}'";
$result2 = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$dip = MYDB_fetch_array($result2);
$query = "select reserved,showing from diplomacy where you='{$me['nation']}' and me='{$nation['nation']}'";
$result2 = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$dip2 = MYDB_fetch_array($result2);
foreach(getAllNationStaticInfo() as $staticNation):
//속령수
$query = "select city from city where nation='{$nation['nation']}'";
$result2 = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$citycount = MYDB_num_rows($result2);
switch ($dip['state']) {
case 0: $state = "<font color=red>교 전</font>"; break;
case 1: $state = "<font color=magenta>선포중</font>"; break;
case 2: $state = "통 상"; break;
case 3: $state = "<font color=cyan>통합수락중</font>"; break;
case 4: $state = "<font color=cyan>통합제의중</font>"; break;
case 5: $state = "<font color=cyan>합병수락중</font>"; break;
case 6: $state = "<font color=cyan>합병제의중</font>"; break;
case 7: $state = "<font color=green>불가침</font>"; break;
}
$staticNationID = $staticNation['nation'];
$cityCnt = $cityCntList[$staticNation['nation']];
$term = $admin['year'] * 12 + $admin['month'] + $dip['term'];
$year = intdiv($term, 12);
$month = $term % 12;
$dipStateText = '-';
$dipTermText = '-';
$dipEndDateText = '-';
if($staticNationID !== $nationID){
$diplomacyState = $dipStateList[$staticNationID];
if ($month == 0) {
$month = 12;
$year--;
}
$dipStateText = [
0 => "<font color=red>교 전</font>",
1 => "<font color=magenta>선포중</font>",
2 => "통 상",
3 => "<font color=cyan>통합수락중</font>",
4 => "<font color=cyan>통합제의중</font>",
5 => "<font color=cyan>합병수락중</font>",
6 => "<font color=cyan>합병제의중</font>",
7 => "<font color=green>불가침</font>",
][$diplomacyState['state']];
$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($diplomacyState['term']){
$dipEndMonth = $admin['month'] + $diplomacyState['term'] - 1;
$dipEndYear = $admin['year'] + intdiv($dipEndMonth, 12);
$dipEndMonth = $dipEndMonth % 12 + 1;
$dipTermText = $diplomacyState['term'].'개월';
$dipEndDateText = "{$dipEndYear}{$dipEndMonth}";
}
}
if ($dip['showing'] >= $date) {
if ($dip['reserved'] != "") {
$note .= "<font color=skyblue>아국측 제의</font>: ".$dip['reserved'];
if ($dip2['reserved'] != "") {
$note .= "<br>";
}
}
}
if ($dip2['showing'] >= $date) {
if ($dip2['reserved'] != "") {
$note .= "<font color=limegreen>상대측 제의</font>: ".$dip2['reserved'];
}
}
if ($note == "") {
$note = "&nbsp;";
}
?>
echo "
<tr>
<td align=center style=color:".newColor($nation['color']).";background-color:{$nation['color']};>{$nation['name']}</td>
<td align=center>{$nation['power']}</td>
<td align=center>{$nation['gennum']}</td>
<td align=center>$citycount</td>
<td align=center>$state</td>";
if ($dip['term'] != 0) {
echo"
<td align=center>{$dip['term']} 개월</td>
<td align=center>{$year} {$month}</td>";
} else {
echo"
<td align=center>-</td>
<td align=center>-</td>";
}
echo "
<td align=left style=font-size:7px;>{$note}</td>
</tr>";
}
echo "
<tr>
<td class='center' style='color:<?=newColor($staticNation['color'])?>;background-color:<?=$staticNation['color']?>'><?=$staticNation['name']?></td>
<td class='center'><?=$staticNation['power']?></td>
<td class='center'><?=$staticNation['gennum']?></td>
<td class='center'><?=$cityCnt?></td>
<td class='center'><?=$dipStateText?></td>
<td class='center'><?=$dipTermText?></td>
<td class='center'><?=$dipEndDateText?></td>
</tr>
<?php endforeach; ?>
</table>
";
$query = "select nation,name,color,type,msg,gold,rice,bill,rate,scout,war,scoutmsg,secretlimit from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$nation = MYDB_fetch_array($result);
<?php
// 수입 연산
$cityList = $db->query('SELECT * FROM city WHERE nation=%i', $nationID);
$dedicationList = $db->query('SELECT dedication FROM general WHERE nation=%i AND npc!=5', $nationID);
$admin = $gameStor->getValues(['gold_rate','rice_rate']);
// 금 수지
$deadIncome = getDeadIncome($nation['nation'], $nation['type'], $admin['gold_rate']);
$goldIncome = getGoldIncome($nation['nation'], $nation['level'], $nation['rate'], $nation['capital'], $nation['type'], $cityList);
$warIncome = getWarGoldIncome($nation['type'], $cityList);
$totalGoldIncome = $goldIncome + $warIncome;
$goldincomeList = getGoldIncome($nation['nation'], $nation['rate'], $admin['gold_rate'], $nation['type']);
$goldincome = $goldincomeList[0] + $goldincomeList[1] + $deadIncome;
$goldoutcome = getGoldOutcome($nation['nation'], $nation['bill']);
$riceincomeList = getRiceIncome($nation['nation'], $nation['rate'], $admin['rice_rate'], $nation['type']);
$riceincome = $riceincomeList[0] + $riceincomeList[1];
$riceoutcome = getRiceOutcome($nation['nation'], $nation['bill']);
$riceIncome = getRiceIncome($nation['nation'], $nation['level'], $nation['rate'], $nation['capital'], $nation['type'], $cityList);
$wallIncome = getWallIncome($nation['nation'], $nation['level'], $nation['rate'], $nation['capital'], $nation['type'], $cityList);
$totalRiceIncome = $riceIncome + $wallIncome;
$outcome = getOutcome($nation['bill'], $dedicationList);
$budgetgold = $nation['gold'] + $totalGoldIncome - $outcome;
$budgetrice = $nation['rice'] + $totalRiceIncome - $outcome;
$budgetgolddiff = $totalGoldIncome - $outcome;
$budgetricediff = $totalRiceIncome - $outcome;
$budgetgold = $nation['gold'] + $goldincome - $goldoutcome + $deadIncome;
$budgetrice = $nation['rice'] + $riceincome - $riceoutcome;
$budgetgolddiff = $goldincome - $goldoutcome + $deadIncome;
$budgetricediff = $riceincome - $riceoutcome;
if ($budgetgolddiff > 0) {
$budgetgolddiff = "+{$budgetgolddiff}";
$budgetgolddiff = '+'.number_format($budgetgolddiff);
} else {
$budgetgolddiff = "$budgetgolddiff";
$budgetgolddiff = number_format($budgetgolddiff);
}
if ($budgetricediff > 0) {
$budgetricediff = "+{$budgetricediff}";
$budgetricediff = '+'.number_format($budgetricediff);
} else {
$budgetricediff = "$budgetricediff";
$budgetricediff = number_format($budgetricediff);
}
?>
<table align=center width=1000 class='tb_layout bg0'>
<table width=1000 class='tb_layout bg0' style='margin:auto;'>
<form name=form1 method=post action=c_dipcenter.php>
<tr><td colspan=2 height=10></td></tr>
<tr><td colspan=2 align=center bgcolor=orange> &amp; 임관 권유 메시지</td></tr>
@@ -242,7 +184,7 @@ if ($budgetricediff > 0) {
<input type='submit' class='submit' name=btn value='국가방침 수정'><input type='button' class='cancel_edit' value='취소'>
</div>
</div>
<textarea type=hidden class='input_form' style='display:none;' name=msg><?=$nation['msg']?></textarea>
<input type='hidden' class='input_form' name='msg' data-global='nationMsg'>
<div class='edit_form viewer'></div>
</div></td></tr>
<tr><td colspan='2'><div id='scoutMsgForm'>
@@ -255,7 +197,7 @@ if ($budgetricediff > 0) {
</div>
</div>
<div style='border-bottom:solid gray 0.5px;'>870px x 200px를 넘어서는 내용은 표시되지 않습니다.</div>
<textarea type=hidden class='input_form' style='display:none;' name=scoutmsg><?=$nation['scoutmsg']?></textarea>
<input type='hidden' class='input_form' name='scoutmsg' data-global='scoutmsg'>
<div style="width:870px;margin-left:auto;">
<div class='edit_form viewer'></div>
</div>
@@ -272,39 +214,39 @@ if ($budgetricediff > 0) {
</tr>
<tr>
<td width=248 align=right class=bg1> &nbsp;&nbsp;&nbsp;</td>
<td width=248 align=center><?=$nation['gold']?></td>
<td width=248 align=center><?=number_format($nation['gold'])?></td>
<td width=248 align=right class=bg1> &nbsp;&nbsp;&nbsp;</td>
<td width=248 align=center><?=$nation['rice']?></td>
<td width=248 align=center><?=number_format($nation['rice'])?></td>
</tr>
<tr>
<td align=right class=bg1>단기수입&nbsp;&nbsp;&nbsp;</td>
<td align=center>+<?=$deadIncome?></td>
<td align=center>+<?=number_format($warIncome)?></td>
<td align=right class=bg1>둔전수입&nbsp;&nbsp;&nbsp;</td>
<td align=center>+<?=$riceincomeList[1]?></td>
<td align=center>+<?=number_format($wallIncome)?></td>
</tr>
<tr>
<td align=right class=bg1> &nbsp;&nbsp;&nbsp;</td>
<td align=center>+<?=$goldincomeList[0]?></td>
<td align=center>+<?=number_format($goldIncome)?></td>
<td align=right class=bg1> &nbsp;&nbsp;&nbsp;</td>
<td align=center>+<?=$riceincomeList[0]?></td>
<td align=center>+<?=number_format($riceIncome)?></td>
</tr>
<tr>
<td align=right class=bg1>수입 / 지출&nbsp;&nbsp;&nbsp;</td>
<td align=center>+<?=$goldincome?> / -<?=$goldoutcome?></td>
<td align=center>+<?=number_format($totalGoldIncome)?> / -<?=number_format($outcome)?></td>
<td align=right class=bg1>수입 / 지출&nbsp;&nbsp;&nbsp;</td>
<td align=center>+<?=$riceincome?> / -<?=$riceoutcome?></td>
<td align=center>+<?=number_format($totalRiceIncome)?> / -<?=number_format($outcome)?></td>
</tr>
<tr>
<td align=right class=bg1>국고 예산&nbsp;&nbsp;&nbsp;</td>
<td align=center><?=$budgetgold?> (<?=$budgetgolddiff?>)</td>
<td align=center><?=number_format($budgetgold)?> (<?=$budgetgolddiff?>)</td>
<td align=right class=bg1>병량 예산&nbsp;&nbsp;&nbsp;</td>
<td align=center><?=$budgetrice?> (<?=$budgetricediff?>)</td>
<td align=center><?=number_format($budgetrice)?> (<?=$budgetricediff?>)</td>
</tr>
<tr>
<td align=right class=bg1>세율 (5 ~ 30%)&nbsp;&nbsp;&nbsp;</td>
<td align=center><input type=text <?=$read?> name=rate style=text-align:right;color:white;background-color:black; size=3 maxlength=3 value=<?=$nation['rate']?>>% <input type=<?=$btn?> name=btn value=세율></td>
<td align=right class=bg1>봉급 지급 (20 ~ 200%)&nbsp;&nbsp;&nbsp;</td>
<td align=center><input type=text <?=$read?> name=bill style=text-align:right;color:white;background-color:black; size=3 maxlength=3 value=<?=$nation['bill']?>>% <input type=<?=$btn?> name=btn value=지급></td>
<td align=right class=bg1>봉급 지급 (20 ~ 200%)&nbsp;&nbsp;&nbsp;</td>
<td align=center><input type=text <?=$read?> name=bill style=text-align:right;color:white;background-color:black; size=3 maxlength=3 value=<?=$nation['bill']?>>% <input type=<?=$btn?> name=btn value=지급></td>
</tr>
<tr>
<td align=right class=bg1>기밀 권한 (1 ~ 99)&nbsp;&nbsp;&nbsp;</td>
+1 -3
View File
@@ -32,9 +32,7 @@ $cityStr = "";
for($i=0; $i < $nationcount; $i++) {
$nation = MYDB_fetch_array($result);
$query = "select city from city where nation='{$nation['nation']}'";
$cityresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$citycount = MYDB_num_rows($cityresult);
$citycount = $db->queryFirstField('SELECT count(city) FROM city WHERE nation=%i', $nation['nation']);
$nationnum[] = $nation['nation'];
+52 -50
View File
@@ -19,13 +19,11 @@ $connect=$db->get();
increaseRefresh("암행부", 1);
$query = "select no,nation,level,con,turntime,belong from general where owner='{$userID}'";
$query = "select no,nation,level,con,turntime,belong,permission,penalty from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$me = MYDB_fetch_array($result);
$query = "select level,secretlimit from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$nation = MYDB_fetch_array($result);
$nationLevel = $db->queryFirstField('SELECT level FROM nation WHERE nation=%i', $me['nation']);
$con = checkLimit($me['con']);
if ($con >= 2) {
@@ -33,16 +31,20 @@ if ($con >= 2) {
exit();
}
if ($me['level'] == 0 || ($me['level'] == 1 && $me['belong'] < $nation['secretlimit'])) {
echo "수뇌부가 아니거나 사관년도가 부족합니다.";
exit();
$permission = checkSecretPermission($me);
if($permission < 0){
echo '국가에 소속되어있지 않습니다.';
die();
}
else if ($permission < 1) {
echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.";
die();
}
$sel = [];
$sel[$type] = "selected";
$templates = new \League\Plates\Engine('templates');
?>
<!DOCTYPE html>
<html>
@@ -81,7 +83,7 @@ $templates = new \League\Plates\Engine('templates');
</table>
<?php
$troopName = [];
foreach($db->queryAllLists('SELECT troop, name FROM troop WHERE nation=%i', $me['nation']) as [$troopID, $tName]){
foreach($db->queryAllLists('SELECT troop_leader, name FROM troop WHERE nation=%i', $me['nation']) as [$troopID, $tName]){
$troopName[$troopID] = $tName;
}
@@ -94,22 +96,38 @@ switch ($type) {
case 5: $orderSQL = "order by crew desc"; break;
case 6: $orderSQL = "order by killturn"; break;
case 7: $orderSQL = "order by turntime"; break;
case 8: $orderSQL = "order by troop desc"; break;
case 8: $orderSQL = "order by troop_leader desc"; break;
}
$generals = $db->query('SELECT npc,mode,no,level,troop,city,injury,leader,power,intel,experience,name,gold,rice,crewtype,crew,train,atmos,killturn,turntime,term,turn0,turn1,turn2,turn3,turn4 from general WHERE nation = %i %l', $me['nation'], $orderSQL);
$generals = $db->query(
'SELECT npc,defence_train,no,level,troop,city,injury,leadership,strength,intel,experience,name,gold,rice,crewtype,crew,train,atmos,killturn,turntime,nation from general WHERE nation = %i %l',
$me['nation'],
$orderSQL
);
$generalTurnList = [];
foreach($db->queryAllLists(
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
array_column($generals, 'no')
) as [$generalID, $turnIdx, $brief]
){
if(!key_exists($generalID, $generalTurnList)){
$generalTurnList[$generalID] = [];
}
$generalTurnList[$generalID][$turnIdx] = $brief;
}
$genCntEff = 0;
foreach ($generals as &$general) {
$general['cityText'] = CityConst::byID($general['city'])->name;
$general['troopText'] = $troopName[$general['troop']]??'-';
if ($general['level'] == 12) {
$lbonus = $nation['level'] * 2;
} elseif ($general['level'] >= 5) {
$lbonus = $nation['level'];
} else {
$lbonus = 0;
if($general['npc'] != 5){
$genCntEff += 1;
}
$lbonus = calcLeadershipBonus($general['level'], $nationLevel);
if ($lbonus > 0) {
$lbonusText = "<font color=cyan>+{$lbonus}</font>";
} else {
@@ -119,51 +137,35 @@ foreach ($generals as &$general) {
$general['lbonusText'] = $lbonusText;
if ($general['injury'] > 0) {
$leader = intdiv($general['leader'] * (100 - $general['injury']), 100);
$power = intdiv($general['power'] * (100 - $general['injury']), 100);
$leadership = intdiv($general['leadership'] * (100 - $general['injury']), 100);
$strength = intdiv($general['strength'] * (100 - $general['injury']), 100);
$intel = intdiv($general['intel'] * (100 - $general['injury']), 100);
$leader = "<font color=red>{$leader}</font>{$lbonusText}";
$power = "<font color=red>{$power}</font>";
$leadership = "<font color=red>{$leadership}</font>{$lbonusText}";
$strength = "<font color=red>{$strength}</font>";
$intel = "<font color=red>{$intel}</font>";
} else {
$leader = "{$general['leader']}{$lbonusText}";
$power = "{$general['power']}";
$leadership = "{$general['leadership']}{$lbonusText}";
$strength = "{$general['strength']}";
$intel = "{$general['intel']}";
}
$general['leaderText'] = $leader;
$general['powerText'] = $power;
$general['leadershipText'] = $leadership;
$general['strengthText'] = $strength;
$general['intelText'] = $intel;
$general['expLevelText'] = getExpLevel($general['experience']);
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'];
}
//TODO: npc 코드를 일원화
$general['nameText'] = $name;
$general['nameText'] = getColoredName($general['name'], $general['npc']);
switch ($general['mode']) {
case 0: $mode = "×"; break;
case 1: $mode = ""; break;
case 2: $mode = ""; break;
}
$general['modeText'] = $mode;
$general['modeText'] = formatDefenceTrain($general['defence_train']);
$general['crewtypeText'] = GameUnitConst::byId($general['crewtype'])->name??'-';
if ($general['npc'] < 2) {
$turntext = [];
$turn = getTurn($general, 1, 0);
for ($i=0; $i < 5; $i++) {
$turn[$i] = StringUtil::subStringForWidth($turn[$i], 0, 41);
$k = $i+1;
$turntext[] = "&nbsp;$k : $turn[$i]";
foreach($generalTurnList[$general['no']] as $turnRawIdx=>$turn){
$turn = StringUtil::subStringForWidth($turn, 0, 41);
$turnIdx = $turnRawIdx+1;
$turntext[] = "&nbsp;$turnIdx : $turn";
}
$general['turntext'] = join("<br>\n", $turntext);
}
@@ -220,11 +222,11 @@ foreach($generals as $general){
<tr>
<td class='bg1'>전체 </td><td><?=number_format($totalGold)?></td>
<td class='bg1'>전체 </td><td><?=number_format($totalRice)?></td>
<td class='bg1'>평균 </td><td><?=number_format($totalGold/$genCnt, 2)?></td>
<td class='bg1'>평균 </td><td><?=number_format($totalRice/$genCnt, 2)?></td>
<td class='bg1'>평균 </td><td><?=number_format($totalGold/$genCntEff, 2)?></td>
<td class='bg1'>평균 </td><td><?=number_format($totalRice/$genCntEff, 2)?></td>
</tr>
<tr>
<td class='bg1'>전체 병력/장수</td><td><?=number_format($crewTotal)?>/<?=number_format($genCnt)?></td>
<td class='bg1'>전체 병력/장수</td><td><?=number_format($crewTotal)?>/<?=number_format($genCntEff)?></td>
<td class='bg1'>훈사 90 병력/장수</td><td><?=number_format($crew90)?>/<?=number_format($gen90)?></td>
<td class='bg1'>훈사 80 병력/장수</td><td><?=number_format($crew80)?>/<?=number_format($gen80)?></td>
<td class='bg1'>훈사 60 병력/장수</td><td><?=number_format($crew60)?>/<?=number_format($gen60)?></td>
+135 -75
View File
@@ -12,7 +12,7 @@ $connect=$db->get();
increaseRefresh("인사부", 1);
//훼섭 추방을 위해 갱신
checkTurn();
TurnExecutionHelper::executeAllCommand();
$query = "select no,nation,level from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
@@ -35,8 +35,12 @@ if($meLevel == 0) {
<title><?=UniqueConst::$serverName?>: 인사부</title>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('../e_lib/select2/select2.full.min.js')?>
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printJS('js/bossInfo.js')?>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../e_lib/select2/select2.min.css')?>
<?=WebUtil::printCSS('../e_lib/select2/select2-bootstrap4.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<script type="text/javascript">
@@ -45,6 +49,51 @@ function out() {
}
</script>
<?php
$query = "select nation,name,level,color,l12set,l11set,l10set,l9set,l8set,l7set,l6set,l5set from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nation = MYDB_fetch_array($result); //국가정보
$ambassadors = $db->query('SELECT no, name, level, penalty, permission FROM general WHERE permission = \'ambassador\' AND nation = %i', $nation['nation']);
$auditors = $db->query('SELECT no, name, level, penalty, permission FROM general WHERE permission = \'auditor\' AND nation = %i', $nation['nation']);
$candidateAmbassadors = [];
$candidateAuditors = [];
foreach($ambassadors as $ambassador){
$candidateAmbassadors[] = $ambassador;
}
foreach($auditors as $auditor){
$candidateAuditors[] = $auditor;
}
foreach($db->query('SELECT no, name, nation, level, penalty, permission FROM general WHERE nation = %i AND permission = \'normal\' AND level != 12', $nation['nation']) as $candidate){
$maxPermission = checkSecretMaxPermission($candidate);
if($maxPermission == 4){
$candidateAmbassadors[] = $candidate;
}
if($maxPermission >= 3){
$candidateAuditors[] = $candidate;
}
}
?>
<script>
var candidateAmbassadors = <?=Json::encode(array_map(function($value){
return [
'id'=>$value['no'],
'text'=>$value['name'],
"selected"=>($value['permission']!='normal')
];
}, $candidateAmbassadors))?>;
var candidateAuditors = <?=Json::encode(array_map(function($value){
return [
'id'=>$value['no'],
'text'=>$value['name'],
"selected"=>($value['permission']!='normal')
];
}, $candidateAuditors))?>;
</script>
</head>
<body>
@@ -55,10 +104,6 @@ function out() {
<?php
$query = "select nation,name,level,color,l12set,l11set,l10set,l9set,l8set,l7set,l6set,l5set from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nation = MYDB_fetch_array($result); //국가정보
$lv = getNationChiefLevel($nation['level']);
if($meLevel >= 5) { $btn = "submit"; }
else { $btn = "hidden"; }
@@ -71,11 +116,26 @@ for($i=12; $i >= $lv; $i--) {
$level[$levels['level']] = $levels;
}
$query = "select name,picture,killnum from general where nation='{$nation['nation']}' order by killnum desc limit 5"; // 오호장군
$tigerresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "select name,picture,firenum from general where nation='{$nation['nation']}' order by firenum desc limit 7"; // 건안칠자
$eagleresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$tigers = $db->query('SELECT value, name
FROM rank_data LEFT JOIN general ON rank_data.general_id = general.no
WHERE rank_data.nation_id = %i AND rank_data.type = "warnum" AND value > 0 ORDER BY value DESC LIMIT 5',
$nation['nation']
);// 오호장군
$tigerstr = join(', ', array_map(function($arr){
$number = number_format($arr['value']);
return "{$arr['name']}{$number}";
}, $tigers));
$eagles = $db->query('SELECT value, name
FROM rank_data LEFT JOIN general ON rank_data.general_id = general.no
WHERE rank_data.nation_id = %i AND rank_data.type = "firenum" AND value > 0 ORDER BY value DESC LIMIT 7',
$nation['nation']
);// 건안칠자
$eaglestr = join(', ', array_map(function($arr){
$number = number_format($arr['value']);
return "{$arr['name']}{$number}";
}, $eagles));
echo "
<table align=center width=1000 class='tb_layout bg0'>
@@ -91,50 +151,24 @@ for($i=12; $i >= $lv; $i-=2) {
$imageTemp2 = GetImageURL($level[$i2]['imgsvr']??0);
?>
<tr>
<td width=98 align=center id=bg1><font size=4><?=getLevel($i1, $nation['level'])?></font></td>
<td width=98 align=center id=bg1><font size=4><?=getLevelText($i1, $nation['level'])?></font></td>
<td width=64 class='generalIcon' height=64 style='background:no-repeat center url("<?=$imageTemp1?>/<?=$level[$i1]['picture']??'default.jpg'?>");background-size:64px;'></td>
<td width=332><font size=4><?=$level[$i1]['name']??'-'?>(<?=$level[$i1]['belong']??'-'?>년)</font></td>
<td width=98 align=center id=bg1><font size=4><?=getLevel($i2, $nation['level'])?></font></td>
<td width=98 align=center id=bg1><font size=4><?=getLevelText($i2, $nation['level'])?></font></td>
<td width=64 class='generalIcon' height=64 style='background:no-repeat center url("<?=$imageTemp2?>/<?=$level[$i2]['picture']??'default.jpg'?>");background-size:64px;'></td>
<td width=332><font size=4><?=$level[$i2]['name']??'-'?>(<?=$level[$i2]['belong']??'-'?>년)</font></td>
</tr>
<?php
}
echo "
<tr>
<td width=98 align=center id=bg1>오호장군【승전】</td>
<td colspan=5>
";
$tigernum = MYDB_num_rows($tigerresult);
for($i=0; $i < $tigernum; $i++) {
$tiger = MYDB_fetch_array($tigerresult);
if($tiger['killnum'] > 0) {
echo "{$tiger['name']}{$tiger['killnum']}】, ";
}
}
echo "
</td>
?>
<tr>
<td width=98 align=center id=bg1>오호장군【승전】</td>
<td colspan=5><?=$tigerstr?></td>
</tr>
<tr>
<td width=98 align=center id=bg1>건안칠자【계략】</td>
<td colspan=5>
";
$eaglenum = MYDB_num_rows($eagleresult);
for($i=0; $i < $eaglenum; $i++) {
$eagle = MYDB_fetch_array($eagleresult);
if($eagle['firenum'] > 0) {
echo "{$eagle['name']}{$eagle['firenum']}】, ";
}
}
echo "
</td>
<td colspan=5><?=$eaglestr?></td>
</tr>
</table>
<table align=center width=1000 class='tb_layout bg0'>
@@ -144,13 +178,13 @@ echo "
<tr>
<td width=498 align=right id=bg1>대상 장수</td>
<td width=498>
";
<?php
if($meLevel >= 5 && $nation["l{$meLevel}set"] == 0) {
echo "
<select name=outlist size=1 style=color:white;background-color:black;>";
$query = "select no,npc,name,level,leader,power,intel,killturn from general where nation='{$me['nation']}' and level!='12' and no!='{$me['no']}' order by npc,binary(name)";
$query = "select no,npc,name,level,leadership,strength,intel,killturn from general where nation='{$me['nation']}' and level!='12' and no!='{$me['no']}' order by npc,binary(name)";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($result);
@@ -160,7 +194,7 @@ if($meLevel >= 5 && $nation["l{$meLevel}set"] == 0) {
continue;
}
echo "
<option value={$general['no']}>{$general['name']} <small>({$general['leader']}/{$general['power']}/{$general['intel']}, {$general['killturn']})</small></option>";
<option value={$general['no']}>{$general['name']} <small>({$general['leadership']}/{$general['strength']}/{$general['intel']}, {$general['killturn']})</small></option>";
}
echo "
@@ -180,9 +214,9 @@ echo "
<tr><td colspan=4 height=5></td></tr>
<tr><td colspan=4 align=center bgcolor=blue> </td></tr>
<tr>
<td width=98 align=right id=bg1>".getLevel(12, $nation['level'])."</td>
<td width=98 align=right id=bg1>".getLevelText(12, $nation['level'])."</td>
<td width=398>{$general['name']} ".CityConst::byID($general['city'])->name."</td>
<td width=98 align=right id=bg1>".getLevel(11, $nation['level'])."</td>
<td width=98 align=right id=bg1>".getLevelText(11, $nation['level'])."</td>
<form method=post action=c_myBossInfo.php>
<td width=398>
";
@@ -226,17 +260,17 @@ echo "
";
$queries = [];
$queries[10] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
$queries[10] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and strength>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
$queries[9] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and intel>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
$queries[8] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
$queries[8] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and strength>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
$queries[7] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and intel>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
$queries[6] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
$queries[6] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and strength>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
$queries[5] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and intel>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
for($i=10; $i >= $lv; $i--) {
if($i % 2 == 0) { echo "<tr>"; }
echo "
<td width=98 align=right id=bg1>".getLevel($i, $nation['level'])."</td>
<td width=98 align=right id=bg1>".getLevelText($i, $nation['level'])."</td>
<form method=post action=c_myBossInfo.php>
<td width=398>
";
@@ -279,9 +313,35 @@ for($i=10; $i >= $lv; $i--) {
echo "
<tr><td colspan=4> <font color=red>빨간색</font> 현재 임명중인 장수, <font color=orange>노란색</font> 다른 관직에 임명된 장수, 하얀색은 일반 장수를 뜻합니다.</td></tr>
</table>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td colspan=5 height=5></td></tr>
";
if($meLevel == 12):
?>
<table align='center' width='1000' class='tb_layout bg0'>
<tr><td colspan='4' height='5'></td></tr>
<tr><td colspan='4' align='center' bgcolor='purple'> </td></tr>
<tr>
<td width=98 align=right id=bg1>외교권자</td>
<td width=398>
<select id="selectAmbassador" multiple="multiple">
</select>
<button id='changeAmbassador' type='button'>임명</button>
</td>
<td width=98 align=right id=bg1>조언자</td>
<td width=398>
<select id="selectAuditor" multiple="multiple">
</select>
<button id='changeAuditor' type='button'>임명</button>
</td>
</tr>
</table>
<?php
endif;
?>
<table align=center width=1000 id='officer_list' class='tb_layout bg0'>
<tr><td colspan=5 height=5></td></tr>
<?php
if($meLevel >= 5) {
echo "
<tr><td colspan=5 align=center bgcolor=orange> </td></tr>
@@ -292,7 +352,7 @@ if($meLevel >= 5) {
<select name=citylist size=1 style=color:white;background-color:black;>
";
$query = "select city,name,region from city where nation='{$nation['nation']}' and gen1set=0 order by region,level desc,binary(name)"; // 도시 이름 목록
$query = "select city,name,region from city where nation='{$nation['nation']}' and officer4set=0 order by region,level desc,binary(name)"; // 도시 이름 목록
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$citycount = MYDB_num_rows($result);
@@ -318,7 +378,7 @@ if($meLevel >= 5) {
<option value=0>____공석____</option>
";
$query = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
$query = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and strength>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$count = MYDB_num_rows($result);
for($i=0; $i < $count; $i++) {
@@ -346,7 +406,7 @@ if($meLevel >= 5) {
<select name=citylist size=1 style=color:white;background-color:black;>
";
$query = "select city,name,region from city where nation='{$nation['nation']}' and gen2set=0 order by region,level desc,binary(name)"; // 도시 이름 목록
$query = "select city,name,region from city where nation='{$nation['nation']}' and officer3set=0 order by region,level desc,binary(name)"; // 도시 이름 목록
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$citycount = MYDB_num_rows($result);
@@ -395,12 +455,12 @@ if($meLevel >= 5) {
</form>
<form method=post action=c_myBossInfo.php>
<tr>
<td colspan=3 align=right id=bg2> </td>
<td colspan=3 align=right id=bg2> </td>
<td colspan=2>
<select name=citylist size=1 style=color:white;background-color:black;>
";
$query = "select city,name,region from city where nation='{$nation['nation']}' and gen3set=0 order by region, level desc,binary(name)"; // 도시 이름 목록
$query = "select city,name,region from city where nation='{$nation['nation']}' and officer2set=0 order by region, level desc,binary(name)"; // 도시 이름 목록
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$citycount = MYDB_num_rows($result);
@@ -455,13 +515,13 @@ echo "
<td width=158 align=center id=bg1 colspan=2><font size=4> </font></td>
<td width=278 align=center id=bg1><font size=4> (사관) 【현재도시】</font></td>
<td width=278 align=center id=bg1><font size=4> (사관) 【현재도시】</font></td>
<td width=278 align=center id=bg1><font size=4> (사관) 【현재도시】</font></td>
<td width=278 align=center id=bg1><font size=4> (사관) 【현재도시】</font></td>
</tr>
";
$citylevel = getCityLevelList();
$query = "select city,name,gen1,gen2,gen3,level,region,gen1set,gen2set,gen3set from city where nation='{$nation['nation']}' order by region,level desc,binary(name)"; // 도시 이름 목록
$query = "select city,name,officer4,officer3,officer2,level,region,officer4set,officer3set,officer2set from city where nation='{$nation['nation']}' order by region,level desc,binary(name)"; // 도시 이름 목록
$cityresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$citycount = MYDB_num_rows($cityresult);
@@ -469,15 +529,15 @@ $region = 0;
for($j=0; $j < $citycount; $j++) {
$city = MYDB_fetch_array($cityresult);
$query = "select name,belong,city from general where no='{$city['gen1']}'";
$query = "select name,belong,city from general where no='{$city['officer4']}'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gen1 = MYDB_fetch_array($genresult);
$query = "select name,belong,city from general where no='{$city['gen2']}'";
$officer4 = MYDB_fetch_array($genresult);
$query = "select name,belong,city from general where no='{$city['officer3']}'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gen2 = MYDB_fetch_array($genresult);
$query = "select name,belong,city from general where no='{$city['gen3']}'";
$officer3 = MYDB_fetch_array($genresult);
$query = "select name,belong,city from general where no='{$city['officer2']}'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gen3 = MYDB_fetch_array($genresult);
$officer2 = MYDB_fetch_array($genresult);
if($region != $city['region']) {
echo "
@@ -486,19 +546,19 @@ for($j=0; $j < $citycount; $j++) {
$region = $city['region'];
}
$gen1['name'] = $gen1['name']==""?"-":$gen1['name']." ({$gen1['belong']}년) 【".CityConst::byID($gen1['city'])->name."";
$gen2['name'] = $gen2['name']==""?"-":$gen2['name']." ({$gen2['belong']}년) 【".CityConst::byID($gen2['city'])->name."";
$gen3['name'] = $gen3['name']==""?"-":$gen3['name']." ({$gen3['belong']}년) 【".CityConst::byID($gen3['city'])->name."";
if($city['gen1set'] == 1) { $gen1['name'] = "<font color=orange>".$gen1['name']."</font>"; }
if($city['gen2set'] == 1) { $gen2['name'] = "<font color=orange>".$gen2['name']."</font>"; }
if($city['gen3set'] == 1) { $gen3['name'] = "<font color=orange>".$gen3['name']."</font>"; }
$officer4['name'] = $officer4['name']==""?"-":$officer4['name']." ({$officer4['belong']}년) 【".CityConst::byID($officer4['city'])->name."";
$officer3['name'] = $officer3['name']==""?"-":$officer3['name']." ({$officer3['belong']}년) 【".CityConst::byID($officer3['city'])->name."";
$officer2['name'] = $officer2['name']==""?"-":$officer2['name']." ({$officer2['belong']}년) 【".CityConst::byID($officer2['city'])->name."";
if($city['officer4set'] == 1) { $officer4['name'] = "<font color=orange>".$officer4['name']."</font>"; }
if($city['officer3set'] == 1) { $officer3['name'] = "<font color=orange>".$officer3['name']."</font>"; }
if($city['officer2set'] == 1) { $officer2['name'] = "<font color=orange>".$officer2['name']."</font>"; }
echo "
<tr>
<td width=78 align=center style=color:".newColor($nation['color'])."; bgcolor={$nation['color']}><font size=3>{$citylevel[$city['level']]}</font></td>
<td width=78 align=right style=color:".newColor($nation['color'])."; bgcolor={$nation['color']}><font size=3>{$city['name']}&nbsp;&nbsp;</font></td>
<td align=center>{$gen1['name']}</td>
<td align=center>{$gen2['name']}</td>
<td align=center>{$gen3['name']}</td>
<td align=center>{$officer4['name']}</td>
<td align=center>{$officer3['name']}</td>
<td align=center>{$officer2['name']}</td>
</tr>
";
}
+35 -29
View File
@@ -9,8 +9,6 @@ if ($type <= 0 || $type > 12) {
$type = 10;
}
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
@@ -74,19 +72,16 @@ $sel = [$type => "selected"];
</td></tr>
</table>
<?php
$query = "select nation from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$me = MYDB_fetch_array($result);
$nation = getNationStaticInfo($me['nation']); //국가정보
$query = "select *,pop/pop2 as poprate from city where nation='{$me['nation']}'";
$query = "select *,pop/pop_max as poprate from city where nation='{$me['nation']}'";
switch ($type) {
case 1: break;
case 2: $query .= " order by pop desc"; break;
case 3: $query .= " order by poprate desc"; break;
case 4: $query .= " order by rate desc"; break;
case 4: $query .= " order by trust desc"; break;
case 5: $query .= " order by agri desc"; break;
case 6: $query .= " order by comm desc"; break;
case 7: $query .= " order by secu desc"; break;
@@ -107,17 +102,28 @@ for ($j=0; $j < $citycount; $j++) {
if ($city['city'] == $nation['capital']) {
$city['name'] = "<font color=cyan>[{$city['name']}]</font>";
}
$query = "select name from general where no='{$city['gen1']}'"; // 태수
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gen1 = MYDB_fetch_array($genresult);
$query = "select name from general where no='{$city['gen2']}'"; // 군사
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gen2 = MYDB_fetch_array($genresult);
$officerQuery = [];
$officerName = [
2=>'-',
3=>'-',
4=>'-'
];
if ($city['officer4'] > 0) {
$officerQuery[] = $city['officer4'];
}
if ($city['officer3'] > 0) {
$officerQuery[] = $city['officer3'];
}
if ($city['officer2'] > 0) {
$officerQuery[] = $city['officer2'];
}
$query = "select name from general where no='{$city['gen3']}'"; // 시중
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gen3 = MYDB_fetch_array($genresult);
if($officerQuery){
foreach($db->query('SELECT `level`, `name` FROM general WHERE `no` IN %li', $officerQuery) as $genOfficer){
$officerName[$genOfficer['level']] = $genOfficer['name'];
}
}
if ($type == 10 && $city['region'] != $region) {
echo "<br>";
@@ -127,7 +133,7 @@ for ($j=0; $j < $citycount; $j++) {
$level = $city['level'];
}
if ($city['trade'] == 0) {
if ($city['trade'] === null) {
$city['trade'] = "- ";
}
@@ -138,36 +144,36 @@ for ($j=0; $j < $citycount; $j++) {
</tr>
<tr>
<td align=center width=46 id=bg1>주민</td>
<td align=center width=140>{$city['pop']}/{$city['pop2']}</td>
<td align=center width=140>{$city['pop']}/{$city['pop_max']}</td>
<td align=center width=46 id=bg1>농업</td>
<td align=center width=140>{$city['agri']}/{$city['agri2']}</td>
<td align=center width=140>{$city['agri']}/{$city['agri_max']}</td>
<td align=center width=46 id=bg1>상업</td>
<td align=center width=140>{$city['comm']}/{$city['comm2']}</td>
<td align=center width=140>{$city['comm']}/{$city['comm_max']}</td>
<td align=center width=46 id=bg1>치안</td>
<td align=center width=140>{$city['secu']}/{$city['secu2']}</td>
<td align=center width=140>{$city['secu']}/{$city['secu_max']}</td>
<td align=center width=46 id=bg1>수비</td>
<td align=center width=140>{$city['def']}/{$city['def2']}</td>
<td align=center width=140>{$city['def']}/{$city['def_max']}</td>
<td align=center width=46 id=bg1>성벽</td>
<td align=center width=140>{$city['wall']}/{$city['wall2']}</td>
<td align=center width=140>{$city['wall']}/{$city['wall_max']}</td>
</tr>
<tr>
<td align=center id=bg1>민심</td>
<td align=center>{$city['rate']}</td>
<td align=center>".round($city['trust'], 1)."</td>
<td align=center id=bg1>시세</td>
<td align=center>{$city['trade']}%</td>
<td align=center id=bg1>인구</td>
<td align=center>".round($city['pop']/$city['pop2']*100, 2)." %</td>
<td align=center>".round($city['pop']/$city['pop_max']*100, 2)." %</td>
<td align=center id=bg1>태수</td>
<td align=center>";
echo $gen1['name']==''?"-":"{$gen1['name']}";
echo $officerName[4];
echo "</td>
<td align=center id=bg1>군사</td>
<td align=center>";
echo $gen2['name']==''?"-":"{$gen2['name']}";
echo $officerName[3];
echo "</td>
<td align=center id=bg1>시중</td>
<td align=center id=bg1>종사</td>
<td align=center>";
echo $gen3['name']==''?"-":"{$gen3['name']}";
echo $officerName[2];
echo "</td>
</tr>
<tr>
+46 -67
View File
@@ -9,20 +9,16 @@ if($type <= 0 || $type > 15) {
$type = 1;
}
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$connect=$db->get();
$gameStor = KVStorage::getStorage($db, 'game_env');
increaseRefresh("세력장수", 1);
$query = "select no,nation,level from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$me = $db->queryFirstRow('SELECT no,nation,level from general where owner=%i', $userID);
if($me['level'] == 0) {
echo "재야입니다.";
@@ -31,6 +27,14 @@ if($me['level'] == 0) {
$sel = [$type => "selected"];
$ownerNameList = [];
if($gameStor->isunited){
foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){
$ownerNameList[$ownerID] = $ownerName;
}
}
?>
<!DOCTYPE html>
<html>
@@ -76,48 +80,26 @@ $sel = [$type => "selected"];
<?php
$nationLevel = DB::db()->queryFirstField('select level from nation where nation = %i', $me['nation']);
$orderByText = '';//FIXME: 쿼리 재작성
switch($type) {
case 1: $orderByText = " order by level desc"; break;
case 2: $orderByText = " order by dedication desc"; break;
case 3: $orderByText = " order by experience desc"; break;
case 4: $orderByText = " order by leader desc"; break;
case 5: $orderByText = " order by power desc"; break;
case 6: $orderByText = " order by intel desc"; break;
case 7: $orderByText = " order by gold desc"; break;
case 8: $orderByText = " order by rice desc"; break;
case 9: $orderByText = " order by crew desc"; break;
case 10: $orderByText = " order by connect desc"; break;
case 11: $orderByText = " order by personal"; break;
case 12: $orderByText = " order by special desc"; break;
case 13: $orderByText = " order by special2 desc"; break;
case 14: $orderByText = " order by belong desc"; break;
case 15: $orderByText = " order by npc desc"; break;
}
$query =
"select
npc,
special,
special2,
personal,
picture,
imgsvr,
name,
level,
dedication,
experience,
injury,
leader,
power,
intel,
gold,
rice,
belong,
connect,
killturn
from general where nation='{$me['nation']}' ".$orderByText;
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($genresult);
[$orderKey, $orderDesc] = [
1=>['level', true],
2=>['dedication', true],
3=>['experience', true],
4=>['leadership', true],
5=>['strength', true],
6=>['intel', true],
7=>['gold', true],
8=>['rice', true],
9=>['crew', true],
10=>['connect', true],
11=>['personal', true],
12=>['special', true],
13=>['special2', true],
14=>['belong', true],
15=>['npc', true],
][$type];
$generalList = $db->query('SELECT owner,no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leadership,strength,intel,experience,dedication,level,killturn,connect,gold,rice,crew,belong from general where nation = %i order by %b %l', $me['nation'], $orderKey, $orderDesc?'desc':'');
echo"
<table align=center class='tb_layout bg0'>
@@ -138,16 +120,9 @@ echo"
<td width=48 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){
if($general['level'] == 12) {
$lbonus = $nationLevel * 2;
} elseif($general['level'] >= 5) {
$lbonus = $nationLevel;
} else {
$lbonus = 0;
}
$lbonus = calcLeadershipBonus($general['level'], $nationLevel);
if($lbonus > 0) {
$lbonus = "<font color=cyan>+{$lbonus}</font>";
} else {
@@ -155,15 +130,15 @@ for($j=0; $j < $gencount; $j++) {
}
if($general['injury'] > 0) {
$leader = intdiv($general['leader'] * (100 - $general['injury']), 100);
$power = intdiv($general['power'] * (100 - $general['injury']), 100);
$leadership = intdiv($general['leadership'] * (100 - $general['injury']), 100);
$strength = intdiv($general['strength'] * (100 - $general['injury']), 100);
$intel = intdiv($general['intel'] * (100 - $general['injury']), 100);
$leader = "<font color=red>{$leader}</font>{$lbonus}";
$power = "<font color=red>{$power}</font>";
$leadership = "<font color=red>{$leadership}</font>{$lbonus}";
$strength = "<font color=red>{$strength}</font>";
$intel = "<font color=red>{$intel}</font>";
} else {
$leader = "{$general['leader']}{$lbonus}";
$power = "{$general['power']}";
$leadership = "{$general['leadership']}{$lbonus}";
$strength = "{$general['strength']}";
$intel = "{$general['intel']}";
}
@@ -171,22 +146,26 @@ for($j=0; $j < $gencount; $j++) {
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>';
}
$imageTemp = GetImageURL($general['imgsvr']);
echo "
<tr>
<td align=center class='generalIcon' style='background:no-repeat center url(\"{$imageTemp}/{$general['picture']}\");background-size:64px;' height=64></td>
<td align=center>$name</td>
<td align=center>"; echo getLevel($general['level'], $nationLevel); echo "</td>
<td align=center>"; echo getLevelText($general['level'], $nationLevel); echo "</td>
<td align=center>".getDed($general['dedication'])."</td>
<td align=center>".getHonor($general['experience'])."</td>
<td align=center>".getBill($general['dedication'])."</td>
<td align=center>$leader</td>
<td align=center>$power</td>
<td align=center>$leadership</td>
<td align=center>$strength</td>
<td align=center>$intel</td>
<td align=center>{$general['gold']}</td>
<td align=center>{$general['rice']}</td>
<td align=center>".displayCharInfo($general['personal'])."</td>
<td align=center>".displaySpecialInfo($general['special'])." / ".displaySpecialInfo($general['special2'])."</td>
<td align=center>".displaySpecialDomesticInfo($general['special'])." / ".displaySpecialWarInfo($general['special2'])."</td>
<td align=center>{$general['belong']}</td>
<td align=center>{$general['connect']}"; echo "<br>(".getConnect($general['connect']).")</td>
</tr>";
+63 -73
View File
@@ -9,15 +9,12 @@ $userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("세력정보", 1);
$query = "select no,nation,level from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$nationID = $db->queryFirstField('SELECT nation FROM general WHERE owner=%i', $userID);
if($me['level'] == 0) {
if($nationID == 0) {
echo "재야입니다.";
exit();
}
@@ -45,121 +42,114 @@ if($me['level'] == 0) {
</table>
<br>
<?php
$query = "select nation from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$query = "select nation,gennum,power,rate,bill,type,gold,rice,color,name,level,tech,history,capital from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nation = MYDB_fetch_array($result); //국가정보
$nation = $db->queryFirstRow('SELECT nation,gennum,power,rate,bill,type,gold,rice,color,name,level,tech,history,capital FROM nation WHERE nation=%i', $nationID); //국가정보
$cityList = $db->query('SELECT * FROM city WHERE nation=%i', $nationID);
$query = "select city,name,pop,pop2 from city where nation='{$nation['nation']}'"; // 도시 이름 목록
$cityresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$citycount = MYDB_num_rows($cityresult);
$currPop = 0;
$maxPop = 0;
$cityNames = [];
$totalpop = 0;
$maxpop = 0;
$cityname = [];
for($j=0; $j < $citycount; $j++) {
$city = MYDB_fetch_array($cityresult);
if($city['city'] == $nation['capital']) { $cityname[$j] = "<font color=cyan>[{$city['name']}]</font>"; }
else { $cityname[$j] = $city['name']; }
$totalpop += $city['pop'];
$maxpop += $city['pop2'];
foreach($cityList as $city){
$currPop += $city['pop'];
$maxPop += $city['pop_max'];
if($city['city'] == $nation['capital']){
$cityNames[] = "<span style='color:cyan;'>{$city['name']}</span>";
}
else{
$cityNames[] = $city['name'];
}
}
$query = "select sum(crew) as totcrew,sum(leader)*100 as maxcrew from general where nation='{$nation['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
[$currCrew, $maxCrew] = $db->queryFirstList('SELECT sum(crew), sum(leadership)*100 FROM general WHERE nation=%i AND npc != 5', $nation['nation']);
$dedicationList = $db->query('SELECT dedication FROM general WHERE nation=%i AND npc!=5', $nationID);
$admin = $gameStor->getValues(['gold_rate','rice_rate']);
// 금 수지
$deadIncome = getDeadIncome($nation['nation'], $nation['type'], $admin['gold_rate']);
$goldIncome = getGoldIncome($nation['nation'], $nation['level'], $nation['rate'], $nation['capital'], $nation['type'], $cityList);
$warIncome = getWarGoldIncome($nation['type'], $cityList);
$totalGoldIncome = $goldIncome + $warIncome;
$goldincomeList = getGoldIncome($nation['nation'], $nation['rate'], $admin['gold_rate'], $nation['type']);
$goldincome = $goldincomeList[0] + $goldincomeList[1] + $deadIncome;
$goldoutcome = getGoldOutcome($nation['nation'], $nation['bill']);
$riceincomeList = getRiceIncome($nation['nation'], $nation['rate'], $admin['rice_rate'], $nation['type']);
$riceincome = $riceincomeList[0] + $riceincomeList[1];
$riceoutcome = getRiceOutcome($nation['nation'], $nation['bill']);
$riceIncome = getRiceIncome($nation['nation'], $nation['level'], $nation['rate'], $nation['capital'], $nation['type'], $cityList);
$wallIncome = getWallIncome($nation['nation'], $nation['level'], $nation['rate'], $nation['capital'], $nation['type'], $cityList);
$totalRiceIncome = $riceIncome + $wallIncome;
$outcome = getOutcome($nation['bill'], $dedicationList);
$budgetgold = $nation['gold'] + $goldincome - $goldoutcome + $deadIncome;
$budgetrice = $nation['rice'] + $riceincome - $riceoutcome;
$budgetgolddiff = $goldincome - $goldoutcome + $deadIncome;
$budgetricediff = $riceincome - $riceoutcome;
if($budgetgolddiff > 0) { $budgetgolddiff = "+{$budgetgolddiff}"; }
else { $budgetgolddiff = "$budgetgolddiff"; }
if($budgetricediff > 0) { $budgetricediff = "+{$budgetricediff}"; }
else { $budgetricediff = "$budgetricediff"; }
$budgetgold = $nation['gold'] + $totalGoldIncome - $outcome;
$budgetrice = $nation['rice'] + $totalRiceIncome - $outcome;
$budgetgolddiff = $totalGoldIncome - $outcome;
$budgetricediff = $totalRiceIncome - $outcome;
echo "
if ($budgetgolddiff > 0) {
$budgetgolddiff = '+'.number_format($budgetgolddiff);
} else {
$budgetgolddiff = number_format($budgetgolddiff);
}
if ($budgetricediff > 0) {
$budgetricediff = '+'.number_format($budgetricediff);
} else {
$budgetricediff = number_format($budgetricediff);
}
?>
<table align=center width=1000 class='tb_layout bg2'>
<tr>
<td colspan=8 align=center style=color:".newColor($nation['color'])."; bgcolor={$nation['color']}> ";echo $me['nation']==0?" ":"{$nation['name']}";echo " </td>
<td colspan=8 align=center style='color:<?=newColor($nation['color'])?>;background-color:<?=$nation['color']?>'><?=$nation['name']?>】</td>
</tr>
<tr>
<td width=98 align=center id=bg1>총주민</td>
<td width=198 align=center>{$totalpop}/{$maxpop}</td>
<td width=198 align=center><?=number_format($currPop)?>/<?=number_format($maxPop)?></td>
<td width=98 align=center id=bg1>총병사</td>
<td width=198 align=center>{$general['totcrew']}/{$general['maxcrew']}</td>
<td width=198 align=center><?=number_format($currCrew)?>/<?=number_format($maxCrew)?></td>
<td width=98 align=center id=bg1> </td>
<td width=298 align=center colspan=3>{$nation['power']}</td>
<td width=298 align=center colspan=3><?=$nation['power']?></td>
</tr>
<tr>
<td align=center id=bg1> </td>
<td align=center>"; echo $nation['gold']==0?"-":"{$nation['gold']}"; echo "</td>
<td align=center><?=number_format($nation['gold'])?></td>
<td align=center id=bg1> </td>
<td align=center>"; echo $nation['rice']==0?"-":"{$nation['rice']}"; echo "</td>
<td align=center><?=number_format($nation['rice'])?></td>
<td align=center id=bg1> </td>
<td align=center colspan=3>"; echo $me['nation']==0?"해당 없음":"{$nation['rate']} %"; echo "</td>
<td align=center colspan=3><?=$nation['rate']?> %</td>
</td>
</tr>
<tr>
<td align=center id=bg1>세금/단기</td>
<td align=center>+$goldincomeList[0] / +$deadIncome</td>
<td align=center>+<?=number_format($goldIncome)?> / +<?=number_format($warIncome)?></td>
<td align=center id=bg1>세곡/둔전</td>
<td align=center>+$riceincomeList[0] / +$riceincomeList[1]</td>
<td align=center id=bg1>지급</td>
<td align=center colspan=3>"; echo $me['nation']==0?"해당 없음":"{$nation['bill']} %"; echo "</td>
<td align=center>+<?=number_format($riceIncome)?> / +<?=number_format($wallIncome)?></td>
<td align=center id=bg1>지급</td>
<td align=center colspan=3><?=$nation['bill']?> %</td>
</tr>
<tr>
<td align=center id=bg1>수입/지출</td>
<td align=center>+$goldincome / -$goldoutcome</td>
<td align=center>+<?=number_format($totalGoldIncome)?> / -<?=number_format($outcome)?></td>
<td align=center id=bg1>수입/지출</td>
<td align=center>+$riceincome / -$riceoutcome</td>
<td align=center>+<?=number_format($totalRiceIncome)?> / -<?=number_format($outcome)?></td>
<td align=center id=bg1> </td>
<td width=98 align=center>$citycount</td>
<td width=98 align=center><?=count($cityList)?></td>
<td width=98 align=center id=bg1> </td>
<td width=98 align=center>{$nation['gennum']}</td>
<td width=98 align=center><?=$nation['gennum']?></td>
</tr>
<tr>
<td align=center id=bg1>국고 예산</td>
<td align=center>{$budgetgold} ({$budgetgolddiff})</td>
<td align=center><?=number_format($budgetgold)?> (<?=$budgetgolddiff?>)</td>
<td align=center id=bg1>병량 예산</td>
<td align=center>{$budgetrice} ({$budgetricediff})</td>
<td align=center><?=number_format($budgetrice)?> (<?=$budgetricediff?>)</td>
<td align=center id=bg1>기술력</td>
<td align=center>{$nation['tech']}</td>
<td align=center><?=number_format(floor($nation['tech']))?></td>
<td align=center id=bg1> </td>
<td align=center>".getNationLevel($nation['level'])."</td>
<td align=center><?=getNationLevel($nation['level'])?></td>
</tr>
<tr>
<td align=center valign=top id=bg1> 속령일람 :</td>
<td colspan=7>";
for($j=0; $j < $citycount; $j++) {
echo "$cityname[$j], ";
}
echo"
</td>
<td colspan=7><?=join(', ', $cityNames)?></td>
</tr>
<tr>
<td align=center valign=top id=bg1>국가열전</td>
<td colspan=7 id=bg0>".ConvertLog($nation['history'])."</td>
<td colspan=7 id=bg0><?=ConvertLog($nation['history'])?></td>
</tr>
</table>
<br>";
?>
<br>
<table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=backButton()?></td></tr>
+69 -41
View File
@@ -5,15 +5,19 @@ include "lib.php";
include "func.php";
$btn = Util::getReq('btn');
$mode = Util::getReq('mode', 'int', 2);
$defence_train = Util::getReq('defence_train', 'int', 2);
$tnmt = Util::getReq('tnmt', 'int', 1);
//$detachNPC = Util::getReq('detachNPC', 'bool');
$detachNPC = false;
extractMissingPostToGlobals();
if($mode < 0 || $mode > 2){
$mode = 2;
if ($defence_train <= 60) {
$defence_train = 60;
}
else if($defence_train <= 80){
$defence_train = 80;
}
else{
$defence_train = 999;
}
if($tnmt < 0 || $tnmt > 1){
@@ -23,43 +27,48 @@ if($tnmt < 0 || $tnmt > 1){
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$generalID = $session->generalID;
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("내정보", 1);
$query = "select no,npc,mode,tnmt,myset from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$me = MYDB_fetch_array($result);
$me = General::createGeneralObjFromDB($generalID);
if ($me['myset'] > 0) {
$myset = $me->getVar('myset');
if ($myset > 0) {
$submit = 'submit';
} else {
$submit = 'hidden';
}
if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
if ($me['myset'] > 1) {
if (($btn == "설정저장" || $detachNPC) && $myset > 0) {
if ($myset > 1) {
$submit = 'submit';
} else {
$submit = 'hidden';
}
$me['myset'] -= 1;
if($defence_train != $me->getVar('defence_train')){
if($defence_train == 999){
$me->increaseVar('myset', -1);
$me->setVar('defence_train', $defence_train);
$me->increaseVar('train', -3);
$me->increaseVar('atmos', -3);
}
else{
$me->increaseVar('myset', -1);
$me->setVar('defence_train', $defence_train);
}
$myset -= 1;
}
if($me->getVar('tnmt') != $tnmt){
$me->setVar('tnmt', $tnmt);
}
$db->update('general', [
'myset'=>$db->sqleval('myset-1'),
'mode'=>$mode,
'tnmt'=>$tnmt
], 'owner=%i', $userID);
$me['mode'] = $mode;
$me['tnmt'] = $tnmt;
if($me['npc'] == 1 && $detachNPC){
if($me->getVar('npc') == 1 && $detachNPC){
$turnterm = $gameStor->turnterm;
if($turnterm < 10){
@@ -68,13 +77,10 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
else{
$targetKillTurn = 60 / $turnterm;
}
$db->update('general', [
'killturn'=>$targetKillTurn
], 'owner=%i AND npc=1', $userID);
$me['killturn']=$targetKillTurn;
$me->setVar('killturn', $targetKillTurn);
}
}
$me->applyDB($db);
?>
<!DOCTYPE html>
@@ -91,7 +97,21 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<script>
var availableDieImmediately = <?=$availableDieImmediately?'true':'false'?>;
jQuery(function($){
$('#die_immediately').click(function(){
if(!availableDieImmediately){
alert('삭제를 위해서는 생성 후 2턴 가량의 시간이 필요합니다.');
location.reload();
return false;
}
return confirm('정말로 삭제하시겠습니까?');
});
});
</script>
</head>
<body>
@@ -101,28 +121,36 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
<table align=center width=1000 class='tb_layout bg0'>
<tr>
<td width=50%>
<?php myInfo(); ?>
<?php myInfo2(); ?>
<?php generalInfo($me); ?>
<?php generalInfo2($me); ?>
</td>
<td width=50% valign=top style="padding-left:4ch;">
<form name=form1 action=b_myPage.php method=post>
토너먼트
<input type=radio name=tnmt value=0 <?=$me['tnmt']==0?"checked":""; ?>>수동참여
<input type=radio name=tnmt value=1 <?=$me['tnmt']==1?"checked":""; ?>>자동참여
<input type=radio name=tnmt value=0 <?=$me->getVar('tnmt')==0?"checked":""; ?>>수동참여
<input type=radio name=tnmt value=1 <?=$me->getVar('tnmt')==1?"checked":""; ?>>자동참여
<br>
<font color=orange>개막직전 남는자리가 있을경우 랜덤하게 참여합니다.</font><br><br>
수비
<input type=radio name=mode value=2 <?=$me['mode']==2?"checked":""; ?>>◎(훈사80)
<input type=radio name=mode value=1 <?=$me['mode']==1?"checked":""; ?>>○(훈사60)
<input type=radio name=mode value=0 <?=$me['mode']==0?"checked":""; ?>>×
<input type=radio name=defence_train value=80 <?=$me->getVar('defence_train')==80?"checked":""; ?>>◎(훈사80)
<input type=radio name=defence_train value=60 <?=$me->getVar('defence_train')==60?"checked":""; ?>>○(훈사60)
<input type=radio name=defence_train value=999 <?=$me->getVar('defence_train')==999?"checked":""; ?>>×
<br><br>
<input type=<?=$submit?> name=btn style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px; value=설정저장><br>
<font color=orange>설정저장은 이달중 <?=$me['myset']?>회 남았습니다.</font><br><br>
<font color=orange>설정저장은 이달중 <?=$myset?>회 남았습니다.</font><br><br>
</form>
<?php if(!($gameStor->autorun_user['limit_minutes']??false)): ?>
<br>
<a href="c_vacation.php"><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>휴가 신청</button></a><br><br>
<?php endif; ?>
<!--빙의 해제용 삭턴 조절<br>
<a href="b_myPage.php?detachNPC=1"><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>빙의 해체 요청</button></a>-->
<?php if($showDieImmediatelyBtn): ?>
가오픈 기간 장수 삭제<br>
<a href="c_die_immediately.php" id='die_immediately'><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>장수 삭제</button></a><br><br>
<?php endif; ?>
개인용 CSS<br>
<textarea id='custom_css' style='color:white;background-color:black;width:420px;height:150px;'></textarea>
</td>
@@ -133,10 +161,10 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
</tr>
<tr>
<td valign=top>
<?=getGenLogRecent($me['no'], 24)?>
<?=getGenLogRecent($generalID, 24)?>
</td>
<td valign=top>
<?=getBatLogRecent($me['no'], 24)?>
<?=getBatLogRecent($generalID, 24)?>
</td>
</tr>
<tr>
@@ -145,10 +173,10 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
</tr>
<tr>
<td valign=top>
<?=getGeneralHistoryAll($me['no'])?>
<?=getGeneralHistoryAll($generalID)?>
</td>
<td valign=top>
<?=getBatResRecent($me['no'], 24)?>
<?=getBatResRecent($generalID, 24)?>
</td>
</tr>
</table>
-77
View File
@@ -1,77 +0,0 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$connect=$db->get();
increaseRefresh("회의실", 1);
$query = "select no,nation from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
?>
<!DOCTYPE html>
<html>
<head>
<title><?=UniqueConst::$serverName?>: 회의실</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::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>
<div style='width:1000px;margin:auto'>
<table width=1000 class='tb_layout bg0'>
<tr><td> <br><?=backButton()?></td></tr>
<form name=form1 method=post action=c_nationboard.php>
<tr><td align=center>
제목 <input type=textarea maxlength=50 name=title style=color:white;background-color:black;width:830px;>
</td>
</tr>
<tr><td>
<textarea name=msg style=color:white;background-color:black;width:998px;height:200px;></textarea><br>
<input type=submit value=저장하기>
<input type=hidden name=num value=-1>
</td></tr>
</form>
</table>
<br>
<?php
$nation = getNation($me['nation']);
//20개 메세지
$index = $nation['boardindex'];
for($i=0; $i < 20; $i++) {
$who = "board{$index}_who";
$query = "select name,picture,imgsvr from general where no='$nation[$who]'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
if($nation["board{$index}"] != '') { msgprint($nation["board{$index}"], $general['name'], $general['picture'], $general['imgsvr'], $nation["board{$index}_when"], $index, 0); }
$index--;
if($index < 0) { $index = 19; }
}
?>
<table width=1000 class='tb_layout bg0'>
<tr><td><?=backButton()?></td></tr>
<tr><td><?=banner()?> </td></tr>
</table>
</div>
</body>
</html>
-63
View File
@@ -1,63 +0,0 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$connect=$db->get();
increaseRefresh("국법", 1);
?>
<!DOCTYPE html>
<html>
<head>
<title><?=UniqueConst::$serverName?>: 국법</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::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><?=backButton()?></td></tr>
<tr><td>
<?php
$query = "select no,nation,level from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$query = "select rule from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nation = MYDB_fetch_array($result);
if($me['level'] >= 5) {
echo "
<form name=form1 method=post action=c_nationrule.php>
<textarea name=msg style=color:white;background-color:black;width:998px;height:500px;>{$nation['rule']}</textarea><br>
<input type=submit value=저장하기>
</form>";
} else {
echo "
<textarea name=msg style=color:white;background-color:black;width:998px;height:500px; readonly>{$nation['rule']}</textarea><br>";
}
?>
</td></tr>
<tr><td><?=backButton()?></td></tr>
<tr><td><?=banner()?> </td></tr>
</table>
</body>
</html>
+126
View File
@@ -0,0 +1,126 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
//로그인 검사
$commandType = Util::getReq('command', 'string');
$turnList = array_map('intval', explode('_', Util::getReq('turnList', 'string', '0')));
$isChiefTurn = Util::getReq('is_chief', 'bool', false);
function die_redirect(){
global $isChiefTurn;
if(!$isChiefTurn){
header('location:index.php', true, 303);
}
else{
header('location:b_chiefcenter.php', true, 303);
}
die();
}
if(!$turnList || !$commandType){
die_redirect();
}
if(!is_array($turnList)){
die_redirect();
}
$session = Session::requireGameLogin()->setReadOnly();
$db = DB::db();
if(!$isChiefTurn && !in_array($commandType, Util::array_flatten(GameConst::$availableGeneralCommand))){
die_redirect();
}
if($isChiefTurn && !in_array($commandType, Util::array_flatten(GameConst::$availableChiefCommand))){
die_redirect();
}
$gameStor = KVStorage::getStorage($db, 'game_env')->turnOnCache();
$env = $gameStor->getValues(['init_year','init_month','startyear','year','month','show_img_level','join_mode','maxnation']);
$general = General::createGeneralObjFromDB($session->generalID);
if(!$isChiefTurn){
$commandObj = buildGeneralCommandClass($commandType, $general, $env);
}
else{
if($general->getVar('level') < 5){
die_redirect();
}
$commandObj = buildNationCommandClass($commandType, $general, $env, new LastTurn());
}
if($commandObj->isArgValid()){
//인자가 필요없는 타입의 경우 processing에서 '전혀' 처리하지 않음!
die_redirect();
}
/*if(!$commandObj->isReservable()){
die_redirect();
}*/
$jsList = $commandObj->getJSFiles();
$cssList = $commandObj->getCSSFiles();
?>
<!DOCTYPE html>
<html>
<head>
<title><?=$commandObj->getName()?></title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('../d_shared/common_path.js')?>
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printJS('d_shared/base_map.js')?>
<?=WebUtil::printJS('js/map.js')?>
<?=WebUtil::printJS('js/processing.js')?>
<script>
window.serverNick = '<?=DB::prefix()?>';
window.serverID = '<?=UniqueConst::$serverID?>';
window.command = '<?=$commandType?>';
window.turnList = [<?=join(', ',$turnList)?>];
window.isChiefTurn = <?=$isChiefTurn?'true':'false'?>;
</script>
<?php
foreach($jsList as $js){
print(WebUtil::printJS($js));
}
?>
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<?=WebUtil::printCSS('css/main.css')?>
<?=WebUtil::printCSS('css/map.css')?>
<?php
foreach($cssList as $css){
print(WebUtil::printCSS($css));
}
?>
</head>
<body class="img_back">
<table class="tb_layout bg0" style="width:1000px;margin:auto;">
<tr><td class="bg1" style='text-align:center;'><?=$commandObj->getName()?></td></tr>
<tr><td>
<input type=button value='돌아가기' onclick="history.back();"><br>
</td></tr></table>
<div class="tb_layout bg0" style="width:1000px;margin:auto;padding-bottom:2em;border:solid 1px gray;">
<?=$commandObj->getForm()?>
</div>
<table class="tb_layout bg0" style="width:1000px;margin:auto;">
<tr><td>
<input type=button value='돌아가기' onclick="history.back();"><br>
<?=banner()?>
</td></tr></table>
</body>
</html>
+13 -16
View File
@@ -12,7 +12,7 @@ $gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("토너먼트", 1);
checkTurn();
TurnExecutionHelper::executeAllCommand();
$query = "select no,tournament,con,turntime from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
@@ -28,10 +28,10 @@ if ($con >= 2) {
switch ($admin['tnmt_type']) {
default: throw new \RuntimeException('invalid tnmt_type');
case 0: $tnmt_type = "<font color=cyan>전력전</font>"; $tp = "tot"; $tp2 = "종합"; $tp3 = "total"; break;
case 1: $tnmt_type = "<font color=cyan>통솔전</font>"; $tp = "ldr"; $tp2 = "통솔"; $tp3 = "leader"; break;
case 2: $tnmt_type = "<font color=cyan>일기토</font>"; $tp = "pwr"; $tp2 = "무력"; $tp3 = "power"; break;
case 3: $tnmt_type = "<font color=cyan>설전</font>"; $tp = "itl"; $tp2 = "지력"; $tp3 = "intel"; break;
case 0: $tnmt_type = "<font color=cyan>전력전</font>"; $tp = "total"; $tp2 = "종합"; $tp3 = "total"; break;
case 1: $tnmt_type = "<font color=cyan>통솔전</font>"; $tp = "leadership"; $tp2 = "통솔"; $tp3 = "leadership"; break;
case 2: $tnmt_type = "<font color=cyan>일기토</font>"; $tp = "strength"; $tp2 = "무력"; $tp3 = "strength"; break;
case 3: $tnmt_type = "<font color=cyan>설전</font>"; $tp = "intel"; $tp2 = "지력"; $tp3 = "intel"; break;
}
?>
@@ -115,7 +115,7 @@ if ($session->userGrade >= 5) {
case 1:
echo "<select name=gen size=1 style=color:white;background-color:black;>";
$query = "select no,name,npc,tnmt,leader,power,intel,leader+power+intel as total from general where tournament=0 and gold>='{$admin['develcost']}' order by {$tp3} desc";
$query = "select no,name,npc,tnmt,leadership,strength,intel,leadership+strength+intel as total from general where tournament=0 and gold>='{$admin['develcost']}' order by {$tp3} desc";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$genCount = MYDB_num_rows($result);
@@ -394,19 +394,16 @@ for ($i=0; $i < 16; $i++) {
echo"
</tr>";
$betting = $gameStor->getValues(['tournament','bet0','bet1','bet2','bet3','bet4','bet5','bet6','bet7','bet8','bet9','bet10','bet11','bet12','bet13','bet14','bet15']);
$betting['bet'] = 0;
for($i=0;$i<16;$i+=1){
$betting['bet'] += $betting['bet'.$i];
}
$globalBet = array_splice($db->queryFirstList('SELECT * FROM betting WHERE general_id = 0'), -16);
$globalBetTotal = array_sum($globalBet);
$admin = $gameStor->getValues(['tournament', 'phase']);
$bet = [];
for ($i=0; $i < 16; $i++) {
if($betting["bet{$i}"] == 0){
if($globalBet[$i] == 0){
$bet[$i] = '∞';
continue;
}
$bet[$i] = round($betting['bet'] / $betting["bet{$i}"], 2);
$bet[$i] = round($globalBetTotal / $globalBet[$i], 2);
}
echo "
@@ -442,7 +439,7 @@ for ($i=0; $i < 8; $i++) {
<tr><td colspan=9 style=background-color:black;>{$num[$i]}</td></tr>
<tr id=bg1><td align=center></td><td align=center>장수</td><td align=center>{$tp2}</td><td align=center></td><td align=center></td><td align=center></td><td align=center></td><td align=center></td><td align=center></td></tr>";
$query = "select npc,name,ldr,pwr,itl,ldr+pwr+itl as tot,prmt,win+draw+lose as game,win,draw,lose,gl,win*3+draw as gd from tournament where grp='$grp' order by gd desc, gl desc, seq";
$query = "select npc,name,leadership,strength,intel,leadership+strength+intel as total,prmt,win+draw+lose as game,win,draw,lose,gl,win*3+draw as gd from tournament where grp='$grp' order by gd desc, gl desc, seq";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
for ($k=1; $k <= 4; $k++) {
$general = MYDB_fetch_array($result);
@@ -468,7 +465,7 @@ for ($i=0; $i < 8; $i++) {
<tr><td colspan=9 style=background-color:black;>{$num[$i]}</td></tr>
<tr id=bg1><td align=center></td><td align=center>장수</td><td align=center>{$tp2}</td><td align=center></td><td align=center></td><td align=center></td><td align=center></td><td align=center></td><td align=center></td></tr>";
$query = "select npc,name,ldr,pwr,itl,ldr+pwr+itl as tot,prmt,win+draw+lose as game,win,draw,lose,gl,win*3+draw as gd from tournament where grp='$grp' order by gd desc, gl desc, seq";
$query = "select npc,name,leadership,strength,intel,leadership+strength+intel as total,prmt,win+draw+lose as game,win,draw,lose,gl,win*3+draw as gd from tournament where grp='$grp' order by gd desc, gl desc, seq";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
for ($k=1; $k <= 8; $k++) {
$general = MYDB_fetch_array($result);
+79 -25
View File
@@ -8,18 +8,15 @@ $session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$connect=$db->get();
increaseRefresh("부대편성", 1);
$me = $db->queryFirstRow('SELECT no,nation,troop FROM general WHERE owner=%i', $userID);
$troops = [];
foreach($db->query('SELECT troop,name,no FROM troop WHERE nation = %i', $me['nation']) as $rawTroop){
$troops[$rawTroop['troop']] = [
'troop'=>$rawTroop['troop'],
foreach($db->query('SELECT troop_leader,name FROM troop WHERE nation = %i', $me['nation']) as $rawTroop){
$troops[$rawTroop['troop_leader']] = [
'name'=>$rawTroop['name'],
'no'=>$rawTroop['no'],
'users'=>[]
];
}
@@ -40,23 +37,38 @@ foreach($db->query(
}
if($troops){
foreach($db->query(
'SELECT no,name,picture,imgsvr,turntime,city,turn0,turn1,turn2,turn3,turn4,turn5,troop FROM general WHERE no IN %li',
array_column($troops, 'no')
) as $troopLeader
$troopLeaders = $db->query(
'SELECT no,name,picture,imgsvr,turntime,city,troop FROM general WHERE no IN %li',
array_keys($troops)
);
$generalTurnList = [];
foreach($db->queryAllLists(
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
array_column($troopLeaders, 'no')
) as [$generalID, $turnIdx, $brief]
){
if(!key_exists($generalID, $generalTurnList)){
$generalTurnList[$generalID] = [];
}
$generalTurnList[$generalID][$turnIdx] = $brief;
}
foreach($troopLeaders as $troopLeader){
$imageTemp = GetImageURL($troopLeader['imgsvr']);
$troopLeader['pictureFullPath'] = "$imageTemp/{$troopLeader['picture']}";
$troopLeader['cityText'] = CityConst::byID($troopLeader['city'])->name;
$troopLeader['turnText'] = join('<br>', [
'1 : '.((DecodeCommand($troopLeader['turn0'])[0] == 26)?'집합':'~'),
'2 : '.((DecodeCommand($troopLeader['turn1'])[0] == 26)?'집합':'~'),
'3 : '.((DecodeCommand($troopLeader['turn2'])[0] == 26)?'집합':'~'),
'4 : '.((DecodeCommand($troopLeader['turn3'])[0] == 26)?'집합':'~'),
'5 : '.((DecodeCommand($troopLeader['turn4'])[0] == 26)?'집합':'~'),
]);
$turnText = [];
foreach($generalTurnList[$troopLeader['no']] as $rawTurnIdx => $brief){
if($brief != '집합'){
$brief = '~';
}
$turnIdx = $rawTurnIdx + 1;
$turnText[] = "{$turnIdx} : {$brief}";
}
$troopLeader['turnText'] = join('<br>', $turnText);
$troops[$troopLeader['troop']]['leader'] = $troopLeader;
}
}
@@ -81,6 +93,48 @@ uasort($troops, function($lhs, $rhs){
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<?=WebUtil::printCSS('css/troops.css')?>
<script>
jQuery(function($){
$('#form1').submit(function(){
return false;
});
$('#leaveTroop').click(function(e){
return confirm("정말 부대를 탈퇴하시겠습니까?");
})
$('.submitBtn').click(function(event){
if(event.isPropagationStopped()){
return false;
}
console.log('b');
var $this=$(this);
$.post({
url:'j_troop.php',
dataType:'json',
data:{
action:$this.val().replace(/\s/g, ''),
troop:$('input.troopId:checked').val(),
name:$('#troopName').val(),
gen:$('#genNo').val()
}
}).then(function(data){
console.log(data);
if(!data.result){
alert(data.reason);
location.reload();
}
location.reload();
}, function(){
alert('알 수 없는 에러가 발생했습니다.');
});
return false;
});
});
</script>
</head>
<body>
@@ -88,7 +142,7 @@ uasort($troops, function($lhs, $rhs){
<table width=1000 class='tb_layout bg0'>
<tr><td> <br><?=backButton()?></td></tr>
</table>
<form name=form1 method=post action=c_troop.php>
<form id=form1 name=form1 method=post>
<table id="troop_list" class='tb_layout bg0'>
<thead>
<tr>
@@ -102,9 +156,9 @@ uasort($troops, function($lhs, $rhs){
<tfoot><tr><td colspan='5'>
<?php if(!$troops): ?>
<?php elseif($me['troop'] == 0): ?>
<input type=submit name=btn value='부 대 가 입'>
<input type=submit class='submitBtn' value='부 대 가 입'>
<?php else: ?>
<input type=submit name=btn value='부 대 탈 퇴' onclick='return confirm("정말 부대를 탈퇴하시겠습니까?")'>
<input type=submit id="leaveTroop" class='submitBtn' value='부 대 탈 퇴'>
<?php endif;?>
</td></tr></tfoot>
<tbody>
@@ -133,14 +187,14 @@ foreach ($troops as $troopNo=>$troop) {
<?php if ($me['troop'] == 0): ?>
<tr>
<td align=center rowspan=2><input type='radio' name='troop' value='<?=$troop['troop']?>'></td>
<td align=center rowspan=2><input type='radio' class='troopId' name='troop' value='<?=$troop['troop']?>'></td>
<td align=center><?=$troop['name']?><br>【 <?=$cityText?> 】</td>
<td height=64 class='generalIcon' style='background:no-repeat center url("<?=$troopLeader['pictureFullPath']?>");background-size:64px;'>&nbsp;</td>
<td rowspan=2 width=62><?=$genlistText?></td>
<td rowspan=2><?=$troopLeader['turnText']?></td>
</tr>
<tr>
<td align=center><font size=2>【턴】 <?=substr($troopLeader['turntime'], 14)?></font></td>
<td align=center><font size=2>【턴】 <?=substr($troopLeader['turntime'], 14, 5)?></font></td>
<td align=center><font size=1><?=$troopLeader['name']?></font></td></tr>
<tr><td colspan=5>
@@ -152,7 +206,7 @@ foreach ($troops as $troopNo=>$troop) {
<td rowspan=2 width=62><?=$genlistText?></td>
<td rowspan=2>
<?php if ($me['no'] == $troopLeader['no']): ?>
<select name=gen size=3 style=color:white;background-color:black;font-size:13px;width:128px;>";
<select id='genNo' name=gen size=3 style=color:white;background-color:black;font-size:13px;width:128px;>";
<?php foreach ($troop['users'] as $troopUser): ?>
<?php if ($troopUser['no'] == $me['no']) {
continue;
@@ -160,13 +214,13 @@ foreach ($troops as $troopNo=>$troop) {
<option value='<?=$troopUser['no']?>'><?=$troopUser['name']?></option>
<?php endforeach; ?>
</select><br>
<input type=submit name=btn value='부 대 추 방' style=width:130px;height:25px;>
<input type=submit class='submitBtn' value='부 대 추 방' style=width:130px;height:25px;>
<?php else: ?>
<?=$troopLeader['turnText']?>
<?php endif; ?>
</td>
</tr>
<tr><td align=center><font size=2>【턴】 <?=substr($troopLeader['turntime'], 14)?></font></td>
<tr><td align=center><font size=2>【턴】 <?=substr($troopLeader['turntime'], 14, 5)?></font></td>
<td align=center><font size=1><?=$troopLeader['name']?></font></td></tr>
<tr><td colspan=5></td></tr>
<?php endif;
@@ -181,7 +235,7 @@ foreach ($troops as $troopNo=>$troop) {
<table width=1000 class='tb_layout bg0'>
<tr>
<td width=80 id=bg1> </td>
<td width=130><input type=text style=color:white;background-color:black; size=18 maxlength=9 name=name></td>
<td width=130><input type=text style=color:white;background-color:black; size=18 maxlength=18 name=name></td>
<?php if($me['troop'] == 0): ?>
<td><input type=submit name=btn value='부 대 창 설'></td>
<?php else: ?>
+18 -13
View File
@@ -28,6 +28,9 @@ $startYear = $gameStor->getValue('startyear');
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('../e_lib/download2.js')?>
<?=WebUtil::printJS('js/common.js')?>
<script>
var defaultSpecialDomestic = <?=GameConst::$defaultSpecialDomestic?>;
</script>
<?=WebUtil::printJS('js/battle_simulator.js')?>
</head>
<body>
@@ -90,8 +93,9 @@ $startYear = $gameStor->getValue('startyear');
<span class="input-group-text">국가 성향</span>
</div>
<select class="custom-select form_nation_type" style="width:25ch;">
<?php foreach(getNationTypeList() as $typeID => [$name,$pros,$cons]): ?>
<option value="<?=$typeID?>"><?=$name?> (<?=$pros?>, <?=$cons?>)</option>
<?php foreach(GameConst::$availableNationType as $typeID): ?>
<?php $nationTypeClass = buildNationTypeClass($typeID) ?>
<option value="<?=$typeID?>"><?=$nationTypeClass->getName()?> (<?=$nationTypeClass::$pros?>, <?=$nationTypeClass::$cons?>)</option>
<?php endforeach; ?>
</select>
<div class="input-group-prepend">
@@ -161,8 +165,9 @@ $startYear = $gameStor->getValue('startyear');
<span class="input-group-text">국가 성향</span>
</div>
<select class="custom-select form_nation_type" style="width:25ch;">
<?php foreach(getNationTypeList() as $typeID => [$name,$pros,$cons]): ?>
<option value="<?=$typeID?>"><?=$name?> (<?=$pros?>, <?=$cons?>)</option>
<?php foreach(GameConst::$availableNationType as $typeID): ?>
<?php $nationTypeObj = buildNationTypeClass($typeID) ?>
<option value="<?=$typeID?>"><?=$nationTypeObj->name?> (<?=$nationTypeClass::$pros?>, <?=$nationTypeClass::$cons?>)</option>
<?php endforeach; ?>
</select>
<div class="input-group-prepend">
@@ -255,7 +260,7 @@ $startYear = $gameStor->getValue('startyear');
<option value="1">일반</option>
<option value="4">태수</option>
<option value="3">군사</option>
<option value="2">시중</option>
<option value="2">종사</option>
<option value="10">무장 수뇌</option>
<option value="9">지장 수뇌</option>
<option value="11">참모</option>
@@ -275,7 +280,7 @@ $startYear = $gameStor->getValue('startyear');
<div class="input-group-prepend">
<span class="input-group-text">무력</span>
</div>
<input type="number" class="form-control form_power" value="50" min="1" max="300" step="1">
<input type="number" class="form-control form_strength" value="50" min="1" max="300" step="1">
<div class="input-group-prepend">
<span class="input-group-text">지력</span>
</div>
@@ -287,7 +292,7 @@ $startYear = $gameStor->getValue('startyear');
</div>
<select class="custom-select form_general_horse">
<?php foreach(range(0, 26) as $horseID): ?>
<option value="<?=$horseID?>"><?=getHorseName($horseID)?></option>
<option value="<?=$horseID?>"><?=getItemName($horseID)?></option>
<?php endforeach; ?>
</select>
<div class="input-group-prepend">
@@ -295,7 +300,7 @@ $startYear = $gameStor->getValue('startyear');
</div>
<select class="custom-select form_general_weap">
<?php foreach(range(0, 26) as $weapID): ?>
<option value="<?=$weapID?>"><?=getWeapName($weapID)?></option>
<option value="<?=$weapID?>"><?=getItemName($weapID)?></option>
<?php endforeach; ?>
</select>
<div class="input-group-prepend">
@@ -303,7 +308,7 @@ $startYear = $gameStor->getValue('startyear');
</div>
<select class="custom-select form_general_book">
<?php foreach(range(0, 26) as $bookID): ?>
<option value="<?=$bookID?>"><?=getBookName($bookID)?></option>
<option value="<?=$bookID?>"><?=getItemName($bookID)?></option>
<?php endforeach; ?>
</select>
</div>
@@ -416,10 +421,10 @@ $startYear = $gameStor->getValue('startyear');
<div class="input-group-prepend only_defender">
<span class="input-group-text">수비여부</span>
</div>
<select class="custom-select form_defend_mode only_defender">
<option value="2">훈사 80</option>
<option value="3">훈사 60</option>
<option value="0">안함</option>
<select class="custom-select form_defence_train only_defender">
<option value="80">훈사 80</option>
<option value="60">훈사 60</option>
<option value="999">안함</option>
</select>
</div>
</div>
+18 -53
View File
@@ -11,7 +11,6 @@ $v->rule('integer', [
'topv',
'value',
'term',
'stuff',
'sel'
]);
@@ -21,13 +20,11 @@ $cost = Util::getReq('cost', 'int');
$topv = Util::getReq('topv', 'int');
$value = Util::getReq('value', 'int');
$term = Util::getReq('term', 'int');
$stuff = Util::getReq('stuff', 'int');
$sel = Util::getReq('sel', 'int');
$msg = '';
$msg2 = '';
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
@@ -35,38 +32,30 @@ $userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
increaseRefresh("입찰", 1);
$turnterm = $gameStor->turnterm;
$query = "select no,name,gold,rice,special from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$me = MYDB_fetch_array($result);
$me = $db->queryFirstRow('SELECT no,name,gold,rice,special from general where owner=%i', $userID);
$query = "select no from auction where no1='{$me['no']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$tradeCount = MYDB_num_rows($result);
$query = "select no from auction where no2='{$me['no']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$bidCount = MYDB_num_rows($result);
$tradeCount = $db->queryFirstField('SELECT count(no) FROM auction WHERE no1=%i', $me['no']);
$bidCount = $db->queryFirstField('SELECT count(no) FROM auction WHERE no2=%i', $me['no']);
$btCount = $tradeCount + $bidCount;
$unit = $turnterm * 60;
$amount = Util::round($amount / 10) * 10;
$cost = Util::round($cost / 10) * 10;
$topv = Util::round($topv / 10) * 10;
$value = Util::round($value / 10) * 10;
$amount = Util::round($amount, -1);
$cost = Util::round($cost, -1);
$topv = Util::round($topv, -1);
$value = Util::round($value, -1);
if ($term > 24) {
$term = 24;
}
$valid = 1;
if ($session->userGrade >= 5 || ($me['special'] != 30 && $btCount < 1) || ($me['special'] == 30 && $btCount < 3)) {
if ($session->userGrade >= 5) {
} else {
$msg = "ㆍ<span class='ev_warning'>더이상 등록할 수 없습니다.</span>";
$msg2 = "ㆍ<span class='ev_warning'>더이상 등록할 수 없습니다.</span>";
@@ -75,10 +64,6 @@ if ($session->userGrade >= 5 || ($me['special'] != 30 && $btCount < 1) || ($me['
}
if ($btn == "판매") {
if ($stuff != 0) {
$msg = "ㆍ<span class='ev_warning'>현재 쌀만 거래 가능합니다.</span>";
$valid = 0;
}
if ($term < 0 || $term > 24) {
$msg = "ㆍ<span class='ev_warning'>종료기한은 1 ~ 24 턴 이어야 합니다.</span>";
$valid = 0;
@@ -99,8 +84,8 @@ if ($btn == "판매") {
$msg = "ㆍ<span class='ev_warning'>즉시판매가는 시작판매가의 110% 이상이어야 합니다.</span>";
$valid = 0;
}
if ($amount > $me['rice'] - 1000) {
$msg = "ㆍ<span class='ev_warning'>기본 군량 1000은 거래할 수 없습니다.</span>";
if ($amount > $me['rice'] - GameConst::$defaultRice) {
$msg = "ㆍ<span class='ev_warning'>기본 군량 ".GameConst::$defaultRice."은 거래할 수 없습니다.</span>";
$valid = 0;
}
if ($valid == 1) {
@@ -110,7 +95,6 @@ if ($btn == "판매") {
'type'=>0,
'no1'=>$me['no'],
'name1'=>$me['name'],
'stuff'=>$stuff,
'amount'=>$amount,
'cost'=>$cost,
'value'=>$cost,
@@ -119,9 +103,7 @@ if ($btn == "판매") {
]);
}
} elseif ($btn == "구매시도") {
$query = "select no2,value,topv,expire,amount from auction where no='$sel'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$auction = MYDB_fetch_array($result);
$auction = $db->queryFirstRow('SELECT no2,value,topv,expire,amount FROM auction WHERE no=%i LIMIT 1', $sel);
if ($value == $auction['topv']) {
$valid = 2;
@@ -130,12 +112,6 @@ if ($btn == "판매") {
$msg = "ㆍ<span class='ev_warning'>종료된 거래입니다.</span>";
$valid = 0;
}
/*
if($stuff != 0) {
$msg = "ㆍ<span class='ev_warning'>현재 쌀만 거래 가능합니다.</span>";
$valid = 0;
}
*/
if ($auction['no2'] > 0 && $value <= $auction['value']) {
$msg = "ㆍ<span class='ev_warning'>현재판매가보다 높게 입찰해야 합니다.</span>";
$valid = 0;
@@ -148,8 +124,8 @@ if ($btn == "판매") {
$msg = "ㆍ<span class='ev_warning'>즉시판매가보다 높을 수 없습니다.</span>";
$valid = 0;
}
if ($value > $me['gold'] - 1000) {
$msg = "ㆍ<span class='ev_warning'>기본 자금 1000은 거래할 수 없습니다.</span>";
if ($value > $me['gold'] - GameConst::$defaultGold) {
$msg = "ㆍ<span class='ev_warning'>기본 자금 ".GameConst::$defaultGold."은 거래할 수 없습니다.</span>";
$valid = 0;
}
if ($valid == 1) {
@@ -177,10 +153,6 @@ if ($btn == "판매") {
], 'no=%i', $sel);
}
} elseif ($btn == "구매") {
if ($stuff != 0) {
$msg2 = "ㆍ<span class='ev_warning'>현재 쌀만 거래 가능합니다.</span>";
$valid = 0;
}
if ($term < 0 || $term > 24) {
$msg2 = "ㆍ<span class='ev_warning'>종료기한은 1 ~ 24 턴 이어야 합니다.</span>";
$valid = 0;
@@ -201,8 +173,8 @@ if ($btn == "판매") {
$msg2 = "ㆍ<span class='ev_warning'>즉시구매가는 시작구매가의 90% 이하이어야 합니다.</span>";
$valid = 0;
}
if ($cost > $me['gold'] - 1000) {
$msg2 = "ㆍ<span class='ev_warning'>기본 자금 1000은 거래할 수 없습니다.</span>";
if ($cost > $me['gold'] - GameConst::$defaultGold) {
$msg2 = "ㆍ<span class='ev_warning'>기본 자금 ".GameConst::$defaultGold."은 거래할 수 없습니다.</span>";
$valid = 0;
}
if ($valid == 1) {
@@ -213,7 +185,6 @@ if ($btn == "판매") {
'type'=>1,
'no1'=>$me['no'],
'name1'=>$me['name'],
'stuff'=>$stuff,
'amount'=>$amount,
'cost'=>$cost,
'value'=>$cost,
@@ -222,9 +193,7 @@ if ($btn == "판매") {
]);
}
} elseif ($btn == "판매시도") {
$query = "select no2,value,topv,expire,amount from auction where no='$sel'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$auction = MYDB_fetch_array($result);
$auction = $db->queryFirstRow('SELECT no2,value,topv,expire,amount FROM auction WHERE no=%i LIMIT 1', $sel);
if ($value == $auction['topv']) {
$valid = 2;
@@ -233,10 +202,6 @@ if ($btn == "판매") {
$msg2 = "ㆍ<span class='ev_warning'>종료된 거래입니다.</span>";
$valid = 0;
}
if ($stuff != 0) {
$msg2 = "ㆍ<span class='ev_warning'>현재 쌀만 거래 가능합니다.</span>";
$valid = 0;
}
if ($auction['no2'] > 0 && $value >= $auction['value']) {
$msg2 = "ㆍ<span class='ev_warning'>현재구매가보다 낮게 입찰해야 합니다.</span>";
$valid = 0;
@@ -249,8 +214,8 @@ if ($btn == "판매") {
$msg2 = "ㆍ<span class='ev_warning'>즉시구매가보다 낮을 수 없습니다.</span>";
$valid = 0;
}
if ($value > $me['rice'] - 1000) {
$msg2 = "ㆍ<span class='ev_warning'>기본 군량 1000은 거래할 수 없습니다.</span>";
if ($value > $me['rice'] - GameConst::$defaultRice) {
$msg2 = "ㆍ<span class='ev_warning'>기본 군량 ".GameConst::$defaultRice."은 거래할 수 없습니다.</span>";
$valid = 0;
}
if ($valid == 1) {
-67
View File
@@ -1,67 +0,0 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
// $btn0~15, $gold0~15
//FIXME: 으악!!!!! 왜?! idx를 지정하고 gold를 지정하라고!
$betTarget = -1;
$betGold = -1;
for($i=0;$i<16;$i++){
$textBtn = "btn{$i}";
$textGold = "gold{$i}";
$btn = Util::getReq($textBtn);
$gold = Util::getReq($textGold, 'int');
if($btn === "베팅!" && $gold){
$betTarget = $i;
$betGold = $gold;
break;
}
}
if($betGold == -1){
extractMissingPostToGlobals();
}
if($betTarget < 0 || $betGold < 10 || $betGold > 1000){
header('Location: b_betting.php');
exit();
}
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
increaseRefresh("베팅", 1);
$tournament = $gameStor->tournament;
if($tournament != 6) {
header('Location: b_betting.php');
exit();
}
$bets = $db->queryFirstList('SELECT bet0,bet1,bet2,bet3,bet4,bet5,bet6,bet7,bet8,bet9,bet10,bet11,bet12,bet13,bet14,bet15,gold FROM general WHERE `owner`=%i', $userID);
$myGold = array_pop($bets);
$totalBet = array_sum($bets);
//NOTE: 위 코드에서 $betTarget은 0~15의 정수임이 보장된다.
$oldBet = $bets[$betTarget];
if($betGold + 500 <= $myGold && $betGold + $oldBet <= 1000 && $betGold + $totalBet <= 1000) {
$db->update('general', [
'gold'=>$db->sqleval('gold - %i', $betGold),
"bet{$betTarget}"=>$db->sqleval("bet{$betTarget} + %i", $betGold),
'betgold'=>$db->sqleval('betgold + %i', $betGold)
], 'owner = %i', $userID);
$gameStor->setValue("bet{$betTarget}", $gameStor->getValue("bet{$betTarget}") + $betGold);//TODO: +로 증가하는 storage값은 별도로 분리
}
header('location: b_betting.php');
-60
View File
@@ -1,60 +0,0 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
$title = Util::getReq('title');
$msg = Util::getReq('msg');
$num = Util::getReq('num', 'int');
$reply = Util::getReq('reply');
// $title, $msg, $num
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$connect=$db->get();
if (getBlockLevel() == 1 || getBlockLevel() == 3) {
header('location:b_chiefboard.php');
die();
}
$query = "select no,nation from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$title = str_replace("|", " ", $title);
$msg = str_replace("|", " ", $msg);
$reply = str_replace("|", " ", $reply);
$title = trim($title);
$msg = trim($msg);
$reply = trim($reply);
$nation = getNation($me['nation']);
//새글 추가시
if($num == -1 && $title != "" && $msg != "") {
$num = $nation['coreindex'] + 1;
if($num >= 20) { $num = 0; }
$msg = $title."|".$msg;
$msg = addslashes(SQ2DQ($msg));
$date = date('Y-m-d H:i:s');
$query = "update nation set coreboard{$num}='$msg',coreboard{$num}_who='{$me['no']}',coreboard{$num}_when='$date' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update nation set coreindex='$num' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
//$num에 댓글시
} elseif($num >= 0 && $reply != "") {
$newmsg = $nation["coreboard{$num}"]."|".$me['no']."|".$reply;
$newmsg = addslashes(SQ2DQ($newmsg));
$query = "update nation set coreboard{$num}='$newmsg' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
header('location:b_chiefboard.php');
+49
View File
@@ -0,0 +1,49 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
$availableDieImmediately = false;
//로그인 검사
$session = Session::requireGameLogin();
$userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$general = $db->queryFirstRow('SELECT no,name,name2,npc,lastrefresh FROM general WHERE owner=%i AND npc = 0', $userID);
if(!$general){
header('location:b_myPage.php');
die();
}
increaseRefresh("장수 삭제", 1);
$gameStor->cacheValues(['turnterm', 'opentime', 'turntime', 'year', 'month']);
if($gameStor->turntime <= $gameStor->opentime){
//서버 가오픈시 할 수 있는 행동
if(addTurn($general['lastrefresh'], $gameStor->turnterm, 2) <= TimeUtil::DatetimeNow()){
$availableDieImmediately = true;
}
}
if(!$availableDieImmediately){
header('location:b_myPage.php');
die();
}
if(!$db->query('DELETE FROM general WHERE owner=%i AND npc=0', $userID)){
trigger_error("올바르지 않은 삭제 프로세스 $userID", E_USER_WARNING);
}
$generalName = $general['name'];
$josaYi = JosaUtil::pick($generalName, '이');
pushGeneralPublicRecord(["<C>●</>{$gameStor->month}월:<Y>{$generalName}</>{$josaYi} 이 홀연히 모습을 <R>감추었습니다</>"], $gameStor->year, $gameStor->month);
$session->logoutGame();
header('location:..');
+9 -6
View File
@@ -12,19 +12,22 @@ $rate = Util::getReq('rate', 'int');
$bill = Util::getReq('bill', 'int');
$secretlimit = Util::getReq('secretlimit', 'int');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$me = $db->queryFirstRow('SELECT `no`,nation,`level` FROM general WHERE `owner`=%i', $userID);
$me = $db->queryFirstRow('SELECT `no`,nation,`level`,permission,penalty FROM general WHERE `owner`=%i', $userID);
//내가 수뇌부이어야함
if($me['level'] < 5) {
header('location:b_myBossInfo.php');
$permission = checkSecretPermission($me);
if($permission < 0){
header('location:b_myBossInfo.php', true, 303);
exit();
}
else if ($me['level'] < 5 && $permission != 4) {
header('location:b_myBossInfo.php', true, 303);
exit();
}
@@ -44,7 +47,7 @@ if($btn == "국가방침 수정") {
$db->update('nation', [
'rate'=>$rate,
], 'nation=%i', $me['nation']);
} elseif($btn == "지급") {
} elseif($btn == "지급") {
$bill = Util::valueFit($bill, 20, 200);
$db->update('nation', [
'bill'=>$bill
-145
View File
@@ -1,145 +0,0 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
// $turn, $command, $cost, $name, $nationname, $note, $double, $third, $fourth
$turn = Util::getReq('turn', 'array_int');
$command = Util::getReq('command', 'int', 0);
$cost = Util::getReq('cost', 'int');
$name = Util::getReq('name');
$nationname = Util::getReq('nationname', 'string', '');
$note = Util::getReq('note', 'string', '');
$double = Util::getReq('double', 'int', 0);
$third = Util::getReq('third', 'int', 0);
$fourth = Util::getReq('fourth', 'int', 0);
extractMissingPostToGlobals();
if(!$turn){
$turn = [0];
}
'@phan-var int $double';
'@phan-var int $third';
'@phan-var int $fourth';
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$connect=$db->get();
if($command < 0) { $command = 0; }
if($double < 0) { $double = 0; }
if($third < 0) { $third = 0; }
if($fourth < 0) { $fourth = 0; }
if($command > 99) { $command = 0; }
if($double > 9999) { $double = 9999; }
if($fourth > 9999) { $fourth = 9999; }
$comStr = EncodeCommand($fourth, $third, $double, $command);
// 건국
if($command == 46) {
$name = StringUtil::neutralize($name);
if($name == "") { $name = "무명"; }
$db->update('general', [
'makenation'=>$name
], 'owner=%i', $userID);
$query = [];
foreach($turn as $turnIdx){
$query['turn'.$turnIdx] = $comStr;
}
$db->update('general', $query, 'owner=%i', $userID);
header('Location:./');
die();
}
//통합제의
if($command == 53) {
$query = "select nation,level from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
if($me['level'] >= 5) {
$nationname = StringUtil::neutralize($nationname, 18);
if($nationname == "") { $nationname = "무명"; }
$db->update('general', [
'makenation'=>$nationname
], 'level>=5 and nation=%i', $me['nation']);
$count = count($turn);
$str = "type=type";
for($i=0; $i < $count; $i++) {
$str .= ",l{$me['level']}turn{$turn[$i]}='{$comStr}'";
}
$query = "update nation set {$str} where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
header('location:b_chiefcenter.php');
die();
}
//불가침
if($command == 61) {
$query = "select nation,level from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
if($me['level'] >= 5) {
$note = StringUtil::neutralize($note, 90);
$query = "update diplomacy set reserved='{$note}' where me='{$me['nation']}' and you='$double'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$count = count($turn);
$str = "type=type";
for($i=0; $i < $count; $i++) {
$str .= ",l{$me['level']}turn{$turn[$i]}='{$comStr}'";
}
$query = "update nation set {$str} where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
header('location:b_chiefcenter.php');
die();
}
//포상, 몰수, 발령, 항복권고, 원조
//선전포고, 종전, 파기, 초토화, 천도, 증축, 감축
//백성동원, 수몰, 허보, 피장파장, 의병모집, 이호경식, 급습
//국기변경
if($command == 23 || $command == 24 || $command == 27 || $command == 51 || $command == 52 || $command > 60) {
$query = "select no,nation,level from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
if(($command == 23 || $command == 24 || $command == 27) && $me['no'] == $third) {
// 자기자신에게 악용 금지
} elseif($me['level'] >= 5) {
$count = count($turn);
$str = "type=type";
for($i=0; $i < $count; $i++) {
$str .= ",l{$me['level']}turn{$turn[$i]}='{$comStr}'";
}
$query = "update nation set {$str} where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
header('location:b_chiefcenter.php');
die();
}
//일반 턴
$query = [];
foreach($turn as $turnIdx){
$query['turn'.$turnIdx] = $comStr;
}
$db->update('general', $query, 'owner=%i', $userID);
header('Location:./');
+99 -105
View File
@@ -11,8 +11,6 @@ $genlist = Util::getReq('genlist', 'int');
$outlist = Util::getReq('outlist', 'int');
$citylist = Util::getReq('citylist', 'int');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
@@ -34,7 +32,7 @@ $ruler = MYDB_fetch_array($result);
//수뇌가 아니면 아무것도 할 수 없음
if($meLevel < 5){
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
exit();
}
@@ -43,54 +41,61 @@ if($btn == "임명") {
$general = [];
}
else{
$general = $db->queryFirstRow('SELECT `no`,nation,`level`,leader,`power`,intel FROM general WHERE no = %i', $genlist);
$general = $db->queryFirstRow('SELECT `no`,nation,`level`,leadership,`strength`,intel FROM general WHERE no = %i', $genlist);
}
if($genlist != 0 && !$general){
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
exit();
}
//임명할사람이 군주이면 불가, 내가 수뇌부이어야함, 공석아닌때는 국가가 같아야함
if($meLevel < 5 || ($genlist != 0 && $general['nation'] != $me['nation']) || ($genlist != 0 && $general['level'] == 12)) {
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
exit();
}
} elseif($btn == "추방") {
if(!$outlist){
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
exit();
}
$query = "select no,name,gold,rice,nation,troop,level,npc,picture,imgsvr from general where no='$outlist'";
$query = "select no,name,gold,rice,nation,troop,level,npc,picture,imgsvr,permission,penalty,belong from general where no='$outlist'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
if(!$general){
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
exit();
}
//추방할사람이 군주이면 불가, 내가 수뇌부이어야함, 공석아닌때는 국가가 같아야함
if($general['level'] == 12 || $meLevel < 5 || ($general['nation'] != $me['nation'] && $outlist != 0)) {
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
exit();
}
//추방할사람이 외교권자이면 불가
$permission = checkSecretPermission($general);
if($permission == 4){
header('location:b_myBossInfo.php', true, 303);
exit();
}
//NPC 부대장 추방 불가
if($general['npc'] == 5){
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
exit();
}
}
//나와 대상 장수는 국가가 같아야 함
if($genlist != 0 && $me['nation'] != $general['nation']){
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
exit();
}
if($btn == "추방") {
$query = "select name,l{$meLevel}set,chemi,color from nation where nation='{$me['nation']}'";
$query = "select name,l{$meLevel}set,color from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nation = MYDB_fetch_array($result);
@@ -98,24 +103,19 @@ if($btn == "추방") {
//이미 지정했다면 무시
if($nation["l{$meLevel}set"] == 0 && $general['level'] > 0 && $general['level'] < 12) {
$query = "select no from diplomacy where me='{$general['nation']}' and state>='3' and state<='4'";
$dipresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$dipcount1 = MYDB_num_rows($dipresult);
$query = "select no from diplomacy where me='{$general['nation']}' and state>='5' and state<='6'";
$dipresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$dipcount2 = MYDB_num_rows($dipresult);
$dipcount1 = $db->queryFirstField('SELECT count(no) FROM diplomacy WHERE me=%i AND state>=3 AND state<=4', $general['nation']);
$dipcount2 = $db->queryFirstField('SELECT count(no) FROM diplomacy WHERE me=%i AND state>=5 AND state<=6', $general['nation']);
$gold = 0;
$rice = 0;
// 금쌀1000이상은 남김
if($general['gold'] > 1000) {
$gold = $general['gold'] - 1000;
$general['gold'] = 1000;
if($general['gold'] > GameConst::$defaultGold) {
$gold = $general['gold'] - GameConst::$defaultGold;
$general['gold'] = GameConst::$defaultGold;
}
if($general['rice'] > 1000) {
$rice = $general['rice'] - 1000;
$general['rice'] = 1000;
if($general['rice'] > GameConst::$defaultRice) {
$rice = $general['rice'] - GameConst::$defaultRice;
$general['rice'] = GameConst::$defaultRice;
}
if($dipcount1 > 0) {
@@ -145,46 +145,45 @@ if($btn == "추방") {
'level'=>0,
'nation'=>0,
'belong'=>0,
'permission'=>'normal',
], 'no=%i', $general['no']);
}
else{
$db->update('general', [
'level'=>0,
'permission'=>'normal',
'nation'=>0,
'belong'=>0,
'betray'=>$db->sqleval('betray + 1'),
'makelimit'=>12,
'gold'=>$general['gold'],
'rice'=>$general['rice'],
'experience'=>$db->sqleval('experience * (1 - 0.1*betray)'),
'dedication'=>$db->sqleval('dedication * (1 - 0.1*betray)'),
'betray'=>$db->sqleval('betray + 1'),
], 'no=%i', $general['no']);
}
}
// 부대 처리
$query = "select no from troop where troop='{$general['troop']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$troop = MYDB_fetch_array($result);
//부대장일 경우
if($troop['no'] == $general['no']) {
if($general['troop'] == $general['no']){
// 모두 탈퇴
$query = "update general set troop='0' where troop='{$general['troop']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 부대 삭제
$query = "delete from troop where troop='{$general['troop']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
} else {
$query = "update general set troop='0' where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('general', [
'troop'=>0,
], 'troop = %i', $general['no']);
$db->delete('troop', 'troop_leader=%i', $general['no']);
}
else {
$db->update('general', [
'troop'=>0,
], 'no=%i', $general['no']);
}
// 도시관직해제
$query = "update city set gen1='0' where gen1='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update city set gen2='0' where gen2='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update city set gen3='0' where gen3='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
if(2 <= $general['level'] && $general['level'] <= 4){
$db->update('city', [
'officer'.$general['level']=>0
], "officer{$general['level']} = %i", $general['no']);
}
if($general['npc'] >= 2 && ($admin['scenario'] < 100 || rand()%100 == 0)) {
switch(rand()%5) {
@@ -215,27 +214,25 @@ if($btn == "추방") {
$msg->send();
}
//국가 기술력 그대로
$query = "select no from general where nation='{$general['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($result);
$gennum = $gencount;
if($gencount < GameConst::$initialNationGenLimit) $gencount = GameConst::$initialNationGenLimit;
$nation['chemi'] -= 1;
if($nation['chemi'] < 0) { $nation['chemi'] = 0; }
if($admin['year'] < $admin['startyear']+3) {
//초반엔 군주 부상 증가(엔장 임관지양)
$query = "update general set injury=injury+1 where no='{$ruler['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('general', [
'injury'=>$db->sqleval('least(injury + 1, %i)', 80),
], 'no=%i', $ruler['no']);
$query = "update nation set totaltech=tech*'$gencount',gennum='$gennum',chemi='{$nation['chemi']}',gold=gold+'$gold',rice=rice+'$rice' where nation='{$general['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('nation', [
'gennum'=>$db->sqleval('gennum - 1'),
'gold'=>$db->sqleval('gold + %i', $gold),
'rice'=>$db->sqleval('rice + %i', $rice),
], 'nation = %i', $general['nation']);
} else {
//이번분기는 추방불가(초반 제외)
$query = "update nation set l{$meLevel}set=1,totaltech=tech*'$gencount',gennum='$gennum',chemi='{$nation['chemi']}',gold=gold+'$gold',rice=rice+'$rice' where nation='{$general['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('nation', [
"l{$meLevel}set"=>1,
'gennum'=>$db->sqleval('gennum - 1'),
'gold'=>$db->sqleval('gold + %i', $gold),
'rice'=>$db->sqleval('rice + %i', $rice),
], 'nation = %i', $general['nation']);
}
list($year, $month) = $gameStor->getValuesAsArray(['year','month']);
@@ -244,12 +241,12 @@ if($btn == "추방") {
pushGenLog($general, $log);
pushGeneralPublicRecord($alllog, $year, $month);
}
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
die();
}
if($btn == "임명" && $level >= 5 && $level <= 11) {
$query = "select l{$level}set,level,chemi from nation where nation='{$me['nation']}'";
$query = "select l{$level}set,level from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nation = MYDB_fetch_array($result);
@@ -258,34 +255,27 @@ if($btn == "임명" && $level >= 5 && $level <= 11) {
//이미 지정했다면 무시
if($nation["l{$level}set"] == 0 && $lv <= $level) {
$nation['chemi'] -= 1;
if($nation['chemi'] < 0) { $nation['chemi'] = 0; }
$query = "update nation set chemi='{$nation['chemi']}' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
//기존 장수 일반으로
$query = "update general set level=1 where nation='{$me['nation']}' and level='$level'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
if($genlist != 0) {
$valid = 0;
switch($level) {
case 10: if($general['power'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
case 10: if($general['strength'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
case 9: if($general['intel'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
case 8: if($general['power'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
case 8: if($general['strength'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
case 7: if($general['intel'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
case 6: if($general['power'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
case 6: if($general['strength'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
case 5: if($general['intel'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
default: $valid = 1; break;
}
if($valid == 1) {
// 신임 장수의 원래 자리 해제
$query = "update city set gen1=0 where gen1='$genlist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update city set gen2=0 where gen2='$genlist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update city set gen3=0 where gen3='$genlist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
if(2 <= $general['level'] && $general['level'] <= 4){
$db->update('city', [
'officer'.$general['level']=>0
], "officer{$general['level']} = %i", $general['no']);
}
//신임 장수
$query = "update general set level='$level' where no='$genlist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
@@ -295,63 +285,67 @@ if($btn == "임명" && $level >= 5 && $level <= 11) {
}
}
}
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
die();
}
if($btn == "임명" && $level >= 2 && $level <= 4 && $citylist > 0) {
switch($level) {
case 4: $lv = 1; break;
case 3: $lv = 2; break;
case 2: $lv = 3; break;
}
$genlv = 'officer'.$level;
$genlvset = 'officer'.$level.'set';
$query = "select gen{$lv} from city where nation='{$me['nation']}' and city='$citylist'";
$query = "select {$genlv} from city where nation='{$me['nation']}' and city='$citylist'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$city = MYDB_fetch_array($result);
if(!$city){
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
die();
}
$oldlist = $city["gen{$lv}"];
$oldlist = $city[$genlv];
if($oldlist != 0) {
//기존 장수 일반으로
$query = "update general set level=1 where no='$oldlist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('general', [
'level'=>1
], 'no=%i', $oldlist);
//기존 자리 공석으로
$query = "update city set gen{$lv}=0 where city='$citylist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('city', [
$genlv=>0
], 'city = %i AND nation = %i', $citylist , $me['nation']);
}
if($genlist != 0) {
$valid = 0;
switch($level) {
case 4: if($general['power'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
case 4: if($general['strength'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
case 3: if($general['intel'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
default: $valid = 1; break;
}
if($valid == 1) {
// 신임 장수의 원래 자리 해제
$query = "update city set gen1=0 where gen1='$genlist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update city set gen2=0 where gen2='$genlist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update city set gen3=0 where gen3='$genlist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
if(2 <= $general['level'] && $general['level'] <= 4){
$db->update('city', [
'officer'.$general['level']=>0
], "officer{$general['level']} = %i", $general['no']);
}
//신임 장수
$query = "update general set level='$level' where no='$genlist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update city set gen{$lv}='$genlist',gen{$lv}set='1' where city='$citylist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('city', [
$genlv=>$genlist,
$genlvset=>1
], 'city=%i AND nation=%i', $citylist, $general['nation']);
if($db->affectedRows() > 0){
$db->update('general',[
'level'=>$level
], 'no=%i', $genlist);
}
}
}
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
die();
}
header('location:b_myBossInfo.php');
header('location:b_myBossInfo.php', true, 303);
-56
View File
@@ -1,56 +0,0 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
// $title, $msg, $num
$title = Util::getReq('title');
$msg = Util::getReq('msg');
$num = Util::getReq('num', 'int');
$reply = Util::getReq('reply');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$connect=$db->get();
if(getBlockLevel() != 1 && getBlockLevel() != 3) {
$query = "select no,nation from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$title = str_replace("|", " ", $title);
$msg = str_replace("|", " ", $msg);
$reply = str_replace("|", " ", $reply);
$title = trim($title);
$msg = trim($msg);
$reply = trim($reply);
$nation = getNation($me['nation']);
//새글 추가시
if($num == -1 && $title != "" && $msg != "") {
$num = $nation['boardindex'] + 1;
if($num >= 20) { $num = 0; }
$msg = $title."|".$msg;
$msg = addslashes(SQ2DQ($msg));
$date = date('Y-m-d H:i:s');
$query = "update nation set board{$num}='$msg',board{$num}_who='{$me['no']}',board{$num}_when='$date' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update nation set boardindex='$num' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
//$num에 댓글시
} elseif($num >= 0 && $reply != "") {
$newmsg = $nation["board{$num}"]."|".$me['no']."|".$reply;
$newmsg = addslashes(SQ2DQ($newmsg));
$query = "update nation set board{$num}='$newmsg' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
}
header('location:b_nationboard.php');
-27
View File
@@ -1,27 +0,0 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
// $msg
$msg = Util::getReq('msg');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$connect=$db->get();
$query = "select no,nation from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$msg = addslashes(SQ2DQ($msg));
$query = "update nation set rule='$msg' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
header('location:b_nationrule.php');
+84 -70
View File
@@ -14,8 +14,6 @@ $gen = Util::getReq('gen', 'int');
$sel = Util::getReq('sel', 'int');
$trig = Util::getReq('trig', 'int');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
@@ -31,9 +29,9 @@ $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""
$me = MYDB_fetch_array($result);
switch($admin['tnmt_type']) {
case 0: $tp = "total"; $tp2 = "전력전"; $tp3 = "leader+power+intel"; break;
case 1: $tp = "leader"; $tp2 = "통솔전"; $tp3 = "leader"; break;
case 2: $tp = "power"; $tp2 = "일기토"; $tp3 = "power"; break;
case 0: $tp = "total"; $tp2 = "전력전"; $tp3 = "leadership+strength+intel"; break;
case 1: $tp = "leadership"; $tp2 = "통솔전"; $tp3 = "leadership"; break;
case 2: $tp = "strength"; $tp2 = "일기토"; $tp3 = "strength"; break;
case 3: $tp = "intel"; $tp2 = "설전"; $tp3 = "intel"; break;
}
@@ -44,7 +42,7 @@ if($btn == '참가') {
exit(1);
}
$general = $db->queryFirstRow('SELECT no,name,npc,leader,power,intel,explevel,gold,horse,weap,book FROM general WHERE `no`=%i', $me['no']);
$general = $db->queryFirstRow('SELECT no,name,npc,leadership,strength,intel,explevel,gold,horse,weapon,book FROM general WHERE `no`=%i', $me['no']);
//{$admin['develcost']}원 참가비
if($general['gold'] < $admin['develcost']) {
@@ -53,35 +51,36 @@ if($btn == '참가') {
}
$general['gold'] -= $admin['develcost'];
$query = "select grp from tournament where grp<10 group by grp having count(*)=8";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$grpCount = MYDB_num_rows($result);
$occupied = [];
for($i=0; $i < $grpCount; $i++) {
$grp = MYDB_fetch_array($result);
$occupied[$grp['grp']] = 1;
foreach($db->queryFirstColumn('SELECT grp FROM tournament WHERE grp < 10 GROUP BY grp HAVING count(*)=8') as $grp){
$occupied[$grp] = true;
}
$map = [];
for($i=0; $i < 8; $i++) {
if(!Util::array_get($occupied[$i])) {
$map[] = $i;
}
}
$grpCount = count($occupied);
if($grpCount < 8) {
$grp = $map[rand() % count($map)];
$query = "select grp from tournament where grp='$grp'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$grpCount = MYDB_num_rows($result);
$query = "insert into tournament (no, npc, name, ldr, pwr, itl, lvl, grp, grp_no, h, w, b) values ('{$general['no']}', '{$general['npc']}', '{$general['name']}', '{$general['leader']}', '{$general['power']}', '{$general['intel']}', '{$general['explevel']}', '$grp', '$grpCount', '{$general['horse']}', '{$general['weap']}', '{$general['book']}')";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update general set tournament=1,gold='{$general['gold']}' where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$grp = Util::choiceRandom(array_keys($occupied));
$grpMemberCount = $db->queryFirstField('SELECT count(*) FROM tournament WHERE grp=%i', $grp);
$db->insert('tournament', [
'no'=>$general['no'],
'npc'=>$general['npc'],
'name'=>$general['name'],
'leadership'=>$general['leadership'],
'strength'=>$general['strength'],
'intel'=>$general['intel'],
'lvl'=>$general['explevel'],
'grp'=>$grp,
'grp_no'=>$grpMemberCount,
'h'=>$general['horse'],
'w'=>$general['weapon'],
'b'=>$general['book']
]);
$db->update('general', [
'tournament'=>1,
'gold'=>$general['gold']
], 'no=%i', $general['no']);
}
$query = "select grp from tournament where grp<10 group by grp having count(*)=8";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$grpCount = MYDB_num_rows($result);
$grpCount = $db->queryFirstField('SELECT count(*) FROM tournament where grp<10 GROUP BY grp HAVING count(*)=8');
if($grpCount >= 8) {
$gameStor->tournament = 2;
$gameStor->phase = 0;
@@ -105,7 +104,7 @@ if($btn == "자동개최설정") {
$gameStor->phase = 0;
} elseif($btn == "투입" || $btn == "무명투입" || $btn == "쪼렙투입" || $btn == "일반투입" || $btn == "굇수투입" || $btn == "랜덤투입") {
if($btn == "투입") {
$query = "select no,name,npc,leader,power,intel,explevel,gold,horse,weap,book from general where no='$gen'";
$query = "select no,name,npc,leadership,strength,intel,explevel,gold,horse,weapon,book from general where no='$gen'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
$general['gold'] -= $admin['develcost'];
@@ -113,14 +112,14 @@ if($btn == "자동개최설정") {
$general['no'] = 0;
$general['name'] = "무명장수";
$general['npc'] = 2;
$general['leader'] = 10;
$general['power'] = 10;
$general['leadership'] = 10;
$general['strength'] = 10;
$general['intel'] = 10;
$general['explevel'] = 10;
$general['gold'] = 0;
} elseif($btn == "쪼렙투입") {
$sel = rand() % 32;
$query = "select no,name,npc,leader,power,intel,explevel,gold,leader+power+intel as total,horse,weap,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} limit {$sel},1";
$query = "select no,name,npc,leadership,strength,intel,explevel,gold,leadership+strength+intel as total,horse,weapon,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} limit {$sel},1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
$general['gold'] -= $admin['develcost'];
@@ -137,56 +136,57 @@ if($btn == "자동개최설정") {
$sel = rand() % 32 + $genCount - 8;
$query = "select no,name,npc,leader,power,intel,explevel,leader+power+intel as total,horse,weap,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} desc limit {$sel},1";
$query = "select no,name,npc,leadership,strength,intel,explevel,leadership+strength+intel as total,horse,weapon,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} desc limit {$sel},1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
$general['gold'] -= $admin['develcost'];
} elseif($btn == "굇수투입") {
$sel = rand() % 32;
$query = "select no,name,npc,leader,power,intel,explevel,gold,leader+power+intel as total,horse,weap,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} desc limit {$sel},1";
$query = "select no,name,npc,leadership,strength,intel,explevel,gold,leadership+strength+intel as total,horse,weapon,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} desc limit {$sel},1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
$general['gold'] -= $admin['develcost'];
} elseif($btn == "랜덤투입") {
$query = "select no,name,npc,leader,power,intel,explevel,gold,leader+power+intel as total,horse,weap,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by rand() limit 0,1";
$query = "select no,name,npc,leadership,strength,intel,explevel,gold,leadership+strength+intel as total,horse,weapon,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by rand() limit 0,1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
$general['gold'] -= $admin['develcost'];
//참가
}
$query = "select grp from tournament where grp<10 group by grp having count(*)=8";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$grpCount = MYDB_num_rows($result);
$occupied = [];
for($i=0; $i < $grpCount; $i++) {
$grp = MYDB_fetch_array($result);
$occupied[$grp['grp']] = 1;
}
$map = [];
for($i=0; $i < 8; $i++) {
if(!isset($occupied[$i]) || $occupied[$i] == 0) {
$map[] = $i;
}
foreach($db->queryFirstColumn('SELECT grp FROM tournament WHERE grp < 10 GROUP BY grp HAVING count(*)=8') as $grp){
$occupied[$grp] = true;
}
$grpCount = count($occupied);
if($grpCount < 8) {
$grp = $map[rand() % count($map)];
$query = "select grp from tournament where grp='$grp'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$grpCount = MYDB_num_rows($result);
$query = "insert into tournament (no, npc, name, ldr, pwr, itl, lvl, grp, grp_no, h, w, b) values ('{$general['no']}', '{$general['npc']}', '{$general['name']}', '{$general['leader']}', '{$general['power']}', '{$general['intel']}', '{$general['explevel']}', '$grp', '$grpCount', '{$general['horse']}', '{$general['weap']}', '{$general['book']}')";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update general set tournament=1,gold='{$general['gold']}' where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$grp = Util::choiceRandom(array_keys($occupied));
$grpMemberCount = $db->queryFirstField('SELECT count(*) FROM tournament WHERE grp=%i', $grp);
$db->insert('tournament', [
'no'=>$general['no'],
'npc'=>$general['npc'],
'name'=>$general['name'],
'leadership'=>$general['leadership'],
'strength'=>$general['strength'],
'intel'=>$general['intel'],
'lvl'=>$general['explevel'],
'grp'=>$grp,
'grp_no'=>$grpMemberCount,
'h'=>$general['horse'],
'w'=>$general['weapon'],
'b'=>$general['book']
]);
$db->update('general', [
'tournament'=>1,
'gold'=>$general['gold']
], 'no=%i', $general['no']);
}
$query = "select grp from tournament where grp<10 group by grp having count(*)=8";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$grpCount = MYDB_num_rows($result);
$grpCount = $db->queryFirstField('SELECT count(*) FROM tournament where grp<10 GROUP BY grp HAVING count(*)=8');
if($grpCount >= 8) {
$gameStor->tournament=2;
$gameStor->phase=0;
$gameStor->tournament = 2;
$gameStor->phase = 0;
}
} elseif($btn == "쪼렙전부투입" || $btn == "일반전부투입" || $btn == "굇수전부투입" || $btn == "랜덤전부투입") {
@@ -211,7 +211,7 @@ if($btn == "자동개최설정") {
for($i=0; $i < $z; $i++) {
$sel = rand() % 32;
if($btn == "쪼렙전부투입") {
$query = "select no,name,npc,leader,power,intel,explevel,leader+power+intel as total,horse,weap,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} limit {$sel},1";
$query = "select no,name,npc,leadership,strength,intel,explevel,leadership+strength+intel as total,horse,weapon,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} limit {$sel},1";
} elseif($btn == "일반전부투입") {
//참가한 사람 평균치
$query = "select AVG({$tp3}) as av from general where tournament=1";
@@ -225,21 +225,35 @@ if($btn == "자동개최설정") {
$sel += $genCount - 8;
$query = "select no,name,npc,leader,power,intel,explevel,leader+power+intel as total,horse,weap,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} desc limit {$sel},1";
$query = "select no,name,npc,leadership,strength,intel,explevel,leadership+strength+intel as total,horse,weapon,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} desc limit {$sel},1";
} elseif($btn == "굇수전부투입") {
$query = "select no,name,npc,leader,power,intel,explevel,leader+power+intel as total,horse,weap,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} desc limit {$sel},1";
$query = "select no,name,npc,leadership,strength,intel,explevel,leadership+strength+intel as total,horse,weapon,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by {$tp} desc limit {$sel},1";
} else {
$query = "select no,name,npc,leader,power,intel,explevel,leader+power+intel as total,horse,weap,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by rand() limit 0,1";
$query = "select no,name,npc,leadership,strength,intel,explevel,leadership+strength+intel as total,horse,weapon,book from general where tournament=0 and gold>='{$admin['develcost']}' and npc>=2 order by rand() limit 0,1";
}
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
$grp = intdiv($code[$i], 10);
$grp_no = $code[$i] % 10;
$query = "insert into tournament (no, npc, name, ldr, pwr, itl, lvl, grp, grp_no, h, w, b) values ('{$general['no']}', '{$general['npc']}', '{$general['name']}', '{$general['leader']}', '{$general['power']}', '{$general['intel']}', '{$general['explevel']}', '$grp', '$grp_no', '{$general['horse']}', '{$general['weap']}', '{$general['book']}')";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$query = "update general set tournament=1,gold=gold-'{$admin['develcost']}' where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->insert('tournament', [
'no'=>$general['no'],
'npc'=>$general['npc'],
'name'=>$general['name'],
'leadership'=>$general['leadership'],
'strength'=>$general['strength'],
'intel'=>$general['intel'],
'lvl'=>$general['explevel'],
'grp'=>$grp,
'grp_no'=>$grp_no,
'h'=>$general['horse'],
'w'=>$general['weapon'],
'b'=>$general['book']
]);
$db->update('general', [
'tournament'=>1,
'gold'=>$db->sqleval('gold - %i', $admin['develcost'])
], 'no=%i', $general['no']);
}
$gameStor->tournament = 2;
+14 -15
View File
@@ -9,8 +9,6 @@ $name = Util::getReq('name');
$gen = Util::getReq('gen', 'int');
$troop = Util::getReq('troop', 'int');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = $session::getUserID();
@@ -19,45 +17,46 @@ $db = DB::db();
$me = $db->queryFirstRow('SELECT `no`, nation, troop FROM general WHERE `owner`=%i', $userID);
if($name && mb_strwidth($name) > 18){
$name = mb_strimwidth($name, 0, 18);
}
$name = trim($name);
if($btn == "부 대 창 설" && $name != "" && $me['troop'] == 0) {
$db->insert('troop',[
$db->insertIgnore('troop',[
'troop_leader'=>$me['no'],
'name'=>$name,
'nation'=>$me['nation'],
'no'=>$me['no']
]);
$troopID = $db->insertId();
$db->update('general', [
'troop'=>$troopID
'troop'=>$me['no'],
], 'no=%i',$me['no']);
} elseif($btn == "부 대 변 경" && $name != "") {
$db->update('troop', [
'name'=>$name
], 'no=%i',$me['no']);
], 'troop_leader=%i',$me['no']);
} elseif($btn == "부 대 추 방" && $gen != 0) {
$db->update('general', [
'troop'=>0
], 'no=%i AND troop=(SELECT troop FROM troop WHERE no = %i)', $gen, $me['no']);
], 'no=%i AND troop= %i', $gen, $me['no']);
} elseif($btn == "부 대 가 입" && $troop != 0) {
$troopLeader = $db->queryFirstField('SELECT `no` FROM troop WHERE troop=%i', $troop);
$troopLeaderNation = $db->queryFirstField('SELECT `nation` FROM `general` WHERE `no`=%i AND `nation`=%i', $troopLeader, $me['nation']);
$troopLeaderNation = $db->queryFirstField('SELECT `nation` FROM `general` WHERE `no`=%i AND `troop`=%i AND `nation`=%i', $troop, $troop, $me['nation']);
if($troopLeaderNation){
$db->update('general', [
'troop'=>$troop
], 'no=%i', $me['no']);
}
} elseif($btn == "부 대 탈 퇴") {
$troopLeader = $db->queryFirstField('SELECT `no` FROM troop WHERE troop=%i', $me['troop']);
//부대장일 경우
if($troopLeader == $me['no']) {
if($me['troop'] == $me['no']) {
// 모두 탈퇴
$db->update('general', [
'troop'=>0
], 'troop=%i',$me['troop']);
// 부대 삭제
$db->delete('troop', 'troop=%i', $me['troop']);
$db->delete('troop', 'troop_leader=%i', $me['troop']);
} else {
$db->update('general', [
'troop'=>0
@@ -65,4 +64,4 @@ if($btn == "부 대 창 설" && $name != "" && $me['troop'] == 0) {
}
}
header('Location:b_troop.php');
header('Location:b_troop.php', true, 303);
+10 -2
View File
@@ -10,10 +10,18 @@ $userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$autorun_user = $gameStor->autorun_user;
if($autorun_user['limit_minutes']??false){
//자동 턴인 경우에는 휴가 불가
header('location:b_myPage.php', true, 303);
}
$killturn = $gameStor->killturn;
$db->update('general', ['killturn'=>$killturn*3], 'owner=%i', $userID);
$db->update('general', [
'killturn'=>$killturn*3,
], 'owner=%i', $userID);
header('location:b_myPage.php');
header('location:b_myPage.php', true, 303);
+13 -14
View File
@@ -10,8 +10,6 @@ $comment = Util::getReq('comment');
$title = Util::getReq('title');
$str = Util::getReq('str');
extractMissingPostToGlobals();
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
@@ -21,18 +19,17 @@ $isVoteAdmin |= $session->userGrade >= 5;
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
$admin = $gameStor->getValues(['develcost', 'cost', 'vote_title', 'vote', 'votecomment']);
$query = "select no,vote,name,nation,horse,weap,book,item,npc from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$me = $db->queryFirstRow('SELECT no,vote,name,nation,horse,weapon,book,item,npc from general where owner=%i', $userID);
if($btn == "투표" && $me['vote'] == 0 && $sel > 0) {
$develcost = $admin['develcost'] * 5;
$query = "update general set gold=gold+{$develcost},vote='{$sel}' where owner='{$userID}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('general', [
'gold'=>$db->sqleval('gold + %i', $develcost),
'vote'=>$sel
], 'owner=%i', $userID);
$log = [];
$log = uniqueItem($me, $log, 1);
@@ -51,7 +48,7 @@ else if($btn == "댓글" && trim($comment) != "") {
}
if(!$isVoteAdmin){
header('location:a_vote.php');
header('location:a_vote.php', true, 303);
die();
}
@@ -74,11 +71,13 @@ if($btn == "수정") {
$gameStor->vote_title = '-';
$gameStor->votecomment=[];
$query = "update general set vote='0'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('general', [
'vote'=>0
], true);
} elseif($btn == "알림") {
$query = "update general set newvote='1' where vote=0";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->update('general', [
'newvote'=>1
], 'vote=0');
} elseif($btn == "숨김") {
$gameStor->voteopen = 0;
} elseif($btn == "전체통계만") {
@@ -87,4 +86,4 @@ if($btn == "수정") {
$gameStor->voteopen = 2;
}
header('location:a_vote.php');
header('location:a_vote.php', true, 303);
-130
View File
@@ -1,130 +0,0 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
//로그인 검사
$session = Session::getInstance()->setReadOnly();
$db = DB::db();
?>
<!DOCTYPE html>
<html>
<head>
<title>커맨드리스트</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<?=WebUtil::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')?>
<script type="text/javascript">
<?php
if(!$session->isGameLoggedIn()){
echo 'window.parent.location.href = "../";';
}
?>
function myclock() {
lastday = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
date = document.clock.clock.value;
year = parseInt(date.substr(0, 4), 10);
month = parseInt(date.substr(5,2), 10);
day = parseInt(date.substr(8, 2), 10);
hour = parseInt(date.substr(11, 2), 10);
min = parseInt(date.substr(14, 2), 10);
sec = parseInt(date.substr(17, 2), 10);
//윤년계산
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { lastday[1] = 29; }
else { lastday[1] = 28; }
// if(term > 0) term--;
sec++;
if(sec >= 60) { sec = 0; min++; }
if(min >= 60) { min = 0; hour++; }
if(hour >= 24) { hour = 0; day++; }
if(day > lastday[month-1]) { month++; day = 1; }
if(month >= 13) { year++; month = 1; }
if(month < 10) { month = '0' + month; }
if(day < 10) { day = '0' + day; }
if(hour < 10) { hour = '0' + hour; }
if(min < 10) { min = '0' + min; }
if(sec < 10) { sec = '0' + sec; }
date = '' + year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + sec;
document.clock.clock.value = date;
window.setTimeout("myclock();", 1000);
}
</script>
</head>
<body OnLoad='myclock()'>
<?php
myCommandList();
function myCommandList() {
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$userID = Session::getUserID();
$date = date('Y-m-d H:i:s');
// 명령 목록
$admin = $gameStor->getValues(['year','month','turnterm']);
$me = $db->queryFirstRow("SELECT `no`,turntime,term,turn0,turn1,turn2,turn3,turn4,turn5,turn6,turn7,turn8,turn9,turn10,turn11,turn12,turn13,turn14,turn15,turn16,turn17,turn18,turn19,turn20,turn21,turn22,turn23 FROM general WHERE `owner`=%s", $userID);
if(!$me){
echo "로그인 되어있지 않습니다.";
return;
}
$turn = getTurn($me, 2);
echo "<table width=300 height=700 class='tb_layout bg2'>
<form name=clock>
<tr>
<td colspan=4 align=center id=bg0><b>- 명령 목록 - <input value='$date' type=text name=clock size=19 style=background-color:black;color:white;border-style:none;></b></td>
</tr>";
$year = $admin['year'];
$month = $admin['month'];
// 실행된 턴시간이면 +1
$cutTurn = cutTurn($me['turntime'], $admin['turnterm']);
if($date <= $cutTurn) { $month++; }
$totaldate = $me['turntime'];
for($i=0; $i < 24; $i++) {
if($month == 13) {
$month = 1;
$year++;
}
$j = $i + 1;
$turndate = substr($totaldate,11, 5);
echo "
<tr height=28>
<td width=24 align=center height=24 id=bg0><b>$j</b></td>
<td width=71 align=center height=24 id=bg1 style='overflow:hidden;'><b>{$year} {$month}</b></td>
<td width=42 align=center bgcolor=black><b>$turndate</b></td>
<td width=150 align=center height=24 style=table-layout:fixed;>$turn[$i]</td>
</tr>";
$month++;
$totaldate = addTurn($totaldate, $admin['turnterm']);
}
echo "
</form>
</table>
";
}
?>
</body>
</html>
+2
View File
@@ -1,3 +1,5 @@
@charset "UTF-8";
#container{
width:1024px;
margin:auto;
+56
View File
@@ -0,0 +1,56 @@
#newArticle{
width:1000px;
margin: 0 auto;
}
.titleInput{
width:100%;
color:white;
background-color:transparent;
border:none;
margin:1px 5px;
}
.contentInput{
width:100%;
min-height:3em;
color:white;
background-color:transparent;
border:none;
padding:1px 5px;
}
.articleFrame{
width:1000px;
margin: 20px auto;
}
.commentText{
width:100%;
}
.authorName, .comment .author{
width:110px;
font-size:85%;
}
.date{
width:125px;
font-size:85%;
}
.text{
text-align:left;
padding:1px 5px;
}
.submitComment{
width:100%;
}
.commentText{
color:white;
background-color:transparent;
border:none;
padding:1px 5px;
}
+80
View File
@@ -0,0 +1,80 @@
@charset "UTF-8";
.chiefSubTable{
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
text-align:center;
}
#chiefTurnSelector{
width:50px;
color:white;
background-color:black;
font-size:13px;
}
.chiefTurnIdx{
flex-grow:1;
border-top:solid 0.67px #888888;
line-height:21px;
}
.chiefTurnIdxPanel{
width:18px;display:flex;flex-flow:column;
}
.chiefTurnIdxPanel.tail{
border-left:solid 0.67px #888888;
}
.chiefPlate{
display:flex;
flex-flow:column;
border-left:solid 0.67px #888888;
}
.chiefTurnBox{
flex-grow: 1;
display:flex;
flex-flow: row;
max-height:22px;
}
.chiefTurnBox .turnHeader{
font-weight: bold;
text-align: center;
}
.chiefNamePlate{
border-top:solid 0.67px #888888;
font-weight: bold;
text-align: center;
flex-grow: 1;
line-height:21px;
}
.turnIdxHeader{
font-weight: bold;
text-align: center;
width:20px;
}
.chiefTurnTime{
border-top:solid 0.67px #888888;
border-right:solid 0.67px #888888;
font-weight: bold;
background: black;
text-align: center;
width:44px;
line-height:21px;
}
.chiefTurnPad{
border-top:solid 0.67px #888888;
table-layout: fixed;
width:192px;
line-height:21px;
flex-grow: 1;
white-space:nowrap;
}
+48
View File
@@ -192,10 +192,21 @@ div.bar_out div.bar_in{
font-family: '맑은 고딕';
}
.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;
}
.btn-group-xs > .btn, .btn-xs {
padding : .25rem .4rem;
font-size : .875rem;
@@ -218,3 +229,40 @@ div.bar_out div.bar_in{
margin:0;
padding:0;
}
.commandBasic{
background-color:black;
color:white;
}
.compensatePositive{
color:skyblue;
}
.compensateNegative{
color:orange;
}
.compensateNeutral{
color:white;
}
.commandBasic.commandImpossible{
background-color:red;
color:white;
}
.select2-selection--single.simple-select2-align-center .select2-selection__rendered {
text-align: center;
}
.select2-dropdown.simple-select2-align-center li.select2-results__option{
text-align: center;
}
.select2-container--bootstrap4 .select2-selection--single.text-secondary .select2-selection__rendered{
color:white;
}
.select2-container--bootstrap4 .text-secondary .select2-results__option[aria-selected=false]{
color:white;
}

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