コード例 #1
0
ファイル: atakuj.php プロジェクト: WlasnaGra/PlanetX
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';
            }
        }
    }
}
コード例 #2
0
ファイル: trenuj.php プロジェクト: WlasnaGra/PlanetX
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";
            }
        }
    }
}
コード例 #3
0
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']);
    }
}
コード例 #4
0
ファイル: bitwa.php プロジェクト: WlasnaGra/PlanetX
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']);
    }
}
コード例 #5
0
ファイル: armia.php プロジェクト: WlasnaGra/PlanetX
<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";
}