-
Total de itens
2183 -
Registro em
-
Última visita
-
Dias Ganhos
23
Histórico de Reputação
-
SkyLigh deu reputação a Refe em Source Launcher Pokemon Rubrum
Hoje estou liberando a Source do Launcher Pokémon Rubrum
(Ainda falta uns ajustes, coisas básicas, como por função nos botões)
Imagem:
Download
Scan
-
SkyLigh deu reputação a aremst em [Sprites] [+226,859] De Tibia 10.82
Este é um pacote de sprites em formato PNG com fundo transparente do Tibia versão 10,82 ...
Na próxima versão da tíbia vou acrescentar mais pacotes extras para download neste post
Download Link:
Scan:
--------------------------------------------------------
Pacote adicional de ultima preactualización 26/11/2015 03:40 am
Download link:
-
SkyLigh recebeu reputação de brendoonh em Teleport
function onAdvance(cid, skill, oldLevel, newLevel)
local pos, lvl, stg = {x=210, y= 10, z= 6 }, 300, 99001 -- pos, level, storage para nao repetir 2x
if newLevel == 300 and getPlayerStorageValue(cid, 99001) <= 0 then
setPlayerStorageValue(cid,99001,1)
doTeleportThing(cid, pos, false)
doPlayerSendTextMessage(cid, 22, "Você upou level 300 e foi teleportado")
return true
end
end
-
SkyLigh recebeu reputação de RCRISTINAN em [Encerrado] Como aumentar a exp ?
Abra seu config.lua e procure por
rateExperience e ao lado vai tê os números e coloque a exp que você quer.
-
-
SkyLigh recebeu reputação de XScupion em Teleport
function onAdvance(cid, skill, oldLevel, newLevel)
local pos, lvl, stg = {x=210, y= 10, z= 6 }, 300, 99001 -- pos, level, storage para nao repetir 2x
if newLevel == 300 and getPlayerStorageValue(cid, 99001) <= 0 then
setPlayerStorageValue(cid,99001,1)
doTeleportThing(cid, pos, false)
doPlayerSendTextMessage(cid, 22, "Você upou level 300 e foi teleportado")
return true
end
end
-
SkyLigh recebeu reputação de Amantezinho em Preciso De Um Npc Que Fale Sozinho No Defaut Algumas Frases
Você quer so um npc que fique falando sem vender nada?
se for isso va em data / npc / scripts / e ponha o nome de algum arquivo.lua para bocoh e adicione isto la
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) end function onThink() npcHandler:onThink() end function thinkCallback(cid) local rand = math.random(1,100) if rand == 1 then selfSay('Posso ajudar?') -- msg que vai sair do npc selfSay('Bem vindo !') -- msg que vai sair do npc end return true end function greetCallback(cid) return true end npcHandler:setCallback(CALLBACK_ONTHINK, thinkCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:addModule(FocusModule:new())
agr em data / npc / e renome algum arquivo.xml para bocoh e ponha isto dentro
<?xml version="1.0" encoding="UTF-8"?> <npc name="bocoh" script="data/npc/scripts/bocoh.lua" walkinterval="5000" floorchange="0"> <health now="100" max="100"/> <look type="130" head="50" body="63" legs="132" feet="0" addons="3"/> <parameters> </parameters> </npc>
pronto agr so reinicia seu sv
-
SkyLigh deu reputação a Luizbaiak em (8.60) Yurots Classic v2 Sem Teleports.
Yurots Classic v2 Sem Teleports.
Olá a Todos Hoje Venho a Trazer um Yurots Inovador sem teleports Com Mais de 50 Quests adicionadas e mais de 100 hunts tatalmente espalhada pelo map vale a pena explorar esse mundo yurots.
Bom Oque Tem de Diferente nesse Yurots ?
Quest Como
Demon oak
Blue Legs
Boots of Hasle
Anihi
Demon Helmet
Dragon Scale Mail
Dragon Scale Helmet
Dragon Scale Legs
Royal Helmet
Golden Armor
Demon Shield
Behemoth Quest
Golden Boots
Magic Plate Armor
Crown Set Quest
Bright Sword Quest
Mastermind Shield
Amazon Armor
Amazon Helmet
Amazon Shield
Dwarven Armor
Dwarven Legs
Dwarven Helmet
Entre Outras...
Hunts Adicionadas:
Frost Dragon
Grim Reaper
Hydras
Hellhound Com Boss do Hellgorak
Warlock
Boss do Ferumbras na Quest da Dragon scale legs e Helmet.
Medusa
Massacre Na Poi
Templo Reformulado Mais não Perdendo Aquele Estilo do Yurots 8.1
Aki Vai Algumas Fotos:
Barco:
Behemoth Quest
Cidade
Demon oak
Frost Land
Grim Reapers
Hellgound
Hydra Land
Sala de Treinamento
Breve Criarem um video de como ir nas hunt e mais atualização.
o server foi editado para experencia baixo não recomendo deixa experiencia alta.
Senha do God: yurots/yurots
Downloads Abaixo.
YurotsClassic 8.6 -> http://www.4shared.com/rar/IdejuaNTce/Yurots_Classico_V2.html
ScanYurots. 8.6 -> https://www.virustotal.com/pt/url/5ace23bae2a90fd3791c22cc219522004dc01b56ff0f3326a18ed52fcf6179fd/analysis/1371363002/
FIQUEM ATENTOS HAVERÁ ATUALIZAÇÃO
Contado->Luizbaiak Facebook
WathsApp 41-84132720
Obrigado a Todos
-
-
SkyLigh deu reputação a FlamesAdmin em [RME] Deixando montanha com Auto-Border
Boa tarde, irei mostrar como deixar a montanha com auto-border nos pisos.
Vá até a pasta do seu RME, abra o arquivo grounds.xml da versão que você utiliza, procure por:
<brush name="mountain" type="ground"
Ele vai estar assim:
<brush name="mountain" type="ground" server_lookid="918" z-order="9900">
<item id="919" chance="1"/>
<border align="inner" to="icy mountain" id="53"/>
<border align="inner" to="snowy mountain" id="53"/>
<border align="inner" to="none" id="3"/>
<border align="outer" to="none" id="51"/>
<border align="outer" id="10"/>
<border align="inner" id="3"/>
<optional id="29"/>
</brush>
Substitua por esse:
<brush name="mountain" type="ground" server_lookid="918" z-order="9900">
<item id="919" chance="1"/>
<border align="inner" to="icy mountain" id="53"/>
<border align="inner" to="snowy mountain" id="53"/>
<border align="outer" to="none" id="29"/>
<border align="outer" id="29"/>
<optional id="29"/>
</brush>
Demonstração:
Antes sem editar
Depois com a edição
Simples.
Até logo!!!
-
SkyLigh deu reputação a Refe em Criando Escadas Novas
Bom, Hoje vou ensinar a criar novas Escadas, só testei em servidores
8.54, 8.60, porém estarei dando suporte para outras versões caso venha a ocorrer erros
Vamos lá,
Em Movements/Scripts crie um arquivo chamado
escadas.lua E Dentro cole:
function onStepIn(cid, item, frompos, item2, topos) if not isPlayer(cid) then return true end local norte = {xxx, xxx, xxx, xxx} --Ecadas viradas para o Norte local sul = {xxx, xxx, xxx, xxx} -- Escadas viradas para o sul local leste = {xxx, xxx, xxx, xxx} -- Escadas viradas para o leste local oeste = {xxx, xxx, xxx, xxx} -- Escadas viradas para o Oeste local descer = {xxx, xxx, xxx, xxx} -- Escadas para descer -- NORTH if item2.itemid == [norte] then playerpos = {x=getCreaturePosition(cid).x, y=getCreaturePosition(cid).y-1, z=getCreaturePosition(cid).z-1} -- SOUTH elseif item2.itemid == [sul] then playerpos = {x=getCreaturePosition(cid).x, y=getCreaturePosition(cid).y+1, z=getCreaturePosition(cid).z-1} -- EAST elseif item2.itemid == [leste] then playerpos = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z-1} -- WEST elseif item2.itemid == [oeste] then playerpos = {x=getCreaturePosition(cid).x-1, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z-1} --DOWN elseif item2.itemid == [descer] then playerpos = {x=getCreaturePosition(cid).x, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z+1} end Bom, no próprio Script ensina como adiciona as escadas.
Agora em Movements/movements.xml
Adicione a tag:
<movevent type="StepIn" itemid="item1;item2;item3" event="script" value="escadas.lua"/> E Pronto, já tem as novas escadas no seu Servidor
Se for adicionar as escadas no client, elas devem ter as propriedades:
Não pode Ser Movido
-
SkyLigh recebeu reputação de GokuBlack em Evento Double Exp
Fala galera tudo bem? Essa semana teve um membro que pediu um evento de double exp até que consegui fazer usando alguns scripts como base, então vamos ao código.
INSTALAÇÃO
Vá em data/creaturescripts/scripts e em creaturescripts.xml adicione a seguinte tag.
<event type="kill" name="ExpBonus" event="script" value="exp.lua"/> Em data/creaturescripts/scripts crie um arquivo .lua e renomeie para exp.lua e adicione o seguinte código.
function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getGlobalStorageValue(102590) - os.time() >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2) doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end else return TRUE end return TRUE end
Agora no data/creaturescripts/scripts e login.lua adicione a seguinte tag.
registerCreatureEvent(cid, "ExpBonus")
Agora vá em data/talkactions/scripts talkactions.xml
<talkaction words="/doubleexp" access="5" event="script" value="exp.lua"/> Em data/talkactions/scripts crie um arquivo.lua e o renomeio para exp.lua e adicione o seguinte código dentro.
function onSay(cid, words, param, channel) local config = { storage = 102590, } if(param == 'cancel') then if getGlobalStorageValue(config.storage) > 0 then setGlobalStorageValue(config.storage, -1) doBroadcastMessage("Double Exp cancelado") end return true end param = tonumber(param) if(not param or param < 0) then doPlayerSendCancel(cid, "Digite por quantas horas o evento ira durar") return true end if getGlobalStorageValue(config.storage) - os.time() <= 0 then setGlobalStorageValue(config.storage, os.time()+param*60*60) doBroadcastMessage("Exp bonus ativado 50% + EXP por "..param.." horas! Aproveite.") end return true end
COMO UTILIZAR
Para ativar o comando digite /doubleexp Quantidade de horas que vai durar o evento Exemplo /doubleexp 3 o evento ira durar por 3 horas.
Para cancelar o evento basta digitar /doubleexp cancel apenas os GOD'S podem utilizar os 2 comandos.
Créditos
--- Pela postagem do tópico e edição nos códigos.
--- Por eu tê pego uma parte de um script dele do creaturescripts.
Espero que gostem
-
SkyLigh recebeu reputação de RobsonSilva em Evento Double Exp
Fala galera tudo bem? Essa semana teve um membro que pediu um evento de double exp até que consegui fazer usando alguns scripts como base, então vamos ao código.
INSTALAÇÃO
Vá em data/creaturescripts/scripts e em creaturescripts.xml adicione a seguinte tag.
<event type="kill" name="ExpBonus" event="script" value="exp.lua"/> Em data/creaturescripts/scripts crie um arquivo .lua e renomeie para exp.lua e adicione o seguinte código.
function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getGlobalStorageValue(102590) - os.time() >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2) doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end else return TRUE end return TRUE end
Agora no data/creaturescripts/scripts e login.lua adicione a seguinte tag.
registerCreatureEvent(cid, "ExpBonus")
Agora vá em data/talkactions/scripts talkactions.xml
<talkaction words="/doubleexp" access="5" event="script" value="exp.lua"/> Em data/talkactions/scripts crie um arquivo.lua e o renomeio para exp.lua e adicione o seguinte código dentro.
function onSay(cid, words, param, channel) local config = { storage = 102590, } if(param == 'cancel') then if getGlobalStorageValue(config.storage) > 0 then setGlobalStorageValue(config.storage, -1) doBroadcastMessage("Double Exp cancelado") end return true end param = tonumber(param) if(not param or param < 0) then doPlayerSendCancel(cid, "Digite por quantas horas o evento ira durar") return true end if getGlobalStorageValue(config.storage) - os.time() <= 0 then setGlobalStorageValue(config.storage, os.time()+param*60*60) doBroadcastMessage("Exp bonus ativado 50% + EXP por "..param.." horas! Aproveite.") end return true end
COMO UTILIZAR
Para ativar o comando digite /doubleexp Quantidade de horas que vai durar o evento Exemplo /doubleexp 3 o evento ira durar por 3 horas.
Para cancelar o evento basta digitar /doubleexp cancel apenas os GOD'S podem utilizar os 2 comandos.
Créditos
--- Pela postagem do tópico e edição nos códigos.
--- Por eu tê pego uma parte de um script dele do creaturescripts.
Espero que gostem
-
SkyLigh recebeu reputação de Juanotserver em Evento Double Exp
Fala galera tudo bem? Essa semana teve um membro que pediu um evento de double exp até que consegui fazer usando alguns scripts como base, então vamos ao código.
INSTALAÇÃO
Vá em data/creaturescripts/scripts e em creaturescripts.xml adicione a seguinte tag.
<event type="kill" name="ExpBonus" event="script" value="exp.lua"/> Em data/creaturescripts/scripts crie um arquivo .lua e renomeie para exp.lua e adicione o seguinte código.
function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getGlobalStorageValue(102590) - os.time() >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2) doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end else return TRUE end return TRUE end
Agora no data/creaturescripts/scripts e login.lua adicione a seguinte tag.
registerCreatureEvent(cid, "ExpBonus")
Agora vá em data/talkactions/scripts talkactions.xml
<talkaction words="/doubleexp" access="5" event="script" value="exp.lua"/> Em data/talkactions/scripts crie um arquivo.lua e o renomeio para exp.lua e adicione o seguinte código dentro.
function onSay(cid, words, param, channel) local config = { storage = 102590, } if(param == 'cancel') then if getGlobalStorageValue(config.storage) > 0 then setGlobalStorageValue(config.storage, -1) doBroadcastMessage("Double Exp cancelado") end return true end param = tonumber(param) if(not param or param < 0) then doPlayerSendCancel(cid, "Digite por quantas horas o evento ira durar") return true end if getGlobalStorageValue(config.storage) - os.time() <= 0 then setGlobalStorageValue(config.storage, os.time()+param*60*60) doBroadcastMessage("Exp bonus ativado 50% + EXP por "..param.." horas! Aproveite.") end return true end
COMO UTILIZAR
Para ativar o comando digite /doubleexp Quantidade de horas que vai durar o evento Exemplo /doubleexp 3 o evento ira durar por 3 horas.
Para cancelar o evento basta digitar /doubleexp cancel apenas os GOD'S podem utilizar os 2 comandos.
Créditos
--- Pela postagem do tópico e edição nos códigos.
--- Por eu tê pego uma parte de um script dele do creaturescripts.
Espero que gostem
-
SkyLigh recebeu reputação de siginor em Evento Double Exp
Fala galera tudo bem? Essa semana teve um membro que pediu um evento de double exp até que consegui fazer usando alguns scripts como base, então vamos ao código.
INSTALAÇÃO
Vá em data/creaturescripts/scripts e em creaturescripts.xml adicione a seguinte tag.
<event type="kill" name="ExpBonus" event="script" value="exp.lua"/> Em data/creaturescripts/scripts crie um arquivo .lua e renomeie para exp.lua e adicione o seguinte código.
function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getGlobalStorageValue(102590) - os.time() >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2) doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end else return TRUE end return TRUE end
Agora no data/creaturescripts/scripts e login.lua adicione a seguinte tag.
registerCreatureEvent(cid, "ExpBonus")
Agora vá em data/talkactions/scripts talkactions.xml
<talkaction words="/doubleexp" access="5" event="script" value="exp.lua"/> Em data/talkactions/scripts crie um arquivo.lua e o renomeio para exp.lua e adicione o seguinte código dentro.
function onSay(cid, words, param, channel) local config = { storage = 102590, } if(param == 'cancel') then if getGlobalStorageValue(config.storage) > 0 then setGlobalStorageValue(config.storage, -1) doBroadcastMessage("Double Exp cancelado") end return true end param = tonumber(param) if(not param or param < 0) then doPlayerSendCancel(cid, "Digite por quantas horas o evento ira durar") return true end if getGlobalStorageValue(config.storage) - os.time() <= 0 then setGlobalStorageValue(config.storage, os.time()+param*60*60) doBroadcastMessage("Exp bonus ativado 50% + EXP por "..param.." horas! Aproveite.") end return true end
COMO UTILIZAR
Para ativar o comando digite /doubleexp Quantidade de horas que vai durar o evento Exemplo /doubleexp 3 o evento ira durar por 3 horas.
Para cancelar o evento basta digitar /doubleexp cancel apenas os GOD'S podem utilizar os 2 comandos.
Créditos
--- Pela postagem do tópico e edição nos códigos.
--- Por eu tê pego uma parte de um script dele do creaturescripts.
Espero que gostem
-
SkyLigh recebeu reputação de brendoonh em Script de remover pedra por tempo
local config = { pos = {x=174, y=116, z=12}, stoneid = 1353, time = 30 -- time in seconds to remove the stone } function onUse(cid, item, fromPosition, itemEx, toPosition) local stone = getTileItemById(config.pos,config.stoneid).uid if(stone > 0) then doRemoveItem(stone,1) doPlayerSendTextMessage(cid,22,"A pedra foi removida") doSendMagicEffect(config.pos, CONST_ME_MAGIC_RED) addEvent(doCreateItem, config.time * 1000, config.stoneid, 1, config.pos) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) else doPlayerSendCancel(cid, "A pedra ja foi removida, aguarde 30 segundos para abrir novamente.") end return true end -
SkyLigh deu reputação a zipter98 em Trocar outfit por 10 segundos
local outfit = xxx --ID da outfit.
doSetCreatureOutfit(cid, {lookType = outfit}, 10000)
doCreatureSetNoMove(cid, true)
addEvent(function()
if not isPlayer(cid) then return true end
doCreatureSetNoMove(cid, false)
end, 10000)
-
SkyLigh recebeu reputação de brendoonh em [PEDIDO] Evento Double Exp
Talkaction.XML
<talkaction words="/doubleexp" access="5" event="script" value="exp.lua"/> Taltaction/script/exp.lua
function onSay(cid, words, param, channel) local config = { storage = 102590, } if(param == 'cancel') then if getGlobalStorageValue(config.storage) > 0 then setGlobalStorageValue(config.storage, -1) doBroadcastMessage("Double Exp cancelado") end return true end param = tonumber(param) if(not param or param < 0) then doPlayerSendCancel(cid, "Apenas maiores que 0.") return true end if getGlobalStorageValue(config.storage) - os.time() <= 0 then setGlobalStorageValue(config.storage, os.time()+param*60*60) doBroadcastMessage("Exp bonus ativado 50% + EXP por "..param.." horas! Aproveite.") end return true end Creature.XML
<event type="kill" name="ExpBonus" event="script" value="exp.lua"/> Creature/script/exp.lua
function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getGlobalStorageValue(102590) - os.time() >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2) doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end else return TRUE end return TRUE end Creature/script/login.LUA
registerCreatureEvent(cid, "ExpBonus")
Movido para resolvidos
-
SkyLigh recebeu reputação de DavyziinC em [PEDIDO] Evento Double Exp
Talkaction.XML
<talkaction words="/doubleexp" access="5" event="script" value="exp.lua"/> Taltaction/script/exp.lua
function onSay(cid, words, param, channel) local config = { storage = 102590, } if(param == 'cancel') then if getGlobalStorageValue(config.storage) > 0 then setGlobalStorageValue(config.storage, -1) doBroadcastMessage("Double Exp cancelado") end return true end param = tonumber(param) if(not param or param < 0) then doPlayerSendCancel(cid, "Apenas maiores que 0.") return true end if getGlobalStorageValue(config.storage) - os.time() <= 0 then setGlobalStorageValue(config.storage, os.time()+param*60*60) doBroadcastMessage("Exp bonus ativado 50% + EXP por "..param.." horas! Aproveite.") end return true end Creature.XML
<event type="kill" name="ExpBonus" event="script" value="exp.lua"/> Creature/script/exp.lua
function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getGlobalStorageValue(102590) - os.time() >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2) doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end else return TRUE end return TRUE end Creature/script/login.LUA
registerCreatureEvent(cid, "ExpBonus")
Movido para resolvidos
-
SkyLigh deu reputação a Bluester em Spell Buff
Ele quer uma skill que dê buff ao player de determinada classe, vamos usar de exemplo Iron Defense do Steelix ( Pokémon ) -
SkyLigh deu reputação a Night Wolf em Tibia Guitar Hero [0.36~0.4]
Fala pessoal do XT, hoje vim trazer pra vocês um sistema que eu desenvolvi nessa última semana e inclusive fiz um tópico na seção de show off (confira o tópico aqui) numa tentativa de agitar um pouco e prover uma certa especulação em relação ao sistema. Bom, eu to aqui hoje pra informar que deu mais que certo e que meu tópico humilde (que eu realmente acreditava que seria ignorado, ainda mais numa seção morta como aquela) teve uma repercursão enorme (inclusive indo parar no portal do XT )
Bom, toda pessoa quando faz um código espera que ele agrade aos demais e tenha um certo valor, e bem, vocês superaram minhas expectativas.. com isso nada mais justo do que compartilhar com essa comunidade que me recebeu tão bem .
Chega de falatório e vamos direto aos negócios:
Introdução: O sistema em si é uma cópia dos jogos de ritmo (GuitarFreaks, Band Hero, Rocksmith e o próprio Guitar Hero). Neste jogo pequenas notas irão cair pela tela até atingir um local especial, onde você poderá usar as teclas (Shift + 7, Shift + 8, Shift + 9, ou apenas 7, 9 e 9 [com Num Lock desativado]) para escolher as direções que as notas estão afim de "ativá-las". Uma vez ativada a nota ela será "queimada" e será considerado 1 acerto. Caso você não consiga ativar a nota e ela passar direto, um efeito de fumaça indicará o "Miss", o mesmo vale para se você tentar ativar uma região sem notas.
Sistema de pontuação: Haverão 3 classificadores estatísticos para cada música tocada, sendo eles:
Notas acertadas: O principal fator de ponto, ele que definirá seu recorde e o valor máximo q ele pode assumir será o número de notas da música.
Movimentos errados: Quantidade de movimentos que você fez para alguma região que não possuia notas, conta como pontuação punitiva.
Notas passadas/erradas: Quantidade de notas que você deixou escapar, note que as notas acertadas + notas passadas compõe o número total de notas da música.
Por enquanto o sistema não possui nenhum preço para se jogar mas também não possui nenhuma recompensa, fiz com o intuito de ser apenas um mini game divertido dentro do Tibia. Porém o código é livre e está disponibilizado aqui embaixo pra qualquer um modificar como desejar.
Video explicativo:
Dificuldades: O mini game possui 3 dificuldades, porém essa quantidade é tão configurável quanto as pré definições de cada dificuldade. Além da quantidade de notas ser diferente, a velocidade com que elas descem e consequentemente o tempo que você tem pra acertá-las fica diminuido.
Diferenciais: Um forte diferencial desse sistema é que ele foi feito seguindo todas as regras possíveis pra melhorar seu desempenho, desde funções recursivas leves até separação em funções encapsuladas que carregam apenas as informações necessárias. O sistema contém também algumas seguranças que serão explicadas mais abaixo juntamente com o código para prevenir bugs e garantir diversão sem dores de cabeça!
Instalação (Map Editor): Primeiramente faça uma área parecida com essa daqui:
Não precisa ser igualzinha, apenas seguir a mesma proporção
Agora use a ferramenta de No-Logout para setar os quadradinhos que contém UID e UID2 escritos como No-Logout, isso vai impedir que players desloguem e fiquem presos dentro da sala (se eles derem exit, quando eles relogarem estarão do lado de fora da sala)
Ainda olhando a foto acima, coloque 42320 nos pisos que estão escritos UID, e 42319 no piso que contém UID2.
Nas alavancas, coloque uid 2819 em todas elas e coloque actionid 101 para a alavanca do fácil, 102 na alavanca do médio e 103 na do dificil;
A regra é sempre 100 + dificuldade, como nós estamos utilizando apenas 3 será do 101 ao 103.
Note que se você esquecer ou colocar uma dificuldade não existente o sistema adotará a dificuldade 1 como padrão para aquela alavanca.
Se chegou até aqui, meus parabéns. Muito provável que você tenha feito tudo certo. Agora vamos à parte do código.
Instalação (scripts): Em actions.xml insira essa linha
<action uniqueid="2819" event="script" value="GHtest.lua"/> Agora em data/actions/scripts crie um arquivo com extensão.lua e chameo de GHtest. Insira o seguinte bloco de instruções dentro dele:
Aproveite e já configure as posições npos, startPos e finalPos de acordo com as posições do seu map editor (olhe na segunda imagem para ver onde deve ser cada uma das posições com base na sala)
Feito isso crie um arquivo em data/lib com nome qualquer, aqui em casa eu utilizei o nome 120 - Guitar Hero Lib e a extensão.lua.
Coloque isto dentro desse arquivo e salve:
Agora adicione a seguinte tag em data/movements/movements.xml:
<movevent type="StepIn" uniqueid="42320;42319" event="script" value="GHTestmov.lua"/> Por fim crie um arquivo chamado GHTestmov.lua em data/movements/scripts e preencha seu conteúdo com as linhas abaixo:
Aproveite para deixar a npos idêntica à npos que você configurou lá no actions se baseando na posição da sua sala no map editor.
------------------------ FIM ------------------
O sistema já deve funcionar como foi planejado, se você não manja de código ou quer o sistema exatamente como foi mostrado no vídeo você pode ignorar a parte abaixo.
Configurando seu sistema (básico):
Para as pessoas que querem configurar apenas as coisas básicas, você pode fazê-lo nas primeiras linhas de cada script (actions/movements) ou alterando diretamente na lib, irei ensinar passo a passo aqui oque significa cada coisa.
Alterando a lib As coisas básicas que podem ser alteradas na lib são as seguintes:
dif = { -- [dificuldade] = notas que serao tocadas (nil = vazio, 0 = primeira posicao, 1 = segunda e 2 = terceira) [1] = {nil,nil,0,1,2,nil,nil,2,1,1,0,0,2,0,1}, [2] = {nil,nil,0,1,1,2,1,1,0,0,2,0,1,nil,1,2,1,1,0,0,2,0,1}, [3] = {nil,nil,0,nil,1,nil,1,1,0,0,2,0,1,1,1,nil,0,2,1,1,0,0,2,1,1,0,nil,2,2,1,1,1,1,2} } delay = { -- delay entre cada nota de acordo com a dificuldade [dificuldade] = delay [1] = 500, [2] = 400, [3] = 300 } recorde = { -- salva os recordes de cada dificuldade separadamente [1] = 12724, [2] = 12725, [3] = 12726 } dif separa como será cada música de cada dificuldade, as notas sempre serão nesse exato formato. nil significa que não estarei usando posição nenhuma naquela linha, 0 significa a primeira posição (nota verde), 1 significa segunda opção (nota vermelha) e 2 significa terceira opção (nota azul). Eu aconselho a começar todas as músicas com 2 ou mais 'nil' para dar tempo de o player entender que vai começar. A distribuição que eu usei foi meio que aleatória então sinta-se a vontade pra mudar tanto o tamanho das musicas quanto a variedade de notas.
delay é a tabela que oganiza os delays de cada dificuldade, isso significa que para a dificuldade 1(fácil) nós temos 500 milisegundos para cada mudança de nota (1000 milisegundos = 1 segundo), ou seja, a cada 2 passadas de nota temos 1 segundo dentro da sala. No modo hard a cada 300 milisegundos mudamos a nota, deixando o jogo muito mais rápido e dificil.
recorde é a tabela que possui os storages que irão salvar os recordes nas respectivas dificuldades.
Alterando actions
local storage_point = 12721 -- storage que salva os pontos local storage_erradas = 12722 -- storage que salva as notas erradas local storage_passadas = 12723 -- storage que salva as notas que passaram Apenas mude os storages
Alterando movements
local itemid = 1680 --- coloque o id da nota do meio local npos = {x = 141, y = 51, z = 7} -- posicao que ira nascer a primeira nota local storage_point = 12721 -- storage que salva os pontos local storage_erradas = 12722 -- storage que salva as notas erradas local storage_passadas = 12723 -- storage que salva as notas que passaram aconselho mexer somente nos storages, mantendo igual à action.
Só abra o spoiler abaixo se você estiver descontente com a forma que seu código roda e tiver certeza absoluta de que você tem o conhecimento necessário para alterar as coisas que vou explicar.
Espero que vocês tenham curtido, façam um bom uso e qualquer dúvida postem nos comentários abaixo.
Agradecimento ao @dalvorsn pela função que limpa a sala antes de começar o jogo e ao pessoal do servidor Refugia que fez um script de guitar hero lá e me deu a idéia. Abraços do Lobo.
-
SkyLigh deu reputação a Bluester em [Resolvido] npc troca item por pokemon
Estou meio que sem tempo, então vou te passar um rápido aqui !
Em data/actions/scripts crie um arquivo chamado boox.lua e cole isso:
Em data/actions/actions.xml cole essa tag:
Data/npc: Crie um arquivo com o nome do NPC que quiser, vou usar Ruby como exemplo, e dentro do arquivo cole isso: <?xml version="1.0" encoding="UTF-8"?> <npc name="Ruby" script="RUBYTRADE.lua" walkinterval="350000" floorchange="0" speed="0"> <health now="100" max="100"/> <look type="2335" head="20" body="100" legs="50" feet="0"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|.I need {help}...you help me?"/> </parameters> </npc> Em data/npc/scripts crie um arquivo chamado RUBYTRADE.lua e cole isso dentro: 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid msg = string.lower(msg) --------- local need = { {id = ID DAS ESSENCES, qt = 50}, --ID DAS ESSENCES ZARD, QUANTIDADE } local rewards = { {id = IDDABOX, qt = 1}, --charizard BOX } local stoFinish = 92120 -- USE ESSA OU A STORAGE QUE QUISER --------- if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') then if getPlayerStorageValue(cid, stoFinish) >= 500 then selfSay("Sorry, you already had done this quest.", cid) talkState[talkUser] = 0 return true end selfSay("Olá meu amigo, sou o NPC de trocas de Essences, me dê 50 Essences e lhe darei 1 Box que virá seu Pokemon! Diga YES para trocarmos.",cid) talkState[talkUser] = 1 return true elseif msgcontains(msg, 'yes') or msgcontains(msg, 'sim') and talkState[talkUser] == 1 then if getPlayerItemCount(cid, need[1].id) < need[1].qt then selfSay("Você não me trouxe todas as Essences...", cid) selfSay("Lembre-se, eu preciso de 50 Essences...", cid) talkState[talkUser] = 0 return true end for i = 1, #need do doPlayerRemoveItem(cid, need.id, need.qt) end for i = 1, #rewards do doPlayerAddItem(cid, rewards.id, rewards.qt) doPlayerAddExperience(cid, 0) end selfSay("Obrigado, tchau!", cid) setPlayerStorageValue(cid, stoFinish, 1) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) OBS: Não testei -
SkyLigh deu reputação a Bluester em [Resolvido] npc troca item por pokemon
Também estou sem tempo, por isso vou fazer um com box, se ele quiser, ele pega...
-
SkyLigh deu reputação a Bluester em [Resolvido] npc troca item por pokemon
pode ser por box ? por exemplo, você dá 50x Essence Zard por uma box que dá um Charizard...
-
SkyLigh recebeu reputação de naruto vida loka em Script Para Quest
Esse players anbu? são o que vips? se for passe a storage da vip.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.