一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP網頁游戲學習之Xnova(ogame)源碼解讀(十六)

PHP網頁游戲學習之Xnova(ogame)源碼解讀(十六)

2020-07-12 17:10鐵船長 PHP教程

這篇文章主要介紹了PHP網頁游戲Xnova(ogame)源碼解讀的攻擊任務頁面的代碼流程,需要的朋友可以參考下

十九、攻擊任務(MissionCaseAttack.php)

按照艦隊任務的編號,排在第一個的就是攻擊任務。這個代碼很長,看的時候要有耐心。
好在引用的內容并不是很多,并且給出了詳細的注釋,讀者不會暈頭轉向。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
function MissionCaseAttack ($FleetRow)
{
  global $user, $phpEx, $xnova_root_path, $pricelist, $lang, $resource, $CombatCaps;
   // 在艦隊的記錄中,fleet_start_time代表的不是出發時間,而是到達目的地時間
   // 代表出發時間的是start_time
   // 此外還有fleet_end_time 這個是回到家的時間
    // fleet_end_stay 這個是結束逗留的時間(聯合防御和遠征任務會用到)
    // 所以下面這個判斷的意思是“艦隊到達了目的地”,而不是“艦隊起飛了”
    if ($FleetRow['fleet_start_time'] <= time()) {
    // fleet_mess是用來記錄艦隊的狀態的,基本可以理解為是在前進途中還是返航途中
    // 但感覺利用得并不好,如果只有兩個狀態,可以用true 和 false來記錄
    // 所以我把它設為了0,1,2三個狀態,對于需要停留的任務,停留時就處于第三個狀態
    if ($FleetRow['fleet_mess'] == 0) {
      // ↓↓ 這個判斷是試探存放戰斗數據的文件是否存在
       // 如果文件不存在,就中斷操作,提示聯系管理員
       if (!isset($CombatCaps[202]['sd'])) {
        message("<span style="FONT-FAMILY: ">" . $lang['sys_no_vars'] . "</span>", $lang['sys_error'], "fleet." . $phpEx, 2);
      }
      // ↓↓ 開始是一系列的數據庫查詢,取得攻防雙方的艦隊數量和科技等級
      // 根據艦隊信息取得防守方星球數據
      $QryTargetPlanet = "SELECT * FROM {{table}} ";
      $QryTargetPlanet .= "WHERE ";
      $QryTargetPlanet .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
      $QryTargetPlanet .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
      $QryTargetPlanet .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' AND ";
      $QryTargetPlanet .= "`planet_type` = '" . $FleetRow['fleet_end_type'] . "';";
      $TargetPlanet = doquery($QryTargetPlanet, 'planets', true);
      $TargetUserID = $TargetPlanet['id_owner'];
      // 根據艦隊信息取得攻擊方信息
      $QryCurrentUser = "SELECT * FROM {{table}} ";
      $QryCurrentUser .= "WHERE ";
      $QryCurrentUser .= "`id` = '" . $FleetRow['fleet_owner'] . "';";
      $CurrentUser = doquery($QryCurrentUser , 'users', true);
      $CurrentUserID = $CurrentUser['id'];
      // 由星球數據取得目標星球的所有者的信息
       $QryTargetUser = "SELECT * FROM {{table}} ";
      $QryTargetUser .= "WHERE ";
      $QryTargetUser .= "`id` = '" . $TargetUserID . "';";
      $TargetUser = doquery($QryTargetUser, 'users', true);
      // 然后取得雙方的科技信息
       // 其實下面這兩個完全可以與上面兩個查詢整到一起
      $QryTargetTech = "SELECT ";
      $QryTargetTech .= "`military_tech`, `defence_tech`, `shield_tech` ";
      $QryTargetTech .= "FROM {{table}} ";
      $QryTargetTech .= "WHERE ";
      $QryTargetTech .= "`id` = '" . $TargetUserID . "';";
      $TargetTechno = doquery($QryTargetTech, 'users', true);
      $QryCurrentTech = "SELECT ";
      $QryCurrentTech .= "`military_tech`, `defence_tech`, `shield_tech` ";
      $QryCurrentTech .= "FROM {{table}} ";
      $QryCurrentTech .= "WHERE ";
      $QryCurrentTech .= "`id` = '" . $CurrentUserID . "';";
      $CurrentTechno = doquery($QryCurrentTech, 'users', true);
      // ↑↑ 如果有其他的能影響艦隊三圍的項目(比如指揮官等),也應該在這里一并取出來
      // 生成防守方的艦隊(防御)
       // 如果考慮聯合防御,在上面還應該把這個星球上聯合防御的艦隊提取出來
       // 然后一起計算數量和科技水平
       for ($SetItem = 200; $SetItem 0) {
          $TargetSet[$SetItem]['count'] = $TargetPlanet[$resource[$SetItem]];
        }
      }
      // 生成攻擊方的艦隊,也是用數組存放。'fleet_array'是不能直接拿來用的
       // 這個字段的結構是  編號,數量;編號,數量; ……
       // 所以使用時需要用兩次explode把它打散然后存進數組
       $TheFleet = explode(";", $FleetRow['fleet_array']);
      foreach($TheFleet as $a =&gt; $b) {
        if ($b != '') {
          $a = explode(",", $b);
          $CurrentSet[$a[0]]['count'] = $a[1];
        }
      }
      // 包含進戰斗引擎,ready to fight
      include_once($xnova_root_path . 'includes/ataki.' . $phpEx);
      // 在輸入信息之前采集時間
       $mtime = microtime();
      $mtime = explode(" ", $mtime);
      $mtime = $mtime[1] + $mtime[0];
      $starttime = $mtime;
      // 將雙方艦隊和科技輸入戰斗引擎,并用$walka來記錄輸出結果
       $walka = walka($CurrentSet, $TargetSet, $CurrentTechno, $TargetTechno);
      // 再采集時間,得到戰斗過程所用的時間
       // 也就是“戰斗報告產生于 x.xxxxxxxxxx 秒”的由來
      $mtime = microtime();
      $mtime = explode(" ", $mtime);
      $mtime = $mtime[1] + $mtime[0];
      $endtime = $mtime;
      $totaltime = ($endtime - $starttime);
      // 分別用一個單獨的數組來記錄攻擊方的剩余艦隊信息、
       $CurrentSet = $walka["atakujacy"];
      // ……防守方的艦隊信息、
       $TargetSet = $walka["wrog"];
      // ……戰斗的勝負結果、
       $FleetResult = $walka["wygrana"];
      // ……每一輪的詳細情況、
       $dane_do_rw = $walka["dane_do_rw"];
      // 以及雙方的損失和廢墟情況
       $zlom = $walka["zlom"];
      // 計算攻擊方剩下的單位,順便把裝載量也一并計算進去了
      $FleetArray = "";
      $FleetAmount = 0;
      $FleetStorage = 0;
      foreach ($CurrentSet as $Ship =&gt; $Count) {
        $FleetStorage += $pricelist[$Ship]["capacity"] * $Count['count'];
        // 用$FleetArray記載艦隊情況,轉換成數據庫里字段的格式,準備“入庫”
          $FleetArray .= $Ship . "," . $Count['count'] . ";";
        $FleetAmount += $Count['count'];
      }
      $FleetStorage -= $FleetRow["fleet_resource_metal"];
      $FleetStorage -= $FleetRow["fleet_resource_crystal"];
      $FleetStorage -= $FleetRow["fleet_resource_deuterium"];
      // 計算防守星球戰后的情況
       $TargetPlanetUpd = "";
  if (!is_null($TargetSet)) {
        foreach($TargetSet as $Ship =&gt; $Count) {
          $TargetPlanetUpd .= "`" . $resource[$Ship] . "` = '" . $Count['count'] . "', ";
        }
  }
      // 如果戰斗結果為攻擊方獲勝,則開始計算掠奪資源的情況 ↓↓
      // 這里可以include進PlanetResourceUpdate.php,在掠奪之前先更新目標星球的資源
       $Mining['metal'] = 0;
      $Mining['crystal'] = 0;
      $Mining['deuter'] = 0;
      if ($FleetResult == "a") {
        if ($FleetStorage &gt; 0) {
          $metal = $TargetPlanet['metal'] / 2;
          $crystal = $TargetPlanet['crystal'] / 2;
          $deuter = $TargetPlanet["deuterium"] / 2;
          if (($metal) &gt; $FleetStorage / 3) {
            $Mining['metal'] = $FleetStorage / 3;
            $FleetStorage = $FleetStorage - $Mining['metal'];
          } else {
            $Mining['metal'] = $metal;
            $FleetStorage = $FleetStorage - $Mining['metal'];
          }
          if (($crystal) &gt; $FleetStorage / 2) {
            $Mining['crystal'] = $FleetStorage / 2;
            $FleetStorage = $FleetStorage - $Mining['crystal'];
          } else {
            $Mining['crystal'] = $crystal;
            $FleetStorage = $FleetStorage - $Mining['crystal'];
          }
          if (($deuter) &gt; $FleetStorage) {
            $Mining['deuter'] = $FleetStorage;
            $FleetStorage = $FleetStorage - $Mining['deuter'];
          } else {
            $Mining['deuter'] = $deuter;
            $FleetStorage = $FleetStorage - $Mining['deuter'];
          }
        }
      }
      // ↑↑ 到這里為止就計算結束了,但如果星球上金屬巨多,但晶體和重氫幾乎沒有
       // 那就會出現裝了1/3倉的金屬,剩下2/3倉全都空著
       // 所以可以考慮自己把掠奪方法完善一下,也不是很難
      $Mining['metal'] = round($Mining['metal']);
      $Mining['crystal'] = round($Mining['crystal']);
      $Mining['deuter'] = round($Mining['deuter']);
      // ↓↓ 更新數據庫
       $QryUpdateTarget = "UPDATE {{table}} SET ";
      $QryUpdateTarget .= $TargetPlanetUpd;
      $QryUpdateTarget .= "`metal` = `metal` - '" . $Mining['metal'] . "', ";
      $QryUpdateTarget .= "`crystal` = `crystal` - '" . $Mining['crystal'] . "', ";
      $QryUpdateTarget .= "`deuterium` = `deuterium` - '" . $Mining['deuter'] . "' ";
      $QryUpdateTarget .= "WHERE ";
      $QryUpdateTarget .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
      $QryUpdateTarget .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
      $QryUpdateTarget .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' AND ";
      $QryUpdateTarget .= "`planet_type` = '" . $FleetRow['fleet_end_type'] . "' ";
      $QryUpdateTarget .= "LIMIT 1;";
      doquery($QryUpdateTarget , 'planets');
      $QryUpdateGalaxy = "UPDATE {{table}} SET ";
      $QryUpdateGalaxy .= "`metal` = `metal` + '" . $zlom['metal'] . "', ";
      $QryUpdateGalaxy .= "`crystal` = `crystal` + '" . $zlom['crystal'] . "' ";
      $QryUpdateGalaxy .= "WHERE ";
      $QryUpdateGalaxy .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
      $QryUpdateGalaxy .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
      $QryUpdateGalaxy .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' ";
      $QryUpdateGalaxy .= "LIMIT 1;";
      doquery($QryUpdateGalaxy , 'galaxy');
      // ↓↓ 計算廢墟和損失的情況
       $FleetDebris = $zlom['metal'] + $zlom['crystal'];
      $StrAttackerUnits = sprintf ($lang['sys_attacker_lostunits'], pretty_number ($zlom["atakujacy"]));
      $StrDefenderUnits = sprintf ($lang['sys_defender_lostunits'], pretty_number ($zlom["wrog"]));
      $StrRuins = sprintf ($lang['sys_gcdrunits'], pretty_number ($zlom["metal"]), $lang['Metal'], pretty_number ($zlom['crystal']), $lang['Crystal']);
      $DebrisField = $StrAttackerUnits . "" . $StrDefenderUnits . "" . $StrRuins;
      // ↓↓ 計算產月概率
       $MoonChance = $FleetDebris / 100000;
      if ($FleetDebris &gt; 2000000) {
        $MoonChance = 20;
      }
      if ($FleetDebris = 100000) {
        $UserChance = mt_rand(1, 100);
        $ChanceMoon = sprintf ($lang['sys_moonproba'], $MoonChance);
      }
      // 如果RP夠好,就能產生月亮了。當然前提是這個坐標上沒有月亮
       if (($UserChance &gt; 0) and ($UserChance $MoonChance) {
        ……
       }
      // ↓↓ 從這里開始生成戰斗報告,很長,但并不復雜
       $AttackDate = date("r", $FleetRow["fleet_start_time"]);
      $title = sprintf ($lang['sys_attack_title'], $AttackDate);
      $raport = "" . $title . "";
      $zniszczony = false;
      $a_zestrzelona = 0;
      // ↓↓ 雙方攻防信息。如果有其他能影響艦隊三圍的,也要在這里加進去
       // 當然這里的數據只是顯示在戰報中而已,是不會影響島實際戰斗的
       $AttackTechon['A'] = $CurrentTechno["military_tech"] * 10;
      $AttackTechon['B'] = $CurrentTechno["defence_tech"] * 10;
      $AttackTechon['C'] = $CurrentTechno["shield_tech"] * 10;
      $AttackerData = sprintf ($lang['sys_attack_attacker_pos'], $CurrentUser["username"],$FleetRow['fleet_start_galaxy'], $FleetRow['fleet_start_system'], $FleetRow['fleet_start_planet']);
      $AttackerTech = sprintf ($lang['sys_attack_techologies'], $AttackTechon['A'],$AttackTechon['B'], $AttackTechon['C']);
      $DefendTechon['A'] = $TargetTechno["military_tech"] * 10;
      $DefendTechon['B'] = $TargetTechno["defence_tech"] * 10;
      $DefendTechon['C'] = $TargetTechno["shield_tech"] * 10;
      $DefenderData = sprintf ($lang['sys_attack_defender_pos'], $TargetUser["username"], $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']);
      $DefenderTech = sprintf ($lang['sys_attack_techologies'], $DefendTechon['A'], $DefendTechon['B'], $DefendTechon['C']);
      // 根據戰斗中每一輪的詳細情況生成交火的細節,包括每一輪的數量,攻防值,造成和吸收了多少傷害等
       // 有一些鍵值可能需要看了戰斗引擎才會明白它代表的什么,所以看不懂也沒關系 ↓↓
      foreach ($dane_do_rw as $a =&gt; $b) {
       ……
       }
      // ↓↓ 根據勝負結果顯示相應的結尾
       switch ($FleetResult) {
       ……
       }
      // 戰斗報告生成于 x.xxxxxxxxxxxx 秒
       $SimMessage = sprintf ($lang['sys_rapport_build_time'], $totaltime);
      $raport .= $SimMessage . "";
      // ↓↓ 將戰斗報告編碼,存入數據庫
       $dpath = (!$user["dpath"]) ? DEFAULT_SKINPATH : $user["dpath"];
      $rid = md5($raport);
      $QryInsertRapport = "INSERT INTO {{table}} SET ";
      $QryInsertRapport .= "`time` = UNIX_TIMESTAMP(), ";
      $QryInsertRapport .= "`id_owner1` = '" . $FleetRow['fleet_owner'] . "', ";
      $QryInsertRapport .= "`id_owner2` = '" . $TargetUserID . "', ";
      $QryInsertRapport .= "`rid` = '" . $rid . "', ";
      $QryInsertRapport .= "`a_zestrzelona` = '" . $a_zestrzelona . "', ";
      $QryInsertRapport .= "`raport` = '" . addslashes ($raport) . "';";
      doquery($QryInsertRapport , 'rw');
      // ↓↓ 這里才是發給玩家的消息,其中有一個onclick的鏈接到上面的戰報
       // 下面這個是發給攻擊方的,根據戰斗結果不同,標題也有不同的顏色
       $raport = "";
      $raport .= "";
      if ($FleetResult == "a") {
        $raport .= "";
      } elseif ($FleetResult == "r") {
        $raport .= "";
      } elseif ($FleetResult == "w") {
        $raport .= "";
      }
      $raport .= ……
       // ↓ 這里突然回到計算攻擊艦隊的資源裝載量,其實完全可以挪到上面去
       $Mining['metal'] = $Mining['metal'] + $FleetRow["fleet_resource_metal"];
      $Mining['crystal'] = $Mining['crystal'] + $FleetRow["fleet_resource_crystal"];
      $Mining['deuter'] = $Mining['deuter'] + $FleetRow["fleet_resource_deuterium"];
      // 更新艦隊信息
       $QryUpdateFleet = "UPDATE {{table}} SET ";
      $QryUpdateFleet .= "`fleet_amount` = '" . $FleetAmount . "', ";
      $QryUpdateFleet .= "`fleet_array` = '" . $FleetArray . "', ";
      $QryUpdateFleet .= "`fleet_mess` = '1', ";
      $QryUpdateFleet .= "`fleet_resource_metal` = '" . $Mining['metal'] . "', ";
      $QryUpdateFleet .= "`fleet_resource_crystal` = '" . $Mining['crystal'] . "', ";
      $QryUpdateFleet .= "`fleet_resource_deuterium` = '" . $Mining['deuter'] . "' ";
      $QryUpdateFleet .= "WHERE fleet_id = '" . $FleetRow['fleet_id'] . "' ";
      $QryUpdateFleet .= "LIMIT 1 ;";
      doquery($QryUpdateFleet , 'fleets');
      // 發送戰斗消息給攻擊方
       SendSimpleMessage ($CurrentUserID, '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_attack_report'], $raport);
      // ↓ 又突然插進來開始計算戰斗經驗和戰斗次數
       // 嚴重懷疑coder寫這個文件時是不是喝高了
       $AddPoint = $CurrentUser['xpraid'] + 1;
      $QryUpdateOfficier = "UPDATE {{table}} SET ";
      $QryUpdateOfficier .= "`xpraid` = '" . $AddPoint . "' ";
      $QryUpdateOfficier .= "WHERE id = '" . $CurrentUserID . "' ";
      $QryUpdateOfficier .= "LIMIT 1 ;";
      doquery($QryUpdateOfficier, 'users');
      $RaidsTotal = $CurrentUser['raids'] + 1;
      if ($FleetResult == "a") {
        $RaidsWin = $CurrentUser['raidswin'] + 1;
        $QryUpdateRaidsCompteur = "UPDATE {{table}} SET ";
        $QryUpdateRaidsCompteur .= "`raidswin` ='" . $RaidsWin . "', ";
        $QryUpdateRaidsCompteur .= "`raids` ='" . $RaidsTotal . "' ";
        $QryUpdateRaidsCompteur .= "WHERE id = '" . $CurrentUserID . "' ";
        $QryUpdateRaidsCompteur .= "LIMIT 1 ;";
        doquery($QryUpdateRaidsCompteur, 'users');
      } elseif ($FleetResult == "r" || $FleetResult == "w") {
        $RaidsLoose = $CurrentUser['raidsloose'] + 1;
        $QryUpdateRaidsCompteur = "UPDATE {{table}} SET ";
        $QryUpdateRaidsCompteur .= "`raidswin` ='" . $RaidsLoose . "', ";
        $QryUpdateRaidsCompteur .= "`raids` ='" . $RaidsTotal . "' ";
        $QryUpdateRaidsCompteur .= "WHERE id = '" . $CurrentUserID . "' ";
        $QryUpdateRaidsCompteur .= "LIMIT 1 ;";
        doquery($QryUpdateRaidsCompteur, 'users');
      }
      // ↓↓ 終于又回來了,開始寫發給防御方的消息
       $raport2 = "";
      $raport2 .= "";
      if ($FleetResult == "a") {
        $raport2 .= "";
      } elseif ($FleetResult == "r") {
        $raport2 .= "";
      } elseif ($FleetResult == "w") {
        $raport2 .= "";
      }
      $raport2 .= $lang['sys_mess_attack_report'] . " [" . $FleetRow['fleet_end_galaxy'] . ":" . $FleetRow['fleet_end_system'] . ":" . $FleetRow['fleet_end_planet'] . "]";
      SendSimpleMessage ($TargetUserID, '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_attack_report'], $raport2);
    }
      // ↓↓ 如果艦隊回到出發地了,就開始卸貨,然后飛機入庫
       $fquery = "";
      if ($FleetRow['fleet_end_time'] $Count) {
          $fquery .= "`" . $resource[$Ship] . "` = `" . $resource[$Ship] . "` + '" . $Count['count'] . "', ";
        }
      } else {
        $fleet = explode(";", $FleetRow['fleet_array']);
        foreach($fleet as $a =&gt; $b) {
          if ($b != '') {
            $a = explode(",", $b);
            $fquery .= "{$resource[$a[0]]}={$resource[$a[0]]} + {$a[1]}, \n";
          }
        }
      }
      // → 到最后別忘了刪除這一條艦隊記錄,不然會一直占用航道。對其他艦隊任務也是一樣
       doquery ("DELETE FROM {{table}} WHERE `fleet_id` = " . $FleetRow["fleet_id"], 'fleets');
      if (!($FleetResult == "w")) {
        $QryUpdatePlanet = "UPDATE {{table}} SET ";
        $QryUpdatePlanet .= $fquery;
        $QryUpdatePlanet .= "`metal` = `metal` + " . $FleetRow['fleet_resource_metal'] . ", ";
        $QryUpdatePlanet .= "`crystal` = `crystal` + " . $FleetRow['fleet_resource_crystal'] . ", ";
        $QryUpdatePlanet .= "`deuterium` = `deuterium` + " . $FleetRow['fleet_resource_deuterium'] . " ";
        $QryUpdatePlanet .= "WHERE ";
        $QryUpdatePlanet .= "`galaxy` = " . $FleetRow['fleet_start_galaxy'] . " AND ";
        $QryUpdatePlanet .= "`system` = " . $FleetRow['fleet_start_system'] . " AND ";
        $QryUpdatePlanet .= "`planet` = " . $FleetRow['fleet_start_planet'] . " AND ";
        $QryUpdatePlanet .= "`planet_type` = " . $FleetRow['fleet_start_type'] . " LIMIT 1 ;";
        doquery($QryUpdatePlanet, 'planets');
      }
    }
  }
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜理论电影在线观看亚洲 | 妇乱子伦激情 | 成人毛片1024你懂的 | 关晓彤一级做a爰片性色毛片 | 青草视频在线观看免费资源 | 农村老妇1乱69系列小说 | 四虎影视色费永久在线观看 | 先锋影音 av | 成人精品福利 | 晚上禁用的十大黄台视频 | 午夜欧美精品久久久久久久 | 色综色天天综合网 | 波多野结衣护士 | 精品一区二区免费视频蜜桃网 | 国产专区亚洲欧美另类在线 | 思思91精品国产综合在线 | 国产a不卡片精品免费观看 国产aaa伦理片 | 日本视频高清 | 欧美高清milf在线播放 | 91精品国产品国语在线不卡 | 九九热视频免费观看 | 丰腴尤物贵妇浪荡小说 | 99草精品视频 | 色婷婷久久综合中文久久一本 | 欧美精品一区二区三区免费观看 | 金牛网155755水心论坛黄大父母 | 国产精品一区三区 | 精品日韩欧美一区二区三区在线播放 | 午夜AV内射一区二区三区红桃视 | 国产精品视频一区二区三区经 | 精品久久久久中文字幕日本 | 亚洲2017天堂色无码 | 免费视频一区二区 | caonila国产在线观看 | 欧美日韩一区二区三区在线视频 | 视频一区精品 | 国产精品怡红院在线观看 | 婷婷日韩| 久久99亚洲热最新地址获取 | 农村老妇1乱69系列小说 | 色男人网 |