Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 02/25/17 em todas áreas

  1. GLOBAL 100% 7.40 >> Information: -7.4 Features: No Protection zone nos barcos e tapetes. - Spells, vocations e spells formuled baseada em Tibia 7.4. nao tem Hotkleys! -War System. -Cast System. -Anti Clone. -Task System (Mais de 50) -Party Sharing Experience. You can share experience in-party with your friends, and receive 10% bonus experience when actived (!share). -Nao tem runas no Shop. somente conjurada. -Editado, conjura runas 2x mais que real tibia (ex. Sd 2x). -Fast Soul Regen -Conjure Runes na backpack. ! -Nao tem Wands/Rods, Burst Arrowns baseado em magic level. >> Vocation Features: -Paladins conjure mais ammunition. (ex. exevo con = 15 arrows) -Mages conjure mais runes. (ex. adori vita vis = 2 SDs) -Damage melhorado em 10% para Knights and Paladins. -Attack speed melhorado em 10% for all vocations. >> NPCs: -Nao vende runes. -Pode comprar bp de MF (pode remover se quizer): "buy bp mf" -Pode comprar bp de LF (pode remover se quizer): "buy bp lf" -Djinns in ankrahmun (Precisa de Quest) -Eremo sells amulet of loss. >> Game Features: -Bank system. -Auto-stack items -Full HP and MP at level up. -Stone Skin Amulet nao tem em NPCs, dropa somente de Warlock ou Hydra. >> Extra Information: -Real Tibia map: Full real Tibia map, incluindo todos os NPCs, Port Hope, monsters e quests 100% RL. - POI quest e todas as rooms(Custom feita por min). - Svarground 7.4. -Demon Oak Quest (Custom feita por min). -Uptime: Muito Estavel. -Cliente Próprio das 3 ultimas imagem, não acompanha o servidor (usei somente para tirar prints). DOWNLOAD OTSERV/SOURCES OTX 7.x/CLIENTE/WEBSITE/DATABASE (Pra Editar o cliente basta abrir o Tibia.exe com notepad procurar o ip 167.114.111.25 e alterar pelo o seu ip caso tenha a mesma quantidade de numeros) Executavel + DLLs Scan Virus Total. Creditos Qwizer - OTX
  2. 1 ponto
    Dragon Ball Rox Servidor 100% estável com mais de 200 horas online. 38 Vocações sendo 9 delas vip que são: Shenron,Vegetto,Zaiko,Kagome,Tapion,Kame Chilled,C8 e King Vegetta. Spells de fast attack (Usa uma vez sai 10 hits). Eventos automaticos como: Castle,Battlefield,Run event. Reborn level maximo 600. Vamos aos bugs que eu encontrei: * Zombie event quando o zombie pega algum player todos do evento e mandando pra fora e evento encerra. * Erro quando usa spell e a pessoa morre antes da spell acabar no caso das de combo. * Erro nos eventos Battlefield e Run event quando vai adicionar a recompensa da erro por faltar uma tabela na database que não me recordo o nome agora. Update v2 Adicionado 7 novas vocações vips sendo elas: Bills,Whiss,Golden Freeza,Vegetto Blue,Zamasu,Gogeta Blue e Goku Black Evo. Adicionado 3 vocações free sendo elas: Zeno, Vados e Vegetto Black. Vocações que antes era vip no update v1 agora são free. Fazer reborn não precisa mais fazer quest das esferas do dragão. Adicionado cassino que se ganha small diamonds que se troca por: Divine Stone(Usado para upgrade), Black Stone (Item para virar Vegetto Black) e Leviathan Amulet. Adicionado npc que vende Anti Loss Ring Protege 10% contra todos danos e funciona como a band of loss porem infinita. Ele fica no Yama. Adicionado sistema de pontuação por hora online, cada 1 hora online = 1 ponto que se pode trocar por itens no npc Points Trader no Yama. Adicionado sistema Anti-MC, podendo logar somente 2 contas por ip. Adicionado 3 bosses espalhados pelo mapa (Earth). Adicionado sistema de forja podendo criar o melhor set, armas free e o item para virar Zeno. Adicionado sistema de upgrade fazendo seu item ficar mais forte. Adicionado transformação ultra god para todas as vocações, sendo pega no templo de reset ao lado do esquerdo do templo. Necessário ter level 800 e possuir 100 God Essences que dropam do Ultra God Bills em God Island.Para entrar no templo de reset é necessário possuir 1 reset, para dar reset necessita ter level 800 e digitar o comando "!reset", você voltara para o level 100 com o hp/mp de um player level 100 mas ganhara acesso a área de reset que tem o npc de ultra god e a área de forja. Nova moeda acima de Gold sendo ela Blue God equivalente a 100 Gold Bars. Area de evento pvp e dice/bag adicionada no Yama. Area vip adicionada. Adicionado 2 sets novos free, 2 armas free, 2 shields free, senzu free (God Senzu), Senzu vip (Mystic Senzu), Vados staff free, Whiss staff vip. Vocações que antes era vip na v1 se pega na capsule ao lado direito do templo. Algumas modificações no mapa, hunts, quest. Por enquanto é só isso que estou lembrando,conforme eu lembro edito o tópico. Gostou ? Clique em Gostei logo abaixo. Para consertar o erro da loteria só executar essa query na sua database: CREATE TABLE `lottery` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `item` varchar(255) NOT NULL, `world_id` tinyint(2) unsigned NOT NULL default '0', `item_name` varchar(255) NOT NULL, `date` varchar(256) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; Downloads Server (Distro para windows e linux já compilada) Scan Cliente Scan Sources Scan Site (Modern Acc) Scan Database Scan Creditos server: Kramer, WhiteBubble Creditos site: @Hastafaru e a WhiteBubble por adaptar ao server Creditos source: Fir3element e WhiteBubble por aumentar limite de efeitos e por skill fist skill para aumentar attack speed.
  3. [UP-LEVEL] Recompensa ao subir de level

    jakons reagiu a Absolute por uma resposta no tópico

    1 ponto
    Fala TKZIANOS de plantão WTF? AUEHAUHEA Mas ok... Venho hoje trazer a vocês um sistema de ganhar uma recompensa ao conquistar determinado nível (Configurável) Como funciona? Quando o jogador conquistar determinado level ele recebe como recompensa X item ou GOLD! Mais Absolute, o cara vai ficar se matando e upando de novo para ficar pegando a recompensa... NÃO! Quando o player conquista o level ele recebe uma STORAGE, essa storage faz com que salve isto, ou seja faz com que marque que o jogador já recebeu, se ele tentar burlar o sistema ele não vai receber pelo fato da tal STORAGE já estar gravada nele =p Em data/creaturescripts/scripts crie um arquivo chamado uplevelabsolute.lua e coloque o seguinte dentro: function onAdvance(cid, skill, oldLevel, newLevel) local config = { [50] = {item = 2160, count = 5}, [100] = {item = 2160, count = 15}, [150] = {item = 2160, count = 20}, [200] = {item = 2160, count = 25}, [250] = {item = 2160, count = 30}, [300] = {item = 2160, count = 50}, [350] = {item = 4891, count = 1}, [400] = {item = 4892, count = 1}, } if skill == 8 then for level, info in pairs(config) do if newLevel >= level and (getPlayerStorageValue(cid, 30700) == -1 or not (string.find(getPlayerStorageValue(cid, 30700), "'" .. level .. "'"))) then doPlayerAddItem(cid, info.item, info.count) doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Parabéns, você atingiu o level "..newLevel.." e ganhou "..info.count.." "..getItemNameById(info.item)..".") local sat = getPlayerStorageValue(cid, 30700) == -1 and "Values: '" .. level .. "'" or getPlayerStorageValue(cid, 30700) .. ",'" .. level .. "'" setPlayerStorageValue(cid, 30700, sat) end end end return TRUE end Em data/creaturescripts/creaturescripts.xml adicione a seguinte linha: <event type="advance" name="UpAbsolute" event="script" value="uplevelabsolute.lua"/> Em data/creaturescripts/scripts/login.lua abaixo de registerCreatureEvent(cid, "Mail") adicione a seguinte linha: registerCreatureEvent(cid, "UpAbsolute") Pronto, você implantou o sistema em seu servidor. Como configurar: [50] = {item = 2160, count = 5}, [50] = level que o player vai receber a tal recompensa 2160 = item que o player vai receber, no caso 2160 é o Crystal Coin count = 5 = quantidade do item, no caso 5 Crystal Coins Observação: Ao atingir o level o player receberá uma mensagem e o prêmio estará diretamente em sua backpack. Qualquer dúvida peço que poste =D Até o próximo sisteminha bb's.
  4. Launcher AutoUpdate C#

    premii reagiu a GabrielSapient por uma resposta no tópico

    1 ponto
    Galera sempre procurei um Launcher AutoUpdate para meu servidor, depois de muita pesquisa e pouco conhecimento consegui fazer um em C#, está ai: 1. Download: • Download | • Scan 2. Oque ele faz: • Verifica a existência da versão local na pasta do cliente; • Se a versão do arquivo não existir, ele assume que a versão é "1.0" e cria um arquivo de versão; • Verifica arquivo .xml no servidor de atualização; • Baixar atualizações para todas as versões maiores do que a versão atual do cliente (atualiza tudo em apenas formato de arquivo .zip); • Extrai os arquivos .zip; • Exclui os arquivos .zip após a extração; • Arquiva a versão atualizada na pasta do cliente; • E, finalmente, desbloqueia o botão "Start Game". 3. Como editar: • Abra o arquivo .sln na pasta "VS Project" com o Visual Studio: Procure por: string Server = "http://127.0.0.1/Updates/"; • Altere o http://127.0.0.1/Updates/ para qualquer URL que você estará hospedando suas atualizações. • Agora vamos procurar por: Process.Start("OTClient PkR DX9.exe", "\\Pokémon Rusty"); • Modifique o OTClient PkR DX9.exe pelo nome do .exe do seu Client. • \\Pokémon Rusty e a pasta que está seu .exe e vai ficar seu Launcher. (troque sem tirar os "\\") • No Visual Studio, selecione o controle WebBrowser(Neste caso, o nome "patchNotes") e alterar a url do "http://127.0.0.1/"para o caminho do arquivo index.html, na pasta do host: OBS: Isto á opcional, é apenas um template em .html. Você pode remove-lo e editar da maneira deseja. • Agora apenas jogue o .exe, .dll e o arquivo version da pasta "Launcher\VS Project\Launcher v2\bin\Debug ou Release" para a pasta de seu Client: Pronto! Agora e com o Site. • No host do site, apos colarmos a pasta Updates, editamos o arquivo Updates.xml, para cada atualização adicionamos um <update> fechamos com </update> como no exemplo do arquivo. Colocamos o arquivo atualização em .zip nessa mesma pasta, editando a versão e o nome no arquivo: • No arquivo version.txt colocamos a versão da nova atualização: • Uma dica para o .zip de atualização é colocar em pastas o caminho no client desejado a fazer update. Exemplo: data/things/854 nesta pasta colocaremos os arquivos que será substituído, no exemplo foi Tibia.spr e .dat. Depois compactamos e deixamos na pasta Updates, sem esquecer de colocar o nome no arquivo Updates.xml. 4. Dica • Pronto! Agora e só criar um instalador com o launcher, com atalho na área de trabalho (o launcher é o .exe que você colocou no client). Você pode modificar o launcher do jeito que quiser, o arquivo index.html e etc. Quando abrir o arquivo ele irá atualizar, liberar o botão "Start Game", e quando você clicar vai fechar o Launcher e abrir o Client. 5. Créditos Eu - Pelo launcher e pelo tutorial.
  5. 1 ponto
    Olá caros amigos do forum estou aqui postando o pack completo do pokemon kpdo que atualmente se econtra online a 3 anos, eu sou o administrador do atual servidor pokemon kpdo, irei primeiramente falar o motivo de eu estar postando. Um dos meus EX-staffs roubou os arquivos que eu passei e resolveu vender a terceiros o que eu achei muito anti-ético então resolvi postar open source, pois o que o mesmo fez comigo foi muito errado então não restou a nao deixar gratuito para que o mesmo não lucre nas minha costa. Download: Client+Servidor: Mega Scan: O scan pega o client como um falso positivo por ter injeção de dll injection da barra do meu cliente porém vale lembrar que não tem virus, assim como o pack é um falso positivo. Link do Scan: VirusTotal Os sistemas que o jogo tem são: Sistema de som Cool down e poke bar. Duel System Tv Cam System Sistema de torneio Sistema de Duelos com aposta Pokemons da 1 até a 5 geração e seus devidos shinys. Sistema de shinys Muitas quests TM system etc. Creditos: Renan(Admin) Equipe staff kpdo atual e EX staffs; www.exaioros.com
  6. Dezon OT Admin [restarter]

    neengoso reagiu a dezon por uma resposta no tópico

    1 ponto
    Olá pessoal! Venho trazer um aplicativo que eu desenvolvi para ser um "restarter" simples e eficaz ! Dezon OT Admin [+] Funções - Restarter - Inicia junto com o windows e roda o otserver caso assim configurado - Logs completos - Você pode salvar os logs em arquivos - Não dá erro no config.lua !!! - Pode minimizar ao tray [+] Atualização - Adicionado a função para desativar/ativar o relatório de erros do windows - [NOVO] Adicionado linguagem português e inglês [+] Imagens [+] Scan - Clique aqui para acessar o scan [+] Downloads - .Net Framework 4.0 (instalador web) - Dezon Ot Admin Obrigado !!!
  7. 1 ponto
    Estarei Disponibilizando para Download algumas Distros Compilada em Linux . Distro 8.60............................ - Debian 7.8_x64 Distro 10.10...........................- Debian 7.8_x64 Distro TFS 1.0 - 10.76/10.77 - Debian 7.8_x64 Distro TFS 1.2 - 10.77 .....- Ubuntu 15.04_x86 Distro TFS 1.2 - 10.77 .....- Ubuntu 14.04_x64 Scan Distro 8.60............................ - SCAN Scan Distro 10.10.......................... - SCAN Scan Distro TFS 1.0 - 10.76/10.77 - SCAN Scan Distro TFS 1.2 - 10.77 ..........- SCAN Ubuntu 15.04 Scan Distro TFS 1.2 - 10.77 ..........- SCAN Ubuntu 14.04 Source 8.60 Source 10.10 Source TFS 1.0 - 10.76/10.77 Source TFS 1.2 - 10.77 Créditos - Tiroleivi - - Mitsuig - - luanluciano93 - - Bruno Minervino -
  8. [ANTI-CLONE] 100% NOVO [O MELHOR]

    Jeff Delay reagiu a Absolute por uma resposta no tópico

    1 ponto
    Fala galera do TK! Trago hoje a vocês um sistema que desenvolvi sob uma base de shop com meu parceiro Thales Valentim do pokemonbr.com.br a alguns meses, pós vários testes e visando que funcionou perfeitamente trago para vocês! Como funciona? Toda vez que um ItemVIP ou qualquer Item comprado no SHOP do seu site, quando ele for entregar ao player, irá ficar; COMPRADOR POR:, ou seja; irá adicionar uma "KEY" algo que realmente saiu direto do seu SHOP, pois quando o item é disparado para o player ele vai entregar normal com a função "doCreateItemEx" e então adicionar a descrição no mesmo com a função "doItemSetAttribute". E como evitará os clones Absolute? Você terá uma QUERY para executar no seu banco de dados, fazendo uma checagem dos items VIPS que não possuem esse SERIAL KEY (o script também já faz a checagem), ou seja; os que não tiverem a KEY foram clonados (não saíram do SHOP), e então vocês poderão deleta-los manualmente caso necessário. É muito simples, apenas um script e a QUERY de checagem. Vamos a instalação? Em data/globalevents/scripts substitua o seu arquivo shop.lua por este: -- ### CONFIG ### -- message send to player by script "type" (types you can check in "global.lua") SHOP_MSG_TYPE = 19 -- time (in seconds) between connections to SQL database by shop script SQL_interval = 30 -- ### END OF CONFIG ### function onThink(interval, lastExecution) local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';") if(result_plr:getID() ~= -1) then while(true) do id = tonumber(result_plr:getDataInt("id")) action = tostring(result_plr:getDataString("action")) delete = tonumber(result_plr:getDataInt("delete_it")) cid = getCreatureByName(tostring(result_plr:getDataString("name"))) if isPlayer(cid) == TRUE then local itemtogive_id = tonumber(result_plr:getDataInt("param1")) local itemtogive_count = tonumber(result_plr:getDataInt("param2")) local container_id = tonumber(result_plr:getDataInt("param3")) local container_count = tonumber(result_plr:getDataInt("param4")) local add_item_type = tostring(result_plr:getDataString("param5")) local add_item_name = tostring(result_plr:getDataString("param6")) local received_item = 0 local full_weight = 0 if add_item_type == 'container' then container_weight = getItemWeightById(container_id, 1) if isItemRune(itemtogive_id) == TRUE then items_weight = container_count * getItemWeightById(itemtogive_id, 1) else items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count) end full_weight = items_weight + container_weight else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) if isItemRune(itemtogive_id) == TRUE then full_weight = getItemWeightById(itemtogive_id, 1) else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) end end local free_cap = getPlayerFreeCap(cid) if full_weight <= free_cap then if add_item_type == 'container' then local new_container = doCreateItemEx(container_id, 1) doItemSetAttribute(new_container, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') local iter = 0 while iter ~= container_count do local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doAddContainerItemEx(new_container, new_item) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') received_item = doPlayerAddItemEx(cid, new_item) end if received_item == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.') doPlayerSave(cid) db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.') end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.') end end if not(result_plr:next()) then break end end result_plr:free() end return TRUE end Confira se no seu globalevents.xml já possui a tag: <globalevent name="shop" interval="30000" script="shop.lua"/> PRONTO, VOCÊ ESTÁ LIVRE DE CLONES! TÃO SIMPLES NÃO? Para fazer a checagem se há items clonados, abra o seu phpmyadmin e execute a seguinte query: ------------------- COMANDO SQL BY ABSOLUTE PARA VERIFICAR A TABELA PLAYER_DEPOTITEMS---------------------- SELECT `player_id`,`pid`,`sid`,CONVERT( `attributes` USING latin1 ) FROM `player_depotitems` WHERE CONVERT( `attributes` USING latin1 ) LIKE '%description%' ------------------- COMANDO SQL BY ABSOLUTE PARA VERIFICAR A TABELA PLAYER_ITEMS---------------------- SELECT `player_id`,`pid`,`sid`,CONVERT( `attributes` USING latin1 ) FROM `player_items` WHERE CONVERT( `attributes` USING latin1 ) LIKE '%description%' OBSERVAÇÃO IMPORTANTE: Caso seu servidor já esteja online e já possua vendas no seu SHOP, você terá que adicionar a "KEY" em todos os items ou reseta-los. OUTRA OBSERVAÇÃO: Nunca crie items VIP com o ADMIN e de aos jogadores, pois eles ficaram sem a "KEY" e poderão ser deletados. ESTE SCRIPT FUNCIONA PERFEITAMENTE NAS REVS 0.3.6 e 0_4, caso necessário passo para a 1.x. S IMPLES, PRATICO E PERFEITO NÃO? Quero vê-los usando, espero ter ajudado. :D Até a próxima! Absolute.
  9. [Poketibia] Pfield CdBar Open Source

    Aksz reagiu a Tungsx por uma resposta no tópico

    1 ponto
    Eai PokeTibianos ! Trago aqui o pfield com cd bar um servidor com sources! bom adicionei a cdbar no pfield! a alguns sistemas nada mais! Systems do PFIELD! Observações PRINTS: DOWNLOAD: http://bit.ly/1OdS1Ii Sources GitHub: https://github.com/K...d-cdbar-source/ SCAN: https://www.virustotal.com/pt-br/file/601a2bc99eff53a1c7a2bb231218209331b0aad511d24c8359d7977b09eb0349/analysis/1454742556/ CREDITOS: Kevick (CDBAR-FUNCIONAL) Aberos (Otclient) Avronex CipSoft - Sem ela isso tudo nao existiria
  10. [8.6] Invite Players System!

    poko360 reagiu a Vodkart por uma resposta no tópico

    1 ponto
    Resumo: Para quem já jogou league of legends, o sistema é "parecido" com o Invite Friends, e para quem não jogou irei dar uma breve descrição sobre o sistema. Descrição: O sistema oferece algumas premiações como: Itens, Premium Days, Premium Points(para site) e Outfits. Claro que isso tudo é configurável. A ideia principal do sistema foi que essas premiações fossem exclusivas do sistema, digamos, que os jogadores só fossem recompensados e tivessem certas outfits se ele atingisse num número "X" de pontos por ter ajudado seu servidor a crescer! Como todo mundo almeja algo exclusivo e difícil de ser obtido, iria instigar os jogadores a usar o sistema e convidar seus amigos para o servidor! Como Funciona o Sistema? O sistema foi planejado para que jogadores "espertinhos" não burlassem o sistema e acontece da seguinte maneira: Temos o jogador João e a jogadora Maria: Maria necessita ser level 30 ou menor que 30(Configurável) para utilizar uma talkactions e dizer por quem foi invitada para o servidor, vamos supor que João a convidou Maria para jogar, João por sua vez necessita também ter um level avançado, digamos 50 ou superior(Configurável). Feito com sucesso o uso do sistema, ele funciona da seguinte maneira: OBS: Você pode dizer o nome do jogador mesmo que ele esteja OFFLINE! OBS2: Um ou mais Players podem ser invitador pelo MESMO JOGADOR! ENTÃO QUANTO MAIS PLAYER VOCÊ CHAMAR, MAIS FÁCIL DE RECEBER PONTOS E PREMIAÇÕES O jogador invitado, no caso o João, teria que atingir um número "X" de pontos para receber premiações, por exemplo: * Com 10 Pontos jogão recebe: Itens * Com 25 Pontos jogão recebe: Itens e Premium Points * Com 50 Pontos jogão recebe: Itens * Com 100 Pontos jogão recebe: Itens, Premium Points, Premium Days e Outifit (Claro que isso é tudo configurável em uma Tabela) E como recebo Recebo esses Pontos VODKART SEU FILHO DA PUTA! Se lembra que João Convidou Maria para Jogar? Então... Maria tem que atingir certos leveis para que João receba esses pontos! Por exemplo a tabela do sistema: levels_win = { [50] = 5, [80] = 6, [100] = 8, [150] = 10 } Se Maria atingir level 50, João recebe 5 pontos Se Maria atingir level 80, João recebe 6 pontos Etc... Claro que isso tudo é acumulativo! E sabe o que mais? João recebe Pontos mesmo se estiver ONLINE ou OFFLINE! Sem mais delongas, Vamos instalar o sistema! data\creaturescripts\scripts InviteFriends.lua function onLogin(cid) registerCreatureEvent(cid, "FriendsPoints") if getPlayerStorageValue(cid, _invite_friends.storages[1]) < 0 then setPlayerStorageValue(cid, _invite_friends.storages[1], 0) setPlayerStorageValue(cid, _invite_friends.storages[4], 0) end if getInvitePoints(cid) > 0 then getRewardsFriend(getCreatureName(cid), getPlayerGUID(cid)) end return true end function onAdvance(cid, skill, oldLevel, newLevel) if (skill == SKILL__LEVEL) then if hasInviteFriend(cid) and getPlayerStorageValue(cid, _invite_friends.storages[3]) < newLevel and _invite_friends.levels_win[newLevel] then local f_name, points = getNameFriend(cid), _invite_friends.levels_win[newLevel] local f_pid = getPlayerGUIDByName(f_name) setPlayerStorageValue(cid, _invite_friends.storages[3], newLevel) addInvitePoints(f_name, points) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Invite Friends] você atingiu o level "..newLevel.." e o seu amigou "..f_name.." recebeu "..points.." Friend Points. Obrigado!") if isPlayer(getPlayerByNameWildcard(f_name)) then getRewardsFriend(f_name, f_pid) end end end return true end creaturescript.xml <event type="login" name="FriendsLogin" event="script" value="InviteFriends.lua"/> <event type="advance" name="FriendsPoints" event="script" value="InviteFriends.lua"/> data\talkactions\scripts InviteFriends.lua function onSay(cid, words, param, channel) local param = param:lower() if param == "" or not param then doPlayerSendCancel(cid, "Você precisa digitar o nome de um jogador.") return true elseif param == "points" then doPlayerPopupFYI(cid,"[+] Invite Friend System [+]\n\nvocê tem ["..getInvitePoints(cid).."] Friends Points.") return true elseif hasInviteFriend(cid) then doPlayerSendCancel(cid, "Você já agradeceu o jogador ["..getNameFriend(cid).."] por te convidar a jogar neste servidor.") return true elseif not getPlayerGUIDByName(param) then doPlayerSendCancel(cid, "Desculpe, mas o jogador [" .. param .. "] não existe.") return true elseif getPlayerLevel(cid) > _invite_friends.level_max or db.getResult("SELECT `level` FROM `players` WHERE `id` = "..getPlayerGUIDByName(param)):getDataInt("level") < _invite_friends.level_need then doPlayerSendCancel(cid, (getPlayerLevel(cid) > _invite_friends.level_max and "Desculpe, mas você precisa ter no minimo level ".._invite_friends.level_max.." para usar este comando." or "Desculpe, mas o jogador ["..param.."] precisa ter no minimo level ".._invite_friends.level_need.." para ser escolhido.")) return true elseif getPlayerIp(cid) == tonumber(db.getResult("SELECT `lastip` FROM `players` WHERE `id` = "..getPlayerGUIDByName(param)):getDataString("lastip")) then doPlayerSendCancel(cid, "Desculpe, mas você não pode se auto invitar por estar com o mesmo IP.") return true elseif getCreatureName(cid):lower() == param then doPlayerSendCancel(cid, "Desculpe, mas você não pode se auto invitar.") return true end doInviteFriend(cid, getPlayerGUIDByName(param)) doPlayerSendTextMessage(cid, 25, "Você indicou o jogador "..param..", este sistema é uma forma de agradecer a vocês por trazerem seus amigos para jogar.") doSendMagicEffect(getCreaturePosition(cid), math.random(28,30)) return true end talkactions.xml <talkaction words="/invited;!invited" event="script" value="InviteFriends.lua"/> data/lib InviteFriends.lua _invite_friends = { storages = {202301, 202302, 202303, 202304}, -- points, jogador, recompensa lvl, recompensa items level_max = 20, -- até que level ele precisa falar seu friend level_need = 30, -- que lever o jogador precisa ser para ganhar pontos levels_win = { -- leveis que receberão os pontos(feito pelo onAdvance) [50] = 5, [80] = 6, [100] = 8, [150] = 10 }, rewards = { -- a cada tantos pontos, que tipo de reward ele irá receber(automático onLogin) [10] = {items = {{2160,1},{2173,1}}, p_days = 1, p_points = 0 , out = {0,0}}, [25] = {items = {{2160,2},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [50] = {items = {{2160,3},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [100] = {items = {{2160,4},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [200] = {items = {{2160,5},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [250] = {items = {{2160,6},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [500] = {items = {{2160,7},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}} } } function getInvitePoints(cid) return getPlayerStorageValue(cid, _invite_friends.storages[1]) < 0 and 0 or getPlayerStorageValue(cid, _invite_friends.storages[1]) end function hasInviteFriend(cid) return getPlayerStorageValue(cid, _invite_friends.storages[2]) > 0 and true or false end function doInviteFriend(cid, GUID) return setPlayerStorageValue(cid, _invite_friends.storages[2], GUID) end function getNameFriend(cid) return getPlayerNameByGUID(getPlayerStorageValue(cid, _invite_friends.storages[2])) end function addInvitePoints(name, amount) local pid, Guid = getPlayerByNameWildcard(name), getPlayerGUIDByName(name) if not pid then local getFriendPoints = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = ".. Guid .." AND `key` = ".._invite_friends.storages[1]) if (getFriendPoints:getID() ~= -1) then db.executeQuery("UPDATE `player_storage` SET `value` = ".. (getFriendPoints:getDataInt("value")+amount) .." WHERE `player_id` = ".. Guid .." AND `key` = ".._invite_friends.storages[1]) end else setPlayerStorageValue(getPlayerByName(name), _invite_friends.storages[1], getInvitePoints(getPlayerByName(name))+amount) end return true end function getRewardsFriend(name, pid) local acc = getAccountIdByName(name) if isPlayer(getPlayerByNameWildcard(name)) then local target = getPlayerByNameWildcard(name) local FriendPoints, CheckPoints = getInvitePoints(target), getPlayerStorageValue(target, _invite_friends.storages[4]) for vod, ka in pairs(_invite_friends.rewards) do local str = "" if FriendPoints >= vod and CheckPoints < vod then str = str.."--> Invite Players System <--\n\nVocê acaba de receber algumas recompensas:\n\nItems: \n"..getItemsFromList(ka.items)..".\n\n" if ka.p_days > 0 then doPlayerAddPremiumDays(target, ka.p_days) str = str.."Premium Days:\n"..ka.p_days.." Premium Days." end if ka.p_points > 0 then db.executeQuery('UPDATE accounts SET premium_points=premium_points+' .. ka.p_points ..' WHERE id=' .. acc) str = str.."Premium Points:\n"..ka.p_points.." Premium Points." end if ka.out[1] > 0 then doPlayerAddOutfit(target, getPlayerSex(target) == 0 and ka.out[1] or ka.out[2], 3) str = str.."[New Outfit]\nRecebeu uma Nova Outfit." end setPlayerStorageValue(target, _invite_friends.storages[4], FriendPoints) MandarItensProDp(name, ka.items, str) doPlayerSendTextMessage(target, MESSAGE_STATUS_CONSOLE_ORANGE,"[Invite Players System] Você Recebeu algumas premiações por estar convidando jogadores para o servidor, Por favor conferir os itens no Depot.") end end end return true end function MandarItensProDp(name, items, texto) local parcel = doCreateItemEx(ITEM_PARCEL) for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(parcel, item, amount) else for i = 1, amount do doAddContainerItem(parcel, item, 1) end end end local carta = doAddContainerItem(parcel, 1952) doItemSetAttribute(carta, "writer", "[+] Invite Players System [+]") doItemSetAttribute(carta, "text", texto) doPlayerSendMailByName(name, parcel) return true end -- function adicional -- function getItemsFromList(items) -- by vodka local str = '' if table.maxn(items) > 0 then for i = 1, table.maxn(items) do str = str .. items[i][2] .. ' ' .. getItemNameById(items[i][1]) if i ~= table.maxn(items) then str = str .. ', ' end end end return str end Configurando o Sistema: *Vá na LIB do sistema que você adicionou* level_max = 30, -- até que level ele precisa falar seu friend level_need = 50, -- que lever o jogador precisa ser para ganhar pontos levels_win = { -- [LEVEL QUE PRECISA ATINGIR] = QUANTIDADE DE PONTOS QUE O OUTRO JOGADOR VAI RECEBER [50] = 5, [80] = 6, [100] = 8, [150] = 10 } rewards = { [10] = {items = {{2160,1},{2173,1}}, p_days = 1, p_points = 0 , out = {0,0}}, [25] = {items = {{2160,2},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [50] = {items = {{2160,3},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [100] = {items = {{2160,4},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [200] = {items = {{2160,5},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [250] = {items = {{2160,6},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, [500] = {items = {{2160,7},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}} } rewards = { [PONTOS NECESSÁRIO PARA OBTER A PREMIAÇÃO] = exemplo: [10] = {items = {{2160,1},{2173,1}}, p_days = 0, p_points = 0 , out = {0,0}}, com 10 pontos ele irá receber aquele itens acima /\ items = {} -- Poderá adicionar itens em uma tabela dizendo {id do item, quantidade} p_days = 0 -- se o jogador vai receber Premium Days? 0 ou Quantidade que vc deseja dar p_points = 0 -- se o jogador vai receber Premium Points? 0 ou Quantidade que vc deseja dar out = {0,0} -- se vai receber outfit? {FEMALE, MALE} OU {0 , 0} para nenhuma. obs:(lembrando que o id das outfits ficam em outfits.xml)
  11. 1 ponto
    Consegui liberar mais de 15 mil sprites usando essa ferramenta no Object Builder. 1. Baixe o Object Builder na seção: GitHub Latest commits compiled Latest commits Lembrando que necessário o Adobe Air para rodar qualquer versão do Object Builder. 2. Siga: 2.1: Abra suas sprites por ele; OBS: Faça um backup de suas sprites antes, este programa ainda está em beta, mas comigo foi certinho. 2.2: Tools> Sprites Optimizer: 2.3: Deixe desse jeito para melhor resultado, e clique em Start: 2.4: Veja o resultado: 3. Créditos: Eu - pelo tutorial; Nailson - Por ser o criador do object builder, e contribuições de: https://github.com/Mignari/ObjectBuilder/graphs/contributors.
  12. [TFS 1.x] Anti-Magebomb

    Perl reagiu a luanluciano93 por uma resposta no tópico

    1 ponto
    Bom, esse script limita uma quantidade de MC logados por IP, podendo evitar várias coisas, como por exemplo o magebomb. Basta criar um arquivo em creaturescript/scripts/ com o nome anti-magebomb.lua e coloque esse código dentro: -- <event type="login" name="Anti-Magebomb" script="anti-magebomb.lua"/> local AccPorIp = 2 function onLogin(player) local mc = 0 for _, verificar in ipairs(Game.getPlayers()) do if player:getIp() == verificar:getIp() then mc = mc + 1 if mc > AccPorIp then return false end end end return true end A tag do creaturescript.xml já esta como comentário no script, é só copiar. É isso, espero ter ajudado.
  13. [Creaturescripts] Auto Bless

    Shizuka Yannick reagiu a Farathor por uma resposta no tópico

    1 ponto
    Olá, este é um script que adiciona todas as bless em jogadores que tiverem o level menor que o configurado em creaturescripts/scripts crie um arquivo chamado autoBless.lua e cole isso: local blessings = {1, 2, 3, 4, 5} local level = 150 function onLogin(cid) if getPlayerLevel(cid) <= level then for cont = 1, table.maxn(blessings) do doPlayerAddBlessing(cid, blessings[cont]) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu todas as blessings por causa que é nivel menor que "..level.."!") end end em creaturescripts.xml adicione a seguinte tag: <event type="death" name="autoBless" event="script" value="autoBless.lua"/> em creaturescripts/scripts no arquivo login.lua adicione a seguinte tag registerCreatureEvent(cid, "autoBless")
  14. (Resolvido)[AJUDA] LASTKILL MONSTERS

    mateusmoretti reagiu a Weslley Kiyo por uma resposta no tópico

    1 ponto
    É pq nunca mechi com OnDeath ou OnKill isso pra mim é complicado kk Tenta esse function onDeath(cid, corpse, deathList) if isPlayer(deathList[1]) then doPlayerAddItem(deathList[1], 6527, 70) -- itemid, amount doBroadcastMessage("O jogador "..getCreatureName(deathList[1]).." deu o ultimo HIT no Boss Divino e ganhou 70 Event Tokens!") doSendMagicEffect(getPlayerPosition(deathList[1]), 12) end return true end OU esse function onDeath(cid, corpse, deathList) if isPlayer(deathList[1]) then doPlayerAddItem(deathList[1], 6527, 70) -- itemid, amount doBroadcastMessage("O jogador "..getCreatureName(deathList[1]).." deu o ultimo HIT no Boss Divino e ganhou 70 Event Tokens!") end return true end
  15. The Forgotten Server CODEBLOCK

    JHONQAP reagiu a roriscrave por uma resposta no tópico

    1 ponto
    tem um programa para isso, chama sqlite stuido, caso vc nao use site
  16. Script do Exame Anbu Dando Erro.

    Breaky reagiu a KotZletY por uma resposta no tópico

    1 ponto
    @Segundo Hokage O que será que pode está errado ?
  17. Estou planejando fazer um tutorial com tudo que precisa pra deixar um otserver online nas versões atuais, isso inclui o site também, mas não vai dar pra ser hoje =/
  18. [PROJETO] Global FULL 860

    Vodkart reagiu a Weslley Kiyo por uma resposta no tópico

    1 ponto
    Bem, estou desenvolvendo um global do 'zero', tanto o mapa quanto npcs e quests. Servidor já está 50%, porém estou com uma dúvida quanto ao cliente e gostaria que a comunidade pudesse me ajudar. Por favor, votem e comentem, obrigado. Lembrando: O Otclient haverá um launcher e spriters próprias para melhoria. E muitas coisas próprias também mas sem fugir da ideia de um servidor global. Exemplo: Se usarmos Otclient, vou fazer um update para 870 e se você estiver usando uma montaria, ao sofrer qualquer dano, vc automaticamente sai da montaria. (Para evitar PvPs em cima de montarias, que é algo estranho. Com otclient, podemos adicionar todas as montarias do tibia, monstros e outfits que tenham suporte para o mapa global da versão 8.60
  19. 1 ponto
    esse post resolve seu problema ajudei?? rep+
  20. 1 ponto
    Faz uma imagem exata 100% quadrada e tem que ter um dimenção exata que divide por 32 ex: 64x64 === Ao recortar dara 4 pisos de 32x32
  21. Trade OFF - Shop Offline

    Brunno Dornelas reagiu a Dornellas por uma resposta no tópico

    1 ponto
    @Natanael Beckman @Antipush @dougbart @KotZletY Pessoal, alguém pode tirar minha dúvida? Implantei esse sistema no meu server, o comando está funcionando normalmente (ele até retira o item do char quando eu aciono o comando) porém no site os itens não aparecem. fica assim: "Currently is no one active Auction." Alguém já teve esse problema e pode me ajudar? Obrigado!
  22. (Resolvido)Backpack Por Comando !Bp

    Luck its Me reagiu a oloku5 por uma resposta no tópico

    1 ponto
    Se a versão for 0.4 Testa ai: Crie um arquivo lua chamado "bps" na pasta talkactions: function onSay(cid, words, param, channel) local config = { s = 10546, -- n mexa exhau = 30 -- tempo em seegundos para comprar denovo } if (getPlayerStorageValue(cid, config.s) <= os.time()) then doPlayerSave(cid) doPlayerAddItem(cid, 9774, 1) -- ID da backpack 9774, mude o id conforme desejado setPlayerStorageValue(cid,config.s,os.time()+config.exhau) doCreatureSay(cid, "Backpack", 19) else doPlayerSendCancel(cid, "Você tem que esperar " .. config.exhau .. " segundos para comprar outra bp novamente.") end return TRUE end EM talkactions.xml adicione a tag: <talkaction words="!bp;!backpack;/bp;/backpack;bp" script="bps.lua"/>
  23. (HELP) BUG atributo de itens

    Brunno Dornelas reagiu a Dornellas por uma resposta no tópico

    1 ponto
    Boa noite pessoal, Venho pedir uma ajuda referente à atributos de itens que está bugando no meu servidor (Baiak 8.6) TFS 0.3.6 Quando coloco um item editado que da um atributo (Ex: +10 axe fighting) ele aumenta normal, porém quando tiro o item, o skill não volta para o valor original. Além desse problema, quando eu troco o item "bugado" com outro item já editado no servidor o skill aumenta constantemente.
  24. (HELP) BUG atributo de itens

    Brunno Dornelas reagiu a Dornellas por uma resposta no tópico

    1 ponto
    itens.xml <item id="10316" article="a" name="Helmet of the GOD"> <attribute key="description" value="This helmet spawns green stars. Awesome." /> <attribute key="weight" value="4600" /> <attribute key="armor" value="50" /> <attribute key="slotType" value="head" /> <attribute key="speed" value="40" /> <attribute key="skillSword" value="35" /> <attribute key="skillClub" value="35" /> <attribute key="skillAxe" value="35" /> <attribute key="skillShield" value="35" /> <attribute key="skillDist" value="35" /> <attribute key="absorbPercentPhysical" value="15" /> <attribute key="absorbPercentFire" value="10" /> <attribute key="absorbPercentIce" value="10" /> <attribute key="showattributes" value="1" /> </item> movements.xml <movevent type="Equip" itemid="10316" slot="head" level="8" event="function" value="onEquipItem"> <vocation id="1"/> <vocation id="5" showInDescription="0"/> <vocation id="2"/> <vocation id="6" showInDescription="0"/> <vocation id="3"/> <vocation id="7" showInDescription="0"/> <vocation id="4"/> <vocation id="8" showInDescription="0"/> </movevent> ------------------------------------------ @Saymon Kopolsky Esse é só um item que eu tinha feito que está com esse BUG (como exemplo) mas as Weapons e um Book (que já veio no sv) estão com os mesmos Problemas. @Saymon Kopolsky pra vc entender melhor, achei um video no Youtube mostrando esse bug com um outro item (acontece a mesma coisa)
  25. Estou com o mesmo problema, porém a senha e o nome da base de dados estão certos. pode ser algum problema de porta, não sei ainda.. Alguem pode me ajudar??
  26. [8.6] Invite Players System!

    Mauro Sérgio reagiu a Vodkart por uma resposta no tópico

    1 ponto
    ops function MandarItensProDp(name, items, texto) local backpack = doPlayerAddItem(getPlayerByNameWildcard(name), 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 local carta = doAddContainerItem(backpack, 1952) doItemSetAttribute(carta, "writer", "[+] Invite Players System [+]") doItemSetAttribute(carta, "text", texto) return true end
  27. (Resolvido)[SCRIPT] Item para Last Hit

    mateusmoretti reagiu a Vodkart por uma resposta no tópico

    1 ponto
    function onDeath(cid, corpse, deathList) if isPlayer(deathList[1]) then doPlayerAddItem(deathList[1], 2173, 1) -- itemid, amount doSendMagicEffect(getPlayerPosition(deathList[1]), 12) end return true end
  28. (Resolvido)Nao consigo combar

    Zauster reagiu a zPerseu por uma resposta no tópico

    1 ponto
    http://prntscr.com/b72mm2 mano ta dando isso nao da dano nem apareçe sprite rep+ arrumei akie achei o erro dps de 2 anos
  29. (Resolvido)Nao consigo combar

    Zauster reagiu a zPerseu por uma resposta no tópico

    1 ponto
    Pra vc combar e facil nao precisa ser da propria spell com o exausted '==' da pra fazer pelo spell.xml eu faço assim '==' Atack Area = 1200 ou 1000 de exausted Atack de target = o mais forte tipo tira 50k ele e 2000 de exausted se vc quiser adc + 1 so vc colocar menos exausted se tiver 2000 - 1200 - 1000 Exemplo Katon sohenka no jutsu - 1 = 1200 Dai Katon Meteor - 2 = 1000 Katon Borukaki - 3 = 2000 Tipo assim se nao tendeu me chama la no Facebook '=='
  30. (Resolvido)Como remover uma casa do RME

    Neorose1 reagiu a Heyron por uma resposta no tópico

    1 ponto
    O que você removeu foi apenas o PZ, agora falta a casa. Para remover a casa você deve clicar com botão direito na zona azul dela, e clicar em Select House, aí é só você deletar ela clicando em remove.
  31. [TFS 1.x] Anti-Magebomb

    josiassc alves reagiu a luanluciano93 por uma resposta no tópico

    1 ponto
    @Toulouse, não testei ... local AccPorIp = 2 function onLogin(cid) local mc = 0 for _, verificar in ipairs(getPlayersOnline()) do if getPlayerIp(cid) == getPlayerIp(verificar) then mc = mc + 1 if mc > AccPorIp then return false end end end return true end
  32. [PEDIDO] Book of Bless

    samuel.show reagiu a Bruno Minervino por uma resposta no tópico

    1 ponto
    function onUse (cid, item, itemEx , fromPosition, toPosition) local blessings = 0 for b = 1, 5 do if getPlayerBlessing(cid, b) then blessings = blessings + b end end if blessings == 5 then doPlayerSendCancel(cid, "Voce ja possui todas as blessings.") doSendMagicEffect(getPlayerPosition(cid), 17) else for i = 1, 5 do doPlayerAddBlessing(cid, i) end doSendMagicEffect(getPlayerPosition(cid), 37) doPlayerSendTextMessage(cid,MESSAGE_EVENT_ADVANCE, "Voce agora possui todas as blessings!") end return true end
  33. [talkaction] Adicionar X item para o player

    Yatos reagiu a Caronte por uma resposta no tópico

    1 ponto
    Dei uma alteradinha no meu server test só para ver como ficaria, se alguém quiser testar ta aí... function onSay(cid, words, param) local param = param.explode(param, ',') local item = param[2] if isPlayer(getPlayerByName(param[1])) and tonumber(param[2]) and tonumber(param[3]) then doPlayerSendTextMessage(getCreatureByName(param[1]), 22, "Você acabou de receber "..param[3].." "..getItemNameById(item).." do ADM!") doPlayerAddItem(getCreatureByName(param[1]), param[2], param[3]) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to use /giveitem Name,Itemid,Count.") end return TRUE end
  34. [duvid] AUTO KICK

    josiassc alves reagiu a Cerberus por uma resposta no tópico

    1 ponto
    Se precisar e eu souber eu ajudo... o cara recebi a notificação com 14 minutos que iria ser kikado mais com com 1000minutos que era kikado ahauaha.
  35. 1 ponto
    "Não poste mensagens sem conteúdo, que não contribuem em nada ou que não estejam relacionadas ao assunto do tópico. Mensagens assim são chamadas de Floods. Postar coisas como "haha", "lol", "me add no msn aí", entre outras, é o que considera-se completamente inútil. Postar várias mensagens iguais, mesmo que em tópicos diferentes, também pode ser considerado Flood." aonde "Olha, não sei... mas pergunte ao Comedinha" é flood? logo pois o Otitemeditor foi postado pelo tal, entao se tem uma duvida relacionada com o programa, seria muito mais facil perguntar para quem postou.
  36. (Resolvido)Atk de wand por SCRIPT

    josiassc alves reagiu a luanluciano93 por uma resposta no tópico

    1 ponto
    Em data/weapons/weapons.xml É como este exemplo: <!-- Rods --> <wand id="2182" level="7" mana="2" min="8" max="18" type="earth" event="function" value="default"> <vocation id="2"/> <vocation id="6"/> </wand> Em ID é o ID do item, level é o level minimo para usar, mana é o tanto de mana que irá gastar em cada hit, min e max é a expressão para o valor do hit da wand, type é o tipo de ataque, e vocation são as vocações que podem usa-lá (esta em ID vocation). Espero ter ajudado!
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo