Ir para conteúdo

Demonbholder

Infante
  • Total de itens

    1551
  • Registro em

  • Última visita

  • Dias Ganhos

    24

Tudo que Demonbholder postou

  1. function getGuildName(id) if type(id) ~= "number" then return "[No owner]" end local daa = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = "..id..";") for c, d in pairs(daa) do if type(d) == "number" then return daa:getDataString("name") end end return "[No owner]" end Fiz a função pra ti. Vai retorna string de qualquer jeito então deve funcionar.
  2. Ontem:
    http://www.xtibia.com/forum/topic/156247-funcao-dostoragecountstorage-guid-amount-max-delay/
    Ante ontem:
    http://www.xtibia.com/forum/topic/156178-duelo-de-summons/
    To levando a colaboração nas costas. Até mais.
  3. function onThink(interval, lastExecution) local pla = { {x = 17, y = 223, z = 7}, {x = 18, y = 223, z = 7}, {x = 17, y = 224, z = 7}, {x = 18, y = 224, z = 7}, {x = 17, y = 225, z = 7}, {x = 18, y = 225, z = 7}, {x = 17, y = 226, z = 7}, {x = 18, y = 226, z = 7}, {x = 17, y = 227, z = 7}, {x = 16, y = 224, z = 7}, {x = 15, y = 223, z = 7}, {x = 23, y = 227, z = 7}, {x = 22, y = 226, z = 7}, {x = 21, y = 225, z = 7}, {x = 22, y = 225, z = 7}, {x = 23, y = 225, z = 7}, {x = 21, y = 221, z = 7}, {x = 22, y = 221, z = 7}, {x = 21, y = 222, z = 7}, {x = 22, y = 222, z = 7}, {x = 23, y = 223, z = 7}, } for _, pos1 in pairs(pla) do doSendMagicEffect(pos1,40) end end Isso é usar looping.
  4. Bom tutorial, bem formatado, com imagem. Aprovado! Obrigado por colaborar com o XTibia.
  5. Demonbholder

    Me Revelando

    Se revelando? Lol cara, todo mundo já sabia. Título do tópico fail, troca.
  6. Demonbholder

    Go/back (Heal Poke)

    eu ja postei o script corrigido, abra o spoiler.
  7. Faaala pessoal, tudo bem? Fiz uma função hoje a tarde a pedido de um amigo, e também vi que muita gente pedia algo assim, logo eu resolvi faze-la. Como funciona: A função faz um storage aumentar de tanto em tanto até um certo valor de tantos em tantos segundos. Você deve usar a função de seguinte maneira: doStorageCount(storage, guid, amount, max, time) Azul: Escolha um storage. Exemplo: 40000 Vermelho: Guid do jogador, ou seja, o número dele na database. Caso o jogador esteja online, o guid pode ser descoberto a partir da função getPlayerGUID(cid) Verde: Escolha de quanto em quanto o storage vai aumentar/diminuir. Laranja: Escolha o máximo que o storage vai chegar. Cinza: Escolha de quanto em quanto tempo vai aumentar/diminuir o storage. *Sim, você pode usar número negativos! OBS: O storage vai partir do número 0. Função: function doStorageCount(storage, guid, count, max, time, twi) cid = nil if (type(storage) or type(guid) or type(count) or type(max) or type(time)) ~= "number" or time <= 0 then return error("Wrong param.") end if isOnline(guid) then for _, pid in pairs(getPlayersOnline()) do if getPlayerGUID(pid) == guid then cid = pid break end end alfa = twi == 1 and getPlayerStorageValue(cid, storage) or 0 setPlayerStorageValue(cid, storage, alfa + count) else beta = twi == 1 and tonumber(db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = ".. guid .." AND `key` = ".. storage ..";"):getDataString("value")) or 0 db.executeQuery("UPDATE `player_storage` SET `value` = ".. beta + count .." WHERE `player_id` = ".. guid .." AND `key` = ".. storage ..";") end local data = isOnline(guid) and alfa or beta if math.abs(data) + math.abs(count) < math.abs(max) then addEvent(doStorageCount, time*1000, storage, guid, count, max, time, 1) end return TRUE end OBS: twi não é usado ao usar a função, apenas no addEvent da própria função. Exemplo de uso: function onSay(cid, words, param) return TRUE, doStorageCount(40000, getPlayerGUID(cid), 2, 10, 1) end Vai ser executada assim: Segundos Valor Inicio 0 1 2 2 4 3 6 4 8 *Cuidado para não usá-la duas vezes antes dela finalizar o máximo, pois pode causar bugs. Bom, então é isso galera, espero que usem. Até mais.
  8. Demonbholder

    Go/back (Heal Poke)

    Era elseif ao invés de if rs.
  9. @off não tem nenhuma chance de tu voltar? De repente se vocês conversarem direito...
  10. Caro joao, é sim permitido divulgar seus projetos de OtServer no XTibia, nesta seção. Você postou seu pedido em seção incorreta, vou requisitar para que movam. (Pedidos de Design)
  11. Não tem o que mudar rs. O script faz o que você pediu. Troca dois jogadores de lugar. Exemplo: WORDS Demonbholder. Troca você e o demonbholder de lugar. Agora eu fui ver e tem um erro na TAG, vou arrumar. --- Edit: Arrumado.
  12. Melhorei um pouco o script, coloquei um efeitos, mudei certas funções e diminui o !summon, agora está mais "usável". Pretendo adicionar novos monstros e colocar uma fórmula na recompensa hoje a tarde. Mas é claro que vocês mesmos podem adicionar novos monstros como mostra o spoiler. Até mais.
  13. É que você usou a função mais de 20 vezes, usando os loopings podia-se usar apenas uma vez.
  14. Tem que aprender a usar os loopings para melhorar seus scripts.
  15. Não parceiro, neste sistema você limita os monstros a serem sumonados por vitórias e qualquer monstro pode ser sumonado contanto que você tenha a quantidade de vitórias necessárias. Você também não participa da luta, apenas os summons, enquanto isso o jogador fica só assistindo. Fora que você ganha uma recompensa após a luta, o vencedor é removido, e assim outro jogo pode ser iniciado.
  16. Faaala galerinha, tranquilo? Esses dias eu estava conversando com um membro aqui do XTibia, e, quase sem querer, ele me deu uma idéia! Não é muito util, mas pode melhorar a diversão do seu servidor, vamos ver o que vocês acham... Como funciona: Dois jogadores devem ir a dois extremos de um local, lá, ao usar o comando !start o jogo começa. Após usado este comando, uma mensagem irá informar que o jogo começou. O próximo passo e usa comando !summon junto com o nome de uma criatura. Você é que escolhe quais criaturas podem ser usadas e quantas vitórias são necessárias para poder usá-las! Bom, eu fiz em mod para facilitar, caso alguém não possua esta pasta no seu servidor, me comunique pelo tópico ou por mensagem privada que eu estarei adaptando. Mod: <?xml version="1.0" encoding="UTF-8"?> <mod name="SummonDuel" enabled="yes" author="Demonbholder" forum="XTibia.com"> <config name="SumLib"><![CDATA[ pla1 = getThingFromPos({x=151, y=39, z=7, stackpos=253}).uid pla2 = getThingFromPos({x=152, y=39, z=7, stackpos=253}).uid pos = {x=152, y=43, z=7} monsters = { ["rat"] = {sto = -1, awa = 300}, ["skeleton"] = {sto = 3, awa = 500}, ["orc"] = {sto = 5, awa = 700}, ["rotworm"] = {sto = 7, awa = 900}, ["dwarf"] = {sto = 7, awa = 900}, ["minotaur"] = {sto = 8, awa = 1000}, ["dwarf soldier"] = {sto = 10, awa = 1200}, ["minotaur archer"] = {sto = 10, awa = 1200}, ["carrion worm"] = {sto = 10, awa = 1200}, ["slime"] = {sto = 15, awa = 1700}, ["cyclops drone"] = {sto = 18, awa = 2000}, ["minotaur guard"] = {sto = 18, awa = 2000}, ["minotaur mage"] = {sto = 23, awa = 2500}, ["dwarf guard"] = {sto = 26, awa = 2800}, ["demon skeleton"] = {sto = 30, awa = 3200}, ["dragon hatchling"] = {sto = 35, awa = 3700}, ["dragon"] = {sto = 45, awa = 5000}, } ]]></config> <creaturescript type="login" name="SummonL" event="script"><![CDATA[ registerCreatureEvent(cid, "SummonC") return TRUE ]]></creaturescript> <creaturescript type="combat" name="SummonC" event="script"><![CDATA[ if getPlayerStorageValue(cid, 34570) ~= -1 and isPlayer(target) then return FALSE, doPlayerSendCancel(cid, "Voce nao pode atacar enquanto esta no jogo.") elseif getPlayerStorageValue(target, 34570) ~= -1 then return FALSE end return TRUE ]]></creaturescript> <creaturescript type="statschange" name="SummonS" event="script"><![CDATA[ if type == STATSCHANGE_HEALTHLOSS then if isPlayer(attacker) and isPlayer(getCreatureMaster(cid)) then if getPlayerStorageValue(getCreatureMaster(cid), 34570) ~= -1 then return FALSE end end end return TRUE ]]></creaturescript> <creaturescript type="kill" name="SummonK" event="script"><![CDATA[ domodlib('SumLib') setPlayerStorageValue(pla1, 34570, -1) setPlayerStorageValue(pla2, 34570, -1) setPlayerStorageValue(getCreatureMaster(cid), 34571, getPlayerStorageValue(getCreatureMaster(cid), 34571) +1) doCreatureSetNoMove(pla1, FALSE) doCreatureSetNoMove(pla2, FALSE) doPlayerAddMoney(getCreatureMaster(cid), monsters[string.lower(getCreatureName(target))].awa) doSendMagicEffect(getCreaturePosition(getCreatureMaster(cid)), 49) doRemoveCreature(cid) return TRUE ]]></creaturescript> <talkaction words="!start;!summon" event="script"><![CDATA[ domodlib('SumLib') if cid ~= pla1 and cid ~= pla2 then return doPlayerSendCancel(cid, "Voce precisa ser um dos jogadores."), doSendMagicEffect(getCreaturePosition(cid), 2) elseif isPlayer(pla1) == FALSE or isPlayer(pla2) == FALSE then return doPlayerSendCancel(cid, "Voce precisa de dois jogadores."), doSendMagicEffect(getCreaturePosition(cid), 2) end if words == "!start" then if getPlayerStorageValue(pla1, 34570) == -1 and getPlayerStorageValue(pla2, 34570) == -1 then setPlayerStorageValue(pla1, 34570, 1) setPlayerStorageValue(pla2, 34570, 1) doPlayerSendTextMessage(pla1, 4, "Partida comecada.") doPlayerSendTextMessage(pla2, 4, "Partida comecada.") doSendMagicEffect(getCreaturePosition(pla1), 10) doSendMagicEffect(getCreaturePosition(pla2), 10) doCreatureSetNoMove(pla1, TRUE) doCreatureSetNoMove(pla2, TRUE) else doPlayerSendCancel(cid, "A partida ja iniciou.") doSendMagicEffect(getCreaturePosition(cid), 2) end elseif words == "!summon" then if param ~= "" then if getPlayerStorageValue(cid, 34570) == 1 then if monsters[string.lower(param)] then if getPlayerStorageValue(cid, 34571) >= monsters[string.lower(param)].sto then local mom = doCreateMonster(string.lower(param), pos) doConvinceCreature(cid, mom) setPlayerStorageValue(cid, 34570, 2) registerCreatureEvent(mom, "SummonC") registerCreatureEvent(mom, "SummonS") registerCreatureEvent(mom, "SummonK") else doPlayerSendCancel(cid, "Voce nao pode sumonar este monstro.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Este monstro nao pode ser sumonado.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "A partida nao esta nesta parte.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Diga o nome do monstro a ser sumonado.") doSendMagicEffect(getCreaturePosition(cid), 2) end end return TRUE ]]></talkaction> </mod> Como configurar: Adicionando novos monstros e editando recompensas Como fazer o monstro poder ser convencido Editando as posições Bom, então é isso galera, qualquer dúvida só postar aqui. Em breve melhorarei o sistema! Até mais.
  17. Demonbholder

    Me Revelando

    AUHAUHAUHAUHAUHAUHAUHAUAHU
  18. Claro, ele comparou string com number, vai dar erro sim. OBS: Eu coloquei outra função IsInArea que ta bem menor.
  19. Demonbholder

    Storage

    Ah sim, é uma pena. Vai por global storage mesmo. tile.lua function onStepIn(cid, item, position, fromPosition) if getGlobalStorageValue(40023) == 1 then doTeleportThing(cid, fromPosition) else doTeleportThing(cid, {x=144, y=51, z=7}) setGlobalStorageValue(40023, 1) setPlayerStorageValue(cid, 40023, 1) end return TRUE end teleport.lua function onStepIn(cid, item, position, fromPosition) setGlobalStorageValue(40023, -1) setPlayerStorageValue(cid, 40023, 2) doTeleportThing(cid, {x=151, y=51, z=7}) return TRUE end gideath.lua function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) if getPlayerStorageValue(cid, 40023) == 1 then setPlayerStorageValue(cid, 40023, -1) setGlobalStorageValue(40023, -1) end return TRUE end function onLogout(cid) local pos = {x=151, y=50, z=7} if getPlayerStorageValue(cid, 40023) == 1 then doTeleportThing(cid, pos) setPlayerStorageValue(cid, 40023, -1) setGlobalStorageValue(40023, -1) end return TRUE end
  20. double-topic de http://www.xtibia.com/forum/topic/156003-pedidocaixao-assassino/ Fechado.
  21. @IcExMaN Se eu não me engano você pode adicionar as funções no global.lua nesse tfs Tópico movido para Sistemas e Mod's Abraços.
  22. Aceitando ideias para scripts

  • Quem Está Navegando   0 membros estão online

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