function atakuj($dane, $cel, $armia) { //zabezpiecz zmienne $cel = vText($cel); $count = 0; foreach ($armia as $key => $value) { $key = (int) $key; $armia[$key] = (int) $value; if ($value < 1) { unset($armia[$key]); } $count += (int) $value; } if ($count < 1) { $error = 'wyślij minimum 1 jednostkę'; } else { $query = ''; foreach ($armia as $key => $value) { $query .= "(select count(*) from planetx_jednostki_planety where jednostka = " . $key . " and planeta_id =" . $dane['aktywna_planeta'] . " and ilosc >= " . $value . ")+"; } $query = substr($query, 0, -1); $query = "select " . $query . " as ile"; $can = mysql_fetch_array(mysql_query($query)); if ($can['ile'] < count($armia)) { $error = 'nie posiadasz tyle jednostek'; } else { $vs = mysql_fetch_array(mysql_query("select * from planetx_planety where nazwa='" . $cel . "' limit 1")); if (empty($vs['nazwa'])) { $error = 'nie ma takiej planety'; } elseif ($vs['gracz_id'] == $dane['gracz']) { $error = 'nie atakuj swoich miast'; } else { $x = mysql_fetch_array(mysql_query("select * from planetx_galaktyka where planeta_id = " . $dane['aktywna_planeta'])); $y = mysql_fetch_array(mysql_query("select * from planetx_galaktyka where planeta_id = " . $vs['planeta'])); if ($x['x'] != $vs['x'] && $x['y'] == $vs['y']) { $zasieg = abs($vs['x'] - $x['x']) * 300; } elseif ($x['x'] == $vs['x'] && $x['y'] != $vs['y']) { $zasieg = abs($vs['y'] - $x['y']) * 300; } else { $zasieg = floor(sqrt(pow(abs($vs['x'] - $x['x']), 2) + pow(abs($vs['y'] - $x['y']), 2))) * 300; } mysql_query("insert into planetx_ataki(planeta_id, planeta_id_cel, start, koniec, status)\n\t\t\t\t\t\t\t\tvalue (" . $dane['aktywna_planeta'] . "," . $vs['planeta'] . "," . time() . "," . (time() + $zasieg) . ",0)"); $id = mysql_insert_id(); $query1 = "insert into planetx_ataki_jednostki(atak_id, jednostka, ilosc, atak, obrona, wytrzymalosc) values"; fx('jednostki'); $jednostki = jednostki(); foreach ($armia as $key => $value) { mysql_query("update planetx_jednostki_planety set ilosc = ilosc - " . $value . " where jednostka = " . $key . " and planeta_id =" . $dane['aktywna_planeta']); $query1 .= "(" . $id . ", " . $key . ", " . $value . ", " . $jednostki[$key]['atak'] . ", " . $jednostki[$key]['obrona'] . ", " . $jednostki[$key]['wytrzymalosc'] . " ),"; } $query1 = substr($query1, 0, -1); mysql_query($query1); return 'wysłano'; } } } }
function trenuj($dane, $id, $ilu) { //zabezpiecz zmienne $id = (int) $id; $ilu = (int) $ilu; $kolejka_trenowania = 10; //pobierz jednostki gry fx('jednostki'); $jednostki = jednostki(); if (empty($jednostki[$id])) { return "nie ma takiej jednosti"; } //pobierz poziom wymaganego obiektu $obiekt = mysql_fetch_array(mysql_query("select poziom from planetx_budynki_planety where planeta_id = " . $dane['aktywna_planeta'] . " and budynek = " . $jednostki[$id]['wymagany_budynek_id'] . " and poziom >= " . $jednostki[$id]['wymagany_budynek_poziom'])); if (empty($obiekt)) { return "nie posiadasz wymaganego budynku"; } elseif ($ilu < 1) { return "muszisz trenować minimum 1 jednostkę"; } else { if ($jednostki[$id]['metal'] * $ilu > $dane['planeta']['metal'] || $jednostki[$id]['krysztaly'] * $ilu > $dane['planeta']['krysztaly'] || $jednostki[$id]['paliwo'] * $ilu > $dane['planeta']['paliwo'] || $jednostki[$id]['populacja'] * $ilu > $dane['planeta']['populacja_max'] - $dane['planeta']['populacja']) { return "nie masz wystarczającej ilości surowców"; } else { $kolejka = mysql_fetch_array(mysql_query("select count(*) as kolejka from planetx_jednostki_kolejka where planeta_id = " . $dane['aktywna_planeta'])); if ($kolejka['kolejka'] == $kolejka_trenowania) { return "kolejka zajęta"; } else { //pobierz ostatni budynek z kolejki $ostatni = mysql_fetch_array(mysql_query("select koniec from planetx_jednostki_kolejka where planeta_id = " . $dane['aktywna_planeta'] . " order by koniec desc limit 1")); if (empty($ostatni['koniec'])) { //jeżeli nic nie jest budowane to ustaw aktualny czas jako start budowy $start = time(); } else { //jest coś budowane, więc dodaj budynek na koniec kolejki rozbudowy $start = $ostatni['koniec']; } $koniec = $start + $jednostki[$id]['czas_budowy'] * $ilu; //dodaj do kolejki mysql_query("insert into planetx_jednostki_kolejka (planeta_id, jednostka, ilosc, start, koniec) value (" . $dane['aktywna_planeta'] . "," . $id . "," . $ilu . "," . $start . "," . $koniec . ")"); //odbierz surowce mysql_query($q = "update planetx_planety set metal = metal -" . $jednostki[$id]['metal'] * $ilu . ", krysztaly = krysztaly - " . $jednostki[$id]['krysztaly'] * $ilu . ", paliwo = paliwo -" . $jednostki[$id]['paliwo'] * $ilu . ", populacja = populacja +" . $jednostki[$id]['populacja'] * $ilu . " where planeta = " . $dane['aktywna_planeta']); return "rozpoczęto trening"; } } } }
function przerwij_trening($dane, $kolejka) { //zabezpiecz zmienne //sprawdź czy dany budynek był budowany $wkolejce = mysql_fetch_array(mysql_query("select * from planetx_jednostki_kolejka where planeta_id = " . $dane['aktywna_planeta'] . " and kolejka = " . $kolejka)); if (empty($wkolejce)) { return "nie ma takiego zdarzenia"; } else { //pobierz jednostki fx('jednostki'); $jednostki = jednostki(); if (empty($jednostki[$wkolejce['jednostka']])) { return "nie ma takiej jednosti"; } //usuń z kolejki mysql_query("delete from planetx_jednostki_kolejka where planeta_id = " . $dane['aktywna_planeta'] . " and kolejka = " . $kolejka); //zwróć część surowców, populacji trzeba zwrócić zawsze tyle samo mysql_query("\n\t\tupdate planetx_planety\n\t\t\tset metal = (case when metal + " . $wkolejce['ilosc'] * $jednostki[$wkolejce['jednostka']]['metal'] * 0.9 . " >= surowce_max then surowce_max else metal + " . $wkolejce['ilosc'] * $jednostki[$wkolejce['jednostka']]['metal'] * 0.9 . " end ) ,\n\n\t\t\tkrysztaly = (case when krysztaly + " . $wkolejce['ilosc'] * $jednostki[$wkolejce['jednostka']]['krysztaly'] * 0.9 . " >= surowce_max then surowce_max else krysztaly + " . $wkolejce['ilosc'] * $jednostki[$wkolejce['jednostka']]['krysztaly'] * 0.9 . " end ),\n\n\t\t\tpaliwo = (case when paliwo + " . $wkolejce['ilosc'] * $jednostki[$wkolejce['jednostka']]['paliwo'] * 0.9 . " >= surowce_max then surowce_max else paliwo + " . $wkolejce['ilosc'] * $jednostki[$wkolejce['jednostka']]['paliwo'] * 0.9 . " end ),\n\n\t\t\t\n\n\t\t\tpopulacja = (case when populacja + " . $wkolejce['ilosc'] * $jednostki[$wkolejce['jednostka']]['populacja'] . " >= populacja_max then populacja_max else populacja - " . $wkolejce['ilosc'] * $jednostki[$wkolejce['jednostka']]['populacja'] . " end )\n\t\twhere planeta = " . $dane['aktywna_planeta']); //przyspiesz budowanie budynków, jeżeli po tym budynku było coś na końcu kolejki $ile = $wkolejce['koniec'] - time(); mysql_query("update planetx_jednostki_kolejka set start = start - " . $ile . ", koniec = koniec - " . $ile . " where planeta_id = " . $dane['aktywna_planeta'] . " and start > " . $wkolejce['start']); } }
function bitwa($event) { //atakujący $planeta1 = mysql_fetch_array(mysql_query("select * from planetx_planety inner join planetx_gracze on gracz_id = gracz where planeta = " . $event['planeta_id'])); //obrońca $planeta2 = mysql_fetch_array(mysql_query("select * from planetx_planety inner join planetx_gracze on gracz_id = gracz where planeta = " . $event['planeta_id_cel'])); fx('jednostki'); $jednostki = jednostki(); $armia = mysql_query($q = "select * from planetx_ataki_jednostki where atak_id = " . $event['atak']); $i = 1; while ($oddzial = mysql_fetch_array($armia)) { $atakujacy[$i]['nazwa'] = $jednostki[$oddzial['jednostka']]['nazwa']; $atakujacy[$i]['atak'] = $oddzial['atak']; $atakujacy[$i]['obrona'] = $oddzial['obrona']; $atakujacy[$i]['wytrzymalosc'] = $oddzial['wytrzymalosc']; $atakujacy[$i]['ilosc'] = $oddzial['ilosc']; } $armia2 = mysql_query("select * from planetx_jednostki_planety where planeta_id = " . $event['planeta_id_cel'] . " and ilosc > 0"); $i = 1; while ($oddzial = mysql_fetch_array($armia2)) { $obronca[$i]['nazwa'] = $jednostki[$oddzial['jednostka']]['nazwa']; $obronca[$i]['atak'] = $oddzial['atak']; $obronca[$i]['obrona'] = $oddzial['obrona']; $obronca[$i]['wytrzymalosc'] = $oddzial['wytrzymalosc']; $obronca[$i]['ilosc'] = $oddzial['ilosc']; } $tekst1 = "Twoja armia z planety " . $planeta1['nazwa'] . " zaatakowała planeta " . $planeta2['nazwa'] . "<br/>"; $tekst2 = "Wrogowie z planety " . $planeta1['nazwa'] . " zaatakowali Twoje planeta " . $planeta2['nazwa'] . "<br/>"; if (empty($obronca) == 0) { $tekst1 .= "Nie napotkano oporu<br/>"; } while (!empty($atakujacy) && !empty($obronca)) { foreach ($atakujacy as $oddzial) { if (!empty($obronca)) { shuffle($obronca); $key = array_rand($obronca); $przeciwnik = $obronca[$key]; if (!empty($przeciwnik)) { $atak = $oddzial['atak'] * $oddzial['ilosc']; $obrona = $przeciwnik['obrona'] * $przeciwnik['ilosc']; $rany = $atak - $obrona; if ($rany < $oddzial['ilosc']) { $rany = $oddzial['ilosc']; } $zabito = floor($rany / $przeciwnik['wytrzymalosc']); if ($zabito < 1) { $zabito = 1; } if ($zabito > $przeciwnik['ilosc']) { $zabito = $przeciwnik['ilosc']; } $przeciwnik['ilosc'] -= $zabito; if ($przeciwnik['ilosc'] < 1) { unset($obronca[$key]); } else { $obronca[$key] = $przeciwnik; } } } } foreach ($obronca as $oddzial) { if (!empty($atakujacy)) { shuffle($atakujacy); $key = array_rand($atakujacy); $przeciwnik = $atakujacy[$key]; if (!empty($przeciwnik)) { $atak = $oddzial['atak'] * $oddzial['ilosc']; $obrona = $przeciwnik['obrona'] * $przeciwnik['ilosc']; $rany = $atak - $obrona; if ($rany < $oddzial['ilosc']) { $rany = $oddzial['ilosc']; } $zabito = floor($rany / $przeciwnik['wytrzymalosc']); if ($zabito < 1) { $zabito = 1; } if ($zabito > $przeciwnik['ilosc']) { $zabito = $przeciwnik['ilosc']; } $przeciwnik['ilosc'] -= $zabito; if ($przeciwnik['ilosc'] < 1) { unset($atakujacy[$key]); } else { $atakujacy[$key] = $przeciwnik; } } } } } if (empty($obronca) && !empty($atakujacy)) { $zwyciezca = 1; //zabij obrońcę mysql_query("update planetx_jednostki_planety set ilosc = 0 where planeta_id = " . $planeta2['planeta']); foreach ($atakujacy as $oddzial) { mysql_query("update planetx_ataki_jednostki set ilosc = " . $oddzial['ilosc'] . " where jednostka = " . $oddzial['jednostka'] . " and atak_id = " . $event['atak']); } mysql_query("delete from planetx_ataki_jednostki where ilosc = 0 and atak_id = " . $event['atak']); $tekst1 .= "Wygrałeś bitwę<br/>"; $tekst2 .= "Przegrałeś bitwę<br/>"; if ($planeta2['morale'] > 10) { mysql_query("update planetx_planety set morale = morale - 10 where planeta =" . $planeta2['planeta']); } else { mysql_query("update planetx_planety set gracz_id = " . $planeta1['gracz_id'] . ", morale = 100 where morale < 11 and planeta = " . $planeta2['planeta']); $tekst1 .= 'Przejąłeś planeta ' . $planeta2['nazwa'] . ' !!<br/>'; $tekst2 .= 'Straciłeś planeta ' . $planeta2['nazwa'] . ' !!<br/>'; mysql_query("update planetx_gracze set aktywna_planeta = 0 where aktywna_planeta =" . $planeta2['planeta']); } } elseif (empty($obronca) && empty($atakujacy)) { $zwyciezca = 0; //zabij obrońcę mysql_query("update planetx_jednostki_planety set ilosc = 0 where planeta_id = " . $planeta2['planeta']); //zabij atakującego mysql_query("delete from planetx_ataki_jednostki where ilosc = 0 and atak_id = " . $event['atak']); mysql_query("delete from planetx_ataki where atak = " . $event['atak']); $tekst1 .= "Bitwa nierozstrzygnięta<br/>"; $tekst2 .= "Bitwa nierozstrzygnięta<br/>"; mysql_query("update planetx_planety set morale = morale + 5 where planeta =" . $planeta2['planeta']); } else { $zwyciezca = 2; //zabij obrońcę foreach ($obronca as $oddzial) { mysql_query("update planetx_jednostki_planety set ilosc = " . $oddzial['ilosc'] . " where jednostka = " . $oddzial['jednostka'] . " and planeta_id = " . $planeta2['planeta']); } //zabij atakującego mysql_query("delete from planetx_ataki_jednostki where ilosc = 0 and atak_id = " . $event['atak']); mysql_query("delete from planetx_ataki where atak = " . $event['atak']); $tekst2 .= "Wygrałeś bitwę<br/>"; $tekst1 .= "Przegrałeś bitwę<br/>"; mysql_query("update planetx_planety set morale = morale + 10 where planeta =" . $planeta2['planeta']); } fx('wiadomosc_wyslij'); $a = wiadomosc_wyslij(1, $planeta1['login'], $tekst1); $a = wiadomosc_wyslij(1, $planeta2['login'], $tekst2); if ($zwyciezca == 1) { $czas = $event['koniec'] - $event['start']; mysql_query("update planetx_ataki set status = 1, start = " . time() . ", koniec = " . (time() + $czas) . " where atak = " . $event['atak']); } }
<div style='margin:10px; text-align:center'> <a href='?akcja=armia'>podgląd</a> | <a href='?akcja=trening'>trening</a> | <a href='?akcja=ataki'>ataki</a> </div> <?php $armia = mysql_query("select * from planetx_jednostki_planety where planeta_id = " . $gracz['aktywna_planeta'] . " and ilosc > 0"); if (mysql_num_rows($armia) == 0) { echo "nie posiadasz jednostek w armii"; } else { //pobierz jednostki gry fx('jednostki'); $jednostki = jednostki(); echo "\n\t<form action='?akcja=ataki' method='post'>\n\t<table>\n\t<tr style='background:#01498D'>\n\t\t<th>nazwa</th>\n\t\t<th>ilość</th>\n\t\t<th>poślij</th>\n\t</tr>\n\t\n\t"; while ($oddzial = mysql_fetch_array($armia)) { echo "\n\t\t<tr style='text-align:center'>\n\t\t\t<td>" . $jednostki[$oddzial['jednostka']]['nazwa'] . "</td>\n\t\t\t<td>" . $oddzial['ilosc'] . "</td>\n\t\t\t<td>\n\t\t\t\t<input type='text' name='jednostki[" . $oddzial['jednostka'] . "]' value='0'>\n\t\t\t</td>\n\t\t</tr>"; } echo "\n\t<tr style='background:#01498D'>\n\t\t<td colspan=3>\n\t\t\tcel: <input type='text' name='cel' value='" . $_GET['atakuj'] . "'> <input type='submit' value='zaatakuj'/>\n\t\t</td>\n\t</tr>\n\t</table>\n\n\t</form>\n\t"; }