Ir para conteúdo

Featured Replies

  • Respostas 71
  • Visualizações 14k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @sirarcken fo feiz que tenha funcionado ^^.   Olha, estranho isso viu, tenta alterar a seguinte linha     player:setStorageValue(storage, 1)   Troque o número 1 por 0,

  • Ainda bem   Obs.: um problema desse shop de mount ou addon, é que se o player comprou 1 vez e comprar dnv o msm, não vai dar erro, vai retirar os pontos da account normalmente.. Vou procurar

  • Bro voce sabe como dou pontos de shop quando utilizadores criam account?   obrigado.

Posted Images

  • 3 weeks later...
Postado
Em 11/01/2016 at 00:41, Sekk disse:

Eae galera, esses dias eu tive vontade de começar um server de tibia 10.90, porém, comecei no site. Fui mexendo e tals, ai vi que não funcionava o shop, pra enviar mounts e addons para os players, ai fui atrás de correção.

 

Vi que aqui mesmo no TK, o membro Summ postou um script para tibia 10.53 desse shop, para TFS 1.x.

 

Como o script dele não era atualizado desde janeiro(quando ele criou), eu resolvi atualizar(por eu mesmo precisar), e agora venho trazer a "atualização" pra vocês UAHUEHEUAH

 

Bora la:

 

 

Primeiro, na pasta do seu server, em creaturescripts/scripts adicione um arquivo chamado addonmount.lua e adicione o seguinte dentro:

  Mostrar conteúdo oculto



function onLogin(cid)

								
local player = Player(cid)
local addons ={	
	  --[storage] = {outfit_male, outfit_female},
	[28416] = {128, 136}, -- Citizen
	[28417] = {129, 137}, -- Hunter
	[28418] = {130, 138}, -- Mage
	[28419] = {131, 139}, -- Knight
	[28420] = {132, 140}, -- Nobleman
	[28421] = {133, 141}, -- Summoner
	[28422] = {134, 142}, -- Warrior
	[28423] = {143, 147}, -- Barbarian
	[28424] = {144, 148}, -- Druid
	[28425] = {145, 149}, -- Wizard
	[28426] = {146, 150}, -- Oriental
	[28427] = {151, 155}, -- Pirate
	[28428] = {152, 156}, -- Assassin
	[28429] = {153, 157}, -- Beggar
	[28430] = {154, 158}, -- Shaman
	[28431] = {251, 252}, -- Norseman
	[28432] = {268, 269}, -- Nightmare
	[28433] = {273, 270}, -- Jester
	[28434] = {278, 279}, -- Brotherhood
	[28435] = {289, 288}, -- Demonhunter
	[28436] = {325, 324}, -- Yalaharian
	[28437] = {328, 329}, -- Husband
	[28438] = {335, 336}, -- Warmaster
	[28439] = {367, 366}, -- Wayfarer
	[28440] = {430, 431}, -- Afflicted
	[28441] = {432, 433}, -- Elementalist
	[28442] = {463, 464}, -- Deepling
	[28443] = {465, 466}, -- Insectoid
	[28444] = {472, 471}, -- Entrepreneur
	[28445] = {512, 513}, -- Crystal Warlord
	[28446] = {516, 514}, -- Soil Guardian
	[28447] = {541, 542}, -- Demon
	[28448] = {574, 575}, -- Cave Explorer
	[28449] = {577, 578}, -- Dream Warden
	[28450] = {610, 618}, -- Glooth Engineer
	[28451] = {619, 620}, -- Jersey
	[28452] = {633, 632}, -- Champion
	[28453] = {634, 635}, -- Conjurer
	[28454] = {637, 636}, -- Beastmaster
	[28455] = {665, 664}, -- Chaos Acolyte
	[28456] = {667, 666}, -- Death Herald
	[28457] = {684, 683}, -- Ranger
	[28458] = {695, 694}, -- Ceremonial Garb
	[28459] = {697, 696}, -- Puppeteer
	[28460] = {699, 698}, -- Spirit Caller
	[28461] = {725, 724}, -- Evoker
	[28462] = {733, 732}, -- Seaweaver
	[28463] = {746, 725}, -- Recruiter
	[28464] = {750, 749}, -- Sea Dog
	[28465] = {760, 759}, -- Royal Pumpkin
	[28466] = {846, 845}, -- Rift Warrior
	[28467] = {853, 852}  -- Winter Warden
	
	}
	
		for storage, addon in pairs(addons) do
			if player:getStorageValue(storage) > 0 then
				player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS)
				player:addOutfitAddon(addon[1], 3)
				player:addOutfitAddon(addon[2], 3)
				player:sendTextMessage(MESSAGE_INFO_DESCR, "Seu Addon full foi adicionado!")
				player:setStorageValue(storage, 0)
			end
		end
		
												
local mounts ={	
		--[storage] = mounts,
	[80000] = 1, -- Widow Queen
	[80001] = 2, -- Racing Bird
	[80002] = 3, -- War Bear
	[80003] = 4, -- Black Sheep
	[80004] = 5, -- Midnight Panther
	[80005] = 6, -- Draptor
	[80006] = 7, -- Titanica
	[80007] = 8, -- Tin Lizzard
	[80008] = 9, -- Blazebringer
	[80009] = 10, -- Rapid Boar
	[80010] = 11, -- Stampor
	[80011] = 12, -- Undead Cavebear
	[80012] = 13, -- Donkey
	[80013] = 14, -- Tiger Slug
	[80014] = 15, -- Uniwheel
	[80015] = 16, -- Crystal Wolf
	[80016] = 17, -- War Horse
	[80017] = 18, -- Kingly Deer
	[80018] = 19, -- Tamed Panda
	[80019] = 20, -- Dromedary
	[80020] = 21, -- King Scorpion
	[80021] = 22, -- Rented Horse
	[80022] = 23, -- Armoured War Horse
	[80023] = 24, -- Shadow Draptor"
	[80024] = 25, -- Rented Horse Grey
	[80025] = 26, -- Rented Horse Thais
	[80026] = 27, -- Ladybug
	[80027] = 28, -- Manta Ray
	[80028] = 29, -- Ironblight
	[80029] = 30, -- Magma Crawler
	[80030] = 31, -- Dragonling
	[80031] = 32, -- Gnarlhound
	[80032] = 33, -- Crimson Ray
	[80033] = 34, -- Steelbeak
	[80034] = 35, -- Water Buffalo
	[80035] = 36, -- Armoured Scorpion
	[80036] = 37, -- Armoured Dragonling
	[80037] = 38, -- Ursagrodon
	[80038] = 39, -- Hellgrip
	[80039] = 40, -- Noble Lion
	[80040] = 41, -- Desert King
	[80041] = 42, -- Shock Head
	[80042] = 43, -- Walker
	[80043] = 44, -- Azudocus
	[80044] = 45, -- Carpacosaurus
	[80045] = 46, -- Death Crawler
	[80046] = 47, -- Flamesteed
	[80047] = 48, -- Jade Lion
	[80048] = 49, -- Jade Pincer 
	[80049] = 50, -- Nethersteed
	[80050] = 51, -- Tempest
	[80051] = 52, -- Winter King
	[80052] = 53, -- Doombringer
	[80053] = 54, -- Woodland Prince
	[80054] = 55, -- Hailtorm Fury
	[80055] = 56, -- Siegebreaker
	[80056] = 57, -- Poisonbane
	[80057] = 58, -- Blackpelt
	[80058] = 59, -- Golden Dragonfly
	[80059] = 60, -- Steel Bee
	[80060] = 61, -- Copper Fly
	[80061] = 62, -- Tundra Rambler
	[80062] = 63, -- Highland Yak
	[80063] = 64, -- Glacier Vagabond
	[80064] = 65, -- Flying Divan
	[80065] = 66, -- Magic Carpet
	[80066] = 67, -- Floating Kashmir
	[80067] = 68, -- Ringnail Waccoon
	[80068] = 69, -- Night Waccoon
	[80069] = 70, -- Emerald Waccoon
	[80070] = 71, -- Glooth Glider
	[80071] = 72, -- Shadow Hart
	[80072] = 73, -- Black Stag
	[80073] = 74, -- Emperor Deer
	[80074] = 75, -- Flitterkatzen
	[80075] = 76, -- Venompaw
	[80076] = 77, -- Batcat
	[80077] = 78, -- Sea Devil
	[80078] = 79, -- Coralripper
	[80079] = 80, -- Plumfish
	[80080] = 81, -- Gorongra
	[80081] = 82, -- Noctungra
	[80082] = 83, -- Silverneck
	[80083] = 84, -- Slagnare
	[80084] = 85, -- Nightstinger
	[80085] = 86, -- Razorcreep
	[80086] = 87, -- Rift Runner
	[80087] = 88, -- Nightdweller
	[80088] = 89, -- Frostflare
	[80089] = 90 -- Cinderhoof
	
	}
		
		for storage, mount in pairs(mounts) do
			if player:getStorageValue(storage) > 0 then
				player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS)
				player:addMount(mount)
				player:sendTextMessage(MESSAGE_INFO_DESCR, "Sua Mount foi adicionado!")
				player:setStorageValue(storage, 0)
			end
		end	
	return true
end

 

 

Ai está com a atualização 10.90 do tibia.

 

Em creaturescripts.xml adicione a tag:

  Mostrar conteúdo oculto


<event type="login" name="ShopMountAddon" script="addonmount.lua"/>

 

 

Agora em Globalevents/scripts, substitua seu shop.lua por esse:

  Mostrar conteúdo oculto


