icaro2512 0 Postado Novembro 2, 2010 Share Postado Novembro 2, 2010 (editado) Pessoal estou desenvolvendo um sistema que postarei aqui no Xtibia futuramente, mais pra tudo da certo preciso antes de uma pequena ajuda de vocês, eu andei mechendo no shop.lua e já consegui arrumar algumas coisas, Que quando o player compra o Item ele já vem modificado e com a descrição e actionID modificados.O que acontece agora é que quando o player compra um item,vem dois. Da seguinte forma, vem um dentro da BAG e vem modificado Exemplo : 16:07 You see an oceanborn leviathan armor (Arm:15, shielding +1, protection energy -5%, ice +5%). It can only be wielded properly by knights of level 90 or higher. It weighs 100.00 oz. This item can only be used by the player Dragon Lordy! E outro que vem fora da BAG e sem estar modificada Exemplo: 16:07 You see an oceanborn leviathan armor (Arm:15, shielding +1, protection energy -5%, ice +5%). It can only be wielded properly by knights of level 90 or higher. It weighs 100.00 oz. Abaixo segue os scripts. Aqui está a parte que eu modifiquei no script: if received_item == RETURNVALUE_NOERROR then local bag = doPlayerAddItem(cid, 1987, 1) local item = doAddContainerItem(bag, itemtogive_id,itemtogive_count) local action_player = getPlayerGUID(cid)+10000 doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received '.. add_item_name ..' from Tibia the War shop.') doItemSetAttribute(item,"description","This item can only be used by the player ".. getPlayerName(cid) .."!") doItemSetAttribute(item,"aid",action_player) 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 .. ";") doPlayerSave(cid) else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from Tibia the War 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 Aqui está o script completo: -- ### CONFIG ### -- message send to player by script "type" (types you can check in "global.lua") SHOP_MSG_TYPE = 19 -- 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.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) 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 received_item == RETURNVALUE_NOERROR then local bag = doPlayerAddItem(cid, 1987, 1) local item = doAddContainerItem(bag, itemtogive_id,itemtogive_count) local action_player = getPlayerGUID(cid)+10000 doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received '.. add_item_name ..' from Tibia the War shop.') doItemSetAttribute(item,"description","This item can only be used by the player ".. getPlayerName(cid) .."!") doItemSetAttribute(item,"aid",action_player) 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 .. ";") doPlayerSave(cid) else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from Tibia the War 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 Tibia the War 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 Abaixo está o SCRIPT original, antes de começar a mecher! -- ### CONFIG ### -- message send to player by script "type" (types you can check in "global.lua") SHOP_MSG_TYPE = 19 -- 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.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) 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 received_item == RETURNVALUE_NOERROR then 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 .. ";") doPlayerSave(cid) else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from Tibia the War 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 Tibia the War 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 Se puderem me ajudar ficaria muito grato, pois só falta isso para deixar o script todo funcionando! Editado Novembro 3, 2010 por icaro2512 Link para o comentário Compartilhar em outros sites More sharing options...
comedinhasss 234 Postado Novembro 2, 2010 Share Postado Novembro 2, 2010 Poste como estava antes para poder comparar... =D Link para o comentário Compartilhar em outros sites More sharing options...
Foxkbt 21 Postado Novembro 2, 2010 Share Postado Novembro 2, 2010 (editado) repare... o q tiver dentro disso if received_item == RETURNVALUE_NOERROR then so irá acontecer se o player receber o item tive uma ideia ! tente isso if received_item == RETURNVALUE_NOERROR then local item = getPlayerItemById(cid, TRUE,itemtogive_id).itemid local action_player = getPlayerGUID(cid)+10000 doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received '.. add_item_name ..' from Tibia the War shop.') doItemSetAttribute(item,"description","This item can only be used by the player ".. getPlayerName(cid) .."!") doItemSetAttribute(item,"aid",action_player) 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 .. ";") doPlayerSave(cid) else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from Tibia the War 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 Editado Novembro 2, 2010 por Foxkbt Link para o comentário Compartilhar em outros sites More sharing options...
icaro2512 0 Postado Novembro 3, 2010 Autor Share Postado Novembro 3, 2010 Poste como estava antes para poder comparar... =D Pronto, já está postado como estava antes! repare... o q tiver dentro disso if received_item == RETURNVALUE_NOERROR then so irá acontecer se o player receber o item tive uma ideia ! tente isso if received_item == RETURNVALUE_NOERROR then local item = getPlayerItemById(cid, TRUE,itemtogive_id).itemid local action_player = getPlayerGUID(cid)+10000 doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received '.. add_item_name ..' from Tibia the War shop.') doItemSetAttribute(item,"description","This item can only be used by the player ".. getPlayerName(cid) .."!") doItemSetAttribute(item,"aid",action_player) 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 .. ";") doPlayerSave(cid) else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from Tibia the War 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 Fox dessa forma deu erro, eu só recebi o item que não estava editado o que vem fora da BP e já o editado que era pra vir dentro da bag não veio, somente a bag pura e no distro deu o erro de Item not Found Link para o comentário Compartilhar em outros sites More sharing options...
Foxkbt 21 Postado Novembro 3, 2010 Share Postado Novembro 3, 2010 tente isso tb if add_item_type == 'container' then local new_container = doCreateItemEx(container_id, 1) local iter = 0 received_item = doPlayerAddItemEx(cid, new_container) while iter ~= container_count do doAddContainerItem(new_container, itemtogive_id, itemtogive_count) iter = iter + 1 end else received_item = doPlayerAddItemEx(cid, new_item) local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) end Link para o comentário Compartilhar em outros sites More sharing options...
icaro2512 0 Postado Novembro 3, 2010 Autor Share Postado Novembro 3, 2010 Já está resolvido, consegui resolver aqui, obrigado pela ajuda de vocês! Pode fechar o Tópico! Link para o comentário Compartilhar em outros sites More sharing options...
Natanael Beckman 223 Postado Janeiro 10, 2011 Share Postado Janeiro 10, 2011 Eae conseguirão solucionar o problema? Link para o comentário Compartilhar em outros sites More sharing options...
ADMJuan 7 Postado Novembro 23, 2011 Share Postado Novembro 23, 2011 Será que tinha como você explicar isso ai direitinho ? ou postar o script funcionando ? Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados