Ir para conteúdo

Reds

Membro
  • Registro em

  • Última visita

Tudo que Reds postou

  1. Reds postou uma resposta no tópico em Tutoriais sobre Scripting
    São os parâmetros que você passa para calcular o dano, tem a fórmula simplificada que é com 4 parametros. Esses são os padrões da SD, mas você pode modificar. Aqui tem um tutorial explicando como funcionam essas fórmulas:
  2. local displayoutput = {"Level","Magic Level","Fist Fighting","Club Fighting","Sword Fighting","Axe Fighting","Distance Fighting","Shielding", "Resets"} local itemtype = {9969,9933,5896,8929,8932,7388,8849,8906,2580, xxxx} function onSay(cid, words, param) number = 1 param = string.lower(param) skilllist = "" command = TRUE if param == "level" then display = 1 elseif param == "magic" then display = 2 elseif param == "club" then id = 1 display = 4 elseif param == "sword" then id = 2 display = 5 elseif param == "axe" then id = 3 display = 6 elseif param == "distance" then id = 4 display = 7 elseif param == "shield" then id = 5 display = 8 elseif param == "resets" then display = 9 else error = 'Highscore Commands:\n\n!rank level\n!rank magic\n!rank fist\n!rank club\n!rank sword\n!rank axe\n!rank distance\n!rank shield\n' doShowTextDialog(cid, 5958, error) command = FALSE end if command ~= FALSE then if display == 1 then local player = db.getResult("SELECT `name`, `level` FROM `players` WHERE group_id < '2' ORDER BY `level` DESC LIMIT 50;") if(player:getID() ~= -1) then while (true) do local name = player:getDataString("name") local level = player:getDataInt("level") skilllist = skilllist.. "\n#"..string.format("%5s",number.." "..name.." - "..level) number = number + 1 if not(player:next()) then break end end player:free() end elseif display == 2 then local player = db.getResult("SELECT `name`, `maglevel` FROM `players` WHERE group_id < '2' ORDER BY `maglevel` DESC LIMIT 50;") if(player:getID() ~= -1) then while (true) do local name = player:getDataString("name") local maglevel = player:getDataInt("maglevel") skilllist = skilllist.. "\n#"..string.format("%5s",number.." "..name.." - "..maglevel) if not(player:next()) then break end number = number + 1 end end player:free() elseif display == 9 then local player = db.getResult("SELECT 'name', 'resets' FROM 'players' WHERE group_id < '2' ORDER BY 'resets' DESC LIMIT 50;") if(player:getID() ~= -1) then while (true) do local name = player:getDataString("name") local resets = player:getDataInt("resets") skilllist = skilllist.. "\n#"..string.format("%5s",number.." "..name.." - "..resets) if not(player:next()) then break end number = number + 1 end end player:free() else local skills = db.getResult("SELECT `player_id`, `value`, `skillid` FROM `player_skills` WHERE `skillid` = "..id.." ORDER BY `value` DESC;") while (true) do local GUID = skills:getDataInt("player_id") local value = skills:getDataInt("value") local skillid = skills:getDataInt("skillid") local player = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..GUID.." and group_id < '2' ") if(player:getID() ~= -1) then local name = player:getDataString("name") skilllist = skilllist.. "\n#"..string.format("%5s",number.." "..name.." - "..value) number = number + 1 player:free() end if number > 50 then break end if not(skills:next()) then break end end skills:free() end dialog = ""..displayoutput[display].." Highscores: \n "..skilllist.."" doShowTextDialog(cid, itemtype[display], dialog) end end só configura o item que você quer que apareça no lugar de xxxx
  3. local config = { [1] = 113, -- [Vocation] = 71 = Roupa [2] = 114, -- Naruto } function onStepIn(cid, item, pos) setPlayerStorageValue(cid, 29102901, getCreatureOutfit(cid).looktype) if (config[getPlayerVocation(cid)]) then doCreatureChangeOutfit (cid, {lookType = config[getPlayerVocation(cid)]}) elseif (config[getPlayerVocation(cid)]) then doCreatureChangeOutfit (cid, {lookType = config[getPlayerVocation(cid)]}) end doSendMagicEffect(getThingPos(cid), 2) doSendAnimatedText(getPlayerPosition(cid),"Que Frio!", math.random(01,255)) return true end function onStepOut(cid, item, position, fromPosition) local oldOutfit = getPlayerStorageValue(cid, 29102901) doCreatureChangeOutfit (cid, {lookType = oldOutfit}) return true end testa ai
  4. Sim, para isso você precisa conseguir alterar seu .spr e seu .dat, aqui no tibiaking tem vários tutoriais sobre isso. Como esse:
  5. É a query que mandei, quando eu chegar em casa eu arrumo no código caso minguem tenha feito
  6. Eu faço quando estiver em casa, é só salvar em storages a outfit e cores do cara e usar um stepOut
  7. Você ja tem algo que salva os comandos?
  8. Voce quer que volte a que ele tava antes?
  9. Como você quer mostrar o ranking? No site? A query é +- assim: SELECT name, resets FROM player s WHERE ORDERBY reset DESC limit X. onde x é o número de resultados que vc quer buscar
  10. Coloca para precisar target no spells.xml Dependendo a versão do seu server vai ser target="true" Ou needTarget="true" Olha em alguma outra spell
  11. Reds postou uma resposta no tópico em Tutoriais sobre Scripting
    Math.random(0,4), ele retorna um número aleatório entre 0 e 4, e caso esse número seja 1 o combo é feito. Caso queira 50% deve ser math.random(1,2) ou (0,1) por exemplo que já funciona
  12. Reds postou uma resposta no tópico em Tutoriais sobre Scripting
    Hoje estou trazendo um script bem simples, mas que é muito divertido.. Uma modificação no script da SD, mas que você pode utilizar em alguma outra rune/spell. O que eu fiz foi modificar para a SD ter uma chance de dar "double hit", nesse caso 20%. Para fazer isso é bem simples, altere o código da sua SD para: Lembro que foi um dos primeiros que consegui fazer sozinho e que na época me trouxe muita alegria, hoje quando abri para fazer o tópico, consegui perceber o quanto evoluí. E é claro que essa já é a versão refatorada. Testado em TFS 0.4
  13. Reds postou uma resposta no tópico em Suporte Tibia OTServer
    tudo depende do que você for fazer, mas sim pode ser bem básico.. não estou mais acessando o discord
  14. Reds postou uma resposta no tópico em Suporte Tibia OTServer
    eu tinha os mesmos problemas que você, fazia algumas coisas no chute até dar certo.. estou montando algumas aulas para o pessoal iniciante como você.. em lua a palavra THEN vai vir depois de um if, um if é utilizado para verificar se determinada condição é verdadeira, caso for verdadeira ele executa o código dentro do IF o == significa que o valor da esquerda deve ser exatamente igual ao da direita, caso sejam iguais o código dentro do if é executado exemplo: val = 5 -- atribui o valor 5 à variável val if (val == 5) then -- caso val seja igual a 5, ele irá executar o código aqui dentro end -- esse end ta dizendo que os códigos de dentro do if terminam return true, é o retorno de algum script, mas para você entender bem (e também o que a maioria das vezes acontece em códigos "nativos" do tibia) vou dar o seguinte exemplo: troca um return true de uma spell qualquer para return false, ela vai ser impedida de ser executada.. enfim, tenta aprender sobre lógica, pode ser em outra linguagem, tipo python ou C, assim você vai entender melhor as estruturas de um código, if, for, funções e etc.. depois que souber o básico recomendo esse site: https://www.urionlinejudge.com.br/judge/pt/login, ele possui diversas questoes de lógica dos mais diversos niveis.. tem também um fórum que geralmente o pessoal ajuda caso tenha alguma dúvida sobre lógica.. pode me mandar msg no privado com dúvidas do tibia ou de lógica que eu te ajudo
  15. aqui na minha cidade, não adianta liberar no roteador, vai ser liberado somente depois de ligar para a empresa e solicitar
  16. seu servidor armazena os dados a partir de um banco de dados, ou é feito através de arquivos xml?
  17. Talvez isso no lua seja apenas para characters criados no acc manager, se não me engano por site, ele usa os personagens: Druid Sample Sorcerer Sample Knight Sample Paladin Sample Para definir os atributos do novo personagem. Tenta editar a posição desses, pode ser direto no banco e testar
  18. Ops, nem vi que ele tinha respondido, naquela parte do script que vc pegava a position, não existia cid. Note que nesse script se você mover o item pro lado ele deixa de sumir
  19. não lembro como é a sintaxe, tenta getMonsterInfo('demon') getMonsterInfo("demon") getMonsterInfo(demon) acho que os 2 primeiros funcionam
  20. Reds postou uma resposta no tópico em Suporte Tibia OTServer
    quer que seja feito no estilo magia? pode especificar os atributos?
  21. debuga esse código, aparentemente o erro está nas primeiras linhas, verifica se essa função aqui ta funcionando: getCreatureName(target) tenta passar um nome fixo nessa: getMonsterInfo para ver se funciona, também aproveita e verifica se ele tem .experience..
  22. <parameter key="message_greet" value="Olá |PLAYERNAME|. eu tenho uma {história} para te contar." /> -- aqui voce configura a frease ao falar hi if msgcontains(msg, 'história') or msgcontains(msg, "História") then -- aqui historia é a palavra que o jogador diz return selfSay("Olá, eu sou filha da lendária Bulbi, a salvadora da cidade de Small Vile. Minha mãe morreu aos 76 anos e foi enterrada no antigo cemitério da cidade, com sua espada.", cid) -- no parametro do selfSay a resposta do npc, ai é só vc copiar esse bloco e por quantas palavras quiser end <?xml version="1.0" encoding="ISO-8859-1"?> <npc name="Tara" script="tara.lua" floorchange="0" walkradius="2"> <health now="150" max="150"/> <look type="142" head="73" body="87" legs="10" feet="29" addons="0"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|. eu tenho uma {história} para te contar." /> </parameters> </npc> 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 ----------------------------------------------------------------- if msgcontains(msg, 'história') or msgcontains(msg, "História") then return selfSay("Olá, eu sou filha da lendária Bulbi, a salvadora da cidade de Small Vile. Minha mãe morreu aos 76 anos e foi enterrada no antigo cemitério da cidade, com sua espada.", cid) end return true end  npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  23. local time = 15 function removeTp(pos) local item = getTileItemById(pos, 7632) if item.uid > 0 then return doRemoveItem(item.uid, 1) end end function onDeath(cid, corpse, killers) local monsters = { [""] = 15, [""] = 15, [""] = 13, } local effect = monsters[getCreatureName(cid)] or 53 doSendMagicEffect(getThingPos(cid), effect) doCreateItem(7632,1,getThingPos(cid)) addEvent(removeTp, time*1000, getThingPos(cid))  return true end testa ai
  24. Claro
  25. ele usa as defesas do alvo para calcular, mas não sei se funciona para fórmulas de min/max, teria que testar

Informação Importante

Confirmação de Termo