Ir para conteúdo

Naze

Membro
  • Registro em

  • Última visita

Tudo que Naze postou

  1. Me parece ser o problema que tem la no outro topico, com mais alguns de mal instalação, tenta manda seu monsters.cpp inteiro pra eu ver
  2. troca o getPlayerLevel(cid) por getPlayerSkillLevel(cid, SKILL_SWORD)
  3. Como falei se quiser pronto altere para pedido e aguarde alguem quer a boa vontade e tempo de fazer, ficar floodando "UP" é contra as regras e não vai ajudar em nada. Estou sem PC no momento mas me parece que vc quer algo pronto então não aguarde por mim.
  4. Naze postou uma resposta no tópico em Suporte Tibia OTServer
    Vai na posições indicada no erro com RME e deleta oq estiver lá.
  5. Olha é sempre bom posta qual servidor usa para ter mais precisão na resposta, no caso vou tenta passar como seria nas duas forma 0.4/otx e tfs 1.x/otx3, orienta e não orientada a objetos. Você teria q fazer uma action dessa forma para cada pedra. onUse(cid/player, item, fromPos, itemEx/target, toPos) Esse são um exemplo dos parâmetros usado em action. Então basicamente terá que adicionar um customAttribute no itemEx/Target, e mudar sua descrição para o efeito ganho. Na action referente a pedra você coloca verificação do tipo do item que ela foi usada (itemEx/Target) pra confirma se é sword: getItemInfo(itemEx.itemid).weaponType ou itemType(target:getID()):getType() as funções pra mudar descrição do item para os efeitos que quiser. doItemSetAttribute(itemEx.uid, "description", "TODO TEXTO AQUI") ou target:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "TODO TEXTO AQUI") e adicionar um customAttribute com valor para nos conseguir identificar e fazer o efeito, assim: doItemSetAttribute(itemEx.uid, "buff", "attack") ou target:setCustomAttribute("buff", "attack") Aqui você terá q altera os valor dependendo da pedra, "attack" por "defence" ou "life" e etc. e por ultimo remova a pedra usada: doRemoveItem(item.uid) ou item:remove() Para elaborar isso deve entender logica de programação e sua funções basica, if, and, or, the, else, end, se não souber melhor começa por isso. Agr que o item ja tem oq nos precisa, tem q fazer o efeito acontecer, será lá em creaturescript, já que estamos lidando com creature (player), primeiro o attack e defense: Você terá q criar um script onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin), dessa forma: 0.4/otx em tfs 0.4/otx é onStatusChange, vou confirma uma coisa pois a maioria utiliza de forma errada essa função e ja edito. tfs 1.3/otx3 function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) -- Aqui dentro colocara as verificações que irei descrever abaixo. -- return primaryDamage, primaryType, secondaryDamage, secondaryType end Primeiro precisara verificar se o item equipado do attacker é uma sword e tem attributo buff pega o item, item = getPlayerWeapon(cid) ou item = attacker:getSlotItem(CONST_SLOT_RIGHT) ou CONST_SLOT_LEFT e pega o atributo a partir do "item": getItemAttribute(item.uid, "buff") ou item:getCustomAttribute("buff") Faça uma verificação se o atributo pego for igual "attack": Então ira pegar o parametro primaryDamage e fazer +30% algo desse tipo: primaryDamage = primaryDamage * (1.0 + 0.3) Agora podera verificar se a creature esta com attribute "defence" na sword, usando a mesma forma de verificar "attack" apenas mudando o attacker por creature E devera novamente altera o dano, agora em -30% : primaryDamage = primaryDamage * (1.0 - 0.3) terminando essa duas verificações ele retorna o valor do dano corretamente. Lembre de colocar verificações de segurança como se o player existe, e se existe o attribute "buff". Agora o novo script para modificar a life, sera em movement com as funções onEquip e onDeEquip. Se chegar até esse momento acredito q entendeu a logica de como as coisa funciona, então talvez consiga elaborar sozinho se nao eu detalho para você depois. Aqui vou deixa 1 exemplo de onEquip e onDeEquip de cada src, vc tera q aplica a mesma logica para verificar o item e buff, e compara com "life": tfs 0.4/otx tfs 1.3/otx3 Usando essas funções como base você altera o conteudo dela conforme fez no creaturescript. E poderá aumenta a vida máxima do player quando ele equipar (onEquip) e diminuir quando ele desequipar (onDeEquip), usando setCreatureMaxHealth(cid, health) ou creature:setMaxHealth(health) Talvez não seja isso que queria, mas se conseguir entender e montar vai ter um avanço que precisa. Não tenha pressa, entende a logica da programação e lua, e depois olhe outros script mais simples para tenta entender como tudo é montado. Qualquer duvida manda q demoro mas respondo, e se realmente tenta e não conseguir futuramente faço e posto. Agora se oq queria era um pedido pronto, pode colar isso no tópico e alguém faz pra você talvez.
  6. Este tópico foi movido para a seção de Suporte Otserv. Não sei como funciona o Raid que vc ta falando, mas se for por lua tenta procurar salvar .log ou .txt em lua, caso for totalmente em xml, vc tera q procurar isso em c++ (vai achar mais facil), como salvar em c++ e adicionar na src na parte do raid. Tou com pouco tempo, mas tenta da um pesquisada sobre e qualquer duvida posta q demoro mas respondo. Obs: falo pesquisa no google mesmo, fora da comunidade que a logica é a mesma e mais facil de encontra algo.
  7. Essa é a action da wall, so configura as posições, nome, storage e tempo local cfg = { stor = 55555, pos_player = {x = 130, y = 68, z = 7}, pos_mob = {x = 131, y = 69, z = 7}, name_mob = "Demon", time = 10, } function teleportAndSpawn(cid) doTeleportThing(cid, cfg.pos_player) while cfg.time >= 1 do addEvent(doSendAnimatedText, (cfg.time*1000), cfg.pos_mob, -(cfg.time-11), math.random(1,255)) cfg.time = cfg.time - 1 end addEvent(doSummonCreature, 10000, cfg.name_mob, cfg.pos_mob) end function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, cfg.stor) < 1 then doPlayerSendTextMessage(cid, 22, "Você não tem permissão!") return false end teleportAndSpawn(cid) doPlayerSendTextMessage(cid, 22, "Em 10 segundos o Boss aparecera.") return true end em creaturescripts.xml adiciona esse tag <event type="death" name="DeathTaskBoss" event="script" value="nomedoscript.lua"/> Em creaturescripts/scripts cria esse script e configura o nomedoscritps e stor e msgs. local name_boss = "Demon" local stor = 55555 function onDeath(cid, corpse, deathList) if getCreatureName(cid) == name_boss then if getPlayerStorageValue(deathList[1], stor) >= 1 then setPlayerStorageValue(deathList[1], stor, 0) doPlayerSendTextMessage(deathList[1], 22,"Você derrotou o Boss Parabéns!") end end return true end por ultimo para funciona vai no boss e adiciona esse tag antes do </monster> <script> <event name="DeathTaskBoss"/> </script> Faça tudo correto que vai funcionar já testei.
  8. Ctz, tenta reinstalar o sistema, ou usa gdb para ver que função ta errada.
  9. As resposta do pessoal a cima ja ta bem completa, só digo que não é difícil é demorado, você vai precisar aprender como é todo funcionamento(logica) pra as coisas acontecer, pode começa estudando o data/ (datapack), e modules no otclient, aprendendo scirpt em .lua, e quando dominar ai começar estudar as sources. Como Jazz falou sempre tem os mal intencionado, mas se só quer aprender e fazer algo bom, faça vc mesmo. Fazendo a pergunta certa vai longe, eu tinha conhecimento muito básico começo desse ano, e pode acreditar que nesse período de um ano (quarentena) aprendi tudo que queria, e que achava q iria demora uns 2 anos.
  10. @Nysman isso é pq string.explode nao tem na tfs 1.0 e foi mudado para string.splitTrimmed
  11. vai em global.lua e adiciona string.splitTrimmed = function(str, sep) local res = {} for v in str:gmatch("([^" .. sep .. "]+)") do res[#res + 1] = v:trim() end return res end de qualquer forma, se o comando foi agr o problema ta na account e char q tava usando. se deixar dessa forma sem a verificação, qualquer um vai poder usar
  12. retira if player:getGroup():getId() < 3 then return false end e testa se funcionar, o problema é seu char e accont, se nao funcionar vc ta fazendo algo de errado na instalação, serve para os outros scripts postado antes tbm, exceto aquele q deu erro no string.explode
  13. modifiquei la para verifica so group, tenta agr
  14. nao, como falei a conta que esta testando deve nao ter acesso
  15. function onSay(player, words, param) if player:getGroup():getId() < 3 then return false end local split = param:splitTrimmed(",") if not split[1] then player:sendCancelMessage("Necessita de pelo menos um parametro") return false end local item = tonumber(split[1]) and ItemType(tonumber(split[1])) or ItemType(split[1]) local itemid = item:getId() count = 1 if split[2] then count = tonumber(split[2]) > 0 and tonumber(split[2]) or 1 end if itemid > 0 then for _, pid in pairs(Game.getPlayers()) do if pid:addItem(itemid, count, false) then pid:sendTextMessage(22, "Você ganhou " ..count.. "x " ..item:getName().. ".") end end return true end player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Item invalido!") return false end <talkaction words="!additem" separator=" " script="additem.lua" /> Pode usa com nome do item ou id, com parametro de quantidade e se tiver sem vai entregar só 1 !additem gold coin, 99 Se nao estiver funcionando vc precisa ver se o char q está testando está configurado certo para usar os comandos, pois o do worthdavi deveria está funcionando tbm. Ve algum comando que usa ja e muda o começo que verifica se é da staff
  16. Isso é um erro de sintexe é bem comum, e simples de resolver se tá começando pode aprende fácil, no caso XML tem uma forma correta de ser escrita para que outra linguagem possa ler ele, e ai deve ter algo incorreto. Se procurar no Google aprende fácil como é sua sintexe, mas pode ajuda a muito mais baixando um editor(notpepad) apropriado que normalmente acusam quando tem algo incorreto, ex: notepad++, sublime 3, vs code Se for só oq postou aí nessa linha: function" value="onDeEquipItem"/ , falta fechamento dela. <movevent type="DeEquip" itemid="9808" slot="armor" event="function" value="onDeEquipItem"/> Não dá pra saber se items que adicionou tá completo mas sempre que abre um <item id=......, com attributes, no final tem que ter um fechamento assim </item>, tome movements como exemplo.
  17. acho esse problema nao ocorre na tfs 1.3 alias se ocorrer a função q remove item ja tem parâmetro pra solucionar player:removeItem(itemId, count[, subType = -1[, ignoreEquipped = false]])
  18. Sou leigo em otclient pretendo começa a estuda tbm ele logo, mas pode tentar tirar sua duvidas no discord https://discord.gg/nf8MstNq tera mais gente em tempo real para te ajudar. Mas há bastante material perdido na net, so procurar que vai achar.
  19. Naze postou uma resposta no tópico em Suporte Tibia OTServer
    Este tópico foi movido para a seção de Suporte Otserv. Procura tutoriais aqui no TK mesmo vai achar vários ensinando chegar até a parte da compilação no Linux, esse em questão é uma Otx q mudaram nome pra TFS 0.5. Vai precisar instalar essas libs : apt-get install git subversion autoconf build-essential pkg-config libboost-dev libgmp3-dev libxml2-dev liblua5.1-0-dev libmysqlclient-dev ccache libboost-filesystem-dev libboost-regex-dev libboost-system-dev libboost-thread-dev screen libssl-dev libboost-iostreams-dev e após instalar ela, vai ir na pasta da source e da comandos: make clean make Se não me engano talvez de erro e precisa remover algo em Makefile, mas se chegar até ai so posta q ajudo.
  20. Este tópico foi movido para a seção de Suporte Otserv Alternativo Não entendi sua pergunta, exemplifica melhor oq quer q o shooteffect faz
  21. Este tópico foi movido para a seção de Suporte Otserv.
  22. Este tópico foi arquivado para que possamos fazer a manutenção dos conteúdos na seção onde ele ficava. Ele ficará disponível para consulta à aqueles que precisarem, no entanto permanecerá fechado. Se você precisar comentar sobre ou tirar alguma dúvida busque a seção coerente com o assunto desde tópico ou a de suporte.
  23. Este tópico foi movido para a seção de Suporte Otserv.

Informação Importante

Confirmação de Termo