Ir para conteúdo
  • Cadastre-se

(Resolvido)Clicar na porta e ser teleportado se tiver storage


Ir para solução Resolvido por Agaka,

Posts Recomendados

Base: 0.4

 

Bom dia meu povo, como o titulo já diz, eu queria uma script que fizesse isso; clica na porta, é checado se o player tem a storage, é teleportado para um lugar x se tiver, uma msg aparece pra ele se não tiver a storage.

 

Citar

local config = {
tepos = {x=0000, y=0000, z=0} 
}
function onUse(cid, item, frompos, item2, topos)
if doTeleportThing(cid, config.tepos) then
doPlayerSendTextMessage(cid, 22, "")
end
return true
end 

 

 

Link para o post
Compartilhar em outros sites

@Zazeros 

Citar

local storage = 2501
local newpos = {x = 1000, y = 1000,  z = 7}

function onUse(cid, item, fromPosition, itemEx, toPosition)

if getPlayerStorageValue(cid, storage) == 1 then

    doTeleportThing(cid, newpos)

else

doPlayerSendTextMessage(cid, 27, "mensagem que o player vai receber")

    doSendMagicEffect(getCreaturePosition(cid), 2)

        end

    return true

end

 

Link para o post
Compartilhar em outros sites

@Jovim Alterei sim. Os players estão ganhando através dessa quest, quando acabam de falar com o npc:

Citar

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

local talkState = {}
local quest = 11269
local reward = 70000

 


function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(not npcHandler:isFocused(cid)) then
    return false
elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then
    npcHandler:say("", cid)
    talkState[talkUser] = 2
elseif msgcontains(msg, "yes") and talkState[talkUser] == 2 then
    npcHandler:say("", cid)
    setPlayerStorageValue(cid, quest, 2)
    talkState[talkUser] = 0
elseif msgcontains(msg, "aceitar") then
    local str = getPlayerStorageValue(cid, quest)
    if(str < 2) then
        npcHandler:say("", cid) 
        talkState[talkUser] = 1
        return true
    elseif(str == 2) then
        npcHandler:say(".", cid)
    elseif(str == 3) then
        npcHandler:say(" ", cid)
        doPlayerAddExp(cid, 2000000)
        doPlayerAddItem(cid,2152,30)
        setPlayerStorageValue(cid, quest, 4)
    elseif(str == 4) then
        npcHandler:say("Voce ja matou nosso alvo.", cid)
    end
    talkState[talkUser] = 0
end
return TRUE
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Link para o post
Compartilhar em outros sites
-- Config # KOLISAO # --
local pos_sucess = {x = 100, y = 100, z = 7} -- POS CASO TENHA STORAGE
local stor = 15457 -- STORAGE
-- END --

function onUse(cid, item, frompos, item2, topos)
	
	if getPlayerStorageValue(cid, stor) > 0 then
    	    doTeleportThing(cid, pos_sucess)
    	    doSendMagicEffect(getCreaturePosition(cid), 12)
  	else
    	    doPlayerSendTextMessage(cid, 27, "Você não tem acesso.")
    	    return true
  	end	
	return true
end

 

<action actionid="AID_DA_PORTA" event="script" value="SCRIPT.lua"/>

 

Editado por KOLISAO (veja o histórico de edições)

 

Link para o post
Compartilhar em outros sites
  • Solução

@Zazeros Já coloquei a storage que o player ganha o falar com o npc no script, falta configurar a posição.

Citar

local storage = 11269
local newpos = {x = 1000, y = 1000,  z = 7}

function onUse(cid, item, fromPosition, itemEx, toPosition)

if getPlayerStorageValue(cid, storage) == 4 then

    doTeleportThing(cid, newpos)

else

doPlayerSendTextMessage(cid, 27, "mensagem que o player vai receber")

    doSendMagicEffect(getCreaturePosition(cid), 2)

        end

    return true

end

Edit: Estava dando problema pq a storage que o player ganhava no npc estava diferente da requerida no script da porta. Caso volte a dar erro, só postar aqui :)

Editado por Jovim (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Jovim Cara, eu mudei o "if getPlayerStorageValue(cid, storage) == 4 then " porque so teleportava se tivesse matado o mob da quets, que tava dentro da porta.

Ai eu mudei o numero de 4 pra 2 e agr deu certo, muito obrigado. Se tu tiver um tempo, se podia me explicar o porque que tava == 1 não deu e depois tem == 2 e == 4

 

@KOLISAO Desculpa man, como ele me marcou, eu vi o post dele primeiro, e já deu certo, mas vlw pela ajuda hein!!

Link para o post
Compartilhar em outros sites

@Zazeros Acho que era isso kkk qualquer coisa só comentar ae dnv :)

Citar

No script que eu criei eu coloquei getPlayerStorageValue(cid, 11269) == 1, mas o seu npc não da a storage 1,
ele está dando as storage 2 e 4. Por isso dava erro quando player clicava na porta.

 

O melhor vai ser te explicar usando um bau de quest. No bau final da quest, você ganha o premio e uma storage. Mas antes disso o script do bau verifica se você já pegou ou não o premio.

 

1 -- Pegou o premio
0 -- Não pegou o premio
-1 -- Não pegou o premio

 

No script do bau estaria assim:

 

if getPlayerStorageValue(cid, 11269) == -1 then
setPlayerStorageValue(cid, 11269, 1)

 

Ou

 

if getPlayerStorageValue(cid, 11269) == 0 then
setPlayerStorageValue(cid, 11269, 1)

 

Você pode trocar os identificadores de == (igual) para < (menor). Ex:

 

if getPlayerStorageValue(cid, 11269) < 1 then

setPlayerStorageValue(cid, 11269, 1)

 

Ou

 

if getPlayerStorageValue(cid, 11269) < 0 then
setPlayerStorageValue(cid, 11269, 1)

 

Vou explicar o script da porta.

 

Nele para o player ser teleportado precisa ter a storage que o npc dá. Essa storage é recebida quando o player fala com o npc
e quando mata o alvo. As storages são:

 

setPlayerStorageValue(cid, 11269, 2)
setPlayerStorageValue(cid, 11269, 4)

 

Como eu tinha colocado no script getPlayerStorageValue(cid, 11269) == 1 não acontecia nada, porque o Npc está dando as storages
2 e 4.

 

O que são esses numeros 2 e 4?

 

É a primeira vez que vejo isso kkkkk, eu só sabia dos números 1,0 e -1, Mas até onde entendi eles tem a mesma função que o 1, 0 e -1.
Porém eles se dão em tempos diferentes. Como assim? O seu npc por exemplo. Quando o player pega a task, ele ganha a storage 2,
quando ele mata o alvo ele ganha a storage 4. Mas porque isso? Justamente pro player não pegar a mesma task infinitas
vezes.

 

Editado por Jovim (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Jovim Boa explica o mano, agr eu to entendendo melhor esse script de task que eu peguei. Foi o único que eu achei que era simples sabe? Se fala com o npc, ele pede pra matar uns mod, tu mata e pronto, ele te dá o prêmio. O único problema desse script eh que ele nao conta quantos você matou. Se tem que ir contando por conta própria.

Enfim, esse negócio de == 2 e == 4 eu pensei que era frações da storage, ahahauauahhauaa. Tipo, o == 2 seria só 2/4 da storage, então pra receber ela completa, se teria que matar o mob, ai tu ganhava a outra parte, que ficaria 4/4, ou 1. Ai tu ganhava a storage completa. Na minha cabeça fazia um pouco de sentido.

Mas vlw mano, ajudou bastante!!!!

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo