Ir para conteúdo
  • 0

Sistema de compra de points ( com compra pelo site)


tuturatti

Pergunta

Eae pessoal, tudo bem?

 

Gostaria de saber se vocês conseguem me ajudar...

 

Estou criando um server com o mapa rozinx!

 

site: http://tutonados.no-ip.org

 

Antes, quando o server não estava vinculado com o mysql do site o sistema de points funcionava de boa...

 

Agora que vinculei ao site não está funcionando.

 

Gostaria de ver se algum de vocês tem um script para arrumar isso e saber se me passam um tutorial pra como colocar isso pra funcionar...

 

 

 

Poor favor fico no aguardo!

 

 

Rep+

 

 

abraços e OBRIGADO DESDE JÁ!!!

 

Qualquer coisa podem entrar em contato comigo diretamente pelo e-mail: rodrigoturatti@outlook.com.br ou tutonados@tutonados.zz.mu

 

 

OBRIGADO!

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

é gesior, então...

 

  • Não esta funcionando a compra dos points pelo site
  • Não está entegrando diretamente para a conta do player
  • Não está fazendo as compras no bau do server

 

Não tenho muito conhecimento nessa área.

 

Mais teria como comprar diretamente do site e cair no depot ou direto com o player?

 

Fico no aguardo...

 

Qualquer jeito que a compra seja feita pelo site e os pontos entregues e depois que comprar os itens os itens tbm sejam entregues esta bom!

 

 

Fico no aguardo!

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, primeiro ponto, você tem que ver a(s) forma(s) de pagamento! Não vem 'embutido' no gesior nenhuma forma de pagamento, o máximo que você pode fazer é o redirecionamento para algum site de pagamento ou página informando dados de conta em banco para deposito. Junto com isso você pode 'bolar' alguma forma de retorno automático do site que tera o pagamento, somente assim você tera a compra e a entraga automática de points. Segundo ponto, após comprar o item no site ele é entregue automaticamente no player, isso é fácil, é um script simples ...

1º - Na pasta data/globalevents tem um arquivo com o nome 'globalevents.xml', abra esse arquivo e add a tag:

 

<globalevent name="website_shop" interval="30000" event="script" value="shop.lua" desc="Auto Shop System."/>

OBS: O interval esta para TFS 0.4, ou seja cada 1000 = 1seg, se for outro TFS, pode ser que seja contado 1 = 1seg, verifique)



2º - Ainda em data/globalevents abra a pasta 'scripts' dentro dela crie uma arquivo com a extensão .lua e coloque o nome de shop.lua e coloque isso dentro: (basta copiar qualquer outro que esta ai dentro e mudar o nome).

 

