3 Ajax Chat for TRPG ver.2.6.2
4 (c)2007-2009 Cake All Rights Reserved.
5 Mail : cake_67@users.sourceforge.jp
6 Home : http://trpgtools-onweb.sourceforge.jp/
13 ini_set('log_errors', false);
14 ini_set('error_log', "./php_error.log");
17 require_once './trpgchat-ini.php';
18 require_once './lib/trpgchat.php';
19 require_once './lib/member_check.php';
20 require_once './lib/card.php';
23 if (!$request = request()) {
24 error('リクエストを受信できません', true);
28 set_config(read_config());
37 $plname = htmlspecialchars($request['n']);
39 error('チャットに参加してください', true);
42 if (!$request['cn']) {
48 $from = obf_xor($request['f']);
49 $to = obf_xor($request['t']);
50 $deckOwner = obf_xor('deckCardSet');
52 $from = $request['f'];
54 $deckOwner = 'deckCardSet';
57 $fieldFrom =$request['ff'];
58 $fieldTo = $request['ft'];
59 $action = $request['a'];
61 if (!($to && $from && $fieldFrom && $fieldTo && $action)) {
62 error('パラメータ不足です。', true);
65 || ($fieldFrom != 'Secret' && $fieldFrom != 'Field')
66 || ($fieldTo != 'Secret' && $fieldTo != 'Field')
67 || ($action != 'r' && ($request['cn'] < 1))
68 || ($action != 'd' && $action != 'c' && $action != 'r')) {
69 error('パラメータが不正です。', true);
74 $lfp = fopen(LOCK3,"w");
75 stream_set_write_buffer($lfp, 0);
79 $deck_json = file_get_contents(NOW_DECK);
80 $deck = set_json2array($deck_json);
81 $deck_status_json = file_get_contents(NOW_DECK_STATUS);
82 $deck_status = set_json2array($deck_status_json);
84 if (!$deck || !$deck_status) {
85 error('現在のカード状態設定がありません', true);
89 if (count((array)$deck_status[$from][$fieldFrom]['card']) < 1) {
90 error($request['f'].'の'.$fieldFrom.'札がありません。', true);
93 $to_card_set = $deck_status[$to][$fromTo]['card'];
97 $target_keys = array();
100 $deck_status[$deckOwner]['Secret']['card'] = array_merge($deck_status[$deckOwner]['Secret']['card'], $deck_status[$from][$fieldFrom]['card']);
101 unset($deck_status[$from][$fieldFrom]['card']);
103 list($write_msg[0]['msg'], $action, $is_secret) = writeMoveCard($request['f'], $fieldFrom, $request['t'], $fieldTo, '', $request['tm']);
105 } elseif (!$request['id']) {
106 list($write_msg[0]['msg'], $action, $is_secret) = writeMoveCard($request['f'], $fieldFrom, $request['t'], $fieldTo, $request['cn'], $request['tm']);
107 $write_msg[1] = setCardMoveDetailForWriteToChat($action, $is_secret);
110 for ($i=0;$i<$request['cn'];$i++) {
111 if (!$deck_status[$from][$fieldFrom]['card']) {
115 $target_index = array_rand($deck_status[$from][$fieldFrom]['card'], 1);
116 $target_card = array_splice($deck_status[$from][$fieldFrom]['card'], $target_index, 1);
118 list($target_card_id, $card_head) = moveCardByTargetId(&$deck_status, $target_card, $from, $to, $fieldFrom, $fieldTo, $request['ih']);
120 $card_name = $deck[$target_card_id]['name_long'];
122 $card_name = '(逆位置)'. $card_name;
127 $write_msg[1]['msg'] .= "、";
129 $write_msg[1]['msg'] .= $card_name;
132 if (count($deck_status[$from][$fieldFrom]['card']) < 1) {
139 $target_card_id = obf_xor($request['id']);
141 $target_card_id = $request['id'];
145 foreach ($deck_status[$from][$fieldFrom]['card'] as $target_index => $v) {
146 if ($v['id'] == $target_card_id) {
147 list($write_msg[0]['msg'], $action, $is_secret) = writeMoveCard($request['f'], $fieldFrom, $request['t'], $fieldTo, 1, $request['tm']);
148 $write_msg[1] = setCardMoveDetailForWriteToChat($action, $is_secret);
150 $target_card = array_splice($deck_status[$from][$fieldFrom]['card'], $target_index, 1);
152 list($target_card_id, $card_head) = moveCardByTargetId(&$deck_status, $target_card, $from, $to, $fieldFrom, $fieldTo, $request['ih']);
154 $card_name = $deck[$target_card_id]['name_long'];
156 $card_name = '(逆位置)'. $card_name;
161 $write_msg[1]['msg'] .= "、";
163 $write_msg[1]['msg'] .= $card_name;
171 error('指定のカードがありません', true);
175 if ($write_msg[1]['isSecret']) {
176 if ($request['t'] == $request['n']) {
177 $write_msg[1]['secretTo'] = $request['f'];
178 } elseif ($request['f'] == $request['n']) {
179 $write_msg[1]['secretTo'] = $request['t'];
184 $fp = @fopen(NOW_DECK_STATUS, "w") or error("カードファイルを開けません。", true);
185 fwrite($fp, set_array2json($deck_status));
194 echo set_array2json($write_msg);