Skip to content

Commit

Permalink
v1.0.3 update
Browse files Browse the repository at this point in the history
  • Loading branch information
SamuraiDevCo authored Jul 25, 2024
1 parent ceff78a commit 95ef106
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 17 deletions.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# SDC_Codes

This script allows your server to give back to the community and get citizens to invite their buddies! This script can give rewards as in items and money for inviting friends. It also allows for your server to create Server Wide Codes that can be claimed by players. All friend rewards are saved via Database to make sure that the players always get their reward! There is a configurable time limit for new players to avoid the abuse of using everyones friend code!
This script allows your server to give back to the community and get citizens to invite their buddies! This script can give rewards as in items and money for inviting friends. It also allows for your server to create Server Wide Codes that can be claimed by players. All friend rewards are saved via Database to make sure that the players always get their reward! There is a configureable time limit for new players to avoid the abuse of using everyones friend code!

# Demo: https://youtu.be/DgFRsaK7RrM
# Demo:

# Requirements
- ESX LEGACY OR QBCORE
Expand All @@ -24,6 +24,7 @@ Support may be limited for Free Resources but you can always ask for help for Sa
3. Configure the config to your needs and make sure to set your framework and reward items/money!
4. Upload the db.sql file into your database
5. Configure your admins you want to be allowed access to creating codes in src\server\server.lua
6. IF you want Webhooks, configure them in the server!

# Credits
This resource was made from scratch by Samurai Development! The owner of Samurai Development is Hobo(discord: hobodevco). Please do not steal/rip my work and sell/release for yourself. Any further questions or concerns may be disclosed with Hobo!
12 changes: 11 additions & 1 deletion config/lang.lua
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,15 @@ SDC.Lang = {
DuplicateCode = "There Is Already A Code Made With This Name!",
CodeCreated = "Code Created",
CodesCommandSuggestion = "Used To Share/Claim Friend Codes And Claim Server Wide Codes For Rewards!",
CodeCreatorCommandSuggestion = "Used To Create Server Wide Codes (Admins Only)"
CodeCreatorCommandSuggestion = "Used To Create Server Wide Codes (Admins Only)",
PlayerInfo = "Player Info",
Name = "Name",
Id = "Id",
Identifier = "Identifier",
CodeInfo = "Code Info",
RewardInfo = "Reward Info",
PlayerClaimedFriendCode = "Player Claimed Friend Code",
PlayerClaimedServerCode = "Player Claimed Server Code",
PlayerClaimedRewards = "Player Claimed Rewards",
PlayerCreatedCode = "Player Created Code"
}
10 changes: 1 addition & 9 deletions fxmanifest.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,7 @@ games { 'gta5' }

author 'HoboDevCo#3011'
description 'SDC | Codes Script'
version '1.0.2'

ui_page 'src/html/index.html'
files {
'src/html/index.html',
'src/html/init.js',
}
version '1.0.3'

shared_script {
"@ox_lib/init.lua",
Expand All @@ -30,9 +24,7 @@ server_scripts {

escrow_ignore {
"config/config.lua",
"config/lang.lua",
"src/client/client.lua",
"src/client/client_customize_me.lua",
"src/server/server.lua",
"src/server/server_customize_me.lua",
}
Expand Down
4 changes: 1 addition & 3 deletions src/client/client.lua
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,7 @@ RegisterCommand('codes', function()
{label = SDC.Lang.CodeUses, value = myCode.Uses}
},
onSelect = function()
SendNUIMessage({
code = myCode.Code,
})
lib.setClipboard(myCode.Code)
TriggerEvent("SDCC:Client:Notification", SDC.Lang.CopiedCode, "success")
end,
},
Expand Down
125 changes: 123 additions & 2 deletions src/server/server.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,12 @@ CodeCreators = { --This is where you add all your code creators, must match the
}



Webhooks = { --Put Discord Webhook Links In these
ClaimFriendCode = "",
ClaimServerCode = "",
RedeemRewards = "",
CreateCode = ""
}


--------------------------------------------------------------------ADD CODE CREATORS ABOVE--------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -43,6 +48,7 @@ CreateThread(function()
for i=1, #temp_cCodes do
cCodes2[temp_cCodes[i].code] = {RewardData = json.decode(temp_cCodes[i].reward_data)}
end

cCodes = cCodes2
end

Expand All @@ -53,6 +59,15 @@ CreateThread(function()
print('^1[SDC_Codes] ^0Deleted ^2'..result..' ^0expired codes from the database.')
end
end)
local temp_cCodes = MySQL.query.await('SELECT * from sd_createdcodes', {})
if temp_cCodes and temp_cCodes[1] then
local cCodes2 = {}
for i=1, #temp_cCodes do
cCodes2[temp_cCodes[i].code] = {RewardData = json.decode(temp_cCodes[i].reward_data)}
end

cCodes = cCodes2
end
Wait(SDC.CheckCodesInterval*60000)
end
end)
Expand Down Expand Up @@ -193,6 +208,21 @@ AddEventHandler("SDCC:Server:CheckCode", function(daCode)
TriggerClientEvent("SDCC:Client:UpdateToCode", pIdentToId[pCodes_code[daCode].Identifier], {Code = pCodes_identifier[ident].Code, Uses = pCodes_identifier[ident].Uses, Playtime = pCodes_identifier[ident].Playtime, UsedCodes = pCodes_identifier[ident].UsedCodes, UsedFCodes = pCodes_identifier[ident].UsedFCodes, RewardsToClaim = pCodes_identifier[ident].RewardsToClaim})
end

if Webhooks.ClaimFriendCode ~= "" then
local dat = {
{
["name"] = "**"..SDC.Lang.PlayerInfo..":**",
["value"] = SDC.Lang.Name..": **"..GetPlayerName(src).."**\n"..SDC.Lang.Id..": **"..src.."**\n"..SDC.Lang.Identifier..": **"..ident.."**",
["inline"] = false
},
{
["name"] = "**"..SDC.Lang.CodeInfo..":**",
["value"] = SDC.Lang.Code..": **"..daCode.."**",
["inline"] = false
}
}
sendToDiscord(dat, 32768, SDC.Lang.PlayerClaimedFriendCode, Webhooks.ClaimFriendCode)
end

TriggerClientEvent("SDCC:Client:Notification", src, SDC.Lang.ClaimedFriendCode, "success")
else
Expand All @@ -215,8 +245,14 @@ AddEventHandler("SDCC:Server:CollectRewards", function()

if ident and ident ~= "nil" then
if pCodes_identifier[ident].RewardsToClaim.Items[1] or pCodes_identifier[ident].RewardsToClaim.Money > 0 then
local itemstring = "None"
for k,v in pairs(pCodes_identifier[ident].RewardsToClaim.Items) do
GiveItem(src, k, v)
if itemstring ~= "None" then
itemstring = itemstring..", "..v.."x "..k
else
itemstring = v.."x "..k
end
end
if pCodes_identifier[ident].RewardsToClaim.Money > 0 then
GiveMoney(src, pCodes_identifier[ident].RewardsToClaim.Money)
Expand All @@ -227,6 +263,21 @@ AddEventHandler("SDCC:Server:CollectRewards", function()
MySQL.update('UPDATE sd_codes SET rewardstoclaim = ? WHERE (`identifier`) = (?)', {json.encode(pCodes_identifier[ident].RewardsToClaim), ident})
TriggerClientEvent("SDCC:Client:Notification", src, SDC.Lang.RewardsClaimed, "success")
TriggerClientEvent("SDCC:Client:UpdateToCode", src, {Code = pCodes_identifier[ident].Code, Uses = pCodes_identifier[ident].Uses, Playtime = pCodes_identifier[ident].Playtime, UsedCodes = pCodes_identifier[ident].UsedCodes, UsedFCodes = pCodes_identifier[ident].UsedFCodes, RewardsToClaim = pCodes_identifier[ident].RewardsToClaim})
if Webhooks.RedeemRewards ~= "" then
local dat = {
{
["name"] = "**"..SDC.Lang.PlayerInfo..":**",
["value"] = SDC.Lang.Name..": **"..GetPlayerName(src).."**\n"..SDC.Lang.Id..": **"..src.."**\n"..SDC.Lang.Identifier..": **"..ident.."**",
["inline"] = false
},
{
["name"] = "**"..SDC.Lang.RewardInfo..":**",
["value"] = SDC.Lang.CodeCreator9..": **$"..pCodes_identifier[ident].RewardsToClaim.Money.."**\n"..SDC.Lang.CodeCreator5..": **"..itemstring.."**",
["inline"] = false
}
}
sendToDiscord(dat, 78368, SDC.Lang.PlayerClaimedRewards, Webhooks.RedeemRewards)
end
else
TriggerClientEvent("SDCC:Client:Notification", src, SDC.Lang.NothingToClaim, "error")
end
Expand All @@ -252,17 +303,44 @@ AddEventHandler("SDCC:Server:CheckGlobalCode", function(daCode)
end

if canClaim then
local itemstring = "None"
table.insert(pCodes_identifier[ident].UsedCodes, daCode)
table.insert(pCodes_code[pCodes_identifier[ident].Code].UsedCodes, daCode)
for k,v in pairs(cCodes[daCode].RewardData.Items) do
GiveItem(src, k, v)
if itemstring ~= "None" then
itemstring = itemstring..", "..v.."x "..k
else
itemstring = v.."x "..k
end
end
if cCodes[daCode].RewardData.Money > 0 then
GiveMoney(src, cCodes[daCode].RewardData.Money)
end
MySQL.update('UPDATE sd_codes SET usedcodes = ? WHERE (`identifier`) = (?)', {json.encode(pCodes_identifier[ident].UsedCodes), ident})
TriggerClientEvent("SDCC:Client:Notification", src, SDC.Lang.CodeClaimed, "success")
TriggerClientEvent("SDCC:Client:UpdateToCode", src, {Code = pCodes_identifier[ident].Code, Uses = pCodes_identifier[ident].Uses, Playtime = pCodes_identifier[ident].Playtime, UsedCodes = pCodes_identifier[ident].UsedCodes, UsedFCodes = pCodes_identifier[ident].UsedFCodes, RewardsToClaim = pCodes_identifier[ident].RewardsToClaim})

if Webhooks.ClaimServerCode ~= "" then
local dat = {
{
["name"] = "**"..SDC.Lang.PlayerInfo..":**",
["value"] = SDC.Lang.Name..": **"..GetPlayerName(src).."**\n"..SDC.Lang.Id..": **"..src.."**\n"..SDC.Lang.Identifier..": **"..ident.."**",
["inline"] = false
},
{
["name"] = "**"..SDC.Lang.CodeInfo..":**",
["value"] = SDC.Lang.Code..": **"..daCode.."**",
["inline"] = false
},
{
["name"] = "**"..SDC.Lang.RewardInfo..":**",
["value"] = SDC.Lang.CodeCreator9..": **$"..cCodes[daCode].RewardData.Money.."**\n"..SDC.Lang.CodeCreator5..": **"..itemstring.."**",
["inline"] = false
}
}
sendToDiscord(dat, 9498256, SDC.Lang.PlayerClaimedServerCode, Webhooks.ClaimServerCode)
end
else
TriggerClientEvent("SDCC:Client:Notification", src, SDC.Lang.AlreadyClaimed, "error")
end
Expand Down Expand Up @@ -311,7 +389,15 @@ AddEventHandler("SDCC:Server:CreateTheCode", function(codeData)
end

if can then
if codeData.Code and (codeData.RewardData.Money >= 0 or list ~= SDC.Lang.CodeCreator6) and codeData.Expires > 0 then
local itemstring = "None"
for k,v in pairs(codeData.RewardData.Items) do
if itemstring ~= "None" then
itemstring = itemstring..", "..v.."x "..k
else
itemstring = v.."x "..k
end
end
if codeData.Code and (codeData.RewardData.Money >= 0 or itemstring ~= "None") and codeData.Expires > 0 then
if not cCodes[codeData.Code] then
cCodes[codeData.Code] = {RewardData = codeData.RewardData}
MySQL.insert('INSERT INTO sd_createdcodes (code, reward_data, date_creation, date_deletion) VALUES (?, ?, NOW(), DATE_ADD(NOW(), INTERVAL ? HOUR))',
Expand All @@ -322,6 +408,21 @@ AddEventHandler("SDCC:Server:CreateTheCode", function(codeData)
}
)
TriggerClientEvent("SDCC:Client:Notification", src, SDC.Lang.CodeCreated, "success")
if Webhooks.CreateCode ~= "" then
local dat = {
{
["name"] = "**"..SDC.Lang.PlayerInfo..":**",
["value"] = SDC.Lang.Name..": **"..GetPlayerName(src).."**\n"..SDC.Lang.Id..": **"..src.."**\n"..SDC.Lang.Identifier..": **"..ident.."**",
["inline"] = false
},
{
["name"] = "**"..SDC.Lang.CodeInfo..":**",
["value"] = SDC.Lang.Code..": **"..codeData.Code.."**\n"..SDC.Lang.CodeCreator9..": **$"..codeData.RewardData.Money.."**\n"..SDC.Lang.CodeCreator5..": **"..itemstring.."**",
["inline"] = false
}
}
sendToDiscord(dat, 16753920, SDC.Lang.PlayerCreatedCode, Webhooks.CreateCode)
end
else
TriggerClientEvent("SDCC:Client:Notification", src, SDC.Lang.DuplicateCode, "error")
end
Expand Down Expand Up @@ -401,4 +502,24 @@ function GetNewCode()
Wait(500)
until newCode
return newCode
end



function sendToDiscord(field, colour, titles, webhook)
local embed = {
{
["fields"] = field,
["color"] = colour,
["title"] = titles,
["description"] = message,
["footer"] = {
["text"] = "Server Timestamp: "..os.date("%x %X %p"),
},
["thumbnail"] = {
["url"] = "https://media.discordapp.net/attachments/1199126784394924073/1209954493605744690/samlogo.png",
},
}
}
PerformHttpRequest(webhook, function(err, text, headers) end, 'POST', json.encode({username = "SDC Codes Script", embeds = embed, avatar_url = "https://media.discordapp.net/attachments/1199126784394924073/1209954493605744690/samlogo.png"}), { ['Content-Type'] = 'application/json' })
end

0 comments on commit 95ef106

Please sign in to comment.