Jump to content

Follower Error


Recommended Posts

So I decided to make my own summoner clone by taking Heavenfall's Summoner coding and tweaking it a bit to make it compatible with DST. After a bit of tweaking I encountered this:

[00:03:18]: [string "scripts/behaviours/chattynode.lua"]:22: bad argument #1 to 'random' (interval is empty)

I also may have completely butchered the code so I want to say sorry to Heavenfall beforehand as I have no idea what I'm doing ;_;.

 

I don't know what files I have to provide you so heres my butchered version of summonclone.

 

local brain = require "brains/summonclonebrain"local assets ={	Asset("ATLAS", "images/inventoryimages/summonclone.xml"),	Asset("ANIM", "anim/player_basic.zip"),        Asset("ANIM", "anim/player_idles_shiver.zip"),        Asset("ANIM", "anim/player_actions.zip"),        Asset("ANIM", "anim/player_actions_axe.zip"),        Asset("ANIM", "anim/player_actions_pickaxe.zip"),        Asset("ANIM", "anim/player_actions_shovel.zip"),        Asset("ANIM", "anim/player_actions_blowdart.zip"),        Asset("ANIM", "anim/player_actions_eat.zip"),        Asset("ANIM", "anim/player_actions_item.zip"),        Asset("ANIM", "anim/player_cave_enter.zip"),        Asset("ANIM", "anim/player_actions_uniqueitem.zip"),        Asset("ANIM", "anim/player_actions_bugnet.zip"),        Asset("ANIM", "anim/player_actions_fishing.zip"),        Asset("ANIM", "anim/player_actions_boomerang.zip"),        Asset("ANIM", "anim/player_bush_hat.zip"),        Asset("ANIM", "anim/player_attacks.zip"),        Asset("ANIM", "anim/player_idles.zip"),        Asset("ANIM", "anim/player_rebirth.zip"),        Asset("ANIM", "anim/player_jump.zip"),        Asset("ANIM", "anim/player_amulet_resurrect.zip"),		Asset("ANIM", "anim/player_teleport.zip"),        Asset("ANIM", "anim/wilson_fx.zip"),        Asset("ANIM", "anim/player_one_man_band.zip"),        Asset("ANIM", "anim/player_slurtle_armor.zip"),        Asset("ANIM", "anim/player_staff.zip"),        		Asset("ANIM", "anim/shadow_hands.zip"),        Asset("SOUND", "sound/sfx.fsb"),        Asset("SOUND", "sound/wilson.fsb"),}local prefabs ={}local onloadfn = function(inst, data)	if data and data.sleeping then		inst.components.sleeper:GoToSleep()	endendlocal onsavefn = function(inst, data)	if inst.components.sleeper:IsAsleep() then		data.sleeping = true	endendlocal function CalcSanityAura(inst, observer)		if inst.components.follower and inst.components.follower.leader == observer then		return -TUNING.SANITYAURA_LARGE	end		return 0endlocal function CalcSanityAura_Maxwell(inst, observer)	return 0endlocal function ShouldAcceptItem(inst, item)	local currenthealth = inst.components.health.currenthealth / inst.components.health.maxhealth	if item.components.edible and currenthealth < 1 and item.components.edible.healthvalue > 0 then		return true	end    	if item.components.equippable and (item.components.equippable.equipslot == EQUIPSLOTS.HEAD or item.components.equippable.equipslot == EQUIPSLOTS.HANDS or item.components.equippable.equipslot == EQUIPSLOTS.BODY) and not item.components.projectile then		if item.prefab == "batbat" then			print ("refusing batbat")			return false		end        	return true   	endendlocal function OnGetItemFromPlayer(inst, giver, item)    	if item.components.equippable and (item.components.equippable.equipslot == EQUIPSLOTS.HEAD or item.components.equippable.equipslot == EQUIPSLOTS.HANDS or item.components.equippable.equipslot == EQUIPSLOTS.BODY)   then     		local newslot = item.components.equippable.equipslot		local current = inst.components.inventory:GetEquippedItem(newslot)		if current then            		inst.components.inventory:DropItem(current)        	end              	inst.components.inventory:Equip(item)	elseif item.components.edible then                inst.components.health:DoDelta(item.components.edible:GetHealth(inst), nil, item.prefab)		inst:PushEvent("oneatsomething", {food = item})		inst.sg:GoToState("eat")    	endendlocal function OnRefuseItem(inst, item)    inst.sg:GoToState("refuse")    local playerprefab = GetPlayer()    local actualprefab = playerprefab.prefab    inst.components.talker:Say(GetString(actualprefab, "ACTIONFAIL_GENERIC"))endlocal function NormalRetargetFn(inst)    return FindEntity(inst, TUNING.PIG_TARGET_DIST,        function(guy)                return guy:HasTag("monster") and guy.prefab ~= "webber" and guy.components.health and not guy.components.health:IsDead() and inst.components.combat:CanTarget(guy)        end)endlocal function fn(Sim)    	local inst = CreateEntity()	local trans = inst.entity:AddTransform()	local anim = inst.entity:AddAnimState()	local sound = inst.entity:AddSoundEmitter()	local shadow = inst.entity:AddDynamicShadow()	local whoisplayer = ThePlayer		shadow:SetSize( 1.5, .75 )    inst.Transform:SetFourFaced()	    MakeCharacterPhysics(inst, 30, .3)    --inst:AddTag("monster")    inst:AddTag("summonclone")    inst:AddTag("sheltercarrier")    inst:AddTag("summonedbyplayer")    inst:AddTag("scarytoprey")    anim:SetBank("wilson")    local summonclonebuild = ThePlayer    anim:SetBuild(summonclonebuild.prefab)    --anim:PlayAnimation("idle_loop", true)        ------------------------------------------    inst:AddComponent("locomotor") -- locomotor must be constructed before the stategraph    inst.components.locomotor.runspeed = 7    inst.components.locomotor.walkspeed = 7        ------------------------------------------    ------------------------------------------    inst:AddComponent("sanityaura")    inst.components.sanityaura.aurafn = CalcSanityAura    MakeMediumBurnableCharacter(inst, "pig_torso")    ------------------    inst:AddComponent("health")    inst.components.health:SetMaxHealth(TUNING.WILSON_HEALTH)    ------------------        inst:AddComponent("combat")    inst.components.combat:SetDefaultDamage(TUNING.UNARMED_DAMAGE)    --inst.components.combat.hiteffectsymbol = "pig_torso"    inst.components.combat:SetAttackPeriod(2)    inst.components.combat:SetRetargetFunction(3, NormalRetargetFn)        ------------------------------------------        inst:AddComponent("inventory")	    ------------------------------------------    inst.entity:AddLabel()    inst.Label:SetFontSize(20)    inst.Label:SetFont(DEFAULTFONT)    inst.Label:SetColour(1, 1, 1)    inst.Label:Enable(true)    ------------------------------------------    inst:AddComponent("follower")    inst.components.follower.maxfollowtime = 99999999    --print("treeguard should follow "..whoisplayer)    whoisplayer.components.leader:AddFollower(inst)    inst.components.follower:AddLoyaltyTime(9999999)    ------------------------------------------    inst:AddComponent("talker")    inst.components.talker:StopIgnoringAll()    ------------------------------------------    inst:AddComponent("inspectable")    local minimap = inst.entity:AddMiniMapEntity()    minimap:SetIcon( "summonclone.tex" )    ------------------------------------------    inst.Transform:SetScale(0.9, 0.9, 0.9)       inst:SetBrain(brain)    if ACTIONS.SITCOMMAND ~= nil then    	inst:AddComponent("followersitcommand")    end    inst:AddComponent("lootdropper")	inst:AddComponent("norecipelootdrop")	    inst:AddComponent("trader")    inst.components.trader:SetAcceptTest(ShouldAcceptItem)    inst.components.trader.onaccept = OnGetItemFromPlayer    inst.components.trader.onrefuse = OnRefuseItem    inst.AnimState:Hide("ARM_carry")     inst.AnimState:Show("ARM_normal") 	    inst:AddComponent("wisecrackerclone")    -- begin custom functions    if summonclonebuild.prefab == "wilson" then	    	inst:AddComponent("beard")    		inst.components.beard.onreset = function()        		inst.AnimState:ClearOverrideSymbol("beard")		end		inst.components.beard.prize = "beardhair"		local beard_days = {4, 8, 16}		local beard_bits = {1, 2,  4}       		inst.components.beard:AddCallback(beard_days[1], function()        		inst.AnimState:OverrideSymbol("beard", "beard", "beard_short")        		inst.components.beard.bits = beard_bits[1]    		end)       		inst.components.beard:AddCallback(beard_days[2], function()        		inst.AnimState:OverrideSymbol("beard", "beard", "beard_medium")        		inst.components.beard.bits = beard_bits[2]    		end)     		inst.components.beard:AddCallback(beard_days[3], function()        		inst.AnimState:OverrideSymbol("beard", "beard", "beard_long")        		inst.components.beard.bits = beard_bits[3]    		end)    end    if summonclonebuild.prefab == "willow" then	inst.components.health.fire_damage_scale = 0    end    if summonclonebuild.prefab == "wolfgang" then	inst.components.health:SetMaxHealth(TUNING.WILSON_HEALTH * 1.5 )	inst.components.combat.damagemultiplier = 1.5    end    if summonclonebuild.prefab == "wx78" then	inst.components.eater.ignoresspoilage = true    end    --if not summonclonebuild.prefab == "wes" then  	  inst:AddComponent("talkercloneishurt")    --end    if summonclonebuild.prefab == "wes" then	    inst.Label:SetFontSize(0)    end    if summonclonebuild.prefab == "waxwell" then	inst.components.sanityaura.aurafn = CalcSanityAura_Maxwell    end    if summonclonebuild.prefab == "wickerbottom" then	    inst:AddComponent("researchpointconverter")	    inst:AddTag("researchmachine")	    inst.components.researchpointconverter.level = 1    end    --copypaste cause lazy.    local function onkill(inst, data)	if data.cause == inst.prefab and not data.inst:HasTag("prey") then		if GetPlayer() then GetPlayer().components.sanity:DoDelta(5) end	end    end    if summonclonebuild.prefab == "wathgrithr" then	    inst:ListenForEvent("entity_death", function(wrld, data) onkill(inst, data) end, GetWorld())    end    		        inst:ListenForEvent( "nighttime", function()          inst.components.health:DoDelta(-10)  	end, TheWorld)        inst:SetStateGraph("SGsummonclone")       return instendreturn Prefab( "common/summonclone", fn, assets, prefabs)

 

 

 

Link to comment
Share on other sites

@DarkXero Oh alright, heres the butchered version of the summonclonebrain!

