Ir para conteúdo

Wakon

Héroi
  • Registro em

  • Última visita

Tudo que Wakon postou

  1. Wakon postou uma resposta no tópico em Suporte OTServer Derivados
    Fiz um teste aqui e consegui alterar o do Tibia, teste no seu cliente: Abra o cliente em um hex editor ou notepad e procure pelo nome do cliente. Ai é só alterar sem apagar nenhuma letra, não aperte backspace de maneira alguma, se estiver usando notepad aperte a tecla insert para ele substituir a letra ao invés de adicionar mais uma.
  2. O tópico foi movido para a área correta, preste mais atenção da próxima vez! Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680 Este tópico foi movido: De: "OTServ → Scripting → Geral" Para: "OTServ → Suporte OTServ → Suporte de OTServ Geral"
  3. Esses sistemas de VIP free em baiak, é usado apenas uma storage para identificar. Em "Data/movements/scripts", crie tilevip1.lua e cole: local t = { storage = 29000, -- Storage da VIP[1], deve ser a mesma usada no baú!! effect = 13 } function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerStorageValue(cid, t.storage) < 1 then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você não é VIP[1].") doSendMagicEffect(getThingPos(cid), t.effect) return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Bem-vindo a área VIP[1].") return true end Em "Data/movements" abra o movements.xml e cole: <movevent type="StepIn" actionid="25550" event="script" value="tilevip1.lua" /> Agora é só colocar a actionID( pode alterar ) na entrada da VIP[1]. Agora para ganhar acesso clicando no baú, você deve criar uma action: Em "Data/actions/scripts" crie bauvip1.lua e cole: local storage = 29000 -- Storage da VIP[1], deve ser a mesma utilizada no tileVIP[1]. function onUse(cid, item, fromPos, itemEx, toPos) if getPlayerStorageValue(cid, storage) < 1 then doPlayerSendTextMessage(cid, 25, "Você agora é VIP[1].") setPlayerStorageValue(cid, storage, 1) else doPlayerSendTextMessage(cid, 25, "Você já é VIP[1].") end return true end Depois em "Data/actions" abra o actions.xml e cole: <action actionid="39484" script="bauvip1.lua"/> Ai é só colocar a actionID desejada no baú da VIP[1]. Se quiser mais é só ir fazendo o mesmo processo alterando a storage e as actionID id's.
  4. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Macalo, você criou outro tópico com a mesma dúvida, enviei ele a lixeira e espero que não aconteça novamente.
  5. O tópico foi movido para a área correta, preste mais atenção da próxima vez! Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680 Este tópico foi movido: De: "OTServ → Suporte OTServ → Suporte de Scripts" Para: "OTServ → Projetos / Formação de Equipes → Formação de Equipes"
  6. Registrou os eventos no login.lua?
  7. Procure o ID correto do depot chest e veja se a sprite não está alterada no cliente, ou o apenas o ID alterado no items.otb. Você pode utilizar Object Builder para verificar a sprite e OTItem editor para verificar o ID correto e a sprite. No items.xml deve ser assim a configuração: Abaixo do ID do seu depot: <attribute key="type" value="depot" /> <attribute key="containerSize" value="50" /> Abaixo do depot chest ( o que fica dentro ): <attribute key="containerSize" value="30" />
  8. Não manjo de criar spells, mesmo assim, se a sua dúvida foi solucionada marque a melhor resposta para o tópico ficar resolvido e crie um novo tópico com sua dúvida.
  9. Já te expliquei isso né amigo? Coloque isso depois de function onCastSpell: if getPlayerStorageValue(cid, 13700) < 1 then return doPlayerSendCancel(cid, 'You need a VIP account to use this spell.') end
  10. Sim amigo, lá você irá encontrar function onCastSpell.
  11. Abre a pasta script e talvez seja organizado por pastas, healing/support/etc... Abra a pasta e procure pelo script da spell desejada.
  12. Não dou suporte via skype ou PM, continue no tópico. É simples amigo, você deve abrir o script da spell desejada em "Data/spells/scripts" e fazer o processo que te falei.
  13. Coloque a porta com gate of experience e altere a actionID para 1100. Ai a actionID pega o level a partir do 1000 tipo: 1001 = Level 1 1002 = Level 2 1010 = Level 10 1100 = Level 100 Qual quer dúvida é só dizer.
  14. Teste novamente, errei uma variável.
  15. Testa ai: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 local storage = 23844 -- Storage do player ao comprar para ter acesso ao evento. local gstorage = 34577 -- Storage global do evento. local done = 'Here you are, thank you for your business.' function creatureSayCallback(cid, type, msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local msg = msg:lower(); if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, 'tickets') then if getGlobalStorageValue(gstorage) < 20 then npcHandler:say('I sell tickets for the event.', cid) talkState[talkUser] = 1 else npcHandler:say('There are no more tickets.', cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'blue') then if talkState[talkUser] == 1 then npcHandler:say('Did you bring me the 20 crystal coins?', cid) talkState[talkUser] = 2 end elseif msgcontains(msg, 'green') then if talkState[talkUser] == 1 then npcHandler:say('Did you bring me the 20 crystal coins?', cid) talkState[talkUser] = 2 elseif msgcontains(msg, 'yes') then if talkState[talkUser] == 2 then if doPlayerRemoveItem(cid, 2160, 20) == TRUE then npcHandler:say(done, cid) setPlayerStorageValue(cid, storage, 1) else npcHandler:say("You do not have 20 crystal coins.") end end elseif msgcontains(msg, 'no') then if talkState[talkUser] = 2 then npcHandler:say("Okay...") talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  16. Você pode fazer o seguinte: elseif msgcontains(msg, 'team red') then if getPlayerItemCount(cid ,2160) >= 20 then npcHandler:say('Did you bring me the 20 crystal coins?', cid) npcHandler.topic[cid] = 1 else npcHandler:say('I need a {20 crystal coins}. Please come back when you have them.', cid) npcHandler.topic[cid] = 0 end elseif msgcontains(msg, 'yes') and npcHandler.topic[cid] == 1 then npcHandler.topic[cid] = 0 if getPlayerItemCount(cid,2160) >= 20 then if doPlayerRemoveItem(cid,2160, 20) == TRUE then if getGlobalStorageValue(34577) < 20 then npcHandler:say(done, cid) else return doPlayerSendCancel(cid, "Os tickets esgotaram.") end else npcHandler:say(item, cid) end
  17. Já vem no servidor amigo, você só precisa citar um valor nela '-'. setGlobalStorageValue(35000, getGlobalStorageValue(35000) +1) ou, setGlobalStorageValue(35001, getGlobalStorageValue(35001) +1) ou, setGlobalStorageValue(35002, getGlobalStorageValue(35002) +1) e assim vai.
  18. Qual exatamente sua dúvida sobre a storage global?
  19. Que nada, global storage é como nome diz, uma storage global como se fosse a de player mesmo. Você pode altera-la pela database e ela reseta após reiniciar o servidor ou você pode colocar pra ela virar 0 quando acabar o evento. Exemplo com valores do script que passei: setGlobalStorageValue(35000, getGlobalStorageValue(35000) +1) -- Irá deixar a storage global (35000) no valor atual dela + um, se o valor for 1, vai ficar 2, e assim vai. if getGlobalStorageValue(35000) >= 20 then -- Se a storage global (35000) for maior ou igual a 20, então irá retornar o script com a mensagem. return doPlayerSendCancel(cid, "Os tickets esgotaram.") end
  20. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Em "Data/actions/scripts" crie resetdoor.lua e cole: local t = { minResets = 20 } function onUse(cid, item, topos) if getPlayerReset(cid) >= t.minResets then pos = getPlayerPosition(cid) if pos.x == topos.x then if pos.y < topos.y then pos.y = topos.y + 1 else pos.y = topos.y - 1 end elseif pos.y == topos.y then if pos.x < topos.x then pos.x = topos.x + 1 else pos.x = topos.x - 1 end else doPlayerSendTextMessage(cid,22,'Você precisa ficar na frente da porta para passar.') doSendMagicEffect(topos,13) end doTeleportThing(cid,pos) doSendMagicEffect(topos,12) else doPlayerSendCancel(cid, "Você precisa de "..t.minResets.." resets para passar.") end return true end Em "Data/actions" abra o actions.xml e cole a TAG: <action uniqueid="actionID_desejada" event="script" value="resetdoor.lua"/> Coloque a actionID desejada e depois coloque ela na porta desejada. Se der algum erro ou tiver alguma dúvida, me avise .
  21. Da pra tu colocar uma global storage, tipo: setGlobalStorageValue(storage_desejada, getGlobalStorageValue(storage_desejada) +1) Ai na verificação do método de comprar você coloca: if getGlobalStorageValue(storage_desejada) >= 20 then return doPlayerSendCancel(cid, "Os tickets esgotaram.") end
  22. Você pode usar essa função no script que compra o ticket: setPlayerStorageValue(cid, storage_value, 1) No mesmo local em que adiciona o item ao player. Sobre as outras funções você pode usar um movement onStepIn: local t = { tp = { x = 32338, y = 32225, z = 7 }, -- Local onde irá levar. storage = {23844, 1} -- Storage desejada e valor {value, key}. } function onStepIn(cid, item, position, fromPosition) if getPlayerStorageValue(cid, t.storage[1]) == t.storage[2] then doTeleportThing(cid, t.tp) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) else doPlayerSendCancel(cid, "Você não tem acesso a essa área.") doTeleportThing(cid, fromPosition) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) end return true end TAG: <movevent event="StepIn" actionid="actionID_desejada" script="nome_do_script.lua" /> Pra tirar a storage ao entrar em um TP é bem simples. local t = { tp = { x = 32338, y = 32225, z = 7 }, -- Local onde irá levar. storage = {23844, -1} -- Storage desejada e valor {value, key}. } function onStepIn(cid, item, position, fromPosition) setPlayerStorageValue(cid, t.storage[1], t.storage[2]) doTeleportThing(cid, t.tp) return true end TAG: <movevent event="StepIn" actionid="actionID_desejada" script="nome_do_script.lua" />
  23. Tu quer que ele tenha acesso com o ticket ou ganhe storage ao usar o ticket?
  24. Coloque nos script's delas.
  25. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Sem o seu sistema de reset fica difícil né amigo?

Informação Importante

Confirmação de Termo