Ir para conteúdo

Antharaz

Cavaleiro
  • Total de itens

    153
  • Registro em

  • Última visita

  • Dias Ganhos

    9

Tudo que Antharaz postou

  1. Tudo bem, nunca tinha participado deste desafio antes... vamos lá... antes de tudo, quero dizer que ao falar var config.rX eu me refiro ao índice rX da table config, usei var config.rX para evitar ficar muito grande, o mesmo vale para os variantes disto. Esta function countdown(pos) realiza uma contagem regressiva do que o scripter definir na variável tempo até 0 (na tela in game, enquanto no script ele aumenta a var j até chegar no valor tempo) e quando chega a 0 e, ao mesmo tempo, se a posição pos[lugares] estiver disponível, então ele cria o "monstro" (que deve ser colocado o nome no lugar de"Nome monstro") em todas posições da tabela indicada como parâmetro para a função. Lembrando que a contagem in game é feita na mesma pos onde o monstro será criado. function countdown(pos) -- apenas a ideia, pode ser que isso nao seja a prova de bugs e tenha que ser feito uma versao recursiva. for lugares = 1, #pos do for j = 0, tempo do addEvent(sendTextMessage, 1000 * j, tempo - j, pos[lugares]) if j == tempo and not check_disponivel(pos) then createMonster(pos[lugares], "Nome monstro") end end end end Essa function check_disponivel(pos) não entendi direito, creio que seja para checar se a posição está disponível para teleportar o player. function countdown(pos) -- apenas a ideia, pode ser que isso nao seja a prova de bugs e tenha que ser feito uma versao recursiva. for lugares = 1, #pos do for j = 0, tempo do addEvent(sendTextMessage, 1000 * j, tempo - j, pos[lugares]) if j == tempo and not check_disponivel(pos) then createMonster(pos[lugares], "Nome monstro") end end end end A function onStepIn(cid) apenas chama a function fazQualquerCoisa(cid) quando alguém sobe em cima do tile, mandando o uid do player como parâmetro. function onStepIn(cid) fazQualquerCoisa(cid) return true end Agora vamos a function fazQualquerCoisa(cid, i, j), esta função explicarei por partes... vamos lá... j = j or 0 p = i or 0 Se a var j existir, ela recebe o próprio valor ou, caso contrário, ela receberá o valor de 0. Já no caso da var p, se a var i existir, ela recebe o valor de i ou, caso contrário, ela receberá o valor de 0. if p > config.rX then p = 0 j = j < config.rY -1 and j + 1 or false end Se a var p for maior do que a var config.rX (acredito que seja o raio em x) então a var p vai receber 0. Depois se a var j for menor ou igual a var config.rY - 1 (acredito que seja o raio em y reduzido em 1), a var j recebe o próprio valor acrescentado de 1, caso contrário recebe o valor booleano false. if j then posi = {x = pos.x + ( p * config.distX), y = pos.y + (j * config.distY), z = pos.z} if check_disponivel(posi) then doTeleportThing(cid, posi) countdown({{x = posi.x + 1, y = posi.y - 1, z = posi.z}, {x = posi.x - 1 , y = posi.y - 1, z = posi.z}} ) else fazQualquerCoisa(p + 1, j) end end Se j existir e não for false (caso não tenha entendido como ele possa ter o valor false, ver explicação anterior), então a var posi vai receber a seguinte posição: coordenada x vai receber a variável pos.x somado da var p vezes a var config.distX (lembrando que irá multiplicar para depois somar). Com a coordenada y vai acontecer a mesma coisa, porém será a var j multiplicado pela config.distY ao invés da var p multiplicada pela var config.distX. A coordenada z vai receber a coordenada z da var pos. Se estiver disponível a pos da var posi (explicado anteriormente na function check_disponivel(posi)) então irá teleportar o player para a posi e executar o countdown (explicado anteriormente). Em countdown({{x = posi.x + 1, y = posi.y - 1, z = posi.z}, {x = posi.x - 1 , y = posi.y - 1, z = posi.z}} ) ele manda para a function countdown as posições superior direita e superior esquerda, respectivamente, de onde o player será teleportado., caso contrário, irá repetir a function fazQualquerCoisa. Nesta parte de repetir a function fazQualquerCoisa eu não entendi, pois ele manda a var p+1 aonde ele recebe o parâmetro cid e o j aonde recebe o parâmetro i, creio que o correto seria fazQualquerCoisa(cid, p + 1, j), mas enfim, o código destrinchado é este, agora vou falar para o que imagino que seja. Function fazQualquerCoisa(cid, i, j) completa abaixo: function fazQualquerCoisa(cid, i, j) -- recursao caudal j = j or 0 p = i or 0 if p > config.rX then p = 0 j = j < config.rY -1 and j + 1 or false end if j then posi = {x = pos.x + ( p * config.distX), y = pos.y + (j * config.distY), z = pos.z} if check_disponivel(posi) then doTeleportThing(cid, posi) countdown({{x = posi.x + 1, y = posi.y - 1, z = posi.z}, {x = posi.x - 1 , y = posi.y - 1, z = posi.z}} ) else fazQualquerCoisa(p + 1, j) end end end Para o que acho que foi feito este script irei postar em breve, tenho que almoçar primeiro asuhashuasuh.
  2. Não deixa de ser um comentário, bem porco né ashuasuhhuas mas um comentário
  3. No arquivo config.lua nesta parte: experienceStages = "no" rateExperience = 50 rateExperienceFromPlayers = 0 rateSkill = 100 rateMagic = 80 rateLoot = 4 rateSpawnMin = 1 rateSpawnMax = 1 Tem mais rates perto desta parte, mas aonde você deve alterar é por ae... qualquer coisa dá uma procurada masi embaixo, caso você use stages para xp, mude a linha experienceStages = "no" mudando o no para yes e altere o arquivo stages.xml localizado em data\XML.
  4. Cara, tentei por script e não consegui infelizmente... "/ perdão....
  5. Se você não postar o script fica dificil amigo...
  6. Caralhooooo.... me senti um jumento e concordo com sua risada agora... .-. ashuhuashuas se não foi deveria ter sido porque esse erro foi banal, não acredito que errei isto... :x mil perdões mestre u.u não está mais aqui quem postou aquela atrocidade <3 te amo
  7. @@Killua Não precisava dessa risada ironica ae na minha conta né... eu deixei ((perc+1)/100), logo ele somaria 1 para depois dividir por 100, o que daria 1.3... Em relação a vida máxima e a mana eu realmente não vi :x faz anos que não mecho com script e programação, então achei também que deveria verificar a vida máxima também... Claro, sempre respeitarei o pai dos scripters, grande Killua u.u lembro de ti anos atras quando comecei no forum *-* só não gostei da sua risada "rs" mesmo u.u mas te amo msm assim @@Jefferson14789 Novo script considerando a vida max e a mana max: local perc = 30 function onUse(cid, item, fromPosition, itemEx, toPosition) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)*(perc/100)) doPlayerAddMana(cid, getPlayerMaxMana(cid)*(perc/100)) return true end
  8. Ta ae o lua do action: local perc = 30 function onUse(cid, item, fromPosition, itemEx, toPosition) local vida = getCreatureHealth(cid) local vmax = getCreatureMaxHealth(cid) - (vida*((perc+1)/100)) doCreatureAddHealth(cid, vmax >= 0 and (vida*(perc/100)) or 0) return true end E agora a tag: <action itemid="2229" script="potion.lua"/>
  9. Putz, nem imaginaria que isto poderia dar problema, ainda mais por nunca ter acontecido cmg, ter rodado de boa nos erver q testei e por estar apenas como comentário... mais uma coisa que aprendi *-* obrigado pela aula <3
  10. @@zipter98 Não entendi o que você modificou no script dele que poderia ter arrumado o suposto bug, o que reparei foi que você colocou a tabela config para fora da função pois ela possui valores constantes e não precisa ser criada toda vez que se executar o onuse e adicionou espaço depois de algumas vírgulas, mas você chegou a descobrir porque deu este erro para ele? To perguntando porque realmente não vi nada que pudesse gerar o erro que ele informou :x ae seria até bom para conhecimento saber
  11. Não querendo ser chato mas funcionou perfeitamente aqui sem erro algum, olhe se você não postou o script errado..
  12. Antharaz

    Skill Level Max

    Em creaturescripts.xml coloque a tag abaixo antes de </creaturescripts>: <event type="advance" name="lvlmax" event="script" value="lvlmax.lua"/> Em data/creaturescripts/scripts crie um arquivo chamado lvlmax.lua com o código abaixo: local lvlmax = 100 function onAdvance(cid, skill, oldLevel, newLevel) if skill ~= SKILL__LEVEL and oldLevel == lvlmax then return false end return true end Agora nesta mesma pasta abra o login.lua e coloque 1 linha abaixo de function onLogin(cid) a seguinte linha: registerCreatureEvent(cid, "lvlmax") Lembrando que só não vai limitar o level do player.
  13. Amigo, sugiro que mude o "return TRUE" para a linha debaixo, ficando entre o ultimo e o penultimo "end", senao ira aparecer o player falando quando ele usar !rep.
  14. A dúvida deste usuario já foi sanada em outro tópico igual que ele criou, segue link abaixo: http://www.xtibia.com/forum/topic/237624-converter-codigo-em-uma-funcao-ajuda/#entry1674506 Não postei como link porque estou no celular, algum responsável por favor feche.
  15. Boa tarde, pelo que vi você apenas liberou os players free a usarem os addons porém eles teriam que fazer as quests para habilitá-los do mesmo jeito... Como não estou em casa, terei que pedir que você faça os teste pra mim, faça backup de um talacktion qualquer e substitua o conteúdo dele por este: local looktype = 335 local addons = 3 function onSay(cid, words, param) local msg = "Você nessecita colocar o nome do player." if param ~= '' and isPlayer(param) then local c = getPlayerByName(param) doPlayerAddOutfit(cid, looktype, addons) msg = "Comando exxecutado com sucesso" end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg) end Se o talkactions que você colocar o script for o !frags diga !frags NOME substituindo NOME pelo nome do player (ele tem que estar online), logo depois peça para o player verificar se tem o addon. No script no lugar de 335 vc coloca o looktype do outfit e em addon coloque o addon que o player irá receber, 1 para o addon 1, 2 para o addon 2 ou 3 para ele receber o 1 e o 2. Se obtiver algum erro poste aqui. Aguardo resposta
  16. Dá algum erro no console? posta o script que voce usou para ativar o addon do player por gentileza.
  17. Olha amigo, achei bem interessante esta sua ideia, vi que ninguém respondeu ainda, eu volto pra casa na segunda, se ninguém fozer seu pedido até lá eu vou tentar. Estou postando isto para você não perder as esperanças de conseguir alguém para te ajudar, caso eu demore a postar algo me envie MP cobrando.
  18. Mil perdões, achei que eu já havia postado o script para você, segue abaixo o script que exclui todos players que tem os mesmos nomes dos vips, independente se estiver online ou não. Eu usei em talkaction pois com a modificação no site, você só precisa retirar os que já tem. Eu supus que o player vip tem o storage 13540 maior ou igual a 1. Versão mysql: function onSay(cid, words, param, channel) local nomes,res = {},db.getResult("SELECT `player_id` FROM `player_storage` WHERE `value` >= 1 AND `key` = 13540;") if(res:getID() ~= -1) then repeat local id = res:getDataInt("player_id") local res2 = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..id..";") if(res2:getID() ~= -1) then table.insert(nomes,res2:getDataString("name")) end until not(res:next()) for a,b in ipairs(nomes) do b = string.sub(b, 7) db.query("DELETE FROM `players` WHERE `name` = `"..b.."`;") end end return true end Versão SQLite: function onSay(cid, words, param, channel) local nomes,res = {},db.getResult("SELECT `player_storage`.`player_id` FROM `player_storage` WHERE `player_storage`.`value` >= 1 AND `player_storage`.`key` = 13540;") if(res:getID() ~= -1) then repeat local id = res:getDataInt("player_id") local res2 = db.getResult("SELECT `players`.`name` FROM `players` WHERE `players`.`id` = "..id..";") if(res2:getID() ~= -1) then table.insert(nomes,res2:getDataString("name")) end until not(res:next()) for a,b in ipairs(nomes) do b = string.sub(b, 7) db.query("DELETE FROM `players` WHERE `players`.`name` = `"..b.."`;") end end return true end
  19. Não sabia que existia punição para isto, tem algum tempo máximo para isto/ como por exemplo, 7 dias....
  20. Boa noite, ultimamente ando me deparando com uma certa situação que me deixa (e acredito que a outros também) desmotivado, que é o fato de uma pessoa postar o que deseja na área de suporte, algum voluntário com boa alma posta a suposta solução ou então pergunta mais coisas para ir eliminando o que pode ter causado o problema do autor do tópico e este autor não postar mais nada. A partir daí você não sabe se sanou a dúvida dele, se ele descobriu como resolver sozinho (sendo que neste caso seria bom ele compartilhar com os demais) e por aí vai, sem contar que nós que ajudamos ficamos ansiosos (pelo menos eu fico) para saber se deu certo ou não... enfim, foi mais um desabafo do que uma sugestão haha, mas eu realmente acho que deveriam ser punidos os autores que abandonarem os tópicos. Ex: são banidos X dias do sub forum de suporte, não conseguindo nem ao menos visualizá-lo.
  21. Não consigo baixar o servidor, quando clico no link abre a nova aba, porém ela fecha ao mesmo tempo...
  • Quem Está Navegando   0 membros estão online

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