carlinhous1996
New Member
someone had some npc script that sells item for points ?
i have a npc on my server that does tasks for guilds and it delivers a certain amount of points that gives no sql, I would like to sell some items using (hi,trade)
someone help me please
script guildlib
script tasks
i have a npc on my server that does tasks for guilds and it delivers a certain amount of points that gives no sql, I would like to sell some items using (hi,trade)
someone help me please
script guildlib
Lua:
--[[ Queries:
CREATE TABLE `guild_storages` (
`guild_id` int NOT NULL default 0,
`key` int NOT NULL default 0,
`value` varchar(255) NOT NULL default 0
);
CREATE TRIGGER `guilds_update`
AFTER UPDATE OF rank_id ON players
BEGIN
UPDATE players
SET guild_id = IFNULL( (
SELECT guild_id
FROM guild_ranks
WHERE id = rank_id
)
, 0 );
END;
ALTER TABLE guilds ADD points INT DEFAULT 0 NOT NULL
ALTER TABLE guilds ADD balance BIGINT default 0 NOT NULL
ALTER TABLE players ADD guild_id INT DEFAULT 0 NOT NULL
UPDATE players SET guild_id = IFNULL((SELECT guild_id FROM guild_ranks WHERE id = rank_id), 0)
]]
-- Advanced Guild System maintenance functions
function installAdvancedGuildSystem()
local func = db.query or db.executeQuery
local query = db.getResult("SELECT balance FROM guilds")
if query:getID() == -1 then
func("ALTER TABLE guilds ADD balance INT default 0 NOT NULL")
else
query:free()
end
local query2 = db.getResult("SELECT points FROM guilds;")
if query:getID() == -1 then
func("ALTER TABLE guilds ADD points INT DEFAULT 0 NOT NULL")
else
query2:free()
end
if func("ALTER TABLE players ADD guild_id INT DEFAULT 0 NOT NULL") then
if func("UPDATE players SET guild_id = IFNULL((SELECT guild_id FROM guild_ranks WHERE `id` = rank_id), 0)") then
if func("CREATE TABLE `guild_storages` (`guild_id` INT NOT NULL DEFAULT 0, `key` INT NOT NULL DEFAULT 0, `value` VARCHAR(255) NOT NULL DEFAULT 0);") then
if func("CREATE TRIGGER [`rank_id update`] AFTER UPDATE OF rank_id ON players BEGIN UPDATE players SET guild_id = IFNULL((SELECT guild_id FROM guild_ranks WHERE `id` = rank_id), 0); END;") then
setGlobalStorageValue(50050, 1)
print("Advanced Guild System installation successful.")
return true
end
end
end
end
print("Advanced Guild System could NOT be installed.")
return false
end
function updateGuildColumn()
print("Updating guild column in players table...")
local func = db.query or db.executeQuery
local str = "failure."
if func("UPDATE players SET guild_id = IFNULL((SELECT guild_id FROM guild_ranks WHERE `id` = rank_id),0)") then
str = "success!"
end
print("Update was a "..str)
end
isAGSInstalled = getGlobalStorageValue(50050) == 1
-- Guild Points functions
function getGuildPoints(guild_id)
local ret = db.getResult("SELECT points FROM guilds WHERE id = " .. guild_id)
if ret:getID() == -1 then
return -1
end
return ret:getDataInt("points")
end
function doGuildAddPoints(guild_id, value)
local func = db.executeQuery or db.query
return func("UPDATE guilds SET points = ("..value.." + (SELECT points FROM guilds WHERE id = "..guild_id..")) WHERE id = "..guild_id)
end
-- General guild functions
function hasGuild(cid)
return getPlayerGuildId(cid) > 0
end
function isInGuild(cid, guildId)
return getPlayerGuildId(cid) == guildId
end
function getGuildName(guild_id)
local query = db.getResult("SELECT name FROM guilds WHERE id = "..guild_id)
local ret = query:getID() == -1 and false or query:getDataString("name")
query:free()
return ret
end
function getGuildMembersGUID(guild_id)
if db.getResult("SELECT ownerid FROM guilds WHERE id = "..guild_id):getID() > -1 then
local members = {}
local query = db.getResult("SELECT `id` FROM players WHERE guild_id = "..guild_id)
if query:getID() == -1 then
return false
end
repeat
local member = query:getDataInt("id")
table.insert(members, member)
until not query:next()
query:free()
return members
end
return false
end
function getPlayerGuildIdByGUID(guid)
local query = db.getResult("SELECT guild_id FROM players WHERE id = "..guid)
return query:getDataInt("guild_id")
end
function getOnlineGuildMembersByRank(guildId, rank, selectLowerRanks)
if not rank then
rank = 3
selectLowerRanks = true
end
local list = {}
for _, pid in pairs(getPlayersOnline()) do
if getPlayerGuildId(pid) == guildId then
local playerRank = getPlayerGuildLevel(pid)
if playerRank == rank or (selectLowerRanks and playerRank <= rank) then
table.insert(list, pid)
end
end
end
return list
end
function doFunctionOnGuildMembers(guildId, func)
local players = getPlayersOnline()
local count = 0
for _, pid in pairs(players) do
if getPlayerGuildId(pid) == guildId then
func(pid)
count = count + 1
end
end
return count
end
-- Guild Storage functions
function setGuildStorageValue(guild_id, key, value)
local func = db.executeQuery or db.query
local query = db.getResult("SELECT `value` FROM guild_storages WHERE `key` = "..key.." AND guild_id = "..guild_id)
if query:getID() == -1 then
return func("INSERT INTO guild_storages (guild_id, `key`, `value`) VALUES ("..guild_id..", "..key..", "..value..")")
end
return func("UPDATE guild_storages SET `value` = "..value.." WHERE `key` = "..key.." AND guild_id = "..guild_id)
end
function getGuildStorageValue(guild_id, key)
local ret = db.getResult("SELECT `value` FROM guild_storages WHERE guild_id = "..guild_id.." AND `key` = "..key)
if ret:getID() == -1 then
return -1
end
return ret:getDataInt("value") or ret:getDataString("value")
end
-- Guild Balance functions
function getGuildBalance(guild_id)
local balance = db.getResult("SELECT balance FROM guilds WHERE `id` = "..guild_id)
local ret = balance:getID() >= 0 and balance:getDataInt("balance") or false
balance:free()
return ret
end
function setGuildBalance(guild_id, value)
local func = db.executeQuery or db.query
func("UPDATE guilds SET balance = "..value.." WHERE `id` = "..guild_id)
return true
end
function doGuildAddBalance(guild_id, value)
local func = db.executeQuery or db.query
func("UPDATE guilds SET balance = (SELECT balance FROM guilds WHERE `id` = "..guild_id..") + "..value.." WHERE `id` = "..guild_id)
return true
end
script tasks
Lua:
-- Storages
GT = {
kills = 51,
totalKills = 52,
task = 53,
time = 54,
-- Customization starts here
-- Monsters
monsters = {
{names = {"dragon hunter task", "dragon lord iii", "dragon iii", "wyrm", "ghastly dragon", "undead dragon", "dragon essence"}, totalKills = 5, money = 150000, points = 5, minPoints = 10},
{names = {"largatos hunter task", "draken warmaster", "draken elite", "lizard high guard", "master serpent spawn", "lizard zaogun", "draken spellweaver", "lizard chosen", "lizard legionnaire", "lizard dragon priest"}, totalKills = 500, money = 150000, points = 5, minPoints = 10},
{names = {"lord of demon"}, totalKills = 6, money = 5000, points = 3, minPoints = 0},
{names = {"dragon lord"}, totalKills = 5, money = 15000, points = 5, minPoints = 0},
{names = {"crypt warrior"}, totalKills = 5, money = 5000, points = 3, minPoints = 0},
{names = {"draken elite"}, totalKills = 4, money = 5000, points = 3, minPoints = 0},
{names = {"apofis"}, totalKills = 6, money = 5000, points = 3, minPoints = 0},
{names = {"Ethershreck"}, totalKills = 4, money = 5000, points = 3, minPoints = 0},
{names = {"master hellfire fighter"}, totalKills = 5, money = 5000, points = 3, minPoints = 0},
{names = {"infernal demon"}, totalKills = 3, money = 5000, points = 3, minPoints = 0},
},
-- Other variables
waitTime = 1440, -- Tempo de espera para começar outra task após entregar uma
}
-- Customization ends here
function doResetGuildTask(guild_id, resetTime)
for _, stgkey in ipairs({GT.kills, GT.totalKills, GT.task, GT.time}) do
setGuildStorageValue(guild_id, stgkey, 0)
end
if resetTime then
setGuildStorageValue(guild_id, GT.time, os.time() + GT.waitTime * 60)
end
return true
end
function doStartGuildTask(guild_id, task)
local taskInfo = GT.monsters[task]
setGuildStorageValue(guild_id, GT.totalKills, taskInfo.totalKills)
setGuildStorageValue(guild_id, GT.task, task)
setGuildStorageValue(guild_id, GT.kills, 0)
return true
end
function getGuildTaskWaitTime(guild)
local nextTime = getGuildStorageValue(guild, GT.time)
if nextTime > os.time() then
return nextTime - os.time()
else
return 0
end
end
function doCompleteGuildTask(guild_id)
local taskInfo = GT.monsters[getGuildStorageValue(guild_id, GT.task)]
doGuildAddPoints(guild_id, taskInfo.points)
doGuildAddBalance(guild_id, taskInfo.money)
doResetGuildTask(guild_id, true)
return true
end