
Tudo que xWhiteWolf postou
-
Sistema de Reset 100%
tu só precisa fazer a modificação acima só que considerando valores pra cada classe. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local config = { minlevel = 150, --- Level inical para resetar price = 10000, --- Preço inicial para resetar newlevel = 20, --- Level após reset priceByReset = 0, --- Preço acrescentado por reset percent = 10, ---- Porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) maxresets = 10, ---- Maximo de resets levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset } local function getResets(uid) local player = Player(uid) local resets = 0 if player then resets = math.max(0, player:getStorageValue(378378)) end return resets end local function addReset(uid) local player = Player(uid) if player then local resets = getResets(uid) player:setStorageValue(378378, resets+1) doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid))) local hp = player:getMaxHealth() local resethp = hp*(config.percent/100) local differencehp = (hp - resethp) doCreatureAddHealth(uid, -differencehp) player:setMaxHealth(resethp) local mana = player:getMaxMana() local resetmana = mana*(config.percent/100) player:setMaxMana(resetmana) local differencemana = (mana - resetmana) doCreatureAddMana(uid, -differencemana) local playerid = player:getGuid() local description = resets+1 player:remove() db.query("UPDATE `players` SET `description` = ' [Reset: "..description.."]' WHERE `players`.`id`= ".. playerid .."") db.query("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."") end return true end function creatureSayCallback(cid, type, msg) if not npcHandler:isFocused(cid) then return false end local player = Player(cid) local newPrice = config.price + (getResets(cid) * config.priceByReset) local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset) if msgcontains(msg, 'reset') then if getResets(cid) < config.maxresets then npcHandler:say('You want to reset your character? It will cost '..newPrice..' gp\'s!', cid) npcHandler.topic[cid] = 1 else npcHandler:say('You already reached the maximum reset level!', cid) end elseif msgcontains(msg, 'yes') and npcHandler.topic[cid] == 1 then if player:getLevel() >= newminlevel then if player:removeMoney(newPrice) then addEvent(function() if isPlayer(cid) then addReset(cid) end end, 3000) local number = getResets(cid)+1 local msg ="---[Reset: "..number.."]-- You have reseted! You'll be disconnected in 3 seconds." player:popupFYI(msg) npcHandler.topic[cid] = 0 npcHandler:releaseFocus(cid) else npcHandler:say('Its necessary to have at least '..newPrice..' gp\'s for reseting!', cid) npcHandler.topic[cid] = 0 end else npcHandler:say('The minimum level for reseting is '..newminlevel..'!', cid) npcHandler.topic[cid] = 0 end elseif(msgcontains(msg, 'no')) and isInArray({1}, npcHandler.topic[cid]) then npcHandler.topic[cid] = 0 npcHandler:releaseFocus(cid) npcHandler:say('Ok.', cid) elseif msgcontains(msg, 'quantity') then npcHandler:say('You have a total of '..getResets(cid)..' reset(s).', cid) npcHandler.topic[cid] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) tenta assim:
-
Sistema de Reset 100%
o problema é q vc tá tentando alterar a coluna 'resets' da tabela players no banco de dados e ele tá falando q nao existe esse campo resets como era: db.executeQuery("UPDATE `players` SET `description` = ' [Reset: "..description.."]' WHERE `players`.`id`= ".. playerid .."") como vc deixou: db.query("UPDATE `players` SET `resets`=".. resets + 1 ..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."") ^-^
-
(Resolvido)Magia de Buff para :Life, Skill, e mana
troca isso aqui doPlayerSendCancel(cid, "Cooldown: [" ..os.time() - getPlayerStorageValue(cid, config.storage).."]") por doPlayerSendCancel(cid, "Cooldown: [" ..getPlayerStorageValue(cid, config.storage) - os.time() .."]") Se o if tá verificando se o storage é maior que o os.time() não tem pq subtrair o storage do os.time, se não isso obviamente vai dar um numero negativo xP Quanto a mensagem, usa doPlayerSendTextMessage, em data/lib/constant.lua vc tem o id do type que é o texto laranja; Em alguns scripts meus como frozen orb ou aegis of immortal vc tb acha essa mensagem em laranja
-
Bird Hunt System [8.54+]
vc tem razão, me desculpe. Já corrigi o tópico original :D Sim, só via pm
-
Mostrar o tempo da Magic Wall
faz o seguinte. Onde tá getTileItemById(pos, id) coloca getTileItemById(pos, id).uid > 0 se não der certo coloca pra printar getTileItemById(pos, id).uid
-
Mostrar o tempo da Magic Wall
acho q vc não entendeu como era pra usar, vc tinha que ter adicionado a função na sua lib OU declarado a função no seu script antes de usar. O erro q tá acusando tá falando q não sabe o que é a função doShowTimeByPos pq vc não declarou ela em lugar nenhum. deveria estar assim:
- (Resolvido)Magia de Buff para :Life, Skill, e mana
-
Bird Hunt System [8.54+]
seu problema na certa está aqui: actionid 14874 em todos os lugares que o player pode percorrer (da placa pra \/ todos os quadrados verdes deverão conter esse actionid) o valor do storage precisa ser o mesmo tanto no arquivo de actions quanto no arquivo de movements, ele só diz que vc ainda está na sala se seu storage for maior que 0 e ele deveria resetar seu storage pra -1 toda vez q vc sai da sala (considerando q tudo esteja configurado corretamente). Dá uma olhada no que vc fez de errado e se precisar de mais ajuda pode me chamar
- (Resolvido)Magia de Buff para :Life, Skill, e mana
-
Mostrar o tempo da Magic Wall
vc comeu bola em alguma coisa, que incompatibilidade que deu? vc precisa modificar tanto a função quanto a chamada dela pra aceitar E USAR o parametro
-
Mostrar o tempo da Magic Wall
function doShowTimeByPos(uid, pos, duration, type, id) type = type or 20 for i = 0, (duration - 1) do addEvent(function() if isCreature(uid) and getTileItemById(pos, id) then doCreatureSay(uid, tostring(duration - i), type, false, 0, pos) end end, i * 1000) end return true end doShowTimeByPos(cid, variantToPosition(var), 45, 20, 1499) -- essa linha aqui
-
Mostrar o tempo da Magic Wall
nesse check aqui if isPlayer(cid) then coloca if isPlayer(cid) and getTileItemById(pos, 1498) then dessa forma ele só vai chamar a função caso o item exista naquela posição.
- Sistema de Reset 100%
-
Quantos anos nessa vida?
Você considera os anos "gastos" com Tibia, tempo perdido? Não, pelo simples fato de que na época que eu comecei a jogar eu era criança e se não gastasse com tibia eu iria gastar com outro jogo qualquer. Aprendi inglês e graças ao Tibia aprendi sobre malandragem e como as pessoas podem ser ruins pra tirar vantagem ou conseguirem o que querem. Depois de amadurecer horrores abri mão da minha conta em troca dos OTservers, não só jogando como também virei GM de alguns e tive meus primeiros contatos com programação, o que foi fundamental pra eu ser quem eu sou hoje. Quem você era e quem se tornou? Eu era uma criança muito inocente e que frequentemente se sentia incapaz de lidar com situações do mundo real, todo mundo parecia muito mais esperto ou mais apto. Aprendi principalmente sobre psicologia, sobre manipulação e entendimento da mente humana (inclusive a minha). Foi uma viagem completa sobre autoconhecimento. Quando comecei a entrar no mundo dos OT's aprendi a programar e conheci pessoas até 10 anos mais velhas do que eu e que me deram dicas incríveis sobre como percorrer os caminhos e quais escolher. Não vou mentir e dizer que o Tibia foi o responsável por eu ser quem eu sou, grande parte do que eu consegui foi pela minha personalidade forte, porém, o Tibia como jogo foi responsável pela formação de uma parte da minha personalidade e eu o considero como a faísca inicial que iniciou toda essa explosão da minha evolução pessoal. Como ferramenta de aprendizado, a conversa muda um pouco, os fóruns foram essenciais para a prática dos meus conhecimentos, até mesmo quando eu entrei na universidade eu utilizava o TFS como forma de praticar o que eu via nas aulas. Através dos meus trabalhos, sobretudo aqui no TK é possível ver o quanto eu evolui. A seção de suporte foi minha maior escola, de "não tem como fazer isso" e "isso não dá pra fazer sem alterar a source" à "eu sei 10 maneiras de fazer isso, porém a maneira certa é modificando a source". Aprendi a respeitar as pessoas e suas dúvidas e aprendi que networking é uma coisa incrível. Atualmente estou no último ano de Ciência da Computação pela federal do ABC, uma das melhores no curso de computação do estado de SP e estou estagiando na sede da Nestlé, em SP. E uma das coisas que eu faço no trabalho é muito similar ao trabalho que eu fazia aqui no suporte. Eu podia fazer um TCC de 100 páginas sobre o que essa comunidade me ensinou, mas como já estou fazendo um TCC então fica pra próxima.
-
Sistema de Reset 100%
lol, não imaginei que ele ia retornar tanta coisa auhauh mas enfim, é db.query mesmo, agora o porquê não tá funcionando eu não sei ;~ tenta usar essa versão aqui, peguei do Mock. É em tese a mesma coisa que aquele acima porém aqui ele filtra as coisas q n deveriam ter aparecido e escreve num arquivo pra não foder seu servidor. O arquivo vai aparecer na pasta do seu server.
-
Sistema de Reset 100%
Executa isso aqui no teu server: local seen={} function dump(t,i) seen[t]=true local s={} local n=0 for k in pairs(t) do n=n+1 s[n]=k end table.sort(s) for k,v in ipairs(s) do print(i,v) v=t[v] if type(v)=="table" and not seen[v] then dump(v,i.."\t") end end end dump(_G,"") pode ser até numa talkaction, só inserir um function onSay() em cima e um return true end no final; Aí você executa a talkaction referente ao script e me fala o que ele retorna
- Sistema de Reset 100%
- Novo Sistema de Trainer [0.36~0.4]
-
Novo Sistema de Trainer [0.36~0.4]
muda aqui a posição de posi.y + 1 pra posiy. - 1 tanto na pos1 quanto na pos2 countdown(posi, {{x = posi.x - 1, y = posi.y + 1, z = posi.z}, {x = posi.x + 1 , y = posi.y + 1, z = posi.z}}) mesma coisa aqui: ArrayPos = {{x = fromPos.x - 1, y = fromPos.y + 1, z = fromPos.z}, {x = fromPos.x + 1 , y = fromPos.y + 1, z = fromPos.z}} onde tá .y +1 deixa .y -1, apenas isso (e alterar as salas no map editor)
-
[Resolvido] Bug das Mortes DBO
altera na database os players que tem com 0 de vida e deixa igual a vida max. Você vai "desbugar" eles mas precisa achar a causa do bug ainda
-
[Resolvido] Bug das Mortes DBO
se sua database for mysql vc precisa abrir o arquivo dela (tem o nome do config.lua do arquivo) ele fica na mesma pasta do executavel e vc abre usando o mysql (ve uns tutoriais na net)
-
[Resolvido] Bug das Mortes DBO
as vezes seu personagem tá com mais vida do que o máximo que a database aguenta, quando vc morre ele buga sua vida e ela fica negativa. Quando você loga ele tenta setar sua vida como negativa e acaba te matando. Pra uma primeira solução: tenta pesquisar no banco de dados os chares que estão bugando e veja se a vida deles está negativa. Se não estiver, procura algum mod ou script em creaturescripts onLogin, onDeath, onPrepareDeath. Analisa se tem algo q faça modificações na sua vida.
-
Mass Healing
vc quer um item que fique de curando? copia o ring of healing ou o life ring.
-
Mass Healing
na vdd o próprio script tem essa configuração, é essa função aqui: doSendAnimatedText(pos, "+"..lifedraw , TEXTCOLOR_GREEN) dependendo da sua versão a variavel que salva o id da cor verde tem outro nome e por isso no seu servidor não aparece. Vai em data/lib/constant.lua e procura por GREEN. Na versão 0.4 que eu uso em vez de TEXTCOLOR_GREEN ela se chama COLOR_GREEN. Dá uma procurada que você acha
-
Novo Sistema de Trainer [0.36~0.4]
isso que vc quer é exatamente o que é o sistema. Se você separar bem as salas os players sempre vão achar que estão na mesma sala isolados dos outros. A diferença é que nesse aqui vc ainda precisa fazer as salas manualmente, porém é só fazer uma e dar ctrl c e ctrl v até formar uma linha e depois dar ctrl c e ctrl v na linha inteira de salas e fazer as colunas. Se fosse pra criar a sala via script vc tornaria o sistema muito pesado :~ o algoritmo é o mesmo, o que vc vai ter que mudar é as funções do TFS. A lógica é universal, as funções que mudam com as versões. Pega as versões correspondentes e substitui que vai funcionar. não sabia desse bug, eu dificilmente mapeio pros meus scripts então nem imaginava que poderia dar algo assim. Mas agradeço por ter me explicado como resolveu, se outros tiverem esse problema eu já sei que isso pode ser uma sugestão de resolução eficaz. No mais, fico feliz que você tenha gostado do script porém devo avisar que ao criar novas salas você deve sempre manter a proporção entre linhas e entre colunas. Exemplos válidos: x = 3, y = 4 o o o o o o o o o o o o x = 2, y = 6 o o o o o o o o o o o o x = 4, y = 1 o o o o Exemplos inválidos: x = 3, y = 4 o o o o o u o o o u o o Considera o = sala e u = sem sala Se você tentar deixar alguns lugares sem sala e aumentar apenas uma ao invés da linha/coluna inteira ele vai considerar os lugares u como salas válidas e então vai transportar players pra lá e bugar o player ele dá o efeito de ter comido 100 food. Se só adicionasse vc teria que usar bot pra comer as foods e a idéia é fazer algo livre de bot pro povo só ir e largar lá no trainer. Bots spamam ações no jogo e acabam deixando ele lento. Tudo que você puder fazer no seu servidor pra evitar o uso de bots dos players você deve fazer.