--script
math.randomseed(os.time() * math.random())
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Pikachu = ReplicatedStorage:WaitForChild("Pikachu")
local chance = {
	"Pikachu",
	"Bulbasaur", 
	"Bulbasaur",
	"Bulbasaur", 
	"Bulbasaur", 
	"Bulbasaur",
	"Charmander",
	"Charmander",
	"Charmander",
	"Charmander",
	"Charmander",
	"Squirtle",
	"Squirtle",
	"Squirtle",
	"Squirtle",
	"Squirtle",
	"Nothing",
	"Nothing",
	"Nothing",
	"Nothing",
	"Nothing",	
	"Nothing",
	"Nothing",
	"Nothing",
	"Nothing",
	"Nothing",
	"Nothing",
	"Nothing",
	"Nothing",
	"Nothing",
	"Nothing",
	"Nothing"
}

local poke = chance[math.random(1,#chance)]
function step(player)
local poke = chance[math.random(1,#chance)]
	if player.Parent:FindFirstChild("Humanoid") and poke == "Pikachu" then
		Pikachu:FireClient(player)
		game.SoundService.ecounter:Play()
		player.Parent:FindFirstChild("Torso").Anchored = true
	end
end
script.Parent.Touched:connect(step)

--local
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Pikachu = ReplicatedStorage:WaitForChild("Pikachu")

local function gui(hit)
	script.Parent.Enabled = true
	for i = 1,10 do
	wait(0.05)
	script.Parent.battle.Frame.BackgroundTransparency = script.Parent.battle.Frame.BackgroundTransparency + 0.1
	end
	script.Parent.battle.Frame.Visible = false
	game.SoundService.pikachu:Play()
end

Pikachu.OnClientEvent:connect(gui)

When try doing a local server it gives me an error called: FireClient: player argument must be a Player object