Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''sistema''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Downloads
    • Recursos
    • Suporte
    • Pedidos
    • Show-Off
    • Tutoriais
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Encontrar resultados em...

Encontrar resultados que contenham...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Sou

  1. ADVANCED FORGE SYSTEM O SISTEMA DE CRIAÇÃO DE ITENS PARA SEU SERVIDOR Creio que muitos já conhecem o sistema de forja criado por mim, acontece que o código já estava um pouco obsoleto, então resolvi reescrever ele do 0. Simplesmente consiste em um sistema de criação de itens avançado que ressuscita um pouco do RPG perdido nos servidores de hoje em dia. O jogador poderá criar itens através de forja, agindo como um verdadeiro ferreiro medieval. Adiciona itens em cima de uma bigorna previamente colocada no mapa e com um martelo cria um item totalmente novo. CARACTERÍSTICAS DA VERSÃO FINAL: - Configuração intuitiva e fácil de compreender; - Mini-tutorial auxiliando criação de novas receitas; - Receitas podem conter até 250 itens diferentes com suas respectivas quantidades; - Sistema inteligente que identifica uma receita em qualquer ordem; - Código totalmente orientado a objetos; - Possibilidade de configurar diferentes requerimentos, diferentes skills, magic level e level Há dois modos de instalar o Advanced Forge System, o primeiro é seguir os passos deste tópico e o segundo e baixar pasta data/ anexada no tópico com os arquivos em seus respectivos diretórios, precisando apenas o registro das chaves nos arquivos XML. Escolha o modo que mais convém a você. Crie um arquivo em data/lib chamado forgesystem.lua e cole o conteúdo abaixo: --[[ ADVANCED FORGE SYSTEM FINAL Criado por Oneshot É proibido a venda ou a cópia sem os devidos créditos desse script. ]]-- RecipeHandler = { itemtype = 0, items = {}, level = 1, maglevel = 0, skills = {[0] = 0, [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0} } Forge = { type = nil, position = nil, magicEffect = CONST_ME_MAGIC_GREEN, messages = { class = MESSAGE_STATUS_DEFAULT, success = "You have successfully forged a %s.", needskill = "You don't have enough %s to create a %s.", needlevel = "You need level %s to create a %s.", needmaglevel = "You need magic level %s to create a %s." } } function RecipeHandler:new(itemtype, items, level, maglevel, skills) local obj = { itemtype = (itemtype or 0), items = (items or {}), level = (level or 1), maglevel = (maglevel or 0), skills = (skills or {[0] = 0, [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0}) } table.insert(Recipes, obj) return setmetatable(obj, {__index = self}) end function RecipeHandler:setItem(itemtype) self.itemtype = (itemtype or 0) end function RecipeHandler:setRecipe(...) self.items = {...} end function RecipeHandler:setRecipeItem(itemid, amount) table.insert(self.items, {itemid, amount}) end function RecipeHandler:setSkill(skillid, value) self.skills[skillid] = value end function RecipeHandler:setLevel(value) self.level = value end function RecipeHandler:setMagLevel(value) self.maglevel = value end function RecipeHandler:check(position) local match = false for n, item in ipairs(self.items) do local thing = getTileItemById(position, item[1]) if thing.uid > 0 and math.max(1, thing.type) >= item[2] then if n == #self.items then match = true end else break end end return match end function RecipeHandler:get(position) if self:check(position) == true then return setmetatable({type = self, position = position}, {__index = Forge}) end return false end function Forge:create(cid) if self.type.itemid == 0 then print("[FORGE SYSTEM - ERROR] ATTEMPT TO CREATE A RECIPE ITEMID 0") return end local status = true if(cid) then if getPlayerLevel(cid) < self.type.level then doPlayerSendTextMessage(cid, self.messages.class, self.messages.needlevel:format(self.type.level, getItemNameById(self.type.itemtype))) return end if getPlayerMagLevel(cid) < self.type.maglevel then doPlayerSendTextMessage(cid, self.messages.class, self.messages.needmaglevel:format(self.type.maglevel, getItemNameById(self.type.itemtype))) return end for skillid, value in pairs(self.type.skills) do if getPlayerSkillLevel(cid, skillid) < value then status = false doPlayerSendTextMessage(cid, self.messages.class, self.messages.needskill:format(SKILL_NAMES[skillid], getItemNameById(self.type.itemtype))) break end end end if status == true then for _, item in ipairs(self.type.items) do local thing = getTileItemById(self.position, item[1]) doRemoveItem(thing.uid, item[2]) end doSendMagicEffect(self.position, self.magicEffect) doPlayerSendTextMessage(cid, self.messages.class, self.messages.success:format(getItemNameById(self.type.itemtype))) doCreateItem(self.type.itemtype, self.position) end end dofile(getDataDir() .."/lib/recipes.lua") Crie um arquivo em data/lib chamado recipes.lua e adicione o conteúdo abaixo: ---------------------------------------- -----** TUTORIAL DE CONFIGURAÇÃO **----- ---------------------------------------- --[[ O 'ADVANCED FORGE SYSTEM' é muito fácil e intuitivo de configurar, você só precisa chamar a função RecipeHandler:new(...), sendo que você já configurar os atributos da receita nela ou usar outras funções para isso. Por exemplo, quero criar uma Magic Sword que precise de 100 Gold Nuggets. RecipeHandler:new(2400, {{2157, 100}}) Ou então Magic_Sword = RecipeHandler:new() Magic_Sword:setItem(2400) Magic_Sword:setRecipe({2157, 100}) Funções do Sistema: RecipeHandler:new(itemtype, items, level, maglevel, skills) --> Cria uma nova instância de forja. RecipeHandler:setItem(itemtype) --> Atribui um certo itemid como resultado da receita. RecipeHandler:setRecipe(recipe) --> Atribui uma receita. RecipeHandler:setRecipeItem(itemid, amount) --> Adiciona um itemid e sua quantidade a receita. RecipeHandler:setSkill(skillid, value) --> Atribui um valor necessário de uma certa skill para poder criar a receita. RecipeHandler:setLevel(value) --> Atribui o level necessário para criar uma receita. RecipeHandler:setMagLevel(value) --> Atribui o magic level necessário para criar uma receita. ]]-- --[[ Este é um exemplo de receita usando algumas funções. É uma Magic Sword (ITEMID: 2400) que precisa de 100 Gold Nuggets (ITEMID: 2157), além disso, o personagem que tentar forjar, precisa ter Level 100 e Sword Fighting 50. ]]-- Recipes = {} magicsword = RecipeHandler:new() magicsword:setItem(2400) magicsword:setRecipeItem(2157, 100) magicsword:setLevel(100) magicsword:setSkill(2, 50) Agora em data/actions/scripts, crie um arquivo chamado iron_hammer.lua e adicione o conteúdo abaixo: function onUse(cid, item, fromPosition, itemEx, toPosition) local recipe = nil for _, v in ipairs(Recipes) do recipe = v:get(toPosition) if(recipe ~= false) then break end end if(recipe) then recipe:create(cid) else doPlayerSendCancel(cid, "This is not a valid recipe.") end return true end E por fim em actions.xml, adicione a seguinte linha: <action itemid="4846" event="script" value="iron_hammer.lua"/> OPCIONAL - TALKACTION A talkaction abaixo mostra ao jogadoras receitas configuradas no servidor que ele pode fazer. Em data/talkactions/scripts, crie um arquivo chamado recipes.lua e adicione o conteúdo abaixo: function onSay(cid, words, param, channel) local ret = {} local msg = " ADVANCED FORGE SYSTEM\n" for _, recipe in ipairs(Recipes) do local skills = true for skillid, value in pairs(recipe.skills) do if getPlayerSkillLevel(cid, skillid) < value then skills = false break end end if skills == true then if getPlayerLevel(cid) >= recipe.level and getPlayerMagLevel(cid) >= recipe.maglevel then table.insert(ret, {recipe, true}) else table.insert(ret, {recipe, false}) end else table.insert(ret, {recipe, false}) end end for _, recipe in ipairs(ret) do msg = msg .."\nRecipe for ".. getItemNameById(recipe[1].itemtype) ..":\n\n" if recipe[2] == true then for _, item in ipairs(recipe[1].items) do msg = msg .."* ".. getItemNameById(item[1]) .." [".. math.min(item[2], math.max(0, getPlayerItemCount(cid, item[1]))) .."/".. item[2] .."]\n" end else msg = msg .."[LOCKED]\n" end end doShowTextDialog(cid, 2555, msg) return true end Em data/talkactions/talkactions.xml, adicione a linha: <talkaction words="/recipes" event="script" value="recipes.lua"/> Siga as instruções para configuração de novas receitas. Em breve vídeo de funcionamento Advanced Forge System.rar
  2. Olá Camaradagem do XTibia. Venho disponibilizar um sistema muito útil para servidores fiéis ao Tibia(CipSoft). Ele consiste em não atacar membros da party, ótimo para quest, pvp e hunt's. Não posso afirmar se funcionará em todos os servidores, testado somente em 10.1. config.lua noDamageToPartyMembers = true data/creaturescripts/creaturescripts.xml <event type="combat" name="partyAndGuildProtection" event="script" value="partyAndGuildProtection.lua"/> data/creaturescripts/scripts/partyAndGuildProtection.lua function onCombat(cid, target) if(isInParty(target)) then if(getConfigValue("noDamageToPartyMembers")) then if(isInParty(cid)) then return false end end end return true end data/creaturescripts/scripts/login.lua registerCreatureEvent(cid, "partyAndGuildProtection") Créditos ao Global 10.1 por conter partyAndGuildProtection.lua, porém contia bugs e não atacava nem player. Créditos a mim por fixar esse problema e disponibilizar. partyAndGuildProtection.lua bugado do servidor.
  3. Hail Xtibianos. Eu criei esse sistema, não lembro se foi a pedido de um membro ou não, para que seja interessante sempre matar o toplvl do otserver devido ao premio recebido por isso. Em config.lua adicione: huntedTopLevel = 100 -- "false" inibe o sistema; numero é o level minimo necessario para dar hunted ao toplvl.priceForEachLevelTohuntedTopLevel = 100 -- preço pago por cada lvl do toplvl ao mata-lo. Em creaturescripts.xml adicione: <event type="death" name="toplvl" script="toplvl.lua"/> Em creaturescripts/scripts/config.lua adicione: registerCreatureEvent(cid, "toplvl") Na mesma pasta, crie um arquivo lua com o nome toplvl e adicione: function onDeath(cid, corpse, deathList)local top,price = getConfigInfo("huntedTopLevel"),getConfigInfo("priceForEachLevelTohuntedTopLevel") if(isPlayer(cid))then -- hunted top level local _,level = getTopLevel() if(tonumber(level) and top and tonumber(level) >= top and tonumber(level) <= getPlayerLevel(cid))then for _,player in pairs(deathList) do if(isPlayer(player))then doPlayerAddMoney(player, getPlayerLevel(cid)*price) end end end end return trueend Agora abra o arquivo lib/050-functions.lua e adicione: function getTopLevel() --[[( Marcryzius )]]--local target,name,level = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` <= 2 ORDER BY 'level' DESC;"),"",0 if(target:getID() ~= -1) then repeat local glevel = target:getDataInt("level") if(level < glevel)then name,level = target:getDataString("name"), glevel end until not(target:next()) end target:free() return name,levelend No config.lua tu coloca o valor minimo requerido do toplvl para poder ser caçado. Duvidas, erros e qualquer outra coisa, deixe nos comentários.
  4. Este é o conhecido Zombie Event, varios sites fazem comercio dele então resolvi postar o link onde você pode encontrar este sistema completo e atualizado. Creio que a maioria saiba o que acontece neste evento, mas vou resumir: Em uma determinada hora, abrirá um teleport no lugar que o evento foi configurado, onde os jogadores entrarão e irão até uma arena. Assim que o Evento começar os jogadores não podem ser tocados pelos zombies, quem for tocado está eliminado do evento, o último que resistir o ataque dos zombies será premiado automaticamente. O mapa é editado e o evento está 100% livre de bug's. Segue abaixo imagem do mapa que contém dentro da pasta para download. Download: http://www.4shared.com/rar/UlpGM-z4/ZOMBIE_EVENT_FL-SERVERScom.html Scan: https://www.virustotal.com/file/5cc28970f1d40cc287c970734f00c466a902eeff32b3b0c9de2a809b6880cd08/analysis/1359700874/ Créditos: Autor do Event e FL-SERVERS PELA CUSTOMIZAÇÃO, EDIÇÃO, VERIFICAÇÃO E DOWNLAOD!
  5. Já que tô de bobeira nessa madrugada, não custa nada refazer uns sistemas né. O sistema consiste em não permitir o uso do Magebomb ou fazer (o famoso) MC. antimagemc.lua (data/creaturescripts/scripts) Creaturescripts.xml (data/creaturescripts) <event type="login" name=antimagemc" event="script" value="antimagemc.lua"/> PS: Tirei os acentos do script para evitar futuros bugs. PS²: Eu tirei o script de um fórum gringo e reformulei. Créditos: Gringo desconhecido.
  6. Hail Xtibianos. Eu criei esse sistema para impedir que mages usem magias sem estarem usando o livro. Cada livro libera uma certa quantidade de magias, logo, os mages terão que ter o livro para usarem determinadas magias mesmo eles tendo o level requerido por ela. Tu irás a precisar usar essa livraria para poder usar esse sistema: Em movements.xml adicione: Em movements/scripts crie um arquivo lua chamado spellbooks e adicione: Aconselho substituir o código do spellbook em actions por esse: Em actions.xml verifique se existe todos essas tags, caso não, adicione: Em actions/scripts/other/spellbooks.lua apague o seu conteúdo e adicione este: Mais realidade para o verdadeiro tibia. Qualquer duvida, erro e etc, deixe nos comentários.
  7. Esse sistema eu criei a muito tempo para quando um player compra pots e runas no npc, ele entregue uma bolsa mais adequada para cada tipo de pot e runa comprada nele. Abra o arquivo npc/libs/modulos.lua Procure pela função: Dentro dessa função, procure pela variável chamada backpack ou backpackid (não lembro como estava escrito exatamente, pois faz muito tempo que modifiquei) e apague ela. No lugar onde ela estava, adicione isso: Salve e pode fechar o arquivo. Agora abra o arquivo data/libs/050-functions.lua Adicione essa função nele: Salve e pode fechar o arquivo. Agora toda vez que alguém for comprar algum item listado na tabela bp, ele receberá (caso ele queira compra em bps) uma backpack correspondente ao item que ele comprou. Essa inserção desse sistema foi feito para a versão tfs 0.3.6 - 8.54; não sei se funciona em outras versões.
  8. Olá galerinha do xtibia venho postar algo (depois de uns 4 anos sem postar nada) que fiz meramente por alguém ter me desafiado e, como o resultado ficou legal, vou mostrar um pouco para vocês. A ideia do sistema era promover ferramentas necessárias para uma criação fácil de spells e fazer com que elas possam colidir entre si: Exemplo, configurei ela para fazer uma kamehameha(com umas sprs diferentes também), e é assim que ela ficou: Exemplo Magia Dependendo de quem ganha a disputa existem 2 opções: Exemplo chat1 Exemplo chat2 Achei que o resultado ficou interessante, caso vocês queiram alguma informação me adicionem no skype que eu posso tirar duvidas a respeito do sistema, embora eu adiante que não vou disponibilizar por hora o sistema.
  9. Obrigatoriamente leia tudo! Opa galera mais uma vez eu trazendo o melhor para todos. Hoje vou postar o sistema de Guild de Points que eu utilizo em meu OTserver, acredito que dificilmente será encontrado por ae um tão completo e sem bugs igual o que será postado logo abaixo, é um sistema completo que é utilizado pelo líder da guild executando um comando que, se tiver de acordo com as regras que seram feitas por você, todos os membros da guild iram receber os pontos uma unica vez, lembrando que quando os pontos são adicionados a um player ele não receberá entrando em outra guild e não receberá criando outro personagem na conta, resumindo ele só receberá uma unica vez na conta e com um player só. E um dos detalhes que me causava dor de cabeça era que quando um líder executava o comando, quem estava online recebia os pontos, mais quem estava offline não recebia, isso acontecia normalmente porque tem guilds que contém 50, 70, 100 players, portanto nem sempre todos estavam online. O comando só pode ser executado uma vez por dia cada guild, para não gerar processamentos desnecessários e assim um mal funcionamento do servidor. Cada administrador pode configurar seu sistema da forma que quiser, por ser um sistema muito simples, você pode bota que todos os players estejam no minimo level x, que a guild só possa executar o comando quando estiver quantidade x de players online, isso é bom porque traz um certa dificuldade para fraudes de pontos, e o sistema só vira bagunça dependendo do que você vai oferecer no seu shop guild, eu particularmente só utilizei esse comando porque muitas guilds grandes pediam pontos, eles me cobravam uma quantidade x de pontos e eu cobrava uma quantidade x de player então pra automatizar o processo e não ter dor de cabeça foi feito todo esse sistema. Se você analisar bem vai ver que tudo isso só gera mais crescimento ao seu servidor. Bom, vamos ao sistema: Em talkactions.xml, adicione a tag abaixo: <talkaction words="!guildpoints" event="script" value="guildpoints.lua"/> Na pasta talkactions/scripts faça um .lua com o nome guildpoints e dentro dele adicione os coder abaixo: GuildPointsConfigs = { ExecuteIntervalHours = 24, NeedPlayersOnline = 10, NeedDiferentIps = 6, MinLevel = 80, AddPointsForAcc = 9 } function getGuildPlayersValidAccIDS(GuildID, MinLevel) local RanksIDS = {} local AccsID = {} local ValidAccsID = {} Query1 = db.getResult("SELECT `id` FROM `guild_ranks` WHERE guild_id = '".. GuildID .."'") if(Query1:getID() == -1) then return ValidAccsID end for i = 1, Query1:getRows() do table.insert(RanksIDS, Query1:getDataInt("id")) Query1:next() end Query2 = db.getResult("SELECT `account_id` FROM `players` WHERE `rank_id` IN (".. table.concat(RanksIDS, ', ') ..") AND `level` >= ".. MinLevel .."") if(Query2:getID() == -1) then return ValidAccsID end for i = 1, Query2:getRows() do local AccID = Query2:getDataInt("account_id") if #AccsID > 0 then for k = 1, #AccsID do if AccID == AccsID[k] then AddAccList = false break end AddAccList = true end if AddAccList then table.insert(AccsID, AccID) end else table.insert(AccsID, AccID) end Query2:next() end Query3 = db.getResult("SELECT `id` FROM `accounts` WHERE `guild_points_stats` = 0 AND `id` IN (".. table.concat(AccsID, ', ') ..")") if(Query3:getID() == -1) then return ValidAccsID end for i = 1, Query3:getRows() do local AccID = Query3:getDataInt("id") if #ValidAccsID > 0 then for k = 1, #ValidAccsID do if AccID == ValidAccsID[k] then AddAccList = false break end AddAccList = true end if AddAccList then table.insert(ValidAccsID, AccID) end else table.insert(ValidAccsID, AccID) end Query3:next() end return ValidAccsID end function onSay(cid, words, param, channel) if(getPlayerGuildLevel(cid) == 3) then local GuildID = getPlayerGuildId(cid) Query = db.getResult("SELECT `last_execute_points` FROM `guilds` WHERE id = '".. GuildID .."'") if(Query:getID() == -1) then return true end if Query:getDataInt("last_execute_points") < os.time() then local GuildMembers = {} local GuildMembersOnline = {} local PlayersOnline = getPlayersOnline() for i, pid in ipairs(PlayersOnline) do if getPlayerGuildId(pid) == GuildID then if getPlayerLevel(pid) >= GuildPointsConfigs.MinLevel then table.insert(GuildMembersOnline, pid) end end end if #GuildMembersOnline >= GuildPointsConfigs.NeedPlayersOnline then local IPS = {} for i, pid in ipairs(GuildMembersOnline) do local PlayerIP = getPlayerIp(pid) if #IPS > 0 then for k = 1, #IPS do if PlayerIP == IPS[k] then AddIPList = false break end AddIPList = true end if AddIPList then table.insert(IPS, PlayerIP) end else table.insert(IPS, PlayerIP) end end if #IPS >= GuildPointsConfigs.NeedDiferentIps then local ValidAccounts = getGuildPlayersValidAccIDS(GuildID, GuildPointsConfigs.MinLevel) db.executeQuery("UPDATE `guilds` SET `last_execute_points` = ".. os.time() +(GuildPointsConfigs.ExecuteIntervalHours * 3600) .." WHERE `guilds`.`id` = ".. GuildID ..";") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "".. #ValidAccounts .." Players received points") if #ValidAccounts > 0 then db.executeQuery("UPDATE `accounts` SET `guild_points` = `guild_points` + " ..GuildPointsConfigs.AddPointsForAcc .. ", `guild_points_stats` = ".. os.time() .." WHERE `id` IN (" .. table.concat(ValidAccounts, ',') ..");") for i, pid in ipairs(GuildMembersOnline) do local PlayerMSGAccID = getPlayerAccountId(pid) for k = 1, #ValidAccounts do if PlayerMSGAccID == ValidAccounts[k] then doPlayerSendTextMessage(pid, MESSAGE_INFO_DESCR, "You received "..GuildPointsConfigs.AddPointsForAcc .." guild points.") break end end end end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only ".. #IPS .." players are valid, you need ".. GuildPointsConfigs.NeedDiferentIps .." players with different ips.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Has only ".. #GuildMembersOnline .." players online you need ".. GuildPointsConfigs.NeedPlayersOnline .." players online at least from level ".. GuildPointsConfigs.MinLevel ..".") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "The command can only be run once every "..GuildPointsConfigs.ExecuteIntervalHours .." hours.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only guild leader can request points.") end return true end No coder acima bem no inicio tem as linhas seguintes para configurar: ExecuteIntervalHours = 24, ( Intervalo para execução do comando, ae está de 24 em 24hrs) NeedPlayersOnline = 10, (Quantos players é preciso está online para poder executar o comando.) NeedDiferentIps = 6, (Quantos IPS diferentes são necessários para executar o comando no exemplo ae tem 6.) MinLevel = 80, (Aqui adicione o level minimo, é necessário que todos os player da guild tenha o level pedido para o lider executar o comando.) AddPointsForAcc = 9, (Aqui é a quantidade de pontos para adicionar em cada player da guild.) Certo, a parte do servidor é esta, ta feita, vamos adicionar a database o coder a seguir: ALTER TABLE `accounts` ADD `guild_points` INTEGER(11) NOT NULL DEFAULT 0; ALTER TABLE `accounts` ADD `guild_points_stats` INT NOT NULL DEFAULT '0'; ALTER TABLE `guilds` ADD `last_execute_points` INT NOT NULL DEFAULT '0'; CREATE TABLE `z_shopguild_offer` ( `id` int(11) NOT NULL auto_increment, `points` int(11) NOT NULL default '0', `itemid1` int(11) NOT NULL default '0', `count1` int(11) NOT NULL default '0', `itemid2` int(11) NOT NULL default '0', `count2` int(11) NOT NULL default '0', `offer_type` varchar(255) default NULL, `offer_description` text NOT NULL, `offer_name` varchar(255) NOT NULL, `pid` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`)) CREATE TABLE `z_shopguild_history_item` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `offer_id` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) CREATE TABLE `z_shopguild_history_pacc` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `pacc_days` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) Olha estamos quase finalizando tudo, só precisamos terminar a parte de web. O meu GuildShop eu copiei meu shopsystem.php e fiz umas modificações, simples você pode fazer o mesmo é menos trabalhoso. Copie o shopsystem.php renomeie para shopguild.php, após abra-o e modifique como manda a seguir: shop_system para shopguild_system premium_points para guild_points premium points para guild points z_shop_offer para z_shopguild_offer shopsystem para shopguild z_shop_history_pacc para z_shopguild_history_pacc z_shop_history_item para z_shopguild_history_item Ou utilize este já pronto: shopguild.php O shopguildadmin.php esté no link abaixo, basta fazer o mesmo procedimento: shopguildadmin.php Em index.php add: case "shopguild"; $topic = "Shop Guild"; $subtopic = "shopguild"; include("shopguild.php"); break; case "shopguildadmin"; $topic = "ShopGuild Admin"; $subtopic = "shopguildadmin"; include("shopguildadmin.php"); break; Vá em config.php adicione: $config['site']['shopguild_system'] = 1; $config['site']['access_adminguild_panel'] = 9; Vá em layouts.php adicione abaixo de buypoints: <a href='?subtopic=shopguild'> <div id='submenu_shopguild' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)'onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_shopguild' class='ActiveSubmenuItemIcon'style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Shop Guild</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> Em layouts.php add depois do shopadmin: if($group_id_of_acc_logged >= $config['site']['access_adminguild_panel']) echo "<a href='?subtopic=shopadmin'> <div id='submenu_shopguildadmin' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)'onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_shopguildadmin' class='ActiveSubmenuItemIcon'style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color=red>! ShopGuild Admin !</font></div> <div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> </div> </a>"; Finalmente terminamos! Bom todo esse processo é feito só para facilitar tudo pra você e o player e pra diferenciar o Shop System do Shop Guild, porque um sustenta as despesas do server e o outro atrai player, porque pra ter player é preciso ter player. Galera acredito que não esteja faltando nada, espero que gostem e tudo que eu poder fazer para nossas melhoras estarei postando, me desculpem meu erros de português mais o que importa aqui é o script está correto, abraços! Créditos: Natanael Beckman LukeSkywalker (Raphael Luiz) .lua 100% Não proíbo ninguém de copia o tópico só peço que onde você adicione inclua os créditos mencionados.
  10. O Que é organização? R: São meio que umas profissões, diferente do Px*Censurado, e totalmente inovadora. É Como se fosse uma GUILD. Qual o objetivo da organização? R: Deixar o servidor mais RPG | Com Mais entretenimentos | Coisa inovadora | Todas são diferentes? R: Sim, cada organização, tem seu proposito, e seu modo de agir, e sua função no jogo... O Que são HEADQUARTES? R: São meio que uma base, um local próprio, de cada organização, onde apenas membros da organização pode entrar. Como encaixar no servidor? R: Primeiramente, deve criar uma aba no site tipo as guilds... Porém só os ADM'S podiam criar novas organizações... Qual as funções para o Líder na aba Organizações no site?: R: Convidar membro | Expulsar Membro | Promover Membro | Editar Regras | Noticias | Black List O Que é Black List? R: É Uma lista negra, de jogadores que abusaram do comando, ou de alguma regra... Somente lideres, pode botar jogadores na Black. Qual as funções para o Líder no jogo? Supervisionar membros | Pagar salários (OPCIONAL) | Recrutar Membros | Promover Membros Qual os cargos, existentes para as Organizações: Aconselho, deixar 5 cargos... Cada cargo, tem uma função diferente. Cargos: 1: Novato | 2: Membro Fiel | 3: Experiente | 4: Sub Lidere | 5: Líder Diferenças de Cargos : Quando um lider, promove alguem lá no site, ele já pode fazer tal coisa... Que no manual, de cada organização vai explicar... Como um membro entra em uma ORG? Fácil... Basta falar com um SUB-Líder | Ou Líder, e pedir teste... Como funciona o teste?: Primeiramente, o player deve tá dentro dos requisitos de level, estabelecido pelo Líder no manual, se caso estiver ele pode fazer o teste... O lider, vai pedir que ele, leia o manual, e diga 5 ou mais regras das organizações... e alguns comandos... caso, ele acerte, o Líder ou Sub pode convidar ele pra organização. ------------------------------------------ Exemplos de organizações aqui: https://otpokemon.com/forum/index.php?/topic/5649-organização-equipe-rocket/ https://otpokemon.com/forum/index.php?/topic/5648-organização-designer-de-interior/ https://otpokemon.com/forum/index.php?/topic/5651-organização-reportéres/ Claro, que não vai ter só isso, varia da criatividade de vocês, mas dei um exemplo... Isso pode adicionar em servidores : Derivados ou Tibia mesmo...
  11. Ola Xtibia Venho Mostrar Meu Sistema de /ir Qui Fis Vamos la Ta Vano seu ot Data/talkactions/Scripts Crie Um Bloco De Notas Com o Nome de Teleporte Cole Isso Dentro Depois Adicione Essa Tag No Arquivo Xml Depois Esso Falar /ir Nome do Local E Pronto !!!
  12. Bom, creio que o script seja um pouco complexo (ou não) O player utiliza o firebug na fornalha Nisto ela acende, então ele da use na "sanfona" da fornalha e aparece o magic effect de vapor em cima da bigorna, então o item esta pronto para a forja Nos 100 iron ires necessários pra forjar o Huge of Crude iron (matéria prima para forja) Utiliza-se então a "sanfona" novamente para aquecer o item sob a bigorna e é utilizado o 'Foge Hammer' Conforme é utilizado o Forge Hammer aquece, então é necessário dar user nele e depois no barril para resfriá-lo e assim utilizar novamente (Quando os itens são recém forjados, eles ainda estão quentes, então pode-se reforjá-los dando user na "sanfona" para "derretê-los" e voltarem a ser matéria pria) O Foge Hammer tem a mesma Sprite que o War Hammer, porém seu id tanto 'frio' quanto 'quente' são diferentes do War Hammer e do War Hammer Enchanted E por final os itens que podem ser forjados aleatoriamente Desde já agradeço
  13. Bom galera, se alguém puder me ajudar, agradeço ! É o seguinte, adicionei uma ball com o mesmo script do outro catch.lua, só que com uma nova tabela idêntica a tradicional em configuration.lua facilitando o catch de certos pokémons, porém, foi muito trabalhoso. Queria saber se tem como fazer com que uma ball capture pokémons de certas raças de outro método, sem ser esse que citei acima pois estou meio sem tempo. Caso ajude, REP+
  14. Gostaria de um sistema de mining, os que eu achei não eram como eu gostaria, tipo, preciso que seja assim: 1. Ao usar a pick, ele retorne numa skill normal ao invés de storages, skill_id 7 por exemplo, e retorne em tries igual skill de combate normal 2. Haverá diferença entre pick e dwarven pickaxe, se for com a pick tem suas porcentagens, mas se for com a pickaxe tem 10% a mais do que a pick 3. A cada número X de level aumenta a % de conseguir algo 4. Cada item que pode ser pego terá uma % diferente uma da outra, baseando-se nas skills (EX: small stone com skill 3 = 2%, com skill 20 = 6% e se for gold com skill 3 = 0.2%, com skill 20 = 1%) 4.1. Serão de 3 a 4 itens diferentes (ainda não decididos) 5. Tem que ter grounds e stone definidos para poder mineirar 6. Ao mineirar na pedra, cada batida na pedra tem uma % alta de a pedra se desfazer caso seja a pedra pequena, se for a grande ela decay pra outra e da outra ela vira a pequena, que então se desfaz, e demora de 2h~5h pra pedra voltar 7. Ao mineirar no chão, a chance de o chão 'secar' e ao secar ele decay para outro, e leva também de 2h~5h pra voltar ao normal 8. Qualquer um pode mineirar, mas se for premium tem mais 8% de chances de conseguir o item 9. E por último, se for vocation > 3 ganha mais 3% de chances, tem que ser vocation e não promotion
  15. [PVP-System] Changer 1.0 Versão testada: 8.60 e 9.60 Distro utilizado: TFS 0.4 e TFS 0.2 Comandos: /pvp guild, on/off e /pvp level, 300 Saudações marmanjada, firmeza na tereza? Vim apresentar hoje á vocês um sistema criado por mim, uma ideia bem legal, que seria o jogador escolher quem ele pode atacar, isso por guild e/ou level. Uma solução muito prática para quem não quer atacar amigos ou newbies na war Vá em (data/talkactions/scripts), crie um arquivo cujo nome seja pvpSys.lua e adicione dentro: --[[ PVP-System Changer 1.0, criado por Roksas! Acesse já XTIBIA.COM ]]-- function onSay(cid, words, param) local s = string.explode(param, ",") if not s[1] then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Acesso negado. É necessário que informe o tipo de PVP.") and true end --//--// if s[1] == "guild" then if not s[2] then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Acesso negado. Favor informar os parâmetros {on} ou {off}.") and true end if (getPlayerGuildId(cid) < 1) or (not getPlayerGuildId(cid)) then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Acesso negado. Você não pode utilizar este comando, pois não percente á nenhuma guild.") and true end if s[2] == "on" then if getPlayerStorageValue(cid, 21400) >= 1 then return doPlayerSendCancel(cid, "[PVP-System] Acesso negado. Já está ativado o seu Guild PVP.") and true end setPlayerStorageValue(cid, 21400, 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Você ativou o Guild PVP, agora não pode atacar players da sua guild.") elseif s[2] == "off" then if getPlayerStorageValue(cid, 21400) < 1 then return doPlayerSendCancel(cid, "[PVP-System] Acesso negado. Já está desativado o seu Guild PVP.") and true end setPlayerStorageValue(cid, 21400, -1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Você desativou o Guild PVP, pode atacar os players de sua guild.") return true end return true end --//--// if s[1] == "level" then if not s[2] then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Acesso negado. Favor informar o level mínimo para atacar.") and true end if tonumber(s[2]) > getPlayerLevel(cid) then return doPlayerSendCancel(cid, "[PVP-System] Acesso negado. Você não pode determinar leveis maiores que o seu.") and true end if getPlayerStorageValue(cid, 21401) == tonumber(s[2]) then return doPlayerSendCancel(cid, "[PVP-System] Acesso negado. Este level já foi determinado antes.") and true end setPlayerStorageValue(cid, 21401, tonumber(s[2])) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Acesso negado. Você determinou o level mínimo para atacar ["..s[2].."].") return true end --//--// return true end No arquivo talkactions.xml da pasta (data/talkactions), você deve adicionar a seguinte tag: <talkaction words="/pvp" event="script" value="pvpSys.lua"/> Muito bem, esta parte foi a instalação do comando utilizado, agora iremos adicionar ao nosso servidor a parte de hits e target. Em (creaturescripts/scripts), devemos criar um arquivo com o mesmo nome, no caso, pvpSys.lua e nele, adicionar isto dentro: function onTarget(cid, target) --//--// if getPlayerStorageValue(cid, 21400) >= 1 then if getPlayerGuildId(cid) == getPlayerGuildId(target) then return doPlayerSendCancel(cid, "[PVP-System] Você não pode atacar jogadores da mesma guild com este PVP ativado.") and false end return false end --//--// if getPlayerStorageValue(cid, 21401) >= getPlayerLevel(target) then return doPlayerSendCancel(cid, "[PVP-System] Acesso negado. Não é possível atacar jogadores com level menor que ["..getPlayerStorageValue(cid, 21401).."].") and false end return true end --//--// function onStatsChange(cid, attacker, type, combat, value) --//--// if type == STATSCHANGE_HEALTHLOSS then if getPlayerStorageValue(attacker, 21400) >= 1 then if getPlayerGuildId(attacker) == getPlayerGuildId(cid) then return false end return false end --//--// if getPlayerStorageValue(attacker, 21401) >= getPlayerLevel(cid) then return false end end return true end --//--// Na mesma pasta, podemos encontrar o arquivo login.lua, no qual adicionamos estas linhas: registerCreatureEvent(cid, "pvpAtt") registerCreatureEvent(cid, "pvpStats") Voltando uma pasta (data/creaturescripts), abriremos o arquivo creaturescripts.xml com algum editor de texto e dentro coloquemos estas tags: <event type="target" name="pvpAtt" event="script" value="pvpSys.lua"/> <event type="statschange" name="pvpStats" event="script" value="pvpSys.lua"/> É isto aêe galerinha, espero que tenham gostado e que funcione, qualquer dúvida estou aqui para respondê-los haha. #Perfect, #GoodLuck.
  16. Opa, beleza? Faz muito tempo que não entro aqui no xtibia, mas agora vou começar a entrar denovo, e irei disponibilizar um sistema de pagamento automático do MoIP que criei, quando você receber o pagamento, o sistema adiciona os pontos AUTOMATICAMENTE na conta do jogador. A primeira coisa é criar as tabelas do MySQL! Vá no phpmyadmin e rode a query abaixo: CREATE TABLE IF NOT EXISTS `moip_nasp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_transacao` varchar(100) NOT NULL, `valor` int(11) NOT NULL, `status_pagamento` int(11) NOT NULL, `cod_moip` int(11) NOT NULL, `forma_pagamento` int(11) NOT NULL, `tipo_pagamento` varchar(100) NOT NULL, `email_consumidor` varchar(150) NOT NULL, `completed` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ; ALTER TABLE `accounts` ADD `premium_points` INT NOT NULL AFTER `group_id`; Agora, com as tabelas do MySQL criadas, crie um arquivo chamado retorno.php na pasta do seu website com o seguinte conteúdo: (Por questão de segurança, mude o nome do arquivo de Retorno.php para outro, pois se alguma outra pessoa que viu este tutorial, poderá ficar enviando dados pra encomodar) <?PHP $conn = mysql_connect('localhost', 'root', 'xxx'); $db = mysql_select_db('otserv2'); $id_transacao = $_POST['id_transacao']; $valor = $_POST['valor']; $status_pagamento = $_POST['status_pagamento']; $cod_moip = $_POST['cod_moip']; $forma_pagamento = $_POST['forma_pagamento']; $tipo_pagamento = $_POST['tipo_pagamento']; $parcelas = $_POST['parcelas']; $email_consumidor = $_POST['email_consumidor']; if((!$cod_moip) or (!$status_pagamento)) { Header('HTTP/1.1 500 Internal Server Error'); } else { $queryMOIP = mysql_query("SELECT * FROM moip_nasp WHERE cod_moip = '$cod_moip';"); if(mysql_num_rows($queryMOIP) >= 1) { $Update = mysql_query("UPDATE moip_nasp SET `status_pagamento` = '$status_pagamento' WHERE cod_moip = '$cod_moip';"); if(($status_pagamento == 1) or ($status_pagamento == 4)) { $Explode = explode("-", $id_transacao); $points = $valor / 100; $AddPoints = mysql_query("UPDATE accounts SET `premium_points` = '$points' WHERE id = '".$Explode[0]."';"); } } else { $Insert = mysql_query("INSERT INTO `moip_nasp` (`id`, `id_transacao`, `valor`, `status_pagamento`, `cod_moip`, `forma_pagamento`, `tipo_pagamento`, `email_consumidor`) VALUES (NULL, '$id_transacao', '$valor', '$status_pagamento', '$cod_moip', '$forma_pagamento', '$tipo_pagamento', '$email_consumidor');"); } Header('HTTP/1.1 200 OK'); } exit; ?> No MoIP, o status 1 é Autorizado, e o status 4 é Concluído. Ambos os status, querem dizer que o pagamento será creditado em sua conta, então não precisa ficar esperando liberar. Beleza? criou? então vamos configurar o MoIP pra enviar os dados para sua URL, quando o pagamento for atualizado (Ex: Concluido, Autorizado) Crie sua conta no MoIP: Clicando Aqui! Depois de criada, vá para a página Meus Dados -> Preferências -> Notificação das transações E configure a URL de notificação Assim: Configurou? beleza, vamos pra próxima parte. Agora, na página para comprar pontos no seu servidor, adicione este código para enviar os dados para o MoIP! if(!$_POST['send2']) { $content = '<b>MoIP / Boleto / Cartão de Crédito</b><BR> Aqui você encontra tudo que é necessario para fazer sua doação com segurança e facilidade.<BR><BR> <form action="" method="post" name="pag" onSubmit="return checkPag();"> <input type="hidden" name="method" VALUE="3"> Pontos: <input type="text" name="pontos" value="" size="5" maxlength="4"><BR><BR>Lembrando que cada point custa R$ 1,00<BR><BR> <input type="submit" name="send2" value="Prosseguir"> </form><BR><a href="http://www.moip.com.br/" target="_blank"><img src="http://www.moip.com.br/imgs/banner_5_1.jpg" border="0"></a>'; } else { $pontos = $_POST['pontos']; $valor = $pontos * 100; $content = '<b>MoIP / Boleto / Cartão de Crédito</b><BR> Aqui você encontra tudo que é necessario para fazer sua doação com segurança e facilidade.<BR><BR> <form action="https://www.moip.com.br/PagamentoMoIP.do" method="post"> <input type="hidden" name="id_carteira" VALUE="EMAILMOIP"> <input type="hidden" name="nome" VALUE="'.$account_logged->getCustomField("id").' Points - MEUOTSERV"> <input type="hidden" name="id_transacao" VALUE="'.$account_logged->getCustomField("id").'-'.rand(1000, 9999).'"> <input type="hidden" name="valor" VALUE="'.$valor.'"> Pontos: '.$pontos.'<BR><BR>Valor: R$ '.$pontos.',00<BR><BR> Você tem certeza?<BR><BR>Se você não realizar o pagamento, sua conta poderá ser bloqueada.<BR><BR> <input type="submit" name="send" value="Comprar!"> </form><BR><a href="http://www.moip.com.br/" target="_blank"><img src="http://www.moip.com.br/imgs/banner_5_1.jpg" border="0"></a>'; } Você pode ver que o id_transacao irá ficar assim (ex: 2345-3244), os primeiros numeros antes da barra - são o ID da conta, e os últimos são o id da trasação, tente não remover isso, senão vai estragar o script TODO! EMAILMOIP = email da sua conta no MoIP (que irá receber os pagamentos) MEUOTSERV = nome do seu otserv. Então é isso galera, eu uso esse sistema á um bom tempo, e nunca deu algum problema. se tiverem alguma dúvida, perguntem aqui neste tópico. OBS: funciona no ModernAAC também, só é necessário mudar a função de pegar o ID da conta do player logado. Se acharem melhor baixar os arquivos, em vez de copiar e colar, os arquivos estão anexados no tópico. Scan: https://www.virustot...sis/1342728882/ Se gostarem, REP+ :] MoIP_ShareMatrix.zip
  17. Sem bla bla bla, mimimi, nhéco nhéco... to sem tempo para tirar print dos itens no OBJECT BUILD então segue print da pasta e façam bom aproveitos meus amigos... Held Itens.rar Ah... e o scan Held Itens.rar
  18. Demonstração O script consiste em fazer um minigame da Snake (lá do nokia, heheh). Quanto mais a "cobra" pegar os bolos/comida irá acrescentar mais e mais caixas/blocos ao seu "corpo". Instalação: snakesys.lua (data/lib) [EDITE DE ACORDO COM SEU SERVIDOR] Edite essas linhas em sua lib para combinar com o mapa: itemid=1860, freeglobalstorage=28103, -- se nao souber mexer, nao mexa itemFood=6394, controlpos= {x = 28, y = 198, z = 6}, -- posiçao onde o player vai ficar exitpos = {x = 36, y = 190, z = 7}, -- posiçao que o player vai sair centerpos= {x = 27, y = 197, z = 7}, -- posiçao central wallID = 1486, -- id da parede ao redor da arena interval = 300, -- velocidade no qual a cobra ira se mover Quatro pisos ao redor da posição de controle: local generated = { {x = 28, y = 197, z = 6}, {x = 29, y = 198, z = 6}, {x = 28, y = 199, z = 6}, {x = 27, y = 198, z = 6} } Primeiro piso: Segundo piso: actions.xml (data/actions) <action actionid="200" script="snake.lua"/> snake.lua (data/actions/scripts) function onUse(player, item, fromPosition, itemEx, toPosition) if (Game.getStorageValue(SNAKE.freeglobalstorage)) ~= 1 then player:teleportTo(SNAKE.controlpos) SNAKE.timer(player.uid,1,nil,1000) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Segure o CTRL e use as setas para controlar a cobra.') SNAKE.generateFood() else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Aguarde, por favor.') end end PS: Peguei de um fórum que estava em inglês e traduzi. PS²: É um script antigo porém funcional. Créditos: Mock the bear
  19. #Descrição:Este sistema baseia-se em evitar que a diferença de level dos players do seu servidor seja muito grande, reconhecendo, automaticamente, os players com os maiores levels do servidor e, então, enviando uma mensagem aos players anunciando uma recompensa em Gold Coins, que será fornecida a quem matar o referido Top Level. Após a morte do mesmo, o player que ganhou o frag recebe, instantaneamente, o prêmio correspondente. #O que possui? - Level Active (Script: Você poderá configurar o script para que o mesmo só funcione a partir do momento em que os players atingirem determinado level) - Fórmula do prêmio (Script: Configure a quantidade de dinheiro multiplicada pelo level do player a ser caçado. Ex: 700.LEVELDOPLAYER) - Periodicidade do anúncio (Script: Defina de quanto em quanto tempo a mensagem anunciando o player a ser caçado será exibida em broadcast) - Função Automática (Script: Verifica qual o player de maior level online e define-o como o player a ser caçado) - Tipo do arquivo (Script: Mods não precisa reniciar o servidor para colocar este sistema. Basta dar reload e ele funcionará normalmente) - Facilidade (Script: Só possui 1 arquivo onde serão feitas todas as configurações, sem a necessidade de um outro script) - Entre outras coisas… DOWNLOAD: CLICK AQUI Créditos: ChaitoSoft Jhon Thiagobji
  20. O script consiste em não deixar que players da mesma guild se ataquem (se matem). creaturescripts.xml (data/creaturescripts): <event type="attack" name="attackguild" script="attackguild.lua"/> attackguild.lua (data/creaturescripts/scripts):
  21. Antes de mais nada execute essas querys no seu banco de dados ALTER TABLE `guilds` ADD `frags` INT(11) NOT NULL DEFAULT 0; ALTER TABLE `guilds` ADD `acesstime` INT(15) NOT NULL DEFAULT 0; Não sabe executar a query? abra o spoiler e aprenda! Sistema Por Mod Npc (obs: o NPC funciona caso você use MOD tbm) Configuração
  22. Boa noite xtibianos, tudo bem? Estou aqui para fazer 1 pedido diferenciado. Gostaria de 1 sistema de resete modificado, onde o jogador level 120, vai á tal npc fala hi resete , e volta para level 8 com mana e life e um char level 8 da sua classe, e com skill e magic level zerados, porém o jogador receberá em troca prêmios que vai direto para seu depot, 2 prêmios com id 2160 "1 quantia" e 1257. Observações: Para resetar deve ter level 120 e pagar 10k ao npc.
  23. Primeiramente, Boa Noite, Bom dia ou Boa Tarde! não sei o horario que você esta lendo esse poste. Faz um bom tempo que eu venho procurando um sistema de montaria para servidor de tibia 8.6, mais eu vi que no servidor 8.6 não sistema de montaria, dai eu comecei a da uma pesquisada no youtube e vim um servidor com um sistema bem elaborado em montaria, gostaria de saber se alguém que tenha essa sistema ou que saiba fazer me passe? gostaria muito desse ter esse sistema em meu servidor, aqui esta o link do sistema. https://www.youtube.com/watch?v=hR0ZdWAAeQ4
×
×
  • Criar Novo...