Ir para conteúdo
  • Cadastre-se

(Resolvido)[Movements] Dúvida


Ir para solução Resolvido por Dwarfer,

Posts Recomendados

Bom dia comunidade do TK, ontem eu estava tentando adequar um script que a função dele é quando o player passar por um tile (SteIn) ele mudaria a outfit do player enquanto ele estivesse neste local que tem as action id, porém o StepOut não quer funcionar, e não aponta nenhum erro na distro dificultando a solução do problema.

 

OBS: As outras funções como por exemplo a da stamina esta funcionando corretamente tanto no SteIn como no StepOut.

 

Vou deixar o Script aqui para aqueles que tem um conhecimento maior sobre o assunto me ajudar. (se possível)

Spoiler

local maxstamina = 252000  -- quantidade máxima de Stamina (Nao sei se é este valor mesmo)
local addStamina = 20 -- quantidade de Stamina é adicionada
local tempo = 3 -- em segundos para cada regeneraçao
local config = {
    [674] = 89, -- [Vocation] = 71 = Roupa
    [2] = 84 -- Naruto
  }
----------- FIM DAS CONFIGURAÇOES -----------

stamina = {}
local function staminadd(cid)
    if not isPlayer(cid) then
		stamina[cid] = nil
	return true
    end
	local getsta = getPlayerStamina(cid)
	if getsta < maxstamina and isPlayer(cid) then
	doPlayerSendCancel(cid, "Sua stamina está subindo.")
	doPlayerSetStamina(cid, getPlayerStamina(cid) + addStamina)
	stamina[cid] = addEvent(staminadd, tempo*1000, cid)
	else
            doTeleportThing(cid, fromPosition)
            doPlayerSendCancel(cid, "Sua stamina já está cheia.")
        end
	return true	
end
function onStepIn(cid, item, position, lastPosition, fromPosition)
if isPlayer(cid) then
        stamina[cid] = addEvent(staminadd, tempo*1000, cid)
    end
 if (config[getPlayerVocation(cid)]) then
    doCreatureChangeOutfit(cid, {lookType = config[getPlayerVocation(cid)]})
    doSendMagicEffect(getThingPos(cid), 2)
    doSendAnimatedText(getPlayerPosition(cid),"Que Frio!", math.random(01,255))
end	
  return true
end

function onStepOut(cid, item, position, lastPosition, fromPosition)
    if isPlayer(cid) then
    doSetCreatureOutfit(cid, {lookType = config[getPlayerVocation(cid)]},getCreatureOutfit(cid))
    stopEvent(stamina[cid])
    stamina[cid] = nil
end	
return true
end

 

 

Movements:

Spoiler

<movevent type="StepIn" actionid="33125" event="script" value="fontes.lua"/>
<movevent type="StepOut" actionid="33125" event="script" value="fontes.lua"/>

 

 

 

Para aqueles que me derem uma atenção agradeço de coração por estarem utilizando seu tempo livre para ajudar não só a mim como todos da comunidade.

 

                                                           ALTERAÇÕES A SEREM FEITAS:

  • StepOut: Quando o player sair do tile que tem a action, ele voltar para a outfit que ele estava anteriormente conforme a vocation que ele tem.

 

Como eu disse anteriormente, não esta apontando nenhum erro na distro e esta dificultando a solução do problema para mim,  tentei algumas formas de ajustar mas não tive sucesso.

Utilizei:

  • doCreatureChangeOutfit na parte do StepOut mas o "erro" não reconhecido pela distro ainda persiste.

 

 TFS: 0.3.6

Então é isso, estou precisando de uma ajuda nesta parte que só falta ela para eu terminar meu sistema que estou criando, espero que uma pessoa de um conhecimento maior possa me ajudar nisto ^^?

REP+

 

Editado por Spooky Ghost
esqueci de um detalhe (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

Para os próximos pedidos, tente deixar o título do seu tópico representativo do pedido.

Se entendi bem o que você quis dizer...

 

Spoiler

local t = {
    interval = 3, -- intervalo de tempo em segundos que será adicionada a stamina
    added_stamina = 2, -- minutos de stamina adicionados a cada "interval"
    outfits = {
        [674] = 89, -- [vocação] = lookType
        [2] = 84,
    }
}


local event = {}
local function addStamina(cid, position)
    if not isPlayer(cid) then event[cid] = nil return true end
    local playerStamina, playerPos = getPlayerStamina(cid), getPlayerPosition(cid)
    if playerStamina >= 2520 then
        event[cid] = nil
        doPlayerSendCancel(cid, "Sua stamina já está cheia!")
        return true
    end
    if (playerPos.x ~= position.x) or (playerPos.y ~= position.y) then
        event[cid] = nil
        return true
    end
    doPlayerSendCancel(cid, "Sua stamina está subindo...")
    doPlayerSetStamina(cid, playerStamina + t.added_stamina)
    event[cid] = addEvent(addStamina, t.interval * 1000, cid, position)
end
    
function onStepIn(cid, item, position, lastPosition, fromPosition)
    if not isPlayer(cid) then return true end
    if event[cid] then stopEvent(event[cid]) end
    event[cid] = addEvent(addStamina, t.interval * 1000, cid, position)
    local voc = t.outfits[getPlayerVocation(cid)]
    if voc then
        local out, p = getCreatureOutfit(cid), getPlayerPosition(cid)
        out.lookType = voc
        doSetCreatureOutfit(cid, out, -1)
        doSendMagicEffect(p, 2)
        doSendAnimatedText(p, "Que frio!", math.random(1,255))
    end
    return true
end

function onStepOut(cid, item, position, lastPosition, fromPosition)
    if not isPlayer(cid) then return true end
    doRemoveCondition(cid, CONDITION_OUTFIT)
    return true
end

 

 

No movements.xml adicione as tags para o StepIn e para o StepOut referentes ao actionid do piso.

 

Contato:

 

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo