add sborka
This commit is contained in:
233
garrysmod/addons/talkinganims_ft/lua/autorun/sv_script.lua
Normal file
233
garrysmod/addons/talkinganims_ft/lua/autorun/sv_script.lua
Normal file
@@ -0,0 +1,233 @@
|
||||
AddCSLuaFile()
|
||||
|
||||
local enableAnims = CreateConVar("enable_talking_animation", "1", FCVAR_ARCHIVE, "Enable or disable talking animation.")
|
||||
local animCooldown = CreateConVar("talking_animation_cooldown", "2.5", FCVAR_ARCHIVE, "Change cooldown of animation(starts with the animation)")
|
||||
|
||||
local gender = "M"
|
||||
local lastAnim = ""
|
||||
|
||||
local talkingAnimationM = {
|
||||
"Gesture01",
|
||||
"Gesture05",
|
||||
"Gesture05NP",
|
||||
"Gesture06",
|
||||
"Gesture06NP",
|
||||
"Gesture07",
|
||||
"Gesture13",
|
||||
"E_g_shrug",
|
||||
"G_medurgent_mid",
|
||||
"G_righthandroll",
|
||||
"G_righthandheavy",
|
||||
"g_palm_out_l",
|
||||
"g_palm_out_high_l"
|
||||
}
|
||||
|
||||
local talkingAnimationWeaponsM = {
|
||||
"g_Rifle_Lhand",
|
||||
"g_Rifle_Lhand_low",
|
||||
"bg_accentUp",
|
||||
"bg_up_l",
|
||||
"bg_up_r",
|
||||
"g_palm_out_high_l",
|
||||
"g_palm_up_high_l"
|
||||
}
|
||||
|
||||
local talkingAnimationW = {
|
||||
"A_gesture16",
|
||||
"M_g_sweepout",
|
||||
"A_g_midhigh_arcout",
|
||||
"A_g_midhigh_arcout_left",
|
||||
"A_g_midhigh_arcout_right",
|
||||
"A_g_rtl_dwnshp",
|
||||
"A_g_low2side_palmsout",
|
||||
"A_g_hflipout",
|
||||
"A_g_armscrossed",
|
||||
"A_g_rthdflipout",
|
||||
"A_g_mid_rtfingflareout",
|
||||
"A_g_mid_2hdcutdwn",
|
||||
"A_g_mid_2hdcutdwn_rt",
|
||||
"A_g_midrtarcdwnout",
|
||||
"A_g_rtsweepoutbig",
|
||||
"A_g_leftsweepoutbig",
|
||||
"A_g_mid_rtcutdwn"
|
||||
}
|
||||
|
||||
local talkingAnimationWeaponsW = {
|
||||
"A_g_midhigh_arcout_left",
|
||||
"g_Rifle_Lhand",
|
||||
"g_Rifle_Lhand_low",
|
||||
"bg_accentUp",
|
||||
"bg_up_l",
|
||||
"bg_up_r"
|
||||
}
|
||||
|
||||
|
||||
local nonweapon = {
|
||||
"camera",
|
||||
"duel",
|
||||
"knife",
|
||||
"melee",
|
||||
"melee2",
|
||||
"physgun",
|
||||
"slam",
|
||||
"normal",
|
||||
"grenade",
|
||||
"fist"
|
||||
}
|
||||
|
||||
local doingAnim = false
|
||||
local lastAnim = ""
|
||||
|
||||
function fixtables()
|
||||
print("Fixed tables!")
|
||||
talkingAnimationWeaponsM = {
|
||||
"g_Rifle_Lhand",
|
||||
"g_Rifle_Lhand_low",
|
||||
"bg_accentUp",
|
||||
"bg_up_l",
|
||||
"bg_up_r",
|
||||
"g_palm_out_high_l",
|
||||
"g_palm_up_high_l"
|
||||
}
|
||||
|
||||
talkingAnimationM = {
|
||||
"Gesture01",
|
||||
"Gesture05",
|
||||
"Gesture05NP",
|
||||
"Gesture06",
|
||||
"Gesture06NP",
|
||||
"Gesture07",
|
||||
"Gesture13",
|
||||
"E_g_shrug",
|
||||
"G_medurgent_mid",
|
||||
"G_righthandroll",
|
||||
"G_righthandheavy",
|
||||
"g_palm_out_l",
|
||||
"g_palm_out_high_l"
|
||||
}
|
||||
|
||||
talkingAnimationW = {
|
||||
"A_gesture16",
|
||||
"M_g_sweepout",
|
||||
"A_g_midhigh_arcout",
|
||||
"A_g_midhigh_arcout_left",
|
||||
"A_g_midhigh_arcout_right",
|
||||
"A_g_rtl_dwnshp",
|
||||
"A_g_low2side_palmsout",
|
||||
"A_g_hflipout",
|
||||
"A_g_armscrossed",
|
||||
"A_g_rthdflipout",
|
||||
"A_g_mid_rtfingflareout",
|
||||
"A_g_mid_2hdcutdwn",
|
||||
"A_g_mid_2hdcutdwn_rt",
|
||||
"A_g_midrtarcdwnout",
|
||||
"A_g_rtsweepoutbig",
|
||||
"A_g_leftsweepoutbig",
|
||||
"A_g_mid_rtcutdwn"
|
||||
}
|
||||
|
||||
talkingAnimationWeaponsW = {
|
||||
"A_g_midhigh_arcout_left",
|
||||
"g_Rifle_Lhand",
|
||||
"g_Rifle_Lhand_low",
|
||||
"bg_accentUp",
|
||||
"bg_up_l",
|
||||
"bg_up_r"
|
||||
}
|
||||
end
|
||||
|
||||
if SERVER then
|
||||
|
||||
|
||||
util.AddNetworkString("TalkingAnimNet")
|
||||
|
||||
function GetWeaponHoldAnim( ent)
|
||||
|
||||
if( !IsValid( ent ) ) then return nil end
|
||||
local physObj = ent:GetPhysicsObject()
|
||||
if (!IsValid(physObj)) then return false end
|
||||
|
||||
local activeweapon = ent:GetActiveWeapon()
|
||||
print(activeweapon)
|
||||
if activeweapon == not nil then
|
||||
local wephold = activeweapon:GetHoldType()
|
||||
elseif activeweapon == nil then
|
||||
local wephold = "normal"
|
||||
end
|
||||
|
||||
for i=0,#nonweapon do
|
||||
if wephold == nonweapon[i] then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
net.Receive("TalkingStart", function(len,ply)
|
||||
local IsDeveloper = GetConVar("developer"):GetInt()
|
||||
local isTalking = net.ReadBool()
|
||||
local gender = net.ReadString()
|
||||
local enableWeaponAnims = net.ReadBool()
|
||||
local isDealingWithTables = false
|
||||
if(!IsValid(ply)) then return nil end
|
||||
if (!ply:Alive()) then return nil end
|
||||
if(!isTalking) then return nil end
|
||||
if isTalking and isDealingWithTables == false and enableAnims:GetBool() then
|
||||
local wephold = GetWeaponHoldAnim(ply)
|
||||
local animationToLookup = ""
|
||||
isDealingWithTables = true
|
||||
if wephold and gender == "M" then
|
||||
animationToLookup = talkingAnimationM[math.random(#talkingAnimationM)]
|
||||
if lastAnim == animationToLookup then
|
||||
table.RemoveByValue(talkingAnimationM, lastAnim)
|
||||
animationToLookup = talkingAnimationM[math.random(#talkingAnimationM)]
|
||||
table.insert(talkingAnimationM, lastAnim)
|
||||
end
|
||||
elseif wephold and gender == "W" then
|
||||
animationToLookup = talkingAnimationW[math.random(#talkingAnimationW)]
|
||||
if lastAnim == animationToLookup then
|
||||
table.RemoveByValue(talkingAnimationW, lastAnim)
|
||||
animationToLookup = talkingAnimationW[math.random(#talkingAnimationW)]
|
||||
table.insert(talkingAnimationW, lastAnim)
|
||||
end
|
||||
elseif gender == "M" and enableWeaponAnims then
|
||||
animationToLookup = talkingAnimationWeaponsM[math.random(#talkingAnimationWeaponsM)]
|
||||
if lastAnim == animationToLookup then
|
||||
table.RemoveByValue(talkingAnimationWeaponsM, lastAnim)
|
||||
animationToLookup = talkingAnimationWeaponsM[math.random(#talkingAnimationWeaponsM)]
|
||||
table.insert(talkingAnimationWeaponsM, lastAnim)
|
||||
end
|
||||
elseif gender == "W" and enableWeaponAnims then
|
||||
animationToLookup = talkingAnimationWeaponsW[math.random(#talkingAnimationWeaponsW)]
|
||||
if lastAnim == animationToLookup then
|
||||
table.RemoveByValue(talkingAnimationWeaponsW, lastAnim)
|
||||
animationToLookup = talkingAnimationWeaponsW[math.random(#talkingAnimationWeaponsW)]
|
||||
table.insert(talkingAnimationWeaponsW, lastAnim)
|
||||
end
|
||||
end
|
||||
|
||||
if animationToLookup == nil then
|
||||
fixtables()
|
||||
return
|
||||
end
|
||||
lookup = ply:LookupSequence(animationToLookup)
|
||||
isDealingWithTables = false
|
||||
if lookup == -1 then
|
||||
if IsDeveloper > 0 then
|
||||
print("Sequence not found!")
|
||||
ply:ChatPrint(animationToLookup)
|
||||
print(lookup)
|
||||
end
|
||||
else
|
||||
if IsDeveloper > 0 then
|
||||
ply:ChatPrint(animationToLookup)
|
||||
print(lookup)
|
||||
end
|
||||
net.Start("TalkingAnimNet")
|
||||
net.WritePlayer(ply)
|
||||
net.WriteUInt(lookup, 16)
|
||||
net.Broadcast()
|
||||
lastAnim = animationToLookup
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
Reference in New Issue
Block a user