Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Como funciona:

A guild vai acumulando frags que são como pontos toda vez que matar um jogador da outra guild, ao chegar numa certa quantidade de frags, essa guild recebe alguns dias de acesso para áreas exclusivas, dá para fazer algumas door,tiles,etc...

Quando alguma guild domina o server automaticamente a contagem de frags de todas as guilds são zeradas e durante o dominio da guild não pode ser acumulado frags entre as guild

Estarei falando mais sobre o sistema pelas SS.

Obs:

Se alguém tiver alguma sugestão de idéia para implementar o sistema, por exemplo magias especiais, outfits só postar no tópico que estaremos discutindo sobre o código

Nota do Autor:

Poderei estar implementando o sistema ou modificando algumas partes para remover linhas desnecessárias ou adicionando algumas outras funções, então fique atento.

Update 14/04/12

Adicionado Honor Points + NPC que vende items por Honor Points(pelo trade)

Honor points é dado aos players da guild que dominarem o server, todos os players da guild receberam uma quantidade "X" de honor points mesmo se ele tiver offline.

SS's

DwYiP.png

- Quando o jogador de uma guild matar outro player de uma outra guild, todos da guild desse jogador que matou recebem uma mensagem.

2KHY4.png

- talk confere se já tem alguma guild dominante no server, nessa screen nenhuma guild ainda é dominante

se tiver guild dominante irá dizer o nick é que dia acaba o domínio.

mD3p1.png

- Mostrando o rank de frags das guilds do server

lKEeD.png

Uma mensagem em broadcast quando alguma guild atinge "X" Frags

kAbhB.png

Depois que acaba o domínio da guild, todos os jogadores da guild que perdeu o domínio são teleportados de volta para o templo.

jsx4D.jpg

Npc que troca os pontos de honra por items

he3Rt.png

comando !myhonor que explica como funciona e quantos pontos de honra vc tem

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;

Sistema

Configuração

Para configurar é simples, basta ir na lib e achar está tabela:

frag_guild = {

start_frags = 120155, -- não mexa

FragsToWinAcess = 100, -- qntos a guild tem q matar para ganhar o dominio

FragsPerKill = 1, -- qnto de frag ele ganha ao matar jogador da outra guild

AcessTimeDays = 2, -- qntos dias de acesso ele irá receber

MoreExpToGuild = false, -- se os jogadores receberam bonus de xp

Exp_Rate = 1.1, -- 10%

Honor_Storage = 215548, -- n edite

Honor_Point = 5 -- qntos de honor point players irao ganhar ao dominar

}

e só irá ganhar frag o jogador da guild que:

Matar outro com IP diferente (para não ter abuso)

Matar jogador de uma guild diferente( n ter bug se player da msm guild se matar)

Matar jogador com level de diferença até 50 (configurável)

Lib/function
FragGuildSystem.lua
frag_guild = {

start_frags = 120155, -- dont edit

FragsToWinAcess = 100, -- to win guild acess

FragsPerKill = 1,

AcessTimeDays = 2,

MoreExpToGuild = true,

Exp_Rate = 1.1, -- 10%

Honor_Storage = 215548,

Honor_Point = 5

}



function getFragsByGuild(GuildName)

local check = db.getResult("SELECT `frags` FROM `guilds` WHERE `id` = " ..getGuildId(GuildName))

return check:getDataInt("frags") <= 0 and 0 or check:getDataInt("frags") end

function addFragsByGuild(GuildName,amount)

db.executeQuery("UPDATE `guilds` SET `frags` = "..getFragsByGuild(GuildName).."+"..amount.." WHERE `guilds`.`id` = "..getGuildId(GuildName)) end

function removeFragsByGuild(GuildName,amount)

db.executeQuery("UPDATE `guilds` SET `frags` = "..getFragsByGuild(GuildName).."-"..amount.." WHERE `guilds`.`id` = "..getGuildId(GuildName)) end

function setFragsByGuild(GuildName,value)

db.executeQuery("UPDATE `guilds` SET `frags` = "..value.." WHERE `guilds`.`id` = "..getGuildId(GuildName)) end

function cleanGuildFrags()

db.executeQuery("UPDATE guilds SET frags = 0;")

end

function getAcessTime(GuildName)

		local query = db.getResult("SELECT `acesstime` FROM `guilds` WHERE `id` = " ..getGuildId(GuildName))

		if query:getID() ~= -1 then return query:getDataInt("acesstime") end

end

function removeAcessGuildServer()

return db.executeQuery("UPDATE guilds SET acesstime = 0;")

end

function HaveGuild(cid)

return getPlayerGuildId(cid) > 0 and TRUE or FALSE

end

function doBroadCastGuild(GuildName,type,msg)

local players = {}

for _, cid in pairs(getPlayersOnline()) do

if getPlayerGuildName(cid) == GuildName then

table.insert(players, cid) end end

for i = 1, #players do doPlayerSendTextMessage(players[i],type,msg) end

return true end

function setAcessTime(GuildName, time)

return db.executeQuery("UPDATE `guilds` SET `acesstime` = "..time.." WHERE `guilds`.`id` = "..getGuildId(GuildName))

end

function getDaysAcess(GuildName)

local acess = math.ceil((getAcessTime(GuildName) - os.time())/(86400))

return acess <= 0 and 0 or acess

end

function HaveAcess(GuildName)

		return getDaysAcess(GuildName) > 0 and TRUE or FALSE

end

function getGuildWinnerName()

local guildname = ''

local query = db.getResult("SELECT `name` FROM `guilds`;")  

if(query:getID() ~= -1) then  

repeat  

if HaveAcess(query:getDataString("name")) then

guildname = query:getDataString("name")

end

until not query:next()  

query:free()

end

return guildname

end

function addAcess(GuildName, days)

if days > 0 then

local add = days*86400

local time = getDaysAcess(GuildName) == 0 and (os.time() + add) or (getAcessTime(GuildName) + add)

return setAcessTime(GuildName, time) end

return nil end

function doRemoveAcess(GuildName, days)

if days > 0 then

local remove = days*86400

local time = getAcessTime(GuildName) - remove

return setAcessTime(GuildName, (time <= 0 and 1 or time)) end

return nil end

function getAcessDate(GuildName)

if HaveAcess(GuildName) then return os.date("%d/%m/%y %X", getAcessTime(GuildName)) end

return FALSE

end

function getHonorPoints(cid)

local Honor = getPlayerStorageValue(cid, frag_guild.Honor_Storage)

return Honor < 0 and 0 or Honor

end

function addHonorPoints(GuildName, amount)

local PlayersGuild = db.getResult("SELECT `name` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. getGuildId(GuildName) .. ");")  

if (PlayersGuild:getID() ~= -1) then

repeat

local pid,Guid = getPlayerByNameWildcard(PlayersGuild:getDataString("name")),getPlayerGUIDByName(PlayersGuild:getDataString("name"))

if(not pid or isPlayerGhost(pid)) then

local getHonor = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = ".. Guid .." AND `key` = ".. frag_guild.Honor_Storage)

if (getHonor:getID() ~= -1) then

repeat

db.executeQuery("UPDATE `player_storage` SET `value` = ".. (getHonor:getDataInt("value")+amount) .." WHERE `player_id` = ".. Guid .." AND `key` = ".. frag_guild.Honor_Storage)

until not(getHonor:next())

getHonor:free()

end

else

setPlayerStorageValue(getPlayerByName(PlayersGuild:getDataString("name")), frag_guild.Honor_Storage, getHonorPoints(getPlayerByName(PlayersGuild:getDataString("name")))+amount)

end

until not PlayersGuild:next()

PlayersGuild:free()

end

return true

end
Actions
FragSystemDoor.lua
function onUse(cid, item, frompos, item2, topos)

local MyGuild = getPlayerGuildName(cid)

if not HaveGuild(cid) then

return doPlayerSendTextMessage(cid,22,"Sorry, you're not in a guild.")

elseif not HaveAcess(MyGuild) then

return doPlayerSendTextMessage(cid,22,"Your guild no has access to this area.") end

doTransformItem(item.uid, item.itemid + 1)

doTeleportThing(cid, topos, TRUE)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Welcome,The access of your guild in this area ends in "..getAcessDate(getGuildWinnerName()))

return true

end

Tag:
<action actionid="84005" script="FragSystemDoor.lua"/>
Creaturescript
GuildFragsKill.lua
function onKill(cid, target, lastHit)

local config = {MaxDifLevel = 50, MyGuild = getPlayerGuildName(cid)}

if isPlayer(cid) and isPlayer(target) and HaveGuild(cid) and HaveGuild(target) and getPlayerGuildId(cid) ~= getPlayerGuildId(target) and getPlayerIp(target) ~= getPlayerIp(cid) and math.abs(getPlayerLevel(cid) - getPlayerLevel(target)) <= config.MaxDifLevel and getGlobalStorageValue(frag_guild.start_frags) <= 0 then

addFragsByGuild(config.MyGuild,frag_guild.FragsPerKill)

doBroadCastGuild(config.MyGuild,20,'[Guild Frag System] Your guild received '..frag_guild.FragsPerKill..' frag because have killed a player another guild, now your guild have '..getFragsByGuild(config.MyGuild)..' frags')

if getFragsByGuild(config.MyGuild) >= frag_guild.FragsToWinAcess then

addAcess(config.MyGuild, frag_guild.AcessTimeDays)

addHonorPoints(config.MyGuild, frag_guild.Honor_Point)

doBroadcastMessage("[Guild Frag System]\nThe guild ["..config.MyGuild.."] is dominant for having achieved "..frag_guild.FragsToWinAcess.." Frags!\nYour domain ends in "..getAcessDate(config.MyGuild))

cleanGuildFrags()

setGlobalStorageValue(frag_guild.start_frags, 1)

if frag_guild.MoreExpToGuild == true then

	   local players = {}

		for _, cid in pairs(getPlayersOnline()) do

				if getPlayerGuildName(cid) == config.MyGuild then

						table.insert(players, cid)

				end

	   end

	   for i = 1, #players do

	   doPlayerSetExperienceRate(players[i], frag_guild.Exp_Rate)

	   end

end

end

end

return TRUE

end
GuildFragsLogin.lua
function onLogin(cid)

registerCreatureEvent(cid, "FragsGuildLogin")

registerCreatureEvent(cid, "FragsGuildKill")

if getPlayerStorageValue(cid,frag_guild.Honor_Storage) == -1 then

setPlayerStorageValue(cid, frag_guild.Honor_Storage, 0)

end

local MyGuild,StorCheck = getPlayerGuildName(cid),17595

if HaveGuild(cid) then

if HaveAcess(MyGuild) then

setPlayerStorageValue(cid, StorCheck, 1)

if frag_guild.MoreExpToGuild == true then

doPlayerSetExperienceRate(cid, frag_guild.Exp_Rate)

end

elseif getPlayerStorageValue(cid, StorCheck) == 1 and not HaveAcess(MyGuild) then

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

doPlayerPopupFYI(cid, "[Guild Frag System]\nThe domain of your guild is over and you've been teleported to the temple.")

setPlayerStorageValue(cid, StorCheck, -1)

if getGlobalStorageValue(frag_guild.start_frags) >= 1 then setGlobalStorageValue(frag_guild.start_frags, 0) end

end

end

return TRUE

end
Tag
		<event type="login" name="FragsGuildLogin" script="GuildFragsLogin.lua"/>

		<event type="kill" name="FragsGuildKill" script="GuildFragsKill.lua"/>
globalevent
GuildFragsInfo.lua
function onThink(interval, lastExecution)

if getGuildWinnerName() == "" and getGlobalStorageValue(frag_guild.start_frags) >= 1 then setGlobalStorageValue(frag_guild.start_frags, 0) end

return doBroadcastMessage("".. (getGuildWinnerName() == "" and "[Guild Frag System]\nThe first guild to reach "..frag_guild.FragsToWinAcess.." frags will gain "..frag_guild.AcessTimeDays.." days of access to exclusive areas, for more information enter !guildfrags" or "[Guild Frag System]\nCurrently guild dominant is ["..getGuildWinnerName().."] and your domain ends in "..getAcessDate(getGuildWinnerName()).."") .."", 22)

end

Tag
<globalevent name="GuildFrags" interval="1800" event="script" value="GuildFragsInfo.lua"/>
talkactions
GuildFragsRank.lua
function onSay(cid, words, param)

if words == "!myhonor" or  words == "/myhonor" then

return doPlayerPopupFYI(cid,"Honor Points can be exchanged for special items in npc\nAnd each domain, every guild players receive "..frag_guild.Honor_Point.." Honor Points!\n\n\nMy Honor Points: "..getHonorPoints(cid))

elseif words == "!guildfrags" or words == "/guildfrags" then

if param == "rank" then

local max_guild,str = 10,""

str = "--[ Rank Guild Frags ]--\n\n"

				query = db.getResult("SELECT `name`, `frags` FROM `guilds` WHERE `frags` ORDER BY `frags` DESC, `name` ASC;")

				if (query:getID() ~= -1) then k = 1 while true do

				str = str .. "\n " .. k .. ". " .. query:getDataString("name") .. " - [" .. query:getDataInt("frags") .. "]"

				k = k + 1

				if not(query:next()) or k > max_guild then break end end query:free()end

				if str ~= "" then doPlayerPopupFYI(cid, str) end

return true

end

doPlayerPopupFYI(cid,"".. (getGuildWinnerName() == "" and "The server does not have any dominant guild\n\nTo show the rank of frags enter !guildfrags rank" or "Currently guild dominant is ["..getGuildWinnerName().."]\n\nYour domain ends in "..getAcessDate(getGuildWinnerName()).."") .."")

end

return true

end
Tag
<talkaction words="!guildfrags;/guildfrags;!myhonor;/myhonor" event="script" value="GuildFragsRank.lua"/>
Por Mod
Caso você queira usar o sistema por Mod aqui está: Guild Frag System.xml
<?xml version="1.0" encoding="UTF-8"?>  

<mod name="Guild Frag System" version="1.0" author="Vodkart" contact="none" enabled="yes">  

