Ir para conteúdo

The King of Madness

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    The King of Madness deu reputação a Cat em Diminuir lag no Map Editor   
    Essa resolução visa reduzir o lag na hora de mapear.
    Dicas:
    Leve em consideração que um mapa de 100MB necessita em torno de 4GB de memória, um de 200MB, 8GB e assim vai. Mapear com minimap aberto ajuda a travar o mapa. Quando for mapear, feche outros aplicativos. Faça backups frequentes, (Se usar um CPU cuidado com quedas de energia, pode corromper seu mapa ao desligar). Use a última versão lançada para evitar erros.  
    Mas como posso fazer para que o Map Editor trave menos?
    Com o Remeres aberto, vá em File - Preferences - General. Em File – Preferences – General você deverá configurar Undo Queue Size: Aqui vai o valor (em MB) da metade da memória ram de seu pc (caso queira coloque mais). Undo maximum memory size (MB):  Tamanho máximo de memória que o RME poderá utilizar, aumente para metade da memória ram de seu pc (caso queira coloque mais). Worker Threads: Número de núcleos de processador que o RME pode utilizar, nessa parte depende se seu processador, caso seu pc só tenha um núcleo deixe apenas um, caso tenha 2, deixe 2 e se for maior que isso deixe o tanto que você preferir.  
    Aplique, reinicie o editor e teste as novas configurações. Se ainda não funcionar, faça uma limpeza de hardware/software, atualize seus drivers ou compre um PC melhor.
  2. Gostei
    The King of Madness deu reputação a Cat em Encontrar itens e códigos escondidos no Mapa   
    Existe a possibilidade de você baixar um mapa com algumas "manhas", e alguns players sabendo disso podem se beneficiar em seu servidor. Por exemplo, uma bag com crystal coins, uma action numa parede que te teleporte até a sala de recompensas da POI, etc.
    Abaixo mostrarei como encontrar itens e códigos escondidos no mapa:
     
    No menu superior, Edit - Find Item (CTRL + F). No quadro de pesquisa CTRL + F (Search for item), selecione o item clique em OK, você será teleportado até a posição em que o item está e poderá removê-lo. Se ele estiver atrás de uma árvore por exemplo, você pode usar a tecla de atalho G (ghost loose items), que deixa as sprites transparentes.
     
     
     
     
    No menu superior, Edit - Find Unique / Action. Também é possível cadastrar action/unique ids e criar quests escondidas no mapa. Essa opção te mostra todos os uniqueids e actionids que existem. Clique nas opções da lista para ir até a posição.
     
     
     
    No menu superior, Edit - Find Containers Esta opção mostra os containers que existem no mapa. Chests e bookcases, bags e backpacks, corpses e coffins, boxes,  barrels e tudo que da pra clicar, abrir e pegar um item dentro. Clique nas opções da lista para ser teleportado até o item.
     

     
    ______________________________________________________
     
     
     
     
  3. Gostei
    The King of Madness deu reputação a Wakon em (Resolvido)Efeito no jogador   
    @Mikuo, registrou no login.lua? Caso não, abra o login.lua na pasta "data\creaturescripts\scripts" e cole isso antes do último return true:
    registerCreatureEvent(cid, "Effect") Dê reload, relogue o char e teste novamente(mantenha o print para testes).
  4. Obrigado
    The King of Madness deu reputação a Wakon em (Resolvido)Efeito no jogador   
    @Mikuo, que nada, acontece com todo mundo, kkk.
  5. Gostei
    ok, vou falar o que eu sei. caso saiba algo além me fala porque é também de curiosidade minha.

    Race = a raça do bixo, basimente para destinguir um de outro, a diferença deles é o splash do "sangue" por exemplo, deer é race = BLOOD ou seja quando você atacar ele vai sair sangue no chão... já slime é da race = VENOM, ou seja quando você atacar ele vai sair veneno no chão inves de sangue.

    manacost = não sei.
     
    health now="25" max="25" = é bem o que você falou... max é a vida maxima, e now é a quantidade que o bixo vai nascer de vida... se você colocar o "now" maior que o "max" vai bugar a barrinha de vida do monstro... e se você colocar o now menor que o max é como se ele nascesse e ja tivesse recebi dano de alguém... perdeu uma porcentagem de vida

    targetchange interval="2000" chance="0"  = é quando o monster muda de target...  o interval é calculado em milisegundos, ou seja 2000 = 2 segundos, e o "chance" é a porcentagem...  se estiver assim interval="2000" chance="100"  a cada 2 segundos vai ter 100% de chance de mudar de target (caso o bixo não seja afetado por exeta res por exemplo)
     
    <strategy attack="100" defense="0"/> <flags> <flag summonable="1"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="1"/> <flag convinceable="1"/> <flag pushable="1"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="8"/> </flags> o strategy não sei te dizer  (talvez seja algo relacionado a caso o monstro ter que matar outro monstro para passar...) por exemplo se vc tiver trapado por um sumom de uma criatura O "dono" desse sumon que seria o mosntro mata ele para poder te atacar... caso seja corpo a corpo...

    enfim, as flags acho que estão todas ai mesmo

    summonable = é se pode sumonar o monstro em questão, se for algo forte melhor nao proque players iriam abusar disso..
    attackable = nunca testei mas é se pode ser atacavel ou não o monstro... eu não sei se isso afeta se o mosntro pode te atacar tbm...
    hostile = n sei
    illusionable = é se ele pode ser encantado pela aquela runa verde de conquistar mosntros, semelhante ao utevo res, porém por runa.
    pushable = se o mosntro pode ser arrastado
    canpushitems = se o monstro pode arrastar itens
    canpushcreatures = se monstro pode arrastar criaturas, acho que inves de arrastar eles os matam '-'
    staticattack = i don't know bro
    runnonhealth = quantos de vida o monstro mete o corridão de voce para não ser morto (muitos apagam essa flag)

    sobre o skill do monstro, sim afeta muito... é semelhante ao um player... e o armor e defense também, imagine como um knight, com a def da armor e skill defense
     
    <elements> <element earthPercent="10"/> <element holyPercent="10"/> <element icePercent="-5"/> <elemetn deathPercent="-5"/> </elements> é referente a defesa elemental do monstro, é por porcentagem, caso estiver em 100 o mosntro não leva dano daquele "efeito"
    acho que alem desses ai tem os
    energyPercent
    firePercent...
     
    sobre ao drop dos itens também não sei sempre me baserio as chances do loot de outros monstros, e acho que não é possivel colocar numeros com virgulas.


     
  6. Gostei
    The King of Madness recebeu reputação de Munstinha em MAPA PRÓPRIO   
    aparentemente na sua importação o arquivo postman.xml não é valido para um npc ou monster, pelo que eu entendi, vc queria ter juntado o seu mapa com o mapa do servidor certo? o que eua conselho a você fazer:
    Abra seu mapa no RME; Segure a tecla Ctrl + Shit e com o botao esquerdo do mouse vc ira selecionar a area do mapa que você deseja copiar; Copie o mapa; Abra outro RME com o mapa do servidor que você baixou; Cole o mapa que vc copiou na segunda etapa aqui no mapa do servido. O que você fez? vc juntou o seu mapa com o mapa do servidor, assim vc vai conseguir acessar ele seja andando ou criando um teleport.
  7. Gostei
    The King of Madness deu reputação a tiroleivi em Global FULL 8.60 | Zao, War System, Cast System...   
    Global Full
     8.60 

    Descrição
    Estarei disponibilizando um Mapa Global Full + Zao na versão 8.60, à pedido do @rozinx.kungsan.
     
    Modificações que contém no OT
    Ilhas VIPs  Cast System War System Woe Itens Vips (com Id Próprio) (Configurado e Balanceado)  NPCs Modificados   Treiner Offline  Treiners VIP Novas Hunts Invasões automáticas 2 novos addons (Soil Guardian e Entrepreneur)   E muito mais! Cliente 8.60 compatível com os addons e itens editados
    ILHA VIP (Furia)

     

    NPCS (Tibia Addon, Vende Addon por Crystal Coin)

     

    Treiners (ON e OFFline)

     
     


    Itens Vip (Donate) (ID Próprio)

     


    Cliente 8.60 Compatível com : (2 novos addons e itens editados)
    (Para alterar a Imagem do Cliente basta editar ou trocar o Tibia.pic)
     


    2 Novos Addons

         Soil Guardian
     
            Entrepreneur

    Downloads
     
     Global Full 8.60 + DB  ~~~~~~~~~    SCAN   
     Cliente 8.60 Compatível  ~~~~~        SCAN   
     Web-Site     ~~~~~~~~~~~~~         SCAN    
    Source e Distro                                                                
    items.xml Sem itens DONATE
    outfits.xml Sem os dois ADDONS
     
    OBS: A Database que vem junto com o OTSERV é compativel com o WEB-SITE acima.
    Cliente Próprio somente se for usar os itens Donate e os dois Addons que foi adicionado.

    Como Rodar o Servidor + Site
     
     
     
     
  8. Gostei
    Olá a todos, criei um OTServ a um tempo atrás e não deu muito certo então resolvi deixar disponível para vocês baixarem.
     
    O que editei: - Implementação da Aura System - Boss Event diário 100% automático. - Magias novas (!spells) - Quests inéditas - Eventos funcionais - Implementado um sistema de reset 100% funcional - Áreas Donate, Supreme, Ultimate, Super UP (cave exclusiva) e Reset City. - Sistema de compra de itens no templo. - Dodge e Critical System - Refinamento System - E muito mais...  
    Algumas imagens:
     
     
    Curtiu? dá um REP+ aí
     
    Download: clique aqui
    Scan: clique aqui
    Site: clique aqui
     
    O servidor vêm preparado para ser utilizado com MySQL.
    Em breve colocarei o site que usei para download aqui.
     
    Use a database que vêm junto com o arquivo.
     
     
    Créditos:
    75% Baiak Fusion
    25% Movie
  9. Gostei
    The King of Madness recebeu reputação de Beyond Sky em Novo Global - Antica Modified Global   
    esta de parabens mesmo pelo seu projeto =D, uma ideia que não sei se você pretende implantar ( e eu acho legal ), é os modos de viajar que tem em PXG por exemplo, que vc fala com um npc para te transportar em um barco ( por exemplo ) e vc ver seu boneco fazer todo o trajeto, acho isso bem mais emocionante do que falar com um npc e magicamente esta no outro lado do mundo

    outra ideia legal seria implementar pets =3, é sempre legal xD
  10. Gostei
    The King of Madness deu reputação a xImTheBear em Safe Mod para tibia 8.6   
    Vou explicar melhor... Eh sim pelo onCombat, mas no caso seria assim, vamos dar um exemplo: Estou la upando com a maozinha aberta (Sem pvp) usando magias de area e tals sem pegar pk, dai chega um cara e começa me atacar e sentar a porrada, oque eu devo fazer, ativo meu pvp (maozinha) dai posso revidá-lo e não acho que teria nescessidade de ativar ou desativar somente em pz pois eu que ficaria sem poder atacar se desativasse, seria preju pra mim, nao teria razão lógica para ativa-lo. Espero que tenha entendido kk
  11. Gostei
    The King of Madness deu reputação a xImTheBear em Safe Mod para tibia 8.6   
    Eu consegui arrumar um script funcional com essa base de !pvp on e !pvp off, agora gostaria de saber se com o code dele dava pra criar esse que eu to querendo... Eu pesquisei nas sources e achei em Combat.cpp securemode e tentei mudar mas deeu eerro, gostaria que esse script ativasse com o player ativasse ou desativar o secure mode do client tlgd, abaixo o script que consegui
     
    local msg = "Agora seu sistema PvP está %s." function onSay(cid, words, param) local _table = { ["on"] = {"ativado", 1}, ["off"] = {"desativado", 0}, } if _table[param:lower()] then local mode = _table[param:lower()] setPlayerStorageValue(cid, 91821, mode[2]) doPlayerSendTextMessage(cid, 27, msg:format(mode[1])) end return true end  
  12. Gostei
    The King of Madness deu reputação a xImTheBear em Safe Mod para tibia 8.6   
    Bom, oque eu procuro seria uma adaptação do DOVE (Safe Mode do tibia global) quando ta com ela ativada você pode usar magias de area e etc sem pegar pk, eu gostaria de saber se é possível um script assim para o 8.6 e como faze-lo? Pois to criando um servidor com muitos personagens com spell de area e tals, e seria bom eles poderem upar tranquilamente sem pegar o pk se estivesse com a maozinha aberta, podem ajudar?
  13. Gostei
    The King of Madness deu reputação a Putotine Alfredo em [Link Quebrado]Pequena Hunt/Quest   
    Olá, venho aqui trazer minha primeira "Hunt/Quest", gostaria de algumas dicas, e criticas construtivas por favor xD.
    Sei que é bem simples, mas com o tempo eu irei melhorando. Sim?
     
     
    Scan: SCAN.
    DL: Download.
    Aqui vão fotos do mesmo.
     
     
  14. Gostei
    The King of Madness deu reputação a josiassc alves em download Ot baiak Yurotz 8.60 muito editado.   
    Iae galera!
    Estou trazendo pra vocês um ot que eu mesmo editei durante varios dias....
     
    É um baiak yurotz estilo ice.. 

    TEMPLO
     
    Área quests adicionada com 3 sets adicionados + 4 quests de shields (soft quest modificada) super soft arrumada!
     
    Área master vip
     
    Área Épic Vip (vip4) que eu criei
     
     
    Caslte 24 horas (guild) adicionado com sucesso!
     
     
    ACCOUNT MANAGER:
     
    (editada atacks de todas as wand) tem cake energyball entro outras
    e uma epic staff em especial que configurei para cada attack sair um shoottype diferente xD
     
     
     
    OK vamos la para as edições:
     
    castle 24hrs adicionado
    Adicionado área epic vip
    Editado as wands,staffs e rods
    balanciado as vocações..
    paladin removido seu exaustão..
    fast attack triplicado (reajustes nas potions feita)
    Editado o attack dos items em geral
    Adicionado comando (!Bp e !backpack)
    Adicionado sistema de anuncio de mortes (para Monster) e para (Players)
    Adicionado sistema de contagem (Frags)
    Adicionado limite de mc (4) ant mage bomb
    Adiciona auto kick afk 30 minutos
    Arrumei quando player entra em area pz perde batle na hora...
    Alguns Npcs fora modificados...
    super soft arrumada...
    stone skin amulet 1 charge...
    a pasta acompanha (auto restarter) e (ant nucker) e (sql_)
    stages xp lvl médio 700 maximo aproximadamente 900-1000
     
     
     
    BUGS RETIRADOS!.... só vou dizer escrevendo mt trampo printa todos kkk
     
    Bug quest vip no baú final.. arrumei
    bug arvore dos kks removida..
    bug da parede que dava vip stone removida...
    todos os drops de items de quests ou npc e vips removidos...
    bug treiner se achando o vendedor kkk removido..
    bug da escada que derruba o ot em warlock removida...
    bug nas hydras que da item a reveria removido...
    todos os atalhos de vips ou hunts removidos...
    resumindo se sobrou algum bug me informa que eu retiro mas depois eu me mato kkkkk 

     
     
    SE GOSTARAM REP+ QUE DEU TRAMPO MANO KKKKK
     
    Senha god:
    god123/god321
     
    Senha dos tests...
    teste1/teste2
    teste2/teste3
    teste3/teste4
     
    O unico problema do ot : Manos e manas... eu fiquei com preguiça de editar o set epic vip.. pois minha facu começou
    então se quiserem editar esse são os IDS :
    Helmet: 2502
    Armor: 2503
    Legs: 2504             Editem em DATA/ITEMS/ITEMS.XML  um exemplo está aqui :
     
        <item id="2342" article="a" name="Ek helmet">
            <attribute key="weight" value="2760" />
            <attribute key="armor" value="35" />
            <attribute key="slotType" value="head" />

            <attribute key="skillSword" value="2" />
            <attribute key="skillAxe" value="2" />
            <attribute key="skillClub" value="2" />
            <attribute key="skillDist" value="1" />
            <attribute key="skillShield" value="3" />
            <attribute key="magiclevelpoints" value="1" />
            <attribute key="absorbPercentDeath" value="8" />
            <attribute key="absorbPercentPhysical" value="3" />
     
    DOWNLOAD: Link compartilhado do meu on driver, para não parar mais de funcionar :D.
    Desculpem a demora pra repor o link   ja foi editado mais em breve postarei a full edição.
    https://1drv.ms/f/s!ApIFyTccHQb-3n7jIj1xbluhLIbX
     
     
     
     
     
     
     
  15. Gostei
    The King of Madness recebeu reputação de sirzinho em [SCRIPT] Ant-divulgação   
    eu tenho um que iria boquear tda as virgulas, ponto e simbolo do seu servidor... mais ai ficaria difícil dos players conversa, pois qualquer msg que tive-se virgula, ponto ou simbolo seria bloqueado e da forma que vc deseja ele ainda seria penalizado, em uma pesquisa rápida no fórum eu encontrei esse tópico que talvez te ajude.
    e esse também.
     
  16. Gostei
    The King of Madness deu reputação a Vodkart em Classe Resetada ao morre   
    vai em creaturescript/script  lá tem onLogin.lua se não me engano, ai vc abre e coloca essa linha antes do último 'return true'
     
    doPlayerSetVocation(cid, 0)  
  17. Gostei
    The King of Madness deu reputação a Vodkart em Incentivo para chamarem jogadores   
  18. Gostei
    The King of Madness deu reputação a Vodkart em [8.6] Invite Players System!   
    Resumo: Para quem já jogou league of legends, o sistema é "parecido" com o Invite Friends, e para quem não jogou irei dar uma breve descrição sobre o sistema.
     
    Descrição: O sistema oferece algumas premiações como: Itens, Premium Days, Premium Points(para site) e Outfits. Claro que isso tudo é configurável.
    A ideia principal do sistema foi que essas premiações fossem exclusivas do sistema, digamos, que os jogadores só fossem recompensados e tivessem certas outfits se ele atingisse num número "X" de pontos por ter ajudado seu servidor a crescer!
    Como todo mundo almeja algo exclusivo e difícil de ser obtido, iria instigar os jogadores a usar o sistema e convidar seus amigos para o servidor!
     
    Como Funciona o Sistema?
     
    O sistema foi planejado para que jogadores "espertinhos" não burlassem o sistema e acontece da seguinte maneira:
     
    Temos o jogador João e a jogadora Maria:
     
    Maria necessita ser level 30 ou menor que 30(Configurável) para utilizar uma talkactions e dizer por quem foi invitada para o servidor, vamos supor que João a convidou Maria para jogar, João por sua vez necessita também ter um level avançado, digamos 50 ou superior(Configurável). Feito com sucesso o uso do sistema, ele funciona da seguinte maneira:
    OBS: Você pode dizer o nome do jogador mesmo que ele esteja OFFLINE!
     
    OBS2: Um ou mais Players podem ser invitador pelo MESMO JOGADOR! ENTÃO QUANTO MAIS PLAYER VOCÊ CHAMAR, MAIS FÁCIL DE RECEBER PONTOS E PREMIAÇÕES 
     
    O jogador invitado, no caso o João, teria que atingir um número "X" de pontos para receber premiações, por exemplo:
     
    * Com 10 Pontos jogão recebe: Itens
    * Com 25 Pontos jogão recebe: Itens e Premium Points
    * Com 50 Pontos jogão recebe: Itens
    * Com 100 Pontos jogão recebe: Itens, Premium Points, Premium Days e Outifit
    (Claro que isso é tudo configurável em uma Tabela)
     
    E como recebo Recebo esses Pontos VODKART SEU FILHO DA PUTA!
     
    Se lembra que João Convidou Maria para Jogar? Então... Maria tem que atingir certos leveis para que João receba esses pontos! Por exemplo a tabela do sistema:
     
    levels_win = { [50] = 5, [80] = 6, [100] = 8, [150] = 10 }
     
     
    Se Maria atingir level 50, João recebe 5 pontos
    Se Maria atingir level 80, João recebe 6 pontos
    Etc... Claro que isso tudo é acumulativo!
     
    E sabe o que mais? João recebe Pontos mesmo se estiver ONLINE ou OFFLINE!
     
    Sem mais delongas, Vamos instalar o sistema!
     
     
    data\creaturescripts\scripts
     
    InviteFriends.lua
    function onLogin(cid) registerCreatureEvent(cid, "FriendsPoints") if getPlayerStorageValue(cid, _invite_friends.storages[1]) < 0 then setPlayerStorageValue(cid, _invite_friends.storages[1], 0) setPlayerStorageValue(cid, _invite_friends.storages[4], 0) end if getInvitePoints(cid) > 0 then getRewardsFriend(getCreatureName(cid), getPlayerGUID(cid)) end return true end function onAdvance(cid, skill, oldLevel, newLevel) if (skill == SKILL__LEVEL) then if hasInviteFriend(cid) and getPlayerStorageValue(cid, _invite_friends.storages[3]) < newLevel and _invite_friends.levels_win[newLevel] then local f_name, points = getNameFriend(cid), _invite_friends.levels_win[newLevel] local f_pid = getPlayerGUIDByName(f_name) setPlayerStorageValue(cid, _invite_friends.storages[3], newLevel) addInvitePoints(f_name, points) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Invite Friends] você atingiu o level "..newLevel.." e o seu amigou "..f_name.." recebeu "..points.." Friend Points. Obrigado!") if isPlayer(getPlayerByNameWildcard(f_name)) then getRewardsFriend(f_name, f_pid) end end end return true end  
    creaturescript.xml
    <event type="login" name="FriendsLogin" event="script" value="InviteFriends.lua"/> <event type="advance" name="FriendsPoints" event="script" value="InviteFriends.lua"/>  
     
    data\talkactions\scripts
     
    InviteFriends.lua
    function onSay(cid, words, param, channel) local param = param:lower() if param == "" or not param then doPlayerSendCancel(cid, "Você precisa digitar o nome de um jogador.") return true elseif param == "points" then doPlayerPopupFYI(cid,"[+] Invite Friend System [+]\n\nvocê tem ["..getInvitePoints(cid).."] Friends Points.") return true elseif hasInviteFriend(cid) then doPlayerSendCancel(cid, "Você já agradeceu o jogador ["..getNameFriend(cid).."] por te convidar a jogar neste servidor.") return true elseif not getPlayerGUIDByName(param) then doPlayerSendCancel(cid, "Desculpe, mas o jogador [" .. param .. "] não existe.") return true elseif getPlayerLevel(cid) > _invite_friends.level_max or db.getResult("SELECT `level` FROM `players` WHERE `id` = "..getPlayerGUIDByName(param)):getDataInt("level") < _invite_friends.level_need then doPlayerSendCancel(cid, (getPlayerLevel(cid) > _invite_friends.level_max and "Desculpe, mas você precisa ter no minimo level ".._invite_friends.level_max.." para usar este comando." or "Desculpe, mas o jogador ["..param.."] precisa ter no minimo level ".._invite_friends.level_need.." para ser escolhido.")) return true elseif getPlayerIp(cid) == tonumber(db.getResult("SELECT `lastip` FROM `players` WHERE `id` = "..getPlayerGUIDByName(param)):getDataString("lastip")) then doPlayerSendCancel(cid, "Desculpe, mas você não pode se auto invitar por estar com o mesmo IP.") return true elseif getCreatureName(cid):lower() == param then doPlayerSendCancel(cid, "Desculpe, mas você não pode se auto invitar.") return true end doInviteFriend(cid, getPlayerGUIDByName(param)) doPlayerSendTextMessage(cid, 25, "Você indicou o jogador "..param..", este sistema é uma forma de agradecer a vocês por trazerem seus amigos para jogar.") doSendMagicEffect(getCreaturePosition(cid), math.random(28,30)) return true end  
    talkactions.xml
    <talkaction words="/invited;!invited" event="script" value="InviteFriends.lua"/>  
     
     
    data/lib
     
    InviteFriends.lua
    _invite_friends = { storages = {202301, 202302, 202303, 202304}, -- points, jogador, recompensa lvl, recompensa items level_max = 20, -- até que level ele precisa falar seu friend level_need = 30, -- que lever o jogador precisa ser para ganhar pontos levels_win = { -- leveis que receberão os pontos(feito pelo onAdvance) [50] = 5, [80] = 6, [100] = 8, [150] = 10 }, rewards = { -- a cada tantos pontos, que tipo de reward ele irá receber(automático onLogin) [10] = {items = {{2160,1},{2173,1}}, p_days = 1, p_points = 0 , out = {0,0}}, [25] = {items = {{2160,2},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [50] = {items = {{2160,3},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [100] = {items = {{2160,4},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [200] = {items = {{2160,5},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [250] = {items = {{2160,6},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [500] = {items = {{2160,7},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}} } } function getInvitePoints(cid) return getPlayerStorageValue(cid, _invite_friends.storages[1]) < 0 and 0 or getPlayerStorageValue(cid, _invite_friends.storages[1]) end function hasInviteFriend(cid) return getPlayerStorageValue(cid, _invite_friends.storages[2]) > 0 and true or false end function doInviteFriend(cid, GUID) return setPlayerStorageValue(cid, _invite_friends.storages[2], GUID) end function getNameFriend(cid) return getPlayerNameByGUID(getPlayerStorageValue(cid, _invite_friends.storages[2])) end function addInvitePoints(name, amount) local pid, Guid = getPlayerByNameWildcard(name), getPlayerGUIDByName(name) if not pid then local getFriendPoints = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = ".. Guid .." AND `key` = ".._invite_friends.storages[1]) if (getFriendPoints:getID() ~= -1) then db.executeQuery("UPDATE `player_storage` SET `value` = ".. (getFriendPoints:getDataInt("value")+amount) .." WHERE `player_id` = ".. Guid .." AND `key` = ".._invite_friends.storages[1]) end else setPlayerStorageValue(getPlayerByName(name), _invite_friends.storages[1], getInvitePoints(getPlayerByName(name))+amount) end return true end function getRewardsFriend(name, pid) local acc = getAccountIdByName(name) if isPlayer(getPlayerByNameWildcard(name)) then local target = getPlayerByNameWildcard(name) local FriendPoints, CheckPoints = getInvitePoints(target), getPlayerStorageValue(target, _invite_friends.storages[4]) for vod, ka in pairs(_invite_friends.rewards) do local str = "" if FriendPoints >= vod and CheckPoints < vod then str = str.."--> Invite Players System <--\n\nVocê acaba de receber algumas recompensas:\n\nItems: \n"..getItemsFromList(ka.items)..".\n\n" if ka.p_days > 0 then doPlayerAddPremiumDays(target, ka.p_days) str = str.."Premium Days:\n"..ka.p_days.." Premium Days." end if ka.p_points > 0 then db.executeQuery('UPDATE accounts SET premium_points=premium_points+' .. ka.p_points ..' WHERE id=' .. acc) str = str.."Premium Points:\n"..ka.p_points.." Premium Points." end if ka.out[1] > 0 then doPlayerAddOutfit(target, getPlayerSex(target) == 0 and ka.out[1] or ka.out[2], 3) str = str.."[New Outfit]\nRecebeu uma Nova Outfit." end setPlayerStorageValue(target, _invite_friends.storages[4], FriendPoints) MandarItensProDp(name, ka.items, str) doPlayerSendTextMessage(target, MESSAGE_STATUS_CONSOLE_ORANGE,"[Invite Players System] Você Recebeu algumas premiações por estar convidando jogadores para o servidor, Por favor conferir os itens no Depot.") end end end return true end function MandarItensProDp(name, items, texto) local parcel = doCreateItemEx(ITEM_PARCEL) for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(parcel, item, amount) else for i = 1, amount do doAddContainerItem(parcel, item, 1) end end end local carta = doAddContainerItem(parcel, 1952) doItemSetAttribute(carta, "writer", "[+] Invite Players System [+]") doItemSetAttribute(carta, "text", texto) doPlayerSendMailByName(name, parcel) return true end -- function adicional -- function getItemsFromList(items) -- by vodka local str = '' if table.maxn(items) > 0 then for i = 1, table.maxn(items) do str = str .. items[i][2] .. ' ' .. getItemNameById(items[i][1]) if i ~= table.maxn(items) then str = str .. ', ' end end end return str end  
    Configurando o Sistema:   *Vá na LIB do sistema que você adicionou*       level_max = 30, -- até que level ele precisa falar seu friend   level_need = 50, -- que lever o jogador precisa ser para ganhar pontos     levels_win = { -- [LEVEL QUE PRECISA ATINGIR] = QUANTIDADE DE PONTOS QUE O OUTRO JOGADOR VAI RECEBER [50] = 5, [80] = 6, [100] = 8, [150] = 10 }         rewards = {
            [10] = {items = {{2160,1},{2173,1}}, p_days = 1, p_points = 0 , out = {0,0}},
            [25] = {items = {{2160,2},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}},
            [50] = {items = {{2160,3},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}},
            [100] = {items = {{2160,4},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}},
            [200] = {items = {{2160,5},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}},
            [250] = {items = {{2160,6},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}},
            [500] = {items = {{2160,7},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}
        }   rewards = {   [PONTOS NECESSÁRIO PARA OBTER A PREMIAÇÃO] =   exemplo:    [10] = {items = {{2160,1},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}},     com 10 pontos ele irá receber aquele itens acima /\     items = {} -- Poderá adicionar itens em uma tabela dizendo {id do item, quantidade}   p_days = 0 -- se o jogador vai receber Premium Days? 0 ou Quantidade que vc deseja dar   p_points = 0 -- se o jogador vai receber Premium Points? 0 ou Quantidade que vc deseja dar   out = {0,0} -- se vai receber outfit? {FEMALE, MALE} OU {0 , 0}  para nenhuma. obs:(lembrando que o id das outfits ficam em outfits.xml)  
     
  19. Gostei
    The King of Madness deu reputação a Rusherzin em Comando "Spy" Players   
    Olá pessoal do TK, venho aqui trazer um script que não fui eu quem o criou, somente coloquei-o em português (e daí?).. Achei em um fórum e no final do tópico estarei disponibilizando o nome do criador.
     
    Utilidade do Script:
     
    Bom, o script serve para você com um character com acesso de GOD (configurável) possa ver quais itens um certo player está utilizando no momento. PS: Inclusive os itens presentes dentro da backpack do Player.
     
    Como funciona:
     
    Você digita a talkaction /spy seguida do nome do player a ser "espionado".
    Por Exemplo: /spy Rusherzin
    /spy Tibia King
     
    Testado em:
     
    Versão 8.54
     
    Imagem:



     
    Agora vamos ao script:
    Vá em data/talkactions/scripts/ copie e cole um arquivo .lua qualquer, renomeie para spy e cole isso dentro:



     
    E adicione essa tag no talkactions.xml:



     
     
     
    Créditos:  Azi
  20. Gostei
    The King of Madness deu reputação a xWhiteWolf em New Library v. 1.2   
    Fala galera, hoje vim trazer pra vocês uma nova biblioteca de funções que eu venho desenvolvendo, pretendo ir atualizando esse tópico constantemente sempre adicionando funções novas e explicando a utilização delas. Algumas funções que eu coloquei aqui estão presentes na OTAL também, porém algumas eu fiz pequenas correções de forma que essa lib poderia facilmente substituir a OTAL sem grandes problemas (pelo menos se você utilizava apenas as funções básicas da otal)
    Todas as funções que não tem -- nome do autor do lado dela foram feitas por mim, xWhiteWolf ou Night Wolf (NW). O restante delas são créditos dos devidos autores, apenas coloquei pois considero funções vitais no server de cada um. Crie um arquivo em data/lib chamado 075 - White Wolf Functions.lua e coloque o seguinte código dentro:



     
    Agora eu vou explicar oque cada função faz porque de nada adianta lançar uma lib e não explicar oque ela faz não é mesmo? hahaha
    Obs inicial: quando uma função tiver em seus parametros um [] significa que oque está dentro do colchetes não é um parâmetro obrigatório.



    Como usar: doShowTimeByPos(cid, getCreaturePosition(cid), 20, 20)
    Irá fazer uma contagem regressiva na posição que o player se encontra começando de 20 e mandando a mensagem na mesma cor da fala dos monstros.
    Essa função é bem útil em actions/spells para fazer contagem de tempo em runas como a magic wall e ver quanto tempo falta pra magic wall sumir)

     
    Obs: Espero que ajude bastante pessoas a entender sobre funções, eu utilizei cid como o principal uid das funções nos exemplos mas você pode muito bem utilizar outros uids, fica a critério seu.

    Qualquer dúvida comentem abaixo que eu vou tentar ajudar da melhor maneira.
    Ahhh, isso daí foi testado em 8.54 mas deve funcionar em quase todas as versões que tenham as funções básicas do TFS. 

    EDIT: Pessoal, agora é sério, essa lib tem fácil umas 600 linhas, das quais umas 500 eu devo ter codado sozinho (na mão, linha por linha). Eu tive todo o trabalho de testar cada uma delas e oque eu peço é o mínimo de gratidão e respeito. Se eu te ajudei clique em Gostei, se você tiver alguma dúvida eu to me colocando a disposição de responder qualquer coisa relacionada ao tópico, mesmo que você não saiba nem oque é uma lib apenas venha aqui e escreva sua dúvida.

    EDIT 2: Duas novas funções adicionas, espero que gostem!

    EDIT 3: Três novas funções adicionadas juntamente com suas respectivas explicações.
  21. Gostei
    The King of Madness deu reputação a xWhiteWolf em Gran Castle Event (8.54+)   
    Olá pessoa, hoje vim trazer pra vocês um script bem requisitado que inclusive é vendido por alguns scripters. Algumas versões "pioradas" dessse script podem ser encontradas em servidores cópias do Fox World porém nenhum desses scripts chegará aos pés desse daqui que foi arrumado por mim.
    Eu não sou o criador do Script, eu peguei qualquer um na internet e só fui arrumando e adicionando coisas que as pessoas reclamavam que não tinha.
    O cara que criou a versão que eu editei é esse daqui:

    Não vou me prolongar e nem falar mal da versão do Roksas, apenas saibam que eu editei ela praticamente inteira e que agora está 100%.

    Aqui tem um pequeno vídeo de como funciona o evento:
     
     

    Explicação: Gran Castle é um evento para ser feito sozinho ou com a guild, há um limite configurável no script de membros que podem entrar da mesma guild. Em dias determinados é aberto o evento e os players podem entrar ao falar com o NPC Melkrapo. Uma vez dentro do castelo os players batalharão para subir os andares e chegar até a Gran Tower, um monstro lendário que dará glória para aqueles que o derrotarem. Será que você é capaz? Instale no seu server e descubra! Um evento para redefinir o conceito de PVP e onde o seu maior inimigo serão seus semelhantes.


    Sem mais delongas vamos começar  a instalar esse monstrinho.. porque ele é grande pra caralho.
     
     
     


    Agora crie um arquivo em creaturescripts\scripts chamado Gran Tower.lua e adicione o seguinte:

    em data\lib crie um arquivo chamado 046-Gran Tower.lua e adicione o seguinte dentro dele:
    Agora voltando aos creaturescripts crie um arquivo em scripts chamado Gran Aura.lua e adicione:


    E um arquivo chamado Barrier.lua na mesma pasta com o seguinte conteúdo:
    Agora em globalevents\globalevents.xml adicione a seguinte linha:
    <globalevent name="Gran Tower" interval="60" event="script" value="Gran Tower.lua"/> E adicione o script associado em globalevents\scripts com o nome de Gran Tower.lua:
    Agora na pasta monster procure o seu monsters.xml e adicione essas duas linhas:
    <monster name="Gran Tower" file="8.4/Gran Tower.xml"/> <monster name="Barrier" file="8.4/barrier.xml"/> Feito isso crie os monstros na pasta data\monster\8.4:
    O primeiro se chama barrier.xml e deverá conter:


    O segundo se chamará Gran Tower.xml e deverá conter:
    Agora vamos para NPC, vá em data\npc e crie um arquivo chamado Melkrapo.xml com o seguinte conteúdo:


    Agora em npc\scripts crie um arquivo chamado Melkrapo.lua e adicione o seguinte:

     
    Agora partindo pra spells vá em data\spells e adicione no spells.xml essas linhas:
  22. Gostei
    The King of Madness 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:
  23. Gostei
    The King of Madness 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. 
  24. Gostei
    The King of Madness recebeu reputação de Wase Wiss em Tps Falantes   
    @Wase Wiss  o @Subyth tinha acabado de postar o codigo na linguagem TFS 0.3 e 0.4
     
     
  25. Gostei
    The King of Madness deu reputação a 9k22 em Tps Falantes   
    E esse é para as versões inferiores (tfs 0.3 e 0.4) caso alguém caia neste tópico procurando...
     
    function onThink(cid, interval, lastExecution)
        local positions = {
        ["Trainers"] = {{ x = 152, y = 42, z = 7}, color = 179}, -- branco obviamente
        ["Teleports"] = {{ x = 155, y = 42, z = 7}, color = 179}, -- branco obviamente
        ["Axe"] = {{ x = 164, y = 51, z = 6}, color = 180}, -- vermelho
        ["Club"] = {{ x = 166, y = 51, z = 6}, color = 180}, -- vermelho
        ["Sword"] = {{ x = 168, y = 51, z = 6}, color = 180}, -- vermelho
        ["Mag Level"] = {{ x = 167, y = 53, z = 6}, color = 191}, -- rosa
        ["Distance"] = {{ x = 165, y = 53, z = 6}, color = 60}, -- verde obviamente
        }
                        
        for text, pos in pairs(positions) do
            doSendAnimatedText(pos[1], text, pos.color)
        end
        return true
    end

Informação Importante

Confirmação de Termo