Ir para conteúdo

Wakon

Héroi
  • Registro em

  • Última visita

Tudo que Wakon postou

  1. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Isso por que no login.lua está programado para o seguinte elseif getPlayerPremiumDays(cid) <= 0 and getPlayerStorageValue(cid, 25339) == 1 then Se os dias de premium do jogador for = ou menor que 0 e a storage 25339 dele for == 1 então faça setPlayerStorageValue(cid, 25339, 2) Muda a storage 25339 do player para 2. E como antes tinha dado certo, a storage 25339 do player é 3, se ele não relogar com premium a storage 25339 dele não vai mudar para 1, então se a storage dele não for 1 não vai mudar para 2 se a storage não for 2, o comando não se executa pois no premmytp esta para ele mandar a função caso a storage seja 2. Mais acho que não seja necessario isso, por que tipo se o player está la na area vip e desloga lá, ai no outro dia a hora que ele logar já acabar a premium dele ele já vai direto pro templo, pois a função onLogin faz isso com ele.
  2. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Então cara, será que tu adicionou certinho o script? Pois estou fazendo da mesma maneira que você e ta 100% sem precisar relogar da account :S
  3. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Que estranho cara, aqui eu testei sem sair nenhuma vez da conta toda, apenas relogando o char por CTRL+G e ele teleporta normalmente o player. Por onde você está alterando os dias da premium?
  4. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Não, esse script ta programado para, se o player já foi premium e logou depois sem premium ele é teleportado para o templo avisando que sua premium acabou, então a storage dele muda para 3, quando ele relogar ele é apenas 1 free account e já não é mais necessario mais mandar a mensagem e teleportar ele para o templo, agora se ele virar premium de novo, fica no mesmo local. É por que assim, se o jogador nunca foi premium, ele nunca entrou na area premium, então não é preciso checar se ele está la. Agora se acabar o premium dele, não importa o lugar que ele esteja, será teleportado para o templo, a não ser que ele renove antes de logar! Faz assim pra testar, coloca premium em 1 personagem e reloga ele, ai você remove o premium dele e reloga novamente, vai ver que ele foi mandado para o templo e irá receber 1 mensagem, ai depois reloga novamente com o personagem ainda free, a mensagem não irá aparecer novamente e ele vai ficar no local que deslogou.
  5. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Em "Data/Creaturescripts/Scripts" copie e cole um arquivo .lua e renomeie para premmytp.lua, apague tudo e cole isso: function onLogin(cid) local pos = {x = 160, y = 54, z = 7} storage = 25339 if getPlayerPremiumDays(cid) <= 0 and getPlayerStorageValue(cid, storage) == 3 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are a free account.") return true end if getPlayerPremiumDays(cid) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are a premium account and have "..getPlayerPremiumDays(cid).." premium days.") return true end if getPlayerStorageValue(cid, storage) == 2 then doTeleportThing(cid, pos) doPlayerSendTextMessage(cid, 25, "Seus dias de premium acabaram.") setPlayerStorageValue(cid, storage, 3) end return true end Em "Data/creaturescripts" abra o arquivo creaturescripts.xml e adicione a TAG: <event type="login" name="PremmyTP" event="script" value="premmytp.lua"/> Agora em "Data/creaturescripts/scripts" abra o script login.lua e adicione isso: if getPlayerPremiumDays(cid) >= 1 then setPlayerStorageValue(cid, 25339, 1) elseif getPlayerPremiumDays(cid) <= 0 and getPlayerStorageValue(cid, 25339) == 1 then setPlayerStorageValue(cid, 25339, 2) end Testei aqui em TFS 0.4 e ta perfeito, se der algum problema me avisa!
  6. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Colocou o log certo? Exemplo: De: <talkaction words="!addon" event="script" value="addondoll.lua"/> Para: <talkaction log="yes" words="!seucomando" event="script" value="seuscript.lua"/>
  7. Você precisa da source do TFS compativel com o servidor, ai você altera e compila, porém não sei te dizer o que tem que mudar para deixar os addons para free, não sei mexer com as sources ainda. Pra compilar tem esse tutorial: http://www.tibiaking.com/forum/topic/33548-dev-c-compilando-tfs-no-windows/
  8. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Quando eu abria OT pro povo jogar também acontencia isso as vezes, mais era só eu reiniciar tudo e trocar o IPv4 que funcionava :S
  9. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Cadastrou o IP em algum servidor de DNS tipo no-ip? Quando liberou as portas, utilizou o Endereço IPv4?
  10. Vá no config.lua e procure por addonsOnlyPremium, e coloque o value como false. Caso não ache o addonsOnlyPremium, adicione essa linha no config.lua: addonsOnlyPremium = false Se essa opção não funcionar, creio que seja apenas na source, a não ser que tenha outra função que eu desconheço.
  11. Você precisa ter as sources do servidor e compilar elas com o DEV C++, tenta esse tutorial, acho que pode te ajudar: http://www.tibiaking.com/forum/topic/33548-dev-c-compilando-tfs-no-windows/
  12. Você pode alterar o exhaust da runa em "Data/spells/spells.xml", lá você procura por Magic Wall e troca essa parte da tag: exhaustion="2000"
  13. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -50, -1, -80, 5, 35, 7, 10) -- Em verde é o tipo de dano que vai dar no alvo. -- Em vermelho é o efeito que vai sair ao atingir o alvo. -- Em azul é o efeito que vai sair do player que tacou a sd até o alvo. -- Em roxo é o dano conforme o MagicLevel do player. Para modificar o dano você altera os dois ultimos numeros, colocando o dano baseado no ML. Por exemplo, testei com 1 personagem ML 100 e o dano entre 7, 10 e ele bateu entre 790 a 1080 em monstro neutro contra death! Depois testei com o dano entre 10, 10 e ele bateu entre 1061 a 1081, então você tem que colocar um dano diferente, se não o player vai ficar batendo sempre muito na SD conforme seu ML, recomendo colocar o ML 100 ou maior dependendo do seu rate de ML e ir vendo qual fica melhor para o seu servidor! Acho que deu pra entender, se tiver alguma dúvida é só falar! Na tag é o seguinte: <rune name="Sudden Death" id="2268" allowfaruse="1" charges="3" lvl="45" maglv="15" exhaustion="900" needtarget="1" blocktype="solid" event="script" value="attack/sudden death.lua"/> -- Em azul é definido se pode usar a runa de longe ou de perto, 1 para true e 0 para false. -- Em verde é a carga que vem na runa. -- Em vermelho é o level minimo para usar a runa. -- Em azul escuro é o magic level minimo para usar a rune. -- Em roxo é o tempo para usar a runa, exemplo usei a runa agora só posso usar em 2 segundos. -- Em laranja é definido se precisa de target para usar a runa.
  14. Modifiquei aquele que fiz pra você, só colocar no lugar dele, as funções são as mesmas só adicionei 1 nova: function onSay(cid, words, param) if param == "" then return doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar premium:\n/pa add days player\n/pa add 30 Wakon\n---------------\nRemover premium:\n/pa remove player\n/pa remove Wakon\n---------------\nVer Premium:\n/pa days player\n/pa days Wakon\n---------------") end if param:lower():find('add') == 1 and 3 then local _,_,id,name = param:lower():find('add (%d+) (.+)') name = name or "" id = tonumber(id or 1) or 1 if tonumber(id) == nil or getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,25,"Adicionar premium:\n/pa add days player\n/pa add 30 Wakon\n [Player: "..name.."]") end if isPlayer(getPlayerByName(name)) == TRUE then doPlayerAddPremiumDays(getPlayerByName(name), id) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Foram adicionados "..tonumber(id).." dias de premium ao jogador "..name..".") doPlayerSendTextMessage(getPlayerByName(name),25,"Você recebeu "..tonumber(id).." dias de premium, relogue para atualizar.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name.." não esta online ou não existe.") end elseif param:lower():find('remove') == 1 and 3 then local _,_,id2,name2 = param:lower():find('remove (%d+) (.+)') name2 = name2 or "" id2 = tonumber(id2 or 1) or 1 if tonumber(id2) == nil or getPlayerByName(name2) == false then return doPlayerSendTextMessage(cid,25,"Remover premium:\n/pa remove days player\n/pa remove 30 Wakon\n [Player: "..name2.."]") end if isPlayer(getPlayerByName(name2)) == TRUE then doPlayerRemovePremiumDays(getPlayerByName(name2), id2) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Foram retirados "..tonumber(id2).." dias de premium do jogador "..name2..".") end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name2.." não esta online ou não existe.") end if param:lower():find('days') == 1 and 3 then local _,_,name3 = param:lower():find('days (.+)') name3 = name3 or "" prem = getPlayerPremiumDays(getPlayerByName(name3)) if isPlayer(getPlayerByName(name3)) == false then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name3.." não esta online ou não existe.") end if prem >= 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "O jogador "..name3.." tem "..prem.." dias de premium.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name3.." é free account.") end end return TRUE end Para ver os dias é só digitar: /pa days player
  15. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Vá em "Data/spells" abra o arquivo spells.xml, lá você tem que mudar todas as spells de premium para free. Exemplo: <instant name="Death Strike" words="exori mort" lvl="16" mana="20" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/death strike.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="5"/> <vocation id="6"/> </instant> Ali em prem="1", você coloca 0, ficando assim: <instant name="Death Strike" words="exori mort" lvl="16" mana="20" prem="0" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/death strike.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="5"/> <vocation id="6"/> </instant>
  16. Script casa: Vá em "Data/talkactions/scripts" copie e cole 1 arquivo .lua e renomeie para gohouse.lua, apague tudo e cole isso: Agora em "Data/talkactions" abra o arquivo talkactions.xml e adicione essa tag: <talkaction words="!gohouse;/gohouse" script="gohouse.lua"/> Agora o teleport para o templo: Vá em "Data/talkactions/scripts" copie e cole 1 arquivo .lua e renomeie para templo.lua, apague tudo e cole isso: Agora em "Data/talkactions" abra o arquivo talkactions.xml e adicione essa tag: <talkaction words="!templo;/templo" script="templo.lua"/>
  17. Não entendi direito, você quer que o player digite apenas /tp e seja teletransportado? O script ta configurado com param, então se param for igual a nada ele manda a mensagem mostrando os locais!
  18. Tem que colocar exatamente como está no script, tipo /tp Thais, /tp thais não vai funcionar, vai mandar a mensagem falando o que tem que digitar!
  19. Vá em "Data/talkactions/scripts" copie e cole 1 arquivo .lua e renomeie para tps.lua, apague tudo e cole isso dentro: Agora em "Data/talkactions" abra o arquivo talkactions.xml e adicione essa tag: <talkaction words="!tp;/tp" script="tps.lua"/>
  20. Fala ai galera do TK, estou trazendo esse script que não encontrei no fórum e achei que fosse ser util pra alguém, então resolvi postar. Script testado em 0.4/0.3.6, provavelmente não funciona em TFS 1.x! Para saber os comandos, basta digitar a talkaction sem nenhum parâmetro e uma janela com os comandos irá abrir. Vá em "Data/talkactions/scripts" copie e cole 1 arquivo .lua, renomeie para addpremmy.lua e coloque isso: function onSay(cid, words, param) local t = string.explode(string.lower(param), ",") local call, name, day = t[1], t[2], t[3] local player, keys = getPlayerByName(name), {"add", "remove", "check"} if not isInArray(keys, call) or param == '' or name == nil then return doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar premium:\n/pa ".. keys[1] ..", player, days\n/pa ".. keys[1] ..", Wakon, 30\n---------------\nRemover premium:\n/pa ".. keys[2] ..", player, days\n/pa ".. keys[2] ..", Wakon, 30\n---------------\nVer Premium:\n/pa ".. keys[3] ..", player\n/pa check, Wakon\n---------------") elseif not isPlayer(player) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'O jogador não está online ou não existe.') end if call == keys[1] then doPlayerAddPremiumDays(player, day) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Foram adicionados '.. day ..' dias de premium ao jogador '.. name ..'.') doPlayerSendTextMessage(player, MESSAGE_EVENT_ADVANCE, 'Você recebeu '.. day ..' premium days de um membro da equipe.') elseif call == keys[2] then if getPlayerPremiumDays(player) > 0 then doPlayerRemovePremiumDays(player, day) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Foram removidos '.. day ..' dias de premium do jogador '.. name ..'.') else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Esse jogador não possui nenhum dia de premium.') end elseif call == keys[3] then if isPremium(player) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'O jogador '.. name ..' tem '.. getPlayerPremiumDays(player) ..' dias de premium.') else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'O jogador '..name ..' é free account.') end end return true end Em "Data/talkactions", abra o arquivo talkactions.xml e coloque essa tag: <talkaction log="yes" words="/pa" access="5" event="script" value="addpremmy.lua" /> Créditos: Wakon
  21. Não entendi direito, mais tu quer 1 comando que adicione dias de premium para o jogador? Se for, modifiquei 1 script de VIP pra você e coloquei como premium: Vá em "Data/talkactions/scripts" copie e cole 1 arquivo .lua e renomeie para addpremmy.lua e coloque isso: function onSay(cid, words, param) if param == "" then return doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar premium:\n/pa add days player\n/pa add 30 Wakon\n---------------\nRemover premium:\n/pa remove player\n/pa remove Wakon\n---------------") end if param:lower():find('add') == 1 and 3 then local _,_,id,name = param:lower():find('add (%d+) (.+)') name = name or "" id = tonumber(id or 1) or 1 if tonumber(id) == nil or getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,25,"Adicionar premium:\n/pa add days player\n/pa add 30 Wakon\n [Player: "..name.."]") end if isPlayer(getPlayerByName(name)) == TRUE then doPlayerAddPremiumDays(getPlayerByName(name), id) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Foram adicionados "..tonumber(id).." dias de premium ao jogador "..name..".") doPlayerSendTextMessage(getPlayerByName(name),25,"Você recebeu "..tonumber(id).." dias de premium, relogue para atualizar.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name.." não esta online ou não existe.") end elseif param:lower():find('remove') == 1 and 3 then local _,_,id2,name2 = param:lower():find('remove (%d+) (.+)') name2 = name2 or "" id2 = tonumber(id2 or 1) or 1 if tonumber(id2) == nil or getPlayerByName(name2) == false then return doPlayerSendTextMessage(cid,25,"Remover premium:\n/pa remove days player\n/pa remove 30 Wakon\n [Player: "..name2.."]") end if isPlayer(getPlayerByName(name2)) == TRUE then doPlayerRemovePremiumDays(getPlayerByName(name2), id2) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Foram retirados "..tonumber(id2).." dias de premium do jogador "..name2..".") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name2.." não esta online ou não existe.") end end return TRUE end Em "Data/talkactions" abra o talkactions.xml e coloque essa tag: <talkaction log="yes" words="/pa" access="5" event="script" value="addpremmy.lua" /> Para usar é só falar: /pa add 30 nomedoplayer ou /pa remove 30 nomedoplayer O unico chato é que só funciona com o player on, se ele estiver off vai mandar a mensagem falando que está offline ou não existe! Se for isso que você quer e tiver algum erro no script me avise, se não for isso explique melhor o que você quer.
  22. "Pastadoseuserver/mods", deleta o buypremium_command.xml, pode ser outro nome mais ta nessa pasta ai!
  23. Acho que não é bug não amigo é as opções do RME, faz assim clica em view e deixa apenas essas opções marcadas:
  24. Criei 1 pra tu, veja se é assim que você quer: Em "data/actions/scripts" copie e cole 1 arquivo .lua e renomeie para stamina.lua, apague tudo e coloque isso: local config = { stamina = 2520, -- Stamina do player ao usar o item, 2520 = Full stamina! } function onUse(cid, item, fromPos, itemEx, toPos) if isPremium(cid) then doPlayerSendTextMessage(cid, 25, "Sua stamina foi completa!") doPlayerSetStamina(cid, config.stamina) doRemoveItem(item.uid, 1) return true end doPlayerSendCancel(cid, "You must be a premium player to use this item.") return true end Em "Data/actions" abra o arquivo actions.xml e adicione a tag: <action itemid="XXXX" event="script" value="stamina.lua"/> Em XXXX coloque o ID da potion de stamina!
  25. Wakon postou uma resposta no tópico em Suporte Tibia OTServer
    Pô que pena cara, não tenho mais opções pra tentar te ajudar, quando tive esse erro com 1 programa meu, apenas instalei as dll's e voltou a funcionar normalmente :S

Informação Importante

Confirmação de Termo