PI

[Gesior] Venda E Compra De Chares Por Pontos!

Por Piabeta Kun, 03 de set. de 2012 em Websites & Layouts

gesior
otserv
tibia
29
8.7k
Piabeta KunP
03 de setembro de 2012 às 20:20

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 Setembro 8 por PiabetaMan01

CriticalC
05 de setembro de 2012 às 16:07

Pode renovar as imagens? Quebraram, ai sim aprovarei o tutorial.

 

Atenciosamente, Critical.

Piabeta KunP
06 de setembro de 2012 às 01:58

Estarei providenciando, mais aqui eu visualizo normal as imagens!

 

@EDIT

Re-upei as imagens!

Editado Setembro 6 por PiabetaMan01

CriticalC
07 de setembro de 2012 às 20:12

Tutorial está aprovado, estará sendo movido para seção correta.

 

Atenciosamente, Critical.

gabriellippaG
14 de setembro de 2012 às 08:20

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.

Piabeta KunP
14 de setembro de 2012 às 20:04

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!

juninho100kJ
18 de setembro de 2012 às 11:54

Aqui não funcionou :\ Ajuda ai !

Piabeta KunP
21 de setembro de 2012 às 03:40

Aqui não funcionou :\ Ajuda ai !

Indique erros! para que eu possa te ajudar!

SubheS
24 de setembro de 2012 às 02:50

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 ??

Piabeta KunP
24 de setembro de 2012 às 16:00

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!

SubheS
24 de setembro de 2012 às 16:22

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 Setembro 24 por Subhe

Piabeta KunP
24 de setembro de 2012 às 17:07

voce executou as querys que eu postei?

SubheS
24 de setembro de 2012 às 17:50

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 Setembro 24 por Subhe

Piabeta KunP
24 de setembro de 2012 às 18:10

basta adaptar o layout com linakgem a pagina!

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

SubheS
24 de setembro de 2012 às 18:23

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 !