NI
pedido

Porta vocation

Por Nickbhz, 24 de jan. de 2016 em Scripts

27
3.3k
NickbhzN
27 de janeiro de 2016 às 16:00

@@brendoonh, não to entendo o q ta dando errado... Aparece algum erro na distro? Tem certeza que a porta está (action id) está ligada a somente esse script?

Sim, a primeira coisa que fiz foi averiguar se esse ID ja estava sendo utilizado... Não está!

Nenhum erro na distro.

 

30hu78p.png

DanihcvD
27 de janeiro de 2016 às 16:41

Ok... Vamos tentar outra coisa. Remova o action id da porta. Adicione o action id ao piso da porta.

 

script.lua:

local voc = {3, 7} --vocações que podem acessar a porta

function onStepIn(cid, frompos)
	for k, v in pairs(voc) do
		if getPlayerVocation(cid) == v then
			doSendMagicEffect(getCreaturePosition(cid), 2)
		else
			doPlayerSendCancel(cid, "Only the worthy may pass.")
			doTeleportThing(cid, frompos)
		end
	end
return true
end

*atenção! O script agora é um movement. Caso não saiba instalá-lo, avisa que eu ensino.

NickbhzN
28 de janeiro de 2016 às 09:24

tag...?

DanihcvD
28 de janeiro de 2016 às 15:44

Vá em data\movements e adicione essa tag ao arquivo movements.xml:

<movevent type="StepIn" actionid="5876" event="script" value="pisovoc.lua"/>

Agora adicione a action id 5876 ao piso que fica em baixo da porta, pois é o action que está configurado na tag acima.

Agora vá em data\movements\scripts e crie um arquivo chamado pisovoc.lua e coloque o script q eu mandei acima.

NickbhzN
28 de janeiro de 2016 às 21:43

Vá em data\movements e adicione essa tag ao arquivo movements.xml:

<movevent type="StepIn" actionid="5876" event="script" value="pisovoc.lua"/>

Agora adicione a action id 5876 ao piso que fica em baixo da porta, pois é o action que está configurado na tag acima.

 

Agora vá em data\movements\scripts e crie um arquivo chamado pisovoc.lua e coloque o script q eu mandei acima.

34sh2xl.png

 

OBS, lembrando que coloquei o ID no chao, como voce falou...

DanihcvD
29 de janeiro de 2016 às 15:38

@@brendoonh, o erro está reportando que não conseguiu encontrar o arquivo. Pf, garanta de que a instalação dos scripts foi feita de forma correta.

 

*de acordo com o erro, vc precisa btoar o nome do script como: portapala.lua

NickbhzN
29 de janeiro de 2016 às 15:50

@@brendoonh, o erro está reportando que não conseguiu encontrar o arquivo. Pf, garanta de que a instalação dos scripts foi feita de forma correta.

 

*de acordo com o erro, vc precisa btoar o nome do script como: portapala.lua

Na verdade foi um errinho meu, eu adicionei o seu e esqueci de tirar a tag que eu tinha tentado...

O erro saiu, fiz como voce falou.. quando passa pelo SQM da porta aparece a mensagem e qlq vocação consegue passar...

DanihcvD
30 de janeiro de 2016 às 00:54

Tranquilo... Esse script aqui eu já testei e tá 100%. Falta apenas funcionar aí pra vc... sauhsahuas:

function onStepIn(cid, item, position, fromPosition)
local tileConfig = {
kickPos = fromPosition,
kickEffect = CONST_ME_POFF,
kickMsg = "Only the worthy may pass.",
enterMsg = "Welcome!",
enterEffect = CONST_ME_MAGIC_BLUE,
}
local vocations = {3,4,7}

    if isInArray(vocations, getPlayerVocation(cid)) then
    doPlayerSendTextMessage(cid, 25, tileConfig.enterMsg)
    doSendMagicEffect(position, tileConfig.enterEffect)
    return true
    else
    doTeleportThing(cid, tileConfig.kickPos)
    doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect)
    doPlayerSendCancel(cid, tileConfig.kickMsg)
    return true
    end
end

~~agradecimentos ao Matheus Duarte

Editado Janeiro 30 por Danihcv

correção de codigos

30 de janeiro de 2016 às 16:41

Tranquilo... Esse script aqui eu já testei e tá 100%. Falta apenas funcionar aí pra vc... sauhsahuas:

function onStepIn(cid, item, position, fromPosition)
local tileConfig = {
kickPos = fromPosition,
kickEffect = CONST_ME_POFF,
kickMsg = "Only the worthy may pass.",
enterMsg = "Welcome!",
enterEffect = CONST_ME_MAGIC_BLUE,
}
local vocs = {3,7}
 
for i = 1, #vocs do
    if getPlayerVocation(cid) == vocs[i] then
    doPlayerSendTextMessage(cid, 25, tileConfig.enterMsg)
    doSendMagicEffect(position, tileConfig.enterEffect)
    return true
    else
    doTeleportThing(cid, tileConfig.kickPos)
    doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect)
    doPlayerSendCancel(cid, tileConfig.kickMsg)
    end
end
return true
end

#PODE SER QUE NO SEU NÃO FUNCIONE...

Tem Como Fazer Mais de 2 Voc Passar ?

@UP

@UP

@UP

DanihcvD
30 de janeiro de 2016 às 17:29

@@Vasto Lord X, tem sim. Basta ir acrescentando nessa parte:

local vocations = {3,4,7} --vocações permitidas

 

Segue a nova versão do script, sem erro:

function onStepIn(cid, item, position, fromPosition)
local tileConfig = {
kickPos = fromPosition,
kickEffect = CONST_ME_POFF,
kickMsg = "Only the worthy may pass.",
enterMsg = "Welcome!",
enterEffect = CONST_ME_MAGIC_BLUE,
}
local vocations = {3,4,7}

	if isInArray(vocations, getPlayerVocation(cid)) then
    doPlayerSendTextMessage(cid, 25, tileConfig.enterMsg)
    doSendMagicEffect(position, tileConfig.enterEffect)
    return true
    else
    doTeleportThing(cid, tileConfig.kickPos)
    doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect)
    doPlayerSendCancel(cid, tileConfig.kickMsg)
	return true
    end
end

Editado Janeiro 30 por Danihcv

30 de janeiro de 2016 às 17:42

@@Vasto Lord X, tem sim. Basta ir acrescentando nessa parte:

 

 

Segue a nova versão do script, sem erro:

function onStepIn(cid, item, position, fromPosition)
local tileConfig = {
kickPos = fromPosition,
kickEffect = CONST_ME_POFF,
kickMsg = "Only the worthy may pass.",
enterMsg = "Welcome!",
enterEffect = CONST_ME_MAGIC_BLUE,
}
local vocations = {3,4,7}

	if isInArray(vocations, getPlayerVocation(cid)) then
    doPlayerSendTextMessage(cid, 25, tileConfig.enterMsg)
    doSendMagicEffect(position, tileConfig.enterEffect)
    return true
    else
    doTeleportThing(cid, tileConfig.kickPos)
    doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect)
    doPlayerSendCancel(cid, tileConfig.kickMsg)
	return true
    end
end

@

Esqueci de Salvar no Notepad, Agora Funciono .

 

Outra Pergunta Você Sabe Por Exausted No Comando transformar?

Editado Janeiro 30 por Vasto Lord X

DanihcvD
30 de janeiro de 2016 às 17:53

Amigo, vc tá usando o script antigo, que estava com erro. O certo a usar é esse ultimo que eu postei:

function onStepIn(cid, item, position, fromPosition)
local tileConfig = {
kickPos = fromPosition,
kickEffect = CONST_ME_POFF,
kickMsg = "Only the worthy may pass.",
enterMsg = "Welcome!",
enterEffect = CONST_ME_MAGIC_BLUE,
}
local vocations = {3,4,7}

    if isInArray(vocations, getPlayerVocation(cid)) then
    doPlayerSendTextMessage(cid, 25, tileConfig.enterMsg)
    doSendMagicEffect(position, tileConfig.enterEffect)
    return true
    else
    doTeleportThing(cid, tileConfig.kickPos)
    doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect)
    doPlayerSendCancel(cid, tileConfig.kickMsg)
	return true
    end
end