-- ### CONFIG ###
-- message send to player by script "type" (types you can check in "global.lua")
SHOP_MSG_TYPE = 18
-- 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.storeQuery("SELECT * FROM z_ots_comunication")
    if(result_plr ~= false) then
        repeat
            local id = tonumber(result.getDataInt(result_plr, "id"))
            local action = tostring(result.getDataString(result_plr, "action"))
            local delete = tonumber(result.getDataInt(result_plr, "delete_it"))
            local cid = getPlayerByName(tostring(result.getDataString(result_plr, "name")))
            if(cid) then
                local itemtogive_id = tonumber(result.getDataInt(result_plr, "param1"))
                local itemtogive_count = tonumber(result.getDataInt(result_plr, "param2"))
                local container_id = tonumber(result.getDataInt(result_plr, "param3"))
                local container_count = tonumber(result.getDataInt(result_plr, "param4"))
                local add_item_type = tostring(result.getDataString(result_plr, "param5"))
                local add_item_name = tostring(result.getDataString(result_plr, "param6"))
                local received_item = 0
                local full_weight = 0
				
				-- Script para addons e montaria full pelo Gesior -- 
				if(add_item_type == 'mounts') then
				local player = Player(cid)
				if (getPlayerStorageValue(cid,itemtogive_id) == -1) then
				doPlayerAddMount(cid, itemtogive_id)
				setPlayerStorageValue(cid,itemtogive_id,1)
				doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HOLYDAMAGE)
				doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received '.. add_item_name ..' from Th3 Insanity Shop.')
				db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                db.query("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
				else
				doPlayerSendTextMessage(cid,25,"You Already have this Mount.")
				end
				return TRUE
				
				end				
				-- fim do script --
				-- Script para addons e montaria full pelo Gesior -- 
				if(add_item_type == 'addons') then
				local player = Player(cid)
				if (getPlayerStorageValue(cid,itemtogive_id) == -1) then
				doPlayerAddOutfit(cid, itemtogive_id, 3) 
				doPlayerAddOutfit(cid, container_id, 3)
				setPlayerStorageValue(cid,itemtogive_id,1)
				doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HOLYDAMAGE)
				doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received '.. add_item_name ..' from Th3 Insanity Shop.')
				db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                db.query("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
				else
				doPlayerSendTextMessage(cid,25,"You Already have this Outfit.")
				end
				return TRUE
				end				
				-- fim do script --
				
				
				
                if(add_item_type == 'container') then
                    container_weight = getItemWeight(container_id, 1)
                    if(isItemRune(itemtogive_id)) then
                        items_weight = container_count * getItemWeight(itemtogive_id, 1)
                    else
                        items_weight = container_count * getItemWeight(itemtogive_id, itemtogive_count)
                    end
                    full_weight = items_weight + container_weight
                else
                    full_weight = getItemWeight(itemtogive_id, itemtogive_count)
                    if(isItemRune(itemtogive_id)) then
                        full_weight = getItemWeight(itemtogive_id, 1)
                    else
                        full_weight = getItemWeight(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)
                        local iter = 0
                        while(iter ~= container_count) do
                            doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                            iter = iter + 1
                        end
                        received_item = doPlayerAddItemEx(cid, new_container)
                    else
                        local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
                        received_item = doPlayerAddItemEx(cid, new_item)
		
                    end
                    if(type(received_item) == "number" and received_item == RETURNVALUE_NOERROR) then
                        doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received '.. add_item_name ..' from Th3 Insanity Shop.')
                        db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                        db.query("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 Th3 Insanity 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 ..' Th3 Insanity 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
        until not result.next(result_plr)
        result.free(result_plr)
    end
    return true
end

 

 

E em globalevents.xml adicione a tag:

  Ocultar conteúdo


<globalevent name="shop" interval="5" script="shop.lua"/>

 

 

 

Agora vamos para a pasta do site.

Em config/config.php localize a linha

  Ocultar conteúdo


$config['site']['item_images_url'] = 'images/items/';

 

Em cima dessa linha, adicione o seguinte:

  Ocultar conteúdo


$config['site']['addons_images_url'] = 'images/addons/';
$config['site']['addons_images_extension'] = '.gif';
$config['site']['mounts_images_url'] = 'images/mounts/';
$config['site']['mounts_images_extension'] = '.gif';

 

 

Agora na pasta pages, substitua seus arquivos shopadmin.php e shopsystem.php por esses:

 

shopadmin.php

  Mostrar conteúdo oculto


<style type="text/css">
hr{border:0;border-bottom:1px solid #D4C0A1;padding:3px;}
h1.admshop{margin:0;padding:0;}
label.admshop{float:left;width:100px;}
div.clear{clear:both;}
p.border{border-bottom:1px solid #D4C0A1;padding:3px;}
form input, form select, form button, form reset{padding:3px;}
input.bt{padding:3px 20px;cursor:pointer;}
.success{color:green;}
.error{color:red;}
.bt2{padding:5px 30px;cursor:pointer;}
</style>
<script type="text/javascript">
function _delete(id)
{
	if( confirm('Confirma a exclusão do item selecionado?') )
	{
		location.href='?subtopic=shopadmin&action=delete&id=' + id + '';
	}
	
	return false;
}
</script>
<?php
if(!defined('INITIALIZED'))
	exit;

/*
 * Variável SQL
 */
$SQL = $GLOBALS['SQL'];

if($group_id_of_acc_logged >= $config['site']['access_admin_panel'])
{
	
	/**
	 * Systema By Dezon
	 */
	switch($action)
	{
		case 'list':
			$ofertas = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_offer').';');
			
			$result .= '<p><a href="?subtopic=shopadmin">Shop admin</a> | <a href="?subtopic=shopadmin&action=new">Novo</a> | <a href="?subtopic=shopadmin&action=list">Listar</a> | <a href="?subtopic=shopadmin&action=points">Adicionar pontos</a></p>';
			
			$result .= '<TABLE BGCOLOR="#D4C0A1" BORDER="0" CELLPADDING="4" CELLSPACING="1" WIDTH="100%">';
			$result .= '<tr bgcolor="#505050"><td class="white"><strong>Items cadastrados no \'Shop Offer\'</strong></td><tr>';
			
				$result .= '<TABLE BORDER="0" CELLPADDING="2" CELLSPACING="1" WIDTH="100%">';
				$result .= '<TR BGCOLOR="#F1E0C6"><td><strong>ID</strong></td><td><strong>Nome da oferta</strong></td><td><strong>Imagem</strong></td><td><strong>Ações</strong></td></TR>';
				while($data = $ofertas->fetch())
				{
					$result .= '<tr BGCOLOR="#F1E0C6">';
					$result .= '<td>'.$data['id'].'</td>';
					$result .= '<td>'.$data['offer_name'].'</td>';
                                        $result .= '<td align="center"><img src="./images/items/'.$data['itemid1'].$config['site']['item_images_extension'].'" /></td>';
                                        $result .= '<td><a href="?subtopic=shopadmin&action=edit&id='.$data['id'].'">[editar]</a>&nbsp;<a href="javascript:void( _delete('.$data['id'].') );">[excluir]</a></td>';
					$result .= '</tr>';
				}
				$result .= '</table>';
			
			$result .= '</table>';
			
			$main_content .= $result;
			break; //lista as ofertas
		
		case 'edit':
			$main_content .= '<p><a href="?subtopic=shopadmin">Shop admin</a> | <a href="?subtopic=shopadmin&action=new">Novo</a> | <a href="?subtopic=shopadmin&action=list">Listar</a> | <a href="?subtopic=shopadmin&action=points">Adicionar pontos</a></p>';
			$id = is_numeric($_GET['id']) ? $_GET['id'] : header('Location: ?subtopic=shopadmin');
			$dados = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_offer').' WHERE id='.$id)->fetch();
			
			if($dados['offer_type'] == 'item')
			{
				$dropdown = '<select name="offer_type"><option value="item" selected="selected">Item</option><option value="item">item</option></select>';
			}
			else if($dados['offer_type'] == 'mounts')
			{
				$dropdown = '<select name="offer_type"><option value="mount" selected="selected">mount</option><option value="mount">mount</option></select>';
			}
                        else if($dados['offer_type'] == 'addons')
			{
				$dropdown = '<select name="offer_type"><option value="addon" selected="selected">addon</option></select>';
			}
			
			$main_content .= <<<EOD
				<h1 class="admshop"><strong>Editar/Atualizar oferta</strong></h1>
				<form method="post" action="?subtopic=shopadmin&action=shop_edit">
					<input type="hidden" name="id_offer" value="{$dados['id']}" />
					<p class="border"><strong>Nome / Descrição da oferta</strong></p>
					<p><label class="admshop">Oferta: </label><input type="text" name="offer_name" size="50" maxlength="100" value="{$dados['offer_name']}" /></p>
					<p><label class="admshop">Descrição: </label><input type="text" name="offer_description" size="50" maxlength="1000" value="{$dados['offer_description']}" /></p>
					<p><label class="admshop">Qtde. pontos: </label><input type="text" name="points" size="5" maxlength="9" value="{$dados['points']}" /></p>
					
					<p class="border"><strong>Tipo da oferta</strong></p>
					<p><label class="admshop">Tipo: </label>{$dropdown}</p>
					
					<p class="border"><strong>Configuração de item normal, armor, shield, legs, etc</strong></p>
					<p><label class="admshop">ID Item 1: </label><input type="text" name="itemid1" size="10" value="{$dados['itemid1']}" /></p>
					<p><label class="admshop">Qtde. Item 1: </label><input type="text" name="count1" size="10" value="{$dados['count1']}" /></p>
					
					<p class="border"><strong>Configuração de item mounts, BP com Runas, BP com Small Stones, etc</strong></p>
					<p><label class="admshop">ID Item 2: </label><input type="text" name="itemid2" size="10" value="{$dados['itemid2']}" /></p>
					<p><label class="admshop">Qtde. Item 2: </label><input type="text" name="count2" size="10" value="{$dados['count2']}" /></p>
					
					<p class="border"><br /></p>
					<input type="submit" value="Salvar edição" class="bt" />
				</form>
				<div class="clear"></div>
EOD;
			break; //edita a oferta selecionada
			
			/******************************************************************************************/
		// Ação responsável por abrir a tela de pontos
		/******************************************************************************************/
		case 'points':
			$main_content .= $items_menu;
			$main_content .= <<<EOD
				<h1 class="admshop"><strong>Adicionar pontos à um Character <small><i>(Char)</i></small></strong></h1>
				<form method="post" action="?subtopic=shopadmin&action=points_add">
					<p class="border"><strong>Entre com o nome do Char</strong></p>
					<p><label class="admshop">Character <small><i>(Char)</i></small>: </label><input type="text" name="char_name" size="30" maxlength="50" /></p>

					<p class="border"><strong>Entre a quantidade de pontos</strong></p>
					<p><label class="admshop">Qtde. pontos: </label><input type="text" name="char_points" size="5" maxlength="9" /></p>

					<p class="border"><br /></p>
					<input type="submit" value="Salvar" class="bt" />
				</form>
				<div class="clear"></div>
EOD;
#/\ Deixe assim !!!
break;
case 'points_add':
			$player = stripslashes(ucwords(strtolower(trim($_POST['char_name']))));
			$points = is_numeric($_POST['char_points']) ? $_POST['char_points'] : 0;

			if(strlen($player) > 0){
				$data   = $SQL->query("SELECT * FROM `players` WHERE `name` = '".$player."';")->fetch();

				if($data['account_id']){
					$SQL->query("UPDATE `accounts` SET `premium_points` = `premium_points` + '".$points."' WHERE `id` = '".$data['account_id']."'");
					$main_content .= '<strong class="success">Pontos adicionados com sucesso à: <i>'.$player.'</i></strong><br /><br /><a href="?subtopic=shopadmin">Voltar</a>';
				}else{
					$main_content .= '<strong class="error">O character indicado não existe.</strong><br /><br /><a href="?subtopic=shopadmin&action=points">Voltar</a>';
				}

				
			}else{
				$main_content .= '<strong class="error">Preencha o nome do Character.</strong><br /><br /><a href="?subtopic=shopadmin&action=points">Voltar</a>';
			}			
			break;
			
		case 'shop_edit':
			$id 				= $_POST['id_offer'];
			$points				= trim($_POST['points']);
			$itemid1			= trim($_POST['itemid1']);
			$count1				= trim($_POST['count1']);
			$itemid2			= trim($_POST['itemid2']);
			$count2				= trim($_POST['count2']);
			$offer_type			= trim($_POST['offer_type']);
			$offer_description	= trim($_POST['offer_description']);
			$offer_name			= trim($_POST['offer_name']);
			
			if(empty($points) && empty($itemid1) && empty($offer_name)) {
				$main_content .= '<strong class="error">Você deve preencher pelo menos os pontos, id item 1 e o nome da oferta!</strong><p><hr /></p><a href="javascript:void(history.go(-1));">Voltar</a>';
			} else {
				$sql_edit = sprintf(
					"UPDATE {$SQL->tableName('z_shop_offer')} SET points=%s, itemid1=%s, count1=%s, itemid2=%s, count2=%s, offer_type='%s', offer_description='%s', offer_name='%s' WHERE id=%s",
					$points,
					$itemid1,
					$count1,
					$itemid2,
					$count2,
					$offer_type,
					$offer_description,
					$offer_name,
					$id
				);
				$SQL->query($sql_edit);
				$main_content .= '<strong class="success">Oferta editada com sucesso!</strong><br /><br /><a href="?subtopic=shopadmin&action=list">Voltar</a>';
			}
			break;
		
		case 'delete':
			$id = is_numeric($_GET['id']) ? $_GET['id'] : header('Location: ?subtopic=shopadmin');
			$SQL->query('DELETE FROM '.$SQL->tableName('z_shop_offer').' WHERE id='.$id);
			header('Location: ?subtopic=shopadmin&action=list');
			break; //exclui items
		
		case 'shop_save':
			$points				= trim($_POST['points']);
			$itemid1			= trim($_POST['itemid1']);
			$count1				= trim($_POST['count1']);
			$itemid2			= trim($_POST['itemid2']);
			$count2				= trim($_POST['count2']);
			$offer_type			= trim($_POST['offer_type']);
			$offer_description	= trim($_POST['offer_description']);
			$offer_name			= trim($_POST['offer_name']);
			
			if(empty($points) && empty($itemid1) && empty($offer_name)) {
				$main_content .= '<strong class="error">Você deve preencher pelo menos os pontos, id item 1 e o nome da oferta!</strong><p><hr /></p><a href="javascript:void(history.go(-1))">Voltar</a>';
			} else {
				$sql_save = sprintf(
					"INSERT INTO `z_shop_offer` (points,itemid1,count1,itemid2,count2,offer_type,offer_description,offer_name)VALUES('%s','%s','%s','%s','%s','%s','%s','%s')",
					(empty($points)  ? 0 : $points),
					(empty($itemid1) ? 0 : $itemid1),
					(empty($count1)  ? 0 : $count1),
					(empty($itemid2) ? 0 : $itemid2),
					(empty($count2)  ? 0 : $count2),
					$offer_type,
					$offer_description,
					$offer_name
				);
				$SQL->query($sql_save);
				$main_content .= '<strong class="success">Oferta salva com sucesso!</strong><br /><br /><a href="?subtopic=shopadmin">Voltar</a>';
			}
			break; //salva a oferta no banco de dados
			
		case 'new':
			$main_content .= '<p><a href="?subtopic=shopadmin">Shop admin</a> | <a href="?subtopic=shopadmin&action=new">Novo</a> | <a href="?subtopic=shopadmin&action=list">Listar</a> | <a href="?subtopic=shopadmin&action=points">Adicionar pontos</a></p>';
			$main_content .= <<<EOD
				<h1 class="admshop"><strong>Cadastrar nova oferta</strong></h1>
				<form method="post" action="?subtopic=shopadmin&action=shop_save">
					<p class="border"><strong>Nome / Descrição da oferta</strong></p>
					<p><label class="admshop">Oferta: </label><input type="text" name="offer_name" size="50" maxlength="100" /></p>
					<p><label class="admshop">Descrição: </label><input type="text" name="offer_description" size="50" maxlength="1000" /></p>
					<p><label class="admshop">Qtde. pontos: </label><input type="text" name="points" size="5" maxlength="9" /></p>
					
					<p class="border"><strong>Tipo da oferta</strong></p>
					<p><label class="admshop">Tipo: </label><select name="offer_type"><option value="item" selected="selected">Item</option><option value="mount">Mounts</option><option value="addon">Addons</option></select></p>
					
					<p class="border"><strong>Configuração de item normal, armor, shield, legs, etc</strong></p>
					<p><label class="admshop">ID Item 1: </label><input type="text" name="itemid1" size="10" /></p>
					<p><label class="admshop">Qtde. Item 1: </label><input type="text" name="count1" size="10" /></p>
					
					<p class="border"><strong>Configuração de item mounts, BP com Runas, BP com Small Stones, etc</strong></p>
					<p><label class="admshop">ID Item 2: </label><input type="text" name="itemid2" size="10" /></p>
					<p><label class="admshop">Qtde. Item 2: </label><input type="text" name="count2" size="10" /></p>
					
					<p class="border"><br /></p>
					<input type="submit" value="Salvar" class="bt" />
				</form>
				<div class="clear"></div>
EOD;
			break; //form de cadastro para nova oferta
		
		default: //Default pois, será por padrão!
			$main_content .= <<<EOD
				<h1 class="admshop"><strong>Bem vindo ao Administrador do Shop!</strong></h1>
				<hr />
				<center>
					<button type="button" class="bt2" onclick="location.href='?subtopic=shopadmin&action=new'">Novo</button>
					<button type="button" class="bt2" onclick="location.href='?subtopic=shopadmin&action=list'">Listar</button>
					<button type="button" class="bt2" onclick="location.href='?subtopic=shopadmin&action=points'">Adicionar Points</button>
				</center>
EOD;
#/\ Deixe assim !!!
			break;
	} 
	//Fim do sistema
	
}
else
{
	$main_content .= 'Sorry, you have not the rights to access this page.';
}

/******************************************************************
* SYSTEMA DE ADMINISTRAÇÃO ONLINE DO WEBSHOP GESIOR 2012 BY DEZON *
*    TODOS OS DIREITOS, POR FAVOR, NÃO REMOVER ESSES CRÉDITOS     *
*       FEITO EXCLUSIVAMENTE PARA O SITE WWW.TIBIAKING.COM        *
******************************************************************/

 

 

 

shopsystem.php

  Mostrar conteúdo oculto


<?php
if(!defined('INITIALIZED'))
exit;


if($config['site']['shop_system'])
{
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'] == 'item')
{
$offer['id'] = $data['id'];
$offer['type'] = $data['offer_type'];
$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'] == 'mount')
{
$offer['id'] = $data['id'];
$offer['type'] = $data['offer_type'];
$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'] == 'addon')
{
$offer['id'] = $data['id'];
$offer['type'] = $data['offer_type'];
$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'] == 'premmium')
{
$offer['id'] = $data['id'];
$offer['type'] = $data['offer_type'];
$offer['item_id'] = $data['itemid1'];
$offer['item_count'] = $data['count1'];
$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_item = 0;
$i_mount = 0;
$i_addon = 0;
$i_container = 0;
while($data = $offer_list->fetch())
{
if($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'] == 'mount')
{
$offer_array['mount'][$i_mount]['id'] = $data['id'];
$offer_array['mount'][$i_mount]['container_id'] = $data['itemid1'];
$offer_array['mount'][$i_mount]['container_count'] = $data['count1'];
$offer_array['mount'][$i_mount]['item_id'] = $data['itemid1'];
$offer_array['mount'][$i_mount]['item_count'] = $data['count2'];
$offer_array['mount'][$i_mount]['points'] = $data['points'];
$offer_array['mount'][$i_mount]['description'] = $data['offer_description'];
$offer_array['mount'][$i_mount]['name'] = $data['offer_name'];
$i_mount++;
}
elseif($data['offer_type'] == 'addon')
{
$offer_array['addon'][$i_addon]['id'] = $data['id'];
$offer_array['addon'][$i_addon]['container_id'] = $data['itemid1'];
$offer_array['addon'][$i_addon]['container_count'] = $data['count1'];
$offer_array['addon'][$i_addon]['item_id'] = $data['itemid1'];
$offer_array['addon'][$i_addon]['item_count'] = $data['count2'];
$offer_array['addon'][$i_addon]['points'] = $data['points'];
$offer_array['addon'][$i_addon]['description'] = $data['offer_description'];
$offer_array['addon'][$i_addon]['name'] = $data['offer_name'];
$i_addon++;
}
elseif($data['offer_type'] == 'container')
{
$offer_array['container'][$i_container]['id'] = $data['id'];
$offer_array['container'][$i_container]['container_id'] = $data['itemid1'];
$offer_array['container'][$i_container]['container_count'] = $data['count1'];
$offer_array['container'][$i_container]['item_id'] = $data['itemid2'];
$offer_array['container'][$i_container]['item_count'] = $data['count2'];
$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++;
}
}
return $offer_array;
}
if(($action == '') or ($action == 'item') or ($action == 'mount') or ($action == 'addon') or ($action == 'container'))
{
unset($_SESSION['viewed_confirmation_page']);
$offer_list = getOfferArray();


if(empty($action))
{
if(count($offer_list['item']) > 0)
$action = 'item';
elseif(count($offer_list['mount']) > 0)
$action = 'mount';
elseif(count($offer_list['addon']) > 0)
$action = 'addon';
elseif(count($offer_list['container']) > 0)
$action = 'container';
}


function selectcolor($value)
{
if($GLOBALS['action'] == $value)
return '#505050; color: #FFFFFF';
else
return '#303030; color: #aaaaaa';
}


if((count($offer_list['item']) > 0) or (count($offer_list['mount']) > 0) or (count($offer_list['addon']) > 0) or (count($offer_list['container']) > 0))
{
$main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=4><TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white colspan="2"><B>Choose a categorie: </B>';
if(count($offer_list['container']) > 0) $main_content .= '<a href="?subtopic=shopsystem&action=container" style="padding: 5px 5px 7px 5px; margin: 5px 1px 0px 1px; background-color: '.selectcolor('container').';">Premium Account<img src="images/items/7.gif"/></a>';
if(count($offer_list['item']) > 0) $main_content .= '<a href="?subtopic=shopsystem&action=item" style="padding: 5px 5px 7px 5px; margin: 5px 1px 0px 1px; background-color: '.selectcolor('item').';">Items<img src="images/items/2160.gif"/></a>';
if(count($offer_list['mount']) > 0) $main_content .= '<a href="?subtopic=shopsystem&action=mount" style="padding: 5px 5px 7px 5px; margin: 5px 1px 0px 1px; background-color: '.selectcolor('mount').';">Mounts<img src="images/mount.gif"/></a>';
if(count($offer_list['addon']) > 0) $main_content .= '<a href="?subtopic=shopsystem&action=addon" style="padding: 5px 5px 7px 5px; margin: 5px 1px 0px 1px; background-color: '.selectcolor('addon').';">Addons<img src="images/addon.gif"/></a>';
$main_content .= '</TD></TR></TD></TR></table><table BORDER=0 CELLPaDDING="4" CELLSPaCING="1" style="width:100%;font-weight:bold;text-align:center;"><tr style="background:#505050;"><td colspan="3" style="height:px;"></td></tr></table>';
}


//show list of items offers
if((count($offer_list['item']) > 0) and ($action == 'item'))
{
$main_content .= '<table border="0" cellpadding="4" cellspacing="1" width="100%"><tr bgcolor="'.$config['site']['vdarkborder'].'"><td width="8%" align="center" class="white"><b>Points</b></td><td width="9%" align="center" class="white"><b>Picture</b></td><td width="350" align="left" class="white"><b>Description</b></td><td width="250" align="center" class="white"><b>Select product</b></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="'.$bgcolor.'"><td align="center"><b>'.$item['points'].'</b></td><td align="center"><img src="' . $config['site']['item_images_url'] . $item['item_id'] . $config['site']['item_images_extension'] . '"></td><td><b>'.htmlspecialchars($item['name']).'</b> ('.$item['points'].' points)<br />'.htmlspecialchars($item['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" name="itemform_'.$item['id'].'"><input type="hidden" name="buy_id" value="'.$item['id'].'"><div class="navibutton"><a href="" onClick="itemform_'.$item['id'].'.submit();return false;">BUY</a></div></form>';
}
$main_content .= '</td></tr>';
}
$main_content .= '</table>';
}
//show list of mount offers
if((count($offer_list['mount']) > 0) and ($action == 'mount'))
{
$main_content .= '<table border="0" cellpadding="4" cellspacing="1" width="100%"><tr bgcolor="'.$config['site']['vdarkborder'].'"><td width="8%" align="center" class="white"><b>Points</b></td><td width="9%" align="center" class="white"><b>Picture</b></td><td width="350" align="left" class="white"><b>Description</b></td><td width="250" align="center" class="white"><b>Select product</b></td></tr>';
foreach($offer_list['mount'] as $mount)
{
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"><b>'.$mount['points'].'</b></td><td align="center"><img src="' . $config['site']['mounts_images_url'] . $mount['item_id'] . $config['site']['item_images_extension'] . '"></td><td><b>'.htmlspecialchars($mount['name']).'</b> ('.$mount['points'].' points)<br />'.htmlspecialchars($mount['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" name="itemform_'.$mount['id'].'"><input type="hidden" name="buy_id" value="'.$mount['id'].'"><div class="navibutton"><a href="" onClick="itemform_'.$mount['id'].'.submit();return false;">BUY</a></div></form>';
}
$main_content .= '</td></tr>';
}
$main_content .= '</table>';
}
//show list of addon offers
if((count($offer_list['addon']) > 0) and ($action == 'addon'))
{
$main_content .= '<table border="0" cellpadding="4" cellspacing="1" width="100%"><tr bgcolor="'.$config['site']['vdarkborder'].'"><td width="8%" align="center" class="white"><b>Points</b></td><td width="9%" align="center" class="white"><b>Picture</b></td><td width="350" align="left" class="white"><b>Description</b></td><td width="250" align="center" class="white"><b>Select product</b></td></tr>';
foreach($offer_list['addon'] as $addon)
{
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"><b>'.$addon['points'].'</b></td><td align="center"><img src="' . $config['site']['addons_images_url'] . $addon['item_id'] . $config['site']['item_images_extension'] . '"></td><td><b>'.htmlspecialchars($addon['name']).'</b> ('.$addon['points'].' points)<br />'.htmlspecialchars($addon['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" name="itemform_'.$addon['id'].'"><input type="hidden" name="buy_id" value="'.$addon['id'].'"><div class="navibutton"><a href="" onClick="itemform_'.$addon['id'].'.submit();return false;">BUY</a></div></form>';
}
$main_content .= '</td></tr>';
}
$main_content .= '</table>';
}
//show list of containers offers
if((count($offer_list['container']) > 0) and ($action == 'container'))
{
if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++;
$main_content .= '<table border="0" cellpadding="4" cellspacing="1" width="100%"><tr bgcolor="'.$config['site']['vdarkborder'].'"><td width="8%" align="center" class="white"><b>Points</b></td><td width="9%" align="center" class="white"><b>Picture</b></td><td width="350" align="left" class="white"><b>Description</b></td><td width="250" align="center" class="white"><b>Select product</b></td></tr>';
foreach($offer_list['container'] as $container)
{
$main_content .= '<tr bgcolor="'.$bgcolor.'"><td align="center"><b>'.$container['points'].'</b></td><td align="center"><img src="' . $config['site']['item_images_url'] . $container['item_id'] . $config['site']['item_images_extension'] . '"></td><td><b>'.htmlspecialchars($container['name']).'</b> ('.$container['points'].' points)<br />'.htmlspecialchars($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" name="contform_'.$container['id'].'"><input type="hidden" name="buy_id" value="'.$container['id'].'"><div class="navibutton"><a href="" onClick="contform_'.$container['id'].'.submit();return false;">BUY</a></div></form>';
}
$main_content .= '</td></tr>';
}
$main_content .= '</table>';
}
//Finish container
if((count($offer_list['item']) > 0) or (count($offer_list['mount']) > 0) or (count($offer_list['addon']) > 0) or (count($offer_list['container']) > 0))
{
$main_content .= '<table BORDER=0 CELLPaDDING="4" CELLSPaCING="1" style="width:100%;font-weight:bold;text-align:center;">
<tr style="background:#505050;">
<td colspan="3" style="height:px;"></td>
</tr>
</table>';
}
}
if($action == 'select_player')
{
unset($_SESSION['viewed_confirmation_page']);
if(!$logged) {
$errormessage .= 'Please login first.';
}
else
{
$buy_id = (int) $_REQUEST['buy_id'];
if(empty($buy_id))
{
$errormessage .= 'Please <a href="?subtopic=shopsystem">select item</a> first.';
}
else
{
$buy_offer = getItemByID($buy_id);
if(isset($buy_offer['id'])) //item exist in database
{
if($user_premium_points >= $buy_offer['points'])
{
$main_content .= '<table border="0" cellpadding="4" cellspacing="1" width="100%">
<tr bgcolor="'.$config['site']['vdarkborder'].'"><td colspan="2" class="white"><b>Selected Offer</b></td></tr>
<tr bgcolor="'.$config['site']['lightborder'].'"><td width="100"><b>Name:</b></td><td width="550">'.htmlspecialchars($buy_offer['name']).'</td></tr>
<tr bgcolor="'.$config['site']['darkborder'].'"><td width="100"><b>Description:</b></td><td width="550">'.htmlspecialchars($buy_offer['description']).'</td></tr>
</table><br />
<form action="?subtopic=shopsystem&action=confirm_transaction" method="POST"><input type="hidden" name="buy_id" value="'.$buy_id.'">
<table border="0" cellpadding="4" cellspacing="1" width="100%">
<tr bgcolor="'.$config['site']['vdarkborder'].'"><td colspan="2" class="white"><b>Give item to player from your account</b></td></tr>
<tr bgcolor="'.$config['site']['lightborder'].'"><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)
{
foreach($players_from_logged_acc as $player)
{
$main_content .= '<option>'.htmlspecialchars($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="?subtopic=shopsystem&action=confirm_transaction" method="POST"><input type="hidden" name="buy_id" value="'.$buy_id.'">
<table border="0" cellpadding="4" cellspacing="1" width="100%">
<tr bgcolor="'.$config['site']['vdarkborder'].'"><td colspan="2" class="white"><b>Give item to other player</b></td></tr>
<tr bgcolor="'.$config['site']['lightborder'].'"><td width="110"><b>To player:</b></td><td width="550"><input type="text" name="buy_name"> - name of player</td></tr>
<tr bgcolor="'.$config['site']['darkborder'].'"><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>';


}
else
{
$errormessage .= 'For this item you need <b>'.$buy_offer['points'].'</b> points. You have only <b>'.$user_premium_points.'</b> premium points. Please <a href="?subtopic=shopsystem">select other item</a> or buy premium points.';
}
}
else
{
$errormessage .= 'Offer with ID <b>'.$buy_id.'</b> doesn\'t exist. Please <a href="?subtopic=shopsystem">select item</a> again.';
}
}
}
if(!empty($errormessage))
{
$main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Informations</B></TD></TR>
<TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.$errormessage.'</b></TD></TR>
</table>';
}
}
elseif($action == 'confirm_transaction')
{
if(!$logged)
{
$errormessage .= 'Please login first.';
}
else
{
$buy_id = (int) $_POST['buy_id'];
$buy_name = trim($_POST['buy_name']);
$buy_from = trim($_POST['buy_from']);
if(empty($buy_from))
{
$buy_from = 'Anonymous';
}
if(empty($buy_id))
{
$errormessage .= 'Please <a href="?subtopic=shopsystem">select item</a> first.';
}
else
{
if(!check_name($buy_from))
{
$errormessage .= 'Invalid nick ("from player") format. Please <a href="?subtopic=shopsystem&action=select_player&buy_id='.$buy_id.'">select other name</a> or contact with administrator.';
}
else
{
$buy_offer = getItemByID($buy_id);
if(isset($buy_offer['id'])) //item exist in database
{
if($user_premium_points >= $buy_offer['points'])
{
if(check_name($buy_name))
{
$buy_player = new 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')
{
if($buy_offer['type'] == 'item')
{
$sql = 'INSERT INTO '.$SQL->tableName('z_ots_comunication').' ('.$SQL->fieldName('id').','.$SQL->fieldName('name').','.$SQL->fieldName('type').','.$SQL->fieldName('action').','.$SQL->fieldName('param1').','.$SQL->fieldName('param2').','.$SQL->fieldName('param3').','.$SQL->fieldName('param4').','.$SQL->fieldName('param5').','.$SQL->fieldName('param6').','.$SQL->fieldName('param7').','.$SQL->fieldName('delete_it').') VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote('login').', '.$SQL->quote('give_item').', '.$SQL->quote($buy_offer['item_id']).', '.$SQL->quote($buy_offer['item_count']).', '.$SQL->quote('').', '.$SQL->quote('').', '.$SQL->quote('item').', '.$SQL->quote($buy_offer['name']).', '.$SQL->quote($buy_offer['id']).', '.$SQL->quote(1).');';
$SQL->query($sql);
$save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_item').' ('.$SQL->fieldName('id').','.$SQL->fieldName('to_name').','.$SQL->fieldName('to_account').','.$SQL->fieldName('from_nick').','.$SQL->fieldName('from_account').','.$SQL->fieldName('price').','.$SQL->fieldName('offer_id').','.$SQL->fieldName('trans_state').','.$SQL->fieldName('trans_start').','.$SQL->fieldName('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']).', '.$SQL->quote('wait').', '.$SQL->quote(time()).', '.$SQL->quote(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 .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Item added!</B></TD></TR>
<TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.htmlspecialchars($buy_offer['name']).'</b> added to player <b>'.htmlspecialchars($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="?subtopic=shopsystem">GO TO MAIN SHOP SITE</a></TD></TR>
</table>';
}


                                        elseif($buy_offer['type'] == 'mount') 
                                        {
$account_id = $buy_player->getCustomField('id');
$on = $SQL->query('SELECT * FROM '.$SQL->tableName('players_online').' WHERE '.$SQL->fieldName('player_id').' = '.$account_id.';')->fetch();


if ($on == false) 
{
$SQL->query('INSERT INTO `player_storage` (`player_id`, `key`, `value`) VALUES ('.$account_id.', '.$SQL->quote($buy_offer['item_id']).', 1);');


$account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
$user_premium_points = $user_premium_points - $buy_offer['points'];


$main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Mount was added!</B></TD></TR>
<TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.htmlspecialchars($buy_offer['name']).'</b> added to player <b>'.htmlspecialchars($buy_player->getName()).'</b> mounts (he will get this mounts 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="?subtopic=shopsystem">GO TO MAIN SHOP SITE</a></TD></TR>
</table>';
}


else
{


$errormessage .= '<b>'.htmlspecialchars($buy_player->getName()).' has to be offline!</b>';




}
                                            
                                        }       


     elseif($buy_offer['type'] == 'addon') 
                                        {
$account_id = $buy_player->getCustomField('id'); 
$on = $SQL->query('SELECT * FROM '.$SQL->tableName('players_online').' WHERE '.$SQL->fieldName('player_id').' = '.$account_id.';')->fetch();


if ($on == false)
{
$SQL->query('INSERT INTO `player_storage` (`player_id`, `key`, `value`) VALUES ('.$account_id.', '.$SQL->quote($buy_offer['item_id']).', 1);');


$account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
$user_premium_points = $user_premium_points - $buy_offer['points'];


$main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Addon was added!</B></TD></TR>
<TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.htmlspecialchars($buy_offer['name']).'</b> added to player <b>'.htmlspecialchars($buy_player->getName()).'</b> addons (he will get this addons 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="?subtopic=shopsystem">GO TO MAIN SHOP SITE</a></TD></TR>
</table>';
}
else
{


$errormessage .= '<b>'.htmlspecialchars($buy_player->getName()).' has to be offline!</b>';


}


                                        }   elseif($buy_offer['type'] == 'container')
{
$sql = 'INSERT INTO '.$SQL->tableName('z_ots_comunication').' ('.$SQL->fieldName('id').','.$SQL->fieldName('name').','.$SQL->fieldName('type').','.$SQL->fieldName('action').','.$SQL->fieldName('param1').','.$SQL->fieldName('param2').','.$SQL->fieldName('param3').','.$SQL->fieldName('param4').','.$SQL->fieldName('param5').','.$SQL->fieldName('param6').','.$SQL->fieldName('param7').','.$SQL->fieldName('delete_it').') VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote('login').', '.$SQL->quote('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']).', '.$SQL->quote('container').', '.$SQL->quote($buy_offer['name']).', '.$SQL->quote($buy_offer['id']).', '.$SQL->quote(1).');';
$SQL->query($sql);
$save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_item').' ('.$SQL->fieldName('id').','.$SQL->fieldName('to_name').','.$SQL->fieldName('to_account').','.$SQL->fieldName('from_nick').','.$SQL->fieldName('from_account').','.$SQL->fieldName('price').','.$SQL->fieldName('offer_id').','.$SQL->fieldName('trans_state').','.$SQL->fieldName('trans_start').','.$SQL->fieldName('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']).', '.$SQL->quote('wait').', '.$SQL->quote(time()).', '.$SQL->quote(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 .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Container of items added!</B></TD></TR>
<TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.htmlspecialchars($buy_offer['name']).'</b> added to player <b>'.htmlspecialchars($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="?subtopic=shopsystem">GO TO MAIN SHOP SITE</a></TD></TR>
</table>';
}
}
else
{
$set_session = TRUE;
$_SESSION['viewed_confirmation_page'] = 'yes';
$main_content .= '<table border="0" cellpadding="4" cellspacing="1" width="100%">
<tr bgcolor="'.$config['site']['vdarkborder'].'"><td colspan="3" class="white"><b>Confirm Transaction</b></td></tr>
<tr bgcolor="'.$config['site']['lightborder'].'"><td width="100"><b>Name:</b></td><td width="550" colspan="2">'. htmlspecialchars($buy_offer['name']).'</td></tr>
<tr bgcolor="'.$config['site']['darkborder'].'"><td width="100"><b>Description:</b></td><td width="550" colspan="2">'. htmlspecialchars($buy_offer['description']).'</td></tr>
<tr bgcolor="'.$config['site']['lightborder'].'"><td width="100"><b>Cost:</b></td><td width="550" colspan="2"><b>'. htmlspecialchars($buy_offer['points']).' premium points</b> from your account</td></tr>
<tr bgcolor="'.$config['site']['darkborder'].'"><td width="100"><b>For Player:</b></td><td width="550" colspan="2"><font color="red">'.htmlspecialchars($buy_player->getName()).'</font></td></tr>
<tr bgcolor="'.$config['site']['lightborder'].'"><td width="100"><b>From:</b></td><td width="550" colspan="2"><font color="red">'.htmlspecialchars($buy_from).'</font></td></tr>
<tr bgcolor="'.$config['site']['darkborder'].'"><td colspan="3"></td></tr>
<tr bgcolor="'.$config['site']['darkborder'].'"><td width="100"><b>Transaction?</b></td><td width="275" align="left">
<form action="?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="'.htmlspecialchars($buy_from).'"><input type="hidden" name="buy_name" value="'.htmlspecialchars($buy_name).'"><input type="submit" value="Accept"></form></td>
<td align="right"><form action="?subtopic=shopsystem" method="POST"><input type="submit" value="Cancel"></form></td></tr>
<tr bgcolor="'.$config['site']['darkborder'].'"><td colspan="3"></td></tr>
</table> 
';
}
}
else
{
$errormessage .= 'Player with name <b>'.htmlspecialchars($buy_name).'</b> doesn\'t exist. Please <a href="?subtopic=shopsystem&action=select_player&buy_id='.$buy_id.'">select other name</a>.';
}
}
else
{
$errormessage .= 'Invalid name format. Please <a href="?subtopic=shopsystem&action=select_player&buy_id='.$buy_id.'">select other name</a> or contact with administrator.';
}
}
else
{
$errormessage .= 'For this item you need <b>'.$buy_offer['points'].'</b> points. You have only <b>'.$user_premium_points.'</b> premium points. Please <a href="?subtopic=shopsystem">select other item</a> or buy premium points.';
}
}
else
{
$errormessage .= 'Offer with ID <b>'.$buy_id.'</b> doesn\'t exist. Please <a href="?subtopic=shopsystem">select item</a> again.';
}
}
}
}
if(!empty($errormessage))
{
$main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Informations</B></TD></TR>
<TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.$errormessage.'</b></TD></TR>
</table>';
}
if(!$set_session)
{
unset($_SESSION['viewed_confirmation_page']);
}
}
elseif($action == 'show_history')
{
if(!$logged)
{
$errormessage .= '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="'.$config['site']['lightborder'].'"><td><font color="'.$char_color.'">'.htmlspecialchars($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 .= htmlspecialchars($item_received['from_nick']);
$items_received_text .= '</td><td>'.htmlspecialchars($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>';
}
}
$main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'"></TD></TR>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><center><B>Transactions History</B></center></TD></TR>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'"></TD></TR>
</table><br>';


if(!empty($items_received_text))
{
$main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white colspan="5"><B>Item Transactions</B></TD></TR>
<tr bgcolor="'.$config['site']['darkborder'].'"><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($items_received_text))
$errormessage .= 'You did not buy/receive any item.';
}
if(!empty($errormessage))
{
$main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Informations</B></TD></TR>
<TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b>'.$errormessage.'</b></TD></TR>
</table>';
}
}
$main_content .= '<br><TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=left CLASS=white><B>Premium Points</B></TD></TR>
<TR><TD BGCOLOR="'.$config['site']['lightborder'].'" ALIGN=left><b><font color="green">You have premium points: </font></b>'.$user_premium_points.'</TD></TR>
</table>';
}
else
$main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
<TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" ALIGN=center CLASS=white ><B>Shop Information</B></TD></TR>
<TR><TD BGCOLOR="'.$config['site']['darkborder'].'"><center>Shop is currently closed. [to admin: edit it in \'config/config.php\']</TD></TR>
</table>';

 

 

 

Agora, deixo um arquivo em .rar em anexo, extrai o conteúdo(pasta addons e mounts) para a pasta images do seu site.

 

Quando você for adicionar alguma mount ou addon no seu shop, faça assim:

 

Obs.: Muito importante, quando for adicionar a oferta de mount ou addon no shop, ao invés de colocar o ID do mesmo, adicione o número de storage, que está no arquivo addonmount.lua em creaturescripts do seu server. Escolha o que quiser.

 

Obs.2: As imagens dos addons e mounts são adicionadas automaticamente no shop.

images.rar

 

 

Créditos:

@dezon - Shopadmin

Summ

Scan: https://www.virustotal.com/pt/file/1a60771d653b96224740ef9d5b4b8748dc4b216bfb7b581f5706a8ea14d4aeb7/analysis/1452534742/

 

 

 

usei esse script ele entrega as mount e addon menos os itens

Postado

Boa noite, Fiz tudo certinho, quando clico em Shop no site, a tela fica em branco

 

uma OBS: no meu config.php nao existia a linha $config['site']['item_images_url'] = 'images/items/';, e eu adicionei entao assim 

 

$config['site']['addons_images_url'] = 'images/addons/';
$config['site']['addons_images_extension'] = '.gif';
$config['site']['mounts_images_url'] = 'images/mounts/';
$config['site']['mounts_images_extension'] = '.gif';
$config['site']['item_images_url'] = 'images/items/';

 

adicionei na aba //Others

Editado por gabrieldalla (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo