
Tudo que xWhiteWolf postou
-
[Duvida] registrar informações
pra fazer rank é só fazer uma query no banco de dados do servidor. Calma q esse papo tá muito disléxico, oque vc quer especificamente? pra cada problema a forma de solucionar varia, se vc quer q eu te explique qnd usar cada forma eu posso fazer mas preciso primeiro entender oque vc quer..
- [Duvida] registrar informações
-
Movement para Monsters
http://www.tibiaking.com/forum/topic/53090-getcreaturepathto/ em Lua vc faz um addEvent pra ele ir caminhando por esses passos e a cada passo q ele der ele checa se tem alguma criatura na tela q ele possa dar target, se tiver ele dá target nela. Aí vc faz um onKill que qnd a criatura morrer vc faz ela caminhar dnv até o nexus. Só cuidado q essa função tem um limite de 50 sqms se nao me engano, mas dá pra fazer ele andar até o meio e depois andar do meio até o fim
-
(Resolvido)Spell Continua
arrumado: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) function skiaiho(cid, level, maglevel) local min = -(level * 4.3+ maglevel * 12 +50) local max = -(level * 5.6+ maglevel * 13 +150) return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "skiaiho") local manacost = 40 -- qnt de mana por segundo local storage = 42719 -- nao mexa (salva se a spell esta ativa ou nao) local function manadraw(uid, mana, combat, var) if isCreature(uid) then if getCreatureMana(uid) >= mana and getPlayerStorageValue(uid, storage) >= 1 then doPlayerAddMana(uid, -mana) doCombat(uid, combat, var) -- faz o combat addEvent(manadraw, 1000, uid, mana, combat, var) -- chama a função novamente else setPlayerStorageValue(uid, storage, 0) -- se usar dnv cancela doPlayerSendCancel(uid, "The spell was canceled.") end end end function onCastSpell(cid, var) if exhaustion.check(cid, 23056) == false then if getPlayerStorageValue(cid, storage) <= 0 then setPlayerStorageValue(cid, storage, 1) exhaustion.set(cid, 23056, 5) manadraw(cid, manacost, combat, var) else setPlayerStorageValue(cid, storage, 0) -- se usar dnv cancela doPlayerSendCancel(cid, "The spell was canceled.") end else doPlayerSendCancel(cid, "Cooldown for Death is " ..exhaustion.get(cid, 23056).." seconds") return false end return true end
-
[Pedido] NPC que transfira pontos físicos no jogo em pontos no site
tenta assim local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local function getCount(s) local b = s:match('%d+') return b and math.min(4294967295, b) or false end ---- local item = 9970 if msgcontains(msg, 'transfer') then selfSay('Please tell me the amount that you want change.', cid) talkState[talkUser] = 1 elseif(getCount(msg) and talkState[talkUser] == 1) then count = getCount(msg) selfSay('Do you want change ' .. count .. ' '.. getItemNameById(item) ..' for ' .. count .. ' premium points in the website?', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 and msgcontains(msg, 'yes') then if getPlayerItemCount(cid, item) >= count then if doPlayerRemoveItem(cid, item, count) then db.query("UPDATE `accounts` SET `premium_points` = `premium_points` + ".. count .." where id="..getPlayerAccountId(cid)) selfSay('Very well. You have transfered ' .. count .. ' '.. getItemNameById(item) ..' for ' .. count .. ' premium points.', cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) else selfSay('You do not have the items.', cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end else selfSay('You do not have the items.', cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end elseif talkState[talkUser] == 2 and msgcontains(msg, 'no') then selfSay('Ok then.', cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
- Dodge System 8.54+
-
[Pedido] NPC que transfira pontos físicos no jogo em pontos no site
cara, que erro bizarro.. qnd vc abre o sv dá algum erro relacionado ao npc? pq o erro q tá falando é como se tentasse carregar ele no sv e ele não existisse
-
(Resolvido)Spell Continua
qnd vc chama a função assim: manadraw(cid, manacost, combat, var) os parametros que eu passei serão substituidos na função base local function manadraw(uid, mana, combat, var) if isCreature(uid) then if getCreatureMana(uid) >= mana and getPlayerStorageValue(uid, storage) >= 1 then doPlayerAddMana(uid, -mana) doCombat(uid, combat, var) -- faz o combat addEvent(manadraw, 1000, uid, mana, combat, var) -- chama a função novamente end end end e ela ficará assim: Usar uid é só uma convenção, se eu escrevesse pizza ali e dentro da função me referisse à pizza também daria certo. Tem gente que cria as funções direto com cid mas como cid é padrão do paramêtro do callback, então boto uid.
-
Forcem músicas
tu curte rap então? https://www.youtube.com/watch?v=wzMrK-aGCug https://www.youtube.com/watch?v=tMgkt9jdjTU e qlqer uma do eminem (recomendo Still don't give a fuck, Till I collapse e Go to sleep)
-
Forcem músicas
e esse tb https://www.youtube.com/watch?v=FzU5Q4uI3iw
-
[MOD] Arena Quest Svargrond 100%
seu servidor tá falando q vc nao tem essa função.. tenta trocar por setItemAttribute(tpaid, "aid", 25200)
-
[Pedido] NPC que transfira pontos físicos no jogo em pontos no site
<npc name="Transfer" script="data/npc/scripts/transfer.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="134" head="39" body="113" legs="38" feet="0" addons="3"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|.I've been wondering if you would never appear.. Do you want to {transfer} your points?" /> </parameters> </npc> deixa o xml assim
-
Dúvida script que consulta database
só usar dentro de uma talkaction e colocar param ali no terceiro parametro setPlayerStorageValue(cid, 42384, param)
-
Dúvida script que consulta database
setPlayerStorageValue(cid, 42384, "isso é um teste") getPlayerStorageValue(cid, 42384) vai retornar "isso é um teste"
-
Dúvida script que consulta database
dá pra salvar em qlqer storage a frase, fica mais fácil que criar um campo na database só pra vc botar uma frase e testar..
-
[Pedido] NPC que transfira pontos físicos no jogo em pontos no site
tenta assim
-
(Resolvido)Spell Continua
tenta assim
-
Glacier Set dando conditions em área
qnd vc solta spell em área abre PK se tiver com a mãozinha aberta? faz anos q n entro no tibia, não me recordo.
-
[Pedido] NPC que transfira pontos físicos no jogo em pontos no site
count[cid] = getCount(msg) /\ to indo pra aula agr, depois eu ajudo.. mas acho q o problema é essa parte aqui e outra: TFS 0.4 é db.query em vez de db.executeQuery
-
Glacier Set dando conditions em área
realmente, vc tem razão... o foda é que n existe função pra retornar se a mãozinha do pk tá fechada ou aberta, se não era tranquilo. Talvez eu refaça esse script utilizando combat semelhante à spells, aí a própria source se encarrega desse esquema de atacar pk
-
Forcem músicas
https://www.youtube.com/watch?v=6ndTM67m3HE
- Slot System Duvida
-
Tibia Guitar Hero [0.3.6~0.4]
só o pessoal da equipe curtindo e comentando.. o Wakon mandou o link no skype? haha
-
Glacier Set dando conditions em área
tem um jeito melhor de resolver isso, é só checar se o player tem skull yellow, red ou black na hr de adicionar a condition nele. Aí vc nao pega pk
-
Tibia Guitar Hero [0.3.6~0.4]
Fala pessoal, hoje vim trazer pra vocês um sistema que eu desenvolvi em outro fórum e decidi trazer pra cá Chega de falatório e vamos direto aos negócios: Introdução: O sistema em si é uma cópia dos jogos de ritmo (GuitarFreaks, Band Hero, Rocksmith e o próprio Guitar Hero). Neste jogo pequenas notas irão cair pela tela até atingir um local especial, onde você poderá usar as teclas (Shift + 7, Shift + 8, Shift + 9, ou apenas 7, 9 e 9 [com Num Lock desativado]) para escolher as direções que as notas estão afim de "ativá-las". Uma vez ativada a nota ela será "queimada" e será considerado 1 acerto. Caso você não consiga ativar a nota e ela passar direto, um efeito de fumaça indicará o "Miss", o mesmo vale para se você tentar ativar uma região sem notas. Sistema de pontuação: Haverão 3 classificadores estatísticos para cada música tocada, sendo eles: Notas acertadas: O principal fator de ponto, ele que definirá seu recorde e o valor máximo q ele pode assumir será o número de notas da música. Movimentos errados: Quantidade de movimentos que você fez para alguma região que não possuia notas, conta como pontuação punitiva. Notas passadas/erradas: Quantidade de notas que você deixou escapar, note que as notas acertadas + notas passadas compõe o número total de notas da música. Por enquanto o sistema não possui nenhum preço para se jogar mas também não possui nenhuma recompensa, fiz com o intuito de ser apenas um mini game divertido dentro do Tibia. Porém o código é livre e está disponibilizado aqui embaixo pra qualquer um modificar como desejar. Video explicativo: Dificuldades: O mini game possui 3 dificuldades, porém essa quantidade é tão configurável quanto as pré definições de cada dificuldade. Além da quantidade de notas ser diferente, a velocidade com que elas descem e consequentemente o tempo que você tem pra acertá-las fica diminuido. Diferenciais: Um forte diferencial desse sistema é que ele foi feito seguindo todas as regras possíveis pra melhorar seu desempenho, desde funções recursivas leves até separação em funções encapsuladas que carregam apenas as informações necessárias. O sistema contém também algumas seguranças que serão explicadas mais abaixo juntamente com o código para prevenir bugs e garantir diversão sem dores de cabeça! Instalação (Map Editor): Primeiramente faça uma área parecida com essa daqui: Não precisa ser igualzinha, apenas seguir a mesma proporção Agora use a ferramenta de No-Logout para setar os quadradinhos que contém UID e UID2 escritos como No-Logout, isso vai impedir que players desloguem e fiquem presos dentro da sala (se eles derem exit, quando eles relogarem estarão do lado de fora da sala) Ainda olhando a foto acima, coloque 42320 nos pisos que estão escritos UID, e 42319 no piso que contém UID2. Nas alavancas, coloque uid 2819 em todas elas e coloque actionid 101 para a alavanca do fácil, 102 na alavanca do médio e 103 na do dificil; A regra é sempre 100 + dificuldade, como nós estamos utilizando apenas 3 será do 101 ao 103. Note que se você esquecer ou colocar uma dificuldade não existente o sistema adotará a dificuldade 1 como padrão para aquela alavanca. Se chegou até aqui, meus parabéns. Muito provável que você tenha feito tudo certo. Agora vamos à parte do código. Instalação (scripts): Em actions.xml insira essa linha <action uniqueid="2819" event="script" value="GHtest.lua"/> Agora em data/actions/scripts crie um arquivo com extensão.lua e chameo de GHtest. Insira o seguinte bloco de instruções dentro dele: Aproveite e já configure as posições npos, startPos e finalPos de acordo com as posições do seu map editor (olhe na segunda imagem para ver onde deve ser cada uma das posições com base na sala) Feito isso crie um arquivo em data/lib com nome qualquer, aqui em casa eu utilizei o nome 120 - Guitar Hero Lib e a extensão.lua. Coloque isto dentro desse arquivo e salve: Agora adicione a seguinte tag em data/movements/movements.xml: <movevent type="StepIn" uniqueid="42320;42319" event="script" value="GHTestmov.lua"/> Por fim crie um arquivo chamado GHTestmov.lua em data/movements/scripts e preencha seu conteúdo com as linhas abaixo: Aproveite para deixar a npos idêntica à npos que você configurou lá no actions se baseando na posição da sua sala no map editor. ------------------------ FIM ------------------ O sistema já deve funcionar como foi planejado, se você não manja de código ou quer o sistema exatamente como foi mostrado no vídeo você pode ignorar a parte abaixo. Configurando seu sistema (básico): Para as pessoas que querem configurar apenas as coisas básicas, você pode fazê-lo nas primeiras linhas de cada script (actions/movements) ou alterando diretamente na lib, irei ensinar passo a passo aqui oque significa cada coisa. Alterando a lib As coisas básicas que podem ser alteradas na lib são as seguintes: dif = { -- [dificuldade] = notas que serao tocadas (nil = vazio, 0 = primeira posicao, 1 = segunda e 2 = terceira) [1] = {nil,nil,0,1,2,nil,nil,2,1,1,0,0,2,0,1}, [2] = {nil,nil,0,1,1,2,1,1,0,0,2,0,1,nil,1,2,1,1,0,0,2,0,1}, [3] = {nil,nil,0,nil,1,nil,1,1,0,0,2,0,1,1,1,nil,0,2,1,1,0,0,2,1,1,0,nil,2,2,1,1,1,1,2} } delay = { -- delay entre cada nota de acordo com a dificuldade [dificuldade] = delay [1] = 500, [2] = 400, [3] = 300 } recorde = { -- salva os recordes de cada dificuldade separadamente [1] = 12724, [2] = 12725, [3] = 12726 } dif separa como será cada música de cada dificuldade, as notas sempre serão nesse exato formato. nil significa que não estarei usando posição nenhuma naquela linha, 0 significa a primeira posição (nota verde), 1 significa segunda opção (nota vermelha) e 2 significa terceira opção (nota azul). Eu aconselho a começar todas as músicas com 2 ou mais 'nil' para dar tempo de o player entender que vai começar. A distribuição que eu usei foi meio que aleatória então sinta-se a vontade pra mudar tanto o tamanho das musicas quanto a variedade de notas. delay é a tabela que oganiza os delays de cada dificuldade, isso significa que para a dificuldade 1(fácil) nós temos 500 milisegundos para cada mudança de nota (1000 milisegundos = 1 segundo), ou seja, a cada 2 passadas de nota temos 1 segundo dentro da sala. No modo hard a cada 300 milisegundos mudamos a nota, deixando o jogo muito mais rápido e dificil. recorde é a tabela que possui os storages que irão salvar os recordes nas respectivas dificuldades. Alterando actions local storage_point = 12721 -- storage que salva os pontos local storage_erradas = 12722 -- storage que salva as notas erradas local storage_passadas = 12723 -- storage que salva as notas que passaram Apenas mude os storages Alterando movements local itemid = 1680 --- coloque o id da nota do meio local npos = {x = 141, y = 51, z = 7} -- posicao que ira nascer a primeira nota local storage_point = 12721 -- storage que salva os pontos local storage_erradas = 12722 -- storage que salva as notas erradas local storage_passadas = 12723 -- storage que salva as notas que passaram aconselho mexer somente nos storages, mantendo igual à action. Só abra o spoiler abaixo se você estiver descontente com a forma que seu código roda e tiver certeza absoluta de que você tem o conhecimento necessário para alterar as coisas que vou explicar. Configurações (intermédiarias e avançadas) Espero que vocês tenham curtido, façam um bom uso e qualquer dúvida postem nos comentários abaixo. Agradecimento ao @dalvorsn pela função que limpa a sala antes de começar o jogo e ao pessoal do servidor Refugia que fez um script de guitar hero lá e me deu a idéia. Abraços do Lobo.