Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 08/25/21 em todas áreas
-
NPC - Teleport se tiver X horas online
Vodkart reagiu a Yan Oliveira por uma questão
Que bom que funcionou! Tem como sim! Troque o código do arquivo Teleporter.lua (arquivo lua do NPC) por esse: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function GetHourFromSeconds(hour) return 60 * 60 * hour end function GetTime(time_seconds) local out = {} local dateFormat = { {'hora', time_seconds / 60 / 60}, {'minuto', time_seconds / 60 % 60}, } for k, t in ipairs(dateFormat) do local v = math.floor(t[2]) if (v > -1) then table.insert(out, (k < #dateFormat and '' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s")) end end if tonumber(dateFormat[1][2]) == 0 and tonumber(dateFormat[2][2]) == 0 then return "segundos" end return table.concat(out) end 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) if (not npcHandler:isFocused(cid)) then return false end -- VARIÁVEIS -- msg = string.lower(msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local position = {x= 1500, y= 1500, z= 7} -- POSIÇÃO PARA ONDE SERÁ TELEPORTADO local tempo_minimo = 8 -- QUANTIDADE DE HORAS QUE SERÁ NECESSÁRIO ESTAR ONLINE PARA SER TELEPORTADO local local_name = 'Village' -- NOME DO LOCAL OU PARA ONDE SERÁ TELEPORTADO local storage_time = 777777 -- STORAGE QUE ARMAZENA O TEMPO ONLINE DO PLAYER local level = 100 -- LEVEL MÍNIMO PARA TELEPORTAR local effect = true -- true PARA TER EFEITO E false SEM EFEITO AO TELEPORTAR local effect_id = 25 -- ID DO EFEITO AO TELEPORTAR ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') then selfSay("If you want to teleport to {" .. local_name .. "} you need to be at least {" .. tempo_minimo .. "} hour(s) online. Are you online the enough time to be teleported?", cid) talkState[talkUser] = 1 elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then if getPlayerLevel(cid) >= level then if (getPlayerStorageValue(cid, storage_time) + GetHourFromSeconds(tempo_minimo)) <= os.time() then selfSay("Good journey!", cid) doTeleportThing(cid, position) if effect then doSendMagicEffect(getThingPos(cid), effect_id) end else selfSay("Only is possible to teleport if you are online at least " .. tempo_minimo .. " hours. You are online " .. GetTime(getPlayerStorageValue(cid, storage_time)) .. ".", cid) end else selfSay("You need to be at least level " .. level .. " to teleport.", cid) end talkState[talkUser] = 0 return true elseif (msgcontains(msg, 'no') or msgcontains(msg, 'não')) and talkState[talkUser] == 1 then selfSay("Ok, goodbye!", cid) talkState[talkUser] = 0 return true else selfSay("I didn't understand what you said", cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Na variável level você coloca o nível mínimo, na variável effect mude para false caso não queira efeito ao teleportar e na variável effect_id coloque o id do efeito que quer ao teleportar caso opte pelo efeito. Também precisa ajustar os valores das variáveis que você tinha colocado, no caso da posição e nome do lugar. De resto não precisa alterar mais nada, só colocar o tempo em horas que quer na variável tempo_minimo.1 ponto -
Quest Log em Janela
fearwar reagiu a Yan Oliveira por um tópico no fórum
Olá amigos do Xtibia, venho trazer um tutorial simples, mas interessante, que exibe uma caixa de diálogo com texto contendo todas as quests do seu servidor. Atenção: Testado somente em TFS 0.3/0.4 Vamos lá! Vá em Data/Talkactions/Scripts e crie um arquivo.lua chamado quest_log.lua e adicione o script: ---------------- QUEST LOG BY YAN18 ----------------- -- NOME DA QUEST NO ÍNDICE, O NÍVEL E STORAGE NO VALOR -- local quests = { ["Cerulean City"] = {level = 30, storage = 32500}, ["Fire Stone"] = {level = 50, storage = 32501}, ["Boost Machine"] = {level = 100, storage = 32502} } function onSay(cid, words, param) local quest_completada = "- Quests completadas: \n\n" local quest_incompleta = "\n- Quests não completadas: \n\n" for i, _ in pairs (quests) do if (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) < 1) then quest_incompleta = quest_incompleta .. "* " ..i.. " - Nível: " ..quests[i].level.. " \n" elseif (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) >= 1) then quest_completada = quest_completada .."* " ..i.. " - Nível: " ..quests[i].level.. " \n" end end if quest_completada == "- Quests completadas: \n\n" then quest_completada = quest_completada .. " Nenhuma quest foi completada ainda. \n\n" elseif quest_incompleta == "\n- Quests não completadas: \n\n" then quest_incompleta = quest_incompleta .. " Todas as quests foram completadas." end local quest = quest_completada .. quest_incompleta return doShowTextDialog(cid, 1811, quest) end Agora abra o talkactions.xml que fica em Data/Talkactions/talkctions.xml e adicione a tag: <talkaction words="!quest" event="script" value="quest_log.lua"/> Deixei o comando !quest ali em words na tag xml, mas você pode colocar outro comando de sua preferência. Explicação: Adicione todas as quests do servidor na tabela quests, colocando o nome dela como índice, o level e storage (preste bem atenção para colocar a storage correta) como valores. Em caso de dúvidas, só seguir o exemplo que fiz. Também fiz verificação para ver se todas as quests do jogo (que você colocar na tabela) foram feitas ou não, e também fiz verificação de nível do jogador por quest, ou seja, os jogadores só verão as quests que eles tem nível para fazer. De resto não tem muito o que mexer, só se quiser reduzir ou aumentar a quantidade de espaço entre as linhas, mas ai é da preferência de cada um. Caso queira retirar a verificação de nível do jogador (pare verem todas as quests) só mudar isso: for i, _ in pairs (quests) do if (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) < 1) then quest_incompleta = quest_incompleta .. "* " ..i.. " - Nível: " ..quests[i].level.. " \n" elseif (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) > 1) quest_completada = quest_completada .."* " ..i.. " - Nível: " ..quests[i].level.. " \n" end end Para isso: for i, _ in pairs (quests) do if getPlayerStorageValue(cid, quests[i].storage) < 1 then quest_incompleta = quest_incompleta .. "* " ..i.. " - Nível: " ..quests[i].level.. " \n" else quest_completada = quest_completada .."* " ..i.. " - Nível: " ..quests[i].level.. " \n" end end Se fizer tudo corretamente, é para aparecer essa janela com as informações e nível da(s) quest(s): Essa janela é criada na função doShowTextDialog, e o segundo parâmetro dela é um item que aparece como ícone, geralmente deixam 0 (e recomendo deixar 0 como padrão), mas tem base que o id do item 0 aparece como algum item do jogo (as vezes montanhas ou outros itens de ambiente), então deixei um blackboard, até para ficar mais coerente hehe. Você também pode criar um item para representar essa janela, mas vai da preferência e criatividade de cada um. Se você tiver source, pode até criar uma janela com título de "Quests" para ficar mais bonito a interface, mas vai de cada um. OBS: Em alguns servidores pode ser que dê crash na distro por conta do item passado no segundo parâmetro da função doShowTextDialog(cid, id_item, texto), precisa ficar atento nisso. Qualquer dúvida só perguntar! Abraços e fiquem com Deus!1 ponto -
PDA Sem lvl 1.9 (Editado Por Bolz)
yoko reagiu a SamueLGuedes por um tópico no fórum
Fala galera do xtibia, hoje trago a voçes, o PDA Slicer 1.9, editado por min, eu passei um bom tempo editando ele, eu até deixei online, entrou 52 players. mais isso nao importa, oque importa e as informaçoes: • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Edições / Ajustes • • Erros Do Servidor • • PrintScreen • • Download's • Servidor Pokemon Dash (editado por Bolz) client incluido na pasta do servidor. 4Shared: http://www.4shared.com/rar/WnEElQIT/PDA_Edited_by_Bolz.html MediaFire: http://www.mediafire.com/?cvm4f5bfksxjbe2 • Scan • https://www.virustotal.com/pt/file/e37c5683162d0264ee2115810c5930f196f516c240d48ce6aebd5102854baaec/analysis/1367376049/ @atualizado 05/05/2013 • Menu: ├ Ediçoes; ├ Prints; ├ Download; • Edições / Ajustes • • PrintScreen • • Download's • Server PDA Slicer editor Por Bolz v2 (client ja na pasta) MediaFire: http://www.mediafire.com/?thh05yhnc7srasn • Scan • https://www.virustotal.com/pt/file/3fd8e0702e23b1f83ce9421f2f9a3808071222d084cf77a385d03e0f3f5099fc/analysis/ Atualizado 30/05/2013 desculpe a demora, eu estava sem tempo, o servidor ja estava arrumado só faltava postar, e só tive hoje para postar. é uma pequena atualização, por isso é 2.5, e nao 3.0, é algumas correções do serv. na proxima atualização tentarei colocar pokemons da 3° geração ou, o icon system, oque tiver ao meu alcanse eu tentarei colocar. abraços. ├ Ediçoes; ├ Prints; ├ Download; └ Creditos. • Edições / Ajustes • • PrintScreen • • Download's • como pedido de alguns, eu deixei o client separado do servidor. Server PDA Edited By Bolz 2.5: http://www.mediafire.com/?ry55tjk2l4l5cow Client: http://www.mediafire.com/?nwdf2nfk9txk35f • Scan • galera eu nao consegui fazer o scan do servidor e do client, quando termina de carregar, ele diz que falhou, se alguem poder colocar o scan, eu agradeçeria muito. abraços Atualizado 24/07/2013 Iaew galera, bem eu falei que ia atualizar para v3, e ta ai, só que nao consegui colocar muito doque eu falei. por falta de espaço no client. porem eu irei começar depois dessa atualização, um novo client, leve, e com espaço, que na verdade, vai ser o client do PDA 1.9. mas eu irei tirar todas as sprites de tibia que existem nelas. e so deixarei as de pokemon. assim tera mais espaço na hora de colocar um novo pokemon. chega de falar, vamos ao que interessa: ├ Ediçoes; ├ Prints; ├ Download; └ Creditos. • Edições / Ajustes • • PrintScreen • • Download's • Server 3.0 (Media Fire): http://www.mediafire.com/?j7e112fw6gaggnj Server 3.0 (4Shared): http://www.4shared.com/rar/2CVWvjAy/PDA_Edited_by_Bolz_v3.html Client 3.0 (MediaFire): http://www.mediafire.com/?4wx5dyy6hyq8upi Client 3.0 (4Shared): http://www.4shared.com/rar/xBrGwfMy/Client_v3.html • Scan • Scan do server: https://www.virustotal.com/pt/file/125ecfbe02cb0b154769a104518100cb30fe28e5fddd58891b708a1aa7a68ab8/analysis/1374685280/ Scan do client: o scan do client eu nao consegui fazer, ele sempre trava na hora de scania, se alguem puder fazer o scan dele eu agradeço • Creditos • Slicer (pelo servidor) Brun123 (por alguns scripts, e por criar o pda) Stylo Maldoso (pelo mapa) Eu (por editar) Xtibia (por alguns scripts) OBS: comentem, e votem no enquete, abraços galera.1 ponto
Líderes está configurado para São Paulo/GMT-03:00