public void OnDialogStart(MapPlayer player) { for (int i = 0; i < _npcs.Length; i++) { if (_npcs[i] == null) { continue; } _npcs[i].Movement.Lock(false); _npcs[i].Movement.LookAt(player.Object); } short dState = player.Data.GetDialogState(_id); foreach (var item in _entries.TakeWhile(x => x.Key < 0)) { if (item.Value.Type != DialogType.Command) { continue; } if (item.Value.Condition == DialogCondition.Always || CheckCondition(dState, true, player, item.Value)) { ExecuteCommand(ref dState, true, player, item.Value); if (item.Value.IsEnd) { return; } if (item.Value.IsGoTo) { break; } } } Execute(ref dState, true, player); player.Data.Dialogs[_id] = dState; }
public void TriggerEventData(MapPlayer mapPlayer, MapEvent mapEvent) { if (mapEvent == null || mapEvent.GetEventData() == null) { return; } if (mapEvent.Locked) // add player lock id list so others can interact //we did this because sometimes a player could double trigger an event as it started / finished (event touch for example spamming the trigger) { return; } TriggeringEvent parent = new TriggeringEvent(null, mapEvent); _triggeringEvents.Add(parent); if (mapPlayer == null) { List <MapPlayer> players = _serverMap.GetMapInstance().GetMapPlayers(); for (int i = 0; i < players.Count; i++) { _triggeringEvents.Add(new TriggeringEvent(players[i], mapEvent, parent)); } } else { _triggeringEvents.Add(new TriggeringEvent(mapPlayer, mapEvent, parent)); } mapEvent.Locked = true; }
public BattlePlayer(MapPlayer mapPlayer) { this.Player = mapPlayer; Data = new BattlePlayerData(mapPlayer.Data, this); IsMe = mapPlayer.Player == Game.DataManager.MyPlayer; }
public ItemsMgr(WO_Player parent) : base(parent) { _wPlayer = parent; _mPlayer = _wPlayer.Player; _player = _mPlayer.Player; m_data = _mPlayer.Data; m_items = m_data.Items; m_wears = m_data.Wears; m_itemsHash = new HashSet <int>(); foreach (var item in m_items) { var value = item.Value; if (!m_itemsHash.Contains(value.Item.Id)) { m_itemsHash.Add(value.Item.Id); } } m_wearSlotsUsed = WearablePosition.None; foreach (var item in m_wears) { var value = item.Value; DB_Item dbitem; if (DataMgr.Select(value.Id, out dbitem)) { m_wearSlotsUsed |= dbitem.Slot; } } parent.OnSpawn += ItemsMgr_OnSpawn; parent.OnDestroy += ItemsMgr_OnDestroy; }
private GameClient(TcpClient tcpClient, int playerID) { Server.Instance.AddGameClient(this); _tcpClient = tcpClient; _networkStream = _tcpClient.GetStream(); _clientIP = ((IPEndPoint)_tcpClient.Client.RemoteEndPoint).Address.ToString(); _sendTimer = 0f; _sendingPackets = false; _recievingPackets = false; _disconnecting = false; _disconnectTimer = 5f; _mapChanged = false; _serverMap = null; _mapPlayer = Server.Instance.GetDatabaseConnection().RetrievePlayerQuery(playerID); _mapPlayer.OnEventTrigger += OnEventTrigger; _mapPlayer.OnShowMessage += OnShowMessage; _mapPlayer.OnChangeMap += OnChangeMap; _mapPlayer.OnSendMessage += OnSendMessage; _mapPlayer.OnRequestTrade += OnRequestTrade; _mapPlayer.OnStartTrade += OnStartTrade; _mapPlayer.OnAcceptTrade += OnAcceptTrade; _mapPlayer.OnEndTrade += OnEndTrade; _mapPlayer.OnAddTradeItem += OnAddTradeItem; _mapPlayer.OnRemoveTradeItem += OnRemoveTradeItem; _mapPlayer.OnShowShop += OnShowShop; _mapPlayer.OnStartBanking += OnStartBanking; _mapPlayer.OnShowWorkbench += OnShowWorkbench; _serverCommands = new List <ServerCommand>(); _messagePackets = new List <MessagePacket>(); }
private void WO_NPC_OnDestroy() { if (_dialog != null) { _dialog.NPC[_npc.DialogIndex] = null; if (_owner != null) { _server.Dialogs.RemoveClone(_dialog.ID, _owner); } } if (_owner != null) { _owner.Clones.Remove(_npc.ID); } if (_original != null && !_original.IsDead) { _original._view.RebuildVisibility(); } m_char = null; _wears = null; _owner = null; _dialog = null; _original = null; shop_ser = default(SER_Shop); wears_ser = default(SER_Wears); }
private void PlayerMovement_OnDestroy() { _player.Data.Position = _position; _player.Data.Rotation = _rotation; _entry = null; _player = null; }
public void RemoveClone(ushort id, MapPlayer owner) { if (_dClones.TryGetValue(owner.Player.Id, out var clones)) { clones.Remove(id); } }
private void Request(NetMessageInfo info) { MapPlayer sender = _player.Server[info.Sender.Id]; if (_trading) { sender.View?.FailedTrade(); return; } else if (sender.Trade._requested && sender.Trade._target == _player) { _target = sender; m_state = new TradingState() { InProgress = true, ONE = _player, TWO = sender, ONE_Offer = m_offer, TWO_Offer = sender.Trade.m_offer }; sender.Trade.m_state = m_state; sender.Trade._regected.Destroy(); sender.Trade._trading = _trading = true; UpdateState(); return; } else if (!_requested) { _target = sender; _requested = true; _view.RequestTrade(info.Sender.Id); _regected = new TradeRejector(_player, _target); } }
public void OnSceneStart() { ESceneType pType = StartGame.Instance.GetCurrSceneType(); int id = GameDataManage.Instance.CurRoleID; if (Config.A == null) { return; } for (int i = 0; i < Config.Players.Count; i++) { MapPlayer data = Config.Players[i]; ActorMainPlayer actorMainPlayer = AddMainPlayer(data.Id, XTransform.Create(data.Position, data.Euler)); LevelData.MainPlayerlist.Add(actorMainPlayer); } for (int i = 0; i < Config.Monsters.Count; i++) { MapMonster data = Config.Monsters[i]; AddActor(data.Id, EActorType.MONSTER, EBattleCamp.B, data.Position, data.Euler, data.Scale, data.PatrolGroups); } if (pType == ESceneType.Battle) { OnBattleStart(); } LevelManage.Instance.SetMainPlayer(1); }
private void RPC_001(NetMessage arg1, NetMessageInfo arg2) { MapPlayer player = _server[arg2.Sender.Id]; if (player == null) { ServerLogger.LogWarn($"Switch from map {_data.Data01} on portal {_data.Guid} failed: player {arg2.Sender.Id} not found!"); return; } if (Vector3.DistanceSquared(_data.Position, player.Object.Position) <= Constants.MaxInteractionDistanceSquared) { if (player.PrepareForMapSwitch()) { player.User.Spawn = (ushort)_data.Data02; arg2.Sender.SynchNetData(); arg2.Sender.ChangeRoom(m_map.Name); player = null; } else { player.CreateSaveTimer(); ServerLogger.LogWarn($"Switch from map {_data.Data01} on portal {_data.Guid} failed: couldn't save player {arg2.Sender.Id} character!"); player.SystemMsg("Map switch failed: couldn't save character to database!"); } } else { player.SystemMsg("You far away from the portal."); } }
private void InitGui() { InitSetting(); CalculateRate(); // InitPlayerItemList(); // InitMarkItemList(); _safeCircle = new BaneCircle(safeDuquanRoot, false, true); _duquanCircle = new BaneCircle(curDuquanRoot, true, true); _bombArea = new BombArea(curBombAreaRoot); _safeMiniDis = new SafeMiniDis(miniDisRoot); if (!MapLevel.Min.Equals(adapter.MapLevel)) { // _mapGird = new MapGird(lineRoot); // _mapGird1 = new MapGird1(girdRoot); } _mapGird1 = new MapGird1(girdRoot); InitMapBg(); _airPlane = new AirPlane(kTouRoot, Loader); _routeLine = new RouteLine(routeRoot); _mapLabel = new MapLabel(labelRoot); _mapPlayer = new MapPlayer(playItemRoot); _mapMark = new MapMark(markRoot); _bioMark = new BioMark(bioMarkRoot); PreparedSprite(); }
private void RPC_06_23(NetMessage arg1, NetMessageInfo arg2) { MapPlayer player = _server[arg2.Sender.Id]; _movement.Unlock(); player.Shop = null; _view.Rpc(6, 23, arg2.Sender); }
public PlayerObject(MapPlayer player) : base() { m_player = player; m_user = player.User; m_char = player.Char; m_save = AddManager <SaveManager>(); }
public void RemoveClone(ushort id, MapPlayer owner) { Dictionary <ushort, DialogScript> clones; if (_dClones.TryGetValue(owner.Player.Id, out clones)) { clones.Remove(id); } }
/// <summary> /// 人离开船碰撞体 /// </summary> /// <param name="player"></param> void onColliderExitWithPlayer(MapPlayer player) { if (!player) { return; } player?.keyTip.SetActive(false); player.keyTipVehicle = false; }
/// <summary> /// 人进入船碰撞体 /// </summary> void onColliderEnterWithPlayer(MapPlayer player) { if (!player) { return; } player.keyTip.SetActive(true); player.keyTipVehicle = true; }
private void WO_Loot_OnDestroy() { _destroy?.Destroy(); _view.ClearSubscriptions(); _server.Room.Destroy(_view); _view = null; _onwer = null; _destroy = null; }
public void ResetState() { _regected?.Destroy(); m_state = null; _target = null; _trading = false; _regected = null; _requested = false; lock (_lock) m_offer.Clear(); }
public void OnDialogChoice(MapPlayer player, int index) { short dState = player.Data.GetDialogState(_id); if (SelectChoice(ref dState, false, player, index)) { Execute(ref dState, false, player); } player.Data.Dialogs[_id] = dState; }
public TradeMgr(WO_Player parent) : base(parent) { _wPlayer = parent; _player = parent.Player; m_offer = new Dictionary <int, TradingStack>(); parent.OnSpawn += TradeMgr_OnSpawn; parent.OnDestroy += TradeMgr_OnDestroy; parent.OnDespawn += TradeMgr_OnDespawn; }
private void RPC_10_49(NetMessage arg1, NetMessageInfo arg2) { MapPlayer player = _server[arg2.Sender.Id]; if (player.Dialog == null) { player.Dialog = this; player.DialogBegin(); } }
public PlayerMovement(WO_Player parent) : base(parent) { _player = parent.Player; _entry = new SyncEntry(); _position = _player.Data.Position; _rotation = _player.Data.Rotation; parent.OnSpawn += PlayerMovement_OnSpawn; parent.OnDestroy += PlayerMovement_OnDestroy; }
public PlayerStatsMgr(WO_Player parent) : base(parent) { _mPlayer = parent.Player; if (_stats.Count == 0) { CreateBase(); } parent.OnDestroy += PlayerStatsMgr_OnDestroy; UpdateStats(); }
public void SetReadyState(MapPlayer player, bool state) { if (player == ONE) { ONE_Ready = state; } else { TWO_Ready = state; } }
public SkillsMgr(WO_Player parent) : base(parent) { _wPlayer = parent; _mPlayer = _wPlayer.Player; _entry = new TargetEntry(); _skills = _wPlayer.Player.Data.Skills; _cooldown = new Dictionary <int, CooldownReset>(); parent.OnSpawn += SkillsMgr_OnSpawn; parent.OnDestroy += SkillsMgr_OnDestroy; }
private void ItemsMgr_OnDestroy() { m_view = null; m_data = null; m_wears = null; m_items = null; _player = null; _mPlayer = null; _wPlayer = null; m_itemsHash = null; }
/// <summary> /// 尝试自动上船 /// </summary> /// <param name="player"></param> void tryBoard(MapPlayer player) { if (!isTake() || isFreezing()) { return; } if (!boardFlag && addPassenger(player, true)) { boardFlag = true; } }
public void OnDialogEnd(MapPlayer player) { player.Choices.Clear(); for (int i = 0; i < _npcs.Length; i++) { if (_npcs[i] == null) { continue; } _npcs[i].Movement.Unlock(); } }
private void RPC_06_22(NetMessage arg1, NetMessageInfo arg2) { MapPlayer player = _server[arg2.Sender.Id]; if ((_npc.Flags & NPCFlags.Trader) > 0 && Vector3.DistanceSquared(player.Object.Position, _movement.Position) <= Constants.MaxInteractionDistanceSquared) { _movement.Lock(false); _movement.LookAt(player.Object); player.Shop = this; _view.Rpc(6, 22, arg2.Sender, shop_ser); } }
void Go(MapPlayer p){ player = p; if (!gameObject.name.Equals (player.GetDestination ().name)) { bool going = false; if (crossRoad) { for (int i = 0; i < nearSpots.Length; i++) { if (nearSpots [i].name.Equals (player.GetDestination ().name)) { player.Move (nearSpots [i]); going = true; break; } } if (!going) { player.Move (nextCrossroad); } } else { player.Move (nextCrossroad); } } }