Exemple #1
0
 public function caravan_send($config, $player, $town, $wood, $stone, $iron)
 {
     $town = textV($town);
     $wood = (int) $wood;
     $stone = (int) $stone;
     $iron = (int) $iron;
     if ($wood + $stone + $iron < 1) {
         $msg = 'wyślij minimum 1 sztukę jakiegoś surowca';
     } elseif ($player->clan_id == 0) {
         $msg = 'nie jesteś w klanie, karawany można wysyłać tylko do sojuszników w swoim klanie';
     } elseif ($player->town->t_wood < $wood || $player->town->t_stone < $stone || $player->town->t_iron < $iron) {
         $msg = 'nie posiadasz tyle surowców';
     } else {
         $can = get_row($q = "select clan_id, t_id from users inner join towns on t_usr_id = usr_id where t_name = '" . $town . "' limit 1");
         if (empty($can)) {
             $msg = 'takie miasto nie istnieje';
         } elseif ($can->clan_id != $player->clan_id) {
             $msg = 'te miasto nie jest w tym samym klanie co ty';
         } else {
             $event_check = get_one("select count(*) from events where (e_type = 20 or e_type = 21) and e_done = 0 and e_t_id = " . $player->actual_town);
             if ($event_check > 9) {
                 $msg = 'masz już maksymalną ilość karawan w podróży';
             } else {
                 $market_lvl = get_one("select go_lvl from game_objects where go_type = 1 and go_subtype = 6 and go_t_id = " . $player->actual_town);
                 if (empty($market_lvl)) {
                     $msg = 'nie posiadasz rynku, jak chcesz wysłać karawanę??';
                 } elseif ($market_lvl <= $event_check) {
                     $msg = 'masz już maksymalną ilość karawan w podróży';
                 } else {
                     $y = get_row("select * from map where m_t_id =" . $can->t_id);
                     $x = get_row("select * from map where m_t_id =" . $player->actual_town);
                     if ($x->m_x != $y->m_x && $x->m_y == $y->m_y) {
                         $range = abs($y->m_x - $x->m_x) * 300;
                     } elseif ($x->m_x == $y->m_x && $x->m_y != $y->m_y) {
                         $range = abs($y->m_y - $x->m_y) * 300;
                     } else {
                         $range = floor(sqrt(pow(abs($y->m_x - $x->m_x), 2) + pow(abs($y->m_y - $x->m_y), 2))) * 300;
                     }
                     call("insert into caravan(ca_from, ca_to, ca_wood, ca_stone, ca_iron)\n\t\t\t\t\t\t\tvalue(" . $player->actual_town . "," . $can->t_id . "," . $wood . "," . $stone . "," . $iron . ")");
                     $ca = get_row("select last_insert_id() as ca, unix_timestamp() as estart");
                     require_once 'functions/TownMgr.php';
                     $TownMgr = new TownMgr();
                     $TownMgr->change_resources($config, $player->actual_town, -$wood, -$stone, -$iron, 0);
                     require_once 'functions/EventsMgr.php';
                     $EventMgr = new EventsMgr();
                     $EventMgr->event_add($config, $player->actual_town, 20, $can->t_id, $ca->ca, 0, $ca->estart, $ca->estart + $range, 0);
                     $msg = 'wysłano karawanę do miasta ' . $town;
                 }
             }
         }
     }
     return $msg;
 }
Exemple #2
0
 public function town_main($config, $player)
 {
     $town = (int) $town;
     $events = get_all("select * from events where e_t_id = " . $player->actual_town . " and e_done = 0 and e_end <= unix_timestamp()");
     require_once 'functions/EventsMgr.php';
     $eventMgr = new EventsMgr();
     if (is_array($events)) {
         foreach ($events as $event) {
             $this->build_end($event->e_t_id, $event->e_type, $event->e_subtype, $event->e_count, $event->e_start, $event->e_end);
             $eventMgr->event_end($config, $event->e_id, $event->e_t_id);
         }
     }
 }
