Xubeiga 0 Postado Outubro 11, 2012 Share Postado Outubro 11, 2012 fala gente! então, eu uso um tfs 0.4 rev 3777 e eu uso um script para fazer o shop enviar itens automaticamente, mãs não funciona... o shop system do site funciona certinho, ele adiciona no database o que o player comprou, que a compra ainda não foi processada, mas o item não é enviado ao player. acho que é algum erro no script, algo como se ele não conseguisse se conectar com a database para pegar os que não foram processador e mandar o item...alguém tem um script de enviar itens que funcione? obs: uso modern aac Link para o comentário https://xtibia.com/forum/topic/196234-encerrado-script-shop-enviar-item/ Compartilhar em outros sites More sharing options...
Yan Oliveira 215 Postado Outubro 11, 2012 Share Postado Outubro 11, 2012 Quando o shop manda e o item não chega para o player aparece algum error? posta seu script pra mim ver como ta. Link para o comentário https://xtibia.com/forum/topic/196234-encerrado-script-shop-enviar-item/#findComment-1361246 Compartilhar em outros sites More sharing options...
Xubeiga 0 Postado Outubro 11, 2012 Autor Share Postado Outubro 11, 2012 Quando o shop manda e o item não chega para o player aparece algum error? posta seu script pra mim ver como ta. não! não aparece nada no executável...é como se o script simplesmente não existisse, mas tá tudo certo, a tag pelo menos eu botei certo já usei esses 2 e não deu em nada: 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 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 Link para o comentário https://xtibia.com/forum/topic/196234-encerrado-script-shop-enviar-item/#findComment-1361317 Compartilhar em outros sites More sharing options...
Yan Oliveira 215 Postado Outubro 11, 2012 Share Postado Outubro 11, 2012 Tente esse: 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 Veja se funciona. Se não funcionar me avisa. Link para o comentário https://xtibia.com/forum/topic/196234-encerrado-script-shop-enviar-item/#findComment-1361407 Compartilhar em outros sites More sharing options...
Xubeiga 0 Postado Outubro 12, 2012 Autor Share Postado Outubro 12, 2012 Tente esse: 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 Veja se funciona. Se não funcionar me avisa. não funcionou. Link para o comentário https://xtibia.com/forum/topic/196234-encerrado-script-shop-enviar-item/#findComment-1361890 Compartilhar em outros sites More sharing options...
Stigal 585 Postado Abril 20, 2018 Share Postado Abril 20, 2018 A questão neste tópico de 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 https://xtibia.com/forum/topic/196234-encerrado-script-shop-enviar-item/#findComment-1732200 Compartilhar em outros sites More sharing options...
Posts Recomendados