mirror of
https://github.com/jimathy/jim-consumables.git
synced 2026-08-17 06:26:03 +01:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
762240b500 | ||
|
|
0a0f60468a | ||
|
|
9b189d89f5 | ||
|
|
62db9f6900 | ||
|
|
6317dee667 | ||
|
|
15bb54c206 | ||
|
|
94023857ff |
71
.github/workflows/notify-release.yml
vendored
Normal file
71
.github/workflows/notify-release.yml
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
name: Discord Release Notifier
|
||||
|
||||
on:
|
||||
# Manual or UI-published releases
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
# Releases created by your tag-driven workflow
|
||||
workflow_run:
|
||||
workflows: ["Package & Release"] # must match the 'name:' in release.yml
|
||||
types: [completed]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
# 1) Handle manual / UI / non-workflow-created releases
|
||||
notify-from-release:
|
||||
if: github.event_name == 'release' && github.event.action == 'published'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Send release payload to Discord Bot
|
||||
env:
|
||||
URL: http://${{ secrets.DISCORDBOT }}:3000/github-releases
|
||||
run: |
|
||||
curl -sS -X POST "$URL" \
|
||||
-H 'Content-Type: application/json' \
|
||||
--data-binary "@$GITHUB_EVENT_PATH"
|
||||
|
||||
# 2) Handle releases created by your 'Package & Release' workflow
|
||||
# (which won’t trigger `on: release` when using GITHUB_TOKEN)
|
||||
notify-from-workflow-run:
|
||||
if: >
|
||||
github.event_name == 'workflow_run' &&
|
||||
github.event.workflow_run.conclusion == 'success'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install jq
|
||||
run: sudo apt-get update && sudo apt-get install -y jq
|
||||
|
||||
- name: Fetch release JSON by tag
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
OWNER="${GITHUB_REPOSITORY%/*}"
|
||||
REPO="${GITHUB_REPOSITORY#*/}"
|
||||
TAG="${{ github.event.workflow_run.head_branch }}"
|
||||
# head_branch is the tag name for a tag push workflow_run
|
||||
curl -fsSL -H "Authorization: Bearer $GH_TOKEN" \
|
||||
-H "Accept: application/vnd.github+json" \
|
||||
"https://api.github.com/repos/$OWNER/$REPO/releases/tags/$TAG" \
|
||||
> release.json
|
||||
|
||||
- name: Wrap as 'release' event payload & notify bot
|
||||
env:
|
||||
URL: http://${{ secrets.DISCORDBOT }}:3000/github-releases
|
||||
run: |
|
||||
set -euo pipefail
|
||||
jq -n --slurpfile rel release.json \
|
||||
--arg repo "$GITHUB_REPOSITORY" \
|
||||
--arg repo_url "https://github.com/$GITHUB_REPOSITORY" \
|
||||
--arg action "published" '
|
||||
{ action: $action,
|
||||
repository: { full_name: $repo, html_url: $repo_url },
|
||||
release: $rel[0],
|
||||
sender: { login: "github-actions[bot]" } }' > payload.json
|
||||
|
||||
curl -sS -X POST "$URL" \
|
||||
-H 'Content-Type: application/json' \
|
||||
--data-binary "@payload.json"
|
||||
@@ -63,7 +63,7 @@ RegisterNetEvent(getScript()..':Consume', function(itemName)
|
||||
|
||||
if requiredItem then
|
||||
if not hasItem(requiredItem, 1) then
|
||||
triggerNotify(nil, "You need a "..Items[requiredItem].label, "error")
|
||||
triggerNotify(nil, "You need a "..getItemLabel(requiredItem), "error")
|
||||
return
|
||||
else
|
||||
-- if requiredItem == "lighter" then breakTool({ item = "lighter", damage = math.random(0, 1) }) end
|
||||
@@ -137,14 +137,15 @@ RegisterNetEvent(getScript()..':Consume', function(itemName)
|
||||
local canRun = consumable.canRun
|
||||
local stats = consumable.stats
|
||||
|
||||
local time, stress, heal, armor, needStats = GenerateRandomValues({
|
||||
local time, heal, armor, needStats = GenerateRandomValues({
|
||||
time = consumable.time or { 5000, 6000 },
|
||||
stress = consumable.stress or 0,
|
||||
heal = consumable.heal or 0,
|
||||
armor = consumable.armor or 0,
|
||||
hunger = consumable.stats and consumable.stats.hunger or 0,
|
||||
thirst = consumable.stats and consumable.stats.thirst or 0,
|
||||
stress = consumable.stress or 0,
|
||||
})
|
||||
|
||||
if emote.AnimationOptions.Prop then
|
||||
model = emote.AnimationOptions.Prop
|
||||
bone = GetPedBoneIndex(Player, emote.AnimationOptions.PropBone)
|
||||
@@ -209,7 +210,7 @@ RegisterNetEvent(getScript()..':Consume', function(itemName)
|
||||
CreateThread(function()
|
||||
if progressBar({
|
||||
time = time,
|
||||
label = string..Items[itemName].label.."..",
|
||||
label = string..getItemLabel(itemName).."..",
|
||||
dead = false,
|
||||
disableMovement = false,
|
||||
disableCombat = true,
|
||||
@@ -221,7 +222,7 @@ RegisterNetEvent(getScript()..':Consume', function(itemName)
|
||||
end
|
||||
end)
|
||||
else
|
||||
triggerNotify(nil, string..Items[itemName].label.."..", "success")
|
||||
triggerNotify(nil, string..getItemLabel(itemName).."..", "success")
|
||||
end
|
||||
|
||||
consuming = true
|
||||
@@ -263,7 +264,7 @@ RegisterNetEvent(getScript()..':Consume', function(itemName)
|
||||
"Type: "..(type or ""),
|
||||
"Hunger: "..(needStats.hunger or 0).."%",
|
||||
"Thirst: "..(needStats.thirst or 0).."%",
|
||||
"Stress: "..(stress or 0).."%",
|
||||
"Stress: "..(needStats.stress or 0).."%",
|
||||
"Heal: "..(heal or 0).."%",
|
||||
"Armour: "..(armor or 0).."%",
|
||||
}, nil, nil)
|
||||
@@ -294,39 +295,9 @@ RegisterNetEvent(getScript()..':Consume', function(itemName)
|
||||
|
||||
if not cancelled then
|
||||
hideText()
|
||||
local needTypes = { }
|
||||
|
||||
if needStats then
|
||||
TriggerServerEvent(getScript()..":server:finishConsume", needStats)
|
||||
|
||||
--jsonPrint(needStats)
|
||||
if needStats.hunger > 0 then
|
||||
if Core and Core.Functions then
|
||||
needTypes.hunger = (Core.Functions.GetPlayerData().metadata["hunger"] or 0) + needStats.hunger
|
||||
needTypes.hunger = needTypes.hunger > 100 and 100 or needTypes.hunger
|
||||
|
||||
elseif ESX and ESX.GetPlayerData then
|
||||
needTypes.hunger = (needStats.hunger / 100) * 1000000
|
||||
needTypes.hunger = needTypes.hunger > 1000000 and 1000000 or needTypes.hunger
|
||||
end
|
||||
end
|
||||
|
||||
if needStats.thirst > 0 then
|
||||
if Core and Core.Functions then
|
||||
needTypes.thirst = (Core.Functions.GetPlayerData().metadata["thirst"] or 0) + needStats.thirst
|
||||
needTypes.thirst = needTypes.thirst > 100 and 100 or needTypes.thirst
|
||||
|
||||
elseif ESX and ESX.GetPlayerData then
|
||||
needTypes.thirst = (needStats.thirst / 100) * 1000000
|
||||
needTypes.thirst = needTypes.thirst > 1000000 and 1000000 or needTypes.thirst
|
||||
end
|
||||
end
|
||||
end
|
||||
TriggerServerEvent(getScript()..":server:finishConsume", needTypes)
|
||||
|
||||
if stress and stress ~= 0 then
|
||||
debugPrint("^5Debug^7: ^3Consume^7: ^2Relieving ^6"..stress.." ^2stress^7.")
|
||||
TriggerServerEvent('hud:server:RelieveStress', stress)
|
||||
end
|
||||
if heal and heal ~= 0 then
|
||||
debugPrint("^5Debug^7: ^3Consume^7: ^2Healing player by^7: ^6"..heal)
|
||||
SetEntityHealth(Player, GetEntityHealth(Player) + heal)
|
||||
@@ -336,15 +307,41 @@ RegisterNetEvent(getScript()..':Consume', function(itemName)
|
||||
TriggerServerEvent('hospital:server:SetArmor', (GetPedArmour(Player) + armor)) SetPedArmour(Player, (GetPedArmour(Player) + armor))
|
||||
end
|
||||
if type == "alcohol" then
|
||||
alcoholCount += 1
|
||||
debugPrint("^5Debug^7: ^3Consume^7: ^2Current ^4alcoholCount^7: ^6"..alcoholCount)
|
||||
if alcoholCount > 1 and alcoholCount < 4 then
|
||||
TriggerEvent("evidence:client:SetStatus", "alcohol", 200)
|
||||
elseif alcoholCount >= 4 then
|
||||
TriggerEvent("evidence:client:SetStatus", "heavyalcohol", 200)
|
||||
CreateThread(function()
|
||||
AlienEffect()
|
||||
end) -- Used as overdosing/too drunk effect
|
||||
if checkExportExists("jim_bridge", "addAlcoholCount") then
|
||||
exports.jim_bridge:addAlcoholCount(1, stats.canOD)
|
||||
else
|
||||
alcoholCount = alcoholCount + 1
|
||||
debugPrint("^5Debug^7: ^3Consume^7: ^2Current ^4alcoholCount^7: ^6"..alcoholCount)
|
||||
if alcoholCount > 1 and alcoholCount <= 4 then
|
||||
TriggerEvent("evidence:client:SetStatus", "alcohol", 200)
|
||||
elseif alcoholCount >= 4 then
|
||||
TriggerEvent("evidence:client:SetStatus", "heavyalcohol", 200)
|
||||
CreateThread(function()
|
||||
AlienEffect()
|
||||
end)
|
||||
end
|
||||
|
||||
if stats.canOD and alcoholCount >= 5 then
|
||||
SetEntityHealth(Player, GetEntityHealth(Player) - math.random(5, 10))
|
||||
end
|
||||
end
|
||||
end
|
||||
if type == "drug" then
|
||||
if checkExportExists("jim_bridge", "addDrugCount") then
|
||||
exports.jim_bridge:addDrugCount(1, stats.canOD or false)
|
||||
else
|
||||
drugCount = drugCount + 1
|
||||
debugPrint("^5Debug^7: ^3Consume^7: ^2Current ^4drugCount^7: ^6"..drugCount)
|
||||
if drugCount > 3 and drugCount < 7 then
|
||||
|
||||
elseif drugCount >= 7 then
|
||||
CreateThread(function()
|
||||
AlienEffect()
|
||||
end)
|
||||
end
|
||||
if stats.canOD and drugCount >= 4 then
|
||||
SetEntityHealth(Player, GetEntityHealth(Player) - math.random(5, 10))
|
||||
end
|
||||
end
|
||||
end
|
||||
if stats then
|
||||
@@ -366,14 +363,8 @@ RegisterNetEvent(getScript()..':Consume', function(itemName)
|
||||
end
|
||||
end
|
||||
if stats.canOD then
|
||||
drugCount += 1
|
||||
debugPrint("^5Debug^7: ^3Consume^7: ^2Current ^4drugCount^7: ^6"..drugCount)
|
||||
if drugCount >= 4 then
|
||||
debugPrint("^5Debug^7: ^3Consume^7: ^2Current ^4drugCount^7: ^6"..drugCount.."^7 - ^2 removing health")
|
||||
SetEntityHealth(PlayerPedId(), GetEntityHealth(Player) - math.random(10, 15))
|
||||
if drugCount >= 7 then
|
||||
CreateThread(function() AlienEffect() end) -- If too many drugs, if not dead will make you stumble
|
||||
end
|
||||
if drugCount >= 4 or alcoholCount >= 5 then
|
||||
SetEntityHealth(Player, GetEntityHealth(Player) - math.random(5, 10))
|
||||
end
|
||||
end
|
||||
if stats.effect then
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name "Jim-Consumables"
|
||||
author "Jimathy"
|
||||
version "2.0.06"
|
||||
version "2.0.08"
|
||||
description "Consumables Script"
|
||||
fx_version "cerulean"
|
||||
game "gta5"
|
||||
|
||||
@@ -142,12 +142,17 @@ RegisterNetEvent(getScript()..":server:finishConsume", function(needTypes)
|
||||
|
||||
-- Needs
|
||||
if needTypes.thirst then
|
||||
debugPrint("^5Debug^7: ^2Thrist^7: [^6"..(needTypes.thirst or 0).."^7]")
|
||||
setThirst(src, needTypes.thirst)
|
||||
end
|
||||
if needTypes.hunger then
|
||||
debugPrint("^5Debug^7: ^2Hunger^7: [^6"..(needTypes.hunger or 0).."^7]")
|
||||
setHunger(src, needTypes.hunger)
|
||||
end
|
||||
debugPrint("^5Debug^7: ^2Hunger^7: [^6"..(needTypes.hunger or 0).."^7] ^2Thrist^7: [^6"..(needTypes.thirst or 0).."^7]" )
|
||||
if needTypes.stress then
|
||||
debugPrint("^5Debug^7: ^2Stress^7: [^6"..(needTypes.stress or 0).."^7]")
|
||||
setStress(src, needTypes.stress)
|
||||
end
|
||||
isConsuming[src] = nil
|
||||
else
|
||||
return
|
||||
|
||||
@@ -15,9 +15,23 @@ function GenerateRandomValues(data)
|
||||
transData[k] = v
|
||||
end
|
||||
end
|
||||
return transData["time"],
|
||||
transData["stress"],
|
||||
transData["heal"],
|
||||
transData["armor"],
|
||||
{ hunger = transData["hunger"], thirst = transData["thirst"] }
|
||||
if transData.hunger > 0 then
|
||||
transData.hunger = transData.hunger > 100 and 100 or transData.hunger
|
||||
end
|
||||
|
||||
if transData.thirst > 0 then
|
||||
transData.thirst = transData.thirst > 100 and 100 or transData.thirst
|
||||
end
|
||||
|
||||
if transData.stress > 0 then
|
||||
transData.stress = transData.stress > 100 and 100 or transData.stress
|
||||
end
|
||||
return transData["time"],
|
||||
transData["heal"],
|
||||
transData["armor"],
|
||||
{
|
||||
hunger = transData["hunger"],
|
||||
thirst = transData["thirst"],
|
||||
stress = transData["stress"]
|
||||
}
|
||||
end
|
||||
@@ -1,5 +1,7 @@
|
||||
2.0.06
|
||||
2.0.08
|
||||
|
||||
- Increase Secuirty to prevent potential exploits
|
||||
- Fix issues with stress calculations
|
||||
- Separates "drug control" from canOD boolean
|
||||
- Adds support for jim_bridge built-in synchronized alcohol/drug effects
|
||||
|
||||
https://github.com/jimathy/jim-consumables
|
||||
https://github.com/jimathy/jim-consumables/releases/latest
|
||||
Reference in New Issue
Block a user