[Modal Window] Tutor Automatico
-
Quem Está Navegando 0 membros estão online
Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
Por tataboy67
Ola gente tudo bom?
Eu estava pensando em algo para se fazer em relação a sistemas, e não achei nada de interessante...
Até que encontrei 4 Sprite's de umas Wand's, cujo autor eu não tenho conhecimento !
Dai eu pensei... Porque não fazer uma Wand que possui diversos elementos?
Pois então cá estou eu kk
Explicando como funcionará o sistema:
dasdsa.mp4
OBS: Desculpe por essa msg no meio do vídeo, é que só consegui gravar assim...
Sem mais delongas vamos ao sistema:
data/actions/scripts/wand_elements.lua
local config = { id1 = 32050, id2 = 32049, id3 = 32048, id4 = 32047, } function onUse(player, item, fromPosition, itemEx, toPosition, isHotkey) player:registerEvent("Wand_Elements") local title = "Select your element!" local message = "Here you can select the element of your wand, however, you must wait 3 seconds, between one exchange and another." local window = ModalWindow(1000, title, message) window:addButton(100, "Confirm") window:addButton(101, "Cancel") window:addChoice(1, "Wand Energy") window:addChoice(2, "Wand Ice") window:addChoice(3, "Wand Earth") window:addChoice(4, "Wand Fire") window:setDefaultEnterButton(100) window:setDefaultEscapeButton(101) local Item = player:getSlotItem(CONST_SLOT_LEFT) if Item.itemid == config.id1 or Item.itemid == config.id2 or Item.itemid == config.id3 or Item.itemid == config.id4 then window:sendToPlayer(player) end return true end Adicione a tag em Actions:
<!-- Wand Elements --> <action fromid="32047" toid="32050" script="wand_elements.lua" />
data/creaturescripts/scripts/wand_elements.lua
function onModalWindow(player, modalWindowId, buttonId, choiceId) player:unregisterEvent("Wand_Elements") local config = { [1] = {32047,'Energy Wand'}, -- {ID do item, 'nome do item'} [2] = {32048,'Ice Wand'}, [3] = {32049,'Earth Wand'}, [4] = {32050,'Fire Wand'}, } if modalWindowId == 1000 then if buttonId == 100 then player:removeItem(player:getSlotItem(CONST_SLOT_LEFT).itemid, 1) player:addItem(config[choiceId][1], 1) player:sendTextMessage(MESSAGE_INFO_DESCR, "You have changed the element of your wand to: {"..config[choiceId][2].."}.") end end end Adicione a tag em Creaturescripts:
<!-- Wand Elements --> <event type="modalwindow" name="Wand_Elements" script="wand_elements.lua"/> Pronto, feito isso o sistema está utilizável já:
Download das Sprites utilizadas:
Explicando o que você deve modificar:
Em actions:
local config = { id1 = 32050, -- ID DO ITEM id2 = 32049, id3 = 32048, id4 = 32047, } Tag do action
<action fromid="32047" toid="32050" script="wand_elements.lua" /> Em creaturescripts:
local config = { [1] = {32047,'Energy Wand'}, [2] = {32048,'Ice Wand'}, [3] = {32049,'Earth Wand'}, [4] = {32050,'Fire Wand'}, } { ID do item, 'nome do item' }
*Creditos:
EUZINHOO
E o cara que crio as SPR
-
Por Killua
Últimas atualizações:
16/12/2013:
Introdução:
Este é o meu já conhecido evento Blood Castle Automático que estava em outro fórum que acabou. Estou trazendo ele aqui para que ele não "morra".
Informações:
#Dica: Acho que fica legal o premio do evento ser um item que da double exp por um tempo.
Atualização [12/04/2014]
Resolvi refazer o código, para facilitar a instalação e melhorar o funcionamento do evento.
O que mudou?
Instalando o evento:
Lib:
Movements:
Creaturescripts:
Monsters:
O evento pode acontecer de duas maneiras: automática ou manualmente. Vou por as duas possibilidades: Automática:
Manual:
Como Configurar:
* Se você for colocar, dentro do evento, um teleporte para as pessoas que não quiserem mais participar, coloque o Action ID 9371 nele.
* Lembre-se de por NO-LOGOUT tool e NO-PVP tool em toda área do evento!!
Todas as demais explicações estão na lib, mas vou demonstrar como configurar os mais "confusos".
No modo automático, você configura de quanto em quanto o tempo o evento vai acontecer. Nessa tag:
<globalevent name="Blood Castle" interval="3600" event="script" value="BloodGlobalEvent.lua"/> Aqui está 3600 segundos, ou seja, 1 hora.
* Se seu servidor for em milisegundos, multiplique o número por 1000, assim: 3600 segundos * 1000 = 3600000 milisegundos = 1 hora.
No modo manual, para iniciar o evento, basta usar a talkaction /blood-start com seu god.
Em posGuarda, vc deve colocar a posicao do Guarda do Portao, como mostrado abaixo:
As posPedras são onde ficam as pedras que tampam a passagem enquanto o evento não esta aberto, conforme na imagem abaixo:
Em estátua, vc deve colocar a posição em que o arcanjo vai ser criado, conforme na imagem abaixo:
Nas posParedes, vc deve por a posição das paredes que bloqueiam a entrada do castelo e que são removidas quando o guarda morre, conforme abaixo:
Em fromPos e toPos, você vai por o canto superior esquerdo e o canto inferior direito do mapa do seu evento, respectivamente. Dessa maneira:
As outras configurações eu acredito que já estejam bem explicadas. Espero que gostem dessa nova versão. Recomendo a todos que já usam o evento, reinstalar com essa nova versão. Qualquer dúvida ou bug, postem que irei responder. -
Por EddyHavoc
Resumo
A maneira atual para implementar Modal Window é um pouco complicada. Atualmente precisamos cria-la em algum lugar, registrar o evento, adicionar os botões em uma ordem específica, definir o ID da janela, dos botões e da escolha. Isso não é o ideal, então esta biblioteca foi criada pelo Non Sequitur para ajudar nisso. E eu estou trazendo para a OtServBrasil.
Exemplo/ Tutorial Usando Modal Window
Instalando
Adicionar em data/lib/lib.lua dofile('data/lib/modalwindow.lua') Crie o arquivo modalwindow.lua com o seguinte conteúdo em data/lib if not modalWindows then modalWindows = { modalWindowConstructor = ModalWindow, nextFreeId = 500, windows = {} } end local MT = {} MT.__index = MT function ModalWindow(...) local args = {...} if type(args[1]) == 'table' then local self = setmetatable(args[1], MT) local id = modalWindows.nextFreeId self.id = id self.buttons = {} self.choices = {} self.players = {} self.created = false modalWindows.nextFreeId = id + 1 table.insert(modalWindows.windows, self) return self end return modalWindows.modalWindowConstructor(...) end function MT:setDefaultCallback(callback) self.defaultCallback = callback end function MT:addButton(text, callback) local button = {text = tostring(text), callback = callback} table.insert(self.buttons, button) return button end function MT:addButtons(...) for _, text in ipairs({...}) do table.insert(self.buttons, {text = tostring(text)}) end end function MT:addChoice(text) local choice = {text = tostring(text)} table.insert(self.choices, choice) return choice end function MT:addChoices(...) for _, text in ipairs({...}) do table.insert(self.choices, {text = tostring(text)}) end end function MT:setDefaultEnterButton(text) self.defaultEnterButton = text end function MT:setDefaultEscapeButton(text) self.defaultEscapeButton = text end function MT:setTitle(title) self.title = tostring(title) end function MT:setMessage(message) self.message = tostring(message) end local buttonOrder = { [4] = {3, 4, 2, 1}, [3] = {2, 3, 1}, [2] = {1, 2}, [1] = {1} } function MT:create() local modalWindow = modalWindows.modalWindowConstructor(self.id, self.title, self.message) local order = buttonOrder[math.min(#self.buttons, 4)] if order then for _, i in ipairs(order) do local button = self.buttons[i] modalWindow:addButton(i, button.text) button.id = i if button.text == self.defaultEnterButton then modalWindow:setDefaultEnterButton(i) elseif button.text == self.defaultEscapeButton then modalWindow:setDefaultEscapeButton(i) end end end for _, choice in ipairs(self.choices) do modalWindow:addChoice(_, choice.text) choice.id = _ end self.modalWindow = modalWindow end function MT:sendToPlayer(player) if not self.modalWindow then self:create() end player:registerEvent('ModalWindowHelper') self.players[player:getId()] = true return self.modalWindow:sendToPlayer(player) end Adicionar em data/creaturescripts/craturescripts.xml <event type="modalwindow" name="ModalWindowHelper" script="modalwindowhelper.lua" /> Crie o arquivo modalwindowhelper.lua com o seguinte conteúdo em data/creaturescripts/scripts/ function onModalWindow(player, modalWindowId, buttonId, choiceId) local modalWindow for _, window in ipairs(modalWindows.windows) do if window.id == modalWindowId then modalWindow = window break end end if not modalWindow then return true end local playerId = player:getId() if not modalWindow.players[playerId] then return true end modalWindow.players[playerId] = nil local choice = modalWindow.choices[choiceId] for _, button in ipairs(modalWindow.buttons) do if button.id == buttonId then local callback = button.callback or modalWindow.defaultCallback if callback then callback(button, choice) break end end end return true end
Pronto!
Espero que gostem. Posteriormente irei postar um tutorial de como usar/ aplicar e alguns scripts utilizando a Biblioteca.
-
Por cicinhobdr
Estou criando meu server de ot pokemon só pra brinca mesmo sabe.
Mas eu queria saber como colocar evento automático tipo de loteria, batalha PVP.....sei lah qualquer coisa.
E que de para configurar hora sendo ele de hora em hora ou n e o prêmio que será dado ao vencedor.
Desde já agradeço.
-
Por RenanPhellip
Eai pessoal, já tentei 3 scripts de teleport automático mas os 3 não funcionaram!
Preciso que o teleport apareça automaticamente no templo aos sábados às 18h e feche às 21h contendo broadcast nos 2 horários.
-
-
Estatísticas dos Fóruns
96844
Tópicos519613
Posts
Posts Recomendados
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.