• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Pedido] No funciona mi script de shopsystem

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1default [Pedido] No funciona mi script de shopsystem el Vie Dic 12, 2014 6:53 pm

    Invitado


    Invitado
    Bueno, he editado mi shopadmin y shopsystem en mi gesior y cuando compro un item no me llega al juego, asi tengo en Globalevent.xml:
    ---------------------------------------

    <globalevent name="Shop" interval="10000" script="shop.lua"/>
    --------------------------------------------------


    Y asi en shop.lua:
    ----------------------------------
    function onThink(interval, lastExecution, thinkInterval)
        for _, player in ipairs(Game.getPlayers()) do
            local accid = player:getAccountId()

            -- Create the query
            local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. accid .. " LIMIT 1;")

            -- Detect if we got any results
            if orderQuery ~= false then
                -- Fetch order values
                local q_id = result.getDataInt(orderQuery, "id")
                local q_type = result.getDataInt(orderQuery, "type")
                local q_itemid = result.getDataInt(orderQuery, "itemid")
                local q_count = result.getDataInt(orderQuery, "count")
                result.free(orderQuery)

                -- ORDER TYPE 1 (Regular item shop products)
                if q_type == 1 then
                    -- Get wheight
                    local playerCap = player:getFreeCapacity()
                    local itemweight = ItemType(q_itemid):getWeight(q_count)
                    if playerCap >= itemweight then
                        db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";")
                        player:addItem(q_itemid, q_count)
                        player:sendTextMessage(MESSAGE_INFO_DESCR, "Congratulations! You have recieved ".. q_count .." "..ItemType(q_itemid):getName().."(s)!")
                    else
                        player:sendTextMessage(MESSAGE_STATUS_WARNING, "Need more CAP!")
                    end
                end
                -- Add custom order types here
                -- Type 2 is reserved for premium days and is handled on website, not needed here.
                -- Type 3 is reserved for character gender(sex) change and is handled on website as well.
                -- So use type 4+ for custom stuff, like etc packages.
                -- if q_type == 4 then
                -- end
            end
        end
        return true
    end

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    aqui lo tienes

    Código:
    -- ### CONFIG ###
    -- message send to player by script "type" (types you can check in "global.lua")
    SHOP_MSG_TYPE = 18
    -- 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.storeQuery("SELECT * FROM z_ots_comunication")
      if(result_plr ~= false) then
      repeat
      local id = tonumber(result.getDataInt(result_plr, "id"))
      local action = tostring(result.getDataString(result_plr, "action"))
      local delete = tonumber(result.getDataInt(result_plr, "delete_it"))
      local cid = getPlayerByName(tostring(result.getDataString(result_plr, "name")))
      if(cid) then
      local itemtogive_id = tonumber(result.getDataInt(result_plr, "param1"))
      local itemtogive_count = tonumber(result.getDataInt(result_plr, "param2"))
      local container_id = tonumber(result.getDataInt(result_plr, "param3"))
      local container_count = tonumber(result.getDataInt(result_plr, "param4"))
      local add_item_type = tostring(result.getDataString(result_plr, "param5"))
      local add_item_name = tostring(result.getDataString(result_plr, "param6"))
      local received_item = 0
      local full_weight = 0
      if(add_item_type == 'container') then
      container_weight = getItemWeight(container_id, 1)
      if(isItemRune(itemtogive_id)) then
      items_weight = container_count * getItemWeight(itemtogive_id, 1)
      else
      items_weight = container_count * getItemWeight(itemtogive_id, itemtogive_count)
      end
      full_weight = items_weight + container_weight
      else
      full_weight = getItemWeight(itemtogive_id, itemtogive_count)
      if(isItemRune(itemtogive_id)) then
      full_weight = getItemWeight(itemtogive_id, 1)
      else
      full_weight = getItemWeight(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(type(received_item) == "number" and received_item == RETURNVALUE_NOERROR) then
      doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
      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
      until not result.next(result_plr)
      result.free(result_plr)
      end
      return true
    end



    Ver perfil de usuario http://www.tibiaface.com

    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.