PI

[Gesior] Leilão De Characters Por Premium Points!

Por Piabeta Kun, 06 de out. de 2012 em Tutoriais de Websites

script
16
5.7k
Piabeta KunP
06 de outubro de 2012 às 00:52

Bem como o já dito no titulo, é um script que voce coloca um char par vender em um leilão por premium points!

 

Sobre o Script:

 

- Vende chars por pontos na loja(o player ponhe uma offer no leilão, quem comprar tem que ter os pontos pedidos na oferta para obter o char e o dono da oferta recebe os pontos!).

- O char a venda ao ser comprado receberá namelock e o comprador poderá colocar um novo nome no char!

- Painel de administração (Logar com conta administradora) para procurar bons personagens para vender (classificação por tempo offline, nível, você pode definir o nível mínimo).

 

Bem vamos ao que interessa!

 

Execute essa Query

CREATE TABLE `characters_auctions` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`state` TINYINT( 1 ) NOT NULL DEFAULT '0' ,
`finish_time` INT NOT NULL ,
`char_id` INT NOT NULL ,
`buy_now` INT NOT NULL ,
`bid` INT NOT NULL ,
`bidder` INT NOT NULL ,
INDEX ( `finish_time` ));

 

E crie um arquivo chamado charauction.php e dentro coloque isso:

 

 

<?PHP
#################################################
### Scripted by PhoOwned					  ###
### All rights reserverd					  ###
### Do not use/distribute without permission! ###
### Contact: phoowned@wp.pl				   ###
###		  jerzyskalski@wp.pl			   ###
#################################################
/*
In MySQL:
CREATE TABLE `characters_auctions` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`state` TINYINT( 1 ) NOT NULL DEFAULT '0' ,
`finish_time` INT NOT NULL ,
`char_id` INT NOT NULL ,
`buy_now` INT NOT NULL ,
`bid` INT NOT NULL ,
`bidder` INT NOT NULL ,
INDEX ( `finish_time` ));
*/
$add_character_page_access = 3;
$auctions_default_time = 3 * 24;// auction item in hours
// styles and scripts
$main_content .= '
<style type="text/css">
.tableFonts {color: #FFFFFF}
.tableHead {background-color: #9C5566;text-align: center;vertical-align: middle;font-size: 20pt}
.tableRow0 {background-color: #003300;text-align: left;vertical-align: middle;font-size: 12pt}
.tableRow0:hover {background-color: #009900;}
.tableRow1 {background-color: #551111;text-align: left;vertical-align: middle;font-size: 12pt}
.tableRow1:hover {background-color: #AA1111;}
.tableRowSmall0 {background-color: #003300;text-align: left;vertical-align: middle;font-size: 10pt}
.tableRowSmall0:hover {background-color: #009900;}
.tableRowSmall1 {background-color: #551111;text-align: left;vertical-align: middle;font-size: 10pt}
.tableRowSmall1:hover {background-color: #AA1111;}
.linkButton {background-color: #008800;font-size: 14pt;padding: 6px;text-shadow: 2mm 2mm 2mm #342423;letter-spacing: 2mm}
.linkButton:hover {background-color: yellow;}
.bigText {font-size: 24pt}
.normalText {font-size: 12pt;}
.showItemSquare {height: 49px;width: 39px;padding: 7px;}
.showItemImage {height: 40px;width: 40px;padding: 0px;}
input {text-align: right;}

.er{display:block}
.er *{
  display:block;
  height:1px;
  overflow:hidden;
  font-size:.01em;
  background:#b20000}
.er1{
  margin-left:3px;
  margin-right:3px;
  padding-left:1px;
  padding-right:1px;
  border-left:1px solid #870000;
  border-right:1px solid #870000;
  background:#9f0000}
.er2{
  margin-left:1px;
  margin-right:1px;
  padding-right:1px;
  padding-left:1px;
  border-left:1px solid #6f0000;
  border-right:1px solid #6f0000;
  background:#a30000}
.er3{
  margin-left:1px;
  margin-right:1px;
  border-left:1px solid #a30000;
  border-right:1px solid #a30000;}
.er4{
  border-left:1px solid #870000;
  border-right:1px solid #870000}
.er5{
  border-left:1px solid #9f0000;
  border-right:1px solid #9f0000}
.erfg{
  background:#b20000;font-size: 16pt;text-align: center}
</style>
<script type="text/javascript">
	function checkLogin(account_id) {
	if(account_id == 0)
	{
	alert ("You are not logged in.");
	return false
	}
	return true
	}

	function checkBid(account_id, bidder_id, user_points, bid_now) {
	if(!checkLogin(account_id))
	return false
	var bid = window.document.getElementById("bid").value;
	if(bid <= bid_now)
	{
		alert ("Current highest bid is " + bid_now + ". You can not bid " + bid + ".");
		return false
	}
	if(bid > user_points)
	{
		alert ("You can not bid " + bid + ". You have only " + user_points + ".");
		return false
	}
	if(account_id == bidder_id)
	{
	var answer = confirm ("You have highest bid in this auction. Are you sure you want make higher bid?")
	if (answer)
	return true
	else
	return false
	}
	return true
	}

	function checkBuyNow(account_id, user_points, buy_now) {
	if(!checkLogin(account_id))
	return false
	if(user_points < buy_now)
	{
		alert ("This character cost " + buy_now + ". You have only " + user_points + ".");
		return false
	}
	var answer = confirm ("This character cost " + buy_now + ". Do you want to buy it?")
	if (answer)
	return true
	else
	return false
	}

	var innerHTML;
	function countdown(Time_Left, target_id)
	{
	if(Time_Left <= 0)
	{
		document.getElementById(target_id).innerHTML = \'Finished\';
		return 0;
	}
	setTimeout(countdown, 1000, Time_Left-1, target_id);
	//More datailed.
	days = Math.floor(Time_Left / (60 * 60 * 24));
	Time_Left %= (60 * 60 * 24);
	hours = Math.floor(Time_Left / (60 * 60));
	Time_Left %= (60 * 60);
	minutes = Math.floor(Time_Left / 60);
	Time_Left %= 60;
	seconds = Time_Left;

	dps = \'s\'; hps = \'s\'; mps = \'s\'; sps = \'s\';
	//ps is short for plural suffix.
	if(days == 1) dps =\'\';
	if(hours == 1) hps =\'\';
	if(minutes == 1) mps =\'\';
	if(seconds == 1) sps =\'\';

	innerHTML = days + \' day\' + dps + \' \';
	innerHTML += hours + \' hour\' + hps + \' \';
	innerHTML += minutes + \' minute\' + mps + \' and \';
	innerHTML += seconds + \' second\' + sps;

	document.getElementById(target_id).innerHTML = innerHTML;
	}
</script>';

$errorFormStart = '<div><b class="er"><b class="er1"><b></b></b><b class="er2"><b></b></b><b class="er3"></b><b class="er4"></b><b class="er5"></b></b><div class="erfg">';
$errorFormEnd = '</div><b class="er"><b class="er5"></b><b class="er4"></b><b class="er3"></b><b class="er2"><b></b></b><b class="er1"><b></b></b></b></div>';
function time_left($integer)
{
 if($integer <= 0) return "Finished";
 $seconds=$integer;
 if ($seconds/60 >=1)
 {
	 $minutes=floor($seconds/60);
	 if ($minutes/60 >= 1)
	 { # Hours
		 $hours=floor($minutes/60);
		 if ($hours/24 >= 1)
		 { #days
				 $days=floor($hours/24);
				 if ($days/7 >=1)
				 { #weeks
					 $weeks=floor($days/7);
					 if ($weeks>=2) $return="$weeks weeks";
					 else $return="$weeks week";
				 } #end of weeks
				 $days=$days-(floor($days/7))*7;
				 if ($weeks>=1 && $days >=1) $return="$return, ";
				 if ($days >=2) $return="$return $days d";
				 if ($days ==1) $return="$return $days d";
		 } #end of days
		 $hours=$hours-(floor($hours/24))*24;
		 if ($days>=1 && $hours >=1) $return="$return, ";
		 if ($hours >=2 || $hours ==0) $return="$return $hours h";
		 if ($hours ==1) $return="$return $hours h";
	 } #end of Hours
	 $minutes=$minutes-(floor($minutes/60))*60;
	 if ($hours>=1 && $minutes >=1) $return="$return, ";
	 if ($minutes >=2 || $minutes ==0) $return="$return $minutes m";
	 if ($minutes ==1) $return="$return $minutes m";
 } #end of minutes
 $seconds=$integer-(floor($integer/60))*60;
 if ($minutes>=1 && $seconds >=1) $return="$return, ";
 if ($seconds >=2 || $seconds ==0) $return="$return $seconds sec";
 if ($seconds ==1) $return="$return $seconds sec";
 $return="$return.";
 return $return;
}
############ FINISH AUCTIONS AND ADD CHARACTERS ############
foreach($SQL->query('SELECT * FROM `characters_auctions` WHERE `state` = 0 AND `finish_time` <= ' . time())->fetchAll() as $finishedAuction)
{
if($finishedAuction['bidder'] > 0)
{
	// if server show error in one of lines below it mean
	// someone delete character or account that won auction
	// admin must check it manualy (give points back to account that won auction?)
	$finishedAuctionBidder = new OTS_Account();
	$finishedAuctionBidder->load($finishedAuction['bidder']);
	$finishedAuctionChar = new OTS_Player();
	$finishedAuctionChar->load($finishedAuction['char_id']);
	$finishedAuctionChar->setAccount($finishedAuctionBidder);
	$finishedAuctionChar->setGroup(1);
	$finishedAuctionChar->save();
	$SQL->query('UPDATE `characters_auctions` SET `state` = 2 WHERE `id` = ' . $finishedAuction['id']);
	$SQL->query('INSERT INTO `bans` (`id` , `type` , `value` ,`param` ,`active` ,`expires` ,`added` ,`admin_id` ,`comment` ,`reason` ,`action` ,`statement`) VALUES (NULL , 2, ' .$auctionChar->getId() . ', 2, 1, -1, ' . time() . ', 1, \'BUY CHAR\', 0, 1, \'\');');
}
else
	$SQL->query('UPDATE `characters_auctions` SET `state` = 1 WHERE `id` = ' . $finishedAuction['id']);
}
############ VISIBLE THINGS ############
if($logged && $account_logged->getPageAccess() >= $add_character_page_access)
$main_content .= '<div class="normalText"><a href="?subtopic=sellchar&action=addauction">ADMIN PANEL: >ADD AUCTION<</a></div>';
if($action == "addauction") ############ ADD AUCTION / VIEW CHARACTERS LIST ############
{
if($logged && $account_logged->getPageAccess() >= $add_character_page_access)
{
	$daysAgo = (int) $_REQUEST['days_ago'];
	$nameContains = $_REQUEST['name_contains'];
	$minLevel = (int) $_REQUEST['min_level'];
	$maxLastLogout = time() - $daysAgo * 24 * 3600;
	$orderBy = ($_REQUEST['order_by'] == 'lastlogout') ? $_REQUEST['order_by'] : 'level';
	$orderType = ($_REQUEST['order_type'] == 'DESC') ? $_REQUEST['order_type'] : 'ASC';
	$resultsLimit = (isset($_REQUEST['results_limit'])) ? (int) $_REQUEST['results_limit'] : 30;
	if(isset($_REQUEST['id']))
	{
		$id = (int) $_REQUEST['id'];
		$priceAuction = (int) $_REQUEST['price_auction'];
		$priceBuyNow = (int) $_REQUEST['price_buy_now'];
		$auctionTime = (int) $_REQUEST['auction_time'] * 3600;
		$SQL->query('INSERT INTO `characters_auctions` (`id` ,`finish_time` ,`char_id` ,`buy_now` ,`bid` ,`bidder`) VALUES (NULL , ' . (time() + $auctionTime) . ', ' . $id . ', ' . $priceBuyNow . ', ' . $priceAuction . ', 0);');
		$main_content .= $errorFormStart . 'Character with ID ' . $id . ' auction added.' . $errorFormEnd;
	}
	$charsAlreadyOnAuctions = array(0);
	foreach($SQL->query('SELECT `char_id` FROM `characters_auctions` WHERE `state` = 0') as $charsAlreadyOnAuction)
		$charsAlreadyOnAuctions[] = $charsAlreadyOnAuction['char_id'];
	$main_content .= '<div class="bigText" style="text-align: center">Add Auction</div>';
	$main_content .= '<div class="normalText">If you leave Buy Now field empty or set it to 0 it will be not possible to buy character by option \'Buy Now\'.</div>';
	$main_content .= '<table class="tableFonts" style="margin-left: auto;margin-right: auto;">';
	$main_content .= '<tr class="tableHead"><td colspan="8">CHARACTERS LIST</td></tr>';
	$main_content .= '<form action="?" method="get"><input type="hidden" name="subtopic" value="sellchar" /><input type="hidden" name="action" value="addauction" />';
	$main_content .= '<tr class="tableHead" style="font-size: 10pt;"><td colspan="2">ORDER BY</td><td><select name="order_by"><option' . (($orderBy == 'lastlogout') ? ' selected="selected"' : '') . '>lastlogout</option><option' . (($orderBy == 'level') ? ' selected="selected"' : '') . '>level</option></select></td><td><select name="order_type"><option' . (($orderType == 'ASC') ? ' selected="selected"' : '') . '>ASC</option><option' . (($orderType == 'DESC') ? ' selected="selected"' : '') . '>DESC</option></select></td><td colspan="4"></td></tr>';
	$main_content .= '<tr class="tableHead" style="font-size: 10pt;"><td colspan="3">Nick contains:<br /><input type="text" name="name_contains" value="' . htmlspecialchars($nameContains) .'" size="30" /><td colspan="2">Min. <input type="text" name="min_level" value="' . $minLevel .'" size="4" /> level</td><td>Min. <input type="text" name="days_ago" value="' . $daysAgo .'" size="2" /> days</td><td>Results<br /><input type="text" name="results_limit" value="' . $resultsLimit .'" size="3" /></td><td><input type="submit" value="Search"/></td></tr>';
	$main_content .= '</form>';
	############ SEARCH FORM ############
	$main_content .= '<tr class="tableHead" style="font-size: 14pt;"><td>ID</td><td>Nick</td><td>Level & Vocation</td><td>Offline</td><td>Auction time</td><td>Auction min. offer</td><td>Buy Now</td><td>Add</td></tr>';
	foreach($SQL->query('SELECT * FROM `players` WHERE `id` NOT IN (' . implode(",", $charsAlreadyOnAuctions) . ') AND `lastlogout` > 0 AND `level` >= ' . $SQL->quote($minLevel) . ' AND `lastlogout` <= ' . $SQL->quote($maxLastLogout) . ' AND `name` LIKE ' . $SQL->quote('%'.$nameContains.'%') . ' ORDER BY `' . $orderBy . '` ' . $orderType . ', `name` ASC LIMIT ' . $resultsLimit .';') as $player)
		$main_content .= '<form action="?subtopic=sellchar&action=addauction&order_by=' . $orderBy .'&order_type=' . $orderType . '&name_contains=' . urlencode($nameContains) . '&min_level=' . $minLevel . '&days_ago=' . $daysAgo . '&results_limit=' . $resultsLimit . '" method="post"><input type="hidden" name="id" value="' . $player['id'] . '" /><tr class="tableRow' . ($row++ % 2) . '"><td>' . $player['id'] . '</td><td>' . $player['name'] . '</td><td>' . $player['level'] . ' ' . $vocation_name[$player['world_id']][$player['promotion']][$player['vocation']] . '</td><td style="float: right;">' . (floor((time() - $player['lastlogin']) / 86400)) . ' days</td><td><input type="text" name="auction_time" value="' . $auctions_default_time . '" size="3" /> hours</td><td><input type="text" name="price_auction" value="" size="5" /> pp</td><td><input type="text" name="price_buy_now" value="" size="5" /> pp</td><td><input type="submit" value="Add Auction" /></td></tr></form>';
	$main_content .= '</table>';
}
else
	$main_content .= $errorFormStart . 'ERROR! You do not have access to this page.' . $errorFormEnd;
}
elseif($action == "show") ############ SHOW CHARACTER INFO ############
{
$auctionInfo = $SQL->query('SELECT * FROM `characters_auctions` WHERE `id` = ' . (int) $_REQUEST['id'])->fetch();
$main_content .= '<div class="bigText" style="text-align: center">Auction Info</div>';
if(isset($auctionInfo['id']))
{
	$auctionChar = new OTS_Player();
	$auctionChar->load($auctionInfo['char_id']);
	if($auctionChar->isLoaded())
	{
		if($logged && $account_logged->getPageAccess() >= $add_character_page_access)
			$main_content .= '<div class="normalText"><a href="?subtopic=sellchar&delete=' . $auctionInfo['id'] . '">ADMIN PANEL: >DELETE AUCTION<</a></div>';
############ SHOW STATS ############
		$row = 0;
		$main_content .= '<table class="tableFonts" style="margin-left: auto;margin-right: auto;">';
		$main_content .= '<tr class="tableHead"><td colspan="3">CHARACTER INFO</td></tr>';
		$main_content .= '<tr><td><table style="width: 360px;border-spacing: 1px">';
		$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td>AUCTION ID:</td><td>' . $auctionInfo['id'] . '</td></tr>';
		$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td>Name:</td><td>' . $auctionChar->getName() . '<br /><div style="font-size: 8pt;">(You select new name when you win auction.)</div></td></tr>';
		$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td>Level:</td><td>' . $auctionChar->getLevel() . '</td></tr>';
		$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td>Vocation:</td><td>' . $vocation_name[$auctionChar->getWorld()][$auctionChar->getPromotion()][$auctionChar->getVocation()] . '</td></tr>';
		$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td>Health:</td><td>' . $auctionChar->getHealthMax() . '</td></tr>';
		$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td>Mana:</td><td>' . $auctionChar->getManaMax() . '</td></tr>';
		$main_content .= '<tr class="tableRowSmall' . ($row++ % 2) . '"><td>Magic Level:</td><td>' . $auctionChar->getMagLevel() . '</td></tr>';
		$main_content .= '<tr class="tableRowSmall' . ($row++ % 2) . '"><td>Sword:</td><td>' . $auctionChar->getSkill(2) . '</td></tr>';
		$main_content .= '<tr class="tableRowSmall' . ($row++ % 2) . '"><td>Axe:</td><td>' . $auctionChar->getSkill(3) . '</td></tr>';
		$main_content .= '<tr class="tableRowSmall' . ($row++ % 2) . '"><td>Club:</td><td>' . $auctionChar->getSkill(1) . '</td></tr>';
		$main_content .= '<tr class="tableRowSmall' . ($row++ % 2) . '"><td>Distance:</td><td>' . $auctionChar->getSkill(4) . '</td></tr>';
		$main_content .= '<tr class="tableRowSmall' . ($row++ % 2) . '"><td>Shielding:</td><td>' . $auctionChar->getSkill(5) . '</td></tr>';
		$main_content .= '</table></td>';
############ SHOW EQ ############
		foreach($SQL->query('SELECT * FROM `player_items` WHERE `player_id` = ' . $auctionChar->getId() . ' AND `pid` >= 1 AND `pid` <= 10;') as $item)
			$player_items[$item['pid']] = $item['itemtype'];
		$row = 0;
		$main_content .= '<td><table style="border-spacing: 1px">';
		$main_content .= '<tr><td class="showItemSquare" style="background-image: url(/images/items/2.gif)"><img src="/images/items/' . $player_items[2] . '.gif" alt="" class="showItemImage"/></td>';
		$main_content .= '<td class="showItemSquare" style="background-image: url(/images/items/1.gif)"><img src="/images/items/' . $player_items[1] . '.gif" alt="" class="showItemImage"/></td>';
		$main_content .= '<td class="showItemSquare" style="background-image: url(/images/items/3.gif)"><img src="/images/items/' . $player_items[3] . '.gif" alt="" class="showItemImage"/></td></tr>';
		$main_content .= '<tr><td class="showItemSquare" style="background-image: url(/images/items/6.gif)"><img src="/images/items/' . $player_items[6] . '.gif" alt="" class="showItemImage"/></td>';
		$main_content .= '<td class="showItemSquare" style="background-image: url(/images/items/4.gif)"><img src="/images/items/' . $player_items[4] . '.gif" alt="" class="showItemImage"/></td>';
		$main_content .= '<td class="showItemSquare" style="background-image: url(/images/items/5.gif)"><img src="/images/items/'. $player_items[5] . '.gif" alt="" class="showItemImage"/></td></tr>';
		$main_content .= '<tr><td class="showItemSquare" style="background-image: url(/images/items/9.gif)"><img src="/images/items/'. $player_items[9] . '.gif" alt="" class="showItemImage"/></td>';
		$main_content .= '<td class="showItemSquare" style="background-image: url(/images/items/7.gif)"><img src="/images/items/'. $player_items[7] . '.gif" alt="" class="showItemImage"/></td>';
		$main_content .= '<td class="showItemSquare" style="background-image: url(/images/items/10.gif)"><img src="/images/items/'. $player_items[10] . '.gif" alt="" class="showItemImage"/></td></tr>';
		$main_content .= '<tr><td class="showItemSquare" style="background-color: #232323;text-align: center">Soul:<br />' . $auctionChar->getSoul() . '</td>';
		$main_content .= '<td class="showItemSquare" style="background-image: url(/images/items/8.gif)"><img src="/images/items/'. $player_items[8] . '.gif" alt="" class="showItemImage"/></td>';
		$main_content .= '<td class="showItemSquare" style="background-color: #232323;text-align: center">Cap:<br />' . $auctionChar->getCap() . '</td></tr>';
		$main_content .= '</tr></table></td>';
		$main_content .= '</tr></table>';
############ SHOW DONATORS SHOP ITEMS ############
		$donators_items = $SQL->query('SELECT `player_items`.`itemtype`, SUM(`player_items`.`count`) AS count, `z_shop_offer`.`offer_name` AS name FROM `player_items`, `z_shop_offer` WHERE `player_items`.`player_id` = ' . $auctionChar->getId() . ' AND `z_shop_offer`.`offer_type` = \'item\' AND `player_items`.`itemtype` = `z_shop_offer`.`itemid1` GROUP BY `player_items`.`itemtype`;')->fetchAll();
		$donators_depotitems = $SQL->query('SELECT `player_depotitems`.`itemtype`, SUM(`player_depotitems`.`count`) AS count, `z_shop_offer`.`offer_name` AS name FROM `player_depotitems`, `z_shop_offer` WHERE `player_depotitems`.`player_id` = ' . $auctionChar->getId() . ' AND `z_shop_offer`.`offer_type` = \'item\' AND `player_depotitems`.`itemtype` = `z_shop_offer`.`itemid1` GROUP BY `player_depotitems`.`itemtype`;')->fetchAll();
		if(count($donators_items) > 0 || count($donators_depotitems) > 0)
		{
			$main_content .= '<table class="tableFonts" style="margin-left: auto;margin-right: auto;padding-top: 30px;">';
			if(count($donators_items) > 0)
			{
				$main_content .= '<tr class="tableHead"><td colspan="3">DONATORS ITEMS</td></tr>';
				$row = 0;
				foreach($donators_items as $donator_item)
					$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td class="showItemSquare"><img src="/images/items/'. $donator_item['itemtype'] . '.gif" alt="" class="showItemImage"/></td><td>' . $donator_item['count'] .'x</td><td>' . $donator_item['name'] . '</td></tr>';
			}
			if(count($donators_depotitems) > 0)
			{
				$main_content .= '<tr class="tableHead"><td colspan="3">DONATORS IN DEPOT</td></tr>';
				$row = 0;
				foreach($donators_depotitems as $donator_depotitem)
					$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td class="showItemSquare"><img src="/images/items/'. $donator_depotitem['itemtype'] . '.gif" alt="" class="showItemImage"/></td><td>' . $donator_depotitem['count'] .'x</td><td>' . $donator_depotitem['name'] . '</td></tr>';
			}
			$main_content .= '</table>';
		}
############ SHOW AUCTION INFO ############
		$row = 0;
		$main_content .= '<table class="tableFonts" style="margin-left: auto;margin-right: auto;padding-top: 30px;">';
		$main_content .= '<tr class="tableHead"><td colspan="2">AUCTION INFO</td></tr>';
		if($auctionInfo['buy_now'] > 0)
			$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td>Buy now:</td><td>' . $auctionInfo['buy_now'] . ' premium points</td></tr>';
		$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td>Highest bid:</td><td>' . $auctionInfo['bid'] . ' premium points</td></tr>';
		$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td>Time left:</td><td><div name="timer_' . $auctionInfo['id'] . '" id="timer_' . $auctionInfo['id'] . '">' . time_left($auctionInfo['finish_time'] - time()) . '</div></td></tr>';
		$main_content .= '</table><br /><script type="text/javascript">countdown(' . ($auctionInfo['finish_time'] - time()) . ', \'timer_' . $auctionInfo['id'] . '\');</script>';
		if($auctionInfo['state'] == 0)
		{
			$main_content .= '<form action="?subtopic=sellchar&action=bid&id=' . $auctionInfo['id'] . '" method="post" onsubmit="return checkBid(' . (($logged) ? $account_logged->getId() : 0) . ', ' . $auctionInfo['bidder'] . ', ' . (($logged) ? $account_logged->getPremiumPoints() : 0) . ', ' . $auctionInfo['bid'] . ');">';
			$main_content .= '<table class="tableFonts" style="float: left;">';
			$main_content .= '<tr class="tableHead"><td colspan="2">YOUR BID</td></tr>';
			$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td>Bid:</td><td><input type="text" id="bid" name="bid" value="' . ($auctionInfo['bid'] + 1) . '" /> pp</td></tr>';
			$main_content .= '<tr class="tableRow' . ($row++ % 2) . '"><td colspan="2" style="text-align: center;"><input type="submit" value="BID" /></td></tr></table></form><br />';
			if($auctionInfo['buy_now'] > 0)
				$main_content .= '<a href="?subtopic=sellchar&action=buy&id=' . $auctionInfo['id'] . '" class="linkButton" style="float: right;" onclick="return checkBuyNow(' . (($logged) ? $account_logged->getId() : 0) . ', ' . (($logged) ? $account_logged->getPremiumPoints() : 0) . ', ' . $auctionInfo['buy_now'] . ');">BUY NOW!</a>';
		}
		$main_content .= '<div style="padding-top: 120px;padding-left: 45%"><a href="?subtopic=sellchar" class="linkButton">BACK</a></div>';
	}
	else
		$main_content .= $errorFormStart . 'ERROR! Character doesn\'t exist.' . $errorFormEnd;
}
else
	$main_content .= $errorFormStart . 'ERROR! Auction with this ID doesn\'t exist.' . $errorFormEnd;
}
elseif($action == "bid") ############ BID CHARACTER ############
{
$main_content .= '<div class="bigText" style="text-align: center">Bid character</div>';
if($logged)
{
	$auctionInfo = $SQL->query('SELECT * FROM `characters_auctions` WHERE `state` = 0 AND `id` = ' . (int) $_REQUEST['id'])->fetch();
	if(isset($auctionInfo['id']))
	{
		$auctionChar = new OTS_Player();
		$auctionChar->load($auctionInfo['char_id']);
		if($auctionChar->isLoaded())
		{
			if($account_logged->getPremiumPoints() > $auctionInfo['bid'] || ($account_logged->getId() == $auctionInfo['bidder'] && $account_logged->getPremiumPoints() > 0))
			{
				if(isset($_REQUEST['bid']) && (int) $_REQUEST['bid'] > 0)
				{
					$userBid = (int) $_REQUEST['bid'];
					if($account_logged->getPremiumPoints() >= $userBid || ($account_logged->getId() == $auctionInfo['bidder'] && $account_logged->getPremiumPoints() + $auctionInfo['bid'] >= $userBid))
					{
						if($userBid > $auctionInfo['bid'])
						{
							if($account_logged->getId() != $auctionInfo['bidder'])
							{
								$last_bidder = new OTS_Account();
								$last_bidder->load($auctionInfo['bidder']);
								if($last_bidder->isLoaded())
								{
									$last_bidder->setPremiumPoints($last_bidder->getPremiumPoints() + $auctionInfo['bid']);
									$last_bidder->save();
								}
								$account_logged->setPremiumPoints($account_logged->getPremiumPoints() - $userBid);
							}
							else
								$account_logged->setPremiumPoints($account_logged->getPremiumPoints() + $auctionInfo['bid'] - $userBid);
							$account_logged->save();
							$SQL->query('UPDATE `characters_auctions` SET `bid` = ' . $userBid . ', `bidder` = ' . $account_logged->getId() . ' WHERE `id` = ' . $auctionInfo['id']);
							if($auctionInfo['finish_time'] - time() < 60)
								$SQL->query('UPDATE `characters_auctions` SET `finish_time` = ' . time() + 60 . ' WHERE `id` = ' . $auctionInfo['id']);
							$main_content .= '<div class="normalText">You have bidded ' . $userBid . ' premium points on auction ID ' . $auctionInfo['id'] . '!</div>';
							$main_content .= '<div style="padding-top: 120px;padding-left: 45%"><a href="?subtopic=sellchar&action=show&id=' . $auctionInfo['id'] . '" class="linkButton">BACK</a></div>';
						}
						else
							$main_content .= $errorFormStart . 'Sorry! Your bid is lower then current highest bid.<br />Your bid is: ' . $userBid . '<br />Highest bid: ' . $auctionInfo['bid'] . '' . $errorFormEnd;
					}
					else
						$main_content .= $errorFormStart . 'Sorry! You do not have enought premium points.<br />Your bid is: ' . $userBid . '<br />You have: ' . $account_logged->getPremiumPoints() . '' . $errorFormEnd;
				}
				else
					$main_content .= $errorFormStart . 'You must bid more then 0.' . $errorFormEnd;
			}
			else
				$main_content .= $errorFormStart . 'Sorry! You do not have enought premium points.<br />Highest bid is: ' . $auctionInfo['bid'] . '<br />You have: ' . $account_logged->getPremiumPoints() . '' . $errorFormEnd;
		}
		else
			$main_content .= $errorFormStart . 'ERROR! Character doesn\'t exist.' . $errorFormEnd;
	}
	else
		$main_content .= $errorFormStart . 'ERROR! Auction with this ID doesn\'t exist.' . $errorFormEnd;
}
else
	$main_content .= $errorFormStart . 'You are not logged in.' . $errorFormEnd;
}
elseif($action == "buy") ############ BUY CHARACTER ############
{
$main_content .= '<div class="bigText" style="text-align: center">Buy character</div>';
if($logged)
{
	$auctionInfo = $SQL->query('SELECT * FROM `characters_auctions` WHERE `state` = 0 AND `id` = ' . (int) $_REQUEST['id'])->fetch();
	if(isset($auctionInfo['id']))
	{
		if($auctionInfo['buy_now'] > 0)
		{
			$auctionChar = new OTS_Player();
			$auctionChar->load($auctionInfo['char_id']);
			if($auctionChar->isLoaded())
			{
				if($account_logged->getPremiumPoints() >= $auctionInfo['buy_now'] || ($account_logged->getId() == $auctionInfo['bidder'] && $account_logged->getPremiumPoints() + $auctionInfo['bid'] >= $auctionInfo['buy_now']))
				{
					if($account_logged->getId() != $auctionInfo['bidder'])
					{
						$last_bidder = new OTS_Account();
						$last_bidder->load($auctionInfo['bidder']);
						if($last_bidder->isLoaded())
						{
							$last_bidder->setPremiumPoints($last_bidder->getPremiumPoints() + $auctionInfo['bid']);
							$last_bidder->save();
						}
						$account_logged->setPremiumPoints($account_logged->getPremiumPoints() - $auctionInfo['buy_now']);
					}
					else
						$account_logged->setPremiumPoints($account_logged->getPremiumPoints() + $auctionInfo['bid'] - $auctionInfo['buy_now']);
					$account_logged->save();
					$auctionChar->setAccount($account_logged);
					$auctionChar->setGroup(1);
					$auctionChar->save();
					$SQL->query('INSERT INTO `bans` (`id` , `type` , `value` ,`param` ,`active` ,`expires` ,`added` ,`admin_id` ,`comment` ,`reason` ,`action` ,`statement`) VALUES (NULL , 2, ' .$auctionChar->getId() . ', 2, 1, -1, ' . time() . ', 1, \'BUY CHAR\', 0, 1, \'\');');
					$SQL->query('UPDATE `characters_auctions` SET `state` = 2, `finish_time` = ' . time() . ', `bidder` = ' . $account_logged->getId() . ', `bid` = `buy_now` WHERE `id` = ' . $auctionInfo['id']);
					$main_content .= '<div class="normalText">You have bought new character! Character is now on your account. Login in game and select new name for your character.</div>';
					$main_content .= '<div style="padding-top: 120px;padding-left: 45%"><a href="?subtopic=sellchar" class="linkButton">BACK</a></div>';
				}
				else
					$main_content .= $errorFormStart . 'Sorry! You do not have enought premium points.<br />It cost: ' . $auctionInfo['buy_now'] . '<br />You have: ' . $account_logged->getPremiumPoints() . '' . $errorFormEnd;
			}
			else
				$main_content .= $errorFormStart . 'ERROR! Character doesn\'t exist.' . $errorFormEnd;
		}
		else
			$main_content .= $errorFormStart . 'ERROR! You can not buy this character by Buy Now option. You can only Bid on auction.' . $errorFormEnd;
	}
	else
		$main_content .= $errorFormStart . 'ERROR! Auction with this ID doesn\'t exist.' . $errorFormEnd;
}
else
	$main_content .= $errorFormStart . 'You are not logged in.' . $errorFormEnd;
}
else ############ SHOW LIST OF AUCTIONS ############
{
if(isset($_REQUEST['delete']))
	if($logged && $account_logged->getPageAccess() >= $add_character_page_access)
	{
		$SQL->query('DELETE FROM `characters_auctions` WHERE `id` = ' . (int) $_REQUEST['delete']);
		$main_content .= $errorFormStart . 'Auction ' . (int) $_REQUEST['delete'] . ' should be deleted.' . $errorFormEnd;
	}
	else
		$main_content .= $errorFormStart . 'You can not delete. You do not have access.' . $errorFormEnd;
$main_content .= '<div class="bigText" style="text-align: center">Characters Auctions</div>';
$main_content .= '<div class="normalText">With this system you can buy un-used (inactive) characters by auctioning for them. When you bid on a character it will automatically take premium points from your account. If someone out-bids you, you will get those premium points added back to your account. If the auction time is under 2 minutes when someone bids, 1 minute will automatically be added to the auction time to give time for a re-bid from the previous bidder. If you choose to "buy now" you will get the character within 1 minute.</div>';
$main_content .= '<table class="tableFonts"><tr class="tableHead" style="font-size: 28px;text-align: center"><td>Time left</td><td>Char info</td><td>Buy now</td><td>Highest bid</td></tr>';
foreach($SQL->query('SELECT * FROM `characters_auctions` WHERE `finish_time` > ' . time())->fetchAll() as $auctionInfo)
{
	$auctionChar = new OTS_Player();
	$auctionChar->load($auctionInfo['char_id']);
	if($auctionChar->isLoaded())
		$main_content .= '<tr class="tableRow' . ($row++ % 2) . '" style="font-size: 16px;text-align: center" onclick="window.location = \'?subtopic=sellchar&action=show&id=' . $auctionInfo['id'] . '\'"><td><div id="timer_' . $auctionInfo['id'] . '">' . time_left($auctionInfo['finish_time'] - time()) . '</div></td><td>' . $auctionChar->getLevel() . ' ' . $vocation_name[$auctionChar->getWorld()][$auctionChar->getPromotion()][$auctionChar->getVocation()] . '</td><td>' . $auctionInfo['buy_now'] . ' pp</td><td>' . $auctionInfo['bid'] . ' pp</td></tr>';
	$timers['timer_' . $auctionInfo['id']] = $auctionInfo['finish_time'] - time();
}
$main_content .= '</table><br /><div class="normalText">Press on auction to get more informations.</div>';
$main_content .= '<script type="text/javascript">';
foreach($timers as $timer_id => $time_left)
	$main_content .= 'countdown(' . $time_left . ', \'' . $timer_id . '\');';
$main_content .= '</script>';
}
$main_content .= '<br /><br />';
?>

 

Adicione isso em index.php:

		case "charauction":				$topic = "charauction";				$subtopic = "charauction";				include("charauction.php");		break;

 

Logo abaixo disso:

		case "latestnews":				$topic = "Latest News";				$subtopic = "latestnews";				include("latestnews.php");		break;

 

E adicione isso em layout/seulayout/layout.php:

 

<a href='?subtopic=charauction'>  <div id='submenu_charauction' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>	<div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>	<div id='ActiveSubmenuItemIcon_guilds' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div>	<div class='SubmenuitemLabel'>Chars Action</div>	<div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>  </div></a>

 

Logo abaixo disso:

<a href='?subtopic=guilds'>  <div id='submenu_guilds' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>	<div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>	<div id='ActiveSubmenuItemIcon_guilds' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div>	<div class='SubmenuitemLabel'>Guilds</div>	<div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>  </div></a>

 

 

 

Imagens

 

as1.JPG

 

as2.JPG

 

Creditos:

PhoOwned

PiabetaMan01 (por trazer ao forum).

Editado Outubro 6 por PiabetaMan01

DragonTheoryD
06 de outubro de 2012 às 00:57

UiUi

Muito xique isso ai curti mesmo,mais nem vo usar pq nao tenho site =(

Piabeta KunP
06 de outubro de 2012 às 01:34

UiUi

Muito xique isso ai curti mesmo,mais nem vo usar pq nao tenho site =(

 

Cuidado com o comentario amigo para não ser considerado flood!

Mesmo assim obrigado pelo comentario!

DragonTheoryD
06 de outubro de 2012 às 01:37

UiUi

Muito xique isso ai curti mesmo,mais nem vo usar pq nao tenho site =(

 

Cuidado com o comentario amigo para não ser considerado flood!

Mesmo assim obrigado pelo comentario!

Em qual momento isso poderia ser considerado flood?

Pois des de a hora que eu disse "muito xique" eu me esprecei como gostei e você teria que receber como um elogio assim sendo motivador.

E flood é quando você faz um comentario totalmente sem sentido,certo?

Então não é flood ;D

e vo cria um site só pra testa isso kkk

Piabeta KunP
06 de outubro de 2012 às 01:41

UiUi

Muito xique isso ai curti mesmo,mais nem vo usar pq nao tenho site =(

 

Cuidado com o comentario amigo para não ser considerado flood!

Mesmo assim obrigado pelo comentario!

Em qual momento isso poderia ser considerado flood?

Pois des de a hora que eu disse "muito xique" eu me esprecei como gostei e você teria que receber como um elogio assim sendo motivador.

E flood é quando você faz um comentario totalmente sem sentido,certo?

Então não é flood ;D

e vo cria um site só pra testa isso kkk

 

Eu comentei para você não acabar fugindo do assunto que seria o script, intendeu meu caro, eu nao disse que era flood, pq se fosse eu teria o reportado!

Você é um bom membro e acho que entende o que eu quiz dizer!

Leve na esportiva eu só quiz te ajudar para não manter um padrão de comentario onde no futuro poderia sair do foco do topico e voce tomaria alerta de bobeira!

 

Att: PiabetaMan01

DragonTheoryD
06 de outubro de 2012 às 01:51

Estamos fugindo do assunto que é o script,discussão encerrada.

Sobre o Script Gostei Funcionou Corretamente aqui,Obrigado por nos disponibilizar.

Rep+

Piabeta KunP
06 de outubro de 2012 às 01:52

Vlw e bom uso a todos!

SubheS
07 de outubro de 2012 às 00:09

olha mano, eu boto tudo certinho aqui, aparece a pagina e tals.. mas nao consigo por os char pra leilão tlg ;s

 

me ajuda ai ;s

Piabeta KunP
07 de outubro de 2012 às 14:35

veja nas configurações o lvl minimo para vender o char e certifiquese que esta logado!

RHCPR
10 de outubro de 2012 às 22:19

Vi na otland que essa página pode ter inject, bem, eu não sei.

Seria legal um sistema de leilao de item no site, por gold mesmo, ai eu ia curtir.

Piabeta KunP
11 de outubro de 2012 às 06:55

Gold que você fala é por grana in game?

RHCPR
13 de outubro de 2012 às 13:13

Gold que você fala é por grana in game?

 

Sim, por crystal coin, gold coin, platinium.

Vi que tem um sistema assim por talk, mas por site seria show.

Piabeta KunP
16 de outubro de 2012 às 13:47

Não é impossivel fazer, porém não é minha prioridade no momento!

3 meses depois...
PedrinhowiP
25 de janeiro de 2013 às 17:42

eu fiz tudu certinho mais ta dando o seguinte erro na pagina

 

Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\charauction.php on line 508

tem como me ajudar

AlexandreKGA
26 de janeiro de 2013 às 23:01

-RHCP

 

 

Você quer fazer um leilão em ves de ser char,quer fazer por items no caso crystal coins,gold coins seria isso?

 

-Pedrinhowi

 

Você deve ter feito algo errado,refaça o procedimento e certifique-se que está tudo certo.