Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Nome: Moving Wagon
Versão do TFS: 1.x
Script: Printer

Preview

[IMG]

 

Script

actions.xml

<action fromaid="5000" toaid="5003" script="wagon.lua" />

wagon.lua

    railDirection = {
        [7123] = {DIRECTION_EAST, DIRECTION_SOUTH},
        [7124] = {DIRECTION_WEST, DIRECTION_SOUTH},
        [7125] = {DIRECTION_EAST, DIRECTION_NORTH},
        [7126] = {DIRECTION_WEST, DIRECTION_NORTH}
    }
}

local function getRail(position)
    local tile = Tile(position)
    if tile then
        -- Loop through items
        for _, item in ipairs(tile:getItems()) do
            -- We found rail, return id
            if isInArray({7121, 7122, 7123, 7124, 7125, 7126, 7127, 7128, 7129, 7130}, item:getId()) then
                return item:getId()
            end
        end
    end

    return 0
end

local outfitCondition = Condition(CONDITION_OUTFIT, CONDITIONID_COMBAT)
outfitCondition:setTicks(-1)

local function moveWagon(cid, direction)
    local player = Player(cid)
    if not player then
        return
    end

    -- If there is no rail, just stop the wagon
    local position = player:getPosition()
    local getRail = getRail(position)
    if getRail == 0 then
        -- Remove Outfit
        player:removeCondition(CONDITION_OUTFIT, CONDITIONID_COMBAT)

        -- Remove speed
        player:changeSpeed(-config.speed.playerSpeed)

        -- Remove Storage
        player:setStorageValue(config.wagonStorage, 0)

        -- Teleport 1 sqm forward and make sure it's not a blocking item
        position:getNextPosition(direction)
        position = player:getClosestFreePosition(position, false)
        player:teleportTo(position, true)
        return
    end

    -- Handle new rail directions
    local newRail = config.railDirection[getRail]
    if newRail and type(newRail) == 'table' then
        direction = newRail[newRail[1] == Game.getReverseDirection(direction) and 2 or 1]
        outfitCondition:setOutfit(config.wagonDirection[direction])
        player:addCondition(outfitCondition)
    end

    -- Handle movement
    doMoveCreature(cid, direction)
    addEvent(moveWagon, config.speed.wagonSpeed, cid, direction)
end

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    -- Teleport into the wagon
    player:teleportTo(toPosition, true)

    -- Get direction by action id
    local direction = item.actionid - config.wagonActionId

    -- Set Outfit, according the direction and set it
    outfitCondition:setOutfit(config.wagonDirection[direction])
    player:addCondition(outfitCondition)
    player:setDirection(direction)

    -- Change Speed
    player:changeSpeed(config.speed.playerSpeed)

    -- Set Storage
    player:setStorageValue(config.wagonStorage, 1)

    -- Move the wagon
    moveWagon(player:getId(), direction)
    return true
end

 

Link para o post
Compartilhar em outros sites

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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Tricoder
      Preview

       
      Script
      data/items/items.xml
      <item id="8981" article="a" name="gold premium card"> <attribute key="weight" value="0" /> <attribute key="description" value="Use this card to receive 7 premium days." /> </item> data/actions/actions.xml
      <action itemid="8981" script="other/premiumcard.lua"/> data/actions/scripts/premium_card
      local t = { days = 7, effect = CONST_ME_HOLYAREA } function onUse(cid, item, fromPosition, itemEx, toPosition) doPlayerRemoveItem(cid, 8981, 1) return TRUE, doPlayerAddPremiumDays(cid, t.days), doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You now have +" .. t.days .. " premium days!"), doSendMagicEffect(fromPosition, t.effect) end Créditos: God Mythera
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo