Jump to content

Group system is not save


21gangstreet

Recommended Posts

Hi all,

We edited group system.we changed gui buttons etc..its amazing now i have problem. players creating group but,group is deleted when reconnect.:( just admin and owner's group saved.please someone help me ? I want share some codes.

 
 
function setData(player)
if player then
if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("Console")) then
setElementData(player, "Yetkili",  "Kurucu")
elseif isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("Admin")) then
setElementData(player, "Yetkili", "Admin")
end
end
end

setTimer(
function()
for i, pl in pairs(getElementsByType("player")) do
if pl ~= (false or nil) then
setData(pl)
end
end
end,
3000,
0)

local groups = { }

addEventHandler ( "onResourceStart", resourceRoot, function ( ) 
exports.NGSQL:db_exec ( "CREATE TABLE IF NOT EXISTS groups ( id INT, name VARCHAR(20), info TEXT )" );
exports.NGSQL:db_exec ( "CREATE TABLE IF NOT EXISTS group_members ( id INT, member_name VARCHAR(30), rank VARCHAR(20), join_date VARCHAR(40) )");
exports.NGSQL:db_exec ( "CREATE TABLE IF NOT EXISTS group_rank ( id INT, rank VARCHAR(30), perms TEXT )" )
exports.NGSQL:db_exec ( "CREATE TABLE IF NOT EXISTS group_logs ( id INT, time VARCHAR(40), account VARCHAR(40), log TEXT )" )

exports.scoreboard:scoreboardAddColumn ( "Group", getRootElement ( ), 90, "Group", 10 )
exports.scoreboard:scoreboardAddColumn ( "Group Rank", getRootElement ( ), 90, "Group Rank", 12 )

for i, v in pairs ( getElementsByType ( "player" ) ) do
local g = getElementData ( v, "Group" )
if ( not g ) then
setElementData ( v, "Group", "None" )
setElementData ( v, "Group Rank", "None")
end

if ( not getElementData ( v, "Group Rank" ) ) then
setElementData ( v, "Group Rank", "None" )
end
end
end )

addEventHandler ( "onPlayerJoin", root, function ( )
setElementData ( source, "Group", "None" )
setElementData ( source, "Group Rank", "None")
end )


groups = { }
--[[ example: 

groups = { 
['ownfexrf__s'] = {
info = {
founder = "xXMADEXx", -- this CANNOT change
founded_time = "2014-06-18:01-35-57",
desc = "This is my group",
color = { 255, 255, 0 },
type = "Gang",
bank = 0,
id = 0
},

members = { 
["xXMADEXx"] = { rank="Founder", joined="2014-06-18:01-35-57" } 
},

ranks = {
['Founder'] = {
-- member access
['member_kick'] = true,
['member_invite'] = true,
['member_setrank'] = true,
['member_viewlog'] = true
-- General group changes
['group_modify_color'] = true,,
['group_modify_motd'] = true,
-- banks
['bank_withdraw'] = true,
['bank_deposit'] = true,
-- logs
['logs_view'] = true,
['logs_clear'] = true,
-- ranks
['ranks_create'] = true,
['ranks_delete'] = true,
['ranks_modify'] = true
}
},
log = {
-- { time, log }
{ time="2014-06-18  05:05:05", account="xXMADEXx", log="Group Created" }
},

pendingInvites = { 
['account'] = { inviter = "Inviter Account", time="Time Invite Sent"}
}
}
}]]

function saveGroups ( )
exports.NGSQL:db_exec ( "DELETE FROM groups" )
exports.NGSQL:db_exec ( "DELETE FROM group_rank" )
exports.NGSQL:db_exec ( "DELETE FROM group_members")
exports.NGSQL:db_exec ( "DELETE FROM group_logs")

for i, v in pairs ( groups ) do
exports.NGSQL:db_exec ( "INSERT INTO groups ( id, name, info ) VALUES ( ?, ?, ? )", tostring ( v.info.id ), tostring ( i ), toJSON ( v.info ) )
for k, val in pairs ( v.ranks ) do 
exports.NGSQL:db_exec ( "INSERT INTO group_rank ( id, rank, perms ) VALUES ( ?, ?, ? )", tostring ( v.info.id ), k, toJSON ( val ) )
end 
for k, val in pairs ( v.members ) do
exports.NGSQL:db_exec ( "INSERT INTO group_members ( id, member_name, rank, join_date ) VALUES ( ?, ?, ?, ? )", tostring ( v.info.id ), k, val.rank, val.joined )
end 

for k, val in ipairs ( v.log ) do
exports.NGSQL:db_exec ( "INSERT INTO group_logs ( id, time, account, log ) VALUES ( ?, ?, ?, ? )", tostring ( v.info.id ), val.time, val.account, val.log )
end 
end
end 

function loadGroups ( )
local start = getTickCount ( )
local groups_ = exports.NGSQL:db_query ( "SELECT * FROM groups" )
for i, v in pairs ( groups_ ) do
if ( v and v.name and not groups [ v.name ] ) then
groups [ v.name ] = { }
groups [ v.name ].info = { }
groups [ v.name ].ranks = { }
groups [ v.name ].members = { }
groups [ v.name ].log = { }

-- load info table
groups [ v.name ].info = fromJSON ( v.info )
groups [ v.name ].info.id = tonumber ( v.id )

-- load rank table
local ranks = exports.NGSQL:db_query ( "SELECT * FROM group_rank WHERE id=?", tostring ( v.id ) )
for i, val in pairs ( ranks ) do
if ( not groups [ v.name ].ranks[val.rank] ) then
groups [ v.name ].ranks[val.rank] = fromJSON ( val.perms )
end
end 

-- load member table
local members = exports.NGSQL:db_query ( "SELECT * FROM group_members WHERE id=?", tostring ( v.id) )
for i, val in pairs ( members ) do
groups [v.name].members[val.member_name] = { }
groups [v.name].members[val.member_name].rank = val.rank
groups [v.name].members[val.member_name].joined = val.join_date

for _, player in pairs ( getElementsByType ( "player" ) ) do
local a = getPlayerAccount ( player )
if ( a and not isGuestAccount ( a ) ) then
local acc = getAccountName ( a )
if ( val.member_name == acc ) then
setElementData ( player, "Group", tostring ( v.name ) )
setElementData ( player, "Group Rank", tostring ( val.rank ) )
end 
end
end 
end 

-- load logs table
local log = exports.NGSQL:db_query ( "SELECT * FROM group_logs WHERE id=?", tostring ( v.id ) )
for i, val in ipairs ( log ) do
table.insert ( groups[v.name].log, { time=val.time, account=val.account, log=val.log } )
end 

groups [ v.name ].pendingInvites = { }
else
local reason = "Variable 'v' not set"
if ( v and not v.name ) then
reason = "Variable 'v.name' not set"
elseif ( v and v.name and groups [ v.name ] ) then
reason = "Group already exists in table"
else
reason = "Undetected"
end
outputDebugString ( "NGGroups: Failed to load group ".. tostring ( v.name ).." - "..  tostring ( reason ), 1 )
end 
end

local load = math.ceil ( getTickCount()-start )
local tLen = table.len ( groups )
outputDebugString ( "NGGroups: Successfully loaded "..tLen.." groups from the sql database ("..tostring(load).."MS - About "..math.floor(load/tLen).."MS/group)" )

end 
addEventHandler ( "onResourceStart", resourceRoot, loadGroups )
addEventHandler ( "onResourceStop", resourceRoot, saveGroups )

function getGroups ( ) 
return groups
end 


addEvent ( "NGGroups->Events:onClientRequestGroupList", true )
addEventHandler ( "NGGroups->Events:onClientRequestGroupList", root, function ( )
local g = getGroups ( )
triggerClientEvent ( source, "NGGroups->onServerSendClientGroupList", source, g )
g = nil
end )

------------------------------
-- Group Creating --
------------------------------
function createGroup ( name, color, type, owner )
if ( doesGroupExist ( name ) ) then
return false
end

local id = 0
local ids = { }
for i, v in pairs ( groups ) do
ids [ v.info.id ] = true
end 

while ( ids [ id ] ) do
id = id + 1
end
groups [ name ] = { 
info = {
founder = owner, -- this CANNOT change
founded_time = getThisTime ( ),
desc = "",
color = color,
type = type,
bank = 0,
id = id
},

members = { 
[owner] = { rank="Founder", joined=getThisTime ( ) } 
},

ranks = {
['Founder'] = {
-- member access
['member_kick'] = true,
['member_invite'] = true,
['member_setrank'] = true,
['member_viewlog'] = true,
-- General group changes
['group_modify_color'] = true,
['group_modify_motd'] = true,
-- banks
['bank_withdraw'] = true,
['bank_deposit'] = true,
-- logs
['logs_view'] = true,
['logs_clear'] = true,
-- ranks
['ranks_create'] = true,
['ranks_delete'] = true,
['ranks_modify'] = true
}, ["Member"] = {
-- button access
['view_member_list'] = true,
['view_ranks'] = false,
['view_bank'] = true,
-- member access
['member_kick'] = false,
['member_invite'] = false,
['member_setrank'] = false,
-- General group changes
['group_modify_color'] = false,
['group_modify_motd'] = false,
-- banks
['bank_withdraw'] = false,
['bank_deposit'] = true,
-- logs
['logs_view'] = false,
['logs_clear'] = false,
-- ranks
['ranks_create'] = false,
['ranks_delete'] = false,
['ranks_modify'] = false
}
},
log = {
-- { time, log }
{ time=getThisTime ( ), account="Server", log="Group Created" }
},

pendingInvites = { }
}
 
  return true, groups [ name ]
end

------------------------------
-- Group Deleting --
------------------------------
function deleteGroup ( group )
if ( not doesGroupExist ( group ) ) then 
return false
end
local id = groups [ group ].info.id
groups [ group ] = nil
exports.NGSQL:db_exec ( "DELETE FROM groups WHERE id=?", tostring ( id ) )
exports.NGSQL:db_exec ( "DELETE FROM group_logs WHERE id=?", tostring ( id ) )
exports.NGSQL:db_exec ( "DELETE FROM group_members WHERE id=?", tostring ( id ) )
exports.NGSQL:db_exec ( "DELETE FROM group_rank WHERE id=?", tostring ( id ) )
for i, v in pairs ( getElementsByType ( "player" ) ) do
local gang = getElementData ( v, "Group" )
if ( gang == group ) then
setElementData ( v, "Group", "None" )
setElementData ( v, "Group Rank", "None" )
end
end 
exports.NGSQL:db_exec ( "UPDATE accountdata SET GroupName=?, GroupRank=? WHERE GroupName=?", "None", "None", tostring ( group ) )
end 
addEvent ( "NGGroups->Modules->Gangs->Force->DeleteGroup", true )
addEventHandler ( "NGGroups->Modules->Gangs->Force->DeleteGroup", root, deleteGroup )

addEvent ( "NGGroups->GEvents:onPlayerAttemptGroupMake", true )
addEventHandler ( "NGGroups->GEvents:onPlayerAttemptGroupMake", root, function ( data ) 
--[[
data = {
name = "Group Name",
type = "Group Type",
color = { 
r = GroupColorR,
g = GroupColorG,
b = GroupColorB
}
} ]]

if ( doesGroupExist ( data.name ) or tostring ( data.name):lower() == "none" ) then
return exports.ngmessages:sendClientMessage ( "A group with this name already exists", source, 255, 255, 0 )
end

local created, __ = createGroup ( data.name, data.color, data.type, getAccountName ( getPlayerAccount ( source ) ) )
if ( created ) then
setElementData ( source, "Group", data.name );
setElementData ( source, "Group Rank", "Founder" );
outputDebugString ( "CREATED GROUP "..tostring(data.name)..". Owner: "..getPlayerName(source) );
refreshPlayerGroupPanel ( source )
return true
else 
outputDebugString ( "FAILED TO CREATE GROUP "..tostring(data.name).." FROM "..getplayerName(source) );
end
return false
end )

addEvent ( "NGGroups->gEvents:onPlayerDeleteGroup", true )
addEventHandler ( "NGGroups->gEvents:onPlayerDeleteGroup", root, function ( group )
deleteGroup ( group )
refreshPlayerGroupPanel ( source )
end )

------------------------------
-- Group Banking Functions --
------------------------------
function getGroupBank ( group )
if ( groups [ group ] and groups [ group ].info ) then
local a = groups [ group ].info.bank or 0
return a
end
return false
end

function setGroupBank ( group, money )
if ( groups [ group ] and groups [ group ].info ) then
groups [ group ].info.bank = money
local a = true
return a
end
return false
end 


addEvent ( "NGGroups:Module->Bank:returnBankBalanceToClient", true )
addEventHandler ( "NGGroups:Module->Bank:returnBankBalanceToClient", root, function ( group )
local bank = getGroupBank ( group ) or 0
triggerClientEvent ( source, "NGGroups:Module->Bank:onServerSendClientBankLevel", source, bank )
end )

addEvent ( "NGGroups:Modules->BankSys:onPlayerAttemptWithdawl", true )
addEventHandler ( "NGGroups:Modules->BankSys:onPlayerAttemptWithdawl", root, function ( group, amount )
if ( not doesGroupExist ( group ) ) then
exports.ngmessages:sendClientMessage ( "Something went wrong with the server (Error Code: ngroup-1)", source, 255, 0, 0 );
setElementData ( source, "Group", "None" );
setElementData ( source, "Group Rank", "None" );
refreshPlayerGroupPanel ( source );
return false
end
local bank = getGroupBank ( group );
if ( amount > bank ) then
return exports.ngmessages:sendClientMessage ( "Your group doesn't have $"..tostring(amount).." in their bank account", source, 255, 0, 0 )
end
exports.ngmessages:sendClientMessage ( "You have withdrawn $"..tostring(amount).." from your groups bank... Actions logged", source, 0, 255, 0 )
givePlayerMoney ( source, amount )
setGroupBank ( group, bank - amount )
outputGroupLog ( group, "Withdrew $"..tostring(amount).." from the group bank", source )
end )

addEvent ( "NGGroups:Modules->BankSys:onPlayerAttemptDeposit", true )
addEventHandler ( "NGGroups:Modules->BankSys:onPlayerAttemptDeposit", root, function ( group, amount ) 
if ( not doesGroupExist ( group ) ) then
exports.ngmessages:sendClientMessage ( "Something went wrong with the server (Error Code: ngroup-2)", source, 255, 0, 0 );
setElementData ( source, "Group", "None" );
setElementData ( source, "Group Rank", "None" );
refreshPlayerGroupPanel ( source );
return false
end

local m = source.money;
if ( amount > m ) then
return exports.ngmessages:sendClientMessage ( "You don't have $"..tostring(amount), source, 255, 0, 0 )
end

exports.ngmessages:sendClientMessage ( "You deposited $"..tostring(amount).." into your group bank", source, 0, 255, 0 )
source.money = m - amount;
outputGroupLog ( group, "Deposited $"..tostring(amount).." into the group bank", source )
setGroupBank ( group, getGroupBank ( group ) + amount )
end )

------------------------------
-- Group Member Functions --
------------------------------
function getPlayerGroup ( player ) 
local g = getElementData ( player, "Group" ) or "None"
if ( g:lower ( ) == "none" ) then
g = nil
end
return g
end 


function refreshPlayerGroupPanel ( player )
triggerClientEvent ( player, "NGGroups->pEvents:onPlayerRefreshPanel", player ) 
player = nil
end 

function setPlayerGroup ( player, group )
local acc = getPlayerAccount ( player )
if ( isGuestAccount ( acc ) ) then
return false
end

if ( not group ) then
group = "None"
end

if ( group ~= "None" ) then
if ( not groups [ group ] ) then
return false
end
end 

setElementData ( player, "Group", group )
if ( group == "None" ) then
return setElementData ( player, "Group Rank", "None" )
else
groups [ group ].members [ getAccountName ( acc ) ] = { rank="Member", joined=getThisTime() }
return setElementData ( player, "Group Rank", "Member" )
end

return false
end 


addEvent ( "NGGroups->Modules->Gangs->kickPlayer", true )
addEventHandler ( "NGGroups->Modules->Gangs->kickPlayer", root, function ( group, account )
exports.ngsql:db_exec ( "UPDATE accountdata SET GroupName=?, GroupRank=? WHERE Username=?", "None", "None", account )
for i, v in pairs ( getElementsByType ( "player" ) ) do
local a = getPlayerAccount ( v )
if ( not isGuestAccount ( a ) and getAccountName ( a ) == account )  then
setElementData ( v, "Group", "None" )
setElementData ( v, "Group Rank", "None" )
outputChatBox ( "You got kicked from your group.", v, 255, 0, 0)
break
end
end 
groups [ group ].members [ account ] = nil
exports.ngmessages:sendClientMessage ( "You kicked "..tostring(account).." from "..tostring(group), source, 255, 255, 0 )
outputGroupLog ( group, "Kicked account "..tostring(account), source )
refreshPlayerGroupPanel ( source )
end )

addEvent ( "NGGroups->Modules->Groups->OnPlayerLeave", true )
addEventHandler ( "NGGroups->Modules->Groups->OnPlayerLeave", root, function ( g )
groups[g].members[getAccountName(getPlayerAccount(source))] = nil
setPlayerGroup ( source, nil )
refreshPlayerGroupPanel ( source )
outputGroupLog ( g, "Has left the group", source  )
end )

------------------------------------------
-- Players -> Group Ranking Functions  --
------------------------------------------
function setAccountRank ( group, account, newrank )
local account, newrank = tostring ( account ), tostring ( newrank )
exports.ngsql:db_exec ( "UPDATE accountdata SET GroupRank=? WHERE Username=?", newrank, account )
groups[group].members[account].rank = newrank
for i, v in pairs ( getElementsByType ( "player" ) ) do
local a = getPlayerAccount ( v )
if ( a and not isGuestAccount ( a ) and a == account ) then
setElementData ( v, "Group Rank", tostring ( newrank ) )
outputChatBox ( "You rank has been changed to "..tostring ( newrank ), v, 255, 255, 0)
break
end
end

return true
end

addEvent ( "NGGroups->Modules->Gangs->Ranks->UpdatePlayerrank", true )
addEventHandler ( "NGGroups->Modules->Gangs->Ranks->UpdatePlayerrank", root, function ( group, account, newrank )
if ( not groups[group] or not groups[group].ranks[newrank] ) then
exports.ngmessages:sendClientMessage ( "Oops, something went wrong. Please try again", source, 255, 0, 0 )
refreshPlayerGroupPanel ( source )
return false
end

outputGroupLog ( group, "Changed "..account.."'s rank from "..groups[group].members[account].rank.." to "..newrank, source )
setAccountRank ( group, account, newrank )
exports.ngmessages:sendClientMessage ( "You have changed "..tostring ( account ).."'s rank!", source, 255, 255, 0)
refreshPlayerGroupPanel ( source )
end )


function sendPlayerInvite ( player, group, inviter )
local a = getPlayerAccount ( player )
if ( isGuestAccount( a ) ) then
return  false
end

local a = getAccountName ( a )
if ( groups [ group ].pendingInvites [ a ] ) then 
return false
end

table.insert ( groups [ group ].pendingInvites, { to=getAccountName(getPlayerAccount(player)), inviter=getAccountName(getPlayerAccount(inviter)), time=getThisTime() } );

return true
end

addEvent ( "NGGroups->Modules->Groups->InvitePlayer", true )
addEventHandler ( "NGGroups->Modules->Groups->InvitePlayer", root, function ( group, plr )
local a = getPlayerAccount ( plr )
if ( isGuestAccount ( a ) ) then
return exports.ngmessages:sendClientMessage ( "Your group request couldn't be sent to "..plr.name, source, 255, 0, 0 )
end
local a = getAccountName ( a )

for _, info in pairs ( groups [ group ].pendingInvites ) do 
if ( info.to == a ) then 
return exports.ngmessages:sendClientMessage ( "This player is already invited by "..tostring(info.from), source, 255, 255, 0 )
end
end

outputGroupLog ( group, "Invited "..plr.name.." ("..a..")", source )

local r, g, b = getGroupColor ( group );
exports.ngmessages:sendClientMessage ( source.name.." invited you to "..group..". Accept it in F2", plr, r, g, b )
exports.ngmessages:sendClientMessage ( "You have invited "..plr.name.." to the group", source, r, g, b )
sendPlayerInvite ( plr, group, source ) 
end ) 

addEvent ( "NGGroups->Modules->Groups->Invites->OnPlayerDeny", true )
addEventHandler( "NGGroups->Modules->Groups->Invites->OnPlayerDeny", root, function ( g )
local a = getAccountName ( getPlayerAccount ( source ) )
groups [ g ].pendingInvites [ a ] = nil
refreshPlayerGroupPanel ( source )
end )

addEvent ( "NGGroups->Modules->Groups->Invites->OnPlayerAccept", true )
addEventHandler ( "NGGroups->Modules->Groups->Invites->OnPlayerAccept", root, function ( g )
local a = getAccountName ( getPlayerAccount ( source ) )

for index, info in pairs ( groups [ g ].pendingInvites ) do 
if ( info.to == a ) then
table.remove ( groups [ g ].pendingInvites, index )
end 
end 

groups [ g ].members [ a ] = { rank="Member", joined = getThisTime() }
setPlayerGroup ( source, g )
outputGroupMessage ( getPlayerName ( source ).." has joined the group!", g )
refreshPlayerGroupPanel ( source )
end )

function addRankToGroup ( group, name, info )
if ( not groups [ group ] ) then return false end
for i, v in pairs ( groups [ group ].ranks ) do
if ( i:lower() == name:lower() ) then
return false
end
end
groups [ group ].ranks [ name ] = info
return true
end 

addEvent ( "NGGroups->Modules->Groups->Ranks->AddRank", true )
addEventHandler ( "NGGroups->Modules->Groups->Ranks->AddRank", root, function ( group, name, info )
outputGroupLog ( group, "Added rank '"..tostring(name).."'", source )
addRankToGroup ( group, name, info )
refreshPlayerGroupPanel ( source )
exports.ngmessages:sendClientMessage ( "The rank has been added.", source, 0, 255, 0 )
end )

function setGroupMotd ( group, motd )
if ( groups [ group ] ) then
groups[group].info.desc = tostring ( motd )
return true
end
return false
end

addEvent ( "NGGroups->Modules->Groups->MOTD->Update", true )
addEventHandler ( "NGGroups->Modules->Groups->MOTD->Update", root, function ( g, mo )
outputGroupLog ( g, "Changed the group MOTD", source )
setGroupMotd ( g, mo )
refreshPlayerGroupPanel ( source )
end )



------------------------------
-- Group Checking Functions --
------------------------------
function doesGroupExist ( group )
local group = tostring ( group ):lower ( )
for i, v in pairs ( groups ) do
if ( tostring ( i ):lower ( ) == group ) then
group = nil
return true
end
end 
group = nil
return false
end

function isRankInGroup ( group, rank )
local group = tostring ( group ):lower ( )
for i, v in pairs ( groups ) do
if ( i:lower() == group ) then
if ( v.ranks and v.ranks [ rank ] ) then
return true
end 
break
end 
end 
return false
end 


------------------------------
-- Group Logging --
------------------------------
function groupClearLog ( group )
if ( groups [ group ] ) then
groups [ group ].log = nil
exports.NGSQL:db_exec ( "DELETE FROM group_logs WHERE id=?", groups[group].info.id )
groups [ group ].log = { }
group = nil
return true
end 
group = nil
return false
end

function outputGroupLog ( group, log, element )
if ( not groups[group] ) then return end
if ( not groups[group].log ) then groups[group].log = { } end

local e = "Server"
if ( element ) then
e = element
if ( type ( element ) == "userdata" ) then
if ( getElementType ( element ) == "player" ) then
local a = getPlayerAccount ( element )
if ( not isGuestAccount ( a ) ) then
e = getAccountName ( a )
end 
a = nil
end 
end 
end 

table.insert ( groups[group].log, 1, { time=getThisTime(), account=e, log=log } )
end 

function getGroupLog ( group )
if ( group and groups [ group ] ) then
local f = groups [ group ].log
return f
end 
end 


addEvent ( "NGGroups->GEvents:onPlayerClearGroupLog", true )
addEventHandler ( "NGGroups->GEvents:onPlayerClearGroupLog", root, function ( group ) 
groupClearLog ( group )
outputGroupLog ( group, "Cleared the logs", source )
refreshPlayerGroupPanel ( source )
-- memory sweep
group = nil
end ) 

addEvent( "NGGroups->GroupStaff:OnAdminDeleteGroup", true );
addEventHandler ( "NGGroups->GroupStaff:OnAdminDeleteGroup", root, function ( group )

for _, p in pairs ( getElementsByType ( "player" ) ) do 
if ( tostring ( getElementData ( p, "Group" ) ) == group ) then 
outputChatBox ( "Admin "..tostring(source.name).." has deleted your group.", p, 255, 0, 0 );
end 
end 

deleteGroup ( group );

refreshPlayerGroupPanel ( source );
end );


------------------------------
-- Misc Functions --
------------------------------
function getThisTime ( )
local time = getRealTime ( )
local year = time.year + 1900
local month = time.month + 1
local day = time.monthday
local hour = time.hour
local min = time.minute
local sec = time.second

if ( month < 10 ) then month = 0 .. month end
if ( day < 10 ) then day = 0 .. day end
if ( hour < 10 ) then hour = 0 .. hour end
if ( min < 10 ) then min = 0 .. min end
if ( sec < 10 ) then sec = 0 .. sec end
return table.concat ( { year, month, day }, "-") .. " "..table.concat ( { hour, min, sec }, ":" )
end 

function getGroupColor ( group )
local r, g, b = 0, 0, 0
if ( groups [ group ] ) then
r, g, b  = groups[group].info.color.r, groups[group].info.color.g, groups[group].info.color.b
end
return r, g, b
end 

function setGroupColor ( group, r, g, b )
if ( groups [ group ] ) then
groups[group].info.color.r = r
groups[group].info.color.g = g
groups[group].info.color.b = b
exports.ngturf:updateTurfGroupColor ( group )
return true
end 
return false
end 

addEvent("NGGroups->Modules->Groups->Colors->UpdateColor",true)
addEventHandler("NGGroups->Modules->Groups->Colors->UpdateColor",root,function(group,r,g,b)
outputGroupLog ( group, "Changed group color to ".. table.concat ( { r, g, b }, ", " ), source )
setGroupColor ( group, r, g, b )
refreshPlayerGroupPanel ( source )
end )

function getGroupType ( name )
if ( doesGroupExist ( name ) ) then
return groups [ name ].info.type;
end
return false;
end


function isRankInGroup ( group, rank )
if ( doesGroupExist ( group ) ) then
if ( groups [ group ].ranks [ rank ] ) then
return true
end
end
return false
end 

function outputGroupMessage ( message, group, blockTag )

local blockTag = blockTag or false

if ( not blockTag ) then
message = "("..tostring(group)..") "..tostring(message)
end

local r, g, b = getGroupColor ( group )
local group = tostring ( group ):lower ( )
for i, v in ipairs ( getElementsByType ( "player" ) ) do
if ( tostring ( getElementData ( v, "Group" ) ):lower ( ) == group:lower() ) then
outputChatBox ( message, v, r, g, b, true )
end 
end 
end 

function table.len ( t )
local c = 0
for i in pairs ( t ) do
c = c + 1
end
return c
end



-- group chat --
addCommandHandler ( "gc", function ( plr, _, ... )
local message = table.concat ( { ... }, " " )
local g = getPlayerGroup ( plr )
if ( not g ) then
return exports.ngmessages:sendClientMessage ( "You cannot use this command, you're not in a group", plr, 255, 0, 0 )
end

if ( message:gsub ( " ", "" ) == "" ) then
return exports.ngmessages:sendClientMessage ( "You didn't enter a message. Syntax: /gc message", plr, 255, 0, 0 )
end

outputGroupMessage("[Group] ".. exports.ngchat:getChatLine ( plr, message ), g, true )
end )

 

 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...