Ir para conteúdo
  • Cadastre-se

(Resolvido)[Erro] Modern Acc / Não entrega item comprado na loja


Ir para solução Resolvido por KotZletY,

Posts Recomendados

Olá pessoal então estou tendo problemas com meu shop o problema é que você compra o item no shop gasta os pontos a compra fica no shop_history da database porém não aparece nada na distro do servidor nenhuma mensagem nada simplesmente o site não está interagindo com a distro para entregar o item ao jogador

 

Prints

 

yz4hddl.png

 

HoRhZNQ.png

 

x0WQtka.png

 

Como podem ver não da nenhum erro nada simplesmente gasta os points e não entrega o item

 

se alguém puder me ajudar ficarei muito agradecido

 

ficarei no aguardo desde já obrigado

 

 

 

 

 

 

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites

@KotZletY

 

então tem um porém não sei se é o certo ou se no site ta configurado para procurar este arquivo 

 

Nome:

shopModernAcc

 

Spoiler

function onThink(interval, lastExecution, thinkInterval)

        local result = db.getResult("SELECT * FROM shop_history WHERE `processed` = 0;")
       
                if(result:getID() ~= -1) then
                        while(true) do
                                cid = getCreatureByName(tostring(result:getDataString("player")))
                                product = tonumber(result:getDataInt("product"))
                                idTransaction = tonumber(result:getDataInt("id"))
                                itemr = db.getResult("SELECT * FROM shop_offer WHERE `id` = "..product..";")
                                        if isPlayer(cid) then
                                                local id = tonumber(itemr:getDataInt("item"))
                                                local tid = tonumber(result:getDataInt("id"))
                                                local count = tonumber(itemr:getDataInt("count"))
                                                local tipe = tonumber(itemr:getDataInt("type"))
                                                local productn = tostring(itemr:getDataString("name"))
                                                        if isInArray({5,8},tipe) then
                                                                if getPlayerFreeCap(cid) >= getItemWeightById(id, count) then
                                                                        --if isContainer(getPlayerSlotItem(cid, 3).uid) then
                                                                                received = doPlayerGiveItemSHOP(cid, id, count, 0, idTransaction)                                                                              
                                                                                --received = doAddContainerItem(getPlayerSlotItem(cid, 3).uid, id,count)
                                                                                if received == true then
                                                                                        doPlayerSendTextMessage(cid,19, "You have received >> "..productn.." << from our shop system")
                                                                                        db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";")
                                                                                else
                                                                                        doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough space on container to receive >> "..productn.." <<")
                                                                                end
                                                                        --else
                                                                                --doPlayerSendTextMessage(cid,19, "Sorry, you don't have a container to receive >> "..productn.." <<")
                                                                        --end
                                                                else
                                                                        doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough capacity to receive >> "..productn.." << (You need: "..getItemWeightById(id, count).." Capacity)")
                                                                end
                                                        elseif isInArray({6,7},tipe) then
                                                                        if tipe == 6 then
                                                                                bcap = 8
                                                                                bid = 1987
                                                                        elseif tipe == 7 then
                                                                                bcap = 20
                                                                                bid = 1988
                                                                        end
                                                                        if isItemRune(id) then
                                                                                count = 1
                                                                        end
                                                                        if getPlayerFreeCap(cid) >= (getItemWeightById(1987, 1) + getItemWeightById(id,count * bcap)) then
                                                                                --local bag = doCreateItemEx(bid, 1)
                                                                                        --for i = 1,bcap do
                                                                                                --doAddContainerItem(bag, id, count)
                                                                                        --end
                                                                                received = doPlayerGiveItemContainer(cid, 1988, id, count, 0)
                                                                                --received = doPlayerAddItemEx(getPlayerSlotItem(cid, 3).uid, bag)
                                                                                if received == true then
                                                                                        doPlayerSendTextMessage(cid,19, "You have received >> "..productn.." << from our shop system")
                                                                                        db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";")
                                                                                else
                                                                                        doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough space to receive >> "..productn.." <<")
                                                                                end
                                                                        else
                                                                                doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough capacity to receive >> "..productn.." << (You need: "..getItemWeightById(id, count).." Capacity)")
                                                                        end
                                                        end
                                        end
                                itemr:free()
                                if not(result:next()) then
                                        break
                                end
                        end
                        result:free()
                end
        return true
end

 

descobri eu não declarei o arquivo no globalevents.xml

 

porém agora que declarei deu este erro na source

 

Spoiler

[29/05/2016 14:38:59] [Error - GlobalEvent Interface] 
[29/05/2016 14:38:59] data/globalevents/scripts/shopModernAcc.lua:onThink
[29/05/2016 14:38:59] Description: 
[29/05/2016 14:38:59] data/globalevents/scripts/shopModernAcc.lua:20: attempt to call global 'doPlayerGiveItemSHOP' (a nil value)
[29/05/2016 14:38:59] stack traceback:
[29/05/2016 14:38:59]     data/globalevents/scripts/shopModernAcc.lua:20: in function <data/globalevents/scripts/shopModernAcc.lua:1>
[29/05/2016 14:38:59] [Error - GlobalEvents::think] Couldn't execute event: ShopModernAcc
 

 

obs: minha source falta algumas funçoes

 

e eu não lembro a tag certinho pra declarar o shop no globalevents.xml

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

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites

Aqui sua tag: 

Spoiler

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

 