Exemple #3
0
 public function colectors_send($config, $player, $town, $count)
 {
     $town = textV($town);
     $count = (int) $count;
     if ($count < 1) {
         $msg = 'wyślij minimum 1 zwiadowcę';
     } else {
         $can = get_row($q = "select go_lvl from game_objects where go_type = 3 and go_subtype = 8 and go_t_id =" . $player->actual_town);
         if (empty($can)) {
             $msg = 'nie posiadasz zbieraczy';
         } elseif ($can->go_lvl < $count) {
             $msg = 'nie posiadasz zbieraczy';
         } else {
             $event_check = get_one("select count(*) from events where (e_type = 70 or e_type = 71) and e_done = 0 and e_t_id = " . $player->actual_town);
             if ($event_check > 9) {
                 $msg = 'masz już maksymalną ilość wysłanych grup zbieraczy';
             } else {
                 $can = get_row("select t_id, t_usr_id from towns where t_name ='" . $town . "' limit 1");
                 if (empty($can)) {
                     $msg = 'nie ma takiego miasta';
                 } else {
                     $y = get_row("select * from map where m_t_id =" . $can->t_id);
                     $x = get_row("select * from map where m_t_id =" . $player->actual_town);
                     if ($x->m_x != $y->m_x && $x->m_y == $y->m_y) {
                         $range = abs($y->m_x - $x->m_x) * 300;
                     } elseif ($x->m_x == $y->m_x && $x->m_y != $y->m_y) {
                         $range = abs($y->m_y - $x->m_y) * 300;
                     } else {
                         $range = floor(sqrt(pow(abs($y->m_x - $x->m_x), 2) + pow(abs($y->m_y - $x->m_y), 2))) * 300;
                     }
                     $tnow = get_one("select unix_timestamp()");
                     call("update game_objects set go_lvl = go_lvl - {$count} where go_type = 3 and go_subtype = 8 and go_t_id =" . $player->actual_town);
                     call("insert into colectors (co_counts) value (" . $count . ")");
                     $id = get_one("select last_insert_id()");
                     require_once 'functions/EventsMgr.php';
                     $EventMgr = new EventsMgr();
                     $EventMgr->event_add($config, $player->actual_town, 70, $can->t_id, $id, 0, $tnow, $tnow + $range, 0);
                     $msg = 'wysłano wyprawę do miasta ' . $town;
                 }
             }
         }
     }
     return $msg;
 }
Exemple #4
0
 public function build_stop($config, $event, $player)
 {
     $event = (int) $event;
     $error = 1;
     //sprawdź czy w ogóle takie zdarzenie w kolejce istnieje
     $event_check = get_row($q = "select e_type, e_subtype, e_count from events where e_id = " . $event . " and e_done = 0 and e_t_id = " . $player->actual_town . " limit 1");
     if (empty($event_check)) {
         //nie ma takiego zdarzenia
         $error = 2;
     } else {
         //pobierz dane obiektu
         $object = get_row("\n\t\t\t\tselect * from game_objects_param \n\t\t\t\tleft join game_objects \n\t\t\t\ton go_t_id = " . $player->actual_town . "\n\t\t\t\tand go_gop_id = gop_id\n\t\t\t\twhere gop_type = " . $event_check->e_type . " and gop_subtype = " . $event_check->e_subtype . "\n\t\t\t\tlimit 1\n\t\t\t");
         //jeżeli obiektu nie ma na liście obiektów wybudowanych, to bierz pod uwagę parametry startowe
         if (empty($object->go_id)) {
             if (empty($object->gop_id)) {
                 //jeżeli w ogóle nie ma takiego obiektu ustaw error = 2
                 $error = 2;
             } else {
                 //pobierz koszt z parametrów startowych i przemnóż przez ilość budowanych obiektów
                 $object->go_wood = $object->gop_wood * $event_check->e_count;
                 $object->go_stone = $object->gop_stone * $event_check->e_count;
                 $object->go_iron = $object->gop_iron * $event_check->e_count;
                 $object->go_pop = $object->gop_pop * $event_check->e_count;
             }
         } else {
             //przemnóż przez ilość budowanych obiektów
             $object->go_wood = $object->go_wood * $event_check->e_count;
             $object->go_stone = $object->go_stone * $event_check->e_count;
             $object->go_iron = $object->go_iron * $event_check->e_count;
             $object->go_pop = $object->go_pop * $event_check->e_count;
         }
         //nie wywaliło error = 2
         if ($error == 1) {
             //przerwij budowanie
             require_once 'functions/EventsMgr.php';
             $eventend = new EventsMgr();
             $eventend->event_stop($config, $event, $player->actual_town);
             //zwróć surowce
             require_once 'functions/TownMgr.php';
             $town = new TownMgr();
             $town->change_resources($config, $player->actual_town, floor($object->go_wood * 0.9), floor($object->go_stone * 0.9), floor($object->go_iron * 0.9), -$object->go_pop);
             $error = 0;
         }
     }
     return $error;
 }