- ### CONFIG ###
-- message send to player by script "type" (types you can check in "data/lib/000-constants.lua")
SHOP_MSG_TYPE = MESSAGE_STATUS_CONSOLE_BLUE
-- time (in seconds) between queries to MySQL 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", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
						doItemSetAttribute(new_container, "tid", id)
                        local iter = 0
                        while iter ~= container_count do
							local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
							doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
							doItemSetAttribute(new_item, "tid", 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", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
						doItemSetAttribute(new_item, "tid", 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.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 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

OBS: Tbem tem uma expressão ai que pode variar de acordo com a versão do TFS, a parte 'db.query', pode ser que só funcione sendo 'db.executeQuery'.



É isso, qualquer dúvida poste aqui!

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

  • 0

irei usar o paypal ajuda?

o que mais preciso?


de uma olhada no site e ve o que voce sugere por favor...

 

uso o link tutonados.dlinkddns.com:8090 mais para tirar o 8090 redireciono pelo tutonados.no-ip.org

Link para o comentário
Compartilhar em outros sites

  • 0

Deu certo a entrega de itens? (Se ajudei rep+ )

Então cara, as formas de pagamentos eu ainda não sei configurar nada!

Há vários tutoriais que ensinam como usar o pagseguro da uol, como fazer tudo automático, o redirecionamento e o retorno. Pelo Paypal não sei não cara, tenta procurar algum tutorial.

Link para o comentário
Compartilhar em outros sites

  • 0

Deu algum erro na página do site?

Creio que a questão do item é aquilo que eu disse mesmo, é no servidor ...

AQUI!

 

 

Cara, primeiro ponto, você tem que ver a(s) forma(s) de pagamento! Não vem 'embutido' no gesior nenhuma forma de pagamento, o máximo que você pode fazer é o redirecionamento para algum site de pagamento ou página informando dados de conta em banco para deposito. Junto com isso você pode 'bolar' alguma forma de retorno automático do site que tera o pagamento, somente assim você tera a compra e a entraga automática de points. Segundo ponto, após comprar o item no site ele é entregue automaticamente no player, isso é fácil, é um script simples ...

1º - Na pasta data/globalevents tem um arquivo com o nome 'globalevents.xml', abra esse arquivo e add a tag:

 

<globalevent name="website_shop" interval="30000" event="script" value="shop.lua" desc="Auto Shop System."/>

OBS: O interval esta para TFS 0.4, ou seja cada 1000 = 1seg, se for outro TFS, pode ser que seja contado 1 = 1seg, verifique)



2º - Ainda em data/globalevents abra a pasta 'scripts' dentro dela crie uma arquivo com a extensão .lua e coloque o nome de shop.lua e coloque isso dentro: (basta copiar qualquer outro que esta ai dentro e mudar o nome).

 

- ### CONFIG ###
-- message send to player by script "type" (types you can check in "data/lib/000-constants.lua")
SHOP_MSG_TYPE = MESSAGE_STATUS_CONSOLE_BLUE
-- time (in seconds) between queries to MySQL 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", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
						doItemSetAttribute(new_container, "tid", id)
                        local iter = 0
                        while iter ~= container_count do
							local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
							doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
							doItemSetAttribute(new_item, "tid", 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", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
						doItemSetAttribute(new_item, "tid", 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.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 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

OBS: Tbem tem uma expressão ai que pode variar de acordo com a versão do TFS, a parte 'db.query', pode ser que só funcione sendo 'db.executeQuery'.



É isso, qualquer dúvida poste aqui!

 



Tenta ae!

Link para o comentário
Compartilhar em outros sites

  • 0

Aparece isso:

 

[20/09/2013 00:45:42] The Lost Server, version 0.3.6 (Crying Damson)
[20/09/2013 00:45:42] Compiled with GNU C++ version 4.4.0 at Jul 28 2013, 21:31:32.
[20/09/2013 00:45:42] A server developed by davialves
[20/09/2013 00:45:42] Visit our forum for updates, support and resources: www.rudnick.com.
Link para o comentário
Compartilhar em outros sites

  • 0

Seu TFS é versão 0.3.6 ...

 

Leia o tutorial do próprio Gesior.pl (criador do site gesior)


What will you need?
- installed account maker Gesior
- working ots based on TFS 0.3.6/0.4

1. Now open folder data of your ots.
2. Open file globalevents.xml in folder globalevents.
3. Add there line (don't break XML structure, ask someone to help you if you got no idea about XML files format):

<globalevent name="website_shop_item_delivery" interval="30" event="script" value="shop.lua"/>

 



4. Create file shop.lua in folder globalevents/scripts and paste in it:


[LUA]

-- ### CONFIG ###
-- message send to player by script "type" (types you can check in "data/lib/000-constants.lua")
SHOP_MSG_TYPE = MESSAGE_STATUS_CONSOLE_BLUE
-- time (in seconds) between queries to MySQL 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", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
doItemSetAttribute(new_container, "tid", id)
local iter = 0
while iter ~= container_count do
local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
doItemSetAttribute(new_item, "tid", 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", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].')
doItemSetAttribute(new_item, "tid", 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 


Créditos: Gesior.pl


Tenta ae!

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

×
×
  • Criar Novo...