Hello again FiveMers
Ever wanted your server to include some diseases?
Well i think this might help you out
Add an endless amount of diseases to you server (granted you will need to add ways to get them) and watch your players suffer and have much better medical rp!
Simulate all types of diseases like COVID-19 or The Plague or even some common sicknesses like The Flu!
Whats’ included?
A simple system to manage as many diseases as you want!
Add ways for your players to get sick
Players can spread diseases between each other!
Have new medicines in your server!
Synced sounds so players can hear others
Give medical roleplay a new way to play!
Resmon: 0.00-0.01
Support for STD’s for my other script: SexV | FiveM Sex/Sleep/Pregnancy Script 18+ [QBcore/ESX/Standalone]
Support for extended diseases in HygieneV | Pee/Poop/Shower/Bath/Porta Pottie
Video Showcase
give me a little subscribe on there pretty please
This script is aimed at developers with an understanding on how triggerevents/exports work as you will need to know how to add them to what ever you want a player to get a disease from.
A basic system is shown in the config.lua on how you could do this/add to it!
Docs, This script does require a very basic understanding of lua/events
CatchDisease(type, chance, checkifalreadyhasit):
exports['k_diseases']:CatchDisease(type, chance, checkifalreadyhasit)
TriggerEvent('k_diseases:catchdisease', type, chance, checkifalreadyhasit)
This can be used to give a player a specified disease, example:
exports['k_diseases']:CatchDisease("Common Cold", 100, false)
ClearDisease(type):
exports['k_diseases']:ClearDisease(type)
TriggerEvent('k_diseases:cleardisease', type)
This can be used to remove a player a specified disease example:
exports['k_diseases']:ClearDisease("Common Cold")
GetDiseases():
exports['k_diseases']:GetDiseases()
This is used to return all a players diseases
exports['k_diseases']:GetDiseases()['Common Cold'].hasDiseases
ClearAllDisease():
exports['k_diseases']:ClearAllDisease()
TriggerEvent('k_diseases:clearall')
Removes all a specified player’s current diseases
exports['k_diseases']:ClearAllDisease()
Config
Config = {}
Config.Variables = {
Framework = 'QB', -- QB/ESX/None -- set to none to use k_diseases:forceStart trigger instead
Notify = 'QB', -- QB/ESX/Custom -- custom function below
ESXSharedObject = 'esx:getSharedObject', -- leave as is for qb(it wont be used)
SearchForDiseasesTime = 1, -- in mins 0.5 = 30 secs, 1 = 1min, 10 = 10min
Cooldown = 0.5, -- in mins 0.5 = 30 secs, 1 = 1min, 10 = 10min
CycleTime = 5000, -- in MS, 5000 = 5 secs (time between disease effects)
useBuiltInSearch = true, -- Use sickness inducers from the function Search() at line 366
UseCommands = false, -- Enable /useMed exmaple: (/useMed tylenol)
Debug = false, -- Enable /sickness (for restarting the script to test) /getS Use to give yourself a disease (/getS "Common Cold") /removeS removes a disease (/removeS "Common Cold") /removeAllS removes all diseases
}
--[[
TriggerEvent('k_diseases:getPlayerSicknes') -- you can add this to a radial menu or a command to disable a nearby players diseases
]]
-- This system works with SexV you can get it here! https://kbase.tebex.io/
--** NOTE WHEN CHANGING/ADDING NEW DISEASES YOU WILL HAVE TO REMOVE/WIPE SICKNESS DATA FROM DB**--
Config.Diseases = {
['Common Cold'] = {
hasDiseases = false,
iterations = 15,
},
['Bad Stomach'] = {
hasDiseases = false,
iterations = 15,
},
['Diarrhea'] = {
hasDiseases = false,
iterations = 10,
chance = 50
},
['Headache'] = {
hasDiseases = false,
iterations = 10,
},
['Dizzy'] = {
hasDiseases = false,
iterations = 10,
},
['Covid'] = {
hasDiseases = false,
iterations = 100,
},
-------Only if using SexV---------
['Chlamydia'] = {
hasDiseases = false,
iterations = 10,
},
['Gonorrhea'] = {
hasDiseases = false,
iterations = 10,
},
['Herpes'] = {
hasDiseases = false,
iterations = 10,
}
}
--[[ ##EXAMPLE Disease YOU WILL NEED TO WIPE player_sickness AFTER ADDING NEW DISEASES
['Scary'] = {
hasDiseases = false,
iterations = 10,
}
['Scary'] = {
animation = {dict = "missprologueig_5@cough", anim = "walk", time = 2000}, --set animation = false for no anim
walk = false, --set walk = false for no walk, set time to false for infinite
deplete = true, -- Depletes from set iterations (once iterations are done the player gets cured)
catchNotify = "You caught a Common Cold", -- or false
notify = false, -- Everytime effects happen
spreadData = {range = 2.0, chance=50}, -- Chance to spread in % (50 = 50%, 100 = 100%)
sound = {
male = 'sneeze', female = 'sneezefemale', range = 3.0, volume = 0.5, sourceonly = false
}, -- or false
medication = {
'tylenol',
}, -- or false
Effects = { -- Effects in MS
hurt = {damage = 5}, -- or false
blur = {transitionIn = 1000, transitionOut = 1000}, -- set to blur = false to disable blur
screenEffect = {effectName="DanceIntensity03", duration=5000}, --or false
ragdoll = {time = 1000}, -- or false
sickpfx = true, -- or false
affectDriving = {time = 10}, -- or false
}
},
]]
Config.SicknessEffects = { -- times should be should be less than CycleTime
['Common Cold'] = {
animation = {dict = "missprologueig_5@cough", anim = "walk", time = 2000}, --set animation = false for no anim
walk = false, --set walk = false for no walk, set time to false for infinite
deplete = true, -- Depletes from set iterations (once iterations are done the player gets cured)
catchNotify = "You caught a Common Cold",
notify = false, -- Everytime effects happen
spreadData = {range = 2.0, chance=75}, -- Chance to spread in % (50 = 50%, 100 = 100%)
sound = {
male = 'sneeze', female = 'sneezefemale', range = 4.0, volume = 0.5, sourceonly = false
},
medication = {
'tylenol',
},
Effects = { -- Effects in MS
hurt = false , --{damage = 5}
blur = {transitionIn = 1000, transitionOut = 1000}, -- set to blur = false to disable blur
screenEffect = false,
ragdoll = false, -- {time = 1000}
sickpfx = false,
affectDriving = {time = 10},
}
},
['Bad Stomach'] = {
animation = {dict = "missexile3", anim = "ex03_train_roof_idle", time = 5000}, --set animation = false for no anim
walk = {style = "MOVE_M@DRUNK@VERYDRUNK", time=10000}, --set walk = false for no walk, set time to false for infinite
deplete = true, -- Depletes from set iterations (once iterations are done the player gets cured)
catchNotify = false,
notify = false,
sound = false,
spreadData = {range = 1.2, chance=25},
medication = {
'peptobismol',
},
Effects = { -- Effects are in ms, 1000 = 1 sec
hurt = {damage = 1} , --{damage = 5}
blur = false, -- set to blur = false to disable blur
screenEffect = false,
ragdoll = false, -- {time = 1000}
sickpfx = true,
affectDriving = false,
}
},
['Diarrhea'] = {
animation = {dict = "missfbi3ig_0", anim = "shit_loop_trev", time = 5000}, --set animation = false for no anim
walk = {style = "MOVE_M@DRUNK@VERYDRUNK", time=5000}, --set walk = false for no walk, set time to false for infinite
deplete = true, -- Depletes from set iterations (once iterations are done the player gets cured)
catchNotify = false,
notify = 'You almost shit yourself.',
sound = false,
spreadData = false,
spreadData = {range = 1.2, chance=25},
medication = {
'loperamide',
},
Effects = { -- Effects are in ms, 1000 = 1 sec
hurt = {damage = 1} , --{damage = 5}
screenEffect = false,
blur = false, -- set to blur = false to disable blur
ragdoll = false, -- {time = 1000}
sickpfx = false,
affectDriving = false,
}
},
['Headache'] = {
animation = false, --set animation = false for no anim
walk = false, --set walk = false for no walk, set time to false for infinite
deplete = true, -- Depletes from set iterations (once iterations are done the player gets cured)
catchNotify = false,
notify = false,
sound = false,
spreadData = false,
medication = {
'aspirin',
'ibuprofen',
},
Effects = { -- Effects in MS
hurt = false , --{damage = 5}
blur = false, -- set to blur = false to disable blur
screenEffect = {effectName="DanceIntensity03", duration=5000},
ragdoll = false, -- {time = 1000}
sickpfx = false,
affectDriving = false,
}
},
['Dizzy'] = {
animation = false, --set animation = false for no anim
walk = false, --set walk = false for no walk, set time to false for infinite
deplete = true, -- Depletes from set iterations (once iterations are done the player gets cured)
catchNotify = "You begin to feel dizzy",
notify = false,
sound = false,
spreadData = false,
medication = {
'dramamine',
},
Effects = { -- Effects in MS
hurt = false , --{damage = 5}
blur = false, -- set to blur = false to disable blur
screenEffect = {effectName="DrugsDrivingOut", duration=5000},
ragdoll = false, -- {time = 1000}
sickpfx = false,
affectDriving = false,
}
},
['Covid'] = {
animation = {dict = "timetable@gardener@smoking_joint", anim = "idle_cough", time = 2000}, --set animation = false for no anim
walk = {style = "MOVE_M@DRUNK@VERYDRUNK", time=1000}, --set walk = false for no walk, set time to false for infinite
deplete = true, -- Depletes from set iterations (once iterations are done the player gets cured)
spreadData = {range = 2.0, chance=90},
notify = 'It hurt\'s to breath',
catchNotify = "You caught Covid",
sound = {male = 'cough', female = 'coughfemale', range = 4.0, volume = 0.5, sourceonly = false},
medication = {
'covidvaccine',
},
Effects = { -- Effects in MS
hurt = {damage = 4}, --{damage = 5}
blur = false, -- set to blur = false to disable blur
screenEffect = false,
ragdoll = false, -- {time = 1000}
sickpfx = false,
affectDriving = false,
}
},
-------Only if using SexV you can get it here https://kbase.tebex.io/ ---------
['Chlamydia'] = {
animation = false, --set animation = false for no anim
walk = false, --set walk = false for no walk, set time to false for infinite
deplete = false, -- Depletes from set iterations (once iterations are done the player gets cured)
catchNotify = false,
notify = false,
sound = false,
spreadData = false,
medication = {
'doxycycline',
'azithromycin'
},
Effects = { -- Effects in MS
hurt = {damage = 2} , --{damage = 5}
blur = false, -- set to blur = false to disable blur
screenEffect = {effectName="CarDamageHit", duration=1000},
ragdoll = false, -- {time = 1000}
sickpfx = false,
affectDriving = false,
}
},
['Gonorrhea'] = {
animation = false, --set animation = false for no anim
walk = false, --set walk = false for no walk, set time to false for infinite
deplete = false, -- Depletes from set iterations (once iterations are done the player gets cured)
catchNotify = false,
notify = false,
sound = false,
spreadData = false,
medication = {
'azithromycin',
},
Effects = { -- Effects in MS
hurt = {damage = 2} , --{damage = 5}
blur = false, -- set to blur = false to disable blur
screenEffect = {effectName="CarDamageHit", duration=1000},
ragdoll = false, -- {time = 1000}
sickpfx = false,
affectDriving = false,
}
},
['Herpes'] = {
animation = false, --set animation = false for no anim
walk = false, --set walk = false for no walk, set time to false for infinite
deplete = false, -- Depletes from set iterations (once iterations are done the player gets cured)
catchNotify = false,
notify = false,
sound = false,
spreadData = false,
medication = {
'acyclovir',
},
Effects = { -- Effects in MS
hurt = {damage = 2} , --{damage = 5}
blur = false, -- set to blur = false to disable blur
screenEffect = {effectName="CarDamageHit", duration=1000},
ragdoll = false, -- {time = 1000}
sickpfx = false,
affectDriving = false,
}
}
-------Only if using SexV you can get it here https://kbase.tebex.io/ ---------
}
Config.Medication = {
'tylenol',
'peptobismol',
'loperamide',
'aspirin',
'ibuprofen',
'dramamine',
'covidvaccine',
'doxycycline',
'azithromycin',
'acyclovir',
}
if not IsDuplicityVersion() then --Client Side
function Notify(text, type)
print(text)
--custom code for a custom notify
end
function OnEffect(type)
--print(type)
end
function CanPedDoAnim()
if K.CheckDead() then
return false
end
return true
end
RegisterCommand('getPlayerSickness', function()
local closestPlayer, closestDistance, closestPlayerPed = K.GetClosestPlayer()
if closestDistance < 2.0 then
TriggerServerEvent("k_diseases:getSicknessFromPlayer", closestPlayer)
else
K.NotifyFramework('No one nearby.', 'error')
end
end)
function CanBeInfectedByOthers() -- This calls for a return on a percent (25 = 25% chance to be infected, 100 = 100% chance to be infected)
local hasMask, maskId = K.IsPlayerWearingMask() -- gets the player and if they are wearing a mask
--[[ Example on how you could setup certain masks to have certain resistance
if maskId == 5 then
return 0 -- plauyer will have 0 chance to get infected
end
]]
if hasMask then
return 5 -- if the player is wearing a mask they have an increased tolerance to getting infected by others (5% chance of getting infected)
end
return 100 -- 100 means they have no protection
end
function CanInfectOthers() -- This calls for a return on a percent (25 = 25% chance to infect other players, 100 = 100% chance to infect other players)
local hasMask, maskId = K.IsPlayerWearingMask() -- gets the player and if they are wearing a mask
--[[ Example on how you could setup certain masks to have certain resistance
if maskId == 5 then
return 0 -- plauyer will have 0 chance to infect others
end
]]
if hasMask then
return 5 -- 25 means the player has a 25% chance to infect other players if they have a mask (this wont effect spreadData this is just a 2nd check for masks)
end
return 100 -- 100 means they will always infect other players (this wont effect spreadData this is just a 2nd check for masks)
end
function Search() -- Example on how the player could get a illness.
if GetRainLevel() >= 0.3 then -- best way i could find to simulate a cold method
exports['k_diseases']:CatchDisease("Common Cold", 25, true) -- exports['k_diseases']:CatchDisease(TYPE, CHANCE, CHECKIFALREADYHASIT)
exports['k_diseases']:CatchDisease("Covid", 5, true)
exports['k_diseases']:CatchDisease("Headache", 25, true)
end
end
else
function DropExploiter(src)
DropPlayer(src, 'stinky cheetor')
end
end
function GetCore()
if not IsDuplicityVersion() then -- Client side
if Config.Variables.Framework == 'QB' then
return exports['qb-core']:GetCoreObject()
elseif Config.Variables.Framework == 'ESX' then
local ESX = nil
Citizen.CreateThread(function()
while ESX == nil do
TriggerEvent(Config.Variables.ESXSharedObject, function(obj) return obj end)
Wait(0)
end
end)
end
else -- Server side
print('^3Thanks for using my script :) Need assistance support at ^5hidden ^7')
if Config.Variables.Framework == 'QB' then
return exports['qb-core']:GetCoreObject()
elseif Config.Variables.Framework == 'ESX' then
local ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
return ESX
end
end
return false
end
You can get the script here:
Buy K_DISEASES
Code is accessible | No, Good amount of config see Docs ^ |
Subscription-based | No, although subscription tier is available |
Lines (approximately) | 1020 |
Requirements | oxmysql, interact-sound |
Support | Yes |