'; $goodInfoStart = ''; $goodInfoEnd = ''; function timeToEndString($end) { $timeLeft = $end - time(); if($timeLeft <= 0) return 'auction finished'; elseif($timeLeft >= 86400) return floor($timeLeft / 86400) . ' days left'; elseif($timeLeft >= 3600) return floor($timeLeft / 3600) . ' hours left'; elseif($timeLeft >= 60) return floor($timeLeft / 60) . ' minutes left'; else return $timeLeft . ' seconds left!'; } if($action == '') { ##-- town --## $houses_town = (int) $_REQUEST['town']; if(count($towns_list) > 0) { foreach($towns_list as $town_ids => $town_names) { if($town_ids == $houses_town) { $town_id = $town_ids; $town_name = $town_names; } } } ##-- owner --## $houses_owner = (int) $_REQUEST['owner']; if($houses_owner == 0) { $owner_sql = ''; } elseif($houses_owner == 1) { $owner_sql = ' AND owner = 0'; } elseif($houses_owner == 2) { $owner_sql = ' AND owner > 0'; } ##-- order --## $houses_order = (int) $_REQUEST['order']; if($houses_order == 0) { $order_sql = 'name'; } elseif($houses_order == 1) { $order_sql = 'size'; } elseif($houses_order == 2) { $order_sql = 'rent'; } ##-- status --## $houses_status = (int) $_REQUEST['status']; $status_name = 'Houses and Flats'; ##-- List Houses --## $id = (int) $_GET['show']; if(empty($id)) { $main_content .= 'Here you can see the list of all available houses, flats or guildhalls. Please select the game world of your choice. Click on any view button to get more information about a house or adjust the search criteria and start a new search.

'; if($houses_town > 0) { $main_content .= ''; $houses_sql = $SQL->query('SELECT * FROM houses WHERE town_id = '.$town_id.''.$owner_sql.' ORDER BY '.$order_sql.' DESC')->fetchAll(); $counter = 0; foreach($houses_sql as $house) { if(is_int($counter / 2)) $bgcolor = $config['site']['lightborder']; else $bgcolor = $config['site']['darkborder']; $counter++; if($house['owner'] == 0) { if($house['highest_bidder'] > 0) { $owner = 'auctioned (' . $house['last_bid'] . ' gold, ' . timeToEndString($house['bid_end']) . ')'; } else { $owner = 'auctioned (no bid yet)'; } } elseif($house['owner'] > 0) { $player = new Player($house['owner']); $owner = 'owned by '.$player->getName().''; } $main_content .= ''; } $main_content .= '
Available '.$status_name.' in '.$town_name.' on '.$config['server']['serverName'].'
NameSizeRentStatus
'.$house['name'].' '.$house['size'].' sqm '.$house['rent'].' gold '.$owner.'

'; } $main_content .= '
'; $main_content .= ''; $main_content .= '
Search House
Town Status Sort
'; foreach($towns_list as $id => $town_n) { $main_content .= ''; } $main_content .= '
'; } ##-- Show House --## else { $house = $SQL->query('SELECT * FROM houses WHERE id = '.$id.'')->fetch(); if($house['doors'] < 2) $door = '1 door'; else $door = $house['doors'] + 1 .' doors'; if($house['beds'] < 2) $bed = '1 bed'; else $bed = $house['beds'].' beds'; if($house['owner'] > 0) { $player = new Player($house['owner']); if($house['paid'] > 0) $paid = ' and paid until '.date("M j Y, H:i:s", $house['paid']).' CET'; $owner = '
The house is currently rented by '.$player->getName().''.$paid.'.'; } else { if($house['highest_bidder'] > 0) { if($house['bid_end'] > time()) { $bidder = new Player($house['highest_bidder']); $owner = '
The house is currently being auctioned. The highest bid so far is ' . $house['last_bid'] . ' gold and has been submitted by '.$bidder->getName().'. Auction will end at ' . date("M j Y, H:i:s", $house['bid_end']) . '.'; } else { $bidder = new Player($house['highest_bidder']); $owner = '
This house auction is finished. '.$bidder->getName().' won this auction with bid ' . $house['last_bid'] . ' gold. Auction finished on ' . date("M j Y, H:i:s", $house['bid_end']) . '.'; } } else { $owner = 'The house is currently being auctioned. No bid has been submitted so far.'; } } $main_content .= '
house image
'.$house['name'].'
This house has '.$door.' and '.$bed.' and it is placed in '.$towns_list[$house['town_id']].'.

The house has a size of '.$house['size'].' square meters. The monthly rent is '.$house['rent'].' gold and will be debited to the bank account on ' . $config['server']['serverName'] . '
'.$owner; if(Visitor::isLogged()) { $houseBidded = $SQL->query('SELECT `houses`.`id` house_id, `players`.`id` bidder_id FROM `houses`, `players` WHERE `players`.`id` = `houses`.`highest_bidder` AND `players`.`account_id` = ' . Visitor::getAccount()->getID())->fetch(); } if(Visitor::isLogged() && isset($houseBidded['house_id']) && $houseBidded['house_id'] == $house['id']) { $main_content .= '

YOUR MAXIMUM OFFER IS NOW HIGHEST ON THAT AUCTION, IT IS ' . $house['bid'] . ' GOLD COINS.'; } $main_content .= '

