Ir para conteúdo

icemirow

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Obrigado
    icemirow recebeu reputação de Rimer Lathar em Download Clients 11+ IP 127.0.0.1   
    dae irmão @JZDJ, me tira uma dúvida, se quiser alterar o ip para o otserv, é só alterar lá com o notepad, ou tem q fazer outro processo? valeu trabalho tá bom de mais!
  2. Curtir
    icemirow deu reputação a JZDJ em Download Clients 11+ IP 127.0.0.1   
    Olá galera do TK.
    Hoje eu trago vários clientes de Tibia 11+ com IP 127.0.0.1.
    Vi que alguns usuários não estão conseguindo algumas versões 11 então resolvi postar aqui.
    Estou disponibilizando o EXECUTÁVEL DO CLIENTE.
    Para que funcione é só colocar na pasta BIN da versão correspondente.
    Também disponibilizei a pasta completa compactada.
     
    Vamos ao que interessa.
     
    Tibia 11.43.5504

    127.0.0.1-11.43.5504.exe
    SCAN do cliente
    Pasta completa: Tibia 11.43.5504.rar
    SCAN pasta completa
     
    Tibia 11.44.5516

    127.0.0.1-11.44.5516.exe
    SCAN do cliente
    Pasta completa: Tibia 11.44.5516.rar
    SCAN pasta completa
     
    Tibia 11.46.5556

    127.0.0.1-11.46.5556.exe
    SCAN do cliente
    Pasta completa: Tibia 11.46.5556.rar
    SCAN pasta completa
     
    Tibia 11.47.5640

    127.0.0.1-11.47.5640.exe
    SCAN do cliente
    Pasta completa: Tibia_11_47.5640.rar
    SCAN pasta completa
     
    Tibia 11.47.5674

    127.0.0.1-11.47.5674.exe
    SCAN do cliente
    Pasta completa: Tibia_11_47.5674.rar
    SCAN pasta completa
     
    Tibia 11.48.5712

    127.0.0.1-11.48.5712.exe
    SCAN do cliente
    Pasta completa: Tibia_11_48.5712.rar
    SCAN pasta completa
     
    Tibia 11.48.5753

    127.0.0.1-11.48.5753.exe
    SCAN do cliente
    Pasta completa: Tibia_11_48.5753.rar
    SCAN pasta completa
     
    Tibia 11.49.5813

    127.0.0.1-11.49.5813.exe
    SCAN do cliente
    Pasta completa:  Tibia_11_49.5813.rar
    SCAN pasta completa
     
    Tibia 11.49.5884

    127.0.0.1-11.49.5884.exe
    SCAN do cliente
    Pasta completa: Tibia_11_49.5884.rar
    SCAN pasta completa
     
    Tibia 11.49.5921

    127.0.0.1-11.49.5921.exe
    SCAN do cliente
    Pasta completa:  Tibia_11_49.5921.rar
    SCAN pasta completa
     
    Tibia 11.49.5983

    127.0.0.1-11.49.5983.exe
    SCAN do cliente
    Pasta completa: Tibia_11_49.5983.rar
    SCAN pasta completa
     
    Tibia 11.49.6018

    127.0.0.1-11.49.6018.exe
    SCAN do cliente
    Pasta completa: Tibia 11.49.6018.rar
    SCAN pasta completa
     
    Tibia 11.49.6030

    127.0.0.1-11.49.6030.exe
    SCAN do cliente
    Tibia 11.49.6030.rar
    SCAN pasta completa
     
    Tibia 11.50.6055

    127.0.0.1-11.50.6055.exe
    SCAN do cliente
    Tibia 11.50.6055.rar
    SCAN pasta completa
     
    Tibia 11.51.6099

    127.0.0.1-11.51.6099.exe
    SCAN do cliente
    Tibia 11.51.6099.rar
    SCAN pasta completa
     
    Tibia 11.52.6104

    127.0.0.1-11.52.6104.exe
    SCAN do cliente
    Tibia 11.52.6104.rar
    SCAN pasta completa
     
    Tibia 11.55.6239

    127.0.0.1-11.55.6239.exe
    SCAN do cliente
    Tibia 11.55.6239.rar
    SCAN pasta completa
     
    Tibia 11.56.6239

    127.0.0.1-11.56.6239.exe
    SCAN do cliente
    Tibia 11.56.6239.rar
    SCAN pasta completa
     
    Tibia 11.57.6239

    127.0.0.1-11.57.6239.exe
    SCAN do cliente
    Tibia 11.57.6239.rar
    SCAN pasta completa
     
    Tibia 11.58.6239

    127.0.0.1-11.58.6239.exe
    SCAN do cliente
    Tibia 11.58.6239.rar
    SCAN pasta completa
     
    Tibia 11.58.6239 ATUALIZADO

      127.0.0.1-11_58.6239.exe ATUALIZADO
    SCAN do cliente
    Tibia 11.58.6239 ATUALIZADO.rar
    SCAN pasta completa
     
    Tibia 11.59.6424

    127.0.0.1-11.59.6424.exe
    SCAN do cliente
    Tibia 11.59.6424.rar
    SCAN pasta completa
     
    Tibia 11.60.6457

    127.0.0.1-11.60.6457.exe
    SCAN do cliente
    Tibia 11.60.6457.rar
    SCAN pasta completa
     
    Tibia 11.65.6492

    127.0.0.1-11.65.6492.exe
    SCAN do cliente
    Tibia 11.65.6492.rar
    SCAN pasta completa
     
    Tibia 11.65.6507

    127.0.0.1-11.65.6507.exe
    SCAN do cliente
    Tibia 11.65.6507.rar
    SCAN pasta completa
     
    Tibia 11.66.6516

    127.0.0.1-11.66.6516.exe
    SCAN do cliente
    Tibia 11.66.6516.rar
    SCAN pasta completa
     
    Tibia 11.70.6535

    127.0.0.1-11.70.6535.exe
    SCAN do cliente
    Tibia 11.70.6535.rar
    SCAN pasta completa
     
    Tibia 11.70.6543

    127.0.0.1-11.70.6543.rar
    SCAN do cliente
    Tibia 11.70.6543.rar
    SCAN pasta completa
     
    Tibia 11.70.6548

    127.0.0.1-11.70.6548.rar
    SCAN do cliente
    Tibia 11.70.6548.rar
    SCAN pasta completa
     
    Tibia 11.70.6555

    127.0.0.1-11.70.6555.rar
    SCAN do cliente
    Tibia 11.70.6555.rar
    SCAN pasta completa
     
    Espero que eu tenha ajudado.
     
    Créditos:
    A Cip pelos clientes e a mim por ter alterado os ips nos mesmos.
     
    REP+ é sempre bom e não dói.
    Abraços.
    ATT ,
    Jaurez/JZDJ
  3. Curtir
    icemirow deu reputação a luanluciano93 em [PESQUISA] Proteções contra ataques DDOS   
    Olá pessoal, estou fazendo uma pesquisa com vários donos de OTS para ver qual os tipos de ataques que eles recebem e qual proteção eles usam ... 
    Você usa métodos de proteções contra ataques? Se sim, quais? Explique.
    • Wallison (Aurera-global, 2300 online)
    Utilizo serviço externo para proteger o servidor (servecore).

    • Natanael (megatibia, 1521 online)
    Em primeiro lugar contrate uma empresa que tenha um bom filtro pois sem isso impossivelmente ter "uma certa paz" e o iptables não faz milagres (uso OVH). Em seguida contrate alguém que entenda de proteção tem varios Sys Admin de qualidade e confiaveis no mercado, aconselho Pedro Sodré (@Nightz).

    • Felipe (ImperialOT, 919 online, offine)
    - Uso a proteção da OVH + a da servecore (hardware), o ataque passa por umas 5 maquinas ate chegar em mim, tipo um proxy. Mas pelo que sei, se souber configurar o firewall da OVH, vc não leva ataque.

    Irei atualizando com o tempo ...

    • Mod_avasive (proteção)
    • cloudfire (proteção)
    • OVH (servidor)
     
  4. Curtir
    icemirow deu reputação a luanluciano93 em Novo Sistema de Trainer   
    Olá, tudo bom? Peguei um sistema que o lobão criou e modifiquei para TFS 1.x (eu uso o 1.3 e funcionou certinho).

    Lembrando que todos os créditos são do @xWhiteWolf.
     
    Explicação:
    O sistema escolhe automáticamente, entre todas as salas de trainers, aquela que está vazia pra te alocar.
     


    Fiz em dois scripts de movements, um o action id no teleport para entrar na sala e outro no teleport para sair:

    trainer_entrar.lua: 

    trainer_sair.lua: 

    É isso pessoal, para melhor entendimento de como funciona ou como instalar veja o tópico do lobão: http://www.tibiaking.com/forum/forums/topic/68031-novo-sistema-de-trainer-036~04/
     
  5. Gostei
    icemirow deu reputação a Skydangerous em Mount Rent (NPC) TFS 1.2   
    Está proibido postar em outros fóruns
     
     
    Informação:
     
    1. Sistema de Alugar montaria via NPC
     1.0. Opções por apenas VIP , PREMIUM E FREE
       1.1.0. Caso opte por VIP (Exemplo) a montaria não aparecerá para os demais jogadores.
     
    2. Configurável o tempo, tipo da montaria, level e o preço da montaria.
     2.1. Acabou o tempo automaticamente remove a montaria.
     
    3.1 Totalmente limpo e fácil de configuração.
     
    Instalação: 
     
    LIB: mount_rent.lua
     
    MOUNT_H = { ["war horse"] = {price = 10000, hours = 2, mountid = 17, level = 10, vip = false, premium = false, storage = 500561}, ["fire war horse"] = {price = 30000, hours = 2, mountid = 23, level = 20, vip = true, premium = false, storage = 500562}, ["sandstone scorpion"] = {price = 50000, hours = 1, mountid = 21, level = 10, vip = false, premium = true, storage = 500563} } function Player.checkRentMounts(self) for name, v in pairs(MOUNT_H) do if (self:hasMount(v.mountid)) and (self:getStorageValue(v.storage) ~= -1) and (self:getStorageValue(v.storage) <= os.time()) then self:removeMount(v.mountid) local outfit = self:getOutfit() outfit.lookMount = 0 self:setOutfit(outfit) self:sendTextMessage(MESSAGE_STATUS_WARNING, "The time of your mount ".. name .." has ended.") self:setStorageValue(v.storage, -1) end end return true end TAG: dofile('data/lib/mount_rent.lua')
     
    CREATURESCRIPT: mount_rent.lua
     
    function onLogin(player) player:checkRentMounts() return true end TAG: 
    <event type="login" name="checkmounts" script="mount_rent.lua"/>  
     
    GLOBALEVENTS: mount_rent.lua
     
    function onThink(interval, lastExecution) for _, player in pairs(Game.getPlayers()) do player:checkRentMounts() end return true end TAG: 
    <globalevent name="CheckMount" interval="60000" script="mount_rent.lua"/>  
    NPC: mount_rent.lua
     
    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 local keywords = {"aluguel", "alugar", "rent", "mounts", "mount"} function Player.isVip(self) return false end npcHandler:addModule(FocusModule:new()) function creatureSayCallback(cid, type_, msg) if not npcHandler:isFocused(cid) then return false end local msg = string.lower(msg) local player = Player(cid) if isInArray(keywords, msg) then local str = "You can rent" local amount = 0 for name, v in pairs(MOUNT_H) do if not ((v.premium and player:getPremiumDays() < 1) or (v.vip and not player:isVip()) or (player:getLevel() < v.level) or (player:getStorageValue(v.storage) >= os.time())) then str = str .. " {".. name .. "}," amount = amount + 1 end end if amount > 0 then npcHandler:say(str:sub(1, #str - 1) .. "!", cid) npcHandler.topic[cid] = 1 else npcHandler:say("You are not allowed to rent any mount.", cid) end elseif npcHandler.topic[cid] == 1 and MOUNT_H[msg] then local mount = MOUNT_H[msg] if mount.premium and player:getPremiumDays() < 1 then npcHandler:say("You must be premium to rent this mount.", cid) return true elseif player:getLevel() < mount.level then npcHandler:say("You must be, at least, level " .. mount.level .. " to rent this mount.", cid) return true elseif player:getStorageValue(mount.storage) >= os.time() then npcHandler:say("You already have rented this mount!", cid) return true end local str = "You want to rent ".. msg .." for ".. mount.hours .. " hour".. (mount.hours > 1 and "s" or "") npcHandler:say(str .. " for ".. mount.price .. " gold pieces?", cid) npcHandler.topic[cid] = msg elseif type(npcHandler.topic[cid]) == "string" then local mount = MOUNT_H[npcHandler.topic[cid]] if player:removeMoney(mount.price) then player:addMount(mount.mountid) player:setStorageValue(mount.storage, os.time() + mount.hours * 60) npcHandler:say("Here is your ".. npcHandler.topic[cid] ..", it will last until ".. os.date("%d %B %Y %X", os.time() + mount.hours * 60) ..".", cid) else npcHandler:say("Sorry, you do not have enough money to rent the mount!", cid) end npcHandler.topic[cid] = 0 elseif msgcontains(msg, "no") then npcHandler:say("Ok then.", cid) npcHandler.topic[cid] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())  
     
     
    Divirta-se (:
     
  6. Gostei
    icemirow deu reputação a Ivens Pontes em [PagSeguro] Novo Método de Retorno Automático   
    Olá amiguinhos! Esse é meu primeiro script que faço e trago para vocês.
    Esse sistema usa a API PHP do PagSeguro, muito mais simples e seguro, sem muitas gambiarras.
    Tentei deixar o mais fácil possível de se instalar, qualquer sugestão será bem vinda!
     
    Requisitos:
    PHP 5.4.27+
    SPL
    cURL
    SimpleXml
     
    Funcionalidades:
    Double Points no config/config.php
    Possibilidade de usar vários sites em uma unica conta do PagSeguro
    Possibilidade de acrescentar mais funcionalidades ao Gesior ou outro AAC com a API do PagSeguro.
     
    Primeiramente pegue seu token (AQUI) e desative todas as configurações.
    Assim: 
     
    Feito isso, baixe a source no repositório do GitHub (AQUI).
    Extraia o conteúdo e coloque na raiz do seu site (www ou htdocs).
     
    Agora vamos colocar a mão na massa!
     
    Abra config/config.php e coloque esse código onde achar melhor:
    $config['pagSeguro']['email'] = "[email protected]"; // Email da conta pagseguro $config['pagSeguro']['token'] = "yourtokenhere"; // Seu TOKEN $config['pagSeguro']['urlRedirect'] = 'http://seusite.com/?subtopic=donate&action=final'; $config['pagSeguro']['urlNotification'] = 'http://seusite.com/retpagseguro.php'; $config['pagSeguro']['productName'] = 'Premium Points'; // Nome do produto que irá aparecer no pagseguro $config['pagSeguro']['productValue'] = 1.00; // valor de cada ponto ex.: 0.50 = R$ 0,50 / 1.50 = R$ 1,50 .... $config['pagSeguro']['doublePoints'] = false; // se true ativa double points / se false desativa $config['pagSeguro']['host'] = 'localhost'; // host banco de dados $config['pagSeguro']['database'] = 'tibiaking_db'; // nome do banco de dados $config['pagSeguro']['databaseUser'] = 'root'; // usuario banco de dados $config['pagSeguro']['databasePass'] = 'tibiaKing3321'; // senha banco de dados Preencha as configurações, não tem muita dificuldade.
     
    Um passo importante para o sistema funcionar corretamente é preencher o ['urlRedirect'] e ['urlNotification'] corretamente.
     
    ['urlRedirect'] é a pagina que o PagSeguro irá mandar o comprador depois que ele pagar a solicitação.
    Substitua o seusite.com pelo seu site eu se quiser o para outra pagina ex.: seusite.com/?subtopic=accountmanagement 
     
    ['urlNotification'] é onde o retpagseguro.php está, tenha certeza que ele está na raiz do site, não o coloque em outro lugar para evitar problemas.
     
    Com tudo preenchido vamos ao banco de dados e execute esse código sql: 
    CREATE TABLE IF NOT EXISTS `pagseguro_transactions` ( `transaction_code` varchar(36) NOT NULL, `name` varchar(200) DEFAULT NULL, `payment_method` varchar(50) NOT NULL, `status` varchar(50) NOT NULL, `item_count` int(11) NOT NULL, `data` datetime NOT NULL, UNIQUE KEY `transaction_code` (`transaction_code`,`status`), KEY `name` (`name`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Ou importe o arquivo pagseguro.sql que vem dentro da pasta schemas.
     
    Feito isso entre em seusite.com/?subtopic=donate e prossiga normalmente como se fosse fazer uma doação.
     
    Se ao clicar no botão de finalizar for levado a esta tela:
     
    Provavelmente você fez tudo corretamente.
     
    Qualquer bug ou dificuldade na instalação só comentar que irei ajudar. Até a próxima!
     
    Scan mais recente: Link
    Documentação da API: Link
     
    Agradecimentos:
    DexDev
    Natanael e Abusolute e Matk (Os sistemas anteriores me fizeram entender a logica da coisa)
  7. Gostei
    icemirow deu reputação a Jaurez em Usando RME em 10.00/11.x   
    Olá galera do TK.
    Depois de muito sufoco que eu passei tentando fazer "funcionar" o editor de mapa 10.x, descobri pesquisando aqui mesmo no Tibia King como resolver.
    Só que os posts que eu acessei não descreviam, digamos, o passo a passo, então vou tentar explicar o mais resumido possível como utilizar.
    Tutorial em fotos.
    Bem, vamos lá.
     
    Sigam os 10 passos após baixarem.
    1- Descompactar o arquivo (dããããã);
    2- Executar o RME;
    3- Vai pedir a pasta do tibia 11.40;
    4- Selecione o tibia 11.40 (Vem junto com o remeres no download);
    5- Clique em OK----vai dar erro ( não se preocupe com isso );
    6- Cancele a próxima janela;
    7- Vai cancelando até parar de aparecer aquelas janelinhas chatas de erro;
    8- Não feche o RME;
    9- Clique em FILE-depois em PREFERENCES- depois em CLIENT VERSIONS, desmarque o quadrinho CHECK FILE SIGNATURES- clique APPLY-depois OK;
    10- SEJA FELIZ e dê um REP bem bacana se te ajudei.
     
    Remeres compatível com as versões atuais 10.00/11x
    Scan:
     
     
     
    FOTOS DO PASSO A PASSO, as fotos são da outra versão mas vale pro 11.40
     
     
    ATT,
    Jaurez
     
     
     
     
     
     
  8. Gostei
    icemirow recebeu reputação de sdnjaks em Compilar Distro   
    Fala ai brother! blz?
     
    Sim existe, microsoft visual studio 2012-2015, famoso MSV
     
    Abraços! Se ajudei dá um rep ai 
  9. Gostei
    icemirow deu reputação a Tricoder em Ice Nova   
    Preview

     
    Script
    data/spells/spells.xml
    <instant name="Ice nova" words="exori gran mas frigo" lvl="45" mana="355" prem="0" exhaustion="2000" needlearn="0" script="ice nova.lua"/> data/spells/scripts/ice nova.lua
    local acombat1 = createCombatObject() local acombat2 = createCombatObject() local acombat3 = createCombatObject() local acombat4 = createCombatObject() local acombat5 = createCombatObject() local acombat6 = createCombatObject() local acombat7 = createCombatObject() local acombat8 = createCombatObject() local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 52) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 28) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -0.85, -80, -0.9, -127) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 52) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 28) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0.85, -80, -0.9, -127) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 52) setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, 28) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0.85, -80, -0.9, -127) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 52) setCombatParam(combat4, COMBAT_PARAM_DISTANCEEFFECT, 28) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0.85, -80, -0.9, -127) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat5, COMBAT_PARAM_EFFECT, 41) setCombatParam(combat5, COMBAT_PARAM_DISTANCEEFFECT, 36) setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -0.85, -80, -0.9, -127) local combat6 = createCombatObject() setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat6, COMBAT_PARAM_EFFECT, 41) setCombatParam(combat6, COMBAT_PARAM_DISTANCEEFFECT, 36) setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -0.85, -80, -0.9, -127) local combat7 = createCombatObject() setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat7, COMBAT_PARAM_EFFECT, 41) setCombatParam(combat7, COMBAT_PARAM_DISTANCEEFFECT, 36) setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, -0.85, -80, -0.9, -127) local combat8 = createCombatObject() setCombatParam(combat8, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat8, COMBAT_PARAM_EFFECT, 41) setCombatParam(combat8, COMBAT_PARAM_DISTANCEEFFECT, 36) setCombatFormula(combat8, COMBAT_FORMULA_LEVELMAGIC, -0.0, -80, -0, -127) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 20000) --setConditionParam(condition, CONDITION_PARAM_SPEED, -200) setConditionFormula(condition, -0.9, 0, -0.9, 0) setCombatCondition(combat1, condition) setCombatCondition(combat2, condition) setCombatCondition(combat3, condition) setCombatCondition(combat4, condition) setCombatCondition(combat5, condition) setCombatCondition(combat6, condition) setCombatCondition(combat7, condition) setCombatCondition(combat8, condition) arr1 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr2 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr3 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 2, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr4 = { {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1}, {1, 1, 0, 0, 0, 2, 0, 0, 0, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0} } arr5 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr6 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr7 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 2, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr8 = { {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1}, {1, 1, 0, 0, 0, 2, 0, 0, 0, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr3) local area4 = createCombatArea(arr4) local area5 = createCombatArea(arr5) local area6 = createCombatArea(arr6) local area7 = createCombatArea(arr7) local area8 = createCombatArea(arr8) setCombatArea(acombat1, area1) setCombatArea(acombat2, area2) setCombatArea(acombat3, area3) setCombatArea(acombat4, area4) setCombatArea(acombat5, area5) setCombatArea(acombat6, area6) setCombatArea(acombat7, area7) setCombatArea(acombat8, area8) function onTargetTile(cid, pos) doCombat(cid,combat1,positionToVariant(pos)) end function onTargetTile2(cid, pos) doCombat(cid,combat2,positionToVariant(pos)) end function onTargetTile3(cid, pos) doCombat(cid,combat3,positionToVariant(pos)) end function onTargetTile4(cid, pos) doCombat(cid,combat4,positionToVariant(pos)) end function onTargetTile5(cid, pos) doCombat(cid,combat5,positionToVariant(pos)) end function onTargetTile6(cid, pos) doCombat(cid,combat6,positionToVariant(pos)) end function onTargetTile7(cid, pos) doCombat(cid,combat7,positionToVariant(pos)) end function onTargetTile8(cid, pos) doCombat(cid,combat8,positionToVariant(pos)) end setCombatCallback(acombat1, CALLBACK_PARAM_TARGETTILE, "onTargetTile") setCombatCallback(acombat2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2") setCombatCallback(acombat3, CALLBACK_PARAM_TARGETTILE, "onTargetTile3") setCombatCallback(acombat4, CALLBACK_PARAM_TARGETTILE, "onTargetTile4") setCombatCallback(acombat5, CALLBACK_PARAM_TARGETTILE, "onTargetTile5") setCombatCallback(acombat6, CALLBACK_PARAM_TARGETTILE, "onTargetTile6") setCombatCallback(acombat7, CALLBACK_PARAM_TARGETTILE, "onTargetTile7") setCombatCallback(acombat8, CALLBACK_PARAM_TARGETTILE, "onTargetTile8") local function onCastSpell1(parameters) doCombat(parameters.cid, acombat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, acombat2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, acombat3, parameters.var) end local function onCastSpell4(parameters) doCombat(parameters.cid, acombat4, parameters.var) end local function onCastSpell5(parameters) doCombat(parameters.cid, acombat5, parameters.var) end local function onCastSpell6(parameters) doCombat(parameters.cid, acombat6, parameters.var) end local function onCastSpell7(parameters) doCombat(parameters.cid, acombat7, parameters.var) end local function onCastSpell8(parameters) doCombat(parameters.cid, acombat8, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 0, parameters) addEvent(onCastSpell2, 200, parameters) addEvent(onCastSpell3, 400, parameters) addEvent(onCastSpell4, 600, parameters) addEvent(onCastSpell5, 700, parameters) addEvent(onCastSpell6, 900, parameters) addEvent(onCastSpell7, 1100, parameters) addEvent(onCastSpell8, 1300, parameters) end Créditos: orzeleagle
  10. Gostei
    icemirow 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.
  11. Gostei
    icemirow recebeu reputação de Drazyn1291 em Erro ao Compilar   
    Fala ai brother! blz?
     
    Seguinte, coloca o passa-a-passo que você está fazendo, pra ver se está tudo certo!
     
    Abraços e fico no aguardo 
  12. Gostei
    icemirow deu reputação a DeCarvalho em [TFS 1.1+] /namelock /unlock   
    Feito por Sir Islam e é bem simples.. 
     
    Caso você nbão tenha na db execute a query
    db.query("INSERT INTO `player_namelocks`(`player_id`, `reason`, `namelocked_at`, `namelocked_by`) VALUES (".. PlayerGUID.."," .. db.escapeString(reason) .. ","..timeNow.."," .. player:getGuid() .. ")") NameLock
     
    Em talkactions.xml adicione
    <talkaction words="/namelock" separator=" " script="namelock.lua" /> <talkaction words="/unlock" separator=" " script="unlock.lua"/  Em namelock.lua adicione
    function onSay(player, words, param) if not player:getGroup():getAccess() then return true end local name = param local reason = '' local separatorPos = param:find(',') if separatorPos ~= nil then name = param:sub(0, separatorPos - 1) reason = string.trim(param:sub(separatorPos + 1)) end local PlayerGUID = getPlayerGUIDByName(name) if PlayerGUID == 0 then return false end local timeNow = os.time() db.query("INSERT INTO `player_namelocks`(`player_id`, `reason`, `namelocked_at`, `namelocked_by`) VALUES (".. PlayerGUID.."," .. db.escapeString(reason) .. ","..timeNow.."," .. player:getGuid() .. ")") local target = Player(name) if target ~= nil then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, target:getName() .. " has been Namelock.") target:remove() else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, name .. " has been Namelock.") end end  Em unlock.lua adicione
    function onSay(player, words, param) if not player:getGroup():getAccess() then return true end local resultId = db.storeQuery("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(param)) if resultId == false then return false end db.asyncQuery("DELETE FROM `player_namelocks` WHERE `player_id` = " .. result.getDataInt(resultId, "id")) result.free(resultId) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, param .. " has been unlock.") return false end .~> Como usar
     
    /namelock nome, motivo
    /unlock nome
     
    Ajudei? serviu para você? de um rep ae não arranca um pedaço e mostra que esta valendo a pena trazer conteúdo para cá
  13. Gostei
    Isso não é um tutorial mas pode ser entendido como.. são os passos que levaram ao funcionamento do sistema da forma que eu precisava. Funcional em TFS 1.2
     
    Bem semanas atrás eu estava procurando alguém que me ajudasse a bloquear recebimento de parcel por personagens sem vocação (por costumo o povo fala char de rook)
     
    Tentei em lua remover parcel mas só removia 1 e só se o player pegasse, tentei bloquear e nada.. até o Razor tentou com lua e chegou a conclusão que não dava para fazer por lua
     
    Depois de um bom tempo luanluciano93 veio com essa possibilidade (imagino que se era fácil qualquer um poderia ter me ajudado, para mostrar que nem todo mundo curte ajudar)
     
    Procura essa função no arquivo player.cpp.
     
    adicionando uma verificação aqui
    depotLocker->internalAddThing(Item::CreateItem(ITEM_MARKET)); Uma condição que verifique se o player tem vocação, tipo assim: 
     if (vocation->getId() != VOCATION_NONE) {         depotLocker->internalAddThing(Item::CreateItem(ITEM_MARKET));     } No meu caso eu queria bloquear tanto o market quanto inbox (onde recebe parcel, item, carta) e só fiz colocar o inbox dentro do if
     
    Parte referente ao meu player.cpp alterado



     
    Resultando nisso

     

     
    Depois disso informei nos forums que participo sobre ja ter resolvido metade do problema quando Razor comentou que tinha uma ideia para bloquear o envio.. tentamos o hack na source mas estava gerando erro e não compilava, logo depois o Ninja veio com uma ajuda que deu erro no começo mas resolvido finalmente.. 
     
    A alteração gera uma warning, mas não foi algo que atrapalhou.. o proposto que funcionou foi esse, lembrando que a alteração deve ser feita no mailbox.cpp cru e a adição no mailbox.h
     
    é um arquivo diff, não sei como funciona no windows, mas eu fiz a alteração de forma manual. link para o diff e o conteudo do diff abaixo
     
    mailbox.diff



     
    Meu mailbox.cpp alterado



     
    Meu mailbox.h com a adição



     
    Que resultou nisso
    Se o jogador não tem vocação, ele não conseguirá mandar parcel para player algum.. não importa se o player tem vocação
    Se o jogador tem vocação ele consegue mandar parcel para quem tem vocação, mas não manda para quem não tem vocação
     


     
    Bem você pode perguntar, mas se ja bloqueou o envio de parcel, por que bloquear o inbox? .. bem o inbox eu havia feito primeiro mas o bloqueio no envio de parcel previne que o jogador acabe perdendo o item..
     
    Digo caso ele envie o jogador só podera receber quando tiver vocação.. E SE o jogador nunca pegar vocação? foi pensando nisso que o segundo código foi feito, a ideia era que ao receber se fosse sem vocação o objeto retornaria e a label seria destruida.. mas estava gerando erros na build, foi quando Ninja veio com a ideia de bloquear o envio.. após 2as tentativas falhas a terceira gerou um warning simples e compilou.
  14. Gostei
    icemirow recebeu reputação de aleknnto em NPTO, Convoca os Melhores   
    Boa noite galera!
     
    Estamos procurando Spriter!
     
    Deixem seus contatos ou mandem MP!
     
    Abraç Ice
  15. Gostei
    icemirow deu reputação a aleknnto em NPTO, Convoca os Melhores   
    Seguinte Pessoal Venho lhes falar do NPTO,Novamente, Uma Atualizaçao do Antigo Post...  Os Sistemas do Servidor sao as Seguintes :
     
    * Clan System ( Contando com Level do Clan e os Shinys dos seus clans )
    * Bike System
    * Pokedex Estilo Pxg
    * Sprites do Novo PXG ( 2015, Contando com as Remakes,CP,Market, Todas as Sprites )
    * Novas Balls
    * System de DUEL
    * Arenas 
    * TV System e Boost ( Perfeitos )
    * Icon System
    * OUTLANDS
    * Novas Quests
    * Pokemons Ate 4 Geraçao COMPLETA
    * E Outros Sistemas Diversos para seu divertimento !
     
    Recruto Spriter e Scripter, Equipe ja Conta com HOSTER,WEBMASTER,MAPPER, Entrar pra equipe add skype : alekjsrk !
     

  16. Gostei
    icemirow deu reputação a Summ em Compilando OTserver em Linux Ubuntu 14.04   
    Com o avanço do TFS outras versões como 10.04, 12.04, 13.10... pararam de oferecer uma boa estabilidade para os otserv tfs 1.0 +, então várias pessoa estão migrando para o linux 14.04 e sentem algumas dificuldades com instalação de libs, compilamento e instalação de um banco de dados, então a pedido de um amigo meu fiz um breve tutorial, para alem de ajuda-lo ajudar outros com eventuais dúvidas.
     
    Então vamos ao que interessa :
     
     
     
    Downloads necessarios:
    SSH Secure Shell
    WinSCP
     
    Acessando Shell SSH veja os passos a seguir :
     




     
    Proxima vez que você for acessa sua maquina por Shell clique em Profile sem ter necessidade de clicar em Quick Connect:
     

     
     
     
    (Comandos para copiar e colar no shell [Copia: ctrl+insert] [Colar: shift+insert]).
     
    Para visualizar ou enviar sua source por ftp vamos usar o WinSCP acesse ele:
     
     





       
    Certo!
    Enviou a pasta do OTserver para a pasta home? renomeie ela com o f2 para o nome otserver. Feito? Vamos inciar:
    Sempre espere terminar por completo o processamento de instalação após executa o comando:
    Se aparecer algo (Y or N?) digita Y e da enter.
      apt-get update ...
    apt-get install git cmake build-essential liblua5.2-dev libgmp3-dev libmysqlclient-dev libboost-system-dev ...
     
    escreva o diretório de onde se encontra sua sources :  que no meu caso se encontra em "cd /home/otserv/"
     

    cd /home/otserv/ ...
    mkdir build && cd build ...
    cmake .. ...
    make Pronto só esperar terminar de compilar, quando terminar via ftp use ctrl+r (atualizar) que seu arquivo se encontra na pasta "build" nome o nome "tfs" e o mova para sua pasta "cd /home/otserv".
     
     
    Agr vamos instalar apache + mysql + phpmyadmin e deixar seu site online.
     
    Via SHELL digite :
    apt-get update ...
    apt-get install apache2 ...
    apt-get install php5 Aqui você irá escolher um senha pro seu apache...
    apt-get install mysql-server ...
    apt-get install libapache2-mod-auth-mysql Aqui você vai escolher uma senha pro seu phpmyadmin :
    apt-get install phpmyadmin ...
    echo "include /etc/phpmyadmin/apache.conf" | sudo tee -a /etc/apache2/apache2.conf ...
    /etc/init.d/apache2 restart Pronto verifique se está tudo correto, http://ip.da.maquina/phpmyadmin acesse seu phpmyadmin usando user: root e a senha é a que você botou na instalação do mysql, crie o seu banco de dados e upe a sua database.
     
    Via FTP, vá em var/www e exclua a pasta html e mova a seu website para lá, após isso configure o seu config.php e config.lua com os dados corretos e já será possível acessar seu site via http://ipdamaquina.
     
     
     
     
    Agora vamos deixar seu otserv online, via SHELL digite :
    cd /home/otserv/ ...
    chmod 777 -R tfs ...
    ./tfs "Para fecha-lo basta dar ctrl + C"
     
       
     
     
     
    Pronto seu serve está online!!
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    Créditos : Natanael Beckman
    Otland TEAM
    Summ
  17. Gostei
    icemirow deu reputação a Summ em Compilando Tfs 0.4 em Debian 6   
    am ? como assim os criadores não recomenda ? o tfs tem seu melhor desempenho em Debian, não vou citar quais são os pontos positivos porque 5 minutos de google basta pra ver isso.
     
    o melhor tutorial de debian que tem no fórum é esse http://www.tibiaking.com/forum/topic/44389-linux-montando-otserver-em-debian-perfeito/pode seguir os passos normalmente que ira funcionar na versão debian 6 também.
  18. Gostei
    icemirow deu reputação a leozynho123 em Compilando Tfs 0.4 em Debian 6   
    não recomendo, como os criadores também não recomendam a compilação em Debian, o melhor s.o para tfs 0.4 é o Ubuntu 10.04 pois é uma rev antiga já, a mais atual está aqui no meu tópico; http://www.tibiaking.com/forum/topic/48024-tfs-04-377721/  e o tutorial de compilação está aqui ; http://www.tibiaking.com/forum/topic/32118-compilar-otserver-em-linux-ubuntu-1004/
  19. Gostei
    icemirow deu reputação a Fir3element em Compilando Tfs 0.4 em Debian 6   
    sai dessa de q n recomendam, o talaturen usava debian até no desktop lol, e continua recomendando ate hj pro tfs 1.0
    o método de compilação é o mesmo, no máximo deve mudar algo pra configurar website...
  20. Gostei
    icemirow deu reputação a ServerCore em (Resolvido)TFS 1.1   
    https://github.com/otland/forgottenserver/wiki/Compiling-on-Ubuntu
  21. Gostei
    icemirow deu reputação a Summ em (Resolvido)TFS 1.1   
    Funciona no ubuntu 14.04 e se não me falha a memória já rodei no debian 7.5
  22. Gostei
    icemirow deu reputação a luanluciano93 em [TFS 1.x] Blessing Protect para lowlevel   
    Olá pessoal, esse script é simples, ele deixa o player que for menor ou igual a X com as 5 bless automáticas (se ele morrer ele recebe novamente, se estiver no level menor que o X). Basta configurar o level X.

    Em creaturescript/scripts/ cria um arquivo com o nome bless_protect.lua e coloque o seguinte código dentro: 
    local blessLevel = 30 function onLogin(player) if player:getLevel() <= blessLevel then for i = 1, 5 do player:addBlessing(i) end player:getPosition():sendMagicEffect(CONST_ME_HOLYDAMAGE) end return true end Script TFS 0.4
     
     
    Agora em creaturescript/script/ no arquivo login.lua add o evento: 
    registerCreatureEvent(cid, "BlessProtect") E por fim coloque a tag em creaturescripts/creaturescripts.xml: 
    <event type="login" name="BlessProtect" script="bless_protect.lua"/> E é isso pessoal, agora basta editar o level no primeiro código aqui : local blessLevel = 30
      Qualquer dúvida poste aqui. Abraços!
  23. Gostei
    icemirow deu reputação a luanluciano93 em [TFS 1.x] TK Vip System   
    Olá pessoal, estou desenvolvendo esse sistema vip para TFS 1.x, se precisarem de alguma função nova é só comentar, criei para usar em um servidor meu e resolvi postar, bom proveito a todos.
     
    É só ir no arquivo data/lib/core/player.lua e adicionar esse código no começo do script:
    -- ALTER TABLE `accounts` ADD `vip_time` BIGINT(20) NOT NULL DEFAULT 0; -- player:getVipTime() function Player.getVipTime(self) local resultId = db.storeQuery("SELECT `vip_time` FROM `accounts` WHERE `id` = '".. self:getAccountId() .."';") local time = resultId ~= false and result.getNumber(resultId, "vip_time") or 0 result.free(resultId) return time end -- player:isVip() function Player.isVip(self) return self:getVipTime() > os.time() and true or false end -- player:addVipDays(days) function Player.addVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVipDays(days) function Player.removeVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:setVipDays(days) function Player.setVipDays(self, days) return db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVip() function Player.removeVip(self) db.query("UPDATE `accounts` SET `vip_time` = '0' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:sendVipDaysMessage() function Player.sendVipDaysMessage(self) if self:isVip() then local vipTime = self:getVipTime() - os.time() local vipDays = 1 + (math.floor(vipTime / 86400)) return self:getVipTime() ~= false and self:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'You have '.. vipDays .. ' vip day(s) in your account.') end end -- player:checkVipLogin() function Player.checkVipLogin(self) if self:getVipTime() > 0 and not self:isVip() then return self:removeVip() and self:teleportTo(self:getTown():getTemplePosition()) end end  
     
    As funções são:
    • player:getVipTime() - Retorna o valor da tabela vip_time (igual esta na database).
    • player:isVip() - Retorna se o player é vip ou não.
    • player:addVipDays(days) - Usa-se em algum script para para adicionar dias de vip ao player (parâmetro de entrada "days").
    • player:removeVipDays(days) - Usa-se em algum script para para remover dias de vip do player (parâmetro de entrada "days").
    • player:setVipDays(days) - Usa-se em algum script para para mudar os dias de vip do player (parâmetro de entrada "days").
    • player:removeVip() - Usa-se em algum script para para remover todo tempo de vip do player.
    • player:sendVipDaysMessage() - Retorna uma mensagem no player mostrando os dias de vip que ainda restam ao player.
    • player:checkVipLogin() - Checa se a vip do player acabou, se sim teleporta ele para o templo.
     

    Qualquer dúvida ou erro/bug poste aqui.
  24. Gostei
    icemirow deu reputação a Liane em Gesior 1.0 Moderado Por Min -V1   
    Irei Posta a Versão 2 Desse Gersior, Vai Vim Já Sem Os Bugs Que VoÇês Citaram Ai
     
     
     
     
    Mas afinal, o que esse Gesior tem de diferente?
    É completamente seguro e estável. Página "createaccount" Sem Bug. Possui um Helpdesk avançado. Possui diversas páginas explicativas. Página de donate personalizada e funcional. Shopping completamente Moderado Layout impecável e completamente perfeito. Entre outras diversas características.                                  Algumas Prints
    Latest News

     
     
     
    Shop System Moderado Por Min

     
    Pagina De Compra Points Moderado Por Min
     

    Essa versão do Gesior só funciona na versão 1.0 do TFS!
     
    OBS: Se For Postar Em Outros Forum Coloca Meus Credito Por Favor!!!
     
    Créditos:
    Base Por Victor Fasano Raful Modificado e Configurado Por Min Liane. Download:
    http://www.speedyshare.com/hS82t/htdocs.rar
     
     
    Obs: A Database Podem Usa A Do Victor Fasano Raful v2
     
    Scan --> https://www.virustot...sis/1420379894/
     
     
    Se Curtiu o Meu Gesior Clica Em Gostei e da o Rep++
  25. Gostei
    icemirow deu reputação a MaXwEllDeN em Boas práticas para Programar   
    Obrigado, é realmente a minha intenção ao criar esse tópico foi inspirar a galera para criar os códigos com uma beleza não só na execução mas também no código em sí para ser lído, o que eu mais ví em outros forums foram scripts sem indentação nenhuma, muita gambiarra mesmo, dá até desânimo para ler esses códigos, muito chato ter que ler as gambiarras...

Informação Importante

Confirmação de Termo