Tudo que Naze postou
-
(Resolvido)Totem com managain ou lifegain
Totem q adiciona no set vc se refere a oq? um Item que equipa em um slot? ou um item q usa no outro item (ex: armadura) e fixa.
-
Spell removendo PARTY
O player é removido pq o player para de existir a todos, Oq fizeram ai é uma gambiarra das brabas q se fosse vc nao usaria e procuraria fazer corretamente. As funções que da o "ghost" e volta são sendCreatureDisappear(creature, creature->getTile()->getClientIndexOfThing(this, creature)); // desaparece sendCreatureAppear(creature); // aparece o exemplo de uso dela ta la em Player::sendCreatureChangeVisible que vc usou, o motivo do crash deve ser pq ao desloga ele vai retirar party e como a um player inexistente vai da esse crash. Vai da mais trabalho ajeita isso resolvendo os próximos problemas q aparecer doq fazer algo pratico exatamente pra oq quer. @edit o desaparecimento é individual, em game.cpp tem um loop da sendCreatureChangeVisible, entao poderia fazer melhor nao ficando pros membros da party. Mas caso queira continuar usando dessa forma, da pra colocar umas verificação pra remover da party, fazer checa de player existente em tudo antes de executa... e por ai vai.
-
(Resolvido)Boss só pode receber dando quando seus summons forem mortos
@Zoodi testa amigo, se não der certo criei um topico com seu problema, evite posta em tópicos já finalizados q não são de sua autoria.
-
Teleport local variado
como falou q e 1.3 recomendo passar as posições pro padrão 1.3 - > Position(x, y, z) Testa ai local cfg = { -- [lvl] o min lvl nos conxete e maxLvL = xx [1] = {maxLvl = 19, pos = { {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, } }, [20] = {maxLvl = 29, pos = { {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, } }, [30] = {maxLvl = 30, pos = { {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, } }, [50] = {maxLvl = 50, pos = { {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, } }, } function onStepIn(player) local lvl = player:getLevel() for min, n in pairs(cfg) do x = math.random(#n.pos) if lvl >= min and lvl <= n.maxLvl then player:teleportTo(n.pos[x]) end end return true end
-
Lançar magia por talk action
Você pode fazer isso pela própria magia, defina a Word e o nome tipo m1, m2, m3 que vc deu de exemplo É dentro do script coloca todas magia e no onCastSpell vc verifica isso por getVocation ou "getArmadura" (a forma q vc usa pra identificar) If getVocation(cid) == 3 then -- chamada da spell da vocation3 return true elseif getVocation(cid) == 4 then -- chamada da spell da vocation 4 return true ..... E assim vai se for outra versão com funções diferentes, usa mesma lógica
-
(Resolvido)Random box send!
@XGaduX sim, pode colocar 1 ou quantos quiser seguindo a formatacao que coloquei
-
(Resolvido)Random box send!
local rewards = { --{item = {ID_ITEM, COUNT}, {ID_ITEM, COUNT}...}, chance = 0.porcentagem*}, <- NAO ESQUECA DA VIRGULA -- SEGUE OS EXEMPLOS: {item = {{1234, 1}}, chance = 0.02}, -- Da item 1x 1235 e 100x 2160 com 2 % de chance {item = {{5532, 1}, {2160, 100}}, chance = 0.02135}, -- da 1x 1334 e 100x 2160, chance de 2% e uns quebrados {item = {{3454, 1}, {2160, 100}}, chance = 0.10}, -- 10% de chance {item = {{7424, 1}}, chance = 0.02}, {item = {{3644, 1}, {2157, 1}, {7644, 1}}, chance = 0.0005}, } function getReward() local n = math.random() local x = math.random(#rewards) local chance = rewards[x].chance if chance >= n then return rewards[x].item end return getReward() end function onUse(cid, item, fromPos, itemEx, toPos) reward = getReward() str = "" for _, itens in pairs(reward) do doPlayerAddItem(cid, itens[1], itens[2]) str = str.." "..itens[2].."x "..getItemNameById(itens[1]).."," end doPlayerSendTextMessage(cid, 22, "Voce recebeu:"..str.." por abrir a box!") doRemoveItem(item.uid, 1) return true end Nao testei se der erro so mandar q arrumo
-
Tibia 8.60 Editor
Seu dat e spr é extendido, provavelmente seleciono isso, coloca dll ou pega um .exe extendido #edit ou o oposto
-
(Resolvido)Skill Rate/Velocidade para upar skill
É possivel, você so precisaria fazer um calculo que anule o calculo feito das 'skill_tries' necessaria pra dar o up, que vc pode achar em "Vocation::getReqSkillTries" no vocation.cpp, Ou modificar essa função para ser um valor fixo pra up. Nenhuma, como falei na primeira pergunta ela não diminui a velocidade e sim a "experiencia" que vc ganha da skill é cada vez mais necessaria para upar. è a mesma forma que acontece com Level, mas com outros cálculos. No caso é a função "Vocation::getReqSkillTries". Não entendi direito a pergunta, mas pra essa e qualquer outra do tipo, tudo possível so saber oq e onde modificar, Tudo é possivel... por script o que citou no topico ja te da um exemplo de como mudar com doPlayerSetRate(cid, skill, skillRate)
-
(Resolvido)EMOTE SPELLS TFS 0.4
Coloque aspas no numero, corrigi no post a cima. player->getStorage("474758", value);
-
(Resolvido)EMOTE SPELLS TFS 0.4
deixa seu emote spells no config.lua como false em Spells.cpp procure: SpeakClasses type = SPEAK_SAY; if(g_config.getBool(ConfigManager::EMOTE_SPELLS)) type = SPEAK_MONSTER_SAY; e abaixo coloque: std::string value; player->getStorage("474758", value); type = value == "1" ? SPEAK_MONSTER_SAY : type; agora cria uma talkaction tipo !emotespell e adiciona esse script: function onSay (cid, words, param) if param == "" then return doPlayerSendTextMessage(cid, 22, "Fale !emotespell on para ativar, e !emotespell off para desativar.") end if param =="on" then setPlayerStorageValue(cid, 474758, 1) doPlayerSendTextMessage(cid, 22, "EmoteSpell Ativado.") return true end if param =="off" then setPlayerStorageValue(cid, 474758, 0) doPlayerSendTextMessage(cid, 22, "EmoteSpell Desativado.") return true end end Testa ae se der erro avisa que arrrumo, tou no trampo entao nao tem como testa.
-
(Resolvido)NPC de task
Cara complicado te ajuda vc mando um script limpo avulso, e pediu uma verificação de storage, onde? ao falar hi? ao conversa? Faz o seguinte vou te manda esse limpo q normalmente uso pra criar npc e ele com verificação de storage das duas forma vc compara e faz do jeito que quiser.
-
AJUDA System Trainer TFS 1.3
É o mesmo script, so tirei uma função q ja existe na tfs 1.3, e mudei a checagem de tempo pra funções da lib q uso vou passa ela tbm. <movevent event="StepIn" actionid="14876" script="treiner_in.lua"/> <movevent event="StepIn" actionid="14877" script="treiner_out.lua"/> treiner_in.lua local posSend = Position(565, 2699, 6) -- posicao da primeira pos (linha 1 coluna 1) local storage = 18481 -- storage que salva a ultima vez que o player entrou (pra evitar spams) local config = { distX= 19, -- distancia em X entre cada sala (de uma mesma linha) distY= 13, -- distancia em Y entre cada sala (de uma mesma coluna) rX= 21, -- numero de colunas rY= 10 -- numero de linhas } local function heartScript(player, pos, i, j) -- isso é o coração do nosso script, nao mexa nisso 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 = Position(pos.x + ( p * config.distX), pos.y + (j * config.distY), pos.z) if Tile(posi):isWalkable() then player:teleportTo(posi) posi:sendMagicEffect(11) else heartScript(player, pos, p + 1, j) end else player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Treiners esgotados.") end end function onStepIn(player, item, position, fromPosition) if not player:exhaustCheck(storage) then heartScript(player, posSend) else player:teleportTo(fromPosition) player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Aguarde "..player:exhaustTime(storage).." para entrar novamente nos treiners.") end return true end treiner_out.lua local npos = Position(160, 54, 7) -- posição que ele vai ao sair da sala local storage = 18481 -- storage que salva a ultima vez que o player entrou (pra evitar spams) function onStepIn(player, item, pos, lastPos, fromPos, toPos, actor) player:teleportTo(npos) npos:sendMagicEffect(11) player:exhaustSet(storage, 5) return true end exhausted.lua -- coloca em lib/core, e adiciona dofile('data/lib/core/exhausted.lua') no core.lua creditos a night wolf, apenas passei pra 1.3
- AJUDA System Trainer TFS 1.3
-
Ajuda pra Adicionar mais tiles a visão do jogador (DXP)
Este tópico foi movido para a seção de Suporte Otserv Alternativo
- SCRIPT COM DELAY NO MAGICEFFECT (HELP)
-
[VIDEO] Virtualiza Linux Com Acesso "localhost" Direto do Windows
Estava precisando de uma maquina linux para alguns trabalho e testes e bancar minha vps só pra isso não é viavel, usar dual boot tbm não é do meu gosto, e criar uma maquina virtual não chegava ao ponto que exatamente eu queria, que é facilidade e trabalha no terminal do Linux. Então descobri um metodo que seria criar uma maquina virtual e rodala em background, e usar como se estivessa montado com a rede do meu Windows, podendo acessar pelo localhost, sem ta colocando numeros de porta na frente (localhost:1234). Com isso vai ta podendo trabalha em um Linux direto de seu PC, como se estivesse acessando uma VPS comum, e ter total controle de sua maquina podendo até entra na interface grafica oq nao faz sentido ja que tou fazendo isso pra nao precisa entra nela. Fiz um video explicando todos passo e deixarei os links e comando utilizado a baixo. O video está acelerado para nao ficar mais extenso. VirtualBox: download Lembre-se de desativar Hyper-V em seu windows caso tenha ativado para virtualbox funcionar corretamente. Linux Mint: download Aconselho a baixar a edição Xfce por ser mais leve e rapida.. Instalar ssh: sudo apt-get install openssh-server verificar: sudo service ssh status Codigo para criar arquivo .bat, lembre-se de trocar o diretorio de acordo com sua instalação e o nome de acordo com o que criou: Iniciar: "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "NOME DA MAQUINA" -type headless desligar: "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm "NOME DA MAQUINA" poweroff soft Acesso ssh é feito por: usuario@localhost No meu caso usei usario "naze" e cmd do windows 10 ssh naze@localhost
-
Limite de Players no Evento
osh e o resto ta faltando uma parte vou estrutura pra tu e coloca la
-
Limite de Players no Evento
Manda novamente como colocou
-
(Resolvido)Script alavanca
@Senju uchira Não é possível bro, 1.3 é orientada a objeto, já 0.4 não o servidor lê de outra forma os script. Mas pra te dá um ânimo tem um cara da comunidade criando uma lib que vai solucionar isso fazendo funcionar script 1.3 em qualquer versão. Caso tenha mais alguma dúvida cria um tópico.
-
(Resolvido)Da storage apenas se for x vocação
Olha, essa action dara apenas um, vc pode aumenta ela ou fazer varias, vai de você mais sugiro criar outro topico com mais duvida se tiver, vou encerrar esse pois a duvida do autor foi sanada.
-
AJUDA PORFAVOR
Não precisa reinicia, manda no SQL do phpmyadmin q é sucesso, mas se por acabo reinicia o mysql ou a servidor tem q manda novamente o comando isso é normal. Quando cria a guild no site, seu char deve esta offline ou a guild será criada mais não aparecerá em jogo mesmo, da mesma forma pra invitar player.
-
Error Spell / Movements 0.4
Adiciona discord e me chama que te ajudo, por aqui fica meio difícil saber oq aconteceu sem erros..
-
(Resolvido)Da storage apenas se for x vocação
@H3ITORR Esse retorna o valor da Storage, se coloca o da outfit q deseja e o cara tiver vai retorna 1, vc usa pra verificar como na action acima... getPlayerStorageValue(cid, STORAGE) Esse SET a storage no player, assim ele ganhara o valor da storage e consequentemente a outfit setPlayerStorageValue(cid, STORAGE, 1) -- 1 é o Valor da storage que recebera. Trocando os valor de onde tem essas funções conseguira usar com a que adicionou,
-
Como fasso pra mudar os dano das spells do meu dbo?
nunca vi base dbo, mas ajuda você colocando um exemplo, procura a spells q deseja em spells.xml e veja onde ta o script dela pra posta.