Ir para conteúdo

Demonbholder

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Demonbholder recebeu reputação de Wolven em [Função] Dostoragecount(Storage, Guid, Amount, Max, Delay)   
    Fala seus loucos. Uma função que eu fiz pro thalia, vou postar aqui também.

    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.


    Em data/lib/function.lua >>

    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 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 2 1 4 2 6 3 8 4 10

    Até mais.
  2. Gostei
    Demonbholder recebeu reputação de loreal em modificar esse script de bless   
    Coloca 0.15
  3. Gostei
    Demonbholder recebeu reputação de loreal em modificar esse script de bless   
    Oi,
     
    o problema de usar o doPlayerSetLossPercent é que só muda uma variável na fórmula do cálculo da perde de experiência.
     
    Pelo que eu percebi, você está usando o tfs 0.4, certo?
     
    Se sim, vai em player.cpp e altera a função getLostExperience por isso:
     
    obs: Antes de testar, faça um backup de tudo, pois eu não estou muito familiarizado com as sources do tfs 0.4.
     



  4. Gostei
    Demonbholder recebeu reputação de Wise em modificar esse script de bless   
    Oi,
     
    o problema de usar o doPlayerSetLossPercent é que só muda uma variável na fórmula do cálculo da perde de experiência.
     
    Pelo que eu percebi, você está usando o tfs 0.4, certo?
     
    Se sim, vai em player.cpp e altera a função getLostExperience por isso:
     
    obs: Antes de testar, faça um backup de tudo, pois eu não estou muito familiarizado com as sources do tfs 0.4.
     



  5. Gostei
    Demonbholder recebeu reputação de Danves em Onstatschange - aumentar dano recebido caso tenha Sto   
    tenta isso:

    function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS and isPlayer(cid) and value >= 1 then if getPlayerStorageValue(cid, 4329) == 1 then if getPlayerStorageValue(cid, 19280) == -1 then setPlayerStorageValue(cid, 19280, 1) value = value*3 doCreatureAddHealth(cid,-value) doSendAnimatedText(getCreaturePosition(cid)," "..value,COLOR_RED) else setPlayerStorageValue(cid, 19280, -1) end end end return true end ps: se quiser, pode trocar a doCreatureAddHealth pela doTargetCombatHealth, só fiz um modelo
  6. Gostei
    Demonbholder recebeu reputação de 1215171 em [Talkaction] Twitter System   
    E ai, primeiro post aqui. Vou postar um sistema que eu fiz um tempo atrás, como o título já diz é um twitter no OtServer, não tem nada a ver com o site.


    Como funciona: É tipo um twitter, eu nunca usei o twitter ai não sei como funciona ele direito, mas eu fiz algo do tipo. Você fala !twitt Blablabla e é adicionada ao seu Twitter no Ot, ai para ver os Twitts dos outros é só falar !follow NomeDoJogador e ver seus twitts.



    function onSay(cid, words, param) if words == "!twitt" then if getGlobalStorageValue(30070) == -1 then db.executeQuery("ALTER TABLE `players` ADD twits TEXT NOT NULL DEFAULT twitter;") setGlobalStorageValue(30070, 1) end if param == "" then doPlayerSendCancel(cid, "Param required.") doSendMagicEffect(getCreaturePosition(cid), 2) else local datas = db.getResult("SELECT `twits` FROM `players` WHERE `id` = ".. getPlayerGUID(cid) .. ";") local sentense = datas:getDataString("twits") .. "\n" .. tostring(param) .. " " .. os.date("%c") db.executeQuery("UPDATE `players` SET `twits` = '".. sentense .. "' WHERE `id` = ".. getPlayerGUID(cid) .. ";") return TRUE end end if words == "!follow" then if param == "" then doPlayerSendCancel(cid, "Param required.") doSendMagicEffect(getCreaturePosition(cid), 2) else local id = playerExists(tostring(param)) and getPlayerGUIDByName(tostring(param)) or getPlayerGUID(cid) local datas = db.getResult("SELECT `twits` FROM `players` WHERE `id` = ".. id .. ";") local name = id == getPlayerGUID(cid) and getCreatureName(cid) or param doShowTextDialog(cid, 2160, name .. " " .. datas:getDataString("twits")) end end return TRUE end Lembrando que é um Twitter no OtServer, não tem nada a ver com o site. Tag: <talkaction words="!twitt;!follow" script="NomeDoArquivo.lua" />



    Servidor Testado: New Styller Yourots 0.7.5

    É isso, até mais.
  7. Gostei
    Demonbholder deu reputação a EdsonJunior em Trote do Alien :S   
    http://www.youtube.com/watch?v=0P2mByPUJOk





    KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
    KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
    KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
    KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
    KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
    KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
    KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
    KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
    KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
  8. Negativo
    Demonbholder recebeu reputação de Lucas S. em Infancia   
    -
  9. Negativo
    Demonbholder recebeu reputação de Renato em Infancia   
    -
  10. Gostei
    Demonbholder recebeu reputação de Liri em 5# - Evento para refletir...   
    DESCLASSIFICADO!
  11. Negativo
    Demonbholder recebeu reputação de Arthur em 5# - Evento para refletir...   
    DESCLASSIFICADO!
  12. Gostei
    Demonbholder recebeu reputação de Kaiofirma em [Talk] /unban   
    Dei uma olhada e achei um erro. Lá vai:


    doRemoveBanishment(accId) Certo: doRemoveBanishment(un)


    O resto eu não posso garantir que esteja certo.
  13. Gostei
    Demonbholder recebeu reputação de Renato em [Talk] Cassino System   
    Por olho vi dois erros. Primeiro: é 1000 e não 100 o valor pelo qual deve ser multiplicado o param. Segundo:

    elseif rdm = 1 then -- ele ganhou

    = Não é sinal de comparação, == é.

    Ahh, e faltou as funções return para parar de executar o script caso uma das duas condições de erro não seja comprida.
  14. Gostei
    Demonbholder recebeu reputação de caio magno em [TalkAction] GM faz player falar   
    Hm, o script ta bom, só tem que aprende mais umas coisas pra organiza-lo melhor, exemplo:


    function onSay(cid, words, param, channel) if(param == '') then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "É necessário um paramêtro."), TRUE end local prm = string.explode(param, ",") local pos = getCreaturePosition(cid) local plr = getPlayerByName(prm[1]) if (plr == nil) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O player está offline ou não existe.") elseif (prm[2] == nil) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "É necessário a mensagem após a vírgula.") end return doCreatureSay(plr, prm[2], 1), TRUE end

    Também tenta usar TRUE e FALSE ao invés de true e false, pois os minúsculos não funcionam em versões antigas.
  15. Gostei
    Demonbholder recebeu reputação de Renato em [Função] Dostoragecount(Storage, Guid, Amount, Max, Delay)   
    data/lib/function.lua
  16. Gostei
    Demonbholder recebeu reputação de Renato em [Função] Dostoragecount(Storage, Guid, Amount, Max, Delay)   
    Fala seus loucos. Uma função que eu fiz pro thalia, vou postar aqui também.

    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.


    Em data/lib/function.lua >>

    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 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 2 1 4 2 6 3 8 4 10

    Até mais.
  17. Gostei
    Demonbholder recebeu reputação de Renato em [Action/Quest] Uma quest aleatória!   
    -- Script by: thalia. local randomizar = { [1] = {name="demon armor", id = 2494, qnt = 1}, [2] = {name="demon legs", id = 2495, qnt = 1}, [3] = {name="demon helmet", id = 2493, qnt = 1}, [4] = {name="infernal bolt", id = 6529, qnt = 100}, } function onUse(cid, item, item2, topos, frompos) local config = { level = 100, -- Level minimo para fazer a quest storage = 14571, -- Não Altere Isso efeito = 28, -- Efeito que fara qndo a quest for feita } if getPlayerLevel(cid) <= config.level then return doPlayerSendCancel(cid, "Você não tem level para fazer esta quest.") end if getPlayerStorageValue(cid, config.storage) == 1 then return doPlayerSendCancel(cid, "Você já fez essa quest.") end pos = getThingPos(cid) a = randomizar[math.random(1,#randomizar)] doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você ganhou "..a.name..".") doSendMagicEffect(pos, config.efeito) setPlayerStorageValue(cid, config.storage, 1) if isItemStackable(a.id) then doPlayerAddItem(cid, a.id,a.qnt) else for i = 1, a.qnt do doPlayerAddItem(cid, a.id, 1) end end return TRUE end

    Se tu não te importa eu editei porque a função doPlayerAddItem não adiciona itens não agrupáveis mais de uma vez. Não testei, testa ai e se quiser substitui.
  18. Gostei
    Demonbholder recebeu reputação de Renato em Comprando Summon   
    Fala galera, uma talk que eu fiz esses tempos e vou postar aqui.

    Como funciona: Você deve criar os monstros e depois adiciona-los ao script para poderem ser comprados.

    Palavras:

    !summon - Sumona o seu summon por certo tempo gastando uma certa quantidade de soul, caso você tenha comprado ele já..
    !buysummon - Compra o summon por um preço.
    !sellsummon - Vende o summon por metade do preço que você comprou ele.
    !offer - Checa as ofertas de summons a venda.


    Talkaction:


    function onSay(cid, words, param) local buyprice = { ['rat'] = {price = 1000, message = "Parabéns, você comprou o Rat, cuide bem dele.", seconds = 10, soul = 30}, ['skeleton'] = {price = 10000, message = "Parabéns, você comprou o Skeleton, cuide bem dele.", seconds = 30, soul = 40}, ['demon'] = {price = 100000, message = "Parabéns, você comprou o Demon, cuide bem dele.", seconds = 60, soul = 50}, } local offert = "" if words == "!summon" then if getPlayerStorageValue(cid, 22000) ~= -1 then if #getCreatureSummons(cid) == 0 then if getPlayerSoul(cid) >= buyprice[getPlayerStorageValue(cid, 22000)].soul then doSummonPet(cid, getPlayerStorageValue(cid, 22000), buyprice[getPlayerStorageValue(cid, 22000)].seconds) doPlayerSendTextMessage(cid, 4, "Você usou seu summon, dentro de ".. buyprice[getPlayerStorageValue(cid, 22000)].seconds .." ele irá ser removido.") doPlayerAddSoul(cid, - (buyprice[getPlayerStorageValue(cid, 22000)].soul)) else doPlayerSendCancel(cid, "Você não tem soul suficiente.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você não pode mais sumonar.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você ainda não possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!buysummon" then if param ~= "" then if getPlayerStorageValue(cid, 22000) == -1 then if getPlayerMoney(cid) >= buyprice[string.lower(param)].price then setPlayerStorageValue(cid, 22000, string.lower(param)) doPlayerSendTextMessage(cid, 4, buyprice[string.lower(param)].message) doPlayerRemoveMoney(cid, buyprice[string.lower(param)].price) else doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para comprar este summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você já possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Escolha o summon a ser comprado.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!sellsummon" then if getPlayerStorageValue(cid, 22000) ~= -1 then doPlayerAddMoney(cid, (buyprice[getPlayerStorageValue(cid, 22000)].price)*5/10) doPlayerSendTextMessage(cid, 4, "Summon vendido com sucesso.") setPlayerStorageValue(cid, 22000, -1) else doPlayerSendCancel(cid, "Você não possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!offer" then for name, _ in pairs(buyprice) do offert = offert == "" and "Summons: \n\n" .. name .. " " .. buyprice[name].price or offert .. "\n" .. name .. " " .. buyprice[name].price end doShowTextDialog(cid, 2160, offert) end return TRUE end Adicione o script acima em data/talkactions/scripts. Tag: <talkaction words="!summon;!buysummon;!sellsummon;!offer" script="NomeDoArquivo.lua" /> Como adicionar mais monstros ao comando: function doSummonPet(cid, name, time) if isMonster(getCreatureByName(name)) then local sum = doSummonMonster(cid, name) if type(time) == "number" then addEvent(doRemovePet, time*1000, cid, name) end else return error("Creature not found!") end end function doRemovePet(cid, name) for y, x in ipairs(getCreatureSummons(cid)) do if isCreature(x) then if string.lower(getCreatureName(x)) == name then doRemoveCreature(x) break end end end end

    Adicione isso em data/lib/functions para que funcione.


    É isso, até mais.
  19. Gostei
    Demonbholder recebeu reputação de thalia em Comprando Summon   
    Fala galera, uma talk que eu fiz esses tempos e vou postar aqui.

    Como funciona: Você deve criar os monstros e depois adiciona-los ao script para poderem ser comprados.

    Palavras:

    !summon - Sumona o seu summon por certo tempo gastando uma certa quantidade de soul, caso você tenha comprado ele já..
    !buysummon - Compra o summon por um preço.
    !sellsummon - Vende o summon por metade do preço que você comprou ele.
    !offer - Checa as ofertas de summons a venda.


    Talkaction:


    function onSay(cid, words, param) local buyprice = { ['rat'] = {price = 1000, message = "Parabéns, você comprou o Rat, cuide bem dele.", seconds = 10, soul = 30}, ['skeleton'] = {price = 10000, message = "Parabéns, você comprou o Skeleton, cuide bem dele.", seconds = 30, soul = 40}, ['demon'] = {price = 100000, message = "Parabéns, você comprou o Demon, cuide bem dele.", seconds = 60, soul = 50}, } local offert = "" if words == "!summon" then if getPlayerStorageValue(cid, 22000) ~= -1 then if #getCreatureSummons(cid) == 0 then if getPlayerSoul(cid) >= buyprice[getPlayerStorageValue(cid, 22000)].soul then doSummonPet(cid, getPlayerStorageValue(cid, 22000), buyprice[getPlayerStorageValue(cid, 22000)].seconds) doPlayerSendTextMessage(cid, 4, "Você usou seu summon, dentro de ".. buyprice[getPlayerStorageValue(cid, 22000)].seconds .." ele irá ser removido.") doPlayerAddSoul(cid, - (buyprice[getPlayerStorageValue(cid, 22000)].soul)) else doPlayerSendCancel(cid, "Você não tem soul suficiente.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você não pode mais sumonar.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você ainda não possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!buysummon" then if param ~= "" then if getPlayerStorageValue(cid, 22000) == -1 then if getPlayerMoney(cid) >= buyprice[string.lower(param)].price then setPlayerStorageValue(cid, 22000, string.lower(param)) doPlayerSendTextMessage(cid, 4, buyprice[string.lower(param)].message) doPlayerRemoveMoney(cid, buyprice[string.lower(param)].price) else doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para comprar este summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você já possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Escolha o summon a ser comprado.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!sellsummon" then if getPlayerStorageValue(cid, 22000) ~= -1 then doPlayerAddMoney(cid, (buyprice[getPlayerStorageValue(cid, 22000)].price)*5/10) doPlayerSendTextMessage(cid, 4, "Summon vendido com sucesso.") setPlayerStorageValue(cid, 22000, -1) else doPlayerSendCancel(cid, "Você não possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!offer" then for name, _ in pairs(buyprice) do offert = offert == "" and "Summons: \n\n" .. name .. " " .. buyprice[name].price or offert .. "\n" .. name .. " " .. buyprice[name].price end doShowTextDialog(cid, 2160, offert) end return TRUE end Adicione o script acima em data/talkactions/scripts. Tag: <talkaction words="!summon;!buysummon;!sellsummon;!offer" script="NomeDoArquivo.lua" /> Como adicionar mais monstros ao comando: function doSummonPet(cid, name, time) if isMonster(getCreatureByName(name)) then local sum = doSummonMonster(cid, name) if type(time) == "number" then addEvent(doRemovePet, time*1000, cid, name) end else return error("Creature not found!") end end function doRemovePet(cid, name) for y, x in ipairs(getCreatureSummons(cid)) do if isCreature(x) then if string.lower(getCreatureName(x)) == name then doRemoveCreature(x) break end end end end

    Adicione isso em data/lib/functions para que funcione.


    É isso, até mais.
  20. Gostei
    Demonbholder recebeu reputação de Renato em [Sugestão] Seção em Scripting   
    Quero ser bem rápido, não vou tomar muito o tempo de vocês. Tava pensando se teria como colocar uma seção de bibliotecas e funções em scripting.

    Assim não precisaria fazer uma confusão em actions/talks/move.


    Até mais.
  21. Gostei
    Demonbholder recebeu reputação de Guilherme. em Comprando Summon   
    Fala galera, uma talk que eu fiz esses tempos e vou postar aqui.

    Como funciona: Você deve criar os monstros e depois adiciona-los ao script para poderem ser comprados.

    Palavras:

    !summon - Sumona o seu summon por certo tempo gastando uma certa quantidade de soul, caso você tenha comprado ele já..
    !buysummon - Compra o summon por um preço.
    !sellsummon - Vende o summon por metade do preço que você comprou ele.
    !offer - Checa as ofertas de summons a venda.


    Talkaction:


    function onSay(cid, words, param) local buyprice = { ['rat'] = {price = 1000, message = "Parabéns, você comprou o Rat, cuide bem dele.", seconds = 10, soul = 30}, ['skeleton'] = {price = 10000, message = "Parabéns, você comprou o Skeleton, cuide bem dele.", seconds = 30, soul = 40}, ['demon'] = {price = 100000, message = "Parabéns, você comprou o Demon, cuide bem dele.", seconds = 60, soul = 50}, } local offert = "" if words == "!summon" then if getPlayerStorageValue(cid, 22000) ~= -1 then if #getCreatureSummons(cid) == 0 then if getPlayerSoul(cid) >= buyprice[getPlayerStorageValue(cid, 22000)].soul then doSummonPet(cid, getPlayerStorageValue(cid, 22000), buyprice[getPlayerStorageValue(cid, 22000)].seconds) doPlayerSendTextMessage(cid, 4, "Você usou seu summon, dentro de ".. buyprice[getPlayerStorageValue(cid, 22000)].seconds .." ele irá ser removido.") doPlayerAddSoul(cid, - (buyprice[getPlayerStorageValue(cid, 22000)].soul)) else doPlayerSendCancel(cid, "Você não tem soul suficiente.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você não pode mais sumonar.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você ainda não possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!buysummon" then if param ~= "" then if getPlayerStorageValue(cid, 22000) == -1 then if getPlayerMoney(cid) >= buyprice[string.lower(param)].price then setPlayerStorageValue(cid, 22000, string.lower(param)) doPlayerSendTextMessage(cid, 4, buyprice[string.lower(param)].message) doPlayerRemoveMoney(cid, buyprice[string.lower(param)].price) else doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para comprar este summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você já possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Escolha o summon a ser comprado.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!sellsummon" then if getPlayerStorageValue(cid, 22000) ~= -1 then doPlayerAddMoney(cid, (buyprice[getPlayerStorageValue(cid, 22000)].price)*5/10) doPlayerSendTextMessage(cid, 4, "Summon vendido com sucesso.") setPlayerStorageValue(cid, 22000, -1) else doPlayerSendCancel(cid, "Você não possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!offer" then for name, _ in pairs(buyprice) do offert = offert == "" and "Summons: \n\n" .. name .. " " .. buyprice[name].price or offert .. "\n" .. name .. " " .. buyprice[name].price end doShowTextDialog(cid, 2160, offert) end return TRUE end Adicione o script acima em data/talkactions/scripts. Tag: <talkaction words="!summon;!buysummon;!sellsummon;!offer" script="NomeDoArquivo.lua" /> Como adicionar mais monstros ao comando: function doSummonPet(cid, name, time) if isMonster(getCreatureByName(name)) then local sum = doSummonMonster(cid, name) if type(time) == "number" then addEvent(doRemovePet, time*1000, cid, name) end else return error("Creature not found!") end end function doRemovePet(cid, name) for y, x in ipairs(getCreatureSummons(cid)) do if isCreature(x) then if string.lower(getCreatureName(x)) == name then doRemoveCreature(x) break end end end end

    Adicione isso em data/lib/functions para que funcione.


    É isso, até mais.
  22. Gostei
    Demonbholder deu reputação a thalia em [Talka/CS]Ganhe cash ao matar.   
    Nome: Ganhe cash ao matar alguem.
    Versão: Testada tfs 0.3.6 (8.54), provavelmente funfa em 8.54 +
    Créditos: Eu e para o demonbholder por me ajudar a fazer a lista.



    Como funciona?


    Quando você mata um player você ganha 100 cash (Pode ser alterado no script), e falano:
    ~~> /buy nome_do_item (Exemplo: /buy plate armor), você automaticamente comprara o item.
    ~~> /buy list, você vera os itens que pode ser comprados e o preço deles.
    ~~> /buy check, verifica quantos de cash você tem.



    Instalando o sistema !


    1ª: Entre na pasta data/creaturescripts/scripts, e crie um arquivo chamado cash.lua, cole este código dentro:

    function onKill(cid, target, lastHit) local cash = 150 -- O tanto de cash que ira ganhar ao matar o player if isPlayer(cid) and isPlayer(target) then if getPlayerIp(target) ~= getPlayerIp(cid) then setPlayerStorageValue(cid, 45550, (getPlayerStorageValue(cid, 45550)+cash)) end end return TRUE end 2ªa: Agora em creaturescripts/creaturescripts.xml bote a tag: <event type="kill" name="Kill_Cash" event="script" value="cash.lua"/> 2ªb:Agora em creaturescripts/scripts , localize login.lua (antes do ultimo return true) e cole isto dentro: registerCreatureEvent(cid, "Kill_Cash") 3ª:Voltando em data/talkactions/scripts crie um arquivo com o nome de cash.lua e cole isto dentro: -- Script by: thalia -- local item = { ["plate armor"] = {cash=150, id=2463, amount=1}, ["plate legs"] = {cash=150, id=2647, amount=1}, } function onSay(cid, words, param) itens = item[param] if param == "check" then return doPlayerSendTextMessage(cid,19,'Your total cash is '..getPlayerStorageValue(cid, 45550)..'.') elseif param == "list" then str = nil for name, tab in pairs(item) do str = str == nil and "Item name: "..name.." - Price: "..tab.cash .. "\n" or str .. "Item name: "..name.." - Price: "..tab.cash .. "\n" end doShowTextDialog(cid, 2160, str) return true end if (itens ~= nil) then if getPlayerStorageValue(cid, 45550) >= itens.cash then doSendMagicEffect(getThingPos(cid),28) doPlayerAddItem(cid,itens.id,itens.amount) setPlayerStorageValue(cid, 45550, (getPlayerStorageValue(cid,45550)-itens.cash)) return doPlayerSendTextMessage(cid,19,'Your total cash now is '..getPlayerStorageValue(cid, 45550)..'.') else return doPlayerSendCancel(cid,"Sorry, cash insufficient.") end else return doPlayerSendCancel(cid,"Sorry, this item is not for sale.") end return TRUE end 4ª:Agora em talkactions/talkactions.xml bote está tag: <talkaction log="yes" words="/buy" access="0" event="script" value="cash.lua"/>


    Prontinho, script istalado...

    Ai vocês me pergunta: Como adicionar mais itens?
    E eu respondo:

    Simples
    Nesta parte:

    È só adicionar:




    BOM È ISSO
    COMENTEM O QUE ACHARAM!
    È só fazer isso um em baixo do outro.
  23. Gostei
    Demonbholder recebeu reputação de Guilherme. em [Talkaction] Twitter System   
    E ai, primeiro post aqui. Vou postar um sistema que eu fiz um tempo atrás, como o título já diz é um twitter no OtServer, não tem nada a ver com o site.


    Como funciona: É tipo um twitter, eu nunca usei o twitter ai não sei como funciona ele direito, mas eu fiz algo do tipo. Você fala !twitt Blablabla e é adicionada ao seu Twitter no Ot, ai para ver os Twitts dos outros é só falar !follow NomeDoJogador e ver seus twitts.



    function onSay(cid, words, param) if words == "!twitt" then if getGlobalStorageValue(30070) == -1 then db.executeQuery("ALTER TABLE `players` ADD twits TEXT NOT NULL DEFAULT twitter;") setGlobalStorageValue(30070, 1) end if param == "" then doPlayerSendCancel(cid, "Param required.") doSendMagicEffect(getCreaturePosition(cid), 2) else local datas = db.getResult("SELECT `twits` FROM `players` WHERE `id` = ".. getPlayerGUID(cid) .. ";") local sentense = datas:getDataString("twits") .. "\n" .. tostring(param) .. " " .. os.date("%c") db.executeQuery("UPDATE `players` SET `twits` = '".. sentense .. "' WHERE `id` = ".. getPlayerGUID(cid) .. ";") return TRUE end end if words == "!follow" then if param == "" then doPlayerSendCancel(cid, "Param required.") doSendMagicEffect(getCreaturePosition(cid), 2) else local id = playerExists(tostring(param)) and getPlayerGUIDByName(tostring(param)) or getPlayerGUID(cid) local datas = db.getResult("SELECT `twits` FROM `players` WHERE `id` = ".. id .. ";") local name = id == getPlayerGUID(cid) and getCreatureName(cid) or param doShowTextDialog(cid, 2160, name .. " " .. datas:getDataString("twits")) end end return TRUE end Lembrando que é um Twitter no OtServer, não tem nada a ver com o site. Tag: <talkaction words="!twitt;!follow" script="NomeDoArquivo.lua" />



    Servidor Testado: New Styller Yourots 0.7.5

    É isso, até mais.
  24. Gostei
    Demonbholder deu reputação a thalia em [NPC] Apostador de Vegas   
    Nome: NPC Apostador Las Vegas
    Versão: Testada na 8.54, mais provavelmente funfa 8.5+
    Créditos: 100% by me (:



    Como "fanuncia"?

    È um npc de apostar, ele possuiu "por inquanto" dois jogos 21 e Jogo dos 6.




    ~~> Explicando o 21 <~~
    O 21 funciona assim: Você ira ganhar 1 número e o número tem quer ser 21, ou chegar o mais próximo possível sem ultrapassar esse valor.
    E a mesma coisa será feita com o npc, ele ganhará 1 número.
    Você pode ir comprando mais números dizendo [comprar] e se quiser parar é só dizer [parar].
    Se seu número for maior que o do npc, você leva o triplo do dinheiro apostado.




    ~~> Explicando o Jogo do 6 <~~
    O Jogo do 6 funciona assim: O npc vai rodar um dado, e se cair no número 6 você ganha o sêxtuplo (6 vezes) do valor apostado.
    Caso não caia no 6, você perde apenas o dinheiro da aposta.



    Legal né?




    Instalando o npc

    -> Vá até a pasta data/npc e crie um arquivo xml com o nome lasvegas.xml e cole esse codigo dentro:



    <?xml version="1.0" encoding="UTF-8"?> <npc name="Apostador" script="data/npc/scripts/apostador_la.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="138" head="96" body="95" legs="0" feet="95" addons="0"/> <parameters> <parameter key="message_greet" value="Como vai? |PLAYERNAME|, Quer {apostar} comigo?" /> <parameter key="module_keywords" value="1" /> </parameters> </npc> -> Vá até a pasta data/npc/scripts e crie um arquivo lua com o nome apostador_la.lua e cole esse codigo dentro: -- Preços das apostas -- price_21 = 1000 -- 1k ou 1000gold price_jogo6 = 5000 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 if(msgcontains(msg, 'apostar')) then selfSay('Eu faço 2 jogos: {21},{Jogo do 6} escolha um deles!', cid) talkState[talkUser] = 5 elseif (msgcontains(msg, 'Jogo do 6') and talkState[talkUser] == 5) then selfSay('O Jogo do 6 funciona assim: Eu vou rodar um dado, e se cair no número 6 você ganha o sêxtuplo (6 vezes) do valor apostado.', cid) selfSay('Caso não caia no 6, você perde apenas o dinheiro da aposta.', cid) selfSay('Está pronto para {começar}?.', cid) talkState[talkUser] = 3 elseif(msgcontains(msg, 'começar') and talkState[talkUser] == 3) then selfSay('Você possui o {dinheiro} da aposta ('..price_jogo6..')golds ?', cid) if doPlayerRemoveMoney(cid, price_jogo6) == TRUE then talkState[talkUser] = 2 else selfSay('Desculpe, mais você não tem dinheiro para apostar comigo.',cid) end elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 2) then sorteio6 = math.random(1,6) if sorteio6 == 6 then talkState[talkUser] = 3 selfSay('Parábens, o número sorteado foi 6 e você acaba de ganhar '..(price_jogo6*6) ..'golds, mais o dinheiro que você pagou da aposta.',cid) doPlayerAddMoney(cid,price_jogo6*6) else talkState[talkUser] = 2 selfSay('Que azar, o número sorteado foi '..sorteio6..', mais sorte na proxima.',cid) end elseif(msgcontains(msg, '21') and talkState[talkUser] == 5) then selfSay('O 21 funciona assim: Você ira ganhar 1 número e o número tem quer ser 21, ou chegar o mais próximo possível sem ultrapassar esse valor.', cid) selfSay('E a mesma coisa será feita comigo, ganharei 1 número.', cid) selfSay('Você pode ir comprando mais números dizendo [comprar] e se quiser parar é só dizer [parar].', cid) selfSay('Se você ganhar de mim, você leva o triplo do dinheiro apostado.', cid) selfSay('Está pronto para {começar}?.', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'começar') and talkState[talkUser] == 0) then selfSay('Você possui o {dinheiro} da aposta ('..price_21..')golds ?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 1) then if doPlayerRemoveMoney(cid, price_21) == TRUE then talkState[talkUser] = 0 local mpn = math.random(1,21) setPlayerStorageValue(cid, 55411,mpn) local pn = getPlayerStorageValue(cid, 55411) selfSay('Seu número é '..pn..', quer comprar mais ou parar?',cid) else selfSay('Desculpe, mais você não tem dinheiro para apostar comigo.',cid) end elseif(msgcontains(msg, 'comprar') and talkState[talkUser] == 0) then local cp = math.random(1,10) setPlayerStorageValue(cid, 55411, (getPlayerStorageValue(cid, 55411))+cp) selfSay('Seu número é '..getPlayerStorageValue(cid, 55411)..', quer comprar mais ou parar?',cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'parar') and talkState[talkUser] == 0) then local npcn = math.random(15,21) setPlayerStorageValue(cid, 2224, npcn) if getPlayerStorageValue(cid, 55411) < getPlayerStorageValue(cid, 2224)then selfSay('Meu número é '..getPlayerStorageValue(cid, 2224)..'.',cid) selfSay('Seu número final é '..getPlayerStorageValue(cid, 55411)..'.',cid) selfSay('Ganhei, mais sorte na proxima vez.',cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 55411) == getPlayerStorageValue(cid, 2224) then selfSay('Meu número é '..getPlayerStorageValue(cid, 2224)..'.',cid) selfSay('Seu número final é '..getPlayerStorageValue(cid, 55411)..'.',cid) selfSay('Empato, portanto ninguem ganha nada.',cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 55411) > getPlayerStorageValue(cid, 2224) then selfSay('Meu número é '..getPlayerStorageValue(cid, 2224)..'.',cid) selfSay('Seu número final é '..getPlayerStorageValue(cid, 55411)..'.',cid) local somag = (price_21*3) selfSay('Você ganhou '..somag..'golds, mais os seus '..price_21..'golds de volta. Parábens !!!',cid) doPlayerAddMoney(cid, somag) doPlayerAddMoney(cid, price_21) talkState[talkUser] = 1 else selfSay('Desculpe, mais você não possui dinheiro está aposta',cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())

    Pronto, npc instalado.

    Qualquer dúvida, tamo ae.

    Gostou? REP +
  25. Gostei
    Demonbholder recebeu reputação de thalia em [Talkaction] Twitter System   
    E ai, primeiro post aqui. Vou postar um sistema que eu fiz um tempo atrás, como o título já diz é um twitter no OtServer, não tem nada a ver com o site.


    Como funciona: É tipo um twitter, eu nunca usei o twitter ai não sei como funciona ele direito, mas eu fiz algo do tipo. Você fala !twitt Blablabla e é adicionada ao seu Twitter no Ot, ai para ver os Twitts dos outros é só falar !follow NomeDoJogador e ver seus twitts.



    function onSay(cid, words, param) if words == "!twitt" then if getGlobalStorageValue(30070) == -1 then db.executeQuery("ALTER TABLE `players` ADD twits TEXT NOT NULL DEFAULT twitter;") setGlobalStorageValue(30070, 1) end if param == "" then doPlayerSendCancel(cid, "Param required.") doSendMagicEffect(getCreaturePosition(cid), 2) else local datas = db.getResult("SELECT `twits` FROM `players` WHERE `id` = ".. getPlayerGUID(cid) .. ";") local sentense = datas:getDataString("twits") .. "\n" .. tostring(param) .. " " .. os.date("%c") db.executeQuery("UPDATE `players` SET `twits` = '".. sentense .. "' WHERE `id` = ".. getPlayerGUID(cid) .. ";") return TRUE end end if words == "!follow" then if param == "" then doPlayerSendCancel(cid, "Param required.") doSendMagicEffect(getCreaturePosition(cid), 2) else local id = playerExists(tostring(param)) and getPlayerGUIDByName(tostring(param)) or getPlayerGUID(cid) local datas = db.getResult("SELECT `twits` FROM `players` WHERE `id` = ".. id .. ";") local name = id == getPlayerGUID(cid) and getCreatureName(cid) or param doShowTextDialog(cid, 2160, name .. " " .. datas:getDataString("twits")) end end return TRUE end Lembrando que é um Twitter no OtServer, não tem nada a ver com o site. Tag: <talkaction words="!twitt;!follow" script="NomeDoArquivo.lua" />



    Servidor Testado: New Styller Yourots 0.7.5

    É isso, até mais.

Informação Importante

Confirmação de Termo