Ir para conteúdo

[Encerrado] Item comprado no shop não cai no char


juio cesar

Posts Recomendados

Ola, estou com um erro muito chato o meu shop esta funcionando normalmente da para comprar add novos itens e tal, porem quando vou comprar da transação completa mas não chega no personagem dentro do serve..  Alguém pode me ajudar ae

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

14 minutos atrás, juio cesar disse:

Ola, estou com um ero muito chato o meu shop esta funcionando normalmente da para comprar add novos itens e tal, porem quando vou comprar da transação completa mas não chega no personagem dentro do serve..  Alguém pode me ajudar ae

Amigo testa esse daqui

 

Globalevents/scripts cria um arquivo.lua com nome shop.lua e coloca esse script

Spoiler

function onThink(interval, lastExecution)

    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, "Voce recebeu Um(a) >> "..productn.." << Do Shop")
                                            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, "Voce recebeu Um(a) >> "..productn.." << Do Shop")
                                            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

 

em globalevents.xml coloca a tag

 

Spoiler

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

 

se resolveu da REP +

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, Duhisback disse:

Amigo testa esse daqui

 

Globalevents/scripts cria um arquivo.lua com nome shop.lua e coloca esse script

  Ocultar conteúdo

function onThink(interval, lastExecution)

    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, "Voce recebeu Um(a) >> "..productn.." << Do Shop")
                                            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, "Voce recebeu Um(a) >> "..productn.." << Do Shop")
                                            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

 

em globalevents.xml coloca a tag

 

  Ocultar conteúdo

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

 

se resolveu da REP +

[03/08/2018 19:55:31] [Error - LuaScriptInterface::loadFile] data/globalevents/scripts/shop.lua:10: unexpected symbol near '?'
[03/08/2018 19:55:31] [Warning - Event::loadScript] Cannot load script (data/globalevents/scripts/shop.lua)
[03/08/2018 19:55:31] data/globalevents/scripts/shop.lua:10: unexpected symbol near '?'

@Duhisback?

Link para o comentário
Compartilhar em outros sites

19 minutos atrás, juio cesar disse:

[03/08/2018 19:55:31] [Error - LuaScriptInterface::loadFile] data/globalevents/scripts/shop.lua:10: unexpected symbol near '?'
[03/08/2018 19:55:31] [Warning - Event::loadScript] Cannot load script (data/globalevents/scripts/shop.lua)
[03/08/2018 19:55:31] data/globalevents/scripts/shop.lua:10: unexpected symbol near '?'

@Duhisback?

seu site é Gesior, modern, nicaw ou znot?

Link para o comentário
Compartilhar em outros sites

5 minutos atrás, juio cesar disse:

Modern

Eu não manjo muito de script então estou tentando te ajudar com alguns servers que tenho aqui no pc que já tem esse script...

 

Testa esse!

Spoiler

function onThink()
local r = db.getResult('SELECT * FROM shop_history WHERE processed=0')
if r:getID() ~= -1 then
 repeat
  local cid = getPlayerByName(r:getDataString('player'))
  if isPlayer(cid) then
   local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK).uid
   if bp ~= 0 then
 local j = db.getResult('SELECT * FROM shop_offer WHERE id='..r:getDataInt('product'))
 if j:getID() ~= -1 then
  local id = tonumber(j:getDataInt('item'))
  local tid = tonumber(r:getDataInt('id'))
  local count = tonumber(j:getDataInt('count'))
  local tipe = tonumber(j:getDataInt('type'))
  local name = j:getDataString('name')
  if tipe == 5 or tipe == 8 then
   local w = getItemInfo(id).weight * count
   if getPlayerFreeCap(cid) >= w then
    if doAddContainerItemEx(bp, doCreateItemEx(id, count)) == 1 then
	 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have received >> '..name..' << from our shop system')
	 db.executeQuery('UPDATE shop_history SET processed=1 WHERE id = ' .. tid)
    else
	 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You don\'t have enough space in backpack to receive >> '..name..' <<')
    end
   else
    doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'Sorry, you don\'t have enough capacity to receive >> '..name..' << (You need: '..getItemInfo(id).weight * count..' Capacity)')
   end
  elseif tipe == 6 or tipe == 7 then
   local bid, bcap =
    tipe == 6 and 1987 or 1988,
    tipe == 6 and 8 or 20
   local w = getItemInfo(bid).weight + (getItemInfo(id).weight * count * bcap)
   if getPlayerFreeCap(cid) >= w then
    local c = doCreateItemEx(bid)
    for i = 1, bcap do
	 doAddContainerItem(c, id, count)
    end
    if doPlayerAddItemEx(getPlayerSlotItem(cid, 3).uid, c) == RETURNVALUE_NOERROR then
	 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have received >> '..name..' << from our shop system')
	 db.executeQuery('UPDATE shop_history SET processed=1 WHERE id='..tid)
    else
	 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'Sorry, you don\'t have enough space to receive >> '..name..' <<')
    end
   else
    doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'Sorry, you don\'t have enough capacity to receive >> '..name..' << (You need: '..w..' Capacity)')
   end
  end
  j:free()
 end
   else
 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You don\'t have a container in your backpack slot.')
   end
  end
 until not r:next()
 r:free()
end
return true
end

 

ou

Spoiler

function doPlayerAddDepotItems(cid, items, town)
if (not isPlayer(cid)) then
 error("Player not found")
end
local town = town or getPlayerTown(cid)

local parcel = doCreateItemEx(ITEM_PARCEL)
for item, count in pairs(items) do
 if (type(item) == "number") then
  local attritemid = doAddContainerItem(parcel, item, count)
  doItemSetAttribute(attritemid, "description", "This item belongs to ".. getPlayerName(cid) ..".")
  doItemSetAttribute(attritemid, "aid", getPlayerGUID(cid)+10000)
 elseif (type(item) == "string") then
  doAddContainerItem(parcel, getItemIdByName(item), count)
 else
  error("Undefinied type of item name")
 end
end

return doPlayerSendMailByName(getCreatureName(cid), parcel, town)
end

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 isPlayer(cid) then
	  received = doPlayerAddDepotItems(cid, {[id]=count})
	  if received then
	   doPlayerSendTextMessage(cid,19, "You received "..productn.." in depot of your hometown.")
	   db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";")
	   doPlayerSave(cid)
	  else
	   doPlayerSendTextMessage(cid,19, "You need a free slot on container to receive "..productn..".")
	  end
	 else
	  doPlayerSendTextMessage(cid,19, "You need a free container to receive "..productn..".")
	 end
    else
	 doPlayerSendTextMessage(cid,19, "You need "..getItemWeightById(id, count).." of free capacity to receive "..productn..".")
    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 = doPlayerAddDepotItems(cid, bag)
	  if received == RETURNVALUE_NOERROR then
	   doPlayerSendTextMessage(cid,19, "You received "..productn.." in depot of your hometown.")
	   db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";")
	   doPlayerSave(cid)
	  else
	   doPlayerSendTextMessage(cid,19, "You need a free slot on container to receive "..productn..".")
	  end
	 else
	  doPlayerSendTextMessage(cid,19, "You need "..getItemWeightById(id, count).." of free capacity to receive "..productn..".")
	 end
   end
 end
   itemr:free()
   if not(result:next()) then
 break
   end
  end
  result:free()
 end
return true
end

 

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

2 minutos atrás, Duhisback disse:

Eu não manjo muito de script então estou tentando te ajudar com alguns servers que tenho aqui no pc que já tem esse script...

 

Testa esse!

  Ocultar conteúdo


function onThink()
local r = db.getResult('SELECT * FROM shop_history WHERE processed=0')
if r:getID() ~= -1 then
 repeat
  local cid = getPlayerByName(r:getDataString('player'))
  if isPlayer(cid) then
   local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK).uid
   if bp ~= 0 then
 local j = db.getResult('SELECT * FROM shop_offer WHERE id='..r:getDataInt('product'))
 if j:getID() ~= -1 then
  local id = tonumber(j:getDataInt('item'))
  local tid = tonumber(r:getDataInt('id'))
  local count = tonumber(j:getDataInt('count'))
  local tipe = tonumber(j:getDataInt('type'))
  local name = j:getDataString('name')
  if tipe == 5 or tipe == 8 then
   local w = getItemInfo(id).weight * count
   if getPlayerFreeCap(cid) >= w then
    if doAddContainerItemEx(bp, doCreateItemEx(id, count)) == 1 then
	 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have received >> '..name..' << from our shop system')
	 db.executeQuery('UPDATE shop_history SET processed=1 WHERE id = ' .. tid)
    else
	 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You don\'t have enough space in backpack to receive >> '..name..' <<')
    end
   else
    doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'Sorry, you don\'t have enough capacity to receive >> '..name..' << (You need: '..getItemInfo(id).weight * count..' Capacity)')
   end
  elseif tipe == 6 or tipe == 7 then
   local bid, bcap =
    tipe == 6 and 1987 or 1988,
    tipe == 6 and 8 or 20
   local w = getItemInfo(bid).weight + (getItemInfo(id).weight * count * bcap)
   if getPlayerFreeCap(cid) >= w then
    local c = doCreateItemEx(bid)
    for i = 1, bcap do
	 doAddContainerItem(c, id, count)
    end
    if doPlayerAddItemEx(getPlayerSlotItem(cid, 3).uid, c) == RETURNVALUE_NOERROR then
	 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have received >> '..name..' << from our shop system')
	 db.executeQuery('UPDATE shop_history SET processed=1 WHERE id='..tid)
    else
	 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'Sorry, you don\'t have enough space to receive >> '..name..' <<')
    end
   else
    doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'Sorry, you don\'t have enough capacity to receive >> '..name..' << (You need: '..w..' Capacity)')
   end
  end
  j:free()
 end
   else
 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You don\'t have a container in your backpack slot.')
   end
  end
 until not r:next()
 r:free()
end
return true
end

 

Mesmo erro

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, juio cesar disse:

Mesmo erro

eu editei e coloquei mais um abaixo, caso não dê eu encontrei esse outro

Spoiler

function onThink()

local r = db.getResult('SELECT * FROM shop_history WHERE processed=0')

if r:getID() ~= -1 then

  repeat

   local cid = getPlayerByName(r:getDataString('player'))

   if isPlayer(cid) then

    local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK).uid

    if bp ~= 0 then

     local j = db.getResult('SELECT * FROM shop_offer WHERE id='..r:getDataInt('product'))

     if j:getID() ~= -1 then

      local id = tonumber(j:getDataInt('item'))

      local tid = tonumber(r:getDataInt('id'))

      local count = tonumber(j:getDataInt('count'))

      local tipe = tonumber(j:getDataInt('type'))

      local name = j:getDataString('name')

      if tipe == 5 or tipe == 8 then

       local w = getItemInfo(id).weight * count

       if getPlayerFreeCap(cid) >= w then

        if doAddContainerItemEx(bp, doCreateItemEx(id, count)) == 1 then

         doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "You have received '..name..' from our shop system")

         db.executeQuery('UPDATE shop_history SET processed=1 WHERE id = ' .. tid)

        else

         doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You don\'t have enough space in backpack to receive .'.name..')')

        end

       else

        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'Sorry, you don\'t have enough capacity to receive  '..name..' (You need: '..getItemInfo(id).weight * count..' Capacity)')

       end

      elseif tipe == 6 or tipe == 7 then

       local bid, bcap =

        tipe == 6 and 1987 or 1988,

        tipe == 6 and 8 or 20

       local w = getItemInfo(bid).weight + (getItemInfo(id).weight * count * bcap)

       if getPlayerFreeCap(cid) >= w then

        local c = doCreateItemEx(bid)

        for i = 1, bcap do

         doAddContainerItem(cid, id, count)

        end

        if doPlayerAddItemEx(getPlayerSlotItem(cid, 3).uid, c) == RETURNVALUE_NOERROR then

         doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have received '..name..' from our shop system')

         db.executeQuery('UPDATE shop_history SET processed=1 WHERE id='..id)

        else

         doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Sorry, you don\'t have enough space to receive" '..name..')

        end

       else

        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'Sorry, you don\'t have enough capacity to receive '..name..' (You need: '..w..' Capacity')')

       end

      end

      j:free()

     end

    else

     doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "You don\'t have a container in your backpack slot.")

    end

   end

  until not r:next()

  r:free()

end

return true

end

 

e também esse

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, "Você recebeu o item >> "..productn.." << do shop")
db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";")
else
doPlayerSendTextMessage(cid,19, "Desculpe, você não tem espaço para receber o item >> "..productn.." <<")
end
else
doPlayerSendTextMessage(cid,19, "Desculpe, você não tem espaço para receber o item >> "..productn.." <<")
end
else
doPlayerSendTextMessage(cid,19, "Desculpe, você não tem capacidade para recber o item >> "..productn.." << (Você precisa de: "..getItemWeightById(id, count).." Capacidade)")
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, "Você recebeu o item >> "..productn.." << do shop")
db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";")
else
doPlayerSendTextMessage(cid,19, "Desculpe, você não tem espaço para receber o item >> "..productn.." <<")
end
else
doPlayerSendTextMessage(cid,19, "Desculpe, você não tem capacidade para receber o item >> "..productn.." << (Você precisa de: "..getItemWeightById(id, count).." capacidade)")
end
end
end
itemr:free()
if not(result:next()) then
break
end
end
result:free()
end
return true
end

 

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Duhisback disse:

eu editei e coloquei mais um abaixo, caso não dê eu encontrei esse outro

  Mostrar conteúdo oculto

function onThink()

local r = db.getResult('SELECT * FROM shop_history WHERE processed=0')

if r:getID() ~= -1 then

  repeat

   local cid = getPlayerByName(r:getDataString('player'))

   if isPlayer(cid) then

    local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK).uid

    if bp ~= 0 then

     local j = db.getResult('SELECT * FROM shop_offer WHERE id='..r:getDataInt('product'))

     if j:getID() ~= -1 then

      local id = tonumber(j:getDataInt('item'))

      local tid = tonumber(r:getDataInt('id'))

      local count = tonumber(j:getDataInt('count'))

      local tipe = tonumber(j:getDataInt('type'))

      local name = j:getDataString('name')

      if tipe == 5 or tipe == 8 then

       local w = getItemInfo(id).weight * count

       if getPlayerFreeCap(cid) >= w then

        if doAddContainerItemEx(bp, doCreateItemEx(id, count)) == 1 then

         doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "You have received '..name..' from our shop system")

         db.executeQuery('UPDATE shop_history SET processed=1 WHERE id = ' .. tid)

        else

         doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You don\'t have enough space in backpack to receive .'.name..')')

        end

       else

        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'Sorry, you don\'t have enough capacity to receive  '..name..' (You need: '..getItemInfo(id).weight * count..' Capacity)')

       end

      elseif tipe == 6 or tipe == 7 then

       local bid, bcap =

        tipe == 6 and 1987 or 1988,

        tipe == 6 and 8 or 20

       local w = getItemInfo(bid).weight + (getItemInfo(id).weight * count * bcap)

       if getPlayerFreeCap(cid) >= w then

        local c = doCreateItemEx(bid)

        for i = 1, bcap do

         doAddContainerItem(cid, id, count)

        end

        if doPlayerAddItemEx(getPlayerSlotItem(cid, 3).uid, c) == RETURNVALUE_NOERROR then

         doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have received '..name..' from our shop system')

         db.executeQuery('UPDATE shop_history SET processed=1 WHERE id='..id)

        else

         doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Sorry, you don\'t have enough space to receive" '..name..')

        end

       else

        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'Sorry, you don\'t have enough capacity to receive '..name..' (You need: '..w..' Capacity')')

       end

      end

      j:free()

     end

    else

     doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "You don\'t have a container in your backpack slot.")

    end

   end

  until not r:next()

  r:free()

end

return true

end

 

e também esse

  Mostrar conteúdo oculto


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, "Você recebeu o item >> "..productn.." << do shop")
db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";")
else
doPlayerSendTextMessage(cid,19, "Desculpe, você não tem espaço para receber o item >> "..productn.." <<")
end
else
doPlayerSendTextMessage(cid,19, "Desculpe, você não tem espaço para receber o item >> "..productn.." <<")
end
else
doPlayerSendTextMessage(cid,19, "Desculpe, você não tem capacidade para recber o item >> "..productn.." << (Você precisa de: "..getItemWeightById(id, count).." Capacidade)")
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, "Você recebeu o item >> "..productn.." << do shop")
db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";")
else
doPlayerSendTextMessage(cid,19, "Desculpe, você não tem espaço para receber o item >> "..productn.." <<")
end
else
doPlayerSendTextMessage(cid,19, "Desculpe, você não tem capacidade para receber o item >> "..productn.." << (Você precisa de: "..getItemWeightById(id, count).." capacidade)")
end
end
end
itemr:free()
if not(result:next()) then
break
end
end
result:free()
end
return true
end

 

[03/08/2018 20:31:28] [Error - LuaScriptInterface::loadFile] data/globalevents/scripts/shop.lua:1: ')' expected near '?'
[03/08/2018 20:31:28] [Warning - Event::loadScript] Cannot load script (data/globalevents/scripts/shop.lua)
[03/08/2018 20:31:28] data/globalevents/scripts/shop.lua:1: ')' expected near '?'

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, juio cesar disse:

[03/08/2018 20:31:28] [Error - LuaScriptInterface::loadFile] data/globalevents/scripts/shop.lua:1: ')' expected near '?'
[03/08/2018 20:31:28] [Warning - Event::loadScript] Cannot load script (data/globalevents/scripts/shop.lua)
[03/08/2018 20:31:28] data/globalevents/scripts/shop.lua:1: ')' expected near '?'

Então não sei mais i que fazer amigo tentei ajudar, não manjo de scripts mas os que eu tinha aqui fui te passando!

Link para o comentário
Compartilhar em outros sites

  • 6 months later...
A questão neste suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...