Ir para conteúdo

Vodkart

Herói
  • Total de itens

    3406
  • Registro em

  • Última visita

  • Dias Ganhos

    112

Histórico de Reputação

  1. Upvote
    Vodkart recebeu reputação de Napolitano em [Demo] Auction Npc   
    Olá fiz este tópico para mostrar um npc que eu estive desenvolvendo hoje, é um npc de auction, vou explicar com algumas screen's:
     
    *Suporta servidores Sqlite e MySql*
     
    O Npc basicamente funciona da seguinte maneira, você "deposita" alguns items neste npc e durante "X" dias ele vende para você, claro que o npc irá cobrar "Y" preço pelo serviço:
     
    por exemplo vou depositar no npc 2 solar axe:
     

    (No meu caso ele vai me vender o item até o dia 20 de setembro como está ali na imagem)
     
    [+] Além disso você pode verificar os items que você depositou no npc:
     

     
    [+] Então para comprar basta falar dizer trade e selecionar o tipo de item que você quer comprar que o próprio npc irá selecionar para você:
     

     
    [+] Como eu tinha colocado somente 2 solar axe e se algum player exceder esse limite retorna uma mensagem:
     

     
    [+] Caso algum player compre o seu item você é avisado tanto offline como online:
     

     
    (Neste caso eu comprei as 2 solar axe que deu um total de 300000)
     
    [+] Para remover o dinheiro recebido pelo item basta ir no npc:
     

     
    [+] Ah Vod, mas se eu não vender os items oque acontece com eles? eles são enviados para o depot e você é avisado:
     

     
     
    Por enquanto é só isso, eu estava colocando mais uns items no npc para ver como fica:
     

    obs: tem 2 demon armor porque são de players diferentes xD
  2. Upvote
    Vodkart recebeu reputação de danitero15 em [Global Events]Msg Dos 5 Tops Do Server No Broadcast   
    function onThink(cid, interval, lastExecution) local str,top = "Top Level Server\n",5 local query = db.getResult("SELECT `name`, `level` FROM `players` WHERE `id` > 6 AND `group_id` < 2 ORDER BY `level` DESC, `name` ASC;") if (query:getID() ~= -1) then k = 1 while true do str = str .. "\n " .. k .. ". "..query:getDataString("name").." - [" .. query:getDataInt("level") .. "]" k = k + 1 if not(query:next()) or k > top then break end end query:free() end return doBroadcastMessage(str) end
  3. Upvote
    Vodkart recebeu reputação de Kevin vem 69 em Simple Task 3.0   
    Mods:
     
     
     
     
    NPC
     
     
     
    Como configurar?
     
     
  4. Thanks
    Vodkart recebeu reputação de M i s s em Matar Monstro Abrir Tp, Remover Parede, Ganhar Storage   
    Creditos:
    Vodkart
    Kydrai
     
    fala galerinha resolvi posta alguns script que acontece quando o player mata algum monstro ...
     
    o primeiro é o script que acontece quando voce mata um Monstro abre o teleport.
    o segundo é matar o monstro e sumir a parede por algum tempo.
     
    Obs: o Nome do monstro deve ser colocado com Letra Maiuscula.
     
     
    [ Matar monstro e abrir Teleport ]
    creaturescript\script
     
     
     
     
     
     
    [ Matar Monstro e parede sumir por determinado tempo ]
     
    creaturescript\script
     
     
     
    [ Matar Monstro e ser teleportado ]
     
     
     
     
     
    [ Matar Monstro e Ganhar Storage ]
     
     
  5. Upvote
    Vodkart recebeu reputação de Miinerva em [ Talkaction ]Teleport Por Talk. Para Vip   
    usa esse:
     
     
     
  6. Upvote
    Vodkart recebeu reputação de Zaruss em [Gfs] Guild Frag System   
    Antes de mais nada execute essas querys no seu banco de dados

    ALTER TABLE `guilds` ADD `frags` INT(11) NOT NULL DEFAULT 0; ALTER TABLE `guilds` ADD `acesstime` INT(15) NOT NULL DEFAULT 0;
     
    Não sabe executar a query? abra o spoiler e aprenda!
     
     
     
     
     
    Sistema
     
     
     
     
     
    Por Mod
     
     
     
     
    Npc (obs: o NPC funciona caso você use MOD tbm)
     
     
     
     
     
     
    Configuração
     
     
  7. Upvote
    Vodkart recebeu reputação de EddyHavaiano em [Gfs] Guild Frag System   
    Antes de mais nada execute essas querys no seu banco de dados

    ALTER TABLE `guilds` ADD `frags` INT(11) NOT NULL DEFAULT 0; ALTER TABLE `guilds` ADD `acesstime` INT(15) NOT NULL DEFAULT 0;
     
    Não sabe executar a query? abra o spoiler e aprenda!
     
     
     
     
     
    Sistema
     
     
     
     
     
    Por Mod
     
     
     
     
    Npc (obs: o NPC funciona caso você use MOD tbm)
     
     
     
     
     
     
    Configuração
     
     
  8. Upvote
    Vodkart recebeu reputação de roriscrave em [Arquivado]VIP Em OTServers: Necessidade ou Lucro?   
    Primeiro temos que avaliar o servidor,o histórico dele,se é um projeto sério,há quanto tempo está online,por que pagarei vip? quais os benefícios disso?
    Somente depois de pensar bastante é hora de quebrar o porquinho para ir gastar o dinheiro que o papai te dá em algo duvidoso,porque de qualquer forma sempre será um servidor private(pirata),e na politica deles não poderão devolver seu dinheiro caso o servidor vir a fechar um dia por motivos que for.
     
    Mas porque sistemas vips em servidores?
    Está pergunta é bem óbvia,todos jogos online sempre tem um sistema "premium","vip" que traz junto um diferencial dos outros players que usufruem desses sistemas,seja com itens,casas,moedas,lugares,houses,etc... uma infinidade de benefícios,e é justo porque manter o servidor online requer vários upgrades,dedicados,equipe que se dividem em vários setores, e isso não cai no céu,não é de graça.
    Creio eu que ninguém vai abrir um jogo para ter prejuízo e tirar do próprio bolso para fazer a alegria da criançada,até palhaço recebe salário.
     
    O que acontece nos servidores hoje em dia é que falta foco e comprometimento,muitos projetos nem na metade chegam,alguns se ocupam com estudos,trabalhos e deixam de levar o projeto a sério,atrasando e roubando a esperança do sonho de ter um grande servidor,mas não basta sonhar,é preciso estabelecer prioridades para executar essas metas,e isso só vai ocorrer se ambas as partes se comprometer com a sua equipe.
  9. Upvote
    Vodkart recebeu reputação de dragonfight em [Gfs] Guild Frag System   
    Antes de mais nada execute essas querys no seu banco de dados

    ALTER TABLE `guilds` ADD `frags` INT(11) NOT NULL DEFAULT 0; ALTER TABLE `guilds` ADD `acesstime` INT(15) NOT NULL DEFAULT 0;
     
    Não sabe executar a query? abra o spoiler e aprenda!
     
     
     
     
     
    Sistema
     
     
     
     
     
    Por Mod
     
     
     
     
    Npc (obs: o NPC funciona caso você use MOD tbm)
     
     
     
     
     
     
    Configuração
     
     
  10. Upvote
    Vodkart recebeu reputação de otnice em Battlefield Event!   
    Mapa feito por AnneMotta:
     
    Mapa Battlefield.rar
     
    scan: https://www.virustot...sis/1346548669/
     
    Imagens do mapa:
     
     
     
     
    Descrição:
     
    - O evento é automático e acontece em determinado dia e hora da semana
    - Logo após é aberto um teleport então apenar um número limitado de players entra no evento
    - São formados por dois times, os "Black Assassins" e os "Red Barbarians"
    - Os times são balanceados automaticamente, quando o último jogador entra, esse teleport é fechado e depois de 5 minutos o evento começa, os 5 minutos são para os players ter tempo de planejar um ataque.
    - O sistema tem por finalidade matar todos do time inimigo, e os players que sobreviverem recebem um prêmio.
     
    Bônus:
     
    - Durante o evento é mostrado na tela somente dos jogadores que estão no evento um placar de times.

    - Até o último player entrar no evento, ficam mandando broadcast dizendo quanto players faltam para dar inicio ao jogo.

    - Se o evento abrir e não atingir a meta de players colocada, o evento é finalizado e os players voltam para o templo.

     
     
     
    Lembre-se:
     
    - De colocar Pvp Tool na área
    - De colocar área NoLogout
     
     
    Imagens:
     
     
     
     
     
    Instalação:
     
     
    Data/Lib
     
     
     
    Data/CreatureScript
     
     
     
    Data/Globalevents
     
     
     
    Data/Movements
     
     
     
     
    Como configurar:
     
    Configuração dos Times:
     
     
     
    Configurar Datas do evento:
     
     
     
     
    Configuração Paredes:
     
     
  11. Upvote
    Vodkart recebeu reputação de AnneMotta em Acabar premium ir para Templo   
    function onLogin(cid) if isPremium(cid) then setPlayerStorageValue(cid, 9898, 1) elseif getPlayerStorageValue(cid, 9898) == 1 and not isPremium(cid) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerPopupFYI(cid, "Sua Premium Account acabou.") setPlayerStorageValue(cid, 9898, -1) end return true end
  12. Upvote
    Vodkart deu reputação a Omega em Comando /ban v.2.0   
    Informações
    Baseado no antigo /ban, mas esse comando irá banir apenas contas. Ou seja, você não poderá banir jogadores separados(para isso use o comando v.1.0) nem contas. Existem algumas maneiras de usá-lo:
    !ban nome_do_jogador, x Você irá banir a conta do jogador por um número x de dias. O comentário padrão é "no comment was added" e a razão será "destructive behaviour".
    !ban nome_do_jogador, x, porque ele era feio Você irá banir a conta do jogador por um número x de dias. O comentário será "porque ele era feio" e a razão será padronizada (destructive behaviour)
    !ban nome_do_jogador, x, comentário, 1-4 Tudo acima, mas com a razão especificada (de 1 a 4). Você pode conferir as razões disponíveis abaixo:
    !ban reasons Para saber quais as razões possíveis use esse comando. O resultado será 1 - unsuitable name, 2 - spamming, 3 - use of unnoficial software, 4 - destructive behaviour.
    !unban nome_do_jogador Desbane a conta do jogador, permitindo-o logar novamente.
    OBS.: com esse comando você pode banir jogadores tanto online quanto offline.
     
     
    Código
    Salve esse código como banunban.lua em talkactions/scripts:
     
     
     
    E adicione essa tag em talkactions.xml:
    <talkaction log="yes" words="!ban;!unban" access="5" event="script" value="banunban.lua"/> Testado em OTserver 8.6 - banco de dados SQLite.
  13. Upvote
    Vodkart recebeu reputação de kaizy536 em Talkaction !vida   
    http://www.xtibia.com/forum/topic/219933-comando-vida/
  14. Upvote
    Vodkart recebeu reputação de KincaJr em [Mod] Automatic Raids [Dia E Hora Marcada]   
    Automatic Raids.xml

    <?xml version="1.0" encoding="UTF-8"?> <mod name="Automatic Raids" version="1.0" author="Vodkart And xotservx" contact="xtibia.com" enabled="yes"> <config name="raids_func"><![CDATA[ days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 15}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 20} }, ["Sunday"] = { ["10:08"] = {nome = "Demon", pos = {fromPosition = {x=202, y=11, z=7},toPosition = {x=204, y=12, z=7}}, m = {"1 Demon"}, Time = 15}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 20} } } ]]></config> <globalevent name="AutomaticRaids" interval="60" event="script"><![CDATA[ domodlib('raids_func') function onThink(interval, lastExecution) if days[os.date("%A")] then hours = tostring(os.date("%X")):sub(1, 5) tb = days[os.date("%A")][hours] if tb then function removeCreature(tb) for x = ((tb.pos.fromPosition.x)-10), ((tb.pos.toPosition.x)+10) do for y = ((tb.pos.fromPosition.y)-10), ((tb.pos.toPosition.y)+10) do local m = getTopCreature({x=x, y=y, z= tb.pos.fromPosition.z}).uid if m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end doBroadcastMessage("The invasion of " .. tb.nome .. " started") for _,x in pairs(tb.m) do for s = 1, tonumber(x:match("%d+")) do pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z} doSummonCreature(x:match("%s(.+)"), pos) end end addEvent(removeCreature, tb.Time*60*1000, tb) end end return true end ]]></globalevent> </mod>
     
     
    Configuração:
     

    days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 1}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 2} }, ["Tuesday"] = { ["10:44"] = {nome = "Demon", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}}, m = {"5 Demon", "8 Fire Devil"}, Time = 1}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 2} } }
     

    ["DIA"] = { ["HORA DA INVASÃO"] = {nome = "NOME DA INVASÃO", pos = {começo e final da área}, monster = {"MONSTROS"}, Time = para remover os monstro} }
     
    O dia da invasão é colocada entre " " e somente dia em inglês e a primeira letra maiúscula, exemplo:

    "Saturday"
     
     
    Depois são as hora da invasão, que é colocada entre " " e somente a hora e minuto, segundos não precisa exemplo:

    "15:00"
     
     
    As Posições estão entre { } adicionando as posições x, y e z, é o começo e final da área exemplo:
     

    pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}
     
    fromPosition -- começo da área onde vai acontecer a raid
    toPosition -- final da área onde vai acontecer a raid
     
    Os monters tem um modo especial de configurar, vc coloca entre { }, e cada monstro entre " ", e entre as " " vc adiciona "QUANTIDADE MONSTRO", e para adicionar mais tipos de monstro se separa por virgulas, exemplo:

    {"40 Water Elemental", "5 Cyclops"}
     
    Time é uma função extra, é para caso ninguém participe do evento os monstros não fiquem pelo mapa, e é em minutos, exemplo:
     

    Time = 15
  15. Upvote
    Vodkart deu reputação a Maenilse em EKZ No LOL @   
    vao jogar um jogo descente bando de preto, joguem mortal kombat, mid night club, sei lah, vai jogar jogo bom ...
  16. Upvote
    Vodkart recebeu reputação de williamserravalle em Double Exp Para Vip   
    servidos testado 8.54 ~ 8.60
     
    Quando você compra vip você pode aumentar a taxa de exp em percent que ele irá receber a mais,como se fosse um bonus...
     
    a taxa se modifica aqui:
     
    local rate = 1.5 -- 50%
     
    vermelho:representa o quanto irá subir em %
    caso fosse 20% seria
    local rate = 1.2
    e por ai vai....
     
     
    [ Double exp para o Perfect Vip System ] :
     
     
     
     
    [ Double exp para o Vip System By Account V1.0 ] :
     
     
     
     
    [ Double exp para o Vip System By Mock] :
     
     
  17. Upvote
    Vodkart recebeu reputação de Shadobr em Double Exp Para Vip   
    @up
     
     
     
  18. Upvote
    Vodkart recebeu reputação de Rikutachimoto em [ Talkaction ]Teleport Por Talk. Para Vip   
    script é simples,jogadores vip poderão ser teleportado para os lugar por talkactions basta usar o comando
     
     
     
    teleportvip.lua

    --[[script By Vodkart]]-- function onSay(cid, words, param) local config = { pz = true, -- players precisam estar em protection zone para usar? (true or false) battle = true, -- players deve estar sem battle (true or false) custo = true, -- se os teleport irão custa (true or false) need_level = true, -- se os teleport irão precisar de level (true or false) premium = true -- se precisa ser premium account (true or false) } --[[ Config lugares]]-- local lugar = { ["depot"] = { -- nome do lugar pos = {x=129, y=54, z=6},level = 5,price = 1000}, ["templo"] = { -- nome do lugar pos = {x=160, y=54, z=7},level = 10, price = 2000}, ["arena"] = { -- nome do lugar pos = {x=125, y=351, z=9},level = 15,price = 3000}, ["area vip"] ={ -- nome do lugar pos = {x=280, y=87, z=4},level = 20,price = 4000} } --[[ Lista de Viagem (Não mexa) ]]-- if (param == "lista") then local str = "" str = str .. "lista de viagem :\n\n" for name, pos in pairs(lugar) do str = str..name.."\n" end str = str .. "" doShowTextDialog(cid, 6579, str) return TRUE end local a = lugar[param] if not(a) then doPlayerSendTextMessage(cid, 22, "desculpe,este lugar não existe") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE elseif config.pz == true and getTilePzInfo(getCreaturePosition(cid)) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"você precisa estar em protection zone pra poder teleportar.") return TRUE elseif config.premium == true and not isPremium(cid) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players com premium account podem teleportar.") return TRUE elseif config.battle == true and getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar sem battler pra poder teleportar.") return TRUE elseif config.need_level == true and getPlayerLevel(cid) < a.level then doPlayerSendTextMessage(cid, 22, "Desculpe,Voce não tem level. voce precisa "..a.level.." level ou mais para ser teleportado.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE elseif config.custo == true and doPlayerRemoveMoney(cid, a.price) == FALSE then doPlayerSendTextMessage(cid, 22, "Desculpe,voce nao tem dinheiro suficiente. Voce precisa "..a.price.." gp para ser teleportado.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE end doTeleportThing(cid, a.pos) doSendMagicEffect(a.pos, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, 22, "" .. getPlayerName(cid) .. " foi teleportado para: \n " .. param .. ".") return TRUE end
     
    em talkactions.xml adicione

    <talkaction words="!tp" script="teleportvip.lua"/>
  19. Upvote
    Vodkart deu reputação a DaniloARodrigues em Adicionar Items ao Depot do Jogador[Online/Offline]   
    Coloquei ele e tal, até funfa os comandos e diz que add, mas quando abro o depot ele não tem nada '-'
     
    @edit
     
    Retiro o que disse Funfou aqui xD Valeu mesmo
  20. Upvote
    Vodkart recebeu reputação de gacjogos em [Talk] Deathlist [Fixed/no Crash]   
    Atualizado V1.0:

    Mostra últimas mortes do servidor:


    você pode usar o comando !deathlist NOME
    ex: !deathlist Carlin:





    in your db execute this query:


    CREATE TABLE death_list ( id INTEGER NOT NULL, player_id INTEGER NOT NULL, date INTEGER NOT NULL, level INTEGER NOT NULL, killer_name INTEGER NOT NULL, PRIMARY KEY ( id ) );
    creaturescript

    death_list.lua
    function onDeath(cid, corpse, deathList) local str = "" for _, pid in ipairs(deathList) do if isCreature(pid) == true then str = str.."".. (str == "" and "" or ",") ..""..getCreatureName(pid) else str = str.."".. (str == "" and "" or ",") .." a field item" end end str = str.."." death = str .. " ".. (getPlayerBlessing(cid, 5) and "[Blessed]" or getPlayerSlotItem(cid, 2).itemid == 2173 and "[AOL]" or "") db.executeQuery("INSERT INTO `death_list` (`player_id`, `date`, `level`, `killer_name`) VALUES ('".. getPlayerGUID(cid).."', '".. os.time() .."', '".. getPlayerLevel(cid) .."', '".. death .."');") return true end
    creaturescript.xml
    <event type="death" name="DeathList" event="script" value="death_list.lua"/>
    creaturescript/script/login.lua
    registerCreatureEvent(cid, "DeathList")
    talkactions

    deathlist.lua
    limit = 5 function onSay(cid, words, param, channel) str = "" if param == "" then local qry = db.getResult("SELECT `player_id`, `date`, `level`, `killer_name` FROM `death_list` ORDER BY `date` DESC LIMIT 0, " .. limit) if(qry:getID() ~= -1) then repeat str = str .."\n "..os.date("%d %B %Y %X ", qry:getDataInt("date")).." "..getPlayerNameByGUID(qry:getDataString("player_id")).." died at level "..qry:getDataInt("level").." by:\n"..qry:getDataString("killer_name") until not(qry:next()) qry:free() else str = "Não há mortes no servidor." end doPlayerPopupFYI(cid, "Last Deaths:\n\n" .. str) return true end local getGuid = getPlayerGUIDByName(param:lower()) if not getGuid then doPlayerSendCancel(cid, "Este Player não existe.") return true end local qry = db.getResult("SELECT `id`, `date`, `level`, `killer_name` FROM `death_list` WHERE `player_id` = " .. getGuid .." ORDER BY `date` DESC LIMIT 0, " .. limit) if(qry:getID() ~= -1) then repeat str = str .."\n "..os.date("%d %B %Y %X ", qry:getDataInt("date")).." died at level "..qry:getDataInt("level").." by:\n"..qry:getDataString("killer_name") until not(qry:next()) qry:free() else str = "Não há mortes." end doPlayerPopupFYI(cid, "Last Deaths of: " .. param .. ".\n\n" .. str) return true end
    talkactions.xml
    <talkaction words="!deathlist" script="deathlist.lua"/>
  21. Upvote
    Vodkart deu reputação a meubk em Evil Spirit v2.0   
    - versão sem bugs e você pode configurar do teu jeito
    local configSpell = { exaust = 40, -- tempo de exaustão st = 19020, -- não mexe level = 150, -- level para usar min = 1000, -- ataque minimo max = 2000, -- ataque maximo voc = {1, 5}, -- vocações mana = 800, -- mana } -- SPELL EVIL SPIRIT BY: XOTSERVX -- function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function getPosDirs(p, dir) return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function posIgual(pos1, pos2) return pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z and true or false end effect = 34 distance = 31 damage = COMBAT_DEATHDAMAGE evilspirit = { walk = function (cid, min, max, pos, rounds, ultimapos) if rounds == 0 then return true end if not isCreature(cid) then return true end posdisp = {} for _, dir in pairs({1, 5, 7, 3}) do if isWalkable(getPosDirs(pos, dir)) and not posIgual(getPosDirs(pos, dir), getThingPos(cid)) and not posIgual(getPosDirs(pos, dir), ultimapos) then table.insert(posdisp, getPosDirs(pos, dir)) end end if #posdisp < 1 then return true end posesc = posdisp[math.random(1, #posdisp)] ultimapos = pos doSendDistanceShoot(pos, posesc, distance) if min > 0 then min = -min max = -max end doAreaCombatHealth(cid, damage, posesc, 0, min, max, effect) addEvent(evilspirit.walk, 140, cid, min, max, posesc, rounds - 1, ultimapos) end } function onSay(cid, word) if getPlayerAccess(cid) < 3 then if getPlayerLevel(cid) < configSpell.level then return doPlayerSendCancel(cid, "You need level " .. configSpell.level .. " to use this spell.") end if not isInArray(configSpell.voc, getPlayerVocation(cid)) then return doPlayerSendCancel(cid, "Your vocation dont use this spell.") end if exhaustion.check(cid, configSpell.st) then return doPlayerSendCancel(cid, "You is exhausted.") end if getCreatureMana(cid) < configSpell.mana then return doPlayerSendCancel(cid, "You dont have mana.") end doCreatureAddMana(cid, -configSpell.mana) exhaustion.set(cid, configSpell.st, configSpell.exaust) end evilspirit.walk(cid, configSpell.min, configSpell.max, getThingPos(cid), 40, {x=1, y=1, z=1}) for i = 1, 13 do addEvent(evilspirit.walk, i * math.random(300, 500), cid, configSpell.min, configSpell.max, getThingPos(cid), 40, {x=1, y=1, z=1}) end return true end talkaction:
    <talkaction words="evil spirit" filter="word-spaced" event="script" value="evilspirit.lua"/>
  22. Upvote
    Vodkart deu reputação a Killua em [Blood Castle] Evento Otimizado![12/04/14]   
    Hehe q isso, é bom ele ser revivido.
     
    Muito obrigado pelos elogios, amigo
  23. Upvote
    Vodkart deu reputação a Killua em [Blood Castle] Evento Otimizado![12/04/14]   
    Últimas atualizações:
    16/12/2013:

    [ATUALIZADO 12/04/2014]

    Introdução:
     
     
    Eai gente, vcs conhecem o evento Blood Castle que tem no jogo MU? Então, eu resolvi criar esse evento para OpenTibia e ficou bem legal
     
     
     
     
    Informações:  
     
    OBS: NÃO é obrigatório o uso do mapa que vou por aqui, ele serve somente para exemplo.
     
    #Dica: Acho que fica legal o premio do evento ser um item que da double exp por um tempo.
     
    Atualização:

    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ático:  
    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. Download do mapa exemplo: Blood Castle.rar
  24. Upvote
    Vodkart recebeu reputação de Soulviling em Remove Item [Action]   
    @UP
     
    Se você usar essa função e o item não estiver com jogador, digamos no chão, quando ele clicar vai retornar um erro porque não vai pode remover o item.
     
     

    function onUse(cid, Item, fromPosition, itemEx, toPosition) doTeleportThing (cid, {x=1048,y=1053,z=7}) doRemoveItem(item.uid) return true end
  25. Upvote
    Vodkart recebeu reputação de M i s s em Bau que venha itens aleatorios? REP+   
    faltou usar o 'return' nas mensagens
     
     
    function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { s = 11128, -- storage level = 50, -- level minimo time = 60, -- tempo em minutos para voltar a abrir a chest item = {{2160, 1},{2152, 25},{2148, 50} } -- items sortiados(pode adicionar mais) } if getPlayerLevel(cid) < config.level then return doPlayerSendCancel(cid, "Você deve ter pelo menos level ".. config.level .." para abrir a Chest.") elseif getPlayerStorageValue(cid, config.s) >= os.time() then local minutos = math.floor((getPlayerStorageValue(cid, config.s) - os.time())/(60)) return doPlayerSendCancel(cid, "Você deve esperar ".. (minutos < 0 and 0 or minutos) .." minutos para voltar a abrir o Bau.") end local r = math.random(1, #config.item) doPlayerAddItem(cid, config.item[r][1], config.item[r][2]) setPlayerStorageValue(cid, config.s, os.time()+config.time*60) return true end
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...