
Tudo que Wakon postou
-
Duvidas fim de premmy
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.
-
Duvidas fim de premmy
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
-
Duvidas fim de premmy
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?
-
Duvidas fim de premmy
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.
-
Duvidas fim de premmy
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!
-
Vendo Comando
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"/>
-
(Resolvido)Addons para free acc
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/
-
[Ajuda] 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
-
[Ajuda] OTserver
Cadastrou o IP em algum servidor de DNS tipo no-ip? Quando liberou as portas, utilizou o Endereço IPv4?
-
(Resolvido)Addons para free acc
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.
- (Resolvido)[TFS 0.4 Protocolo 8.60]
-
Ajuda Magic Wall Demora pra sair
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"
-
Editar SD
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.
-
(Resolvido)Comando
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
-
Magia Free
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>
-
(Resolvido)Pedido de Script que teleporta para casa
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"/>
-
(Resolvido)Teleport !tp thais
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!
-
(Resolvido)Teleport !tp thais
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!
-
(Resolvido)Teleport !tp thais
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"/>
-
Adicionar/remover premium por comando!
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
-
(Resolvido)[PEDIDO] Adicionando premmy
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.
-
(Resolvido)Problema com comando !buypremium
"Pastadoseuserver/mods", deleta o buypremium_command.xml, pode ser outro nome mais ta nessa pasta ai!
-
(Resolvido)error rme abrindo map poketibia
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:
-
(Resolvido)Potion de stamina
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!
-
{Erros} RME
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