Ir para conteúdo
Banner com Efeitos

Angeles

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    Angeles deu reputação a PedroSTT em [TALKACTION] Comando !playerinfo   
    Vou trazer um comando pra voces hoje , muito simples e as vezes util .

    O que o comando faz ? Simplesmente mostra suas informações , apenas do player que digitar o comando.

    Segue o print abaixo 
     

     
    XML
    <talkaction words="!playerinfo;/playerinfo" event="script" value="info.lua"/>
    Script
     
  2. Gostei
    Angeles deu reputação a Tricoder em Hotkeys para treinar Afk   
    Usar magia quanto a mana estiver acima de 20
    auto 200 mphigher 20 say 'utevo lux'  Anti-Idle (anti disconnect)
    auto 1 listas 'Anti-Idle' | turnw | wait 1 | turnn | wait 1 | turne | wait 1 | turns Comer food
    auto 200 eatfood | wait 20000   Reconectar-se
    auto 1000 if [$ss != 1] {if [$sstime != 0] set $ss 1} | if [$connected != 1 && $ss == 1] {wait (20 * 60 * 1000) | reconnect | wait 2000 | openbpitem | set $ss 0} | if [$connected != 1 && $ss != 1] {reconnect | wait 2000 | openbpitem} 
  3. Gostei
    Angeles deu reputação a Guilherme. em [Resolvido] Atributos em Itens   
    Aqui uma lista dos atributos, suas funções e os slots, créditos à Antiemoxlr;




  4. Gostei
    Angeles deu reputação a xWhiteWolf em Dodge System 8.54+   
    Ae galera do TK, uns caras ficaram me mandando PM pedindo esse sistema aqui.. aparentemente tem em algum server e eles queriam replicar o sistema no OT deles. Não sei como funciona no outro server mas no script que eu fiz vai funcionar assim:
    Serão 100 livros que você poderá comprar de um npc específico, cada livro te dá 1 ponto a mais na skill Dodge e isso acarreta em 0.3% de chance a mais de desviar de um golpe e tomar só 50% de dano. Infelizmente eu nunca joguei no servidor que foi o pioneiro desse sistema (na vdd eu nem sei qual é) então eu não fiz igual o deles, na realidade o meu só funciona ao perder vida então se o mago usar utamo vita acabou os dodge's dele. Outra coisa importante é que o player tem uma chance rara de dar Dodge no Dodge, ou seja, levando 1/4 do dano. Só vai funcionar para ataques de criaturas, tanto melee quanto spells, ou seja, se o cara passar no fogo não tem chance dele desviar do dano 
    Sem mais delongas, vamos ao script:

    Crie um arquivo chamado dodge.lua na pasta creaturescripts\scripts e coloque isso dentro dele:
     

    agora adicione essa linha no creaturescripts.xml:
    <event type="statschange" name="dodge" event="script" value="dodge.lua"/> em creaturescripts\scripts\login.lua adicione isso antes do ultimo return true:
    registerCreatureEvent(cid, "dodge") if getPlayerStorageValue(cid, 48902) == -1 then         setPlayerStorageValue(cid, 48902, 0)      end agora vá em actions.xml e adicione essa linha aqui:
    <action itemid="1950" script="dodgebook.lua"/> note que vc pode mudar o ID do livro a hora que vc quiser.

    em items.xml, procure o item com o ID que vc irá utilizar e deixe ele assim:
    <item id="1950" article="a" name="Skill Book [DODGE]"> <attribute key="weight" value="1300" /> </item> agora crie um arquivo chamado dodgebook em actions\scripts e coloque isso dentro dele:
  5. Gostei
    Angeles deu reputação a xWhiteWolf em Critical Skill System   
    Fala galera do TK, vejo que tem bastante gente procurando esse sisteminha que é praticamente igual ao dodge system, então eu decidi fazer visto que na realidade era só mudar 3 linhas kkkk em todo caso ta aí pra quem quiser:

    creaturescripts.xml:
     <!-- CRITICAL SYSTEM -->    <event type="statschange" name="critical" event="script" value="critical.lua"/> creaturescripts\scripts\login.lua:
    --- CRITICAL SYSTEM ---- registerCreatureEvent(cid, "critical") if getPlayerStorageValue(cid, 48913) == -1 then         setPlayerStorageValue(cid, 48913, 0)      end creaturescritps\scripts\critical.lua:
    --[[Critical System -------------------------  By Night Wolf]] local lvlcrit = 48913 local multiplier = 1.5 function onStatsChange(cid, attacker, type, combat, value) if isPlayer(attacker) and (not (attacker == cid)) and (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS)  then if (getPlayerStorageValue(attacker, lvlcrit)*3) >= math.random (0,1000) then dano = math.ceil(value*(multiplier)) doTargetCombatHealth(attacker, cid, combat, -dano, -dano, 255) doSendAnimatedText(getCreaturePos(attacker), "CRITICAL!!", 144) return false end end return true end lvlcrit é o storage que fica salvo o seu level de critical e multiplier é o multiplicador do dano para ataques críticos.. nesse caso um ataque critico vai ser 1,5 vezes maior doque um ataque normal (50% maior)

    Agora em actions.xml adicione:
    <action itemid="1294" script="criticalrock.lua"/> e em actions\scripts\criticalrock.lua adicione:
    --- CRITICAL System by Night Wolf       local config = {    effectonuse = 14, -- efeito que sai    levelscrit = 100,  --- leveis que terão    storagecrit = 48913 -- storage que será verificado    }     function onUse(cid, item, frompos, item2, topos)     if getPlayerStorageValue(cid, config.storagecrit) < config.levelscrit then    doRemoveItem(item.uid, 1) doSendMagicEffect(topos,config.effectonuse) doPlayerSendTextMessage(cid,22,"You've Leveled your Critical Skill to ["..(getPlayerStorageValue(cid, config.storagecrit)+1).."/"..config.levelscrit.."].") setPlayerStorageValue(cid, config.storagecrit, getPlayerStorageValue(cid, config.storagecrit)+1) elseif getPlayerStorageValue(cid, config.storagecrit) >= config.levelscrit then doPlayerSendTextMessage(cid,22,"You've already reached the MAX level of Critical Skill.\nCongratulations!!!!")     return 0     end return 1 end Feito isso tá pronto, pra editar o item que dá a skill de critical vc edita no actions.xml mesmo:
    <action itemid="1294"   << ID do item que será usado pra dar a skill.
    A config tá bem simples:
    effectonuse = 14, -- efeito que sai
       levelscrit = 100,  --- leveis que terão 
       storagecrit = 48913 -- storage que será verificado.

    Lembrando que cada pedra utilizada dará 0,3% a mais de chance.. 10 pedras dão 3% de chance de dar critico a cada ataque e 100 pedras (NIVEL MÁXIMO PADRÃO) dará 30% de chance de dar crítico em cada ataque.
    Espero que vcs gostem, qualquer coisa deixem os comentários aqui.

    Obs: aqui tá uma foto


    Note que esse script só funciona em players, se vc quiser que funcione em monstros você vai ter que abrir um por um todos os monstros do server e colocar essa tag aqui: 
    <script> <event name="critical"/> </script> coloque antes de  </monster>
    Minha dica: coloquem apenas no Trainer pra que o player consiga ver que ele tem o critical e quanto ele tira e deixem avisado que o sistema só vai funcionar em players. 
  6. Gostei
    Angeles deu reputação a gabriel28 em (Resolvido)(pedido) sistema de Dodge e Critical   
    Dodge:
    http://www.tibiaking.com/forum/topic/33545-dodge-system-854/
     
    Critical:
    http://www.tibiaking.com/forum/topic/35663-critical-skill-system/
  7. Gostei
    Angeles deu reputação a luanluciano93 em [CreatureScript] UP Level War   
    Curti o script, porém dei uma simples modificada nele .. ele só dará o level se o player que morreu for level maior que o player que matou! Assim evitaria makers e etc

     
    local max_lvl = 500 function onKill(cid, target, lastHit) if isPlayer(cid) and isPlayer(target) and getPlayerLevel(cid) < max_lvl and getPlayerLevel(cid) < getPlayerLevel(target) then local expForUp = getExperienceForLevel(getPlayerLevel(cid) + 1) - getPlayerExperience(cid) doPlayerAddExp(cid, expForUp) end return true end
  8. Gostei
    Angeles deu reputação a Wise em (Resolvido)atacar pk ficar pz   
    attackpk.lua (data\creaturescripts\scripts):
    function onAttack(cid, target)     return isPlayer(cid) and getPlayerSkullType(target) > 2 and doPlayerSetPzLocked(cid, false) or true end


    creaturescripts.xml (data\creaturescripts):
    <event type="attack" name="AttackPK" script="attackpk.lua"/>


    Registre o creature event em login.lua (data\creaturescripts\scripts):
    registerCreatureEvent(cid, "AttackPK")
  9. Gostei
    Angeles deu reputação a Renato em [MOD] Killed Monsters Count   
    É um simples MOD que conta quantos monstros você ja matou.
    Ele exibe em seu look e você tambÉm pode consultar pela talkaction !monsters
    Logo mais vou aprimorá-lo, e colocar ranks (:

    Para instalar basta você ir na pasta servidor/data/mods ou só servidor/mods, criar o arquivo monsterskill.xml e colocar lá:

    <?xml version = "1.0" encoding = "UTF-8"?>
    <mod name="Monsters Kill" version="1.0" author="Renato Ribeiro" enabled="yes">
    <config name="config-monsterskill"><![CDATA[
    storage = 1647
    killedMonsters = getPlayerStorageValue(cid, storage)
    ]]></config>
    <event type="look" name="monsterLook" event="script"><![CDATA[
    domodlib("config-monsterskill")
    function onLook(cid, thing, position, lookDistance)
    if(isPlayer(thing.uid)) then
    doPlayerSetSpecialDescription(thing.uid, "\n Killed Monsters: " .. killedMonsters)
    end
    return TRUE
    end
    ]]></event>
    <event type="kill" name="monsterKill" event="script"><![CDATA[
    domodlib("config-monsterskill")
    function onKill(cid, target)
    if(isMonster(target)) then
    setPlayerStorageValue(cid, storage, math.max(1, getPlayerStorageValue(cid, storage) + 1))
    end
    return TRUE
    end
    ]]></event>
    <event type="login" name="monsterLogin" event="script"><![CDATA[
    function onLogin(cid)
    registerCreatureEvent(cid, "monsterLook")
    registerCreatureEvent(cid, "monsterKill")
    return TRUE
    end
    ]]></event>
    <talkaction words="!monsters" event="script"><![CDATA[
    domodlib("config-monsterskill")
    function onSay(cid, words, param, channel)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed " .. killedMonsters .. " monsters at the moment")
    return TRUE
    end
    ]]></talkaction>
    </mod>
    [/code]

    [color=#ff0000][b]Lembre-se:[/b][/color] script não testado, qualquer bug manda aqui
  10. Gostei
    Angeles deu reputação a MaXwEllDeN em Poll System - Enquetes no seu servidor .-.   
    post_pattern = { author = "Maxwell Denisson(MaXwEllDeN)", developed_in = "The Forgotten Server 0.3.6", code_version = 1.0 } Introdução Com esse sistema, você pode criar enquetes no seu servidor, para saber a opniao de seus players. Instalação Abra a pasta creatureevents, dentro da pasta scripts copie qualquer arquivo com extenção .lua, renomeie para PollMaX, abra com algum editor de texto, apague tudo que tiver dentro e cole o seguinte conteúdo: --[[ Poll System Author: Maxwell Denisson(MaXwEllDeN) Version: 1.0 ]] local POLL = _POLL_SYS function onLogin(cid) if (POLL.on) then local PVotes = string.explode(POLL.func.playerGetVotes (cid), ", ") for _, a in pairs(PVotes) do if not (POLL.func.hasPoll(a)) then POLL.func.removePlayerVote(cid, a) end end local kyz = 0 local polls = {} local msgeX = "MaX Poll System:\nParticipe de nossa(s) enquete(s) -> " for _, a in pairs(POLL.func.getPolls()) do kyz = 1 table.insert(polls, a[1]) msgeX = msgeX .. a[1] .. ", " end if (kyz ~= 0) then doPlayerSendTextMessage(cid, 27, msgeX:sub(1, #msgeX-2)) end end return true end Abra a pasta lib na sua pasta data, copie qualquer arquivo com extenção .lua, renomeie para PollMaX, abra com algum editor de texto, apague tudo que tiver dentro e cole o seguinte conteúdo: --[[ Poll System Author: Maxwell Denisson(MaXwEllDeN) Version: 1.0 ]] _POLL_SYS = { func = {}, VotdSto = 42873, on = true } local InStalled = false function printTableSI(aff) -- BETA ~ By MaXwEllDeN local s = "{" for a, b in pairs(aff) do local index = "[".. a .. "]" if (type(a) == "string") then index = '["'.. a ..'"]' end if (type(b) == "table") then value = printTableSI(b) elseif (type(b) == "string") then value = '"'.. b .. '"' else value = b end s = s .. index .. " = " .. value .. ", " end s = "{" .. s:sub(2, #s) return (#s < 3) and "{}" or (s:sub(1, #s-2) .. "}") end _POLL_SYS.func.install = function () return (db.getResult("ALTER TABLE `server_config` ADD COLUMN `polls` VARCHAR( 255 ) NOT NULL DEFAULT ('{}');")) and true or false end _POLL_SYS.func.getPolls = function () local get = db.getResult("SELECT `polls` FROM `server_config` WHERE `config` = 'db_version';") local resultado = get:getDataString('polls') return (resultado) and loadstring("return " .. resultado)() or nil end _POLL_SYS.func.setPolls = function (newpoll) return (db.getResult("UPDATE `server_config` SET `polls` = '".. newpoll .."' WHERE `config` = `db_version`;")) and true or false end _POLL_SYS.func.addPoll = function (poll, options) local Apoll = _POLL_SYS.func.getPolls() table.insert(Apoll, {poll, options}) return _POLL_SYS.func.setPolls(printTableSI(Apoll)) end _POLL_SYS.func.removePoll = function (poll) local Apoll = _POLL_SYS.func.getPolls() local Npoll = {} for _, b in pairs(Apoll) do if (b[1]:lower() ~= poll:lower()) then table.insert(Npoll, b) end end local Npoll = printTableSI(Npoll) return _POLL_SYS.func.setPolls(Npoll) end _POLL_SYS.func.hasPoll = function (poll) local polls = _POLL_SYS.func.getPolls() for _, b in pairs(polls) do if (b[1]:lower() == poll:lower()) then return true end end return false end _POLL_SYS.func.hasPollOption = function (poll, option) local polls = _POLL_SYS.func.getPolls() for _, b in pairs(polls) do if (b[1]:lower() == poll:lower()) then if (b[2][option:lower()]) then return true end end end return false end _POLL_SYS.func.playerSetVotes = function (player, votes) return setPlayerStorageValue(player, 77734, votes) end _POLL_SYS.func.playerGetVotes = function (player) if (getPlayerStorageValue(player, 77734) == -1) then setPlayerStorageValue(player, 77734, "") end return getPlayerStorageValue(player, 77734) end _POLL_SYS.func.playerAddVote = function (player, poll) return setPlayerStorageValue(player, 77734, getPlayerStorageValue(player, 77734) .. ", ".. poll .. "") end _POLL_SYS.func.hasPlayerVote = function (player, poll) local _, votes = _POLL_SYS.func.playerGetVotes(player):gsub(poll:lower(), "fuu") return (votes > 0) and true or false end _POLL_SYS.func.removePlayerVote = function (player, poll) local _, votes = _POLL_SYS.func.playerGetVotes(player):gsub(poll:lower(), " ") return (votes > 0) and _POLL_SYS.func.playerSetVotes(player, _) or false end _POLL_SYS.func.removeAllPlayersVote = function (poll) for _, cid in pairs(getOnlinePlayers()) do local cid = getPlayerByNameWildcard(cid) _POLL_SYS.func.removePlayerVote(cid, poll) end end _POLL_SYS.func.addVote = function (poll, option, player) local polls = _POLL_SYS.func.getPolls () for _, b in pairs(polls) do if (b[1]:lower() == poll:lower()) then print(UHU) for a, _ in pairs(b[2]) do if (a:lower() == option:lower()) then b[2][a] = _ + 1 _POLL_SYS.func.playerAddVote (player, poll) _POLL_SYS.func.setPolls (printTableSI(polls)) return true end end end end return false end _POLL_SYS.func.getPollHighestValue = function (poll) local value = "" local polls = _POLL_SYS.func.getPolls() for _, a in pairs(polls) do if (a[1]:lower() == poll:lower()) then for b, c in pairs(a[2]) do for _, d in pairs(a[2]) do if (_ ~= b) then if (c > d) then value = b end end end end end end return value end if not(InStalled) then local file = io.open("data/lib/PollSystem.lua", "r") local content = file:read("*all") local content, _ = content:gsub("In".. string.upper("s") .."talled = false", "InStalled = true") file:close() local file = io.open("data/lib/PollSystem.lua", "w+") file:write(content) file:close() return _POLL_SYS.func.install() end Abra a pasta talkactions, dentro da pasta scripts copie qualquer arquivo com extenção .lua, renomeie para PollMaX, abra com algum editor de texto, apague tudo que tiver dentro e cole o seguinte conteúdo: --[[ Poll System Author: Maxwell Denisson(MaXwEllDeN) Version: 1.0 ]] function onSay(cid, words, param) local funcs = {"add", "result", "finalize", "list", "vote"} local POLL = _POLL_SYS if not(POLL.on) then return false end local paramCHECK = param:lower() local param = param:lower() local params = string.explode(param, ";") local param = params[1] local helpE = "Max Poll System Help: \n \n * vote - serve para votar em uma enquete. \n" local helpE = helpE .." Exemplo de uso: " .. words .. " vote; enquete; opção " .. words .. " vote; Quem é o mais gato?; Maxwell\n" local helpE = helpE .."\n * list - lista as enquetes existentes. \n" local helpE = helpE .." Exemplo de uso: " .. words .. " list" if (getPlayerAccess(cid) >= 4) then helpE = helpE .. "\n\n * add - serve para adicionar uma enquete. \n Exemplo de uso: " .. words .. " add; Você votaria no sim?; {'Não', 'Sim'}\n" helpE = helpE .. "\nVocê votaria no sim? é a enquete, o que estiver dentro de {} são as opções, ATENÇÃO: TODAS OPÇÕES DEVEM SER FEITAS DENTRO DE \'\', E SEPARADAS POR VIRGULA!" helpE = helpE .. "\n\n * finalize - serve para finalizar uma enquete. \n Exemplo de uso: ".. words .. " finalize; Você votaria no sim?\n\nVocê votaria no sim é a enquete que você deseja finalizar." end if not(isInArray(funcs, param)) then return doShowTextDialog(cid, 1953, helpE) end if (param == "add") and (getPlayerAccess(cid) >= 4) then if not(params[3]) then return doShowTextDialog(cid, 1953, helpE) end local optionS = loadstring("return " .. params[3]:lower())() if (type(optionS) ~= "table") then return doShowTextDialog(cid, 1953, helpE) end local _, paramCHECK = paramCHECK:gsub(";", "a") if (paramCHECK > 2) then return doPlayerSendTextMessage(cid, 27, "Você não pode usar \";\" nas opções") end if not (optionS[2]) then return doPlayerSendTextMessage(cid, 27, "Sua enquete deve ter no mínimo 2 opções") end local Opt = {} for _, b in pairs(optionS) do Opt[b] = 0 end if (POLL.func.hasPoll(params[2])) then return doPlayerSendTextMessage(cid, 27, "Já existe uma enquete nomeada ".. params[2]) end POLL.func.addPoll(''..params[2]..'', Opt) doPlayerSendTextMessage(cid, 27, "A enquete ".. params[2] .." foi adicionada com as opções: ".. params[3]:lower() ..".") elseif (param == "finalize") and (getPlayerAccess(cid) >= 4) then if not (params[2]) then return doShowTextDialog(cid, 1953, helpE) end if not (POLL.func.hasPoll(params[2])) then return doPlayerSendTextMessage(cid, 27, "Não existe nenhum enquete no banco de dados nomeada ".. params[2] .. "!") end local HValue = POLL.func.getPollHighestValue(params[2]) if (HValue == "") then doBroadcastMessage("A enquete " .. params[2] .. " foi finalizada, sem opções vencedoras!") else doBroadcastMessage("A enquete " .. params[2] .. " foi finalizada, e a opção que recebeu mais votos foi: ".. HValue ..".") end doPlayerSendTextMessage(cid, 27, "A enquete ".. params[2] .." foi finalizada.") POLL.func.removePoll (params[2]) POLL.func.removeAllPlayersVote (params[2]) elseif (param == "list") then local polls = POLL.func.getPolls() local kizizim = 0 mszi = "MaX Poll System:\n\nEnquetes Ativas:\n" local function getPollsOptions(poll) local fukZz = "" for _, b in pairs(polls) do if (b[1] == poll:lower()) then for c, _ in pairs(b[2]) do fukZz = fukZz .. "\n " .. c end return fukZz end end end for a, b in pairs(polls) do kizizim = 1 mszi = mszi .. "\n * ".. b[1] .. getPollsOptions(b[1]) end mszi = mszi .. "\n~-~-~-~-~-~-~-~-~-~-~-~-~-" if (kizizim == 0) then return doPlayerSendTextMessage(cid, 27, "Não existe nenhuma enquete no momento!") end doShowTextDialog(cid, 1953, mszi) elseif (param == "vote") then if not (params[3]) then return doShowTextDialog(cid, 1953, helpE) end if not (POLL.func.hasPoll(params[2])) then return doPlayerSendTextMessage(cid, 27, "Não existe nenhum enquete nomeada \"".. params[2] .. "\"! Para ver a lista das enquetes disponíveis digite: ".. words .. " list") end if (POLL.func.hasPlayerVote(cid, params[2])) then return doPlayerSendTextMessage(cid, 27, "Você já votou nesta enquete.") end if not(POLL.func.hasPollOption(params[2], params[3])) then return doPlayerSendTextMessage(cid, 27, "A enquete ".. params[2] .. " não tem nenhuma opção nomeada ".. params[3] .. "! Para ver a lista das enquetes e suas opções disponíveis digite: ".. words .. " list") end POLL.func.addVote(params[2], params[3], cid) doPlayerSendTextMessage(cid, 27, "Obrigado por participar da enqute ".. params[2] .. ".") elseif (param == "result") then local polls = POLL.func.getPolls() local kizizim = 0 mszi = "MaX Poll System:\n\nResultado das enquetes:\n" local function getPollsOptions(poll) local fukZz = "" for _, b in pairs(polls) do if (b[1] == poll:lower()) then for c, d in pairs(b[2]) do fukZz = fukZz .. "\n " .. c .. " - ".. d .. " voto(s)." end return fukZz end end end for a, b in pairs(polls) do kizizim = 1 mszi = mszi .. "\n * ".. b[1] .. getPollsOptions(b[1]) end mszi = mszi .. "\n~-~-~-~-~-~-~-~-~-~-~-~-~" if (kizizim == 0) then return doPlayerSendTextMessage(cid, 27, "Não existe nenhuma enquete no momento!") end doShowTextDialog(cid, 1953, mszi) end return true end Depois instale as seguintes Tags: #Creatureevents.xml <event type="login" name="PollLogin" event="script" value="PollMax.lua"/> <!-- Poll System By MaXwEllDeN --> #Talkactions.xml <talkaction words="!polls" event="script" value="PollMax.lua"/> <!-- Poll System By MaXwEllDeN -->



    Condiderações Finais


    Faz tempo que eu fiz esse sistema, por isso pode conter vários bugs, quem encontrar faça o favor de reportar!


  11. Gostei
    Angeles deu reputação a psychonaut em (Resolvido)Bow Não é compativel com a arrow   
    </item>     <item id="12634" article="a" name="Pally bow">         <attribute key="weight" value="3500" />         <attribute key="slotType" value="two-handed" />         <attribute key="weaponType" value="distance" />         <attribute key="ammoType" value="arrow" />         <attribute key="range" value="20" />         <attribute key="hitChance" value="50" />         <attribute key="attack" value="600" />     </item>         <item id="12635" article="a" name="Pally Arrow" plural="Pally Arrows">         <attribute key="weight" value="80" />         <attribute key="slotType" value="ammo" />         <attribute key="attack" value="5" />         <attribute key="maxHitChance" value="90" />         <attribute key="weaponType" value="ammunition" />         <attribute key="ammoType" value="arrow" />         <attribute key="shootType" value="arrow" />         <attribute key="ammoAction" value="removecount" />     </item>
  12. Gostei
    Angeles deu reputação a Ceos em (Resolvido)Bow Não é compativel com a arrow   
    Desculpa a demora. O "ammoType" do bow estáva com "bolt" em vez de "arrow".
    </item>     <item id="12634" article="a" name="Pally bow">         <attribute key="weight" value="3500" />         <attribute key="slotType" value="two-handed" />         <attribute key="weaponType" value="distance" />         <attribute key="ammoType" value="arrow" />         <attribute key="range" value="20" />         <attribute key="hitChance" value="50" />         <attribute key="attack" value="600" />     </item>         <item id="12635" article="a" name="Pally Arrow" plural="Pally Arrows">         <attribute key="weight" value="80" />         <attribute key="slotType" value="ammo" />         <attribute key="attack" value="5" />         <attribute key="maxHitChance" value="90" />         <attribute key="weaponType" value="ammunition" />         <attribute key="ammoType" value="arrow" />         <attribute key="shootType" value="arrow" />         <attribute key="ammoAction" value="removecount" />     </item>
  13. Gostei
    Angeles deu reputação a Wakon em (Resolvido)Runa não funciona   
    Script:
    local healMana = {25000, 30000} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE) function onCastSpell(cid, var) doCreatureAddMana(cid, math.random(healMana[1], healMana[2])) doCreatureSay(cid,"Aaaah...", TALKTYPE_ORANGE_1) return doCombat(cid, combat, var) end  TAG:
    <rune name="Mana Rune" id="2276" allowfaruse="1" charges="1" lvl="15000" maglv="1" exhaustion="1000" aggressive="0" needtarget="1" blocktype="solid" event="script" value="healing/WR.lua"/>
  14. Gostei
    Angeles deu reputação a p e o p l e em (Resolvido)[erro] minha bag não abre   
    Você habilitou a opção Pickupable no item.otb ?
     

  15. Gostei
    Angeles deu reputação a Cat em (Resolvido)Como entender o Script de Spells?   
    Tem esse tuto do Strikes


  16. Gostei
    Angeles deu reputação a luanluciano93 em TFS 0.4 CAST   
    Olá pessoal, tive a iniciativa de criar esse tópico para atualizar e otimizar as sources do TFS 0.4 DEV que é uma das mais usadas no mundo do otserv. Conteúdo totalmente gratuito e pretendemos melhora-lo cada vez mais. 
     
    Qualquer um pode colaborar, postando bugs, erros, otimizando códigos, comentar aqui no tópico, toda ajuda é bem vinda, vamos tornar essa a melhor source disponível. Conto com vocês.
     
    Versão do Tibia: 8.60
     
    Alguns sistema já implementados na source:
    • TFS 0.4 DEV rev 3777 (by TFS Team)
    • Anti-Divulgação (.servegame, .no-ip, .net, .com, .org, .pl, .biz, .br, .sytes, .info)
    • War System
    • Cast System (by Summ)
    • Retirado bugs de anti-push ..
    • Retirado bugs de elfbot ...
    • Retirado erro de não aceitar outros items ...
    • Retirado erro de Malformed File ...
    • Add creatureevent onMoveItem()  ...
    • Add função getCreaturePathTo () ...
    • E vários outros!
     
    Complementos:
    • Add cast System (passo a passo): [AQUI]
    • Pode add o comando na config.lua:
    healthHealingColor = COLOR_GREEN -- [podendo alterar a cor]. manaHealingColor = COLOR_DARKPURPLE -- [podendo alterar a cor]. Downloads:
    • Distro Compilada 32x
    • Distro Compilada 64x
    • Sources 7
     
     
    TESTADO EM WINDOWS, DEBIAN 7.8, UBUNTU 12.04 E 14.05!
     
     
    • Compilar em Linux: 
     
     
     
    • Erros para arrumar: 
     


    Obrigado ao runeraserver pelo incentivo em fixa-la para linux

    E é isso pessoal, espero ter ajudado, abraços
     
  17. Gostei
    Angeles deu reputação a Natanael Beckman em GesiorACC 2019 8.60 UPDATE 29/06/2019   
    Atualização de 29/06/2019.
     
    Olá meus amigos, essa é a minha última contribuição free que faço na área de OTserver, fiz uma atualização bem completa do Gesior comparando com os que existem disponíveis, não vou falar muito pois grande parte já conhecem... Vou apenas posta algumas imagem das mudanças feitas.
    Sempre gostei de evoluir e de oferecer aos demais uma facilidade de obter um material grátis e de qualidade, nunca utilizei meu pouco conhecimento para prejudicar os demais, pelo o contrario sempre foi na intenção de ajudar e se em algum momento falhei, falhei inconscientemente.
     
    - Foi mudado algumas imagens de layout para renovar a estrutura.

     
    - Server Info + Most Power Ful Guilds na mesma estrura.

     
    - Create Account exigindo senhas com letras minusculas, maiúsculas e números, fortalecendo
    a segurança do seu cliente e dificultando futuras dores de cabeças.

     
    - Adicionado o mecanismo que identifica os valores de Premuim Points e Backup Points.
    - Algumas mudanças de layout.
    - Nome do player abaixo linkado.

     
    - Adicionado um Box de doação, com a intenção apenas de complementar
    o layout enriquecendo a pagina.

     
    - Fixado o bug edit town, e melhorado o layout.

     
    - Characters.php refeito, nesta imagem é uma visão de uma conta com access admin.

     
    - Visão normal.

     
    - Inventário completo.
    - Guilds com visão ampliada.

     
    - Detalhes...

     
    - Novo SHOP com as estrutura de layout melhorada e modernizada.
    - Sem BUGs lembre-se do CTRL + F5 para atualizar os cookies nesta pagina.

     
    - Detalhes...

     
    - Detalhes...

     
    - Detalhes...

     
    - Histórico do SHOP...

     
    DOWNLOAD SITE
    SHOP.LUA XAMPP 1.7.3 DATABASE LIMPA MYSQL DATABASE COMPLETA MYSQL   TUTORIAIS ÚTEIS E COMPATÍVEIS PARA O SITE: PAGSEGURO AUTOMATICO SHOPGUILD BACKUP_POINTS SISTEMA VIP_TIME   Créditos: Gesior.pl(WEBMaster) Felipe Monteiro(WEBMaster, WEBDesigner) Natanael Beckman(WEBNada) Nailan (WEBMaster) Ivens Pontes (WEBMaster) Marcio Porto (WEBMaster) Danyel Varejão (Programmer LUA, C++)
  18. Gostei
    Angeles deu reputação a Wakon em [pedido] max level   
    Já tentou como o guioljf falou?
    Em "Data/creaturescripts/scripts", copie e cole um arquivo.LUA e renomeie para maxLevel.lua, apague tudo e cole:
    local t = { maxLevel = 150000 -- Level máximo. } function onAdvance(cid, skill, oldLevel, newLevel) if skill == SKILL__LEVEL then if newLevel >= t.maxLevel then doPlayerAddExp(cid, getExperienceForLevel(t.maxLevel)-getPlayerExperience(cid)) end end return true end Agora em "Data/creaturescripts", abra o arquivo creaturescripts.xml e adicione a tag:
    <event type="advance" name="maxLevel" event="script" value="maxLevel.lua"/> Novamente em "Data/creaturescripts/scripts", abra o arquivo login.lua e adicione:
    registerCreatureEvent(cid, "maxLevel")
  19. Gostei
    Angeles deu reputação a xWhiteWolf em Sistema de Reset 100%   
    talkactions/scripts/rankinreset
    local storage = 378378 -- storage que fica salvo os resets local itens = {2182, 2190, 2456, 2395} -- itens cujas imagens aparecerao (se nao souber oque eh, nao mexa) function onSay(cid, words, param, channel) local function getRankStorage(cid, value, max, RankName) -- by vodkart local str = "" str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n" local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > max then break end str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end return doShowTextDialog(cid, itens[math.random(1, #itens)], str) end getRankStorage(cid, storage, 10, "Ranking of Resets") return true end talkactions.xml:
    <talkaction log="yes" words="/resets" event="script" value="rankinreset.lua"/>
  20. Gostei
    Angeles deu reputação a principe sharingan em Sistema de Rep+   
    Esse sistema funciona da seguinte forma:
    !rep nome do player <---------- Da um REP+ para o Player !
    !myrep <----------- Consulta a propria reputação !
    !rankrep <----------- Confere o Rank de Reputação !
    Isso é bom até para saber a quem você poderá dar um cargo no seu server. Bom vamos ao que interessa.
    Para os player's saberem como funciona este sistema, vá em data/talkaction/script e crie um arquivo !reputacao.lua e cole isso dentro:
    Agora vá em Talkaction.xml e cole esta tag:
    Agora vamos ao sistema. Vá em data/talkaction/script e crie um rep.lua e adicione isso dentro:
    Agora vá em Talkaction.xml e cole esta tag:
  21. Gostei
    Angeles deu reputação a Aluccard em [MOD] Reflect System 0.1   
    Olá Tibia King's!


    Reflect System[0.1]



    Função


    Ao ser obtido um item que possua o atributo Reflect o player será capaz de refletir danos Fisicos e Mágicos ao mesmo tempo. A idéia geral desse script é bem simples mesmo. Quando o player receber um damage de uma criatura (monstro ou player) esse attack será refletido em uma certa porcentagem.

    Exemplo:

    22:46 You see a golden amulet. It weighs 8.30 oz. [Reflect: 80%] <?xml version="1.0" encoding="UTF-8"?> <mod name="Reflect System" version="0.1" author="Aluccard" contact="" enabled="yes"> <description> Script que funciona para refletir danos para as creatures que o atacar. </description> <event type="login" name="regReflectDamage" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid,"ReflectDamage") return true end ]]></event> <event type="statschange" name="ReflectDamage" event="script"><![CDATA[ local slotPos = {CONST_SLOT_NECKLACE, CONST_SLOT_FEET, CONST_SLOT_RING} function onStatsChange(cid, attacker, type, combat, value) local reflectPercent = 0 local dmg = value local playerPos = getCreaturePosition(cid) local attackerPos = getCreaturePosition(attacker) for i = 1, #slotPos do if getPlayerSlotItem(cid, slotPos[i]).uid > 1 then if getItemReflectPercent(getPlayerSlotItem(cid, slotPos[i]).uid) then reflectPercent = reflectPercent + getItemReflectPercent(getPlayerSlotItem(cid, slotPos[i]).uid) end end end if reflectPercent > 0 then dmg = math.ceil(-value*((100-reflectPercent)/100)) if (dmg < 0) then doCreatureAddHealth(cid, dmg) doSendAnimatedText(playerPos, -dmg, COLOR_RED) doSendMagicEffect(playerPos, 0) else doSendMagicEffect(playerPos, 3) end dmg = math.ceil(-value*(reflectPercent/100)) if (dmg < 0) then doCreatureAddHealth(attacker, dmg) doSendAnimatedText(attackerPos, -dmg, COLOR_RED) doSendDistanceShoot(playerPos, attackerPos, CONST_ANI_SMALLHOLY) end else return true end end]]></event> </mod> function getItemReflectPercent(itemuid) return getItemAttribute(itemuid, "reflectPercent") end function doPlayerAddReflectedItem(cid, itemid, percent) local item = doPlayerAddItem(cid, itemid) doItemSetAttribute(item, "description", "[Reflect: "..percent.."%]") doItemSetAttribute(item, "reflectPercent", percent) end



    Obs³: Para adicionarmos novos items com o atributo Reflect usamos o comando doPlayerAddReflectedItem(cid,itemid,percent).



    {itemid = id do item escolhido / percent = porcentagem do reflect}



    Creio que não esqueci de nada. Qualquer dúvida é só postar!



    Sem mais,
    Aluccard.



    Edit:



    Npc que vende Reflect Item
    Obs¹: Os items pode ser acumulativo. Ou seja, se o amuleto der 10% de reflect e o ring der 35%. O player possuirá um Reflect = 45%. [MOD]reflectSystem.xml Obs²: O código está meio enferrujado, mas funciona. Como podes ver o sistema está na versão 0.1 e irá ser atualizada com o tempo. ReflectLib.lua
  22. Gostei
    Angeles deu reputação a Huziwara em [TUTO] Configurando config.lua   
    Olá galerinha TKbianos,
    Eu postei aqui, a tradução (as funções) que estão no config.lua, vejo muita pessoa com dúvidas que acha que precisa fazer script, mas naverdade essas dúvidas estão na cara de vocês, bem no config.lua! (Botei os necessários)

    Config.lua :


    accountManager = "no" (Utilização de account manager.)

    newPlayerChooseVoc = "yes" (Se o player pode escolher a vocação, caso esteja em "no" ele vai começar como "no vocation".)

    {newPlayerSpawnPosX = 155}
    {newPlayerSpawnPosY = 39} (Posição do player criado pelo account manager.)
    {newPlayerSpawnPosZ = 7}

    newPlayerTownId = 1 (ID da cidade [configurado no map editor].)

    newPlayerLevel = 8 ( Level do novo player criado pelo account manager.)

    newPlayerMagicLevel = 0 (Magic level do novo player criado pelo account manager.)

    generateAccountNumber = "no" (Se o player escolhe ou não o account, caso esteje "no" o account manager vai solicitar um Account Number sozinho.)

    -----------------------------------------------------------------------------------------------------
    redSkullLength = 15 * 24 * 60 * 60 (Tempo para sair o Red Skull nesse caso aqui está como 15 dias.)

    blackSkullLength = 30 * 24 * 60 * 60 (Tempo para sair o Black Skull nesse caso aqui está como 15 dias.)

    dailyFragsToRedSkull = 10 ( Quantos frags necessários em dia pra pegar Red Skull.)
    weeklyFragsToRedSkull = 40 ( Quantos frags necessários em semana pra pegar Red Skull.)
    monthlyFragsToRedSkull = 90 ( Quantos frags necessários em mês pra pegar Red Skull.)

    dailyFragsToBlackSkull = dailyFragsToRedSkull ( Quantos frags necessários em dia pra pegar Black Skull (Sendo que você precisa pegar a mesma quantidade de frags de Red Skull, estando Red Skull).)
    weeklyFragsToBlackSkull = weeklyFragsToRedSkull ( Quantos frags necessários em semana pra pegar Black Skull (Sendo que você precisa pegar a mesma quantidade de frags de Red Skull, estando Red Skull).)
    monthlyFragsToBlackSkull = monthlyFragsToRedSkull ( Quantos frags necessários em mês pra pegar Black Skull (Sendo que você precisa pegar a mesma quantidade de frags de Red Skull, estando Red Skull).)

    blackSkulledDeathHealth = 40 ( A quantidade de vida que você fica após morrer de Black Skull.)
    blackSkulledDeathMana = 0 ( A quantidade de mana que você fica após morrer de Black Skull.)

    useBlackSkull = true (Se vai ter Black Skull no seu server, true ou false.)

    worldType = "open" ( Open = PVP / Optional = Non-PVP / Hardscore (Acho que é assim) = Enforced)

    protectionLevel = 80 (Level para que os players possam cair na porrada se se matarem.)

    pzLocked = 30 * 1000 ( Quanto tempo demora pra sair o battle "Espadinhas" , aqui no caso está 30 segundos.)

    huntingDuration = 30 * 1000 ( Quanto tempo demora pra sair o hunting "Espadinhas Vermelhas", aqui no caso está 30 segundos.)

    criticalHitChance = 7 (Chance de attack critico, em %)
    criticalHitMultiplier = 1 (Quando o player da critico o attack dele vai multiplicar em : no caso "1")
    displayCriticalHitNotify = true (Aparece quando o player da um attack critico?)

    removeWeaponAmmunition = false (Remover munição)
    removeWeaponCharges = false (Remover carga)
    removeRuneCharges = "no" (Remover carga)

    whiteSkullTime = 5 * 60 * 1000 (Tempo para sair o White Skull, nesse caso 5 minutos.)

    showHealingDamage = true (Aparece a quantidade de health que recupera)

    showHealingDamageForMonsters = false (Aparece a quantidade de health que recupera (Nos Monstros))

    stopAttackingAtExit = false (Se vai parar de atacar quando o player der exit)

    deathLostPercent = 10 (Quantidade em % de exp que o player vai perder ao morrer)

    onePlayerOnlinePerAccount = true (Se só pode entrar 1 player por account, caso bote false, e tiver 3 chars, vai ser possivel jogar com esses 3 chars)

    premiumPlayerSkipWaitList = false (Se o player for premium ele, nesse caso não pularia a fila de espera)

    ingameGuildManagement = true (Usar os comandos do tipo : !createguild/!joinguild.)

    cleanProtectedZones = true (Quando der clean, vai dar clean em todas as areas protection Zone, de DP até Templo.)

    allowChangeOutfit = true (Permitir se o player pode trocar o Outfit.)
    allowChangeColors = true (Permitir se o player pode trocar a Cor do Outfit.)
    allowChangeAddons = true (Permitir se o player pode trocar os Addons.)

    spellNameInsteadOfWords = true (Nesse caso a spell exura, quando usada sai a mensagem "exura", mas se tivesse false, ao usar exura, vai aparecer a mensagem "Light Healing".)
    emoteSpells = true (Mensagem laranja.)

    idleWarningTime = 239 * 60 * 1000 ( O tempo para dar o aviso de Idle (Quando o PLAYER fica muito tempo parada))
    idleKickTime = 240 * 60 * 1000 (O tempo para o player se automaticamente kickado.)


    Bem, eu botei esses porque são esses que os caras tem mais dúvidas.

    Espero ter ajudado !

    Att. Huziwara no Mokou
  23. Gostei
    Angeles deu reputação a Movie em (Resolvido)[pedido] comando que remove o PK   
    Em data/talkactions/scripts crie um arquivo chamado skull.lua
     Em talkactions.xml adicione a seguinte tag:
     
    Para usar esse comando é necessário o player ter 1kk, caso queira que seja free, me avise para editar o código para você.

    Caso tenha funcionado, marque em Melhor Resposta
  24. Gostei
    Angeles deu reputação a haiorya em [Npc] Mate O Monstro E Complete Sua Tarefa   
    Olá (: , estou aqui de novo com um npc bom para servidores RPG'




    ~~> Como funciona? <~~



    Você fala com o npc, o npc sumona um monstro e após matar este monstro,
    ele te dá uma reconpensa.




    ~~> Como Instalar? <~~

    -> Vá em data/creaturescripts/creaturescripts.xml e add essa tag:


    <event type="death" name="NPC" event="script" value="npcquest.lua"/> ->Agora vá em creaturescripts/scripts e crie um novo arquivo com o nome npcquest.lua e bote isto dentro: function onDeath(cid, corpse, killer) local monstName = "Monk" -- nome do monstro local Storage = 9755 -- nao mude if isMonster(cid) then if string.lower(getCreatureName(cid)) == string.lower(monstName) then setPlayerStorageValue(killer[1], Storage, 1) doCreatureSay(killer[1],'Você completo sua tarefa.',TALKTYPE_ORANGE_1) end end return TRUE end ->Agora você vai no xml do monstro que você escolheu e lá no final do script antes do </monster>, você add: <script> <event name="NPC"/> </script> ->Agora em data/npc, crie um novo arquivo com o nome Jhow.xml e bote isto dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Jhow" script="data/npc/scripts/jhow.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="138" head="96" body="95" legs="0" feet="95" addons="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|, voce quer testar suas habilidades?" /> <parameter key="module_keywords" value="1" /> </parameters> </npc> ->Agora vá em npc/script e crie um novo arquivo com o nome de jhow.lua e bote isto dentro: local nomeMonst = "Monk" -- Nome do mosntro que ele vai sumonar local itemid = 2150 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 getPlayerStorageValue(cid, 9755) == -1 then if(msgcontains(msg, 'yes')) then selfSay('Mate este monstro para completar sua tarefa.', cid) doCreateMonster(nomeMonst,getThingPos(cid)) talkState[talkUser] = 1 end return true end if getPlayerStorageValue(cid, 9755) == 1 then selfSay('Você matou o monstro e ganhou um item.', cid) doPlayerAddItem(cid, itemid,1) setPlayerStorageValue(cid, 9755,2) talkState[talkUser] = 0 return true end if getPlayerStorageValue(cid, 9755) == 2 then selfSay('Você já fez esta tarefa.', cid) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) ->Agora volte lá em creaturescripts/scripts/ e procure por login.lua e antes do ultimo return true add isto: registerCreatureEvent(cid, "NPC")

    Pronto ! NPC instalado

    CreditoS : Haiorya
  25. Gostei
    Angeles deu reputação a ManoTobira em (Resolvido)[bug] npc não aceita novo din din   
    procura no items.xml o item q vc qer q eles aceitem e depois coloque isso
    <attribute key="worth" value="10000" />
    no lugar de 10000 vc coloca o valor q vc qer q vale o dinheiro

Informação Importante

Confirmação de Termo