'; if($house['owner'] == 0 && ($house['bid_end'] > time() || $house['bid_end'] == 0)) { // bid button $main_content .= '
'; } else { $main_content .= '
'; } } } elseif($action == 'bid') { if(Visitor::isLogged()) { $houseOwned = $SQL->query('SELECT `houses`.`id` house_id, `players`.`id` owner_id FROM `houses`, `players` WHERE `players`.`id` = `houses`.`owner` AND `players`.`account_id` = ' . Visitor::getAccount()->getID() . ' LIMIT 1')->fetch(); if($houseOwned === false) { if(isset($_REQUEST['house'])) { $house = new House((int) $_REQUEST['house']); if($house->isLoaded()) { if($house->getOwner() == 0) { if($house->getBidEnd() == 0 || $house->getBidEnd() > time()) { $houseBidded = $SQL->query('SELECT `houses`.`id` house_id, `players`.`id` bidder_id FROM `houses`, `players` WHERE `players`.`id` = `houses`.`highest_bidder` AND `players`.`account_id` = ' . Visitor::getAccount()->getID())->fetch(); if($houseBidded === false || $houseBidded['house_id'] == $house->getID()) { $bidded = false; if(isset($_REQUEST['do_bid'])) { if(isset($_REQUEST['bid']) && isset($_REQUEST['bidder'])) { $bidder = new Player($_REQUEST['bidder']); $bid = (int) $_REQUEST['bid']; if($bidder->isLoaded() && $bidder->getAccountID() == Visitor::getAccount()->getID()) { if($bidder->getBalance() >= $bid) { // jesli przebija swoja oferte to nie musi dawac wiecej // moze tylko zmieniac postac ktora zostanie, a nawet obnizac maksymalna if($bid > 0 && ($bid > $house->getBid() || $houseBidded !== false)) { // jesli przebija sam siebie to nie podnosi ceny aktualnej if($houseBidded === false) { // ustawia cene na cene przed przebiciem + 1 gold // moze to podniesc z 0 do 1 gold przy nowym domku // lub ustawic wartosc maksymalna osoby co licytowala wczesniej + 1 $house->setLastBid($house->getBid()+1); } // ustawic najwyzsza oferowana kwote na podana // jesli przebija swoja aukcje kwota mniejsza niz aktualna to nie zmieniaj! // jak ktos inny przebija to i tak bid bedzie wiekszy-rowny od aktualnego // (nawet jak o 1 gp przebija - 6 linijek wyzej ustawia ... // na kwote mniejsza niz bid + 1, wiec bedzie rowny) if($bid >= $house->getLastBid()) { $house->setBid($bid); } // ustawic postac ktora zostanie wlascicielem na podana $house->setHighestBidder($bidder->getID()); if($house->getBidEnd() == 0) { $auctionEnd = time() + $auctionDaysDefault * 86400; if(isset($config['server']['serverSaveEnabled']) && $config['server']['serverSaveEnabled'] == 'yes') { $serverSaveHour = $config['server']['serverSaveHour']; if($serverSaveHour >= 0 && $serverSaveHour <= 24) { $timeNow = time(); $timeInfo = localtime($timeNow, true); // current time, associative = true if ($serverSaveHour == 0) { $serverSaveHour = 23; } else { $serverSaveHour--; } $timeInfo['tm_hour'] = $serverSaveHour; $timeInfo['tm_min'] = 55; $timeInfo['tm_sec'] = 0; $difference = mktime($timeInfo['tm_hour'], $timeInfo['tm_min'], $timeInfo['tm_sec'], (int) $timeInfo['tm_mon'] + 1, $timeInfo['tm_mday'], (int) $timeInfo['tm_year'] + 1900) - $timeNow; if($difference < 0) { $difference += 86400; } $auctionEnd = time() + $difference + ($auctionDaysDefault-1) * 86400; } } $house->setBidEnd($auctionEnd); } $house->save(); $main_content .= $goodInfoStart . 'Your offer is now highest on auction. Current price for house is ' . $house->getLastBid() . ' gold, your maximum price is ' . $house->getBid() . ' gold. Character ' . htmlspecialchars($bidder->getName()) . ' from your account will get house, if you win.' . $goodInfoEnd; // udalo sie przebic, wiec nie pokazuje formularza $bidded = true; } else { if($bid >= $house->getLastBid()) { $house->setLastBid($bid); $house->save(); } $main_content .= $badInfoStart . 'Your offer of ' . $bid . ' gold is too low.' . $badInfoEnd; } } else $main_content .= $badInfoStart . 'Character ' . htmlspecialchars($bidder->getName()) . ' does not have enough money on bank account.' . $badInfoEnd; } else $main_content .= 'Selected player is not on your account?! Hax?'; } else $main_content .= 'Missing one of bid parameters?! Hax?'; } if(!$bidded) { // show bid form $main_content .= '
Bid at auction of house ' . $house->getName() . ' placed in ' . $towns_list[$house->getTown()] . '
Owner:
Your maximum offer: gold coins
Current bid: ' . $house->getLastBid() . ' gold coins
Owner

If your offer is now highest on auction you can bid to make your maximum offer lower (cannot be lower then current "bid") or higher.
You can also bid you change character that will own house, if you win auction.'; } } else $main_content .= 'You are already bidding on other house auction.'; } else $main_content .= 'This auction is finished.'; } else $main_content .= 'This house is not on auction!'; } else $main_content .= 'This house does not exist!'; } else $main_content .= 'Choose house!'; } else $main_content .= 'You already own one house. You can\'t buy more.'; } else $main_content .= 'You must login to bid on auction!'; $main_content .= '

'; }