<config name="guild_func"><![CDATA[


frag_guild = {

start_frags = 120155,

FragsToWinAcess = 100,

FragsPerKill = 1,

AcessTimeDays = 2,

MoreExpToGuild = false,

Exp_Rate = 1.1, -- 10%

Honor_Storage = 215548,

Honor_Point = 5

}


function getFragsByGuild(GuildName)

local check = db.getResult("SELECT `frags` FROM `guilds` WHERE `id` = " ..getGuildId(GuildName))

return check:getDataInt("frags") <= 0 and 0 or check:getDataInt("frags")

end

function addFragsByGuild(GuildName,amount)

db.executeQuery("UPDATE `guilds` SET `frags` = "..getFragsByGuild(GuildName).."+"..amount.." WHERE `guilds`.`id` = "..getGuildId(GuildName))

end

function removeFragsByGuild(GuildName,amount)

db.executeQuery("UPDATE `guilds` SET `frags` = "..getFragsByGuild(GuildName).."-"..amount.." WHERE `guilds`.`id` = "..getGuildId(GuildName))

end

function setFragsByGuild(GuildName,value)

db.executeQuery("UPDATE `guilds` SET `frags` = "..value.." WHERE `guilds`.`id` = "..getGuildId(GuildName))

end

function cleanGuildFrags()

db.executeQuery("UPDATE guilds SET frags = 0;")

end

function removeAcessGuildServer()

return db.executeQuery("UPDATE guilds SET acesstime = 0;")

end

function getAcessTime(GuildName)

				local query = db.getResult("SELECT `acesstime` FROM `guilds` WHERE `id` = " ..getGuildId(GuildName))

				if query:getID() ~= -1 then return query:getDataInt("acesstime") end

end

function HaveGuild(cid)

return getPlayerGuildId(cid) > 0 and TRUE or FALSE

end

function doBroadCastGuild(GuildName,type,msg)

local players = {}

for _, cid in pairs(getPlayersOnline()) do

if getPlayerGuildName(cid) == GuildName then

table.insert(players, cid) end end

for i = 1, #players do doPlayerSendTextMessage(players[i],type,msg) end

return true end

function setAcessTime(GuildName, time)

return db.executeQuery("UPDATE `guilds` SET `acesstime` = "..time.." WHERE `guilds`.`id` = "..getGuildId(GuildName))

end

function getDaysAcess(GuildName)

local acess = math.ceil((getAcessTime(GuildName) - os.time())/(86400))

return acess <= 0 and 0 or acess

end

function HaveAcess(GuildName)

				return getDaysAcess(GuildName) > 0 and TRUE or FALSE

end

function getGuildWinnerName()

local guildname = ''

local query = db.getResult("SELECT `name` FROM `guilds`;")  

if(query:getID() ~= -1) then  

repeat  

if HaveAcess(query:getDataString("name")) then

guildname = query:getDataString("name")

end

until not query:next()  

query:free()

end

return guildname

end

function addAcess(GuildName, days)

if days > 0 then

local add = days*86400

local time = getDaysAcess(GuildName) == 0 and (os.time() + add) or (getAcessTime(GuildName) + add)

return setAcessTime(GuildName, time) end

return nil end

function doRemoveAcess(GuildName, days)

if days > 0 then

local remove = days*86400

local time = getAcessTime(GuildName) - remove

return setAcessTime(GuildName, (time <= 0 and 1 or time)) end

return nil end

function getAcessDate(GuildName)

if HaveAcess(GuildName) then return os.date("%d/%m/%y %X", getAcessTime(GuildName)) end

return FALSE

end

function getHonorPoints(cid)

local Honor = getPlayerStorageValue(cid, frag_guild.Honor_Storage)

return Honor < 0 and 0 or Honor

end

function addHonorPoints(GuildName, amount)

local PlayersGuild = db.getResult("SELECT `name` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. getGuildId(GuildName) .. ");")  

if (PlayersGuild:getID() ~= -1) then

repeat

local pid,Guid = getPlayerByNameWildcard(PlayersGuild:getDataString("name")),getPlayerGUIDByName(PlayersGuild:getDataString("name"))

if(not pid or isPlayerGhost(pid)) then

local getHonor = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = ".. Guid .." AND `key` = ".. frag_guild.Honor_Storage)

if (getHonor:getID() ~= -1) then

repeat

db.executeQuery("UPDATE `player_storage` SET `value` = ".. (getHonor:getDataInt("value")+amount) .." WHERE `player_id` = ".. Guid .." AND `key` = ".. frag_guild.Honor_Storage)

until not(getHonor:next())

getHonor:free()

end

else

setPlayerStorageValue(getPlayerByName(PlayersGuild:getDataString("name")), frag_guild.Honor_Storage, getHonorPoints(getPlayerByName(PlayersGuild:getDataString("name")))+amount)

end

until not PlayersGuild:next()

PlayersGuild:free()

end

return true

end

]]></config>

<talkaction words="!guildfrags;/guildfrags;!myhonor;/myhonor" event="buffer"><![CDATA[

domodlib('guild_func')

if words == "!myhonor" or  words == "/myhonor" then

return doPlayerPopupFYI(cid,"Honor Points can be exchanged for special items in npc\nAnd each domain, every guild players receive "..frag_guild.Honor_Point.." Honor Points!\n\n\nMy Honor Points: "..getHonorPoints(cid))

elseif words == "!guildfrags" or words == "/guildfrags" then

if param == "rank" then

local max_guild,str = 10,""

str = "--[ Rank Guild Frags ]--\n\n"

				query = db.getResult("SELECT `name`, `frags` FROM `guilds` WHERE `frags` ORDER BY `frags` DESC, `name` ASC;")

				if (query:getID() ~= -1) then k = 1 while true do

				str = str .. "\n " .. k .. ". " .. query:getDataString("name") .. " - [" .. query:getDataInt("frags") .. "]"

				k = k + 1

				if not(query:next()) or k > max_guild then break end end query:free()end

				if str ~= "" then doPlayerPopupFYI(cid, str) end

return true

end

doPlayerPopupFYI(cid,"".. (getGuildWinnerName() == "" and "The server does not have any dominant guild\n\nTo show the rank of frags enter !guildfrags rank" or "Currently guild dominant is ["..getGuildWinnerName().."]\n\nYour domain ends in "..getAcessDate(getGuildWinnerName()).."") .."")

end

return true

]]></talkaction>

<event type="login" name="FragsGuildLogin" event="script"><![CDATA[  

domodlib('guild_func')

function onLogin(cid)

registerCreatureEvent(cid, "FragsGuildLogin")

registerCreatureEvent(cid, "FragsGuildKill")

if getPlayerStorageValue(cid,frag_guild.Honor_Storage) == -1 then

setPlayerStorageValue(cid, frag_guild.Honor_Storage, 0)

end

local MyGuild,StorCheck = getPlayerGuildName(cid),17595

if HaveGuild(cid) then

if HaveAcess(MyGuild) then

setPlayerStorageValue(cid, StorCheck, 1)

if frag_guild.MoreExpToGuild == true then doPlayerSetExperienceRate(cid, frag_guild.Exp_Rate) end

elseif getPlayerStorageValue(cid, StorCheck) == 1 and not HaveAcess(MyGuild) then

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

doPlayerPopupFYI(cid, "[Guild Frag System]\nThe domain of your guild is over and you've been teleported to the temple.")

setPlayerStorageValue(cid, StorCheck, -1)

if getGlobalStorageValue(frag_guild.start_frags) >= 1 then

setGlobalStorageValue(frag_guild.start_frags, 0)

end

end

end

return TRUE

end

]]></event>

<action actionid="84005" event="script"><![CDATA[

domodlib('guild_func')

function onUse(cid, item, frompos, item2, topos)

local MyGuild = getPlayerGuildName(cid)

if not HaveGuild(cid) then

return doPlayerSendTextMessage(cid,22,"Sorry, you're not in a guild.")

elseif not HaveAcess(MyGuild) then

return doPlayerSendTextMessage(cid,22,"Your guild no has access to this area.") end

doTransformItem(item.uid, item.itemid + 1)

doTeleportThing(cid, topos, TRUE)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Welcome,The access of your guild in this area ends in "..getAcessDate(getGuildWinnerName()))

return true

end]]></action>

<event type="kill" name="FragsGuildKill" event="script"><![CDATA[

domodlib('guild_func')

function onKill(cid, target, lastHit)

config = {

MaxDifLevel = 50,

MyGuild = getPlayerGuildName(cid)

}

if isPlayer(cid) and isPlayer(target) and HaveGuild(cid) and HaveGuild(target) and getPlayerGuildId(cid) ~= getPlayerGuildId(target) and getPlayerIp(target) ~= getPlayerIp(cid) and math.abs(getPlayerLevel(cid) - getPlayerLevel(target)) <= config.MaxDifLevel and getGlobalStorageValue(frag_guild.start_frags) <= 0 then

addFragsByGuild(config.MyGuild,frag_guild.FragsPerKill)

doBroadCastGuild(config.MyGuild,20,'[Guild Frag System] Your guild received '..frag_guild.FragsPerKill..' frag because have killed a player another guild, now your guild have '..getFragsByGuild(config.MyGuild)..' frags')

if getFragsByGuild(config.MyGuild) >= frag_guild.FragsToWinAcess then

addAcess(config.MyGuild, frag_guild.AcessTimeDays)

addHonorPoints(config.MyGuild, frag_guild.Honor_Point)

doBroadcastMessage("[Guild Frag System]\nThe guild ["..config.MyGuild.."] is dominant for having achieved "..frag_guild.FragsToWinAcess.." Frags!\nYour domain ends in "..getAcessDate(config.MyGuild))

cleanGuildFrags()

setGlobalStorageValue(frag_guild.start_frags, 1)

if frag_guild.MoreExpToGuild == true then

		   local players = {}

				for _, cid in pairs(getPlayersOnline()) do

								if getPlayerGuildName(cid) == config.MyGuild then

												table.insert(players, cid)

								end

		   end

		   for i = 1, #players do

		   doPlayerSetExperienceRate(players[i], frag_guild.Exp_Rate)

		   end

end

end

end

return TRUE

end]]></event>

<globalevent name="GuildFrags" interval="1800" event="script"><![CDATA[

domodlib('guild_func')

function onThink(interval, lastExecution)

if getGuildWinnerName() == "" and getGlobalStorageValue(frag_guild.start_frags) >= 1 then

setGlobalStorageValue(frag_guild.start_frags, 0)

end

return doBroadcastMessage("".. (getGuildWinnerName() == "" and "[Guild Frag System]\nThe first guild to reach "..frag_guild.FragsToWinAcess.." frags will gain "..frag_guild.AcessTimeDays.." days of access to exclusive areas, for more information enter !guildfrags" or "[Guild Frag System]\nCurrently guild dominant is ["..getGuildWinnerName().."] and your domain ends in "..getAcessDate(getGuildWinnerName()).."") .."", 22)

end]]></globalevent>

</mod>
Npc (obs: o NPC funciona caso você use MOD tbm)
Leia com atenção: O jogador deverá ter gps na sua bag para comprar o item, porém os gps são serão removidos, somente os Honor Points. Major Ancient.xml

<?xml version="1.0"?>

<npc name="Major Ancient" script="data/npc/scripts/trade_honor.lua" walkinterval="50000" floorchange="0">

<health now="100" max="100"/>

<look type="287" head="78" body="88" legs="0" feet="88" addons="3"/>

<parameters>

<parameter key="message_greet" value="Hello |PLAYERNAME|. I {trade} items for honor points!"/>

</parameters>

</npc>
trade_honor.lua
local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end

local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid

local Honor_Storage = 215548

function getHonorPoints(cid)

local Honor = getPlayerStorageValue(cid, Honor_Storage)

return Honor < 0 and 0 or Honor

end

local shopWindow = {}

local t = {

		  [2195] = {price = 5}, -- [id do item] e em price qnto honor points vai custar

		  [2493] = {price = 25},

		  [2361] = {price = 30},

		  [8851] = {price = 20},

		  [8925] = {price = 30},

		  [2640] = {price = 50},

		  [2494] = {price = 100},

		  [9932] = {price = 50},

		  [2472] = {price = 70},

		  [8931] = {price = 100}

		  }

local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks)

		if  t[item] and getHonorPoints(cid) < t[item].price then

			 selfSay("you do not have "..t[item].price.." Honor Points", cid)

				 else

				doPlayerAddItem(cid, item)

				setPlayerStorageValue(cid, Honor_Storage, getPlayerStorageValue(cid, Honor_Storage) - t[item].price)

				selfSay("Here you item", cid)

		   end

		return true

end

if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then

						for var, ret in pairs(t) do

										table.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)})

								end

						openShopWindow(cid, shopWindow, onBuy, onSell)

				end

return true

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

  • Respostas 43
  • Visualizações 11k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Posted Images

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo