public void Join(UserManager.UserClass _user) { _user.sep.Send("[" + (int)ServerOpcode.enter_room + "]"); StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.room_state); writer.WriteStartArray(); writer.WriteValue(_chanel_id); writer.WriteValue(_chanel_name); writer.WriteValue(_chanel_password); writer.WriteValue(_chanel_maxplayers); writer.WriteValue(_chanel_gamemode); writer.WriteValue(_chanel_map); writer.WriteValue(_chanel_avatar_on); writer.WriteValue(_chanel_max_wind); writer.WriteValue(_chanel_gp_rate); writer.WriteEndArray(); writer.WriteEndArray(); } _user.sep.Send(sb.ToString()); RoomPlayer(_user); }
//----------------------------------------------------------------------------------------------------- public void RemoveUser(UserManager.UserClass _user) { if (_user.Is_Master == 1 && UserInSala.Count <= 1) { _user.Is_Master = 0; Program.Chanels.Remove(this); } else { UserInSala.Remove(_user); if (UserInSala.Count() > 0) { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.player_left); writer.WriteValue(5); writer.WriteValue(0); writer.WriteValue(_user.user_id); writer.WriteEndArray(); } SendAll(sb.ToString()); RemoveSlot(_user.Position, _user.Is_Master); _user.Is_Master = 0; } } }
public static string Msj(string _msjx, UserManager.UserClass _user) { string msj_f = HttpUtility.HtmlEncode(_msjx.Replace("\\\"", "\"")); StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.chat); writer.WriteValue(_msjx); writer.WriteValue(_user.Name); if (_user.rank >= 24) { writer.WriteValue(ChatType.CHAT_TYPE_GM); //type } else { writer.WriteValue(0); //type } if (_user.guild > 0) { writer.WriteValue(_user.guild_name); } writer.WriteEndArray(); } return(sb.ToString()); }
public static void Notice(UserManager.UserClass _user) { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.room_state); writer.WriteStartArray(); writer.WriteStartArray(); writer.WriteValue("GameServerDB"); writer.WriteValue(""); writer.WriteValue(9); writer.WriteEndArray(); writer.WriteStartArray(); writer.WriteValue("Bienvenido!"); writer.WriteValue(""); writer.WriteValue(9); writer.WriteEndArray(); writer.WriteEndArray(); writer.WriteEndArray(); } _user.sep.Send(sb.ToString()); }
//----------------------------------------------------------------------------------------------------- public void AddBot(int slot, string id_bot) { string tt = "[35,[2,1,[],1,131702018,\"Clown Stripe\",0,0,0,1,\"m\",0,[17,31],1,0]]"; UserManager.UserClass usr = new UserManager.UserClass(); usr.Name = "Clown Stripe"; usr.user_id = 131702018; usr.gender = "m"; usr.Is_Bot = 1; usr.Position = 2; this.Join(usr); SendAll(tt); }
public void RoomPlayer(UserManager.UserClass user_send) { for (int x = 0; x < 8; x++) { if (user_slot[x] == false) { user_send.Position = x; user_slot[x] = true; break; } } UserInSala.Add(user_send); StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.room_players); writer.WriteStartArray(); foreach (UserManager.UserClass _user in UserInSala) { writer.WriteValue(5); writer.WriteValue(0); writer.WriteValue(_user.Position); writer.WriteValue(_user.user_id); writer.WriteValue(_user.Name); writer.WriteValue(_user.rank); writer.WriteValue(0); writer.WriteValue(1); writer.WriteValue(1); writer.WriteValue(_user.gender); writer.WriteValue(_user.mobil); writer.WriteStartArray(); writer.WriteValue(_user.head); writer.WriteValue(_user.body); writer.WriteValue(_user.eyes); writer.WriteValue(_user.flag); writer.WriteValue(_user.foreground); writer.WriteValue(_user.background); writer.WriteEndArray(); } writer.WriteValue(0); writer.WriteValue(0); writer.WriteEndArray(); writer.WriteEndArray(); } user_send.sep.Send(sb.ToString()); }
public bool UserIn(UserManager.UserClass _user) { bool vr = false; if (UserInSala.Count > 0) { UserManager.UserClass rt = UserInSala.Single(a => a.user_id == _user.user_id); if (rt != null) { vr = true; } } return(vr); }
//----------------------------------------------------------------------------------------------------- public void PassMaster(UserManager.UserClass _usr) { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.pass_master); writer.WriteValue(_usr.user_id); writer.WriteEndArray(); } SendAll(sb.ToString()); }
//----------------------------------------------------------------------------------------------------- public void RoomPlayer(UserManager.UserClass user_send) { //[2,[2,7,[],0,146634,"Carlos 22",0,0,1,1,"m",0,[1,2,0,0,0,0],0,0,1,181494328,"Bill Board",13,0,0,1,"m",5,[12,30],1,0]] user_send.Position = SlotJoin(); LogConsole.Show(LogType.INFO, "newPosition: {0}", user_send.Position); UpdateSlot(user_send); UserInSala.Add(user_send); StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.room_players); writer.WriteStartArray(); writer.WriteValue(UserInSala.Count); //unk1 - user_on? writer.WriteValue(7); //unk2 writer.WriteStartArray(); writer.WriteEndArray(); foreach (UserManager.UserClass _user in UserInSala) { writer.WriteValue(_user.Position); writer.WriteValue(_user.user_id); writer.WriteValue(_user.Name); writer.WriteValue(_user.rank); writer.WriteValue(0); // unk - guild ? writer.WriteValue(_user.Is_Master); // unk - is_master ? writer.WriteValue(0); // unk - is_ready ? writer.WriteValue(_user.gender); writer.WriteValue(_user.mobil); writer.WriteStartArray(); writer.WriteValue(_user.head); writer.WriteValue(_user.body); writer.WriteValue(_user.eyes); writer.WriteValue(_user.flag); writer.WriteValue(_user.foreground); writer.WriteValue(_user.background); writer.WriteEndArray(); writer.WriteValue(0); // unk - is_bot ? writer.WriteValue(0); // unk - power_user ? //team a - b c%2 } writer.WriteEndArray(); writer.WriteEndArray(); } user_send.sep.Send(sb.ToString()); }
//----------------------------------------------------------------------------------------------------- public void GameShoot(UserManager.UserClass _user, int _x, int _y, int _body, int _look, int _angle, int _a, int _b, int _d) { try { int x = _x; //1022 int y = _y; //121 int body = _body; //0 int look = _look; //1 int angle = _angle; //24 //int a; //43 - power //int b; //7 - Timer //int d; //0 - ShotType / 0 = shot 1 - 1 = shot 2 - 2 = shot ss int power = (int)Math.Round((double)((_a * 234) / 100)); int a = (look == 0 ? 180 - angle : angle); cshot.SetShot(_user, a, power, 0, 398, x, y, look); cshot.Start(); /* * var E_PLAY = Object.freeze({ * next_turn_number: 0, * player_number: 1, * x: 2, * y: 3, * look: 4, * add_delay: 5, * next_turn_of_player: 6, * chat: 7, * thor_x: 8, * thor_y: 9, * thor_angle: 10, * thor_damage: 11, * new_weather: 12, * wind_power: 13, * wind_angle: 14, * shots: 15, * gold: 16 * }), */ //[8,[2,0,1022,121,1,845,1,[],799,-420,24,0,3,0,326,[{"start":{"x":1042,"y":95,"ang":24,"power":101,"ax":0,"ay":398},"exp":0,"img":0,"time":1340}],0]] LogConsole.Show(LogType.DEBUG, "Send: x: {0} - y: {1} angle: {2}", _x, _y, _angle); } catch (Exception ex) { LogConsole.Show(LogType.ERROR, ex.ToString()); } }
public void ChangeReady(UserManager.UserClass _user, int tp) { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.changed_ready); writer.WriteValue(_user.user_id); writer.WriteValue(tp); writer.WriteEndArray(); foreach (UserManager.UserClass _usp in UserInSala) { _usp.sep.Send(sb.ToString()); } } }
public void Move(UserManager.UserClass _user) { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.update); writer.WriteStartArray(); writer.WriteValue(_user.Position); writer.WriteValue(_user.x); writer.WriteValue(_user.y); writer.WriteValue(_user.look); writer.WriteEndArray(); writer.WriteEndArray(); } SendAll(sb.ToString()); }
public void ChangeTeam(UserManager.UserClass _user, string team) { //[8,"B"] //[33,0,5,146634,"B"] StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.changed_team); writer.WriteValue(0); writer.WriteValue(5); writer.WriteValue(_user.user_id); writer.WriteValue(team); writer.WriteEndArray(); } _user.sep.Send(sb.ToString()); }
//----------------------------------------------------------------------------------------------------- public void UpdateSlot(UserManager.UserClass _user) { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.slot_update); writer.WriteStartArray(); writer.WriteValue(UserInSala.Count); writer.WriteValue(5); writer.WriteStartArray(); writer.WriteEndArray(); writer.WriteValue(_user.Position); writer.WriteValue(_user.user_id); writer.WriteValue(_user.Name); writer.WriteValue(_user.rank); writer.WriteValue(0); writer.WriteValue(0); writer.WriteValue(0); writer.WriteValue(_user.gender); writer.WriteValue(_user.mobil); writer.WriteStartArray(); writer.WriteValue(_user.head); writer.WriteValue(_user.body); writer.WriteValue(_user.eyes); writer.WriteValue(_user.flag); writer.WriteValue(_user.foreground); writer.WriteValue(_user.background); writer.WriteEndArray(); writer.WriteValue(0); writer.WriteValue(0); writer.WriteEndArray(); writer.WriteEndArray(); } SendAll(sb.ToString()); }
//----------------------------------------------------------------------------------------------------- public void PassTurn(UserManager.UserClass _user) { //[28,[4,0,1585,98,0,585,1,[],652,-436,18,0,2,0,99]] try { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.pass); writer.WriteStartArray(); writer.WriteValue(0); //next_turn_number writer.WriteValue(0); //slot user writer.WriteValue(0); //x writer.WriteValue(0); //y writer.WriteValue(0); //look writer.WriteValue(0); //delay writer.WriteValue(0); //next turn of player writer.WriteStartArray(); //chat writer.WriteEndArray(); writer.WriteValue(0); //thor_x writer.WriteValue(0); //thor_y writer.WriteValue(0); //thor_angle writer.WriteValue(0); //thor_damage writer.WriteValue(0); //new_wheater writer.WriteValue(0); //wind_power writer.WriteValue(0); //wind_angle writer.WriteEndArray(); writer.WriteEndArray(); } SendAll(sb.ToString()); } catch (Exception ex) { LogConsole.Show(LogType.ERROR, ex.ToString()); } }
//----------------------------------------------------------------------------------------------------- private void RemoveSlot(int posSlot, int master = 0) { int TeamLeav = posSlot % 2; int posArray = (TeamLeav == 1) ? (posSlot <= 3 ? (posSlot == 3 ? posSlot - 2 : posSlot - 1) : (posSlot - 1) / 2) : (TeamLeav < 4 ? ((TeamLeav == 2) ? TeamLeav - 1 : TeamLeav) : (TeamLeav / 2)); d[TeamLeav][posArray] = 0; for (int x = 0; x < 4; x++) { if (d[TeamLeav][x] == 0) { int np = (x + 1) < 3 ? x + 1 : 3; if (d[TeamLeav][np] == 1 && x < 3) { d[TeamLeav][x] = 1; d[TeamLeav][np] = 0; int px = GetPosT(TeamLeav, x, x, true); int pnp = GetPosT(TeamLeav, np, np, true); try { UserManager.UserClass _usr = UserInSala.Single(a => a.Position == pnp); if (_usr != null) { _usr.Position = px; } } catch (Exception ex) { LogConsole.Show(LogType.ERROR, ex.ToString()); } } } } if (master == 1) { NewMas(); } }
//----------------------------------------------------------------------------------------------------- private void NewMas() { int pos = 0; bool foun = false; for (int i = 0; i < 4; i++) { if (d[0][i] == 1) { pos = GetPosT(0, i, i, true); foun = true; break; } else if (d[1][i] == 1) { pos = GetPosT(1, i, i, true); foun = true; break; } } if (foun) { try { UserManager.UserClass _usr = UserInSala.Single(a => a.Position == pos); if (_usr != null) { _usr.Is_Master = 1; PassMaster(_usr); } } catch (Exception ex) { LogConsole.Show(LogType.ERROR, ex.ToString()); } } }
public void GameShoot(UserManager.UserClass _user, int _x, int _y, int _body, int _look, int _angle, int _a, int _b, int _d) { /* * 0.74,// Armor * 0.78,// Mage * 0.99, * 0.87, * 0.74, * 1.395,// Boomer * 0.827, * 0.72, * 0.625, * 0.765, * 0.625, * 0.74, * 0.65, * 0.695, * 0.67, * 0.905, * 0.0,// Slots * 0.0 // Aid*/ int x = _x; int y = _y; //int xb = _xb; int look = _look; int angle = _angle; int body = _body; int a = (look == 0 ? 180 - angle : angle) - body; if (90 < a) { a = 180 - a; } double xn = (look == 0 ? x - 22 : x + 22); double yn = -Math.Sin((angle * Math.PI / 180)); int delay = 1; int next_turn_of_player = 0; double DEGTORAD = 0.0174532925199433; double[] WindEffect = { 0.74 }; double[] Gravity = { 73.5 }; double x_f = 0.5 * Math.Cos(a) * 0.5 + _user.x; double y_f = -1 * ((0.5 * Math.Sin(a)) * 0.5 - ((0.5) * 73.5 * ((int)0.5 ^ 2)) - _user.y); double digg = Math.PI / 180; int d = 0; int c = 0; double x_o = (Math.Cos(d * digg) * c) * 0.74; double y_o = (Math.Sin(d * digg) * c) * 0.74 - 73.5; LogConsole.Show("Send: x: {0} - y: {1}", _x, _y); LogConsole.Show("Player: x: {0} - y: {1}", _user.x, _user.y); LogConsole.Show("Fin: x: {0} - y: {1}", x_f, y_f); int fin_p = 0; if (_a == 1) { fin_p = 2; } else if ((_a + _a) + 1 <= 10) { fin_p = (_a + _a) + 1; } else if ((_a + _a) + 2 <= 20) { fin_p = (_a + _a) + 2; } else if ((_a + _a) + 3 <= 30) { fin_p = (_a + _a) + 3; } else if ((_a + _a) + 4 <= 40) { fin_p = (_a + _a) + 4; } else if ((_a + _a) + 5 <= 50) { fin_p = (_a + _a) + 5; } else if ((_a + _a) + 6 <= 60) { fin_p = (_a + _a) + 6; } else if ((_a + _a) + 7 <= 70) { fin_p = (_a + _a) + 7; } else if ((_a + _a) + 8 <= 80) { fin_p = (_a + _a) + 8; } else if ((_a + _a) + 9 <= 90) { fin_p = (_a + _a) + 9; } else if ((_a + _a) + 10 <= 100) { fin_p = (_a + _a) + 10 + 11; } else if ((_a + _a) + 20 <= 200) { fin_p = (_a + _a) + 20; } else if ((_a + _a) + 30 <= 300) { fin_p = (_a + _a) + 30; } else { fin_p = (_a + _a) + 40; } LogConsole.Show("a: {1} Fin_p: {0}", fin_p, _a); StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { //gp(x, y, a, b, c, d, e, f) //gp(f.pos.x, f.pos.y, f.angle, 1, 0, 0, d.oponent.x - 15, d.oponent.y - 15); writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.play); writer.WriteStartArray(); writer.WriteValue(0); writer.WriteValue(_user.Position); writer.WriteValue(x); writer.WriteValue(y); writer.WriteValue(look); writer.WriteValue(delay); writer.WriteValue(next_turn_of_player); writer.WriteStartArray(); writer.WriteEndArray(); writer.WriteValue(899); writer.WriteValue(-342); writer.WriteValue(249); writer.WriteValue(0); writer.WriteValue(1); writer.WriteValue(0); writer.WriteValue(213); writer.WriteStartArray(); writer.WriteStartObject(); writer.WritePropertyName("start"); writer.WriteStartObject(); writer.WritePropertyName("x"); writer.WriteValue(x); //x writer.WritePropertyName("y"); writer.WriteValue(y); //y writer.WritePropertyName("ang"); writer.WriteValue(a); writer.WritePropertyName("power"); writer.WriteValue(fin_p);//575 writer.WritePropertyName("ax"); writer.WriteValue(x_o); writer.WritePropertyName("ay"); writer.WriteValue(y_o); writer.WriteEndObject(); writer.WritePropertyName("exp"); writer.WriteValue(3); writer.WritePropertyName("img"); writer.WriteValue(4); writer.WritePropertyName("time"); writer.WriteValue(2880); writer.WritePropertyName("hole"); writer.WriteStartArray(); writer.WriteValue(360); writer.WriteValue(40); writer.WriteValue(55); writer.WriteValue(42); writer.WriteEndArray(); writer.WritePropertyName("damages"); writer.WriteStartArray(); writer.WriteEndArray(); writer.WriteEndObject(); writer.WriteEndArray(); writer.WriteValue(0); writer.WriteEndArray(); writer.WriteEndArray(); } SendAll(sb.ToString()); }
public void RemoveUser(UserManager.UserClass _user) { /*if (_user.Is_Master == 1) * { * Program.Chanels.Remove(this); * }*/ UserInSala.Remove(_user); if (UserInSala.Count() > 0) { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.None; writer.WriteStartArray(); writer.WriteValue((int)ServerOpcode.player_left); writer.WriteValue(5); writer.WriteValue(0); writer.WriteValue(_user.user_id); writer.WriteEndArray(); } foreach (UserManager.UserClass usp in UserInSala) { usp.sep.Send(sb.ToString()); } switch (_user.Position) { case 1: { UserManager.UserClass _usr = UserInSala.Single(a => a.Position == 3); if (_usr != null) { user_slot[1] = true; user_slot[3] = false; _usr.Position = 1; } break; } case 2: { UserManager.UserClass _usr = UserInSala.Single(a => a.Position == 4); if (_usr != null) { user_slot[2] = true; user_slot[4] = false; _usr.Position = 2; } break; } case 3: { UserManager.UserClass _usr = UserInSala.Single(a => a.Position == 5); if (_usr != null) { user_slot[3] = true; user_slot[5] = false; _usr.Position = 3; } break; } case 4: { UserManager.UserClass _usr = UserInSala.Single(a => a.Position == 6); if (_usr != null) { user_slot[4] = true; user_slot[6] = false; _usr.Position = 4; } break; } case 5: { UserManager.UserClass _usr = UserInSala.Single(a => a.Position == 7); if (_usr != null) { user_slot[5] = true; user_slot[7] = false; _usr.Position = 5; } break; } case 6: { user_slot[6] = false; break; } case 7: { user_slot[7] = false; break; } } } }