require "behaviours/wander"require "behaviours/follow"require "behaviours/faceentity"require "behaviours/chaseandattack"require "behaviours/runaway"require "behaviours/doaction"--require "behaviours/choptree"require "behaviours/findlight"require "behaviours/panic"require "behaviours/chattynode"require "behaviours/leash"local SEE_DIST = 20local MAX_WANDER_DIST = 20local MIN_FOLLOW_LEADER = 1local MAX_FOLLOW_LEADER = 15local TARGET_FOLLOW_LEADER = (MAX_FOLLOW_LEADER+MIN_FOLLOW_LEADER)/2local GO_HOME_DIST = 5local KEEP_FACE_DIST = 8local START_RUN_DIST = 3local STOP_RUN_DIST = 5local MAX_CHASE_TIME = 10local MAX_CHASE_DIST = 30local SEE_LIGHT_DIST = 20local TRADE_DIST = 20local SEE_TREE_DIST = 15local SEE_TARGET_DIST = 20local SEE_FOOD_DIST = 10local KEEP_CHOPPING_DIST = 10local RUN_AWAY_DIST = 5local STOP_RUN_AWAY_DIST = 8local function ShouldRunAway(inst, target)    return not inst.components.trader:IsTryingToTradeWithMe(target)endlocal SummonClone = Class(Brain, function(self, inst)    Brain._ctor(self, inst)end)function SummonClone:OnAttacked(attacker)    self.inst.components.combat:SetTarget(attacker)    self.inst.components.combat:ShareTarget(attacker, 30, function(dude) return dude:HasTag("summonedbyplayer") and dude.components.follower.leader == GetPlayer() end, 5)endfunction SummonClone:OnAttackOther(target)    self.inst.components.combat:ShareTarget(target, 30, function(dude) return dude:HasTag("summonedbyplayer") and dude.components.follower.leader == GetPlayer() end, 5)endlocal function GetFaceTargetFn(inst)    return inst.components.follower.leaderendlocal function KeepFaceTargetFn(inst, target)    return inst.components.follower.leader == targetendlocal function GetLeader(inst)    return inst.components.follower and inst.components.follower.leaderendlocal function GetStayPos(inst)	return inst.components.followersitcommand.locations["currentstaylocation"]endlocal function GetWanderPoint(inst)	if inst.components.followersitcommand and inst.components.followersitcommand:IsCurrentlyStaying() then		return GetStayPos(inst)	else		local target = GetLeader(inst) or GetPlayer()   		if target then        		return target:GetPosition()    		end	endendlocal function ShouldGoHome(inst)    local homePos = inst.components.followersitcommand.locations["currentstaylocation"]    local myPos = Vector3(inst.Transform:GetWorldPosition() )    return (homePos and distsq(homePos, myPos) > GO_HOME_DIST*GO_HOME_DIST)endlocal function GoHomeAction(inst)    local homePos = inst.components.followersitcommand.locations["currentstaylocation"]    if homePos then        return BufferedAction(inst, nil, ACTIONS.WALKTO, nil, homePos, nil, 0.2)    endendfunction SummonClone:OnStart()           local root =         PriorityNode(        {	    IfNode(function() 			local target = self.inst.components.combat.target		    	if target and target:HasTag("bee") then				local beehome = target.components.homeseeker and target.components.homeseeker.home 				if beehome and beehome.prefab == "beebox" then					self.inst.components.combat:GiveUp()				end			end		end,		"OnFire", Panic(self.inst) ),                        WhileNode(function() return self.inst.components.health.takingfiredamage end, "OnFire",			ChattyNode(self.inst, STRINGS.SUMMONCLONE_TALK_PANICFIRE,				Panic(self.inst))),	    WhileNode(function() 		    		    	local currenthealth = self.inst.components.health.currenthealth / self.inst.components.health.maxhealth		    	if currenthealth < 0.1 then 				local playerprefab = GetPlayer()   				local prefab = playerprefab.prefab   				self.inst.components.talker:Say(GetString(prefab, "ANNOUNCE_HUNGRY"))		    		return true							end	    end, "CloseToDeath",				Panic(self.inst)),            ChattyNode(self.inst, STRINGS.SUMMONCLONE_TALK_FIGHT,                WhileNode( function() return self.inst.components.combat.target == nil or not self.inst.components.combat:InCooldown() end, "AttackMomentarily",                    ChaseAndAttack(self.inst, MAX_CHASE_TIME, MAX_CHASE_DIST) )),            WhileNode( function() return self.inst.components.combat.target and self.inst.components.combat:InCooldown() end, "Dodge",                    RunAway(self.inst, function() return self.inst.components.combat.target end, RUN_AWAY_DIST, STOP_RUN_AWAY_DIST) ),         	    IfNode(function() 		    if (self.inst.components.follower.leader == nil) then			    	local x,y,z = self.inst.Transform:GetWorldPosition()				local ents = TheSim:FindEntities(x,y,z, TUNING.SPIDERHAT_RANGE, {"player"})				if (#ents > 0) then					local newfather = ents[1]					newfather.components.leader:AddFollower(self.inst)					self.inst.components.follower.maxfollowtime = 99999999					self.inst.components.follower:AddLoyaltyTime(9999999)					self.inst.components.combat:GiveUp()					return true				else return false				end	   		end   		end,		"OnFire", Panic(self.inst) ),   	--umbrellafollow	IfNode(function() 		if self.inst.components.follower.leader ~= nil and self.inst.components.followersitcommand and self.inst.components.followersitcommand:IsCurrentlyStaying() == false then			if self.inst.components.inventory:GetEquippedItem(EQUIPSLOTS.HANDS) and (self.inst.components.inventory:GetEquippedItem(EQUIPSLOTS.HANDS).prefab == "umbrella" or self.inst.components.inventory:GetEquippedItem(EQUIPSLOTS.HANDS).prefab == "grass_umbrella" or self.inst.components.inventory:GetEquippedItem(EQUIPSLOTS.HANDS).prefab == "torch") then				return true			end		end		end, "has leader",			Follow(self.inst, GetLeader, 1, 2.5, 1.5)),	--true follow	IfNode(function() 		if self.inst.components.follower.leader ~= nil and self.inst.components.followersitcommand and self.inst.components.followersitcommand:IsCurrentlyStaying() == false then			return true		elseif self.inst.components.follower.leader ~= nil and not self.inst.components.followersitcommand then			return true		end		end, "has leader",			Follow(self.inst, GetLeader, MIN_FOLLOW_LEADER, TARGET_FOLLOW_LEADER, MAX_FOLLOW_LEADER)),        -- and one where it is "gohome" to a position	IfNode(function() 				if self.inst.components.follower.leader ~= nil and self.inst.components.followersitcommand and self.inst.components.followersitcommand:IsCurrentlyStaying() == true then			return true		end		end, "has leader",			WhileNode(function() return ShouldGoHome(self.inst) end, "ShouldGoHome",            		DoAction(self.inst, GoHomeAction, "Go Home", true ))),  	IfNode(function() return self.inst.components.follower.leader ~= nil end, "has leader",		FaceEntity(self.inst, GetFaceTargetFn, KeepFaceTargetFn )),	          }, .1)        self.bt = BT(self.inst, root)                    self.inst:ListenForEvent("attacked", function(inst, data) self:OnAttacked(data.attacker) end)      self.inst:ListenForEvent("onattackother", function(inst, data) self:OnAttackOther(data.target) end)endfunction SummonClone:OnInitializationComplete()    --self.inst.components.knownlocations:RememberLocation("home", Point(self.inst.Transform:GetWorldPosition()))endreturn SummonClone

 

Edited by rons0n
Link to comment
Share on other sites

@DarkXero

 

I have:

GLOBAL.STRINGS.SUMMONCLONE_TALK_PANICFIRE = { "Oww!", "I'm burning!", "It burns!" }GLOBAL.STRINGS.SUMMONCLONE_TALK_FIGHT = {} --setup in prefab

Inside the characters modmain, but thats all. I don't think I have that string in anywhere else.

Link to comment
Share on other sites

Wow something as simple as that, huh:

GLOBAL.STRINGS.SUMMONCLONE_TALK_PANICFIRE = { "Oww!", "I'm burning!", "It burns!" }GLOBAL.STRINGS.SUMMONCLONE_TALK_FIGHT = {"For you."} --setup in prefab

Thanks again! Now Im 10 steps in the 100 other steps I have to do for complete compatability!

 

May I ask for 1 more little thing before I go and butcher the code more?

elseif GetWorld().components.seasonmanager:GetCurrentTemperature() < TUNING.FROSTY_BREATH then			inst.AnimState:PlayAnimation("idle_shiver_loop")

I have this and it crashes my game everytime, and thats because seasonmanager doesnt exist in DST right? So what do I replace it with? I think I have to change GetWorld() to 'TheWorld' too.

Link to comment
Share on other sites

Looks like I derped:

		elseif TheWorld.state.temperature:GetCurrentTemperature() < TUNING.FROSTY_BREATH then			inst.AnimState:PlayAnimation("idle_shiver_loop")

Gave me a 'temperature' (a number value)' error.

 

*Cough* Also I need help on one more thing. The clones trading component. She has her tagged but nothing is happening, I can't seem to give her anything

 

The code is posted in the first spoiler and it looks like it has everything it needs so what am I missing?

And of course, the tradable in modmain:

function HF_addtradablecomponenttoprefab(inst)	if not inst.components.tradable then		inst:AddComponent("tradable")	endendAddPrefabPostInit("axe", HF_addtradablecomponenttoprefab)
Link to comment
Share on other sites

Thanks! I'm almost done making her work.

 

ZfKnid5.jpg

 

But I have a problem, when the client makes the clone it works just as expected, but  for the client it'll ways go to the host. How can I make it so when the client makes it, it'll follow the client?

 

And lastely, Heavenfall's custom followersitoncommand component. There isn't anything wrong with it as far as I know but nothing is happening. And I'm sure I added the component everywhere it needed to be.

 

I don't think you want the whole file so i'll just post only bits of code in spoilers:

 

Modmain:

local ACTIONS = GLOBAL.ACTIONSSTRINGS.ACTIONS.SITCOMMAND = "Order to Stay"STRINGS.ACTIONS.SITCOMMAND_CANCEL = "Order to Follow"ACTIONS.SITCOMMAND = GLOBAL.Action(2, true, true)ACTIONS.SITCOMMAND.fn = function(act)	local targ = act.target	if targ and targ.components.followersitcommand then		act.doer.components.locomotor:Stop()		act.doer.components.talker:Say(GLOBAL.GetString(act.doer.prefab, "ANNOUNCE_SITCOMMAND"))		targ.components.followersitcommand:SetStaying(true)		targ.components.followersitcommand:RememberSitPos("currentstaylocation", GLOBAL.Point(targ.Transform:GetWorldPosition())) 		return true	endendACTIONS.SITCOMMAND.str = STRINGS.ACTIONS.SITCOMMANDACTIONS.SITCOMMAND.id = "SITCOMMAND"ACTIONS.SITCOMMAND_CANCEL = GLOBAL.Action(2, true, true)ACTIONS.SITCOMMAND_CANCEL.fn = function(act)	local targ = act.target	if targ and targ.components.followersitcommand then		act.doer.components.locomotor:Stop()		act.doer.components.talker:Say(GLOBAL.GetString(act.doer.prefab, "ANNOUNCE_SITCOMMAND_CANCEL"))		targ.components.followersitcommand:SetStaying(false)		return true	endendACTIONS.SITCOMMAND_CANCEL.str = STRINGS.ACTIONS.SITCOMMAND_CANCELACTIONS.SITCOMMAND_CANCEL.id = "SITCOMMAND_CANCEL"

 

summonerclone.lua:

  if ACTIONS.SITCOMMAND ~= nil then        inst:AddComponent("followersitcommand")    end

 

Heavenfall's followersitcommand component:

print("Loading FollowerSitCommand component....")local FollowerSitCommand = Class(function(self, inst)    	self.inst = inst	self.stay = false	self.locations = {}end)function FollowerSitCommand:CollectSceneActions(doer, actions, rightclick)	if rightclick and self.inst.components.follower and self.inst.components.follower.leader == ThePlayer then		if not self.inst.components.followersitcommand:IsCurrentlyStaying() then			table.insert(actions, ACTIONS.SITCOMMAND)		else			table.insert(actions, ACTIONS.SITCOMMAND_CANCEL)		end	endendfunction FollowerSitCommand:IsCurrentlyStaying()	return self.stayendfunction FollowerSitCommand:SetStaying(stay)	self.stay = stayendfunction FollowerSitCommand:RememberSitPos(name, pos)    self.locations[name] = posend-- onsave and onload may seem cumbersome but it requires to iterate because onload doesn't accept tables as single varsfunction FollowerSitCommand:OnSave()	if self.stay == true then		local data = 			{ 				stay = self.stay,				varx = self.locations.currentstaylocation["x"], 				vary = self.locations.currentstaylocation["y"], 				varz = self.locations.currentstaylocation["z"]			}		return data	endend      function FollowerSitCommand:OnLoad(data)	if data then 		self.stay = data.stay		self.locations.currentstaylocation = { }		self.locations.currentstaylocation["x"] = data.varx		self.locations.currentstaylocation["y"] = data.vary		self.locations.currentstaylocation["z"] = data.varz	endend   return FollowerSitCommand

 

And lastly the brain:

require "behaviours/wander"require "behaviours/follow"require "behaviours/faceentity"require "behaviours/chaseandattack"require "behaviours/runaway"require "behaviours/doaction"--require "behaviours/choptree"require "behaviours/findlight"require "behaviours/panic"require "behaviours/chattynode"require "behaviours/leash"local SEE_DIST = 20local MAX_WANDER_DIST = 20local MIN_FOLLOW_LEADER = 1local MAX_FOLLOW_LEADER = 15local TARGET_FOLLOW_LEADER = (MAX_FOLLOW_LEADER+MIN_FOLLOW_LEADER)/2local GO_HOME_DIST = 5local KEEP_FACE_DIST = 8local START_RUN_DIST = 3local STOP_RUN_DIST = 5local MAX_CHASE_TIME = 10local MAX_CHASE_DIST = 30local SEE_LIGHT_DIST = 20local TRADE_DIST = 20local SEE_TREE_DIST = 15local SEE_TARGET_DIST = 20local SEE_FOOD_DIST = 10local KEEP_CHOPPING_DIST = 10local RUN_AWAY_DIST = 5local STOP_RUN_AWAY_DIST = 8local function ShouldRunAway(inst, target)    return not inst.components.trader:IsTryingToTradeWithMe(target)endlocal SummonClone = Class(Brain, function(self, inst)    Brain._ctor(self, inst)end)function SummonClone:OnAttacked(attacker)    self.inst.components.combat:SetTarget(attacker)    self.inst.components.combat:ShareTarget(attacker, 30, function(dude) return dude:HasTag("summonedbyplayer") and dude.components.follower.leader == ThePlayer end, 5)endfunction SummonClone:OnAttackOther(target)    self.inst.components.combat:ShareTarget(target, 30, function(dude) return dude:HasTag("summonedbyplayer") and dude.components.follower.leader == ThePlayer end, 5)endlocal function GetFaceTargetFn(inst)    return inst.components.follower.leaderendlocal function KeepFaceTargetFn(inst, target)    return inst.components.follower.leader == targetendlocal function GetLeader(inst)    return inst.components.follower and inst.components.follower.leaderendlocal function GetStayPos(inst)	return inst.components.followersitcommand.locations["currentstaylocation"]endlocal function GetWanderPoint(inst)	if inst.components.followersitcommand and inst.components.followersitcommand:IsCurrentlyStaying() then		return GetStayPos(inst)	else		local target = GetLeader(inst) or ThePlayer   		if target then        		return target:GetPosition()    		end	endendlocal function ShouldGoHome(inst)    local homePos = inst.components.followersitcommand.locations["currentstaylocation"]    local myPos = Vector3(inst.Transform:GetWorldPosition() )    return (homePos and distsq(homePos, myPos) > GO_HOME_DIST*GO_HOME_DIST)endlocal function GoHomeAction(inst)    local homePos = inst.components.followersitcommand.locations["currentstaylocation"]    if homePos then        return BufferedAction(inst, nil, ACTIONS.WALKTO, nil, homePos, nil, 0.2)    endendfunction SummonClone:OnStart()           local root =         PriorityNode(        {	    IfNode(function() 			local target = self.inst.components.combat.target		    	if target and target:HasTag("bee") then				local beehome = target.components.homeseeker and target.components.homeseeker.home 				if beehome and beehome.prefab == "beebox" then					self.inst.components.combat:GiveUp()				end			end		end,		"OnFire", Panic(self.inst) ),                        WhileNode(function() return self.inst.components.health.takingfiredamage end, "OnFire",			ChattyNode(self.inst, STRINGS.SUMMONCLONE_TALK_PANICFIRE,				Panic(self.inst))),	    WhileNode(function() 		    		    	local currenthealth = self.inst.components.health.currenthealth / self.inst.components.health.maxhealth		    	if currenthealth < 0.1 then 				local playerprefab = ThePlayer   				local prefab = playerprefab.prefab   				self.inst.components.talker:Say(GetString(prefab, "ANNOUNCE_HUNGRY"))		    		return true							end	    end, "CloseToDeath",				Panic(self.inst)),            ChattyNode(self.inst, STRINGS.SUMMONCLONE_TALK_FIGHT,                WhileNode( function() return self.inst.components.combat.target == nil or not self.inst.components.combat:InCooldown() end, "AttackMomentarily",                    ChaseAndAttack(self.inst, MAX_CHASE_TIME, MAX_CHASE_DIST) )),            WhileNode( function() return self.inst.components.combat.target and self.inst.components.combat:InCooldown() end, "Dodge",                    RunAway(self.inst, function() return self.inst.components.combat.target end, RUN_AWAY_DIST, STOP_RUN_AWAY_DIST) ),         	    IfNode(function() 		    if (self.inst.components.follower.leader == nil) then			    	local x,y,z = self.inst.Transform:GetWorldPosition()				local ents = TheSim:FindEntities(x,y,z, TUNING.SPIDERHAT_RANGE, {"player"})				if (#ents > 0) then					local newfather = ents[1]					newfather.components.leader:AddFollower(self.inst)					self.inst.components.follower.maxfollowtime = 99999999					self.inst.components.follower:AddLoyaltyTime(9999999)					self.inst.components.combat:GiveUp()					return true				else return false				end	   		end   		end,		"OnFire", Panic(self.inst) ),   	--umbrellafollow	IfNode(function() 		if self.inst.components.follower.leader ~= nil and self.inst.components.followersitcommand and self.inst.components.followersitcommand:IsCurrentlyStaying() == false then			if self.inst.components.inventory:GetEquippedItem(EQUIPSLOTS.HANDS) and (self.inst.components.inventory:GetEquippedItem(EQUIPSLOTS.HANDS).prefab == "umbrella" or self.inst.components.inventory:GetEquippedItem(EQUIPSLOTS.HANDS).prefab == "grass_umbrella" or self.inst.components.inventory:GetEquippedItem(EQUIPSLOTS.HANDS).prefab == "torch") then				return true			end		end		end, "has leader",			Follow(self.inst, GetLeader, 1, 2.5, 1.5)),	--true follow	IfNode(function() 		if self.inst.components.follower.leader ~= nil and self.inst.components.followersitcommand and self.inst.components.followersitcommand:IsCurrentlyStaying() == false then			return true		elseif self.inst.components.follower.leader ~= nil and not self.inst.components.followersitcommand then			return true		end		end, "has leader",			Follow(self.inst, GetLeader, MIN_FOLLOW_LEADER, TARGET_FOLLOW_LEADER, MAX_FOLLOW_LEADER)),        -- and one where it is "gohome" to a position	IfNode(function() 				if self.inst.components.follower.leader ~= nil and self.inst.components.followersitcommand and self.inst.components.followersitcommand:IsCurrentlyStaying() == true then			return true		end		end, "has leader",			WhileNode(function() return ShouldGoHome(self.inst) end, "ShouldGoHome",            		DoAction(self.inst, GoHomeAction, "Go Home", true ))),  	IfNode(function() return self.inst.components.follower.leader ~= nil end, "has leader",		FaceEntity(self.inst, GetFaceTargetFn, KeepFaceTargetFn )),	          }, .1)        self.bt = BT(self.inst, root)                    self.inst:ListenForEvent("attacked", function(inst, data) self:OnAttacked(data.attacker) end)      self.inst:ListenForEvent("onattackother", function(inst, data) self:OnAttackOther(data.target) end)endfunction SummonClone:OnInitializationComplete()    --self.inst.components.knownlocations:RememberLocation("home", Point(self.inst.Transform:GetWorldPosition()))endreturn SummonClone

 

Sorry for putting 99.9% on the burden on you, I didn't think i'd hit this many hurdles.

Link to comment
Share on other sites

The "local whoisplayer = ThePlayer" is what makes the summons follow the host.

The code is executed in the server, ThePlayer is the host.

I don't know how the summons are generated, you will have to pass a parameter somehow.

 

Have you added any actions before? I'm not sure how are you doing this, heavenfall's code looks fine.

Not sure what I can recommend here to look at, maybe the Throwable spears mod of rezecib?

http://steamcommunity.com/sharedfiles/filedetails/?id=354415247

I will look into making the followersitcommand for a dummy follower.

Link to comment
Share on other sites

Well, I got this (attachment).

Tags propagate through the net, so they are very useful to avoid using replicas!

 

My followersitcommand goes in the components folder.

My modmain into your modmain.

 

You write AddComponent("followersitcommand") and the tags do the rest. For both host and client.

 

Try it out!

stuff.zip

Link to comment
Share on other sites

Yup, that was the fix I needed thanks! I also fixed the follower issue by removing the whoisplayer completely from the prefab file. (Or was your custom followersitcommand the cause? I dunno lol)

 

 

 

But a small problem I'm dealing with now is the character teleporting. My client, yet again, gets the Out-Of-Memory crash. It occurs after teleporting a few times around the map. At first I thought it was the beefalo scare code you gave me awhile back but removing that still didn't remedy it.

 

I'm starting to think this is more on my client's side but...anyway heres the tidbit of the crash log:

[00:00:00]: Starting Up[00:00:00]: Version: 134801[00:00:00]: Don't Starve Together: 134801 WIN32_STEAMNNN Build Date: 2015-04-27_16-58-08[00:00:00]: Parsing commandline[00:00:00]: Command Line Arguments: [00:00:00]: Initializin Minidump handler[00:00:00]: ....Done[00:00:00]: Initializing Steam[00:00:00]: Steam AppBuildID: 603996[00:00:00]: Steam BetaName(Branch): [rog_together_beta][00:00:00]: ....Done[00:00:00]: Fixing DPI[00:00:00]: ...Done[00:00:00]: THREAD - started 'GAClient' (9328)[00:00:00]: HttpClient::ClientThread::Main()[00:00:07]: ProfileIndex:12.15[00:00:07]: THREAD - started 'GAClient' (8624)[00:00:07]: Network tick rate: U=15(2), D=0[00:00:07]: THREAD - started 'GAClient' (6924)[00:00:07]: HttpClient::ClientThread::Main()[00:00:07]: HttpClient::ClientThread::Main()[00:00:08]: Network tick rate: U=15(2), D=0[00:00:08]: Authorized application C:\Program Files (x86)\Steam\steamapps\common\Don't Starve Together Beta\bin\dontstarve_steam.exe is enabled in the firewall.[00:00:08]: WindowsFirewall - Application already authorized[00:00:08]: loaded ping_cache[00:00:08]: OnLoadPermissionList: APP:Klei/DoNotStarveTogether/save/blocklist.txt (Failure)[00:00:08]: OnLoadPermissionList: APP:Klei/DoNotStarveTogether/save/adminlist.txt (Failure)[00:00:08]: Offline user name: OU_76561198162990845[00:00:08]: SteamID: 76561198162990845[00:00:08]: cGame::InitializeOnMainThread[00:00:08]: WindowManager::Initialize[00:00:08]: THREAD - started 'GAClient' (1116)[00:00:08]: CreateWindow: Requesting 1398,756 - 5/6/5 - -1/-1/-1 - 0[00:00:08]: HttpClient::ClientThread::Main()[00:00:08]: CreateEGLContext: 16 configs found[00:00:08]: RestoreWindowPosition[00:00:08]:    Saved Client Pos (22 x 66)[00:00:08]:    Adjusted Window Pos (14 x 35)[00:00:08]: EnsureWindowOnScreen[00:00:08]:    All good.[00:00:08]: THREAD - started 'WindowsInputManager' (5808)[00:00:08]: Renderer initialize: Okay[00:00:10]: AnimManager initialize: Okay[00:00:10]: Buffers initialize: Okay[00:00:11]: cDontStarveGame::DoGameSpecificInitialize()[00:00:11]: GameSpecific initialize: Okay[00:00:11]: cGame::StartPlaying[00:00:11]: LOADING LUA[00:00:11]: DoLuaFile scripts/main.lua[00:00:11]: DoLuaFile loading buffer scripts/main.lua[00:00:11]: scripts/main.lua(167,1) running main.lua	[00:00:11]: loaded modindex	[00:00:11]: ModIndex: Beginning normal load sequence.	[00:00:11]: ModIndex:GetModsToLoad inserting moddir, 	saberlion-ROG	[00:00:11]: ModIndex:GetModsToLoad inserting moddir, 	workshop-376333686	[00:00:11]: Could not load mod_config_data/modconfiguration_saberlion-ROG	[00:00:11]: Loading mod: saberlion-ROG (Saber Lion!) Version:1.1.7	[00:00:11]: loaded mod_config_data/modconfiguration_workshop-376333686	[00:00:11]: Loading mod: workshop-376333686 (Always On Status) Version:1.1.4	[00:00:11]: Mod: workshop-376333686 (Always On Status)	Loading modworldgenmain.lua	[00:00:11]: Mod: workshop-376333686 (Always On Status)	  Mod had no modworldgenmain.lua. Skipping.	[00:00:11]: Mod: workshop-376333686 (Always On Status)	Loading modmain.lua	[00:00:11]: Mod: saberlion-ROG (Saber Lion!)	Loading modworldgenmain.lua	[00:00:11]: Mod: saberlion-ROG (Saber Lion!)	  Mod had no modworldgenmain.lua. Skipping.	[00:00:11]: Mod: saberlion-ROG (Saber Lion!)	Loading modmain.lua	[00:00:14]: LOADING LUA SUCCESS[00:00:14]: PlayerDeaths loaded morgue	5569	[00:00:14]: loaded profile	[00:00:14]: bloom_enabled	false	[00:00:14]: loaded saveindex	[00:00:14]: OnFilesLoaded()	[00:00:14]: OnUpdatePurchaseStateComplete	[00:00:16]: Mod: workshop-376333686 (Always On Status)	Registering prefabs	[00:00:16]: Mod: workshop-376333686 (Always On Status)	  Registering default mod prefab	[00:00:16]: Mod: saberlion-ROG (Saber Lion!)	Registering prefabs	[00:00:16]: Mod: saberlion-ROG (Saber Lion!)	  Registering prefab file: prefabs/saberlion	[00:00:16]: Mod: saberlion-ROG (Saber Lion!)	    saberlion	[00:00:16]: Mod: saberlion-ROG (Saber Lion!)	  Registering prefab file: prefabs/sabermeat	[00:00:16]: Mod: saberlion-ROG (Saber Lion!)	    sabermeat	[00:00:16]: Mod: saberlion-ROG (Saber Lion!)	  Registering prefab file: prefabs/summonclone	[00:00:16]: Mod: saberlion-ROG (Saber Lion!)	    summonclone	[00:00:16]: Mod: saberlion-ROG (Saber Lion!)	  Registering default mod prefab	[00:00:17]: 	Load FE	[00:00:17]: 	Load FE: done	[00:00:17]: platform_motd	table: 12DF8A58	[00:00:17]: SimLuaProxy::QueryServer()[00:00:17]: SimLuaProxy::QueryServer()[00:00:17]: SimLuaProxy::QueryServer()[00:00:17]: ModIndex: Load sequence finished successfully.	[00:00:17]: Reset() returning[00:00:19]: platform_motd	table: 0B7D4FB8	[00:02:04]: OnSteamLobbyJoinRequested( 109775242024965176 )[00:02:04]: ForceAuthenticationDialog[00:02:05]: [200] Account Communication Success (6)[00:02:05]: [ACCOUNT_ACTION_TOKEN_PURPOSE] Received UserId from TokenPurpose: KU_Gl4sTPnP[00:02:05]: DownloadAndJoinSteamServer: 109775242024965176[00:02:05]: QueryServerComplete no callback[00:02:15]: Attempting to join: Animu is a type of loli[00:02:15]: At 138.229.157.194:10999[00:02:16]: [200] Account Communication Success (13)[00:02:16]: Joining Steam Room : 109775242024965176[00:02:16]: void cSteamPunchthrough::MessageResult( RakNet::Console_JoinRoom * message )[00:02:16]: MemberJoinedRoom: Member named Arcade and ID 76561198046032840 joined room with ID 109775242024965176[00:02:16]: Connecting using Steam Punchthrough address[00:02:20]: Connection request accepted to 202.112.175.232|1 with GUID 612489604559898773[00:02:20]: Network external address discovered: 150.136.105.220|1[00:02:20]: SendClientHandShakePacket: IBjYM6oMYfvrv5sllBcs9XLUeHPKVlKf to 612489604559898773[00:02:20]: DeserializeHandShakeServerListing[00:02:20]: Network tick rate: U=10(3), D=15[00:02:20]: Version: 134801[00:02:20]: Begin Session: 06A0000CDC951C6B[00:02:21]: Done Downloading Client Object Data[00:02:21]: DownloadMods and temp disable	[00:02:21]: Does saberlion-ROG v:1.1.7 exist? true	[00:02:21]: We now have the required mods, enable them for server	[00:02:21]: Temp Enabling saberlion-ROG	[00:02:21]: ModIndex:SetTempModConfigData	[00:02:21]: Setting temp mod config for mod 	saberlion-ROG	[00:02:21]: Mods are setup for server, save the mod index and proceed.	[00:02:21]: [00:02:21]: Downloading [0] From: server_temp[00:02:21]: 0 (43%) 1/1 server_temp\server_save 114000b / 261927b[00:02:21]: 0 (86%) 1/1 server_temp\server_save 228000b / 261927b[00:02:22]: 0 (100%) 1/1 server_temp\server_save 261927b / 261927b[00:02:22]: Download complete[0] Files: 1 Size: 261927[00:02:22]: unloading prefabs for mod MOD_workshop-376333686	[00:02:22]: unloading prefabs for mod MOD_saberlion-ROG	[00:02:22]: Collecting garbage...[00:02:22]: lua_gc took 0.03 seconds[00:02:22]: ~NetworkLuaProxy()[00:02:22]: ~SimLuaProxy()[00:02:22]: lua_close took 0.04 seconds[00:02:22]: cGame::StartPlaying[00:02:22]: LOADING LUA[00:02:22]: DoLuaFile scripts/main.lua[00:02:22]: DoLuaFile loading buffer scripts/main.lua[00:02:22]: scripts/main.lua(167,1) running main.lua	[00:02:22]: loaded modindex	[00:02:22]: ModIndex: Beginning normal load sequence.	[00:02:22]: ModIndex:GetModsToLoad inserting moddir, 	saberlion-ROG	[00:02:22]: ModIndex:GetModsToLoad inserting moddir, 	workshop-376333686	[00:02:22]: Could not load mod_config_data/modconfiguration_saberlion-ROG	[00:02:22]: Loading mod: saberlion-ROG (Saber Lion!) Version:1.1.7	[00:02:22]: loaded mod_config_data/modconfiguration_workshop-376333686	[00:02:22]: Loading mod: workshop-376333686 (Always On Status) Version:1.1.4	[00:02:22]: Mod: workshop-376333686 (Always On Status)	Loading modworldgenmain.lua	[00:02:22]: Mod: workshop-376333686 (Always On Status)	  Mod had no modworldgenmain.lua. Skipping.	[00:02:22]: Mod: workshop-376333686 (Always On Status)	Loading modmain.lua	[00:02:22]: Mod: saberlion-ROG (Saber Lion!)	Loading modworldgenmain.lua	[00:02:22]: Mod: saberlion-ROG (Saber Lion!)	  Mod had no modworldgenmain.lua. Skipping.	[00:02:22]: Mod: saberlion-ROG (Saber Lion!)	Loading modmain.lua	[00:02:22]: LOADING LUA SUCCESS[00:02:22]: PlayerDeaths loaded morgue	5569	[00:02:22]: loaded profile	[00:02:22]: bloom_enabled	false	[00:02:22]: loaded saveindex	[00:02:22]: OnFilesLoaded()	[00:02:22]: OnUpdatePurchaseStateComplete	[00:02:22]: 	Unload FE	[00:02:22]: 	Unload FE done	[00:02:24]: Mod: workshop-376333686 (Always On Status)	Registering prefabs	[00:02:24]: Mod: workshop-376333686 (Always On Status)	  Registering default mod prefab	[00:02:24]: Mod: saberlion-ROG (Saber Lion!)	Registering prefabs	[00:02:24]: Mod: saberlion-ROG (Saber Lion!)	  Registering prefab file: prefabs/saberlion	[00:02:24]: Mod: saberlion-ROG (Saber Lion!)	    saberlion	[00:02:24]: Mod: saberlion-ROG (Saber Lion!)	  Registering prefab file: prefabs/sabermeat	[00:02:24]: Mod: saberlion-ROG (Saber Lion!)	    sabermeat	[00:02:24]: Mod: saberlion-ROG (Saber Lion!)	  Registering prefab file: prefabs/summonclone	[00:02:24]: Mod: saberlion-ROG (Saber Lion!)	    summonclone	[00:02:24]: Mod: saberlion-ROG (Saber Lion!)	  Registering default mod prefab	[00:02:25]: 	LOAD BE	[00:02:27]: Could not preload undefined prefab 0x4058bc0 (molehat)[00:02:27]: Could not preload undefined prefab 0x20e21d7a (puppet_wes)[00:02:27]: Could not preload undefined prefab 0x20e21d7a (puppet_wes)[00:02:29]: 	LOAD BE: done	[00:02:29]: Deserialize world session from client_temp/server_save	[00:02:29]: Save file is at version 1	[00:02:29]: MiniMapComponent::AddAtlas( minimap/minimap_data.xml )[00:02:29]: MiniMapComponent::AddAtlas( ../mods/saberlion-ROG/images/inventoryimages/summonclone.xml )[00:02:29]: MiniMapComponent::AddAtlas( ../mods/saberlion-ROG/images/map_icons/saberlion.xml )[00:02:30]: Loading Nav Grid	[00:02:30]: Reconstructing topology	[00:02:30]: 	...Sorting points	[00:02:30]: 	...Sorting edges	[00:02:30]: 	...Connecting nodes	[00:02:30]: 	...Validating connections	[00:02:31]: 	...Housekeeping	[00:02:31]: 	...Done!	[00:02:31]: ModIndex: Load sequence finished successfully.	[00:02:31]: Reset() returning[00:02:31]: QueryServerComplete no callback[00:02:33]: Attempting to send resume request[00:02:34]: ReceiveResumeNotification[00:02:34]: Deleting user session from session/06A0000CDC951C6B/KU_Gl4sTPnP_/0000000001[00:02:38]: Movement prediction enabled	[00:02:38]: Could not find anim build temperature[00:02:38]: Could not find anim bank [temperature][00:02:38]: Could not find anim build temperature[00:02:38]: Could not find anim bank [temperature][00:02:38]: Loading minimap from session/06A0000CDC951C6B/KU_Gl4sTPnP_/minimap[00:02:38]: Clearing minimap[00:02:47]: [Physics] Error deserializing mass for entity summonclone[101075][00:02:49]: [Physics] Error deserializing mass for entity summonclone[101276][00:02:50]: [Physics] Error deserializing mass for entity summonclone[101478][00:02:52]: [Physics] Error deserializing mass for entity summonclone[101679][00:02:53]: [Physics] Error deserializing mass for entity summonclone[101880][00:02:55]: [Physics] Error deserializing mass for entity summonclone[102082][00:03:00]: [Physics] Error deserializing mass for entity summonclone[102140][00:03:00]: [Physics] Error deserializing mass for entity summonclone[102141][00:03:00]: [Physics] Error deserializing mass for entity summonclone[102142][00:03:00]: [Physics] Error deserializing mass for entity summonclone[102143][00:03:00]: [Physics] Error deserializing mass for entity summonclone[102144][00:03:00]: [Physics] Error deserializing mass for entity summonclone[102145][00:03:30]: [Physics] Error deserializing mass for entity summonclone[102140][00:03:30]: [Physics] Error deserializing mass for entity summonclone[102141][00:03:30]: [Physics] Error deserializing mass for entity summonclone[102142][00:03:30]: [Physics] Error deserializing mass for entity summonclone[102143][00:03:30]: [Physics] Error deserializing mass for entity summonclone[102144][00:03:30]: [Physics] Error deserializing mass for entity summonclone[102145][00:03:30]: RakNet detected a missing replica (19204)[00:03:30]: RakNet detected a missing replica (38144)[00:03:30]: RakNet detected a missing replica (23814)[00:03:30]: RakNet detected a missing replica (28464)[00:03:30]: RakNet detected a missing replica (37936)[00:03:30]: RakNet detected a missing replica (185507)[00:03:30]: RakNet detected a missing replica (123216)[00:03:30]: RakNet detected a missing replica (131523)[00:03:30]: RakNet detected a missing replica (125592)[00:03:30]: RakNet detected a missing replica (132192)[00:03:30]: RakNet detected a missing replica (160)[00:03:30]: RakNet detected a missing replica (152198)[00:03:30]: RakNet detected a missing replica (225812)[00:03:30]: RakNet detected a missing replica (7351)[00:03:30]: RakNet detected a missing replica (166327)[00:03:30]: RakNet detected a missing replica (81009)[00:03:30]: RakNet detected a missing replica (131116)[00:03:30]: RakNet detected a missing replica (67072)[00:03:30]: RakNet detected a missing replica (77940)[00:03:30]: RakNet detected a missing replica (1454)[00:03:30]: RakNet detected a missing replica (172880)[00:03:30]: RakNet detected a missing replica (198968)[00:03:30]: RakNet detected a missing replica (245637)[00:03:30]: RakNet detected a missing replica (92764)[00:03:30]: RakNet detected a missing replica (24617)[00:03:30]: RakNet detected a missing replica (40978)[00:03:30]: RakNet detected a missing replica (172491)[00:03:30]: RakNet detected a missing replica (72464)[00:03:30]: RakNet detected a missing replica (34130)[00:03:30]: RakNet detected a missing replica (195709)[00:03:30]: RakNet detected a missing replica (77468)[00:03:30]: RakNet detected a missing replica (259438)[00:03:30]: RakNet detected a missing replica (19291)[00:03:30]: RakNet detected a missing replica (38144)[00:03:30]: RakNet detected a missing replica (23814)[00:03:30]: RakNet detected a missing replica (154160)[00:03:30]: RakNet detected a missing replica (38018)[00:03:30]: RakNet detected a missing replica (227235)[00:03:30]: RakNet detected a missing replica (123300)[00:03:30]: RakNet detected a missing replica (253623)[00:03:30]: RakNet detected a missing replica (19204)[00:03:30]: RakNet detected a missing replica (42242)[00:03:30]: RakNet detected a missing replica (106247)[00:03:30]: RakNet detected a missing replica (180451)[00:03:30]: RakNet detected a missing replica (165214)[00:03:30]: RakNet detected a missing replica (11580)[00:03:30]: RakNet detected a missing replica (225528)[00:03:30]: RakNet detected a missing replica (255965)[00:03:30]: RakNet detected a missing replica (167757)[00:03:30]: RakNet detected a missing replica (230515)[00:03:30]: RakNet detected a missing replica (84851)[00:03:30]: RakNet detected a missing replica (193341)[00:03:30]: RakNet detected a missing replica (255673)[00:03:30]: RakNet detected a missing replica (29132)[00:03:30]: RakNet detected a missing replica (194820)[00:03:30]: RakNet detected a missing replica (159990)[00:03:30]: RakNet detected a missing replica (121987)[00:03:30]: RakNet detected a missing replica (71117)[00:03:30]: RakNet detected a missing replica (83274)[00:03:30]: RakNet detected a missing replica (92114)[00:03:30]: RakNet detected a missing replica (197747)[00:03:30]: RakNet detected a missing replica (108839)[00:03:30]: RakNet detected a missing replica (175227)[00:03:30]: RakNet detected a missing replica (248205)[00:03:30]: RakNet detected a missing replica (52111)[00:03:30]: RakNet detected a missing replica (218167)[00:03:30]: RakNet detected a missing replica (201453)[00:03:30]: RakNet detected a missing replica (106116)[00:03:30]: RakNet detected a missing replica (126201)[00:03:30]: RakNet detected a missing replica (47363)[00:03:30]: RakNet detected a missing replica (233984)[00:03:30]: RakNet detected a missing replica (16659)[00:03:30]: RakNet detected a missing replica (57438)[00:03:30]: RakNet detected a missing replica (222464)[00:03:30]: RakNet detected a missing replica (198211)[00:03:30]: RakNet detected a missing replica (92465)[00:03:30]: RakNet detected a missing replica (212746)[00:03:30]: RakNet detected a missing replica (19986)[00:03:30]: RakNet detected a missing replica (142940)[00:03:30]: RakNet detected a missing replica (134872)[00:03:30]: RakNet detected a missing replica (65942)[00:03:30]: RakNet detected a missing replica (197450)[00:03:30]: RakNet detected a missing replica (258366)[00:03:30]: RakNet detected a missing replica (77697)[00:03:30]: RakNet detected a missing replica (7691)[00:03:30]: RakNet detected a missing replica (31834)[00:03:30]: RakNet detected a missing replica (257761)[00:03:30]: RakNet detected a missing replica (239311)[00:03:30]: RakNet detected a missing replica (211231)[00:03:30]: RakNet detected a missing replica (178441)[00:03:30]: RakNet detected a missing replica (237206)[00:03:30]: RakNet detected a missing replica (220391)[00:03:30]: RakNet detected a missing replica (59085)[00:03:30]: RakNet detected a missing replica (66274)[00:03:30]: RakNet detected a missing replica (31731)[00:03:30]: RakNet detected a missing replica (213473)[00:03:30]: RakNet detected a missing replica (190136)[00:03:30]: RakNet detected a missing replica (42282)[00:03:30]: RakNet detected a missing replica (59786)[00:03:30]: RakNet detected a missing replica (178638)[00:03:30]: RakNet detected a missing replica (234249)[00:03:30]: RakNet detected a missing replica (245074)[00:03:30]: RakNet detected a missing replica (214617)[00:03:30]: RakNet detected a missing replica (247699)[00:03:30]: RakNet detected a missing replica (138134)[00:03:30]: RakNet detected a missing replica (194217)[00:03:30]: RakNet detected a missing replica (115237)[00:03:30]: RakNet detected a missing replica (261180)[00:03:30]: RakNet detected a missing replica (229848)[00:03:30]: RakNet detected a missing replica (65650)[00:03:30]: RakNet detected a missing replica (166181)[00:03:30]: RakNet detected a missing replica (77698)[00:03:30]: RakNet detected a missing replica (45699)[00:03:30]: RakNet detected a missing replica (106798)[00:03:30]: RakNet detected a missing replica (245535)[00:03:30]: RakNet detected a missing replica (134071)[00:03:30]: RakNet detected a missing replica (19256)[00:03:30]: RakNet detected a missing replica (201227)[00:03:30]: RakNet detected a missing replica (108800)[00:03:30]: RakNet detected a missing replica (255745)[00:03:30]: RakNet detected a missing replica (61560)[00:03:30]: RakNet detected a missing replica (106903)[00:03:30]: RakNet detected a missing replica (68495)[00:03:30]: RakNet detected a missing replica (7230)[00:03:30]: RakNet detected a missing replica (227831)[00:03:30]: RakNet detected a missing replica (222163)[00:03:30]: RakNet detected a missing replica (57756)[00:03:30]: RakNet detected a missing replica (250588)[00:03:30]: RakNet detected a missing replica (228431)[00:03:30]: RakNet detected a missing replica (162222)[00:03:30]: RakNet detected a missing replica (72947)[00:03:30]: RakNet detected a missing replica (81409)[00:03:30]: RakNet detected a missing replica (40125)[00:03:30]: RakNet detected a missing replica (63392)[00:03:30]: RakNet detected a missing replica (83315)[00:03:30]: RakNet detected a missing replica (102738)[00:03:30]: RakNet detected a missing replica (235892)[00:03:30]: RakNet detected a missing replica (49500)[00:03:30]: RakNet detected a missing replica (125641)[00:03:30]: RakNet detected a missing replica (60254)[00:03:30]: RakNet detected a missing replica (94883)[00:03:30]: RakNet detected a missing replica (258787)[00:03:30]: RakNet detected a missing replica (54541)[00:03:30]: RakNet detected a missing replica (148731)[00:03:30]: RakNet detected a missing replica (141281)[00:03:30]: RakNet detected a missing replica (31614)[00:03:30]: RakNet detected a missing replica (126528)[00:03:30]: RakNet detected a missing replica (140288)[00:03:30]: RakNet detected a missing replica (118980)[00:03:30]: RakNet detected a missing replica (47127)[00:03:30]: RakNet detected a missing replica (71936)[00:03:30]: RakNet detected a missing replica (180688)[00:03:30]: RakNet detected a missing replica (126988)[00:03:30]: RakNet detected a missing replica (36674)[00:03:30]: RakNet detected a missing replica (168708)[00:03:30]: RakNet detected a missing replica (192534)[00:03:30]: RakNet detected a missing replica (182229)[00:03:30]: RakNet detected a missing replica (98341)[00:03:30]: RakNet detected a missing replica (229458)[00:03:30]: RakNet detected a missing replica (113871)[00:03:30]: RakNet detected a missing replica (216032)[00:03:30]: RakNet detected a missing replica (182082)[00:03:30]: RakNet detected a missing replica (40726)[00:03:30]: RakNet detected a missing replica (162616)[00:03:30]: RakNet detected a missing replica (190963)[00:03:30]: RakNet detected a missing replica (118471)[00:03:30]: RakNet detected a missing replica (93890)[00:03:30]: RakNet detected a missing replica (173989)[00:03:30]: RakNet detected a missing replica (55289)[00:03:30]: RakNet detected a missing replica (162291)[00:03:30]: RakNet detected a missing replica (163896)[00:03:30]: RakNet detected a missing replica (253564)[00:03:30]: RakNet detected a missing replica (86072)[00:03:30]: RakNet detected a missing replica (145902)[00:03:30]: RakNet detected a missing replica (108938)[00:03:30]: RakNet detected a missing replica (113186)[00:03:30]: RakNet detected a missing replica (110131)[00:03:30]: RakNet detected a missing replica (222338)[00:03:30]: RakNet detected a missing replica (110548)[00:03:30]: RakNet detected a missing replica (152022)[00:03:30]: RakNet detected a missing replica (258532)[00:03:30]: RakNet detected a missing replica (231141)[00:03:30]: RakNet detected a missing replica (163242)[00:03:30]: RakNet detected a missing replica (159881)[00:03:30]: RakNet detected a missing replica (16207)[00:03:30]: RakNet detected a missing replica (73974)[00:03:30]: RakNet detected a missing replica (32988)[00:03:30]: RakNet detected a missing replica (90697)[00:03:30]: RakNet detected a missing replica (232352)[00:03:30]: RakNet detected a missing replica (112)[00:03:30]: RakNet detected a missing replica (124978)[00:03:30]: RakNet detected a missing replica (20867)[00:03:30]: RakNet detected a missing replica (107006)[00:03:30]: RakNet detected a missing replica (235293)[00:03:30]: RakNet detected a missing replica (134087)[00:03:30]: RakNet detected a missing replica (101632)[00:03:30]: RakNet detected a missing replica (217682)[00:03:30]: RakNet detected a missing replica (108800)[00:03:30]: RakNet detected a missing replica (255745)[00:03:30]: RakNet detected a missing replica (61560)[00:03:30]: RakNet detected a missing replica (106903)[00:03:30]: RakNet detected a missing replica (68495)[00:03:30]: RakNet detected a missing replica (7230)[00:03:30]: RakNet detected a missing replica (227831)[00:03:30]: RakNet detected a missing replica (222163)[00:03:30]: RakNet detected a missing replica (57756)[00:03:30]: RakNet detected a missing replica (250588)[00:03:30]: RakNet detected a missing replica (228431)[00:03:30]: RakNet detected a missing replica (162222)[00:03:30]: RakNet detected a missing replica (72947)[00:03:30]: RakNet detected a missing replica (81409)[00:03:30]: RakNet detected a missing replica (40125)[00:03:30]: RakNet detected a missing replica (63392)[00:03:30]: RakNet detected a missing replica (83315)[00:03:30]: RakNet detected a missing replica (102738)[00:03:30]: RakNet detected a missing replica (235892)[00:03:30]: RakNet detected a missing replica (49500)[00:03:30]: RakNet detected a missing replica (125641)[00:03:30]: RakNet detected a missing replica (60254)[00:03:30]: RakNet detected a missing replica (94883)[00:03:30]: RakNet detected a missing replica (258787)[00:03:30]: RakNet detected a missing replica (54541)[00:03:30]: RakNet detected a missing replica (148731)[00:03:30]: RakNet detected a missing replica (141281)[00:03:30]: RakNet detected a missing replica (31614)[00:03:30]: RakNet detected a missing replica (126528)[00:03:30]: RakNet detected a missing replica (140288)[00:03:30]: RakNet detected a missing replica (118980)[00:03:30]: RakNet detected a missing replica (47127)[00:03:30]: RakNet detected a missing replica (71936)[00:03:30]: RakNet detected a missing replica (246224)[00:03:30]: RakNet detected a missing replica (127214)[00:03:30]: RakNet detected a missing replica (102466)[00:03:30]: RakNet detected a missing replica (172908)[00:03:30]: RakNet detected a missing replica (77335)[00:03:30]: RakNet detected a missing replica (84943)[00:03:30]: RakNet detected a missing replica (98469)[00:03:30]: RakNet detected a missing replica (229458)[00:03:30]: RakNet detected a missing replica (113871)[00:03:30]: RakNet detected a missing replica (216032)[00:03:30]: RakNet detected a missing replica (182082)[00:03:30]: RakNet detected a missing replica (40726)[00:03:30]: RakNet detected a missing replica (162616)[00:03:30]: RakNet detected a missing replica (190963)[00:03:30]: RakNet detected a missing replica (118471)[00:03:30]: RakNet detected a missing replica (93890)[00:03:30]: RakNet detected a missing replica (173989)[00:03:30]: RakNet detected a missing replica (55289)[00:03:30]: RakNet detected a missing replica (162291)[00:03:30]: RakNet detected a missing replica (163896)[00:03:30]: RakNet detected a missing replica (253564)[00:03:30]: RakNet detected a missing replica (86072)[00:03:30]: RakNet detected a missing replica (145902)[00:03:30]: RakNet detected a missing replica (108938)[00:03:30]: RakNet detected a missing replica (113186)[00:03:30]: RakNet detected a missing replica (110131)[00:03:30]: RakNet detected a missing replica (222338)[00:03:30]: RakNet detected a missing replica (110548)[00:03:30]: RakNet detected a missing replica (152022)[00:03:30]: RakNet detected a missing replica (258532)[00:03:30]: RakNet detected a missing replica (231141)[00:03:30]: RakNet detected a missing replica (163242)[00:03:30]: RakNet detected a missing replica (159881)[00:03:30]: RakNet detected a missing replica (16207)[00:03:30]: RakNet detected a missing replica (73974)[00:03:30]: RakNet detected a missing replica (32988)[00:03:30]: RakNet detected a missing replica (90697)[00:03:30]: RakNet detected a missing replica (232352)[00:03:30]: RakNet detected a missing replica (112)[00:03:30]: RakNet detected a missing replica (124978)[00:03:30]: RakNet detected a missing replica (115842)[00:03:30]: RakNet detected a missing replica (106894)[00:03:30]: RakNet detected a missing replica (258076)[00:03:30]: RakNet detected a missing replica (68431)[00:03:30]: RakNet detected a missing replica (243645)[00:03:30]: RakNet detected a missing replica (19204)[00:03:30]: RakNet detected a missing replica (57345)[00:03:30]: RakNet detected a missing replica (23814)[00:03:30]: RakNet detected a missing replica (158256)[00:03:30]: RakNet detected a missing replica (21613)[00:03:30]: RakNet detected a missing replica (74660)[00:03:30]: RakNet detected a missing replica (123368)[00:03:30]: RakNet detected a missing replica (122562)[00:03:30]: RakNet detected a missing replica (59392)[00:03:30]: RakNet detected a missing replica (203545)[00:03:30]: RakNet detected a missing replica (95342)[00:03:30]: RakNet detected a missing replica (184781)[00:03:30]: RakNet detected a missing replica (75543)[00:03:30]: RakNet detected a missing replica (215961)[00:03:30]: RakNet detected a missing replica (94061)[00:03:30]: RakNet detected a missing replica (169433)[00:03:30]: RakNet detected a missing replica (218838)[00:03:30]: RakNet detected a missing replica (199581)[00:03:30]: RakNet detected a missing replica (95602)[00:03:30]: RakNet detected a missing replica (228793)[00:03:30]: RakNet detected a missing replica (259702)[00:03:30]: RakNet detected a missing replica (203993)[00:03:30]: RakNet detected a missing replica (19229)[00:03:30]: RakNet detected a missing replica (57345)[00:03:30]: RakNet detected a missing replica (23814)[00:03:30]: RakNet detected a missing replica (29744)[00:03:30]: RakNet detected a missing replica (38051)[00:03:30]: RakNet detected a missing replica (138660)[00:03:30]: RakNet detected a missing replica (123268)[00:03:30]: RakNet detected a missing replica (132807)[00:03:30]: RakNet detected a missing replica (32)[00:03:30]: RakNet detected a missing replica (135168)[00:03:30]: RakNet detected a missing replica (8192)[00:03:30]: RakNet detected a missing replica (98318)[00:03:30]: RakNet detected a missing replica (179601)[00:03:30]: RakNet detected a missing replica (18407)[00:03:30]: RakNet detected a missing replica (71901)[00:03:30]: RakNet detected a missing replica (95858)[00:03:30]: RakNet detected a missing replica (179604)[00:03:30]: RakNet detected a missing replica (128982)[00:03:30]: RakNet detected a missing replica (88985)[00:03:30]: RakNet detected a missing replica (93797)[00:03:30]: RakNet detected a missing replica (245200)[00:03:30]: RakNet detected a missing replica (218663)[00:03:30]: RakNet detected a missing replica (253335)[00:03:30]: RakNet detected a missing replica (94063)[00:03:30]: RakNet detected a missing replica (183441)[00:03:30]: RakNet detected a missing replica (45252)[00:03:30]: RakNet detected a missing replica (30)[00:03:30]: RakNet detected a missing replica (249957)[00:03:30]: RakNet detected a missing replica (126725)[00:03:30]: RakNet detected a missing replica (148133)[00:03:30]: RakNet detected a missing replica (34366)[00:03:30]: RakNet detected a missing replica (202366)[00:03:30]: RakNet detected a missing replica (29123)[00:03:30]: RakNet detected a missing replica (19260)[00:03:30]: RakNet detected a missing replica (57345)[00:03:30]: RakNet detected a missing replica (23814)[00:03:30]: RakNet detected a missing replica (92208)[00:03:30]: RakNet detected a missing replica (21601)[00:03:30]: RakNet detected a missing replica (252067)[00:03:30]: RakNet detected a missing replica (123358)[00:03:30]: RakNet detected a missing replica (7872)[00:03:30]: RakNet detected a missing replica (59392)[00:03:30]: RakNet detected a missing replica (203545)[00:03:30]: RakNet detected a missing replica (95342)[00:03:30]: RakNet detected a missing replica (184781)[00:03:30]: RakNet detected a missing replica (75543)[00:03:30]: RakNet detected a missing replica (215961)[00:03:30]: RakNet detected a missing replica (94061)[00:03:30]: RakNet detected a missing replica (169433)[00:03:30]: RakNet detected a missing replica (218838)[00:03:30]: RakNet detected a missing replica (199581)[00:03:30]: RakNet detected a missing replica (95602)[00:03:30]: RakNet detected a missing replica (228793)[00:03:30]: RakNet detected a missing replica (259702)[00:03:30]: RakNet detected a missing replica (203993)[00:03:30]: RakNet detected a missing replica (19273)[00:03:30]: RakNet detected a missing replica (57345)[00:03:30]: RakNet detected a missing replica (23814)[00:03:30]: RakNet detected a missing replica (228400)[00:03:30]: RakNet detected a missing replica (38028)[00:03:30]: RakNet detected a missing replica (81316)[00:03:30]: RakNet detected a missing replica (123152)[00:03:30]: RakNet detected a missing replica (45771)[00:03:30]: RakNet detected a missing replica (48)[00:03:30]: RakNet detected a missing replica (135168)[00:03:30]: RakNet detected a missing replica (8192)[00:03:30]: RakNet detected a missing replica (98318)[00:03:30]: RakNet detected a missing replica (179601)[00:03:30]: RakNet detected a missing replica (18407)[00:03:30]: RakNet detected a missing replica (71901)[00:03:30]: RakNet detected a missing replica (95858)[00:03:30]: RakNet detected a missing replica (179604)[00:03:30]: RakNet detected a missing replica (128982)[00:03:30]: RakNet detected a missing replica (88985)[00:03:30]: RakNet detected a missing replica (93797)[00:03:30]: RakNet detected a missing replica (245200)[00:03:30]: RakNet detected a missing replica (218663)[00:03:30]: RakNet detected a missing replica (253335)[00:03:30]: RakNet detected a missing replica (94063)[00:03:30]: RakNet detected a missing replica (118161)[00:03:30]: RakNet detected a missing replica (45236)[00:03:30]: RakNet detected a missing replica (30)[00:03:30]: RakNet detected a missing replica (249957)[00:03:30]: RakNet detected a missing replica (26885)[00:03:30]: RakNet detected a missing replica (148069)[00:03:30]: RakNet detected a missing replica (84284)[00:03:30]: RakNet detected a missing replica (202382)[00:03:30]: RakNet detected a missing replica (177273)[00:03:30]: RakNet detected a missing replica (19204)[00:03:30]: RakNet detected a missing replica (38144)[00:03:30]: RakNet detected a missing replica (23814)[00:03:30]: RakNet detected a missing replica (92208)[00:03:30]: RakNet detected a missing replica (5367)[00:03:30]: RakNet detected a missing replica (84644)[00:03:30]: RakNet detected a missing replica (123283)[00:03:30]: RakNet detected a missing replica (251074)[00:03:30]: RakNet detected a missing replica (125672)[00:03:30]: RakNet detected a missing replica (132192)[00:03:30]: RakNet detected a missing replica (160)[00:03:30]: RakNet detected a missing replica (189068)[00:03:30]: RakNet detected a missing replica (33300)[00:03:30]: RakNet detected a missing replica (15367)[00:03:30]: RakNet detected a missing replica (165815)[00:03:30]: RakNet detected a missing replica (80967)[00:03:30]: RakNet detected a missing replica (131116)[00:03:30]: RakNet detected a missing replica (67072)[00:03:30]: RakNet detected a missing replica (77940)[00:03:30]: RakNet detected a missing replica (124569)[00:03:30]: RakNet detected a missing replica (238416)[00:03:30]: RakNet detected a missing replica (205309)[00:03:30]: RakNet detected a missing replica (49285)[00:03:30]: RakNet detected a missing replica (129687)[00:03:30]: RakNet detected a missing replica (24617)[00:03:30]: RakNet detected a missing replica (40978)[00:03:30]: RakNet detected a missing replica (172491)[00:03:30]: RakNet detected a missing replica (22799)[00:03:30]: RakNet detected a missing replica (34218)[00:03:30]: RakNet detected a missing replica (225676)[00:03:30]: RakNet detected a missing replica (77372)[00:03:30]: RakNet detected a missing replica (66936)[00:03:30]: RakNet detected a missing replica (19291)[00:03:30]: RakNet detected a missing replica (38144)[00:03:30]: RakNet detected a missing replica (23814)[00:03:30]: RakNet detected a missing replica (152624)[00:03:30]: RakNet detected a missing replica (21683)[00:03:30]: RakNet detected a missing replica (125859)[00:03:30]: RakNet detected a missing replica (123305)[00:03:30]: RakNet detected a missing replica (35767)[00:03:30]: RakNet detected a missing replica (19204)[00:03:30]: RakNet detected a missing replica (38144)[00:03:30]: RakNet detected a missing replica (23814)[00:03:30]: RakNet detected a missing replica (91696)[00:03:30]: RakNet detected a missing replica (5270)[00:03:30]: RakNet detected a missing replica (29092)[00:03:30]: RakNet detected a missing replica (123330)[00:03:30]: RakNet detected a missing replica (52674)[00:03:30]: RakNet detected a missing replica (125648)[00:03:30]: RakNet detected a missing replica (132192)[00:03:30]: RakNet detected a missing replica (160)[00:03:30]: RakNet detected a missing replica (170653)[00:03:30]: RakNet detected a missing replica (230932)[00:03:30]: RakNet detected a missing replica (56515)[00:03:30]: RakNet detected a missing replica (34999)[00:03:30]: RakNet detected a missing replica (80922)[00:03:30]: RakNet detected a missing replica (131116)[00:03:30]: RakNet detected a missing replica (67072)[00:03:30]: RakNet detected a missing replica (77940)[00:03:30]: RakNet detected a missing replica (85650)[00:03:30]: RakNet detected a missing replica (42064)[00:03:30]: RakNet detected a missing replica (199063)[00:03:30]: RakNet detected a missing replica (49285)[00:03:30]: RakNet detected a missing replica (111278)[00:03:30]: RakNet detected a missing replica (24617)[00:03:30]: RakNet detected a missing replica (40978)[00:03:30]: RakNet detected a missing replica (172491)[00:03:30]: RakNet detected a missing replica (5391)[00:03:30]: RakNet detected a missing replica (34298)[00:03:30]: RakNet detected a missing replica (145553)[00:03:30]: RakNet detected a missing replica (77436)[00:03:30]: RakNet detected a missing replica (29305)[00:03:30]: RakNet detected a missing replica (19291)[00:03:30]: RakNet detected a missing replica (38144)[00:03:30]: RakNet detected a missing replica (23814)[00:03:30]: RakNet detected a missing replica (217648)[00:03:30]: RakNet detected a missing replica (5193)[00:03:30]: RakNet detected a missing replica (70308)[00:03:30]: RakNet detected a missing replica (123295)[00:03:30]: RakNet detected a missing replica (32951)

 

I wish I could do some more testing but my Client tester is now out to bed sleeping and I'm to lazy to create a dedicated server. I'll keep you updated once my Client and I do more testing.

Link to comment
Share on other sites

Apparently I lost my editing permissions so my apologies for the extra post

 

I should've clarified on one sentence, *"But a small problem I'm dealing with now is the character teleporting. My client, yet again, gets the Out-Of-Memory crash. It occurs after teleporting a few times around the map(With the clones actively following her)"

Link to comment
Share on other sites

Sorry I should've shown you my updated summonclone.lua, it already had all of those you suggested so I can't quite pinpoint the cause.

local brain = require "brains/summonclonebrain"local assets ={	Asset("ATLAS", "images/inventoryimages/summonclone.xml"),	Asset("ANIM", "anim/player_basic.zip"),        Asset("ANIM", "anim/player_idles_shiver.zip"),        Asset("ANIM", "anim/player_actions.zip"),        Asset("ANIM", "anim/player_actions_axe.zip"),        Asset("ANIM", "anim/player_actions_pickaxe.zip"),        Asset("ANIM", "anim/player_actions_shovel.zip"),        Asset("ANIM", "anim/player_actions_blowdart.zip"),        Asset("ANIM", "anim/player_actions_eat.zip"),        Asset("ANIM", "anim/player_actions_item.zip"),        Asset("ANIM", "anim/player_cave_enter.zip"),        Asset("ANIM", "anim/player_actions_uniqueitem.zip"),        Asset("ANIM", "anim/player_actions_bugnet.zip"),        Asset("ANIM", "anim/player_actions_fishing.zip"),        Asset("ANIM", "anim/player_actions_boomerang.zip"),        Asset("ANIM", "anim/player_bush_hat.zip"),        Asset("ANIM", "anim/player_attacks.zip"),        Asset("ANIM", "anim/player_idles.zip"),        Asset("ANIM", "anim/player_rebirth.zip"),        Asset("ANIM", "anim/player_jump.zip"),        Asset("ANIM", "anim/player_amulet_resurrect.zip"),		Asset("ANIM", "anim/player_teleport.zip"),        Asset("ANIM", "anim/wilson_fx.zip"),        Asset("ANIM", "anim/player_one_man_band.zip"),        Asset("ANIM", "anim/player_slurtle_armor.zip"),        Asset("ANIM", "anim/player_staff.zip"),        		Asset("ANIM", "anim/shadow_hands.zip"),        Asset("SOUND", "sound/sfx.fsb"),        Asset("SOUND", "sound/wilson.fsb"),}local prefabs ={	"saberlion"}local onloadfn = function(inst, data)	if data and data.sleeping then		inst.components.sleeper:GoToSleep()	endendlocal onsavefn = function(inst, data)	if inst.components.sleeper:IsAsleep() then		data.sleeping = true	endendlocal function CalcSanityAura(inst, observer)		if inst.components.follower and inst.components.follower.leader == observer then		return -TUNING.SANITYAURA_LARGE	end		return 0endlocal function CalcSanityAura_Maxwell(inst, observer)	return 0endlocal function ShouldAcceptItem(inst, item)	local currenthealth = inst.components.health.currenthealth / inst.components.health.maxhealth	if item.components.edible and currenthealth < 1 and item.components.edible.healthvalue > 0 then		return true	end    	if item.components.equippable and (item.components.equippable.equipslot == EQUIPSLOTS.HEAD or item.components.equippable.equipslot == EQUIPSLOTS.HANDS or item.components.equippable.equipslot == EQUIPSLOTS.BODY) and not item.components.projectile then		if item.prefab == "batbat" then			print ("refusing batbat")			return false		end        	return true   	endendlocal function OnGetItemFromPlayer(inst, giver, item)    	if item.components.equippable and (item.components.equippable.equipslot == EQUIPSLOTS.HEAD or item.components.equippable.equipslot == EQUIPSLOTS.HANDS or item.components.equippable.equipslot == EQUIPSLOTS.BODY)   then     		local newslot = item.components.equippable.equipslot		local current = inst.components.inventory:GetEquippedItem(newslot)		if current then            		inst.components.inventory:DropItem(current)        	end              	inst.components.inventory:Equip(item)	elseif item.components.edible then                inst.components.health:DoDelta(item.components.edible:GetHealth(inst), nil, item.prefab)		inst:PushEvent("oneatsomething", {food = item})		inst.sg:GoToState("eat")    	endendlocal function OnRefuseItem(inst, item)    inst.sg:GoToState("refuse")    local playerprefab = ThePlayer    local actualprefab = playerprefab.prefab    inst.components.talker:Say(GetString(actualprefab, "ACTIONFAIL_GENERIC"))endlocal function NormalRetargetFn(inst)    return FindEntity(inst, TUNING.PIG_TARGET_DIST,        function(guy)                return guy:HasTag("monster") and guy.prefab ~= "webber" and guy.components.health and not guy.components.health:IsDead() and inst.components.combat:CanTarget(guy)        end)endlocal function fn(Sim)    	local inst = CreateEntity()    inst.entity:AddTransform()    inst.entity:AddAnimState()    inst.entity:AddNetwork()	inst.entity:AddSoundEmitter()	inst.entity:AddDynamicShadow()	--local whoisplayer = ThePlayer		shadow:SetSize( 1.5, .75 )    inst.Transform:SetFourFaced()	    MakeCharacterPhysics(inst, 30, .3)    --inst:AddTag("monster")    inst:AddTag("summonclone")    inst:AddTag("sheltercarrier")    inst:AddTag("summonedbyplayer")    inst:AddTag("scarytoprey")    inst.AnimState:SetBank("wilson")    inst.AnimState:SetBuild("saberlion")    --anim:PlayAnimation("idle_loop", true)	    if not TheWorld.ismastersim then        return inst    end     inst.entity:SetPristine()        ------------------------------------------    inst:AddComponent("locomotor") -- locomotor must be constructed before the stategraph    inst.components.locomotor.runspeed = 7    inst.components.locomotor.walkspeed = 7        ------------------------------------------    ------------------------------------------    inst:AddComponent("sanityaura")    inst.components.sanityaura.aurafn = CalcSanityAura    MakeMediumBurnableCharacter(inst, "pig_torso")    ------------------    inst:AddComponent("health")    inst.components.health:SetMaxHealth(TUNING.WILSON_HEALTH)    ------------------        inst:AddComponent("combat")    inst.components.combat:SetDefaultDamage(TUNING.UNARMED_DAMAGE)    --inst.components.combat.hiteffectsymbol = "pig_torso"    inst.components.combat:SetAttackPeriod(2)    inst.components.combat:SetRetargetFunction(3, NormalRetargetFn)        ------------------------------------------        inst:AddComponent("inventory")	    ------------------------------------------    inst.entity:AddLabel()    inst.Label:SetFontSize(20)    inst.Label:SetFont(DEFAULTFONT)    inst.Label:SetColour(1, 1, 1)    inst.Label:Enable(true)    ------------------------------------------    inst:AddComponent("follower")    inst.components.follower.maxfollowtime = 99999999    --print("treeguard should follow "..whoisplayer)    inst.components.follower:AddLoyaltyTime(9999999)    ------------------------------------------    inst:AddComponent("talker")    inst.components.talker:StopIgnoringAll()    ------------------------------------------    inst:AddComponent("inspectable")    local minimap = inst.entity:AddMiniMapEntity()    minimap:SetIcon( "summonclone.tex" )    ------------------------------------------    inst.Transform:SetScale(0.7, 0.7, 0.7)       inst:SetBrain(brain)    if ACTIONS.SITCOMMAND ~= nil then    	inst:AddComponent("followersitcommand")    end    inst:AddComponent("lootdropper")	inst:AddComponent("norecipelootdrop")	    inst:AddComponent("trader")	inst.components.trader:Enable()    inst.components.trader:SetAcceptTest(ShouldAcceptItem)    inst.components.trader.onaccept = OnGetItemFromPlayer    inst.components.trader.onrefuse = OnRefuseItem    inst.AnimState:Hide("ARM_carry")     inst.AnimState:Show("ARM_normal") 	    inst:AddComponent("wisecrackerclone")    -- begin custom functions        inst:ListenForEvent( "nighttime", function()          inst.components.health:DoDelta(-10)  	end, TheWorld)        inst:SetStateGraph("SGsummonclone")       return instendreturn Prefab( "common/summonclone", fn, assets, prefabs)

 

Well actually I just changed:

 local sound = inst.entity:AddSoundEmitter()

    local shadow = inst.entity:AddDynamicShadow()
 
to

   

inst.entity:AddSoundEmitter()
    inst.entity:AddDynamicShadow()

 

Just now but I can't test if that did anything(As my client is sleeping).

 

Edit update: Nope, that didn't fix anything.

Edited by rons0n
Link to comment
Share on other sites

That doesn't look wrong.

You should do things step by step and looking at the log. To pinpoint what and when exactly the error triggers.

 

Also, you have "could not find temperature bank". That shouldn't happen.

So, maybe you touched something in the lion prefab that ended up affecting the summons?

 

I'm gonna need the zip of the mod to test it as a whole.

Link to comment
Share on other sites

Alright, I'll be heading off somewhere for a bit so my apologies if i give you a late response later.

 

You've done like 90% of the work so I don't know if you want to be now called a contributor, its completely optional though. I don't wanna force you.

 

 

saberlion.zip

Link to comment
Share on other sites

"Gao screw you!"

 

MY CHILDREN HATE ME.

 

Anyway thanks for the fix as always DarkXero(And that little added component you gave her). Unfortunately the Out-Of-Memory crash still happens BUT ONLY if you use the c_move(AllPlayers) command. This seems to be unfixable as far as we know.

 

She's completely fine going through wormholes and the telestaff(non console). So my conclusion is, if you never move her by console shes completely fine, and I'm content with that. Unless now the given information will help you spot the cause?

 

Allwell, thanks! Uploading her now so people can embrace the Lion goodness!

Link to comment
Share on other sites

@rons0n, I'm unable to replicate the issue.

 

First, c_move(AllPlayers) won't work, because AllPlayers.Transform is nil.

Second, if I do c_move(AllPlayers[1]), then I move to where my mouse is. So it works as intended.

 

This, in a dedicated server. Myself as client.

I even tried c_gonext("pigking"), and then I teleported, and then the cubs teleported.

 

Are you sure you are doing c_move(AllPlayers) exactly?

I need the very same steps you do, from entering the server until the crash.

Do you c_spawn cubs?

Link to comment
Share on other sites

Sorry I should've been more clear, I tend to do that.

 

Alright this is how I replicated it:

1. Start (passworded)Server where im the host

2. Client joins in hosted server

3. I tell client to make atleast 6 clones

4. I then move far away(really far by using the c_gonext("prefab") console command.

5. type c_move(AllPlayers[2]) the client to my destination

6. Client tells me she crashes

 

Thats all there is to it sadly. I did not spawn in the cubs and im 100% sure this is exactly what we did. Maybe it could be related to just my client only? Don't know x_x

 

I forgot to mention that both of us were saberlions.

Edited by rons0n
Link to comment
Share on other sites

@rons0n, well, I managed to replicate the issue. However, I only managed to replicate it with one out of two people.

It displayed the missing replica messages.

 

I wrote the brain again, and optimized some things to see if I catched the error on the way.

I also switched to using a followersitcommand replica instead of tags.

Now I just lag, but not crash, but then again, maybe it's another outlier.

 

Maybe it's a game limitation given how there's a crash if you teleport a follower without a delay (StartLeashing). Maybe there's something special to do while teleporting masses of entities?

 

I leave this as conclusion.

saberlion2.zip

Edited by DarkXero
Link to comment
Share on other sites

Even though I said I was content a few posts ago you still decided to go for the fix. Amazing!

Sucks that you don't want to be marked as contributor as you've been racking your head trying to find the issue. I feel bad honestly.

 

But regardless thanks for everything! I havent tested your new changes but I trust that it's going to work and I'll just update it now. I also agree this will be the final conclusion to this follower error. I know I already said thanks, but saying thanks again anyway. Thanks!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
  • Create New...