Postado Março 11, 2017 8 anos Fala pessoal, Como faço para por um piso do meu templo dar uma storage id no player? Grato desde já!
Postado Março 11, 2017 8 anos Utilize um movement: function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if (not isPlayer(cid) then return true end setPlayerStorageValue(cid, storage, value) return true end TAG: <movevent type="StepIn" uniqueid="XXXXX" event="script" value="nome_do_script.lua"/> ➥ Regras | Seções OTServ | Seções BOT
Postado Março 11, 2017 8 anos Autor 8 minutos atrás, Wakon disse: Utilize um movement: function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if (not isPlayer(cid) then return true end setPlayerStorageValue(cid, storage, value) return true end TAG: <movevent type="StepIn" uniqueid="XXXXX" event="script" value="nome_do_script.lua"/> Não funcionou É o seguinte eu tenho um npc que vende vocação vip, você da o item pro npc (10 points) e ele te da um item que te transforma na vocação e desloga seu char. Na mesma hora você já está com a vocação nova. Porem eu descobri que existe uma storage nesse item que se você não tem a storage, você só recebe o item e não ganha a vocação. (a storage é pega quando clica no bau do templo com os item iniciante). Meu problema é o pessoal não pegar o bau do inicio propositalmente só para ganhar o item da vocação e dupar esse item, depois pegar a storage para ganhar a vocação. Então quero um script que dê storage (XXX) quando ele pisa em algum tile do templo. Obrigado pela ajuda!
Postado Março 11, 2017 8 anos @Thayguroficial Você pode dar a storage ao fazer login, é mais prático e eficaz. Vá em (Data\Creaturescripts\Scripts), abra o arquivo login.lua e antes do último return true, adicione: if getPlayerStorageValue(cid, storage) < 1 then setPlayerStorageValue(cid, storage, 1) end Lembrando que, essa ideia de alterar a storage que é utilizada nos scripts relacionados ao problema, pode bugar algum deles, digo isso pois não sei como seus scripts estão escritos. Testa isso que te falei, se der problemas, passe os scripts relacionados. ➥ Regras | Seções OTServ | Seções BOT
Postado Março 11, 2017 8 anos Autor 59 minutos atrás, Wakon disse: @Thayguroficial Você pode dar a storage ao fazer login, é mais prático e eficaz. Vá em (Data\Creaturescripts\Scripts), abra o arquivo login.lua e antes do último return true, adicione: if getPlayerStorageValue(cid, storage) < 1 then setPlayerStorageValue(cid, storage, 1) end Lembrando que, essa ideia de alterar a storage que é utilizada nos scripts relacionados ao problema, pode bugar algum deles, digo isso pois não sei como seus scripts estão escritos. Testa isso que te falei, se der problemas, passe os scripts relacionados. Não consegui O npc continua entregando só o item. Vou postar os scripts. Creaturescripts (item que da a vocação) onde ta 1920 era a storage do bau inicial no templo Spoiler function onThink(cid, interval) local itemid = 2124 local outfit = {lookType = 607} local outfit2 = {lookType = 614} local outfit3 = {lookType = 607} if isPlayer(cid) then if getPlayerItemCount(cid, itemid) >= 1 then if getPlayerStorageValue(cid,99023) == 4 and doCreatureChangeOutfit(cid, outfit2) and doPlayerRemoveItem(cid, itemid, 1) and addEvent(doRemoveCreature, 1, cid) then doPlayerSetVocation(cid, 571) elseif getPlayerStorageValue(cid,30023) == 4 and doCreatureChangeOutfit(cid, outfit3) and doPlayerRemoveItem(cid, itemid, 1) and addEvent(doRemoveCreature, 1, cid) then doPlayerSetVocation(cid, 565)elseif getPlayerStorageValue(cid,1920) == 1 and doCreatureChangeOutfit(cid, outfit) and doPlayerRemoveItem(cid, itemid, 1) and addEvent(doRemoveCreature, 1, cid) then doPlayerSetVocation(cid, 562) end end return true end end Script do npc Spoiler local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, "zamasu") then selfSay("Voce tem certeza que quer virar zamasu ?", cid) talkState[talkUser] = 1 elseif (msgcontains(msg, "yes") and talkState[talkUser] == 1) and (getPlayerItemCount(cid, 5097) <= 50) then selfSay("Desculpe, voce precisa ter 50 Central Points.", cid) talkState[talkUser] = 1 elseif (msgcontains(msg, "yes") and talkState[talkUser] == 1) and (getPlayerItemCount(cid, 5097) >= 49) then doPlayerRemoveItem(cid, 5097, 50) doPlayerAddItem(cid, 2124, 1) selfSay("Obrigado, Agora voce podera virar zamasu !", cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) EDIT: Consegui resolver!!! Vou compartilhar aqui pra caso alguém precise: Em data/movements/scripts crie um .lua com nome storagetemplo e adicione: Spoiler function onStepIn(cid, item, position, fromPosition) return setPlayerStorageValue(cid, 1920, 1) end Agora você adiciona a seguinte TAG em movements.xml Spoiler <movevent type="StepIn" uniqueid="9000" event="script" value="storagetemplo.lua"/> Abra seu world com remeres e adiciona 9000 no uniqueid do piso que deseja que o player pegue a storage 1920 quando pisar. Agradeço a ajuda Wakon. Muito obrigado! Editado Março 11, 2017 8 anos por Thayguroficial (veja o histórico de edições)
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.