Ir para conteúdo

Poccnn

Herói
  • Total de itens

    1418
  • Registro em

  • Última visita

  • Dias Ganhos

    48

Tudo que Poccnn postou

  1. Hail Xtibianos. Esse script eu criei a pedido de um membro do fórum e resolvi posta-lo para vocês. Ele serve para que ao matarem um determinado monstros, somente os players que tiverem uma certa quantidade de participação (em porcentagem) na morte do monstro é que receberam algo (configurável). Em creaturescripts.xml adicione: <event type="statschange" name="stats" script="statsMonster.lua"/> <event type="death" name="deathMonster" script="deathMonster.lua"/> Em creaturescripts/scripts crie um arquivo lua com o nome statsMonster e adicione: --[[ autor = Marcryzius data = sexta-feira, 05 de fevereiro de 2016 tipo = 1 (um) é ataque, 0 (zero) é healing. query para ser adicionada no monstro: <script> <event name = "stats"/> <event name = "deathMonster"/> </script> ]] M = {} function getDamageInMonster(monster,cid) local monster,cid,m_life,p_dano = tonumber(monster),tonumber(cid),0,0 if not(monster or cid)then return 0,error('function getDamageInMonster(): monster or cid, not number') end if not(isCreature(monster))then return 0,error('function getDamageInMonster(): variavel monster nao e monstro.') end for k,v in pairs(M[monster]) do if(k == cid)then p_dano = v end m_life = m_life + v end return math.floor(p_dano/(m_life/100)) end function onStatsChange(cid, attacker, tipo, combat, value) if not(M[cid])then M[cid] = {} end if not(tipo == 1)then return true end if(isPlayer(attacker))then if not(M[cid][attacker])then M[cid][attacker] = 0 end M[cid][attacker] = M[cid][attacker] + value elseif(isMonster(attacker))then -- caso seja um monstro o atacante local get = getCreatureMaster(attacker) -- averigua se não é um summon que está atacando if(tonumber(get) and isPlayer(get))then -- caso o summon seja de um player, adiciona o dano como se fosse o player if not(M[cid][get])then M[cid][get] = 0 end M[cid][get] = M[cid][get] + value end end return true end Agora crie outro arquivo lua na mesma pasta e nomeie para deathMonster e adicione: function onDeath(cid, corpse, deathList) --[[> Marcryzius <]] for _,player in pairs(deathList) do local player = isCreature(player) and getCreatureMaster(player) or player if(isPlayer(player) and isPlayerOn(player))then if(getDamageInMonster(cid,player) >= 50)then -- quantidade de danos em % --[[ aqui é a parte onde dar ao player seu premio por ter consegue tantos % de danos ao monstro ]]-- -- exemplos de ações doRemoveItem(getThingfromPos(Full_Items[getCreatureName(cid):lower()]).uid) doCreateItem(2283,1,getCreaturePosition(cid)) doCreateItem(4810,1,Full_Items[getCreatureName(cid):lower()]) setPlayerStorageValue(player,getStoreString('fullitems'),0) end if(M[player])then table.remove(M,player) end end end end No monstro que tu queira usar esse sistema, adicione no xml dele essas duas tags: <script> <event name = "stats"/> <event name = "deathMonster"/> </script> Pronto. Qualquer duvida, erro e etc, deixe nos comentários.
  2. Hail Xtibianos. Eu criei esse sistema, não lembro se foi a pedido de um membro ou não, para que seja interessante sempre matar o toplvl do otserver devido ao premio recebido por isso. Em config.lua adicione: huntedTopLevel = 100 -- "false" inibe o sistema; numero é o level minimo necessario para dar hunted ao toplvl.priceForEachLevelTohuntedTopLevel = 100 -- preço pago por cada lvl do toplvl ao mata-lo. Em creaturescripts.xml adicione: <event type="death" name="toplvl" script="toplvl.lua"/> Em creaturescripts/scripts/config.lua adicione: registerCreatureEvent(cid, "toplvl") Na mesma pasta, crie um arquivo lua com o nome toplvl e adicione: function onDeath(cid, corpse, deathList)local top,price = getConfigInfo("huntedTopLevel"),getConfigInfo("priceForEachLevelTohuntedTopLevel") if(isPlayer(cid))then -- hunted top level local _,level = getTopLevel() if(tonumber(level) and top and tonumber(level) >= top and tonumber(level) <= getPlayerLevel(cid))then for _,player in pairs(deathList) do if(isPlayer(player))then doPlayerAddMoney(player, getPlayerLevel(cid)*price) end end end end return trueend Agora abra o arquivo lib/050-functions.lua e adicione: function getTopLevel() --[[( Marcryzius )]]--local target,name,level = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` <= 2 ORDER BY 'level' DESC;"),"",0 if(target:getID() ~= -1) then repeat local glevel = target:getDataInt("level") if(level < glevel)then name,level = target:getDataString("name"), glevel end until not(target:next()) end target:free() return name,levelend No config.lua tu coloca o valor minimo requerido do toplvl para poder ser caçado. Duvidas, erros e qualquer outra coisa, deixe nos comentários.
  3. Hail Xtibianos. Eu fiz esse sistema como pedido de um membro há um bom tempo, mas nunca tinha postado ele e diversos sistemas que uso no meu ot server; agora resolvi postá-los. Esse é o sistema que impede dos players da mesma party se atacarem ou, também dos membros da mesma guild. Em config.lua adicione: noDamageToGuildMates = false noDamageToPartyMembers = true Em creaturescripts.xml adicione: <event type="combat" name="combat" script="combat.lua"/> Em creaturescripts/scripts/login.lua adicione: registerCreatureEvent(cid, "combat") Na mesma pasta, crie um arquivo lua chamado combat e adicione isso nele: --[[> Marcryzius <]]--function onCombat(cid, target) if(isPlayer(cid) and isPlayer(target)) then if(getConfigValue("noDamageToGuildMates") and getPlayerGuildId(cid) > 0 and getPlayerGuildId(cid) == getPlayerGuildId(target)) then return false elseif(getConfigValue("noDamageToPartyMembers") and isInParty(target) and getPartyLeader(target) == getPartyLeader(cid)) then return false end end return trueend Qualquer duvida ou erro deixe nos comentários.
  4. Tu quer mesclar o mega e o tm né? ta ai, se houver algum problema, não conte comigo.
  5. Caro membro, Seu tópico foi movido de Resolvidos para Scripts. tópico re-aberto.
  6. Poccnn

    Tibia Clients

    Eu consegui baixar sem erro algum. @Bruno Eu tenho uma pergunta: Já vem com mc o cliente?
  7. Ajudar eu até posso, só que o que tu quer da muito trabalho, além de precisar ficar testando as alterações o que eu não tenho como, pois meu servidor não é derivado e nem vou ter um pra testar nada.
  8. Sugiro arrumar um scripter para sua equipe pois isso ai tudo precisa ser revisto.
  9. Caro membro, Seu tópico foi movido de Actions e Talkactions para Scripts.
  10. Possivelmente o player não tem a storage buscada. Resolva isso.
  11. Hail Xtibianos! Eu fiz essa quest há um tempo atrás como uma forma diferente da paradox tower quest. Existem sete níveis (pode ser modificado), cada nível terá uma série de monstros, ao matar todos os monstros os players são teleportados para o andar acima, no último andar será a sala da recompensa. Deixo aqui um exemplo de como montar a tower quest. Parte superior (sala da recompensa) Parte inicial com escada. Primeira sala com monstros (aqui o sistema começa a funcionar). Implementando o sistema. Na escada tu coloca uma aid qualquer, registra no arquivo movements.xml Ex: Agora crie um arquivo lua e põe esse código nele. tower.lua Espero que gostem e qualquer dúvida ou problema no script, deixe nos comentários.
  12. Tu tens que por uma forma de controle na qual pode ser por storage, tabela com o nome dos que foram restaurados ou por outra forma de marcação.
  13. 1) possivelmente não foi possível retirar o item ou o dinheiro do player, por isso deu esse erro. Verifique outro script em seu servidor que remova item do player e tente por da mesma forma; Faz um teste também removendo o último parâmetro da função que é o "true". 2) 1 - existe uma latência para criar arquivos ou salvar informações no servidor. Eu não sei exatamente porque isso ocorre e quanto tempo demora. No meu servidor é relativamente rápido. 2 - O dinheiro. Ele pôs os itens a venda para que outros comprem e ele receba o dinheiro da venda desses itens. É apenas uma substituição de função. Substitua a função doplayerpopupfyi na função sendlist por este:
  14. Se for aquela questão de usar magia e pegar yellow skull, até agora ninguém descobriu como resolver, pelo menos até agora eu não sei.
  15. Problema resolvido, tópico fechado. Caso precise reabri-lo, contacte a administração.
  16. É um tanto complicado fazer isso, pois requer um algoritmo para criar a area de ação da magia. Só com isso que tu poderia por a contagem de tempo em todas as áreas afetadas.
  17. Foi postado aqui no fórum?
  18. Usa o ip local. 127.0.0.1 Desbloquea o programa no firewall do windows.
  19. Combat2 está sendo usado em quem toma o dano; onuseweapon é quem ataca.
  20. Poccnn

    Eu sou a lenda

    Por um tempo seria interessante. Depois que eu ficasse entediado da vida eu faria minha última ação, lançar todas as armas nucleares do mundo; não sei como, mas tentaria isso.
  21. Eu criei esse sistema de look at attack porquê eu acho ridículo quando o character fica atacando o oponente sem estar "olhando" para ele. O que ele faz? Ele volta o character que esteja atacando um oponente para o oponente. Ele não impede de andar ou de mudar de direção, porém ele vai ficar mantendo a direção voltada ao oponente. Vamos adicionar o sistema. Em: creaturescript/creaturescript.xml, adicione essa tag: Agora em: creaturescript/scripts, crie um arquivo lua e adicione isso: Dentro do mesmo diretório, abra o arquivo login.lua e adicione isso a ele onde existe outros semelhantes. Pronto. Instalado o seus sistema de look at attack. Agora quando o player atacar algum oponente, ele ficará "olhando" para ele.
  22. Poccnn

    Eu sou a lenda

    Eu discordo de tu, pois existem pessoas que são nômades, que preferem viver sozinhas. Sem leis, sem regras, tudo livre, leve e solto. Eu ia fazer o que quisesse a qualquer hora. Começaria pegando alguns tanques de guerra e sairia nas ruas atirando nos veículos e predios, só pra começar. Hehe.
  23. Esse sistema eu criei a muito tempo para quando um player compra pots e runas no npc, ele entregue uma bolsa mais adequada para cada tipo de pot e runa comprada nele. Abra o arquivo npc/libs/modulos.lua Procure pela função: Dentro dessa função, procure pela variável chamada backpack ou backpackid (não lembro como estava escrito exatamente, pois faz muito tempo que modifiquei) e apague ela. No lugar onde ela estava, adicione isso: Salve e pode fechar o arquivo. Agora abra o arquivo data/libs/050-functions.lua Adicione essa função nele: Salve e pode fechar o arquivo. Agora toda vez que alguém for comprar algum item listado na tabela bp, ele receberá (caso ele queira compra em bps) uma backpack correspondente ao item que ele comprou. Essa inserção desse sistema foi feito para a versão tfs 0.3.6 - 8.54; não sei se funciona em outras versões.
  • Quem Está Navegando   0 membros estão online

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