From 9b1057243fe1db65f351e213f00e41ceca67a8da Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Sat, 23 Jan 2016 00:21:58 -0500 Subject: Completed basic framework for setting up spells, and minigames for casting --- gamemode/shared/player_spellcast.lua | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 gamemode/shared/player_spellcast.lua (limited to 'gamemode/shared') diff --git a/gamemode/shared/player_spellcast.lua b/gamemode/shared/player_spellcast.lua new file mode 100644 index 0000000..fcc9484 --- /dev/null +++ b/gamemode/shared/player_spellcast.lua @@ -0,0 +1,45 @@ + +local meta = FindMetaTable("Player") + +--Number of bits used for networking spell casting success rate. Even though by default it shouldn't be more than 100, 8 lets it go to 256 in case you want to add buffs/bonuses. +local BITCOUNT = 256 + +if(SERVER) then + util.AddNetworkString("CastSpell") + util.AddNetworkString("FinishedCasting") + + function meta:Cast(spellname, callback) + if(self.casting) then return end + self.casting = callback + print("Casting " .. spellname) + net.Start("CastSpell") + net.WriteString(spellname) + net.Send(self) + end + + net.Receive("FinishedCasting",function(len,pl) + if(pl.casting) then + print("Finished casting message received by server") + pl.casting(net.ReadInt(BITCOUNT)) + pl.casting = nil + end + end) +else + + function finishedcasting(score) + net.Start("FinishedCasting") + net.WriteInt(score,BITCOUNT) + net.SendToServer() + end + + net.Receive("CastSpell",function() + local spellname = net.ReadString() + print("Request to cast spell" .. spellname) + StartMinigame(spellname) + end) +end + +function meta:IsCasting() + if(self.casting) then return false end + return true +end -- cgit v1.2.3-70-g09d2