Ir para conteúdo
  • Cadastre-se

Database Sistema de shopping do site não entrega o item ao personagem


Posts Recomendados

No meu site tenho um sistema de compra de itens, porém ao comprar o item normalmente, o item não é recebido no char, na aba de trans. history mostra que o item ainda não foi recebido e na tabela shop_history_item mostra como WAIT.

Link para o post
Compartilhar em outros sites

Este tópico foi movido para a área correta. Esta é uma mensagem automática!
Pedimos que leia as regras do fórum!

Spoiler

This topic has been moved to the correct area. This is an automated message!
Please read the forum rules.

 

Link para o post
Compartilhar em outros sites
Agora, victor4312 disse:

qual erro que dá? 

 

Não dá erro, simplesmente o item não chega no personagem. Na tabela que mostra o histórico de compras, na coluna que mostra o estado da transação, diz: Wait, se o item tivesse chegado normalmente pro player, mostraria: Realized. Não sei qual o problema.

Link para o post
Compartilhar em outros sites
2 minutos atrás, victor4312 disse:

estranho, tenta trocar o shop.lua por esse

 


-- ### CONFIG ###
-- message send to player by script "type" (types you can check in "global.lua")
SHOP_MSG_TYPE = 19
-- time (in seconds) between connections to SQL database by shop script
SQL_interval = 30
-- ### END OF CONFIG ###
function onThink(interval, lastExecution)
    local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
    if(result_plr:getID() ~= -1) then
        while(true) do
            id = tonumber(result_plr:getDataInt("id"))
            action = tostring(result_plr:getDataString("action"))
            delete = tonumber(result_plr:getDataInt("delete_it"))
            cid = getCreatureByName(tostring(result_plr:getDataString("name")))
            if isPlayer(cid) == TRUE then
                local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
                local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
                local container_id = tonumber(result_plr:getDataInt("param3"))
                local container_count = tonumber(result_plr:getDataInt("param4"))
                local add_item_type = tostring(result_plr:getDataString("param5"))
                local add_item_name = tostring(result_plr:getDataString("param6"))
                local received_item = 0
                local full_weight = 0
                if add_item_type == 'container' then
                    container_weight = getItemWeightById(container_id, 1)
                    if isItemRune(itemtogive_id) == TRUE then
                        items_weight = container_count * getItemWeightById(itemtogive_id, 1)
                    else
                        items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count)
                    end
                    full_weight = items_weight + container_weight
                else
                    full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
                    if isItemRune(itemtogive_id) == TRUE then
                        full_weight = getItemWeightById(itemtogive_id, 1)
                    else
                        full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
                    end
                end
                local free_cap = getPlayerFreeCap(cid)
                if full_weight <= free_cap then
                    if add_item_type == 'container' then
                        local new_container = doCreateItemEx(container_id, 1)
						doItemSetAttribute(new_container, "description", 'Comprado por ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
                        local iter = 0
                        while iter ~= container_count do
							local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
							doItemSetAttribute(new_item, "description", 'Comprado por ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
							doAddContainerItemEx(new_container, new_item)
                            iter = iter + 1
                        end
                        received_item = doPlayerAddItemEx(cid, new_container)
                    else
                        local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
						doItemSetAttribute(new_item, "description", 'Comprado por ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
                        received_item = doPlayerAddItemEx(cid, new_item)
                    end
                    if received_item == RETURNVALUE_NOERROR then
                        doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
						doPlayerSave(cid)
                        db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                        db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
                    else
                        doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.')
                    end
                else
                    doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.')
                end
            end
            if not(result_plr:next()) then
                break
            end
        end
        result_plr:free()
    end
    return TRUE
end

 

 

No meu caso o arquivo é o shopsystem.php, segue o codigo:

<?PHP
//  ALTER TABLE `z_shop_history_item` CHANGE `offer_id` `offer_id` VARCHAR( 255 ) NOT NULL;
// UPDATE `z_shop_history_item`, `z_shop_offer` SET `z_shop_history_item`.`offer_id` = `z_shop_offer`.`offer_name` WHERE `z_shop_history_item`.`offer_id` = `z_shop_offer`.`id`;
if($config['site']['shop_system'] == 1)
{
	if($logged)
		$user_premium_points = $account_logged->getCustomField('premium_points');
	else
		$user_premium_points = 'Login first';
	function getItemByID($id)
	{
		$id = (int) $id;
		$SQL = $GLOBALS['SQL'];
		$data = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_offer').' WHERE '.$SQL->fieldName('id').' = '.$SQL->quote($id).';')->fetch();
		if ($data['offer_type'] == 'pacc')
		{
			$offer['id'] = $data['id'];
			$offer['type'] = $data['offer_type'];
			$offer['days'] = $data['count1'];
			$offer['points'] = $data['points'];
			$offer['description'] = $data['offer_description'];
			$offer['name'] = $data['offer_name'];
		}
		elseif ($data['offer_type'] == 'item')
		{
			$offer['id'] = $data['itemid1'];
			$offer['type'] = $data['offer_type'];
			$offer['item_id'] = $data['id'];
			$offer['item_count'] = $data['count1'];
			$offer['points'] = $data['points'];
			$offer['description'] = $data['offer_description'];
			$offer['name'] = $data['offer_name'];
		}
		elseif ($data['offer_type'] == 'container')
		{
			$offer['id'] = $data['id'];
			$offer['type'] = $data['offer_type'];
			$offer['container_id'] = $data['itemid2'];
			$offer['container_count'] = $data['count2'];
			$offer['item_id'] = $data['itemid1'];
			$offer['item_count'] = $data['count1'];
			$offer['points'] = $data['points'];
			$offer['description'] = $data['offer_description'];
			$offer['name'] = $data['offer_name'];
		}
		elseif ($data['offer_type'] == 'unban')
		{
			$offer['id'] = $data['id'];
			$offer['type'] = $data['offer_type'];
			$offer['points'] = $data['points'];
			$offer['description'] = $data['offer_description'];
			$offer['name'] = $data['offer_name'];
		}
        elseif ($data['offer_type'] == 'redskull')
		{
			$offer['id'] = $data['id'];
			$offer['type'] = $data['offer_type'];
			$offer['points'] = $data['points'];
			$offer['description'] = $data['offer_description'];
			$offer['name'] = $data['offer_name'];
		}
		elseif ($data['offer_type'] == 'itemlogout')
		{
			$offer['id'] = $data['id'];
			$offer['type'] = $data['offer_type'];
			$offer['points'] = $data['points'];
			$offer['description'] = $data['offer_description'];
			$offer['pid'] = $data['pid'];
			$offer['count1'] = $data['count1'];
			$offer['item_id'] = $data['itemid1'];
			$offer['free_cap'] = $data['free_cap'];
		}
		elseif ($data['offer_type'] == 'changename')
		{
			$offer['id'] = $data['id'];
			$offer['type'] = $data['offer_type'];
			$offer['points'] = $data['points'];
			$offer['description'] = $data['offer_description'];
			$offer['name'] = $data['offer_name'];
		}
		return $offer;
	}
	function getOfferArray()
	{
		$offer_list = $GLOBALS['SQL']->query('SELECT * FROM '.$GLOBALS['SQL']->tableName('z_shop_offer').';');
		$i_pacc = 0;
		$i_item = 0;
		$i_container = 0;
		$i_unban = 0;
		$i_redskull = 0;
		$i_itemlogout = 0;
		$i_changename = 0;
		while($data = $offer_list->fetch()) 
		{
			if ($data['offer_type'] == 'pacc')
			{
				$offer_array['pacc'][$i_pacc]['id'] = $data['id'];
				$offer_array['pacc'][$i_pacc]['days'] = $data['count1'];
				$offer_array['pacc'][$i_pacc]['points'] = $data['points'];
				$offer_array['pacc'][$i_pacc]['description'] = $data['offer_description'];
				$offer_array['pacc'][$i_pacc]['name'] = $data['offer_name'];
				$i_pacc++;
			}
			elseif ($data['offer_type'] == 'item')
			{
				$offer_array['item'][$i_item]['id'] = $data['id'];
				$offer_array['item'][$i_item]['item_id'] = $data['itemid1'];
				$offer_array['item'][$i_item]['item_count'] = $data['count1'];
				$offer_array['item'][$i_item]['points'] = $data['points'];
				$offer_array['item'][$i_item]['description'] = $data['offer_description'];
				$offer_array['item'][$i_item]['name'] = $data['offer_name'];
				$i_item++;
			}
			elseif ($data['offer_type'] == 'container')
			{
				$offer_array['container'][$i_container]['id'] = $data['id'];
				$offer_array['container'][$i_container]['container_id'] = $data['itemid2'];
				$offer_array['container'][$i_container]['container_count'] = $data['count2'];
				$offer_array['container'][$i_container]['item_id'] = $data['itemid1'];
				$offer_array['container'][$i_container]['item_count'] = $data['count1'];
				$offer_array['container'][$i_container]['points'] = $data['points'];
				$offer_array['container'][$i_container]['description'] = $data['offer_description'];
				$offer_array['container'][$i_container]['name'] = $data['offer_name'];
				$i_container++;
			}
			elseif ($data['offer_type'] == 'unban')
			{
				$offer_array['unban'][$i_unban]['id'] = $data['id'];
				$offer_array['unban'][$i_unban]['points'] = $data['points'];
				$offer_array['unban'][$i_unban]['description'] = $data['offer_description'];
				$offer_array['unban'][$i_unban]['name'] = $data['offer_name'];
				$i_unban++;
			}
			elseif ($data['offer_type'] == 'redskull')
			{
				$offer_array['redskull'][$i_redskull]['id'] = $data['id'];
				$offer_array['redskull'][$i_redskull]['points'] = $data['points'];
				$offer_array['redskull'][$i_redskull]['description'] = $data['offer_description'];
				$offer_array['redskull'][$i_redskull]['name'] = $data['offer_name'];
				$i_redskull++;
			}
			elseif ($data['offer_type'] == 'itemlogout')
			{
				$offer_array['itemlogout'][$i_itemlogout]['id'] = $data['id'];
				$offer_array['itemlogout'][$i_itemlogout]['points'] = $data['points'];
				$offer_array['itemlogout'][$i_itemlogout]['description'] = $data['offer_description'];
				$offer_array['itemlogout'][$i_itemlogout]['name'] = $data['offer_name'];
				$offer_array['itemlogout'][$i_itemlogout]['count1'] = $data['count1'];
				$offer_array['itemlogout'][$i_itemlogout]['pid'] = $data['pid'];
				$offer_array['itemlogout'][$i_itemlogout]['item_id'] = $data['itemid1'];
				$offer_array['itemlogout'][$i_itemlogout]['free_cap'] = $data['free_cap'];
				$i_itemlogout++;
			}
			elseif ($data['offer_type'] == 'changename')
			{
				$offer_array['changename'][$i_changename]['id'] = $data['id'];
				$offer_array['changename'][$i_changename]['points'] = $data['points'];
				$offer_array['changename'][$i_changename]['description'] = $data['offer_description'];
				$offer_array['changename'][$i_changename]['name'] = $data['offer_name'];
				$i_changename++;
			}
		}
		return $offer_array;
	}
	if($action == '')
	{
		unset($_SESSION['viewed_confirmation_page']);
		$main_content .= '<h2><center>Welcome to '.$config['server']['serverName'].' shop.</center></h2><center>';
		$offer_list = getOfferArray();
		//show list of pacc offers
		if(count($offer_list['pacc']) > 0)
		{
			$main_content .= '<table border="0" cellpadding="1" cellspacing="1" width="90%"><tr bgcolor="'.$config['site']['vdarkborder'].'" class="white"><td colspan="3"><font size="4"><b>Pacc</b></font></td></tr>
				<tr bgcolor="'.$config['site']['vdarkborder'].'" class="white"><td width="50" align="center"><b>Picture</b></td><td width="350" align="left"><b>Description</b></td><td width="250" align="center"><b>Select product</b></td></tr>';
			foreach($offer_list['pacc'] as $pacc)
			{
				if(is_int($number_of_rows / 2)) $bgcolor = $config['site']['darkborder']; else $bgcolor = $config['site']['lightborder']; 
					$number_of_rows++; 
				$main_content .= '<tr bgcolor="'.$bgcolor.'"><td align="center"><font color="black">'.$pacc['days'].'</td><td><font color="black"<b>'.$pacc['name'].'</b> ('.$pacc['points'].' points)<br />'.$pacc['description'].'</td><td align="center">';
				if(!$logged)
				{
					$main_content .= '<b>Login to buy</b>';
				}
				else
				{
					$main_content .= '<form action="index.php?subtopic=shopsystem&action=select_player" method=POST><input type="hidden" name="buy_id" value="'.$pacc['id'].'"><input type="submit" value="Buy '.$pacc['name'].'"><br><font color="black"<b>for '.$pacc['points'].' points</b></form>';
				}
				$main_content .= '</td></tr>';
			}
			$main_content .= '</table><br />';
		}
		//show list of items offers
		if(count($offer_list['item']) > 0)
		{
			$main_content .= '<center><table border="0" cellpadding="1" cellspacing="1" width="90%"><tr bgcolor="'.$config['site']['vdarkborder'].'" class="white"><td colspan="3"><font color="gold" size="4"><b>&nbsp;ITEMS</b></font></td></tr><tr bgcolor="'.$config['site']['vdarkborder'].'" class="white"><td width="50" align="center"><font color=red><b>Picture</b></font></td><td width="350" align="left"><font color=red><b>Description</b></font></td><td width="250" align="center"><font color=red><b>Select product</b></font></td></tr>';
			foreach($offer_list['item'] as $item)
			{	
				if(is_int($number_of_rows / 2)) $bgcolor = $config['site']['darkborder']; else $bgcolor = $config['site']['lightborder']; 
					$number_of_rows++; 
		$main_content .= '<tr bgcolor="#F1E0C6"><td align="center"><img src="item_images/'.$item['item_id'].'.gif"></td><td><b>'.$item['name'].'</b> ('.$item['points'].' points)<br />'.$item['description'].'</td><td align="center">';
				if(!$logged)
				{
					$main_content .= '<b>Login to buy</b>';
				}
				else
				{
					if ($user_premium_points >= $item['points'])
						$color = 'green';
					else
						$color = 'red';
						
					$main_content .= '<form action="index.php?subtopic=shopsystem&action=select_player" method=POST><input type="hidden" name="buy_id" value="'.$item['id'].'"><input type="submit" value="Buy '.$item['name'].'"><br><b><font color="'.$color.'">for '.$item['points'].' points</font></b></form>';
				}
				$main_content .= '</td></tr>';
			}
			$main_content .= '</table><br />';
		}
		// show list of containers offers
		if(count($offer_list['container']) > 0) 
		{
			$main_content .= '<table border="0" cellpadding="1" cellspacing="1" width="90%"><tr bgcolor="'.$config['site']['vdarkborder'].'" class="white"><td colspan="3"><font color="white" size="4"><b>&nbsp;CONTAINERS WITH ITEMS</b></font></td></tr><tr bgcolor="'.$config['site']['vdarkborder'].'" class="white"><td width="50" align="center"><b>Picture</b></td><td width="350" align="left"><b>Description</b></td><td width="250" align="center"><b>Select product</b></td></tr>';
			foreach($offer_list['container'] as $container) 
			{
				if(is_int($number_of_rows / 2)) $bgcolor = $config['site']['darkborder']; else $bgcolor = $config['site']['lightborder']; 
					$number_of_rows++; 
				$main_content .= '<tr bgcolor="'.$bgcolor.'"><td align="center"><img src="images/items/'.$container['id'].'.gif"></td><td><b>'.$container['name'].'</b> ('.$container['points'].' points)<br />'.$container['description'].'</td><td align="center">';
				if(!$logged)
					$main_content .= '<b>Login to buy</b>';
				else 
					$main_content .= '<form action="?subtopic=shopsystem&action=select_player" method=POST><input type="hidden" name="buy_id" value="'.$container['id'].'"><input type="submit" value="Buy '.$container['name'].'"><br><b>for '.$container['points'].' points</b></form>';
				$main_content .= '</td></tr>';
			}
			$main_content .= '</table><br />';
		}
		//show list of itemlogout offers
		if(count($offer_list['itemlogout']) > 0)
		{
			$main_content .= '<table border="0" cellpadding="1" cellspacing="1" width="90%"><tr bgcolor="'.$config['site']['vdarkborder'].'" class="white"><td colspan="3"><font color="gold" size="4"><b>&nbsp;Receive Item on Logout</b></font></td></tr><tr bgcolor="'.$config['site']['vdarkborder'].'" class="white"><td width="50" align="center"><font color=red><b>Picture</b></font></td><td width="350" align="left"><font color=red><b>Description</b></font></td><td width="250" align="center"><font color=red><b>Select product</b></font></td></tr>';
			foreach($offer_list['itemlogout'] as $itemlogout)
			{
				if(is_int($number_of_rows / 2)) $bgcolor = $config['site']['darkborder']; else $bgcolor = $config['site']['lightborder']; 
					$number_of_rows++; 
				$main_content .= '<tr bgcolor="'.$bgcolor.'"><td align="center"><img src="images/items/'.$itemlogout['id'].'.gif"></td><td><b>'.$itemlogout['name'].'</b> ('.$itemlogout['points'].' points)<br />'.$itemlogout['description'].'</td><td align="center">';
				if(!$logged)
				{
					$main_content .= '<b>Login to buy</b>';
				}
				else
				{
					$main_content .= '<form action="index.php?subtopic=shopsystem&action=select_player" method=POST><input type="hidden" name="buy_id" value="'.$itemlogout['id'].'"><input type="submit" value="Buy '.$itemlogout['name'].'"><br><b>for '.$itemlogout['points'].' points</b></form>';
				}
				$main_content .= '</td></tr>';
			}
			$main_content .= '</table><br />';
		}
		if(count($offer_list['changename']) > 0  or count($offer_list['redskull']) > 0 or count($offer_list['unban']) > 0 )
			$main_content .= '<table border="0" cellpadding="1" cellspacing="1" width="90%"><tr bgcolor="'.$config['site']['vdarkborder'].'" class="white"><td colspan="3"><font color="gold" size="4"><b>&nbsp;Others</b></font></td></tr><tr bgcolor="'.$config['site']['vdarkborder'].'" class="white"><td width="50" align="center"><font color=red><b></b></font></td><td width="350" align="left"><font color=red><b>Description</b></font></td><td width="250" align="center"><font color=red><b>Select product</b></font></td></tr>';
		if(count($offer_list['changename']) > 0)
			foreach($offer_list['changename'] as $changename)
			{
				if(is_int($number_of_rows / 2)) $bgcolor = $config['site']['darkborder']; else $bgcolor = $config['site']['lightborder']; 
					$number_of_rows++; 
				$main_content .= '<tr bgcolor="'.$bgcolor.'"><td align="center"><font color="black">Change Name</td><td><font color="black"<b>'.$changename['name'].'</b> ('.$changename['points'].' points)<br />'.$changename['description'].'</td><td align="center">';
				if(!$logged)
				{
					$main_content .= '<b>Login to buy</b>';
				}
				else
				{
					$main_content .= '<form action="index.php?subtopic=shopsystem&action=select_player" method=POST><input type="hidden" name="buy_id" value="'.$changename['id'].'"><input type="submit" value="Buy '.$changename['name'].'"><br><font color="black"<b>for '.$changename['points'].' points</b></form>';
				}
			}
		if(count($offer_list['redskull']) > 0)
			foreach($offer_list['redskull'] as $redskull)
			{
				if(is_int($number_of_rows / 2)) $bgcolor = $config['site']['darkborder']; else $bgcolor = $config['site']['lightborder']; 
					$number_of_rows++; 
				$main_content .= '<tr bgcolor="'.$bgcolor.'"><td align="center"><img src="images/items/'.$redskull['id'].'.gif"></td><td><font color="black"<b>'.$redskull['name'].'</b> ('.$redskull['points'].' points)<br />'.$redskull['description'].'</td><td align="center">';
				if(!$logged)
				{
					$main_content .= '<b>Login to buy</b>';
				}
				else
				{
					$main_content .= '<form action="index.php?subtopic=shopsystem&action=select_player" method=POST><input type="hidden" name="buy_id" value="'.$redskull['id'].'"><input type="submit" value="Buy '.$redskull['name'].'"><br><font color="black"<b>for '.$redskull['points'].' points</b></form>';
				}
				$main_content .= '</td></tr>';
			}
		if(count($offer_list['unban']) > 0)
			foreach($offer_list['unban'] as $unban)
			{
				if(is_int($number_of_rows / 2)) $bgcolor = $config['site']['darkborder']; else $bgcolor = $config['site']['lightborder']; 
					$number_of_rows++; 
				$main_content .= '<tr bgcolor="'.$bgcolor.'"><td align="center"><font color="black">Unban</td><td><font color="black"<b>'.$unban['name'].'</b> ('.$unban['points'].' points)<br />'.$unban['description'].'</td><td align="center">';
				if(!$logged)
				{
					$main_content .= '<b>Login to buy</b>';
				}
				else
				{
					$main_content .= '<form action="index.php?subtopic=shopsystem&action=select_player" method=POST><input type="hidden" name="buy_id" value="'.$unban['id'].'"><input type="submit" value="Buy '.$unban['name'].'"><br><font color="black"<b>for '.$unban['points'].' points</b></form>';
				}
				$main_content .= '</td></tr>';
			}
		$main_content .= '</table><br /></center>';
	}
	elseif($action == 'select_player')
	{
		unset($_SESSION['viewed_confirmation_page']);
		if(!$logged) 
		{
			$main_content .= 'Please login first.';
		}
		else
		{
			$buy_id = (int) $_REQUEST['buy_id'];
			if(empty($buy_id))
			{
				$main_content .= 'Please <a href="index.php?subtopic=shopsystem">select item</a> first.';
			}
			else
			{
				$buy_offer = getItemByID($buy_id);
				if(isset($buy_offer['id'])) //item exist in database
				{
					if($buy_offer['type'] != 'changename') 
					{
						if($user_premium_points >= $buy_offer['points'])
						{
							$main_content .= '<h2>Select player</h2>
								<table border="0" cellpadding="1" cellspacing="1" width="650">
								<tr bgcolor="black"><td colspan="2"><font color="gold" size="4"><b>Selected offer</b></font></td></tr>
								<tr bgcolor="gold"><td width="100"><b>Name:</b></td><td width="550">'.$buy_offer['name'].'</td></tr>
								<tr bgcolor="gold"><td width="100"><b>Description:</b></td><td width="550">'.$buy_offer['description'].'</td></tr>
								</table><br />
								<form action="index.php?subtopic=shopsystem&action=confirm_transaction" method=POST><input type="hidden" name="buy_id" value="'.$buy_id.'">
								<table border="0" cellpadding="1" cellspacing="1" width="650">
								<tr bgcolor="black"><td colspan="2"><font color="gold" size="4"><b>Give item/pacc* to player from your account</b></font></td></tr>
								<tr bgcolor="gold"><td width="110"><b>Name:</b></td><td width="550"><select name="buy_name">';
							$players_from_logged_acc = $account_logged->getPlayersList();
							if(count($players_from_logged_acc) > 0)
							{
								$players_from_logged_acc->orderBy('name');
								foreach($players_from_logged_acc as $player)
								{
									$main_content .= '<option>'.$player->getName().'</option>';
								}
							}
							else
							{
								$main_content .= 'You don\'t have any character on your account.';
							}
							$main_content .= '</select>&nbsp;<input type="submit" value="Give"></td></tr>
								</table>
								</form><br /><form action="index.php?subtopic=shopsystem&action=confirm_transaction" method=POST><input type="hidden" name="buy_id" value="'.$buy_id.'">
								<table border="0" cellpadding="1" cellspacing="1" width="650">
								<tr bgcolor="black"><td colspan="2"><font color="gold" size="4"><b>Give item/pacc* to other player</b></font></td></tr>
								<tr bgcolor="gold"><td width="110"><b>To player:</b></td><td width="550"><input type="text" name="buy_name"> - name of player on</td></tr>
								<tr bgcolor="gold"><td width="110"><b>From:</b></td><td width="550"><input type="text" name="buy_from">&nbsp;<input type="submit" value="Give"> - your nick, \'empty\' = Anonymous</td></tr>
								</table><br />
								</form>';
							$main_content .= '*PACC is for all characters from account of selected player name';
						}
						else
						{
							$main_content .= 'For this item you need <b>'.$buy_offer['points'].'</b> points. You have only <b>'.$user_premium_points.'</b> premium points. Please <a href="index.php?subtopic=shopsystem">select other item</a> or buy premium points.';
						}
					}
					else
					{
						$main_content .= '<form action="index.php?subtopic=shopsystem&action=confirm_transaction" method=POST><input type="hidden" name="buy_id" value="'.$buy_id.'">
							<table border="0" cellpadding="1" cellspacing="1" width="650">
							<tr bgcolor="black"><td colspan="2"><font color="gold" size="4"><b>Change Name:</b></font></td></tr>
							<tr bgcolor="gold"><td width="110"><b>Name:</b></td><td width="550"><select name="buy_name">';
						$players_from_logged_acc = $account_logged->getPlayersList();
						if(count($players_from_logged_acc) > 0)
						{
							$players_from_logged_acc->orderBy('name');
							foreach($players_from_logged_acc as $player)
							{
								$main_content .= '<option>'.$player->getName().'</option>';
							}
						}
						else
						{
							$main_content .= 'You don\'t have any character on your account.';
						}
						$main_content .= '</select></td></tr>
							<tr bgcolor="gold"><td width="110"><b>New name:</b></td><td width="550"><input type="text" name="buy_from">&nbsp;<input type="submit" value="Change Name"></td></tr>
							</table><br />
							</form>';
					}
				}
				else
				{
					$main_content .= 'Offer with ID <b>'.$buy_id.'</b> doesn\'t exist. Please <a href="index.php?subtopic=shopsystem">select item</a> again.';
				}
			}
		}
	}
	elseif($action == 'confirm_transaction')
	{
		if(!$logged) 
		{
			$main_content .= 'Please login first.';
		}
		else
		{
			$buy_id = (int) $_POST['buy_id'];
			$buy_name = stripslashes(urldecode($_POST['buy_name']));
			$buy_from = stripslashes(urldecode($_POST['buy_from']));
			if(empty($buy_id))
			{
				$main_content .= 'Please <a href="index.php?subtopic=shopsystem">select item</a> first.';
			}
			else
			{
				if($buy_offer['type'] == 'changename')
				{
					if(!check_name_new_char($buy_from))
					{
						$main_content .= 'Invalid name format of new name.';
					}
				}
				else
				{
					$buy_offer = getItemByID($buy_id);
					$check_name_in_database = $ots->createObject('Player');
					$check_name_in_database->find($buy_from);
					if($buy_offer['type'] == 'changename')
					{
						if(!$check_name_in_database->isLoaded()) 
						{
						}
					}
					if(isset($buy_offer['id'])) //item exist in database
					{
						if($user_premium_points >= $buy_offer['points'])
						{
							if(check_name($buy_name))
							{
								$buy_player = new OTS_Player();
								$buy_player->find($buy_name);
								if($buy_player->isLoaded())
								{
									$buy_player_account = $buy_player->getAccount();
									if($_SESSION['viewed_confirmation_page'] == 'yes' && $_POST['buy_confirmed'] == 'yes')
									{
										# pacc
										if($buy_offer['type'] == 'pacc')
										{
											$player_premdays = $buy_player_account->getCustomField('premdays');
											$player_lastlogin = $buy_player_account->getCustomField('lastday');
											$save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_item').' (id, to_name, to_account, from_nick, from_account, price, pacc_days, trans_state, trans_start, trans_real) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).',  '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['days']).', \'realized\', '.$SQL->quote(time()).', '.$SQL->quote(time()+$buy_offer['days']*24*60*60).');';
											$SQL->query($save_transaction);
											$buy_player_account->setCustomField('premdays', $player_premdays+$buy_offer['days']);
											$account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
											$user_premium_points = $user_premium_points - $buy_offer['points'];
											if($player_premdays == 0)
											{
												$buy_player_account->setCustomField('lastday', time());
											}
											$main_content .= '<h2>PACC added!</h2><b>'.$buy_offer['days'].' days</b> of Premium Account added to account of player <b>'.$buy_player->getName().'</b> for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>';
										}
										# unban
										elseif($buy_offer['type'] == 'unban')
										{
											$my_acc_id = $account_logged->getCustomField('id');
											$datadata = $SQL->query('SELECT * FROM '.$SQL->tableName('bans').' WHERE value = '.$my_acc_id.';')->fetch();
											if($datadata['value'] == $my_acc_id) 
											{
												if($SQL->query('DELETE FROM bans WHERE value= '.$my_acc_id.' LIMIT 1;'))
												{
												}
												else
												{
													$SQL->query('DELETE FROM bans WHERE account= '.$my_acc_id.' LIMIT 1;');
												}
												$account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
												$user_premium_points = $user_premium_points - $buy_offer['points'];
												$main_content .= '<h2>Ban Deleted!</h2><b>Your account has been unbanned for '.$buy_offer['points'].' premium points</b>from your account.
												<br>
												Now you have<b>'.$user_premium_points.' premium points</b>.<br><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>';
											} 
											else
											{
												$main_content .= '<b>You don\'t have any bans in your account!</b><br><a href="index.php?subtopic=shopsystem">GO BACK</a>';
											}
										}
										# itemlogout
										elseif($buy_offer['type'] == 'itemlogout')
										{
											$my_acc_id = $buy_player->getCustomField('id');
											$datadata = $SQL->query('SELECT * FROM '.$SQL->tableName('players').' WHERE id = '.$my_acc_id.';')->fetch();
											$datadata2 = $SQL->query('SELECT * FROM '.$SQL->tableName('player_items').' WHERE player_id = '.$my_acc_id.';')->fetch();
											if($datadata['online'] == '0') 
											{
												if ($datadata2['pid'] != '10') 
												{
													if ($datadata['cap'] >= $SQL->quote($buy_offer['free_cap'])) 
													{
														$SQL->query('INSERT INTO player_items (player_id, pid, itemtype, count) VALUES ('.$my_acc_id.', '.$SQL->quote($buy_offer['pid']).', '.$SQL->quote($buy_offer['item_id']).', '.$SQL->quote($buy_offer['count1']).');');
														$account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
														$user_premium_points = $user_premium_points - $buy_offer['points'];
														$main_content .= '<h2>Item received to player: '.$buy_player->getName().'!</h2><br>
															Now you have<b>'.$user_premium_points.' premium points</b>.<br>
															<a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>';
													} 
													else
													{
														$main_content .= '<b>You need '.$SQL->quote($buy_offer['free_cap']).' or more of cap!</b><br>
															<a href="index.php?subtopic=shopsystem">GO BACK</a>';
													}
												} 
												else
												{
													$main_content .= '<b>Please leave the arrow slot in blank to receive item!</b><br>
														<a href="index.php?subtopic=shopsystem">GO BACK</a>';
												}
											} 
											else
											{
												$main_content .= '<b>You need to be offline!</b><br>
													<a href="index.php?subtopic=shopsystem">GO BACK</a>';
											}
										}
										# changename
										elseif($buy_offer['type'] == 'changename')
										{
											$my_acc_id = $buy_player->getCustomField('id');
											$dataget = $SQL->query('SELECT * FROM '.$SQL->tableName('players').' WHERE '.$SQL->fieldName('id').' = '.$my_acc_id.';')->fetch();
											$checkname = $SQL->query('SELECT * FROM '.$SQL->tableName('players').' WHERE '.$SQL->fieldName('name').' = '. $SQL->quote($buy_from) .';')->fetch();
											if($dataget['online'] == '0') 
											{
												if($checkname == false) 
												{ 
													$buybuy = 'buy_from';
													$SQL->query('UPDATE `players` SET `name` = '. $SQL->quote($buy_from) .' WHERE `id` = '. $my_acc_id.' ;');
													$account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
													$user_premium_points = $user_premium_points - $buy_offer['points'];
													$suma_levels = $buy_offer['level'] + $dataget['level'];
													$main_content .= '<h2>Your name has changed to '.$buy_from.'</h2><b>You have</b><br>
														<b>'.$user_premium_points.' premium points left</b>.<br>
														<a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>';
												} 
												else
												{
													$main_content .= '<b>Sorry the name "<i>'.$buy_from.'</i>" does already exist.</b>';
												}
											} 
											else
											{
												$suma_levels = $buy_offer['level'] + $dataget['level'];
												$main_content .= '<b>'.$buy_name.' has to be offline to complete transaction.</b><br>
													<a href="index.php?subtopic=shopsystem">GO BACK</a>';
											}
										}
										# redskull
										elseif($buy_offer['type'] == 'redskull')
										{
											$my_acc_id = $buy_player->getCustomField('id');
											$dataget = $SQL->query('SELECT * FROM '.$SQL->tableName('players').' WHERE '.$SQL->fieldName('id').' = '.$my_acc_id.';')->fetch();
											if($dataget['skull'] >= '1' AND $dataget['online'] == '0' AND $dataget['skulltime'] > '0') 
											{
												$SQL->query('UPDATE players SET skull=0, skulltime=0 WHERE id='. $my_acc_id .';');
												$SQL->query('UPDATE `killers` SET `unjustified` = 0 WHERE `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = '. $my_acc_id .');');
												$account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
												$user_premium_points = $user_premium_points - $buy_offer['points'];
												$main_content .= '<h2>RedSkull Removed!</h2><b>Your redskull has been removed to the player '.$buy_player->getName().',<br>
													Now you have<b> '.$user_premium_points.' premium points</b>.<br>
													<a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>';
											} 
											else
											{
												$main_content .= '<b>'.$buy_player->getName().' has to be offline or have redskull to complete transaction!.</b><br>
													<a href="index.php?subtopic=shopsystem">GO BACK</a>';
											}
										}
										# item
										elseif($buy_offer['type'] == 'item')
										{
											$sql = 'INSERT INTO '.$SQL->tableName('z_ots_comunication').' (id, name, type, action, param1, param2, param3, param4, param5, param6, param7, delete_it) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', \'login\', \'give_item\', '.$SQL->quote($buy_offer['item_id']).', '.$SQL->quote($buy_offer['item_count']).', \'\', \'\', \'item\', '.$SQL->quote($buy_offer['name']).', \'\', \'1\');';
											$SQL->query($sql);
											$save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_item').' (id, to_name, to_account, from_nick, from_account, price, offer_id, trans_state, trans_start, trans_real) VALUES ('.$SQL->lastInsertId().', '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).',  '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['name']).', \'wait\', '.$SQL->quote(time()).', \'0\');';
											$SQL->query($save_transaction);
											$account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
											$user_premium_points = $user_premium_points - $buy_offer['points'];
											$main_content .= '<h2>Item added!</h2><b>'.$buy_offer['name'].'</b> added to player <b>'.$buy_player->getName().'</b> items (he will get this items after relog) for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>';
										}
										# container
										elseif($buy_offer['type'] == 'container')
										{
											$sql = 'INSERT INTO '.$SQL->tableName('z_ots_comunication').' (id, name, type, action, param1, param2, param3, param4, param5, param6, param7, delete_it) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', \'login\', \'give_item\', '.$SQL->quote($buy_offer['item_id']).', '.$SQL->quote($buy_offer['item_count']).', '.$SQL->quote($buy_offer['container_id']).', '.$SQL->quote($buy_offer['container_count']).', \'container\', '.$SQL->quote($buy_offer['name']).', \'\', \'1\');';
											$SQL->query($sql);
											$save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_item').' (id, to_name, to_account, from_nick, from_account, price, offer_id, trans_state, trans_start, trans_real) VALUES ('.$SQL->lastInsertId().', '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).',  '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['name']).', \'wait\', '.$SQL->quote(time()).', \'0\');';
											$SQL->query($save_transaction);
											$account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
											$user_premium_points = $user_premium_points - $buy_offer['points'];
											$main_content .= '<h2>Container of items added!</h2><b>'.$buy_offer['name'].'</b> added to player <b>'.$buy_player->getName().'</b> items (he will get this container with items after relog) for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>';
										}
									}
									else
									{
										if($buy_offer['type'] != 'changename') 
										{
											$set_session = TRUE;
											$_SESSION['viewed_confirmation_page'] = 'yes';
											$main_content .= '<h2>Confirm transaction</h2>
												<table border="0" cellpadding="1" cellspacing="1" width="650">
												<tr bgcolor="black"><td colspan="3"><font color="gold" size="4"><b>Confirm transaction</b></font></td></tr>
												<tr bgcolor="gold"><td width="100"><b>Name:</b></td><td width="550" colspan="2">'.$buy_offer['name'].'</td></tr>
												<tr bgcolor="gold"><td width="100"><b>Description:</b></td><td width="550" colspan="2">'.$buy_offer['description'].'</td></tr>
												<tr bgcolor="gold"><td width="100"><b>Cost:</b></td><td width="550" colspan="2"><b>'.$buy_offer['points'].' premium points</b> from your account</td></tr>
												<tr bgcolor="gold"><td width="100"><b>For Player:</b></td><td width="550" colspan="2"><font color="red">'.$buy_player->getName().'</font></td></tr>
												<tr bgcolor="gold"><td width="100"><b>From:</b></td><td width="550" colspan="2"><font color="red">'.$buy_from.'</font></td></tr>
												<tr bgcolor="red"><td width="100"><b>Transaction?</b></td><td width="275" align="left">
												<form action="index.php?subtopic=shopsystem&action=confirm_transaction" method="POST"><input type="hidden" name="buy_confirmed" value="yes"><input type="hidden" name="buy_id" value="'.$buy_id.'"><input type="hidden" name="buy_from" value="'.urlencode($new_name).'"><input type="hidden" name="buy_name" value="'.urlencode($buy_name).'"><input type="submit" value="Accept"></form></td>
												<td align="right"><form action="index.php?subtopic=shopsystem" method="POST"><input type="submit" value="Cancel"></form></td></tr>
												</table>';
										}
										else
										{
											$set_session = TRUE;
											$_SESSION['viewed_confirmation_page'] = 'yes';
											$main_content .= '<h2>Confirm change name</h2>
												<table border="0" cellpadding="1" cellspacing="1" width="650">
												<tr bgcolor="black"><td colspan="3"><font color="gold" size="4"><b>Confirm transaction</b></font></td></tr>
												<tr bgcolor="gold"><td width="100"><b>Name:</b></td><td width="550" colspan="2">'.$buy_offer['name'].'</td></tr>
												<tr bgcolor="gold"><td width="100"><b>Description:</b></td><td width="550" colspan="2">'.$buy_offer['description'].'</td></tr>
												<tr bgcolor="gold"><td width="100"><b>Cost:</b></td><td width="550" colspan="2"><b>'.$buy_offer['points'].' premium points</b> from your account</td></tr>
												<tr bgcolor="gold"><td width="100"><b>Current Name:</b></td><td width="550" colspan="2"><font color="red">'.$buy_player->getName().'</font></td></tr>
												<tr bgcolor="gold"><td width="100"><b>New Name:</b></td><td width="550" colspan="2"><font color="red">'.$buy_from.'</font></td></tr>
												<tr bgcolor="red"><td width="100"><b>Change Name?</b></td><td width="275" align="left">
												<form action="index.php?subtopic=shopsystem&action=confirm_transaction" method="POST"><input type="hidden" name="buy_confirmed" value="yes"><input type="hidden" name="buy_id" value="'.$buy_id.'"><input type="hidden" name="buy_from" value="'.urlencode($buy_from).'"><input type="hidden" name="buy_name" value="'.urlencode($buy_name).'"><input type="submit" value="Accept"></form></td>
												<td align="right"><form action="index.php?subtopic=shopsystem" method="POST"><input type="submit" value="Cancel"></form></td></tr>
												</table>';
										}
									}
								}
								else
								{
									$main_content .= 'Player with name <b>'.$buy_name.'</b> doesn\'t exist. Please <a href="index.php?subtopic=shopsystem&action=select_player&buy_id='.$buy_id.'">select other name</a>.';
								}
							}
							else
							{
								$main_content .= 'Invalid name format. Please <a href="index.php?subtopic=shopsystem&action=select_player&buy_id='.$buy_id.'">select other name</a> or contact with administrator.';
							}
						}
						else
						{
							$main_content .= 'For this item you need <b>'.$buy_offer['points'].'</b> points. You have only <b>'.$user_premium_points.'</b> premium points. Please <a href="index.php?subtopic=shopsystem">select other item</a> or buy premium points.';
						}
					}
					else
					{
						$main_content .= 'Offer with ID <b>'.$buy_id.'</b> doesn\'t exist. Please <a href="index.php?subtopic=shopsystem">select item</a> again.';
					}
				}
			}
		}
		if(!$set_session)
		{
			unset($_SESSION['viewed_confirmation_page']);
		}
	}
	elseif($action == 'show_history')
	{
		if(!$logged) 
		{
			$main_content .= 'Please login first.';
		}
		else
		{
			$items_history_received = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_history_item').' WHERE '.$SQL->fieldName('to_account').' = '.$SQL->quote($account_logged->getId()).' OR '.$SQL->fieldName('from_account').' = '.$SQL->quote($account_logged->getId()).';');
			if(is_object($items_history_received)) 
			{
				foreach($items_history_received as $item_received)
				{
					if($account_logged->getId() == $item_received['to_account'])
						$char_color = 'green';
					else
						$char_color = 'red';
					$items_received_text .= '<tr bgcolor="gold"><td><font color="'.$char_color.'">'.$item_received['to_name'].'</font></td><td>';
					if($account_logged->getId() == $item_received['from_account'])
						$items_received_text .= '<i>Your account</i>';
					else
						$items_received_text .= $item_received['from_nick'];
					$items_received_text .= '</td><td>'.$item_received['offer_id'].'</td><td>'.date("j F Y, H:i:s", $item_received['trans_start']).'</td>';
					if($item_received['trans_real'] > 0)
						$items_received_text .= '<td>'.date("j F Y, H:i:s", $item_received['trans_real']).'</td>';
					else
						$items_received_text .= '<td><b><font color="red">Not realized yet.</font></b></td>';
					$items_received_text .= '</tr>';
				}
			}
			$paccs_history_received = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_history_item').' WHERE '.$SQL->fieldName('to_account').' = '.$SQL->quote($account_logged->getId()).' OR '.$SQL->fieldName('from_account').' = '.$SQL->quote($account_logged->getId()).';');
			if(is_object($paccs_history_received)) 
			{
				foreach($paccs_history_received as $pacc_received)
				{
					if($account_logged->getId() == $pacc_received['to_account'])
						$char_color = 'green';
					else
						$char_color = 'red';
					$paccs_received_text .= '<tr bgcolor="gold"><td><font color="'.$char_color.'">'.$pacc_received['to_name'].'</font></td><td>';
					if($account_logged->getId() == $pacc_received['from_account'])
						$paccs_received_text .= '<i>Your account</i>';
					else
						$paccs_received_text .= $pacc_received['from_nick'];
					$paccs_received_text .= '</td><td>'.$pacc_received['pacc_days'].' days</td><td>'.$pacc_received['price'].' Points</td><td>'.date("j F Y, H:i:s", $pacc_received['trans_start']).'</td></tr>';
				}
			}
			$main_content .= '<center><h1>Transactions History</h1></center>';
			if(!empty($items_received_text))
			{
				$main_content .= '<h2>Item transactions</h2><table BORDER=0 CELLPADDING=1 CELLSPACING=1 WIDTH=100%><tr bgcolor="gold"><td><b>To:</b></td><td><b>From:</b></td><td><b>Offer name</b></td><td><b>Bought on page</b></td><td><b>Received on OTS</b></td></tr>'.$items_received_text.'</table><br />';
			}
			if(!empty($paccs_received_text))
			{
				$main_content .= '<h2>PACC transactions</h2><table BORDER=0 CELLPADDING=1 CELLSPACING=1 WIDTH=100%><tr bgcolor="gold"><td><b>To:</b></td><td><b>From:</b></td><td><b>Duration</b></td><td><b>Cost</b></td><td><b>Added:</b></td></tr>'.$paccs_received_text.'</table><br />';
			}
			if(empty($paccs_received_text) && empty($items_received_text))
				$main_content .= 'You did not buy/receive any item or PACC.';
		}
	}
	$main_content .= '<br><br><b><center>You have premium points: </font></b>'.$user_premium_points.'</center>';
}
else
	$main_content .= 'Shop system is blocked on this server. Admin must install this script (LUA and in database only, PHP is installed) on server and set <b>shop_system = "1"</b> in config.ini file';
?>

 

8 minutos atrás, victor4312 disse:

estranho, tenta trocar o shop.lua por esse

 


-- ### CONFIG ###
-- message send to player by script "type" (types you can check in "global.lua")
SHOP_MSG_TYPE = 19
-- time (in seconds) between connections to SQL database by shop script
SQL_interval = 30
-- ### END OF CONFIG ###
function onThink(interval, lastExecution)
    local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
    if(result_plr:getID() ~= -1) then
        while(true) do
            id = tonumber(result_plr:getDataInt("id"))
            action = tostring(result_plr:getDataString("action"))
            delete = tonumber(result_plr:getDataInt("delete_it"))
            cid = getCreatureByName(tostring(result_plr:getDataString("name")))
            if isPlayer(cid) == TRUE then
                local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
                local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
                local container_id = tonumber(result_plr:getDataInt("param3"))
                local container_count = tonumber(result_plr:getDataInt("param4"))
                local add_item_type = tostring(result_plr:getDataString("param5"))
                local add_item_name = tostring(result_plr:getDataString("param6"))
                local received_item = 0
                local full_weight = 0
                if add_item_type == 'container' then
                    container_weight = getItemWeightById(container_id, 1)
                    if isItemRune(itemtogive_id) == TRUE then
                        items_weight = container_count * getItemWeightById(itemtogive_id, 1)
                    else
                        items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count)
                    end
                    full_weight = items_weight + container_weight
                else
                    full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
                    if isItemRune(itemtogive_id) == TRUE then
                        full_weight = getItemWeightById(itemtogive_id, 1)
                    else
                        full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
                    end
                end
                local free_cap = getPlayerFreeCap(cid)
                if full_weight <= free_cap then
                    if add_item_type == 'container' then
                        local new_container = doCreateItemEx(container_id, 1)
						doItemSetAttribute(new_container, "description", 'Comprado por ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
                        local iter = 0
                        while iter ~= container_count do
							local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
							doItemSetAttribute(new_item, "description", 'Comprado por ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
							doAddContainerItemEx(new_container, new_item)
                            iter = iter + 1
                        end
                        received_item = doPlayerAddItemEx(cid, new_container)
                    else
                        local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
						doItemSetAttribute(new_item, "description", 'Comprado por ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
                        received_item = doPlayerAddItemEx(cid, new_item)
                    end
                    if received_item == RETURNVALUE_NOERROR then
                        doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
						doPlayerSave(cid)
                        db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                        db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
                    else
                        doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.')
                    end
                else
                    doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.')
                end
            end
            if not(result_plr:next()) then
                break
            end
        end
        result_plr:free()
    end
    return TRUE
end

 

 

Olhando o código agora percebi que tinha 2 comentários nas primeiras linhas do código, pedindo para trocar os nomes das tabelas do banco de dados, vou tentar fazer essas mudanças e vê se continua com o problema. 

Link para o post
Compartilhar em outros sites

@emersongo 

Você deve informar..

Está usando gesior ? 

 

Você deve está ciente em globalevents deverá ter o sistema da entrega.

Procure por shop.lua

 

e mande se tiver..

também informa versão do seu site !

Link para o post
Compartilhar em outros sites
3 minutos atrás, Celulose disse:

@emersongo 

Você deve informar..

Está usando gesior ? 

 

Você deve está ciente em globalevents deverá ter o sistema da entrega.

Procure por shop.lua

 

e mande se tiver..

também informa versão do seu site !

 

Olá, uso uma versão modificada do Gesior 0.3.6 r.70. Não sabia que precisava desse arquivo no globalevents, o meu não tem esse arquivo.

Link para o post
Compartilhar em outros sites
20 minutos atrás, Celulose disse:

@emersongo  shop.lua 5 kB · 0 downloads

 

    <globalevent name="Shop" interval="10000" event="script" value="shop.lua"/>

 

Fiz isso ai e continua não chegando o item.

Link para o post
Compartilhar em outros sites
7 minutos atrás, Celulose disse:

@emersongo 

Você reinicio o servidor ?

 

qual versão da sua tfs..

 

deu erro ?

 

Está ocorrendo esse erro:

 

 

erro.png

Link para o post
Compartilhar em outros sites
27 minutos atrás, Celulose disse:

Versão distro ?

 

 

1.0.0

Link para o post
Compartilhar em outros sites
1 hora atrás, Celulose disse:

@emersongo  shop.lua 5 kB · 1 download

 

    <globalevent name="Shop" interval="10000" event="script" value="shop.lua"/>

 

Fiz o mesmo, e continua não vindo ao personagem.

 

 

 

 

 

                                                                                                                                                     tumblr_nwmv2z4VEM1ujiquxo1_100.gif.2db64bb36f0f565e68ff2a90cb98f439.gif.59f4c4cf234d2f6906621cac0553a862.gif

https://github.com/italoxxx1

 

Link para o post
Compartilhar em outros sites
1 minuto atrás, ITALOx disse:

Fiz o mesmo, e continua não vindo ao personagem.



Italo, dei uma boa olhada no código e parece que o erro está no caminho, parece que não está recebendo o id do item, vou analisar todo o caminho e a database pra tentar achar o erro, qualquer mudança posto aqui.

Link para o post
Compartilhar em outros sites
1 minuto atrás, emersongo disse:

Italo, dei uma boa olhada no código e parece que o erro está no caminho, parece que não está recebendo o id do item, vou analisar todo o caminho e a database pra tentar achar o erro, qualquer mudança posto aqui.

 

image.thumb.png.29f87776dcbacb39d1946e0a11243dd4.png

Vai o "trocar" de nick que é do shop mesmo, mas, dos items que eu mesmo adicionei não vai, era pra ser 1, mas tá 0 ...

 

 

 

 

 

                                                                                                                                                     tumblr_nwmv2z4VEM1ujiquxo1_100.gif.2db64bb36f0f565e68ff2a90cb98f439.gif.59f4c4cf234d2f6906621cac0553a862.gif

https://github.com/italoxxx1

 

Link para o post
Compartilhar em outros sites
9 minutos atrás, ITALOx disse:

image.thumb.png.29f87776dcbacb39d1946e0a11243dd4.png

Vai o "trocar" de nick que é do shop mesmo, mas, dos items que eu mesmo adicionei não vai, era pra ser 1, mas tá 0 ...

 

Consegui resolver aqui, realmente o problema era no caminho, na tabela z_ots_communication deveria vir o id do item porém estava vindo um numero aleatório.

Link para o post
Compartilhar em outros sites
12 minutos atrás, emersongo disse:

Consegui resolver aqui, realmente o problema era no caminho, na tabela z_ots_communication deveria vir o id do item porém estava vindo um numero aleatório.

 

Tutorial?

 

 

 

 

 

                                                                                                                                                     tumblr_nwmv2z4VEM1ujiquxo1_100.gif.2db64bb36f0f565e68ff2a90cb98f439.gif.59f4c4cf234d2f6906621cac0553a862.gif

https://github.com/italoxxx1

 

Link para o post
Compartilhar em outros sites
4 minutos atrás, ITALOx disse:

Tutorial?

 

Não entendi...

 

Link para o post
Compartilhar em outros sites
22 minutos atrás, emersongo disse:

Não entendi...

 

 

Script, ou o que tu realmente colocou. mandasse print.

 

 

 

 

 

                                                                                                                                                     tumblr_nwmv2z4VEM1ujiquxo1_100.gif.2db64bb36f0f565e68ff2a90cb98f439.gif.59f4c4cf234d2f6906621cac0553a862.gif

https://github.com/italoxxx1

 

Link para o post
Compartilhar em outros sites
1 minuto atrás, ITALOx disse:

Script, ou o que tu realmente colocou. mandasse print.



Modifiquei a linha 28 do arquivo shopsystem.php, mudei data['id'] para data['itemid1'].

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Thiagodsw
      Olá galera do Tibia King !
      Venho por meio deste tópico, publicar a ultima versão do meu servidor derivado de Tibia NTO Battle.
       
      deixei para brincarem e verem sistemas, as sources não disponibilizarei nem o site. afinal é um projeto que fiz com carinho e está a venda as sources. Thogo#9713
       
      O que tem de diferente no NTO Battle ? 
       
      Aura System e Wings Healthbar Monster Bar Healthbar vocation Sistema Raridade Shaders Dungeons e Tasks Game Shop Entre outros Veja algumas Imagens !
       
       
      O que tem nesse Pacote de Arquivos NTO Battle? 
       
      Datapack mais recente e completa do servidor. ( compilada pra windows Client Compilado SQL
      ACC GOD - god/god


      QUALQUER MSG NO DISCORD Thogo#9713
      -source client e otserv e site.
       
      DOWNLOAD  &  SCAN


       
      Client:
      https://mega.nz/file/hbgnSDRJ#xQT-qQHWLUV2Dn8jalwMGblCWnmL0_s3rZfqbxO7znw
      Server:
      https://mega.nz/file/sSZXlZ6a#gow-Db6diNVrnnPIH7qyBqP8WmVLFxWy85-yub_f32Y


       
      Scan
      Client
      https://www.virustotal.com/gui/file/86da72135d75d826c2665bb572084c30288eea843c2cfe2f7a405cfe1ea2f59c/detection
      Servidor
      https://www.virustotal.com/gui/file/cfa4d83c8b6c12fa0daf28cefd6762a053aee7245e6be8f5c02594825a2e2c1e?nocache=1
    • Por luanluciano93
      Olá, esse tutorial é uma parte do tópico principal: "Tutorial completo de infraestrutura para montar um servidor TFS 1.x no Ubuntu 22.04" ... 

      Ele faz parte da 2º instalação da pilha LEMP no Ubuntu 22.04: a MariaDB.
       
      PASSO 1 - COMO INSTALAR O SERVIDOR DE BANCO DE DADOS MariaDB
       
      O MariaDB é um sistema de gerenciamento de banco de dados de código aberto, usado com frequência como uma alternativa ao MySQL. Ele é desenvolvido por ex-membros da equipe do MySQL que estão preocupados que o Oracle possa transformar o MySQL em um produto de código fechado.

      Digite o seguinte comando para instalar o MariaDB no Ubuntu 22.04, após iniciar, é necessário digitar Y para prosseguir ... 
      sudo apt install mariadb-server Depois de instalado, o servidor MariaDB deve ser automaticamente visualizado.
       
      Use o comando a seguir para verificar seu status: 
      sudo systemctl status mariadb Irá aparecer o seguinte resultado:

       
      Como vocês podem ver em verde: active (running), ou seja, está ativo e funcionando.
       
      Você pode também conferir a versão do MariaDB instalado com o comando: 
      mariadb --version Eu obtive como resposta em 05JUL22: mariadb Ver 15.1 Distrib 10.6.7-MariaDB
       
      PASSO 2 - CONFIGURANDO O MARIADB
       
      O próximo passo será executar o script de segurança incluído. Esse script modifica algumas das opções padrões menos seguras referentes, por exemplo, a logins root remotos e usuários de exemplo.
       
      Execute o script de segurança:
      sudo mysql_secure_installation Isso levará você a uma série de prompts onde é possível fazer algumas alterações nas opções de segurança de sua instalação do MariaDB.

      O primeiro prompt pedirá que digite a senha atual do root do banco de dados. Como ainda não configuramos uma senha, pressione ENTER para indicar “nenhuma”,

       
      Em seguida, o sistema irá perguntar se você quer usar o unix_socket, pois ele garante que ninguém possa fazer o login no usuário root do MARIADB sem a devida autorização. Digite que sim (Y)

      Ativar a autenticação unix_socket? [S/n]
       
      Em seguida, digite Y para definir a senha raiz do servidor MariaDB.


      ATENÇÃO: A SENHA QUE VOCÊ DEFINIR SERÁ A SENHA DO SERVIDOR SQL, ELA SERÁ USADA PARA CONEXÃO DO  SITE E DO SERVIDOR AO BANCO DE DADOS! GUARDE-A BEM!

      Em seguida, você pode pressionar ENTER (com ENTER é escolhido a resposta padrão, que sempre é mostrada em maiúsculo. Nesse caso será o Y) para responder a todas as perguntas restantes:


      - Remover usuários anônimos? [Sim/n]
      - Não permitir login root remotamente? [Sim/n]
      - Remover banco de dados de teste e acesso a ele? [Sim/n]
      - Recarregar as tabelas de privilégios garantirá que todas as alterações feitas até agora entrará em vigor imediatamente. Recarregar tabelas de privilégios agora?  [Sim/n]

      Esta etapa é um requisito básico para a segurança do banco de dados MariaDB.
       
      A princípio é isso!
       
      Siga as atualizações no tópico principal: "Tutorial completo de infraestrutura para montar um servidor TFS 1.x no Ubuntu 22.04" ... 
       
       
      Fontes:
      - https://conectandonet.com.br/blog/como-instalar-a-pilha-lemp-no-ubuntu-20-04-server-desktop/
      - https://www.digitalocean.com/community/tutorials/how-to-install-mariadb-on-ubuntu-20-04-pt
       
       
       
       
       
       
    • Por L3K0T
      Olá galera, hoje vim trazer para vocês alguns comandos uteis, pra serem executados no seu banco de dados "Mysql" lá aonde guarda todas as informações do jogo. *"execute o comando, mais antes faça o backup da sua Data Base e lembrando faça isso com o servidor desligado"
       
       
      1° UPDATE `accounts` SET premdays = 0, lastday = 0; - Remove todos os dias VIP ou P.A de todos os players. .
      UPDATE `accounts` SET premdays = 0, lastday = 0;  
      2° UPDATE `accounts` SET `premdays` = `premdays` + 7; - Adiciona +7 dias de VIP ou P.A para todos os players.
      UPDATE `accounts` SET `premdays` = `premdays` + 7;  
      3° UPDATE `players` SET `posx` = 111, `posy` = 222, `posz` = 7; - Manda todos mundo para certa posição do mapa.
      UPDATE `players` SET `posx` = 111, `posy` = 222, `posz` = 7;  
      4° UPDATE `players` SET `blessings` = 0; - Limpa todas as bless de todos os players e se no lugar do 0 você por 31 você adiciona todas as bless;
      UPDATE `players` SET `blessings` = 0;  
      5° DELETE FROM `player_deaths`, `killers`, `player_killers`, `environment_killers`; - Limpa todo o histórico de morte dos players.
      DELETE FROM `player_deaths`, `killers`, `player_killers`, `environment_killers`;  
      6° DELETE FROM `players` WHERE `level` < 50 AND `lastlogin` < UNIX_TIMESTAMP() - 20 * 24 * 60 * 60  - Deleta players que não loga em 20 dias e que são levels -50
      DELETE FROM `players` WHERE `level` < 50 AND `lastlogin` < UNIX_TIMESTAMP() - 20 * 24 * 60 * 60    
      7° UPDATE `players` SET `world_id` = 0; - altera o mundo de todos os players, que é configurado no config.lua do seu servidor, pode 1, 2, 3 etc..
      UPDATE `players` SET `world_id` = 0;  
      8° UPDATE `players` SET `promotion` = 1; - da promotion da vocação para todos os players quando VIP.
      UPDATE `players` SET `promotion` = 1;  
      9° UPDATE `accounts` SET `premiun_points` = `premium_points` +30; - adiciona 30 Premium Points para todos os players.
      UPDATE `accounts` SET `premiun_points` = `premium_points` +30;  
       
      é isso galera, durante os meses eu irei atualizar esse tópico, um multissímo obrigado.
       

    • Por Ocrux
      Procuro equipe pra abrir um OT Rookgaard. 
      To terminando o mapa, acho que ta bonito e pouco grandinho.
       
      RookSmart
      Continente único, na base de Rookgaard & com cidades de referencias as do Tibia.
      Por hora tem 4 cidades Prontas: Rookgaard, Carlore, Liadahar e Akuahmun.
      Estou terminando a 5ª cidade: Dahlia (de gelo) & já to achando uma boa ideia colocar Roshamuul (já providenciei).
      O servidor ta em TFS 0.4, com sources & na versão 8.6 (creio eu que parado no tempo).
       
      Quem quiser formar uma equipe pra botar on & terminar o que falta, whatsapp: 15 935001689

      Mapa Mundi
       
       
    • Por Maniaco
      Boa Noite TibiaKing!!!
       
      Bom estou procurando uma base de um WEBSITE DE !!DBO!!
      Quem poder DIPONIBILIZAR AGRADEÇO.


      A alguns dias ando procurando essa base mas sem sucesso algum, e gostaria de verificar com vocês se já foi dispobilizado ou até mesmo alguem possa fornecer esse WebSite. para o meu futuro projeto!

      Segue algumas img para facilizar a localização da base, lembrando que já achei varios sites usando a mesma base! então acredito que já está liberado em alguem site-forum-deepWeb! segue os links de outros servidores que utilizam a mesmo WEBSITE!.

      Link Encurtado: l1nq.com/895iG

      2 Link que usa mesma base de site: l1nq.com/NoC69

      3. Link que utiliza a mesma base. l1nq.com/nLuFZ



       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo