i try but error,Help Please!
How can Hook OnEntitySpawned?
Discussion in 'Hurtworld Development' started by 不是很会玩, Apr 12, 2016.
-
What do you want to do with it?
-
Code:
void OnPlayerSpawn(PlayerSession session) { timer.Once(2f, () => { setposition(session); }); }
but i dont want use the OnPlayerSpawn.
how can use OnEntitySpawned? -
Wulf Community Admin
If you want to use OnEntitySpawned, the argument is a NetworkViewData.
Code:OnEntitySpawned(NetworkViewData entity)
-
-
Wulf Community Admin
-
i want connect players goto my setposition,but the position would be change.
so have get PlayerSession
Code:Dictionary<PlayerSession,int> PlayerTeam = new Dictionary<PlayerSession,int>(); Dictionary<int,List<Vector3>> SpawnPosition = new Dictionary<int,List<Vector3>>(); void OnPlayerRespawn(PlayerSession session) { int TeamId = PlayerTeam[session]; timer.Once(0.1f, () => { int RamNum = Core.Random.Range(0,SpawnPosition[TeamId].Count); GotoPosition(SpawnPosition[TeamId][RamNum]); }); }
but OnFindSpawnPoint() can't get the PlayerSession
how can not use timer.
Please help.Last edited by a moderator: Apr 13, 2016 -
Wulf Community Admin
Something like this should work to get the session:
Code:void OnEntitySpawned(NetworkViewData entity) { var sessions = GameManager.Instance.GetSessions(); var go = entity.NetworkView.gameObject; var session = sessions.Where(i => go.Equals(i.Value.WorldPlayerEntity)).Select(i => i.Value); }
-
have a question how can not use timer in OnPlayerRespawn?
i want try not use timer,but print error. -
Wulf Community Admin
-
Code:
Dictionary<PlayerSession,int> PlayerTeam = new Dictionary<PlayerSession,int>(); Dictionary<int,List<Vector3>> SpawnPosition = new Dictionary<int,List<Vector3>>(); void OnPlayerRespawn(PlayerSession session) { int TeamId = PlayerTeam[session]; int RamNum = Core.Random.Range(0,SpawnPosition[TeamId].Count); GotoPosition(SpawnPosition[TeamId][RamNum]); }
-
Wulf Community Admin
-
Code:
Dictionary<PlayerSession,int> PlayerTeam = new Dictionary<PlayerSession,int>(); Dictionary<int,List<Vector3>> SpawnPosition = new Dictionary<int,List<Vector3>>(); void OnPlayerConnected(PlayerSession session) { int TeamId = PlayerTeam[session]; int RamNum = Core.Random.Range(0,SpawnPosition[TeamId].Count); GotoPosition(SpawnPosition[TeamId][RamNum]); } //not working!i think the session is null or player not spawn; //======================================= Dictionary<PlayerSession,int> PlayerTeam = new Dictionary<PlayerSession,int>(); Dictionary<int,List<Vector3>> SpawnPosition = new Dictionary<int,List<Vector3>>(); void OnPlayerConnected(PlayerSession session) { timer.Once(2f, () => { int TeamId = PlayerTeam[session]; int RamNum = Core.Random.Range(0,SpawnPosition[TeamId].Count); GotoPosition(SpawnPosition[TeamId][RamNum]); }; } //but the is working! timer have 2f //so i need use OnEntitySpawned hook.
-
Wulf Community Admin
Okay, I already gave you an example on how to use OnEntitySpawned, but the player session is there in OnPlayerConnected, plugins use it.
-