Veja se o erro persiste! 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

@KotZletY

 

da esse erro na distro

 

Spoiler

[29/05/2016 15:20:51] [Error - GlobalEvent Interface] 
[29/05/2016 15:20:51] data/globalevents/scripts/shopModernAcc.lua:onThink
[29/05/2016 15:20:51] Description: 
[29/05/2016 15:20:51] data/globalevents/scripts/shopModernAcc.lua:20: attempt to call global 'doPlayerGiveItemSHOP' (a nil value)
[29/05/2016 15:20:51] stack traceback:
[29/05/2016 15:20:51]     data/globalevents/scripts/shopModernAcc.lua:20: in function <data/globalevents/scripts/shopModernAcc.lua:1>
[29/05/2016 15:20:51] [Error - GlobalEvents::think] Couldn't execute event: shopModernAcc
 

 

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites
  • Solução

Use este, e me diga se funcionou.

Spoiler

function onThink(interval, lastExecution, thinkInterval)

	local result = db.getResult("SELECT * FROM shop_history WHERE `processed` = 0;")
	
		if(result:getID() ~= -1) then
			while(true) do
				cid = getCreatureByName(tostring(result:getDataString("player")))
				product = tonumber(result:getDataInt("product"))
				itemr = db.getResult("SELECT * FROM shop_offer WHERE `id` = "..product..";")
					if isPlayer(cid) then
						local id = tonumber(itemr:getDataInt("item"))
						local tid = tonumber(result:getDataInt("id"))
						local count = tonumber(itemr:getDataInt("count"))
						local tipe = tonumber(itemr:getDataInt("type"))
						local productn = tostring(itemr:getDataString("name"))
							if isInArray({5,8},tipe) then
								if getPlayerFreeCap(cid) >= getItemWeightById(id, count) then
									if isContainer(getPlayerSlotItem(cid, 3).uid) then
										received = doAddContainerItem(getPlayerSlotItem(cid, 3).uid, id,count)
										if received then
											doPlayerSendTextMessage(cid,19, "You have received >> "..productn.." << from our shop system")
											db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";")
										else
											doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough space on container to receive >> "..productn.." <<")
										end
									else
										doPlayerSendTextMessage(cid,19, "Sorry, you don't have a container to receive >> "..productn.." <<")
									end
								else
									doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough capacity to receive >> "..productn.." << (You need: "..getItemWeightById(id, count).." Capacity)")
								end
							elseif isInArray({6,7},tipe) then
									if tipe == 6 then
										bcap = 8
										bid = 1987
									elseif tipe == 7 then
										bcap = 20
										bid = 1988
									end
									if isItemRune(id) then
										count = 1
									end
									if getPlayerFreeCap(cid) >= (getItemWeightById(1987, 1) + getItemWeightById(id,count * bcap)) then
										local bag = doCreateItemEx(bid, 1)
											for i = 1,bcap do
												doAddContainerItem(bag, id, count)
											end
										received = doPlayerAddItemEx(getPlayerSlotItem(cid, 3).uid, bag)
										if received == RETURNVALUE_NOERROR then
											doPlayerSendTextMessage(cid,19, "You have received >> "..productn.." << from our shop system")
											db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";")
										else
											doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough space to receive >> "..productn.." <<")
										end
									else
										doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough capacity to receive >> "..productn.." << (You need: "..getItemWeightById(id, count).." Capacity)")
									end
							end
					end
				itemr:free()
				if not(result:next()) then
					break
				end
			end
			result:free()
		end
	return true
end

 

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

@KotZletY 

 

Funcionou perfeitamente porém gostária que o shop mandasse os items para o depot do player e não para o inventário dele

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites

Poxa cara, gostaria de te ajudar, mais essa alteração não vou me arriscar a fazer e lhe dar algo que pode bugar seu server, pois estou começando agora em Script, e algo desse tamanho não me arrisco a fazer, poderia ser fácil bastaria alterá algumas funções, mais não vou arriscar ainda! xD

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

traquilo eu falei isso porque quando o player ta full itens na bag e compra algo no shop ele gasta os pontos e o item não vai mas é so o player abrir um slot de espaço que o sistema verifica se ele tem espaço e manda o item xD valeu amigo ajudou mt ^^

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites
57 minutos atrás, Brunds disse:

traquilo eu falei isso porque quando o player ta full itens na bag e compra algo no shop ele gasta os pontos e o item não vai mas é so o player abrir um slot de espaço que o sistema verifica se ele tem espaço e manda o item xD valeu amigo ajudou mt ^^

Na verdade nem precisa disso. O shop ele verifica quis itens no shop history estão com o processed 0 , então ele vai seta 1 então o item cai na bag do player. Se o player tiver sem espaço ou não tiver capacidade, o shop vai ficar ali toda hora verificando quais itens estão com o processo zero e tentar seta 1 para entregar. O server pode fecha, abrir, cair  ou o que for, sempre que tiver um item com processed 0 ele vai tentar seta 1 até tiver capacidade ou espaço e o player ganhar o item. Pode passar anos e aquele processed 0 ali, o shop vai ficar mandando esse item até chegar no player. Ou seja. Não precisa se preocupar que quando o player tiver capacidade ou espaço, vai chegar! xD

Não precisa ter medo! xD

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

Muito obrigado pela sua atenção 

@KotZletY

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites
  • 2 years later...

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo