Ir para conteúdo

Yan Oliveira

Moderador
  • Total de itens

    2187
  • Registro em

  • Última visita

  • Dias Ganhos

    57

Histórico de Reputação

  1. Upvote
    Yan Oliveira deu reputação a Slicer em [Encerrado] Bike system nao funciona.   
    @yan
    na real quer dizer q ele TEM 1000 cassino coins.. '--'
     
    @topic
    sei la pq.. mas a tua bike ta com o ms id da cassino coins.. tem como manda uma ss dos slots ae to teu serv? e do item da bike?
  2. Downvote
    Yan Oliveira deu reputação a manelkscouto em Meu server veio sem exura sio, alguem posta pra mim   
    O Cristiano Ronaldo Já Postou
  3. Upvote
    Yan Oliveira deu reputação a Vodkart em Script Simples REP++   
    function onDeath(cid, corpse, deathList) local config = { onlypremium = true, -- se precisa ser premium para não perder nada exp = true, -- se ao morrer o jogador irá perder exp skills = false, -- se ao morrer vai perder skills magic = false, -- se vai perder magic level loot = false, -- se ao morrer o jogador irá perder o loot level = 50 -- até que level irá proteger o player } if isPlayer(cid) and getPlayerLevel(cid) <= config.level then if getPlayerSkullType(cid) >= 4 then return TRUE end if config.onlypremium == true and not isPremium(cid) then return TRUE end if config.loot == false then doCreatureSetDropLoot(cid, false) end if config.magic == false then doPlayerSetLossPercent(cid, PLAYERLOSS_MANA, 0) end if config.skills == false then doPlayerSetLossPercent(cid, PLAYERLOSS_SKILLS, 0) end if config.exp == false then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 0) end return TRUE end return TRUE end
  4. Upvote
    Yan Oliveira deu reputação a caotic em Banimento System Beta   
    Ola pessoal do ekstibiana.
    Versões para cima de 9.x foi retirado o sistema de banimento que e muito necessario em ots.
    Então resolvi desenvolver uma versão "beta" para vocês
    O sistema ta bem limitadinho mais e funcional.
     
    Para banir uma pessoa diga /ban(nome da pessoa,dias,comentario) depois a personagem sera banida e seu ip sera banido.
    Para ver a lista de banidos fale /banidos
     
    Limitações do sistema
     
     
     
    Vamos a instalar o sistema.
    GO!
    Execute o seguinte comando na sua database:
     

    CREATE TABLE "ban" ( "player" INT NOT NULL, "ip" INT NOT NULL, "time" INT NOT NULL );
     
    Agora vá em lib e crie um arquivo lua chamado de ban e coloque isto:

    function doPlayerBan(cid, time, coment) exhaustion.set(cid, 24546, time*3600*24*1000) db.executeQuery("INSERT INTO `ban` VALUES (".. getPlayerGUID(cid) ..", ".. getPlayerIp(cid) ..", ".. time ..")") setPlayerStorageValue(cid, 42622, tostring(coment)) doBroadcastMessage(""..getPlayerName(cid).." foi banido em "..time.." dia(s) por "..coment.."") end function getPlayerBan(cid) return exhaustion.check(cid, 24546) end function getPlayerIPbyBan(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `player` = ".. getPlayerGUID(cid) ..";") return ban:getDataInt("ip") end function getBanTimeByIp(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `ip` = ".. getPlayerIp(cid) ..";") return ban:getDataInt("time") end function getPlayerBanDb(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `player` = ".. getPlayerGUID(cid) ..";") if ban:getID() == -1 then return true end return false end function getPlayerBanIpDb(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `ip` = ".. getPlayerIp(cid) ..";") if ban:getID() == -1 then return true end return false end function getPlayerTimeBan(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `player` = ".. getPlayerGUID(cid) ..";") return ban:getDataInt("time") end function getPlayerIpBan(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `player` ORDER BY `time`") if ban:getID() == -1 then return false end while true do local ips = ban:getDataInt("ip") if getPlayerIp(cid) == ips then return true end if not ban:next() then return false end end end function doShowTextBans(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `player` ORDER BY `time`") str = "Players Banidos:\n\n" if ban:getID() == -1 then doShowTextDialog(cid, 1387, "Não existe nenhum player Banido") return true end while true do local name = ban:getDataInt("player") local time = ban:getDataInt("time") local player = getPlayerNameByGUID(name) str = str .. player .. " - Banido por "..time.." dia(s) \n\n" if not ban:next() then doShowTextDialog(cid, 1397, str) break end end end function doShowTextBansForGroupUp(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `player` ORDER BY `time`") str = "Players Banidos:\n\n" if ban:getID() == -1 then doShowTextDialog(cid, 1387, "Não existe nenhum player Banido") return true end while true do local name = ban:getDataInt("player") local time = ban:getDataInt("time") local ip = ban:getDataInt("ip") local player = getPlayerNameByGUID(name) local ip = doConvertIntegerToIp(ip) str = str .. player .. " - Banido por "..time.." dia(s) Ip "..ip.." \n\n" if not ban:next() then doShowTextDialog(cid, 1397, str) break end end end
     
    Agora vá em talkactions e crie um arquivo lua chamado de ban e coloque este codigo:
     

    function onSay(cid, words, param, channel) local t = string.explode(param, ",") if param == " " or param == "" or not param or isNumeric(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o nome do player dizendo /ban(nome do player,dias de ban,por que ele foi banido)") end if t[2] == " " or t[2] == "" or not t[2] then return doPlayerSendCancel(cid, "Coloque os dias de ban para o player dizendo /ban(nome do player,dias de ban,por que ele foi banido)") end if t[3] == " " or t[3] == "" or not t[3] then return doPlayerSendCancel(cid, "Coloque os comentarios do player dizendo /ban(nome do player,dias de ban,por que ele foi banido)") end local player = getPlayerByNameWildcard(t[1], false) if not player then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player "..t[1].." não existe") end doPlayerBan(player, t[2], t[3]) doRemoveCreature(player) return true end
     
    Continue em talkactions e crie outra arquivo lua chamado de banidos:
     

    function onSay(cid, words, param, channel) if getPlayerGroupId(cid) >= 3 then return doShowTextBansForGroupUp(cid) end doShowTextBans(cid) return true end
     
    Coloque as seguintes tags em talkactions.xml:
     
     
     
     
    Agora vá em creaturescripts e crie um arquivo lua chamado de ban e coloque isto:
     

    function onLogin(cid) if getPlayerBan(cid) then doPlayerPopupFYI(cid, "Você esta banido") return addEvent(doRemoveCreature, 180, cid) end if getPlayerIpBan(cid) then doPlayerPopupFYI(cid, "Foi dectado um ip banido character banido") return addEvent(doRemoveCreature, 180, cid) end return true end
     
    Registre o evento em login.lua colocando isto antes do ultimo RETURN:
     

    registerCreatureEvent(cid, "ban")
     
    Terminado coloque esta tag em creaturescripts.xml:
     
     
     
  5. Upvote
    Yan Oliveira deu reputação a Oneshot em Comando Adicionar Quant. Item Ao Player   
    @Slicer
     
    Não, não tem nada a ver com o que você disse. A função que eu usei é justamente o que o script estava precisando, se você usar a função desse jeito:
     

    doPlayerSendMailByName(cid, 2160, 1)
     
    Isso não vai funcionar, pois a função não use IDs de itens como parâmetros, mas sim UIDs. Pois seus parâmetros nas sources são esses.
     

    doPlayerSendMailByName(cid, item[, town])
     
    Ou seja o certo é criar um UID com a função doCreateItemEx e então usar ele no doPlayerSendMailByName.
     
    No mais, deixo claro que testei o script no The Forgotten Server 0.4.0 rev4394 e ele funcionou perfeitamente.
     
    Abraços.
  6. Upvote
    Yan Oliveira deu reputação a Lordfire em hum ... satisfações?   
    São pontos de vista diferentes. O vital900 nada poderia fazer sem o aval do Anyur na coordenação, e o Anyur sempre aprovou ou não e dava seus argumentos para o vital. Acontece que o vital queria fazer MUITA coisa ao mesmo tempo, coisa que nem a seção nem a equipe da seção poderia fazer assim ao mesmo tempo. Ao ser recusado pelo Anyur várias vezes, sabendo disso, ele rebelou e aí foi removido. Mas muito do que ele sugeriu e fez até hoje é usado sim, não desmerecemos nenhum trabalho dele.
    O Anyur não queria trabalhar com você e, por isso, demos a oportunidade pra ele de preferir se comunicar com o Won ou comigo, E NÃO que você não seria diretor dele. Se nós decidíssemos que ele teria de fazer algo, mudar algo pra melhor e você sim participasse dessa decisão, isso não importa. O mesmo com o vital, só que um colaborador não pode sair fazendo as coisas sem consultar o coordenador, que sempre é escolhido tendo em vista sua capacidade de decidir isso.
    Não vejo essa zona nas seções que você tanto fala, até porque coordenadores tratam suas seções de formas diferentes, um pode preferir apagar todos os tópicos depois de X dias pra manter a atualização, enquanto outros preferem não fazer isso para que os membros possam procurar coisas antigas antes de perguntar.
    Não quis ter de te remover, como dito, e acho sim que podemos recomeçar de outro jeito. Só vejo vocês mantendo esse rancor como um empecilho sem motivo algum, sem necessidade. Não vou dar prioridade a membro X porque todos gostam dele, não sou populista, não sou o administrador mais do povo que já passou por aqui, isso não faz sentido.
  7. Upvote
    Yan Oliveira deu reputação a dwhfms em hum ... satisfações?   
    Faço das minhas palavras as do Lordfire.
     
    @Vodkart
    Só pra constar e o Yan sabe disso ele está com PIP de Colaboração mas com Poderes de moderação, falei pra ele que ia ficar assim pra não impactar com a entrada dele e não haver criticas desnecessárias depois. Não sei porque você não falou isso Yan...
  8. Upvote
    Yan Oliveira deu reputação a Vodkart em hum ... satisfações?   
    vdd
     
    sempre vejo o Yan18 reportando os tópicos em TODAS as seções, merece vaga de MODERA
     
    tem que ter alguém pra salvar a equipe
  9. Downvote
    Yan Oliveira deu reputação a AnneMotta em [Detalhes] Escadas #Basico#   
    naboa vei, você é muito escroto stigal, quer ganhar rep em cima de uma merda que já existe naboa.
  10. Upvote
    Yan Oliveira deu reputação a Stigal em [Tutorial] Mudando a Versão Do Mapa   
    Olá Ekstibianos,
    Venho "mostrar" para vocês como se muda a verção do mapa... pois vejo que é freequente as duvidas sobre esse assunto.
    Juntamente iria fazer um video, maaasss fico uma merda e não deu :x
     
    Vamos lá!

    Menu:
    » Download;
    » Tutorial;
    » Possiveis Erros.

    Download Remere's Map Editor, clicando aqui você entra no site official onde se encontra o download da versão atual ou pretendida para uso.

    Abra o RME e vá em Map » Properties... Ctrl-P <#imagem abaixo#>


    Na parte Client Version <#imagem abaixo#> você coloca para qual versão você deseja mudar seu mapa


    Clique em Ok

    Irá aparecer uma mensagem <#imagem abaixo#>, basta clica em Sim


     
     

    Aviso: Pode dar este erro "as vezes"
    "Could not locate Tibia.dat and/or Tibia.spr, please navigate to your Tibia 8.50 installation folder."


    Esse erro ocorre pois o RME não encoutrou o Tibia.dat e/ou Tibia.spr da respectiva versão do mapa, para arrumar, basta clicar em Ok e selecionar o diretório onde está instalado da versão.

     
    Espero ter ajudado os "pendentes" e irei continuar postando tutoriais nessa minha area.
    Um abraço a todos.
     
    Atenciosamente, Stigal.
     

  11. Upvote
    Yan Oliveira recebeu reputação de douglahz6996 em [Tutorial] Criando Novos Pokemons Para Pda [Iniciantes]   
    Bom vejo que muitos membros novos estão com duvidas de como criar novos pokemon no PDA... bom vim ensinar como.
     
    1º Vai em Data/monsters e Crie o novo pokemon.xml e depois adicione ele no monsters.xml
     
    2º Vai em Lib/Configuration e faça isso:
     
    Em movestable onde ficam os ataques dele so colocar os ataques vou dar exemplo dos ataques:
     

    ["NOME DO POKEMON NOVO"] = {move1 = {name = "Dragon Claw", level = 85, cd = 15, dist = 1, target = 1, f = 60, t = "dragon"}, move2 = {name = "Ember", level = 85, cd = 10, dist = 10, target = 1, f = 42, t = "fire"}, move3 = {name = "Flamethrower", level = 85, cd = 20, dist = 1, target = 0, f = 80, t = "fire"}, move4 = {name = "Fireball", level = 85, cd = 25, dist = 10, target = 1, f = 75, t = "fire"}, move5 = {name = "Fire Fang", level = 85, cd = 20, dist = 1, target = 1, f = 65, t = "fire"}, move6 = {name = "Raging Blast", level = 85, cd = 35, dist = 1, target = 0, f = 100, t = "fire"}, move7 = {name = "Fire Blast", level = 85, cd = 60, dist = 1, target = 0, f = 115, t = "fire"}, move8 = {name = "Wing Attack", level = 90, cd = 35, dist = 1, target = 0, f = 75, t = "flying"}, move9 = {name = "Magma Storm", level = 95, cd = 90, dist = 1, target = 0, f = 95, t = "fire"}, move10 = {name = "Scary Face", level = 90, cd = 50, dist = 1, target = 0, f = 0, t = "ghost"}, move11 = {name = "Rage", level = 85, cd = 40, dist = 1, target = 0, f = 0, t = "dragon"},
     
    Ae se coloca os ataques que desejar, lembrando que f é força pra quem não sabe.
     
    e em Status Pokemon Kanto ou Johto mesmo pode add coloque isso:
     

    ["NOME DO NOVO POKEMON"] = {offense = 8.5, defense = 7.8, specialattack = 11, vitality = 7.8, agility = 167, exp = 209, level = 85, type = "TIPO DELE", type2 = "2 TIPO DELE"},
     
    Ae vc balanceia ele de acordo a seu gosto.
     
    Depois em Fotos add ele:
     

    ["NOME DO NOVO POKEMON"]= XXXX,
     
    Em XXXX você coloca o id do portrait dele.
     
    Depois em Pokescatch add ele:
     

    ["NOME DO NOVO POKEMON"] = {chance = XXXX, corpse = YYYY},
     
    Em XXXX a chance de capturar ele e em YYYY o Id do Corpse dele.
     
    Depois em Newpokedex add isso ele:
     

    ["NOME DO NOVO POKEMON"] = {gender = 875, level = XXXX, storage = 100, stoCatch = 666006},
     
    Em XXXX coloca o level dele.
     
    Em OldPokedex add ele:
     

    {"NOME DO NOVO POKEMON", XXXX, 1006},
    Em XXXX o level dele.
     
    E se for add alguma habilidade nele fica la no final, vou dar um exemplo de ele atravessando (GhostWalk) parede vc coloca isso:
     

    ["ghostwalk"] = {"Gastly", "Haunter", "Gengar", "Shiny Abra", "Shiny Gengar", "Misdreavus", "NOME DO NOVO POKEMON"},
     
    Bom é isso... sei que é simples, mais fiz um tutorial basico para os iniciantes não ficarem com duvida.
  12. Upvote
    Yan Oliveira recebeu reputação de GuhPk em [Encerrado] Como arrumar Corpse   
    Ta mais você ja foi em File > Preferences > Client Version e add o seu client editado novamente? Se ja fez isso vai no Remeres depois em Raw Palette e depois em Others e la em baixo estara os Corpses do Pokemonm, isto é correto eu acabei de verificar, pra vc ver o ID do corpse do Eevee 11869 no xml, e m others vai tar a mesma coisa.
  13. Upvote
    Yan Oliveira deu reputação a Roksas em Classic Premium   
    Bom galera, sempre vejo os Scripters criando sistemas de Vip, com Tile Vip, Itens Vip, e tudo que tiver direito. Na minha opinião;o isso se adapta mais em servidores High Exp x999. Hoje irei postar o meu Sistema de Premium para servidores Low Rate. Usei como exemplo o Double EXP do Vodkart! Vejamos:
     
    Primeiramente, vamos na pasta data/actions/scripts, crie um arquivo chamado PremiumScroll.lua e adicione isso dentro:
     

    function onUse (cid,item) if getPlayerPremiumDays (cid) > 14 then doPlayerSendTextMessage (cid, MESSAGE_INFO_DESCR, "Você precisa ter 15 ou menos dias restantes de Premium Account, para utilizar esse serviço novamente!") doSendMagicEffect (getCreaturePosition (cid), 2) end if doRemoveItem(item.uid, 0) then doPlayerAddPremiumDays(cid, 30) doSendMagicEffect(getCreaturePosition(cid), 14) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você acaba de ganhar 30 dias de Premium Account, terá áreas exclusivas e 35% a mais de EXP como benefício!") end return true end
     
    Agora vá na pasta data/creaturescripts/scripts/login.lua .No meio do script terão alguns Events como esses exemplo:
     

    registerCreatureEvent(cid, "kill") registerCreatureEvent(cid, "onPrepareDeath") registerCreatureEvent(cid, "PlayerLogout") registerCreatureEvent(cid, "onPrepareDeath") registerCreatureEvent(cid, "deathBroadcast") registerCreatureEvent(cid, "DeathBroadcast") registerCreatureEvent(cid, "Idle")
     
    Agora ao meio desses, adicione esse Event:
     

    registerCreatureEvent(cid, "PremiumRate")
     
    Vá na pasta data novemente, abra a pasta items e em seguida o arquivo items.xml. Aperte CTRL + F e digite 9004. Assim você irá encontrar um item dourado, oque usaremos como "Premium Scroll". Apague-o e adicione essa tag:
     

    <item id="9004" article="a" name="Premium Scroll"> <attribute key="description" value="Esse Scroll lhe dá 30 dias de Premium!" /> <attribute key="weight" value="23.00" /> </item>
     
    Caso não exista e seu servidor for versão 8.60 adicione do mesmo jeito.
     
    Ok, ainda na pasta data/creaturescripts, na pasta scripts adicione um arquivo chamado PremiumRate.lua e adicione isso dentro:
     

    function onLogin(cid) local rate = 1.35 local days = getPlayerPremiumDays(cid) local config = { yes_premium = "Você tem "..((rate - 1)*100).."% de EXP em vantagem, Ainda lhe restam "..days.." dias de Premium!", not_premium = "Tornesse Premium e tenha "..((rate - 1)*100).."% a mais de EXP!", premium = isPremium(cid) } if (config.premium == TRUE) then doPlayerSetExperienceRate(cid, rate) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.yes_premium) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.not_premium) end return TRUE end
     
    Muito bem agora vamos adicionar as Tags!
    No arquivo actions.xml na pasta data/actions adicione essa tag:
     

    <action itemid="9004" event="script" value="PremiumScroll.lua"/>
     
    E no arquivo creaturescripts.xml:
     

    <event type="login" name="PremiumRate" script="premiumrate.lua"/>
     

    • Explicação do Sistema: Bom, no primeiro Script, ao usar o Item ID 9004 (Premium Scroll), os players recebem 30 dias de Premium, mas se já tiver mais de 15 dias não podera usar, apenas 15 ou menos dias! No segundo script eu mostrei a vocês o Sistema "Double EXP" do Vodkart, editei ele para que jogadores Premium Account pudessem ter as rates. Lá você pode encontrar esse trecho:
     

    local rate = 1.35
     
    Aonde se situa o número "35" você muda para a porcentagem desejada. Como por exemplo 50 = 50%, 40 = 40%. E assim sucessivamente!
     
    • Algumas Screen Shoots do meu Sistema:
     

     


     

     
     
    Galera, muito obrigado. Espero que gostem, qualquer dúvida irei responder! Reportem erros, etc.
     
    @EDIT
     
    Se alguém tiver algum sugestão de incrementar o meu Sistema, só falar, ai eu ponho. Bye )
  14. Upvote
    Yan Oliveira deu reputação a Slicer em Obter items ao redor do player   
    eu gosto muito dessa function..
     
     
     
    com ela vc pode usar uma area de spell pra verificaçao.. tpw...

    cruz = { {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {1, 1, 2, 1, 1}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0} } function hasItems(cid) local posis = getPosfromArea(cid, cruz) local itens = {1111, 2222, 3333} for a, b in ipairs(posis) do for c, d in ipairs(itens) do local item = getTileItemById(b, d) if item.uid > 0 then return true end end end return false end
  15. Downvote
    Yan Oliveira deu reputação a guinho1855 em Script De Title   
    .!service , E nao bc
  16. Downvote
    Yan Oliveira deu reputação a lucasalisson em Criando Área Vip   
    Antigo isso, acho que ngm mais usa isso =O
  17. Upvote
    Yan Oliveira deu reputação a HidekiKty em Criei um script aqui mais fica dando esse error   
    tonynamoral
    Alguns erros ortográficos e de configurações, use esse script:

    local configs = { storage_start = 87812, storage_monster = 81251, storage_finish = 90125, quant = 100, quant2 = 99, msg = 'You are kiling "..getPlayerStorageValue(cid, configs.storage_monster).." of "..configs.quant.."' } local monster = "Dragon" local monster2 = "Dragon Lord" local monster3 = "Dragon Lord Hatchling" local function onTeleportar(cid) doTeleportThing(cid, pos) end local function onContar(cid) addEvent(doSendAnimatedText,5*1000,getThingPos(cid),1,28) addEvent(doSendAnimatedText,4*1000,getThingPos(cid),2,28) addEvent(doSendAnimatedText,3*1000,getThingPos(cid),3,28) addEvent(doSendAnimatedText,2*1000,getThingPos(cid),4,28) addEvent(doSendAnimatedText,1*1000,getThingPos(cid),5,28) end function onKill(cid, target, lastHit) if(getPlayerStorageValue(cid,configs.storage_monster) == configs.quant) then onContar(cid) addEvent(function() onTeleportar(cid) end,6*1000) end if getPlayerStorageValue(cid, configs.storage_start) >= 1 then if getCreatureName(target) == monster or getCreatureName(target) == monster2 or getCreatureName(target) == monster3 then setPlayerStorageValue(cid, configs.storage_monster, getPlayerStorageValue(cid, configs.storage_monster)+1) doPlayerSendTextMessage(cid, 27,configs.msg) return true end end end
     
    iunix
    Seu script correto seria:

    local configs = { storage_start = 87812, storage_monster = 81251, storage_finish = 90125, quant = 100, quant2 = 99, monsters = {"Dragon", "Dragon Lord", "Dragon Lord Hatchling"}, pos = {x=1111,y=1111,z=1} } function onKill(cid, target, lastHit) if(getPlayerStorageValue(cid,configs.storage_monster) == configs.quant) then for i = 1, 5 do addEvent(doSendAnimatedText,i *1000,getThingPos(cid),i,28) end addEvent(doTeleportThing, 6*1000, cid, config.pos) elseif getPlayerStorageValue(cid,configs.storage_Start) >= 1 then if isInArray(config.monsters, getCreatureName(target)) then setPlayerStorageValue(cid,configs.storage_monster,getPlayerStorageValue(cid,configs.storage_monster)+1) doPlayerSendTextMessage(cid,27,"You killed "..getPlayerStorageValue(cid,storage_monster).." of "..configs.quant..".") return true end end return true end
  18. Upvote
    Yan Oliveira recebeu reputação de Piabeta Kun em [Tutorial] Client Proprio   
    Não acredito que deixaram passar isso, tutorial está na área errada.
     
    Tutorial Movido para Clientes de OTserv
  19. Upvote
    Yan Oliveira recebeu reputação de GuiihMarquezi em [Encerrado] Como Aumentar O Catch Das Balls   
    Slicer ta certo, em Configuration procura por pokescatch e nessa parte:
     

    ["Bulbasaur"] = {chance = XXXX, corpse = 5969},
     
    Em XXXX Você edita a chance de pegar o pokemon. Galera quando for ajudar explique direito por favor.
  20. Upvote
    Yan Oliveira deu reputação a Oneshot em Oneshot's Anti-bot   
    Nome: Oneshot's Anti-bot
    Autor: Oneshot
    Tipo: Sistema



    Descrição

    Este é um sistema de anti-bot simples, que envia um código numérico de 6 dígitos para cada jogador online e pede para que, através de um comando, este código de verificação seja ativado. O jogador tem um limite de tempo para fazer isso, e caso não faça, este é banido por um tempo configurável ou então, preso em um certo lugar do mapa.


    Instalação

    1. Em data/lib, crie um arquivo chamado antibot.lua e cole o conteúdo abaixo:

    ANTIBOT_STORAGE_1 = 109001 ANTIBOT_STORAGE_2 = 109002 ANTIBOT_STORAGE_3 = 109003 ANTIBOT_TYPE = 2 -- [1] = Banimento, [2] = Prisão ANTIBOT_DURATION = 120 -- Em segundos ANTIBOT_DURATION_DELAY = 10 -- Em segundos ANTIBOT_MESSAGE = "[Oneshot's Anti-bot]\nSeu código de verificação é %s, responda através do comando !antibot, caso contrário, será ".. (ANTIBOT_TYPE == 1 and "banido" or "preso") ..".\nVocê têm %s segundos." ANTIBOT_BAN_TIME = 24 * 60 * 60 ANTIBOT_PRISON = {x = 1019, y = 867, z = 7} ANTIBOT_PRISON_FROMPOSITION = {x = 1018, y = 865, z = 7} ANTIBOT_PRISON_TOPOSITION = {x = 1020, y = 869, z = 7} ANTIBOT_PRISON_DURATION = 3 * 60 * 60 ANTIBOT_TEMPLE = {x = 1027, y = 912, z = 5} function AntiBot(cid) if not isCreature(cid) then return end local time = getCreatureStorage(cid, ANTIBOT_STORAGE_1) local answer = getCreatureStorage(cid, ANTIBOT_STORAGE_2) if getPlayerAccess(cid) >= 3 or not(getPlayerAccountManager(cid) == MANAGER_NONE) then return end if isInRange(getThingPosition(cid), ANTIBOT_PRISON_FROMPOSITION, ANTIBOT_PRISON_TOPOSITION) then return end if time == -1 and answer == -1 then return end if os.time() >= time then doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, -1) doCreatureSetStorage(cid, ANTIBOT_STORAGE_2, -1) doBroadcastMessage("[ANTI-BOT] O jogador ".. getCreatureName(cid) .." foi ".. (ANTIBOT_TYPE == 1 and "banido" or "preso") .." por uso de bot.") if ANTIBOT_TYPE == 1 then doAddAccountBanishment(getPlayerGUID(cid), 0, (os.time() + ANTIBOT_BAN_TIME), 12, 3, "[ANTI-BOT]") doRemoveCreature(cid) else doTeleportThing(cid, ANTIBOT_PRISON) doCreatureSetStorage(cid, ANTIBOT_STORAGE_3, os.time() + ANTIBOT_PRISON_DURATION) addEvent(function() if isCreature(cid) then doTeleportThing(cid, ANTIBOT_TEMPLE) end end, ANTIBOT_PRISON_DURATION * 1000) end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, ANTIBOT_MESSAGE:format(answer, (time - os.time()))) addEvent(AntiBot, ANTIBOT_DURATION_DELAY * 1000, cid) end end 2. Crie um arquivo chamado antibot.lua em data/globalevents/scripts, cole o conteúdo abaixo

    function onThink(interval) for _, cid in ipairs(getPlayersOnline()) do local answer = math.random(100000, 999999) doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, os.time() + ANTIBOT_DURATION) doCreatureSetStorage(cid, ANTIBOT_STORAGE_2, answer) AntiBot(cid) end return true end Adicione a seguinte linha em globalevents.xml

    <globalevent name="antibot" interval="900" event="script" value="antibot.lua"/> 3. Crie um arquivo em data/creaturescripts/scripts, cole o conteúdo abaixo

    function onLogin(cid) local time = getCreatureStorage(cid, ANTIBOT_STORAGE_1) local answer = getCreatureStorage(cid, ANTIBOT_STORAGE_2) if answer == -1 then return true end if isInRange(getThingPosition(cid), ANTIBOT_PRISON_FROMPOSITION, ANTIBOT_PRISON_TOPOSITION) then if os.time() > getCreatureStorage(cid, ANTIBOT_STORAGE_3) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Seu tempo de prisão acabou.") doTeleportThing(cid, ANTIBOT_TEMPLE) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ainda está preso por uso de bot.") end return true end if os.time() > ANTIBOT_STORAGE_1 then doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, os.time() + ANTIBOT_DURATION) return true end AntiBot(cid) return true end Adicione a seguinte linha em seu creaturescripts.xml

    <event type="login" name="Antibot" event="script" value="antibot.lua"/> 4. Crie um arquivo chamado antibot.lua em data/talkactions/scripts, cole o conteúdo abaixo

    function onSay(cid, words, param, channel) param = tonumber(param) or "" local time = getCreatureStorage(cid, ANTIBOT_STORAGE_1) local answer = getCreatureStorage(cid, ANTIBOT_STORAGE_2) if time == -1 and answer == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O anti-bot não está ativado.") return true end if param == "" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite uma senha de verificação válida.") return true end if param ~= answer then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você digitou a senha incorreta. Digite corretamente, caso contrário, será banido.") return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Ótimo! Você digitou a resposta correta. O anti-bot foi desativado.") doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, -1) doCreatureSetStorage(cid, ANTIBOT_STORAGE_2, -1) return true end Adicione a seguinte linha em seu talkactions.xml

    <talkaction words="!antibot" event="script" value="antibot.lua"/> Você pode fazer várias configurações na lib do sistema

    ANTIBOT_STORAGE_1 = 109001 ANTIBOT_STORAGE_2 = 109002 ANTIBOT_STORAGE_3 = 109003 ANTIBOT_TYPE = 2 -- [1] = Banimento, [2] = Prisão ANTIBOT_DURATION = 120 -- Em segundos ANTIBOT_DURATION_DELAY = 10 -- Em segundos ANTIBOT_MESSAGE = "[Oneshot's Anti-bot]\nSeu código de verificação é %s, responda através do comando !antibot, caso contrário, será ".. (ANTIBOT_TYPE == 1 and "banido" or "preso") ..".\nVocê têm %s segundos." ANTIBOT_BAN_TIME = 24 * 60 * 60 ANTIBOT_PRISON = {x = 1019, y = 867, z = 7} ANTIBOT_PRISON_FROMPOSITION = {x = 1018, y = 865, z = 7} ANTIBOT_PRISON_TOPOSITION = {x = 1020, y = 869, z = 7} ANTIBOT_PRISON_DURATION = 3 * 60 * 60 ANTIBOT_TEMPLE = {x = 1027, y = 912, z = 5} Como a duração do ban, a posição da prisão, o tempo de prisão, dentre outras coisas.

    Como não consegui fazer funcionar o banimento de um jogador só na versão 0.3.6pl1, sendo isto possível apenas na 0.4.0, resolvi colocar para o tipo de banimento ser na conta toda.

    Abraços.
  21. Upvote
    Yan Oliveira deu reputação a caotic em Item Que Da Vocação   
    Já que estamos falando de coisas inúteis.
    Já que retornei false.
    E a mensagem:
    doPlayerSendCancel(cid, "Use a runa em você")
    Não sera exibida.
     
    1 - Se quisesse diminuir o script poderia colocar um "and" na verificação mais seria com uma mensagem única.
    2 - Não fui mal educado com nosso colega mais todos os usuários querem tudo de "mão beijada"
  22. Upvote
    Yan Oliveira deu reputação a Lordfire em Eu Queria Saber Como Botar 1 Arena Vip No Meu Ot 8.6   
    Alertado em 20%
    Não presta atenção e nem liga pra postar em qualquer lugar e ainda fala com essa falta de educação? Que exemplo de pessoa, hein.
  23. Downvote
    Yan Oliveira deu reputação a lucasalisson em Eu Queria Saber Como Botar 1 Arena Vip No Meu Ot 8.6   
    esse yan se acha muito reporta sua mae pra ve se ela sai vuando ¬¬'
  24. Upvote
    Yan Oliveira deu reputação a caotic em Sairei Da Equipe.   
    Vou ser sincero.
     
    Ele saiu da equipe por inveja e idiotice.
    Só porque o Yan foi promovido ele ficou de "mimi".
    Prezyoso você sonhava com a moderação mais não fazia nada.
    No começo era um membro "bom" depois viro um desgosto.
    Enfim.
    Fez bem em sair da equipe ;d.
  25. Upvote
    Yan Oliveira deu reputação a Oneshot em Item Que Adiciona Skill Ao Clicar   
    @tonynamoral
     
    Já tive o trabalho de fazer o script e testar, não darei suporte por instalação incorreta.
     
    @SmiX
     
    Só quis dizer que existe uma função que adiciona níveis de skill.
     
    @Slicer
     
    Funciona.
     
    Só colocar SKILL__MAGLEVEL no lugar de SKILL_FIST.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...