Ir para conteúdo

Lyu

Membro
  • Registro em

  • Última visita

Tudo que Lyu postou

  1. Fala rapaziada, quanto tempo sem publicar algo aqui! Bom, hoje eu venho trazer um sisteminha que é bem utilizado atualmente. Estou falando o Death System! Porém, com algumas coisinhas a mais. Testado em OTX Server 8.60.. Como funciona? O Death System em alguns servidores possui um channel chamado "Mortes" ou "Death Channel", mas há alguns servidores que preferem que seja anunciado no default mesmo e a função é informar quem matou quem, ou quem foi morto por certo monstro. O que há de novo? Bom, agora quem matar x jogadores(configurável) e essa quantia for uma consecutiva, será anunciado isso : E se algum jogador derrotá-lo dentro a consecutiva, será anunciado isso : Vamos ao sistema : em data/XML/channels.xml, adicione isso : <channel id="15" name="Death Channel"/> em data/creaturescripts/creaturescripts.xml : <event type="death" name="deathchannel" event="script" value="deathchannel.lua"/> em data/creaturescripts/login.lua, adicione isso antes do último return true : registerCreatureEvent(cid, "deathchannel") em data/creaturescripts/scripts, crie um arquivo deathchannel.lua e cole isso dentro : -- Coded by Zoom.. local info, win, lose = "%s [Level: %s] foi mort%s pelo %s %s%s", "%s obteve %s frags seguidos após derrotar %s.", "%s acabou de impedir que %s fizesse uma sequência de %s frags seguidos." local frags, storage = {10, 15, 20, 25, 30, 35, 40, 45, 50}, 30045 function onDeath(cid, corpse, deathList) if(not isPlayer(cid)) then return true end local target = deathList[1] doCreatureSetStorage(target, storage, getCreatureStorage(target, storage) + (getCreatureStorage(target, storage) == -1 and 2 or 1)) for _, pid in ipairs(getPlayersOnline()) do doPlayerSendChannelMessage(pid, '', info:format(getCreatureName(cid), getPlayerLevel(cid), getPlayerSex(cid) == 1 and "o" or "a", isPlayer(target) and "player" or "monstro", getCreatureName(target), isPlayer(target) and " [Level: "..getPlayerLevel(target).."]." or "."), TALKTYPE_CHANNEL_ORANGE, 0xF) for _, frag in ipairs(frags) do if(getCreatureStorage(target, storage) == frag) then doPlayerSendChannelMessage(pid, '', win:format(getCreatureName(target), frag, getCreatureName(cid)), TALKTYPE_CHANNEL_MANAGEMENT, 0xF) end if(getCreatureStorage(cid, storage) >= frag) then doPlayerSendChannelMessage(pid, '', lose:format(getCreatureName(target), getCreatureName(cid), getCreatureStorage(cid, storage)+1), TALKTYPE_GAMEMASTER_CHANNEL, 0xF) end end end doCreatureSetStorage(cid, storage, 0) return true end Há uma única configuração, que é as consecutivas : local frags = {10, 15, 20, 25, 30, 35, 40, 45, 50} completou 10 frags? anuncia! e assim sucessivamente.. Créditos : EU
  2. local i = { ["01:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, ["02:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, ["04:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, ["06:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, ["08:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, ["10:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, ["12:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, ["14:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, ["16:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, ["18:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, ["20:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, ["22:00"] = {nome = "The Massive Dragon Invasion", pos = {x=90, y=189, z=7}, monster = {"1 Demon"}}, ["00:00"] = {nome = "Wolf", pos = {x = 33, y = 214, z = 7}, monster = {"1 Wolf", "1 Vegeta"}}, } function onTime() hours = tostring(os.date("%X")):sub(1, 5) local nMin = 1 -- tempo em minuto o monstro sumir. tb = i[hours] if tb then doBroadcastMessage("".. hours .. " - Nasceu um " .. tb.nome .. " em algum lugar do mapa ! Encontre-o !.") for _,x in pairs(tb.monster) do for s = 1, tonumber(x:match("%d+")) do doSummonCreature(x:match("%s(.+)"), tb.pos) addEvent(doRemoveCreature, nMin*60*1000, Monster) end end end return true end
  3. eu só estou tentando entender, como é que uma asiática foi parar nesse emprego [...]
  4. Lyu postou uma resposta no tópico em Playground (Off-topic)
    Fala pessoal, acho que poucos lembram de mim, mas só queria avisá-los que eu estou de volta à ativa. Sempre que der, irei ajudar os membros na Suporte de Scripts e também irei voltar a publicar alguns scripts feitos por mim. Ah, também não soube onde anunciar isto, então estou anunciando aqui mesmo na Playground. Obrigado e que eu seja bem vindo novamente!
  5. data/actions/actions.xml <action itemid="2352" event="script" value="itemteleport.lua"/> data/actions/scripts/itemteleport.lua local position = {x = 1000, y = 1000, z = 7} function onUse(cid, item) if(doTeleportThing(cid, position)) then doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doRemoveItem(item.uid, 1) end return true end Agora só basta você configurar o item que quer e a posição pra onde você vai.
  6. Lyu postou uma resposta no tópico em Suporte Tibia OTServer
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 56, 43, 36, 34) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat2, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat2, COMBAT_PARAM_AGGRESSIVE, 0) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, 56, 43, 36, 39) function onCastSpell(cid, var) doPlayerSendTextMessage(cid,27,"EFEITO MÁGICO: Cura sua life e mana múltiplas vezes (10x) durante 5 segundos. O cálculo de regeneração é de acordo com seu nível mágico.") for i = 1, 10 do addEvent(function() if(isCreature(cid)) then doCombat(cid, combat, var) doCombat(cid, combat2, var) end end, (i * 600) - 600) end return true end só trocar isso : addEvent(doCombat, (i * 600) - 600, cid, combat, var) addEvent(doCombat, (i * 600) - 600, cid, combat2, var) por isso : addEvent(function() if(isCreature(cid)) then doCombat(cid, combat, var) doCombat(cid, combat2, var) end end, (i * 600) - 600)
  7. Lyu postou uma resposta no tópico em Suporte Tibia OTServer
    testa assim : local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 28, 25, 27, 40) function onCastSpell(cid, var) doPlayerSendTextMessage(cid,27,"EFEITO MÁGICO: Cura sua mana múltiplas vezes (10x) durante 5 segundos. O cálculo de regeneração é de acordo com seu nível mágico.") for i = 1, 10 do addEvent(function() if(isCreature(cid)) then doCombat(cid, combat, var) end end, (i * 600) - 600) end return true end
  8. husahusa to ligado, eu também tive dificuldade com return. dá uma olhada nesse TÓPICO.
  9. Já tentou baixar essa dll chamada libGL.dll?
  10. o return serve para retornar um valor a partir daquela parte do script.
  11. function onStepIn(cid, item, position, fromPosition) local storage = 18597 if getPlayerStorageValue(cid, storage) <= 0 then doPlayerSendCancel(cid, "You're not a VIP player.") doTeleportThing(cid, fromPosition) doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) return true else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Welcome to the VIP Area!") doSendMagicEffect(getThingPos(cid), 14) end return true end
  12. creio que seja para encher '1 quinze ávos' do life total do jogador. Ou seja, em 15 segundos é tempo suficiente para healar todo o life e toda a mana do jogador.
  13. procure em data/creaturescripts/scripts/login.lua
  14. "Olá caro jogador.." manda um print dessa mensagem se der.
  15. exatamente como o jvcasarin disse! porém caso você ainda encontre dificuldades, mande o script aqui que nós lhe ensinaremos como editar.
  16. Olá, hoje venho trazer um script que permite usar efeitos mágicos e textos animados em um só script sem ter que ficar criando vários arquivos .LUA com os nomes (texto, texto1, texto2, effect1, tpeffects2) e etc.. Bom, em data/globalevents/globalevents.xml adicione isso : <globalevent name="effects" interval="1500" script="effectandtext.lua"/> Agora em data/globalevents/scripts crie um arquivo effectandtext.lua, abra-o e adicione isso : local positions = { ["Templo"] = {pos = {x = 1097, y = 1062, z = 7}, color = {205, 210}, effect = {}}, ["Teleports"] = {pos = {x = 1096, y = 1063, z = 7}, color = {205, 210}, effect = {39}}, ["Area Vip"] = {pos = {x = 1096, y = 1063, z = 7}, color = {205, 210}, effect = {39, 10}} } function onThink(cid, interval, lastExecution) for t, pos in pairs(positions) do for _, effect in ipairs(pos.effect) do if(#pos.effect > 0) then doSendMagicEffect(pos.pos, effect) end end doSendAnimatedText(pos.pos, t, #pos.color > 0 and pos.color[math.random(#pos.color)] or 215) end return true end "Aah mas eu n quero que faça efeito em baixo do texto, blabla.." Simples : em effect, deixe a tabela vazia. Exemplo : ["Templo"] = {pos = {x = 1097, y = 1062, z = 7}, color = {205, 210}, effect = {}} ou você pode usar mais de um efeito no mesmo texto, basta você ir adicionando. Exemplo : effect = {30, 40, 50} se você não declarar as cores em 'color = {}', a cor padrão será branca. créditos : Halls Santos
  17. acontece isso se você remover a TAG no talkactions.xml desse teu script?
  18. de nada! modifiquei seu script aqui caso você queira : function onStepIn(cid, item, position, fromPosition) local storage = 18597 if getPlayerStorageValue(cid, storage) <= 0 then doPlayerSendCancel(cid, "You/'re not a VIP player.") doTeleportThing(cid, fromPosition) doSendMagicEffect(position, 13) else doPlayerSendTextMessage(cid, "Welcome to the VIP Area!", 27) doSendMagicEffect(position, 14) end return true end
  19. É que tipo: o else faz parte do if. Então se o valor da storage for <(menor) ou =(igual) a 0, será executado os códigos logo abaixo do if : doSendPlayerCancel(cid, "You/'re not a VIP player.") doTeleportThing(cid, fromposition) doSendMagicEffect(position, 13) mas se o valor da storage for >(maior) que 0, o código a cima será ignorado e então o será executado os códigos depois do else : doSendTextMessage(cid, "Welcome to the VIP Area!", 27) doSendMagicEffect(position, 14) Tendeu? rs, no começo é meio chato de decorar mas você vai ver muito isso pela frente então vai se acostumar boa noite!
  20. Você esqueceu de uma coisinha aqui nessa parte : if getPlayerStorageValue(cid) <= 0 then que no caso seria assim : if getPlayerStorageValue(cid, storage) <= 0 then e você pode remover isso : getPlayerStorageValue(cid) == getStorageValue(storage) then haha, seja bem vindo ao mundo dos scripters.
  21. Lyu postou uma resposta no tópico em Suporte Tibia OTServer
    um simples erro de digitação. Porém para consertármos, você tem que nos mostrar o script. vai em data/lib e abre o arquivo configuration.lua
  22. Obrigado pela observação! sobre os () já é mania minha de programar, então eu sempre coloco pro script ficar bonitinho. Mas sobre o resto, foi que eu fiz na pressa e acabei nem testando
  23. Dá algum erro na distro?
  24. Testa ai, qualquer coisa me diz.. Abre teu remeres e na porta que desejas editar, dê um duplo click e adicione a unique id 2500; agora em actions.xml adicione isso : <action uniqueid="2500" event="script" value="sworddoor.lua"/> crie um arquivo sworddoor.lua e adicione isso dentro : function onUse(cid, item, fromPosition, itemEx, toPosition) if(item.uid == 2500 and getPlayerSkillLevel(cid, SKILL_SWORD) < 20) then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need 20 sword fighting to open this door.") end end
  25. Lyu postou uma resposta no tópico em Playground (Off-topic)
    Foto de perfil <<<<<<<<<<

Informação Importante

Confirmação de Termo