Postado Abril 2, 2013 12 anos Este é um post popular. Fala galerinha do TK, irei postar para vocês um sistema que ajuda e muito servidores que estão começando. O SHOP GUILD facilita o acesso dos players a itens que muitas vezes só têm no SHOP ONLINE do site. Uma coisa muito importante que tenho a dizer a vocês é que esse sistema, é um pouco diferenciado, pois o lider da guild não precisará que todos os players estejam online, basta apenas ele estar online para executar o comando !guildpoints , que todos os membros da guild receberão os pontos. Não tenho muito o que explicar, a maioria de vocês já conhece esse sistema, só não achou um que funcione 100%, e eu vim aqui trazê-lo para vocês. Deixando a apresentação de lado, vamos direto a ponto: Em talkactions.xml, adicione a tag abaixo: <talkaction words="!guildpoints" event="script" value="guildpoints.lua"/> Na pasta talkactions/scripts cria um arquivo guildpoints.lua e adicione o seguinte script: 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) thenreturn ValidAccsIDendfor i = 1, Query1:getRows() dotable.insert(RanksIDS, Query1:getDataInt("id"))Query1:next()endQuery2 = db.getResult("SELECT `account_id` FROM `players` WHERE `rank_id` IN (".. table.concat(RanksIDS, ', ') ..") AND `level` >= ".. MinLevel .."")if(Query2:getID() == -1) thenreturn ValidAccsIDendfor i = 1, Query2:getRows() dolocal AccID = Query2:getDataInt("account_id")if #AccsID > 0 thenfor k = 1, #AccsID doif AccID == AccsID[k] thenAddAccList = falsebreakendAddAccList = trueendif AddAccList thentable.insert(AccsID, AccID)endelsetable.insert(AccsID, AccID)endQuery2:next()endQuery3 = db.getResult("SELECT `id` FROM `accounts` WHERE `guild_points_stats` = 0 AND `id` IN (".. table.concat(AccsID, ', ') ..")")if(Query3:getID() == -1) thenreturn ValidAccsIDendfor i = 1, Query3:getRows() dolocal AccID = Query3:getDataInt("id")if #ValidAccsID > 0 thenfor k = 1, #ValidAccsID doif AccID == ValidAccsID[k] thenAddAccList = falsebreakendAddAccList = trueendif AddAccList thentable.insert(ValidAccsID, AccID)endelsetable.insert(ValidAccsID, AccID)endQuery3:next()endreturn ValidAccsIDendfunction onSay(cid, words, param, channel)if(getPlayerGuildLevel(cid) == 3) thenlocal GuildID = getPlayerGuildId(cid)Query = db.getResult("SELECT `last_execute_points` FROM `guilds` WHERE id = '".. GuildID .."'")if(Query:getID() == -1) thenreturn trueendif Query:getDataInt("last_execute_points") < os.time() thenlocal GuildMembers = {}local GuildMembersOnline = {}local PlayersOnline = getPlayersOnline()for i, pid in ipairs(PlayersOnline) doif getPlayerGuildId(pid) == GuildID thenif getPlayerLevel(pid) >= GuildPointsConfigs.MinLevel thentable.insert(GuildMembersOnline, pid)endendendif #GuildMembersOnline >= GuildPointsConfigs.NeedPlayersOnline thenlocal IPS = {}for i, pid in ipairs(GuildMembersOnline) dolocal PlayerIP = getPlayerIp(pid)if #IPS > 0 thenfor k = 1, #IPS doif PlayerIP == IPS[k] thenAddIPList = falsebreakendAddIPList = trueendif AddIPList thentable.insert(IPS, PlayerIP)endelsetable.insert(IPS, PlayerIP)endendif #IPS >= GuildPointsConfigs.NeedDiferentIps thenlocal 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 thendb.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) dolocal PlayerMSGAccID = getPlayerAccountId(pid)for k = 1, #ValidAccounts doif PlayerMSGAccID == ValidAccounts[k] thendoPlayerSendTextMessage(pid, MESSAGE_INFO_DESCR, "You received ".. GuildPointsConfigs.AddPointsForAcc .." guild points.")breakendendendendelsedoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only ".. #IPS .." players are valid, you need ".. GuildPointsConfigs.NeedDiferentIps .." players with different ips.")endelsedoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Has only ".. #GuildMembersOnline .." players online you need ".. GuildPointsConfigs.NeedPlayersOnline .." players online at least from level ".. GuildPointsConfigs.MinLevel ..".")endelsedoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "The command can only be run once every ".. GuildPointsConfigs.ExecuteIntervalHours .." hours.")endelsedoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only guild leader can request points.")endreturn trueend Explicações do script: 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 é q quantidade de pontos para adicionar em cada player da guild.) OBS: Não mecha no restante do script! A parte do servidor já está feita, iremos partir para o site, execute as seguintes querys em seu phpmyadmin: 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`)) Estamos quase terminando o tutorial.Para facilitar, duplique o seu shopsystem.php e renomeie para shopguild.php e faça as seguintes modificações nas linhas a seguir: shop_system para shopguild_system premium_points para guild_pointsz_shop_offer para z_shopguild_offershopsystem para shopguildz_shop_history_pacc para z_shopguild_history_paccz_shop_history_item para z_shopguild_history_item Feito isso, a parte mais trabalhosa já foi feita, iremos agora, adicionar as linhas na pasta do site para que TAG do SHOP GUILD apareça no site: Vá em index.php e adicione: case "shopguild";$topic = "Shop Guild";$subtopic = "shopguild";include("shopguild.php");break; Vá em config.php e adicione: $config['site']['shopguild_system'] = 1; Vá em layouts.php e adicione abaixo de Shopsystem: <a href='?subtopic=shopguild'> <div id='submenu_shopguild' 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_shopguild' class='ActiveSubmenuItemIcon' style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Shop Guild <blink><font size='0'><font color='yellow'>NEW</font></font></blink></div> <div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> </div></a> É isso pessoal, única coisa que falta é você importar a parte dos itens do shopguild e adicionar o comando em seu phpmyadmin. Esse tutorial eu trouxe de outro fórum, então deixarei os devidos créditos dos autores do sistema. Créditos:Natanael BeckmanLukeSkywalker (Raphael Luiz) Editado Abril 2, 2013 12 anos por sear10 (veja o histórico de edições)
Postado Abril 3, 2013 12 anos Amigo como que adiciona os Itens la no Shop ? O.o http://www.serversoft.com.br/painel/aff.php?aff=016
Postado Abril 7, 2013 12 anos Autor você pode ir na tabela shopsystem do seu servidor pelo phpymadmin , acessar a area de privilégios e copiar ela para z_shopguild_offer, ai é só você editar os itens que você quer ou não que fique no Shop Guild.
Postado Abril 9, 2013 12 anos Mano não sei com que tu fez pra adicionar os itens, mais eu nao consigui http://www.serversoft.com.br/painel/aff.php?aff=016
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.