Lukeskywalker 31 Postado Maio 4, 2009 Share Postado Maio 4, 2009 (editado) Bom vamos começa primeiro adicionando as tabelas para indicar se o player é vip ou não, tabela que mostra a quantidade de dias e a tabela de define o tempo da vip. Va em seu MySQL e use este query. ALTER TABLE `accounts` ADD `vip` TINYINT(1) NOT NULL DEFAULT 0, ADD `vip_days` INT(11) NOT NULL DEFAULT 0, ADD `vip_time` INT(11) NOT NULL DEFAULT 0; Agora vamos colocar a talkaction para poder adicionar a vip e verificar quantos dia de vip dos players. Va em "Data/Talkactions/Talkactions.xml" e adicione. <talkaction log="yes" words="/addvip" access="5" event="script" value="vip.lua"/> <talkaction log="yes" words="/checkvip" access="5" event="script" value="vip.lua"/> Agora crie um script chamado vip.lua na pasta "Data/Talkactions/Scripts" e coloque este codigo abaixo. Ou se prefirir ja baixe ele feito Vip_talkaction.rar function onSay(cid, words, param) local Data = string.explode(param, ",") if Data then local Target = db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. db.escapeString(Data[1]) .. ";") if Data then if (Target:getID() ~= -1) then if Data[2] then if (words:sub(2, 2) == "a") then if isNumber(Data[2]) == TRUE then if vipTimeByName(Data[1]) == 0 then db.executeQuery("UPDATE `accounts` SET `vip_time` = 86400 * ".. Data[2] .." + ".. os.time() .." WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) ..";") else db.executeQuery("UPDATE `accounts` SET `vip_time` = `accounts`.`vip_time` + (86400 * ".. Data[2] ..") WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) ..";") end db.executeQuery("UPDATE `accounts` SET `vip` = 1 WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) .." LIMIT 1;") db.executeQuery("UPDATE `accounts` SET `vip_days` = `accounts`.`vip_days` + ".. Data[2] .." WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) ..";") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foi adicionado ".. Data[2] .." dias de vip ao player ".. Data[1] ..".") else doPlayerSendCancel(cid, "Insira apenas numeros.") end else doPlayerSendCancel(cid, "Para verificar uma vip não presisa inserir os dias.") end else if (words:sub(2, 2) == "c") then if vipDaysByName(Data[1]) == 0 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O player ".. Data[1] .." não é vip.") elseif vipDaysByName(Data[1]) == 1 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O player ".. Data[1] .." tem ".. vipDaysByName(Data[1]) .." dia de vip.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O player ".. Data[1] .." tem ".. vipDaysByName(Data[1]) .." dias de vip.") end else doPlayerSendCancel(cid, "Insira a quantidade de dias que vai adicionar de vip ao player.") end end else doPlayerSendCancel(cid, "Este player ".. Data[1] .." não existe.") end end else doPlayerSendCancel(cid, "Insira um nome.") end return TRUE end Agora vamos em "Data/Libs" e vamos adicionar em "Data.lua" na ultima linha. dofile(getDataDir() .. "Lib/Vip_Functions.lua") Agora vamos criar um script chamado "Vip_Functions.lua" na pasta "Data/Libs" e colocar este codigo abaixo. Ou se prefirir ja baixe ele feito Vip_Functions.rar function vipDays(cid) local Query = db.getResult("SELECT `vip_days` FROM `accounts` WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") local vip_days = Query:getDataInt("vip_days") return vip_days end function vipDaysByName(cid) local Query = db.getResult("SELECT `vip_days` FROM `accounts` WHERE `accounts`.`id` = ".. getAccountIdByName(cid) ..";") local vip_days = Query:getDataInt("vip_days") return vip_days end function haveVipDays(cid) local Query = db.getResult("SELECT `vip_days` FROM `accounts` WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") local vip_days = Query:getDataInt("vip_days") return (isPlayer(cid) == TRUE and (vip_days > 0)) and TRUE or FALSE end function haveVipDaysByName(cid) local Query = db.getResult("SELECT `vip_days` FROM `accounts` WHERE `accounts`.`id` = ".. getAccountIdByName(cid) ..";") local vip_days = Query:getDataInt("vip_days") return (isPlayer(cid) == TRUE and (vip_days > 0)) and TRUE or FALSE end function isVip(cid) local Query = db.getResult("SELECT `vip` FROM `accounts` WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") local vip = Query:getDataInt("vip") return (isPlayer(cid) == TRUE and (vip == 1)) and TRUE or FALSE end function haveVipTime(cid) local Query = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") local vip_time = Query:getDataInt("vip_time") return (isPlayer(cid) == TRUE and (vip_time >= 1)) and TRUE or FALSE end function vipTimeByName(cid) local Query = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `accounts`.`id` = ".. getAccountIdByName(cid) ..";") local vip_time = Query:getDataInt("vip_time") return vip_time end function vipTime(cid) local Query = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") local vip_time = Query:getDataInt("vip_time") return vip_time end Agora iremos colocar os creture script que faz a remoção automatica dos dias da vip e teleporta os chars para o temple quando acaba a vip! Vamos em "Data\Creaturescripts" e abriremos o script "Login.lua" e adicione o codigo abaixo. if vipTime(cid) >= 1 then if vipTime(cid) >= os.time() then db.executeQuery("UPDATE `accounts` SET `vip_days` = ".. (vipTime(cid) - os.time()) / 86400 .." WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") else db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") db.executeQuery("UPDATE `accounts` SET `vip_days` = 0 WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") end end if haveVipDays(cid) == FALSE then if isVip(cid) == TRUE then db.executeQuery("UPDATE `players` SET `town_id` = 1, `posx` = X, `posy` = Y, `posz` = Z WHERE `players`.`account_id` = ".. getPlayerAccountId(cid) ..";") db.executeQuery("UPDATE `accounts` SET `vip` = '0' WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") local Position = getTownTemplePosition(1) doTeleportThing(cid, Position) doSendMagicEffect(Position, 10) doPlayerSetTown(cid, 1) end end OBS = Coloque as coordenadas do templo da cidade principal. OBS = Coloque ID da cidade principal. Agora iremos cria uma action que no tile que tiver o actionID 1000 tera que ser player vip para passar por ele. Agora crie um scripts chamado Viptile.lua na pasta scripts function onStepIn(cid, item, position, fromPosition) if isVip(cid) == FALSE then doTeleportThing(cid, fromPosition) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não é um player vip para poder passar por aqui.") end return TRUE end Exemplos de como adicionar vip e remover e verificar se o player é vip. Exemplo de como adicionar uma vip de 10 dias /addvip Luke sky walker, 10 Exemplo de como verificar se o player é vip e quantos dias de vip ele tem ainda. /checkvip Luke sky walker OBS: Este sistema serve tambem para players offline como online pois é direto por SQL. Detalhe eu so fiz testes basicos não usei ele em server que fica online então se acharem algum erro reporte par min. Espero que tenham gostado pois tive um bom trabalho para cria este script e decidi disponibiliza a vocês! Que usam um sistema de vip. Por favor não tirem os creditos deste script! Editado Agosto 17, 2009 por Lukeskywalker Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/ Compartilhar em outros sites More sharing options...
mbnstar 0 Postado Maio 4, 2009 Share Postado Maio 4, 2009 Esse dai ta funcionando? gostei do sistema mais tem que botar isso: ALTER TABLE `accounts` ADD `vip` TINYINT( 1 ) NOT NULL DEFAULT '0'; ALTER TABLE `accounts` ADD `vip_days` INT( 11 ) NOT NULL DEFAULT '0'; ALTER TABLE `accounts` ADD `vip_time` INT( 11 ) NOT NULL DEFAULT '0'; Em que parte do mysql? Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-734148 Compartilhar em outros sites More sharing options...
Lukeskywalker 31 Postado Maio 4, 2009 Autor Share Postado Maio 4, 2009 Esse dai ta funcionando? gostei do sistema mais tem que botar isso: ALTER TABLE `accounts` ADD `vip` TINYINT( 1 ) NOT NULL DEFAULT '0'; ALTER TABLE `accounts` ADD `vip_days` INT( 11 ) NOT NULL DEFAULT '0'; ALTER TABLE `accounts` ADD `vip_time` INT( 11 ) NOT NULL DEFAULT '0'; Em que parte do mysql? Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-734150 Compartilhar em outros sites More sharing options...
mbnstar 0 Postado Maio 4, 2009 Share Postado Maio 4, 2009 (editado) Ataah valeu....Parabéns pelo script ... - Editt.... Adapta um para sqlite, pouca gente usa mysql e muita gente quer um bom sistema vip. Editado Maio 4, 2009 por Jhon Herbert Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-734151 Compartilhar em outros sites More sharing options...
Raw Messiah 0 Postado Maio 4, 2009 Share Postado Maio 4, 2009 Parabéns brow soh vc mesmo pra postar um ótimo script se sabe quanto esperamos por alguem que descidisse postar este script. vlw gm_new@hotmail.com Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-734154 Compartilhar em outros sites More sharing options...
Lukeskywalker 31 Postado Maio 4, 2009 Autor Share Postado Maio 4, 2009 Pessoal eu tinha esqueçido de completar o Script com o "Creaturescripts" agora eu ja atualizei so por o resto que vai funcionar tudo!!! Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-734158 Compartilhar em outros sites More sharing options...
mbnstar 0 Postado Maio 4, 2009 Share Postado Maio 4, 2009 (editado) Era isso que eu estava me pergutando, Obrigado ja estou testando essa belezura ;D.. Editado Maio 4, 2009 por Jhon Herbert Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-734162 Compartilhar em outros sites More sharing options...
fabianobn 0 Postado Maio 4, 2009 Share Postado Maio 4, 2009 LoL Veio agora sim você completou a vida do Server de muitos Abraços ae manow. Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-734192 Compartilhar em outros sites More sharing options...
SirJuninho 0 Postado Maio 6, 2009 Share Postado Maio 6, 2009 Adapta um para sqlite, pouca gente usa mysql e muita gente quer um bom sistema vip. Tá brincando né ?? o cara teve moh trampo pra faze desse jeito e ainda quer que ele adapte pra SQLite ? quem quiser o sistema que dê os seus pulos ou adapte pra sii mesmo @Topic sem palavras, fico 10! parabéns! Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-734994 Compartilhar em outros sites More sharing options...
Lukeskywalker 31 Postado Maio 6, 2009 Autor Share Postado Maio 6, 2009 Tá brincando né ?? o cara teve moh trampo pra faze desse jeito e ainda quer que ele adapte pra SQLite ?quem quiser o sistema que dê os seus pulos ou adapte pra sii mesmo @Topic sem palavras, fico 10! parabéns! Eu nunca usei o SQLite enton num sei como ele funciona =xx se eu soubesse ate faria. Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-735015 Compartilhar em outros sites More sharing options...
Rato_375 1 Postado Maio 6, 2009 Share Postado Maio 6, 2009 (editado) ixi no meu ot ta dando esse erro aqui [06/05/2009 16:59:53] Lua Script Error: [CreatureScript Interface] [06/05/2009 16:59:53] data/creaturescripts/scripts/login.lua [06/05/2009 16:59:53] data/lib/database.lua:39: [Result:getDataInt]: Result not set! [06/05/2009 16:59:53] Warning: [Event::loadScript] Can not load script. data/creaturescripts/scripts/login.lua if vipTime(cid) >= 1 thenif vipTime(cid) >= os.time() then db.executeQuery("UPDATE `accounts` SET `vip_days` = ".. (vipTime(cid) - os.time()) / 86400 .." WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") else db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") db.executeQuery("UPDATE `accounts` SET `vip_days` = 0 WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") end end if haveVipDays(cid) == FALSE then if isVip(cid) == TRUE then db.executeQuery("UPDATE `players` SET `town_id` = 1, `posx` = X, `posy` = Y, `posz` = Z WHERE `players`.`account_id` = ".. getPlayerAccountId(cid) ..";") db.executeQuery("UPDATE `accounts` SET `vip` = '0' WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";") local Position = getTownTemplePosition(1) doTeleportThing(cid, Position) doSendMagicEffect(Position, 10) doPlayerSetTown(cid, 1) end end e por causa desse script q ta dando esse erro o q eu faço? Editado Maio 6, 2009 por Raphael Rato Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-735178 Compartilhar em outros sites More sharing options...
Lukeskywalker 31 Postado Maio 7, 2009 Autor Share Postado Maio 7, 2009 ixi no meu ot ta dando esse erro aqui [06/05/2009 16:59:53] Lua Script Error: [CreatureScript Interface] [06/05/2009 16:59:53] data/creaturescripts/scripts/login.lua [06/05/2009 16:59:53] data/lib/database.lua:39: [Result:getDataInt]: Result not set! [06/05/2009 16:59:53] Warning: [Event::loadScript] Can not load script. data/creaturescripts/scripts/login.lua e por causa desse script q ta dando esse erro o q eu faço? sabe me dizer qual a versão do seu server? Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-735452 Compartilhar em outros sites More sharing options...
ThiagoGimenes 1 Postado Maio 7, 2009 Share Postado Maio 7, 2009 Muito bom, funcionou. Parabens! Abraços... ThiagoGimenes Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-735460 Compartilhar em outros sites More sharing options...
Rato_375 1 Postado Maio 8, 2009 Share Postado Maio 8, 2009 sabe me dizer qual a versão do seu server? entao eh TFS 0.3.1 ot 8.40 se poderia criar para essa versao??? Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-735731 Compartilhar em outros sites More sharing options...
Lukeskywalker 31 Postado Maio 8, 2009 Autor Share Postado Maio 8, 2009 entao eh TFS 0.3.1 ot 8.40 se poderia criar para essa versao??? Eu so testei essa action na TFS 0.3.2 é que estou meiu sem tempo no momento para dar uma olhada na TFS 0.3.1 Link para o comentário https://xtibia.com/forum/topic/112481-action-sistema-vip-por-sql-v20-para-tfs/#findComment-735749 Compartilhar em outros sites More sharing options...
Posts Recomendados