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, weapon) if(self.casting) then return end self.casting = callback self.wep = weapon 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:Nick()) local score = net.ReadInt(BITCOUNT) print("Calling callback with " .. score .. " and " .. pl:Nick()) pl.casting(score,pl,pl.wep) 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