Ir para conteúdo

[Gesior] Venda E Compra De Chares Por Pontos!


Piabeta Kun

Posts Recomendados

Achei um tutorial interessante em forums gringos e resolvi compartilhar com o XTibia!

 

Crie 2 arquivos.php um com nome de buychar.php e sellchar.php

 

Dentro de buychar.php coloque isso:

 

<?PHP
if($logged) {

	if ($action == '') {

	$main_content .= '<center>Here is the list of the current characters that are in the shop!</center>';
	$main_content .= '<BR>';
	$main_content .= '<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD CLASS=white width="64px"><CENTER><B>Name</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Vocation</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Level</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Price</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Buy it</B></CENTER></TD></TR>';
	$getall = $SQL->query('SELECT `id`, `name`, `price`, `status` FROM `sellchar` ORDER BY `id`')or die(mysql_error());
	foreach ($getall as $tt) {
		$namer = $tt['name'];
		$queryt = $SQL->query("SELECT `name`, `vocation`, `level` FROM `players` WHERE `name` = '$namer'");
		foreach ($queryt as $ty) {
		if ($ty['vocation'] == 1) {
		$tu = 'Sorcerer';
	} else if ($ty['vocation'] == 2) {
		$tu = 'Druid';	
	} else if ($ty['vocation'] == 3) {
		$tu = 'Paladin';	
	} else if ($ty['vocation'] == 4) {
		$tu = 'Knight';
	} else if ($ty['vocation'] == 5) {
		$tu = 'Sorcerer';
	}  else if ($ty['vocation'] == 6) {
		$tu = 'Druid';	
	} else if ($ty['vocation'] == 7) {
		$tu = 'Paladin';	
	} else if ($ty['vocation'] == 8) {
		$tu = 'Knight';
	}
	$ee = $tt['name'];
	$ii = $tt['price'];
	$main_content .= '<TR BGCOLOR='.$config['site']['darkborder'].'><TD CLASS=black width="64px"><CENTER><B><a href="index.php?subtopic=characters&name='.$tt['name'].'">'.$tt['name'].'</a></B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B>'.$tu.'</B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B>'.$ty['level'].'</B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B>'.$tt['price'].'</B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B>
	<form action="?subtopic=buychar&action=buy" method="POST">
	<input type="hidden" name="char" value="'.$ee.'">
	<input type="hidden" name="price" value="'.$ii.'">
	<input type="submit" name="submit" value="Buy it"></B></CENTER></TD></TR></form>';
	}
	}
	$main_content .= '</TABLE>';

	}

	if ($action == 'buy') {

		$name = $_POST['char'];	
		$price = $_POST['price'];	
		$ceh = $SQL->query("SELECT `name` FROM `sellchar` WHERE `name` = '$name'");

		if ($ceh) {

		if ($name == '') {

		$main_content .= '<b><center>Select a character to buy first/b>';

		} else {

		$user_premium_points = $account_logged->getCustomField('premium_points');
		$user_id = $account_logged->getCustomField('id');

		if ($user_premium_points >= $price) {

		$check = $SQL->query("SELECT * FROM `sellchar` WHERE `name` = '$name'") or die(mysql_error());
		$check1 = $SQL->query("SELECT * FROM `players` WHERE `name` = '$name'") or die(mysql_error());
		$check2 = $SQL->query("SELECT `oldid` FROM `sellchar` WHERE `name` = '$name'");
		foreach ($check as $result) {
		foreach($check1 as $res) {
		foreach($check2 as $ress) {

		$oid = $ress['oldid'];	
		$main_content .= '<center>You bought<b> '.$name.' ( '.$res['level'].' ) </b>for  <b>'.$result['price'].' points.</b><br></center>';
		$main_content .= '<br>';
		$main_content .= '<center><b>The character is in your account, have fun!</b></center>';
		$execute1 = $SQL->query("UPDATE `accounts` SET `premium_points` = `premium_points` - '$price' WHERE `id` = '$user_id'");
		$execute2 = $SQL->query("UPDATE `players` SET `account_id` = '$user_id' WHERE `name` = '$name'");
		$execute2 = $SQL->query("UPDATE `accounts` SET `premium_points` = `premium_points` + '$price' WHERE `id` = '$oid'");
		$execute3 = $SQL->query("DELETE FROM `sellchar` WHERE `name` = '$name'");

		}
			}
		}

		} else {

			$main_content .= '<center><b>You dont have enought premium points</b></center>';

				}

			}	

		} else {
			$main_content .= '<center><b>Character cannot be buyed</b></center>';
		}
	}

} else {

	$main_content .= '<center>Please log in first!</center>';
}
?>

 

e em sellchar.php coloque isso:

 

<?PHP
if($logged) {
	$main_content .= '<center><b>Here you can put your character on sale!</center></b><br>';
	$main_content .= 'If you put your character on sale anyone can buy it, you will lose acces to that character and you wont be able to log in with that character until someone buys it, you can also delete your offer by talking to an admin!<br><b>when someone buys your character you will get the price in points!</b>';
	$main_content .= '<br>';
	$main_content .= '<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD CLASS=white width="64px"><CENTER><B>Sell your characters</B></CENTER></TD></TR>';
	$main_content .= '<TR BGCOLOR='.$config['site']['darkborder'].'><TD CLASS=black width="64px"><B></B>';

	$players_from_logged_acc = $account_logged->getPlayersList();

							$players_from_logged_acc->orderBy('name');
							$main_content .= '<form action="" method="post"><select name="char">';
							foreach($players_from_logged_acc as $player)
							{
								$main_content .= '<option>'.$player->getName().'</option>';
							}

	$main_content .= '</select>Select a character to sell<br>';
	$main_content .= '<input type="text" name="price" maxlength="10" size="4" >Select the price of the character<br>';
	$main_content .= '<input type="submit" name="submit" value="Sell character"></TD></TR>';
						$main_content .= '</form></table>';

						if (isset($_POST['submit'])) {

						$char = mysql_real_escape_string($_POST['char']);
						$price = mysql_real_escape_string($_POST['price']);

						if ($char && $price) {

							if(is_numeric(trim($_POST['price']))) {

									$check2 = $SQL->query("SELECT * FROM `players` WHERE `name` = '$char'") or die(mysql_error());
							foreach ($check2 as $re) {
								$voc = $re['vocation'];
								$oid = $re['account_id'];
							}
							$check1 = $SQL->query("UPDATE `players` SET `account_id` = 1 WHERE `name` = '$char'") or die(mysql_error());
							$check3 = $SQL->query("INSERT INTO `sellchar` VALUES ('','$char','$voc','$price','1','$oid')");
							$main_content .= '<b><center>You added your character correctly, thanks!</b></center>';
							header("Location: index.php?subtopic=buychar");

							} else {

							$main_content .= '<b><center>Set a numeric price!!</b></center>';
							}

						} else {
								$main_content .= '<b><center>Fill out all fields!</b></center>';
						}

					}
} else {
	$main_content .= '<b><center>Please log in first!</b></center>';
}
?>

 

Agora adicione isso no index.php

 

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

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

 

e adicone essa query

CREATE TABLE IF NOT EXISTS `sellchar` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(40) NOT NULL,
 `vocation` int(11) NOT NULL,
 `price` int(11) NOT NULL,
 `status` varchar(40) NOT NULL,
 `oldid` varchar(40) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

 

Acesse seuip/?subtopic=sellchar e seuip/?subtopic=buychar

 

Screenshots

 

320103_281977541911339_1988387502_n.jpg

 

246700_281977511911342_1561622752_n.jpg

 

375911_281977525244674_1890430678_n.jpg

 

 

Creditos: Raggaer e PiabetaMan01 por trazer ao forum e WarWolf Pela query !

Editado por PiabetaMan01
Link para o comentário
Compartilhar em outros sites

não teria como colocar um tempo, por exemplo: daqui 5 meses, se o char não logar, ele será movido pra uma account.

Teria como?

Porque da forma que entendi, que você disse acima, o player que vende, ai ele chega com 100 chars level 1 e vende cada um por 100 pontos, totalizando 10000 pontos.

Link para o comentário
Compartilhar em outros sites

Este tutorial serve para comercio de chares no servidor, alguem pode por o char a venda para outra pessoa comprar , a pessoa que for comprar deve ter a contidade de pontos na loja para adquirir o char e se tiver a transação será feita entre os players, um fica com o char r o outro com os pontos, ou seja, para comprar voce tem que ter pontos comprados na loja e esses pontos são são envidados a quem está vendendo o char!

Espero que tenha entendido como funciona!

Link para o comentário
Compartilhar em outros sites

me explica ai como funciona... exemplo: typo eu vou vender meu char por 100 pontos, ai um mlk compra ele...

ele vai ficar com minha conta ?? se ficar, para onde meus pontos vão ?? ou meu char vai pra conta dele ??

Link para o comentário
Compartilhar em outros sites

nao voce bota pra vender um char da sua acc pox x pontos, se ele tiver x pontos, o char passa pra acc dele e voce recebe o x potnso que ele tinha!

 

 

aah entendi, no caso eu continuo com a conta .. e meu char vai pra conta dele née ? e os pontos dele pra minha (:

 

ai mano, aparece o seguinte erro

 

 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\sellchar.php on line 25

 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\xampp\htdocs\sellchar.php on line 25

 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\sellchar.php on line 26

 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\xampp\htdocs\sellchar.php on line 26

 

 

e não aparece a tabela no site, só aparece se eu botar o link que vc mandou la emcima ;s

 

me ajuda ae ;s

 

 

Edit:

meu Gesior é Gesior Acc Maker 0.3.8 Modificado E Customizado

Editado por Subhe
Link para o comentário
Compartilhar em outros sites

voce executou as querys que eu postei?

 

executei, num é na database do ot ?? ai boto na database, e dps la em SQL e executo né ??

 

se for isso, eu executei ;s

 

mas nao ficou a tabela no ot, e tá dando esses erros na hora de botar pra vender ;s

 

 

edit: é só 1 query. ou tem + ?

 

não tá faltando o Layout ??

Editado por Subhe
Link para o comentário
Compartilhar em outros sites

basta adaptar o layout com linakgem a pagina!

estarei vendo se ta faltando query pois eu nao sou o criador do sistema!

 

se você conseguir me ajudar nisso, vou te dar varios REP+, por um monte de dias ausauhs

 

Estarei Aguardando !

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...