Exemple #5
0
 public function spell_cast($config, $player, $spell)
 {
     $spell = intV($spell);
     $can = get_row("select *, unix_timestamp() as tnow from arena_spells_param inner join arena_user_spells on usp_usr_id = " . $player->usr_id . " and usp_spp_id = " . $spell . " where spp_id = " . $spell . " limit 1");
     if (empty($can)) {
         $msg = 'nie ma takiego zaklęcia ';
     } elseif ($player->energy < $can->spp_energy) {
         $msg = 'za mało energii';
     } elseif ($can->usp_active == 1) {
         $msg = 'już aktywne';
     } else {
         call("update arena_user_spells set usp_active = 1 where usp_usr_id = " . $player->usr_id . " and usp_spp_id = " . $spell);
         call("update arena_users set energy =  energy - " . $can->spp_energy . " where usr_id = " . $player->usr_id);
         $this->add_stats($config, $player, $can->spp_attack, $can->spp_defence, $can->spp_absorb, $can->spp_life_max, $can->spp_energy_max, $can->spp_life_inc, $can->spp_energy_inc, $can->spp_dam_min, $can->spp_dam_max);
         require_once 'funkcje/EventsMgr.php';
         $EventsMgr = new EventsMgr();
         $EventsMgr->event_add($config, $player->usr_id, 1, $spell, 0, $can->tnow, $can->tnow + $can->spp_time, 0);
         $msg = 'rzucono zaklęcie';
     }
     return $msg;
 }
Exemple #6
0
 public function army_send($config, $player, $town, $units)
 {
     $town = textV($town);
     $sum = 0;
     foreach ($units as $unit) {
         $unit = (int) $unit;
         $sum += $unit;
     }
     if ($sum < 1) {
         $msg = 'wyślij minimum 1 jednostkę';
     } else {
         $check = count($units);
         foreach ($units as $key => $value) {
             $can = get_row("select * from game_objects where go_type = 3 and go_subtype = {$key} and go_t_id =" . $player->actual_town . " and go_lvl >= {$value}");
             if (!empty($can)) {
                 $check--;
             }
             $units1[$key]->data = $can;
             $units1[$key]->count = $value;
         }
         if ($check != 0) {
             $msg = 'nie posiadasz tyle jednostek';
         } else {
             $event_check = get_one("select count(*) from events where (e_type = 30 or e_type = 31) and e_done = 0 and e_t_id = " . $player->actual_town);
             if ($event_check > 9) {
                 $msg = 'masz już maksymalną ilość wysłanych wypraw wojskowych';
             } else {
                 $can = get_row("select t_id, t_usr_id from towns where t_name ='" . $town . "' limit 1");
                 if (empty($can)) {
                     $msg = 'nie ma takiego miasta';
                 } elseif ($can->t_usr_id == $player->usr_id) {
                     $msg = 'nie atakuj swojego miasta';
                 } else {
                     $y = get_row("select * from map where m_t_id =" . $can->t_id);
                     $x = get_row("select * from map where m_t_id =" . $player->actual_town);
                     if ($x->m_x != $y->m_x && $x->m_y == $y->m_y) {
                         $range = abs($y->m_x - $x->m_x) * 300;
                     } elseif ($x->m_x == $y->m_x && $x->m_y != $y->m_y) {
                         $range = abs($y->m_y - $x->m_y) * 300;
                     } else {
                         $range = floor(sqrt(pow(abs($y->m_x - $x->m_x), 2) + pow(abs($y->m_y - $x->m_y), 2))) * 300;
                     }
                     $tnow = get_one("select unix_timestamp()");
                     call("insert into army (a_t_id, a_vs_id) value (" . $player->actual_town . "," . $can->t_id . ")");
                     $army_id = get_one("select last_insert_id()");
                     $insert = "insert into army_units(au_a_id, au_gop_subtype, au_counts, au_attack, au_defence, au_life, au_range) values ";
                     foreach ($units1 as $unit) {
                         call("update game_objects set go_lvl = go_lvl - " . $unit->count . " where go_type = 3 and go_subtype = " . $unit->data->go_subtype . " and go_t_id =" . $player->actual_town);
                         $insert .= "(" . $army_id . "," . $unit->data->go_subtype . "," . $unit->count . "," . $unit->data->go_attack . "," . $unit->data->go_defence . "," . $unit->data->go_life . "," . $unit->data->go_range . "),";
                     }
                     $insert = substr($insert, 0, -1);
                     call($insert);
                     require_once 'functions/EventsMgr.php';
                     $EventMgr = new EventsMgr();
                     $EventMgr->event_add($config, $player->actual_town, 30, $can->t_id, $army_id, 0, $tnow, $tnow + $range, 0);
                     $msg = 'wysłano wyprawę do miasta ' . $town;
                 }
             }
         }
     }
     return $msg;
 }