Tudo que Naze postou
-
Otimizado: AutoLoot in Sources for Otx(2 ou menor)
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
-
(Resolvido)Tile por skill
troca o getPlayerLevel(cid) por getPlayerSkillLevel(cid, SKILL_SWORD)
-
Ajuda, to com ideia preciso de ajuda!
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.
-
Erro Distro
Vai na posições indicada no erro com RME e deleta oq estiver lá.
-
Ajuda, to com ideia preciso de ajuda!
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.
-
Sistema de Raid automático com gravação de log
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.
-
Wall que verificar se o Player tem storage
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.
-
Otimizado: AutoLoot in Sources for Otx(2 ou menor)
Ctz, tenta reinstalar o sistema, ou usa gdb para ver que função ta errada.
- Óculos do Morpheus
-
Projeto de Poketibia e mais uns perguntas.
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.
-
[PEDIDO] SCRIPT DE DAR ITENS PARA TODOS OS PLAYERS ONLINE 1.0
@Nysman isso é pq string.explode nao tem na tfs 1.0 e foi mudado para string.splitTrimmed
-
[PEDIDO] SCRIPT DE DAR ITENS PARA TODOS OS PLAYERS ONLINE 1.0
Faz o teste
-
[PEDIDO] SCRIPT DE DAR ITENS PARA TODOS OS PLAYERS ONLINE 1.0
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
-
[PEDIDO] SCRIPT DE DAR ITENS PARA TODOS OS PLAYERS ONLINE 1.0
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
-
[PEDIDO] SCRIPT DE DAR ITENS PARA TODOS OS PLAYERS ONLINE 1.0
modifiquei la para verifica so group, tenta agr
-
[PEDIDO] SCRIPT DE DAR ITENS PARA TODOS OS PLAYERS ONLINE 1.0
nao, como falei a conta que esta testando deve nao ter acesso
-
[PEDIDO] SCRIPT DE DAR ITENS PARA TODOS OS PLAYERS ONLINE 1.0
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
-
esta dando erro ao tentar editar um item ou criar no item.xml e no movements.xml pf me ajuda
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.
-
[NPC] Fixando BUG de o NPC comprar itens equipados nos slots(corpo)!
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]])
-
(Resolvido)Iniciante em OTservers, tentando editar OTC
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.
-
Compilando tfs otx
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.
-
Alterando dimensao do Shoot Effects
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
-
[Script] Boss por X Kills de Monsters
Este tópico foi movido para a seção de Suporte Otserv.
-
Erro ao Instalar Gesior - STEP 5
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.
-
Pagseguro erro ao comprar pontos
Este tópico foi movido para a seção de Suporte Otserv.