static public int get_id(IntPtr l) { try { TableConfig.AttrDefine self = (TableConfig.AttrDefine)checkSelf(l); pushValue(l, true); pushValue(l, self.id); return(2); } catch (Exception e) { return(error(l, e)); } }
static public int constructor(IntPtr l) { try { TableConfig.AttrDefine o; o = new TableConfig.AttrDefine(); pushValue(l, true); pushValue(l, o); return(2); } catch (Exception e) { return(error(l, e)); } }
static public int GetId(IntPtr l) { try { TableConfig.AttrDefine self = (TableConfig.AttrDefine)checkSelf(l); var ret = self.GetId(); pushValue(l, true); pushValue(l, ret); return(2); } catch (Exception e) { return(error(l, e)); } }
static public int set_id(IntPtr l) { try { TableConfig.AttrDefine self = (TableConfig.AttrDefine)checkSelf(l); System.Int32 v; checkType(l, 2, out v); self.id = v; pushValue(l, true); return(1); } catch (Exception e) { return(error(l, e)); } }
static public int WriteToBinary(IntPtr l) { try { TableConfig.AttrDefine self = (TableConfig.AttrDefine)checkSelf(l); GameFramework.BinaryTable a1; checkType(l, 2, out a1); self.WriteToBinary(a1); pushValue(l, true); return(1); } catch (Exception e) { return(error(l, e)); } }
static public int ReadFromBinary(IntPtr l) { try { TableConfig.AttrDefine self = (TableConfig.AttrDefine)checkSelf(l); GameFramework.BinaryTable a1; checkType(l, 2, out a1); System.Int32 a2; checkType(l, 3, out a2); var ret = self.ReadFromBinary(a1, a2); pushValue(l, true); pushValue(l, ret); return(2); } catch (Exception e) { return(error(l, e)); } }
internal long Calc(SceneContextInfo context, CharacterProperty source, CharacterProperty target, long[] args, Dictionary <int, long> variables) { m_Stack.Clear(); for (int i = 0; i < m_Codes.Count; ++i) { Instruction ins = m_Codes[i]; switch (ins.Opcode) { case InsEnum.CONST: m_Stack.Push(ins.Operand); break; case InsEnum.ATTR: { int id = (int)ins.Operand; long val = source.GetLong((CharacterPropertyEnum)id); m_Stack.Push(val); } break; case InsEnum.ATTR2: { int id = (int)ins.Operand; long val = target.GetLong((CharacterPropertyEnum)id); m_Stack.Push(val); } break; case InsEnum.VALUE: { int id = (int)ins.Operand; TableConfig.Const cfg = TableConfig.ConstProvider.Instance.GetConst(id); if (null != cfg) { m_Stack.Push(cfg.value); } else { m_Stack.Push(0); } } break; case InsEnum.ARG: { int index = (int)ins.Operand; if (index >= 0 && index < args.Length) { m_Stack.Push(args[index]); } else { m_Stack.Push(0); } } break; case InsEnum.VAR: { int id = (int)ins.Operand; long ret; if (!variables.TryGetValue(id, out ret)) { ret = 0; } m_Stack.Push(ret); } break; case InsEnum.ATTRSET: { long op2 = m_Stack.Pop(); int id = (int)ins.Operand; TableConfig.AttrDefine cfg = TableConfig.AttrDefineProvider.Instance.GetAttrDefine(id); if (null != cfg) { if (op2 < cfg.minValue) { op2 = cfg.minValue; } if (op2 > cfg.maxValue) { op2 = cfg.maxValue; } } source.SetLong((CharacterPropertyEnum)id, op2); m_Stack.Push(op2); } break; case InsEnum.VARSET: { long op2 = m_Stack.Pop(); int id = (int)ins.Operand; variables[id] = op2; m_Stack.Push(op2); } break; case InsEnum.ADD: { long op2 = m_Stack.Pop(); long op1 = m_Stack.Pop(); m_Stack.Push(op1 + op2); } break; case InsEnum.SUB: { long op2 = m_Stack.Pop(); long op1 = m_Stack.Pop(); m_Stack.Push(op1 - op2); } break; case InsEnum.MUL: { long op2 = m_Stack.Pop(); long op1 = m_Stack.Pop(); m_Stack.Push(op1 * op2); } break; case InsEnum.DIV: { long op2 = m_Stack.Pop(); long op1 = m_Stack.Pop(); m_Stack.Push(op1 / op2); } break; case InsEnum.MOD: { long op2 = m_Stack.Pop(); long op1 = m_Stack.Pop(); m_Stack.Push(op1 % op2); } break; case InsEnum.MAX: { long op2 = m_Stack.Pop(); long op1 = m_Stack.Pop(); m_Stack.Push(op1 >= op2 ? op1 : op2); } break; case InsEnum.MIN: { long op2 = m_Stack.Pop(); long op1 = m_Stack.Pop(); m_Stack.Push(op1 <= op2 ? op1 : op2); } break; case InsEnum.ABS: { long op2 = m_Stack.Pop(); m_Stack.Push(op2 >= 0 ? op2 : -op2); } break; case InsEnum.CLAMP: { long op3 = m_Stack.Pop(); long op2 = m_Stack.Pop(); long op1 = m_Stack.Pop(); if (op3 < op1) { m_Stack.Push(op1); } else if (op3 > op2) { m_Stack.Push(op2); } else { m_Stack.Push(op3); } } break; } } return(m_Stack.Pop()); }
public void LoadData(TableConfig.Actor cfg) { m_ConfigData = cfg; BaseProperty.ConfigData = cfg; BaseProperty.Owner = this; ActualProperty.ConfigData = cfg; ActualProperty.Owner = this; TableConfig.SkillEventProvider.Instance.skillEventTable.TryGetValue(cfg.id, out m_SkillEventConfigData); SetLinkId(cfg.id); SetModel(cfg.avatar); EntityType = cfg.type; m_Radius = cfg.size; m_ViewRange = cfg.viewrange; m_GohomeRange = cfg.gohomerange; float maxAttackRange = 0; if (cfg.skill0 > 0) { SkillInfo info = new SkillInfo(cfg.skill0); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.skillData.distance) { maxAttackRange = info.ConfigData.skillData.distance; } m_AutoSkillIds.Add(cfg.skill0); } if (cfg.skill1 > 0) { SkillInfo info = new SkillInfo(cfg.skill1); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.skillData.distance) { maxAttackRange = info.ConfigData.skillData.distance; } m_AutoSkillIds.Add(cfg.skill1); } if (cfg.skill2 > 0) { SkillInfo info = new SkillInfo(cfg.skill2); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.skillData.distance) { maxAttackRange = info.ConfigData.skillData.distance; } m_AutoSkillIds.Add(cfg.skill2); } if (cfg.skill3 > 0) { SkillInfo info = new SkillInfo(cfg.skill3); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.skillData.distance) { maxAttackRange = info.ConfigData.skillData.distance; } m_AutoSkillIds.Add(cfg.skill3); } if (cfg.skill4 > 0) { SkillInfo info = new SkillInfo(cfg.skill4); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.skillData.distance) { maxAttackRange = info.ConfigData.skillData.distance; } m_ManualSkillId = cfg.skill4; } if (cfg.skill5 > 0) { SkillInfo info = new SkillInfo(cfg.skill5); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill5); } if (cfg.skill6 > 0) { SkillInfo info = new SkillInfo(cfg.skill6); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill6); } if (cfg.skill7 > 0) { SkillInfo info = new SkillInfo(cfg.skill7); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill7); } if (cfg.skill8 > 0) { SkillInfo info = new SkillInfo(cfg.skill8); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill8); } if (cfg.bornskill > 0) { SkillInfo info = new SkillInfo(cfg.bornskill); GetSkillStateInfo().AddSkill(info); m_BornSkillId = cfg.bornskill; } if (cfg.deadskill > 0) { SkillInfo info = new SkillInfo(cfg.deadskill); GetSkillStateInfo().AddSkill(info); m_DeadSkillId = cfg.deadskill; } foreach (var pair in TableConfig.AttrDefineProvider.Instance.AttrDefineMgr.GetData()) { TableConfig.AttrDefine def = pair.Value as TableConfig.AttrDefine; BaseProperty.SetInt((CharacterPropertyEnum)def.id, def.value); } InitProperty(CharacterPropertyEnum.x1001_基础物理攻击, cfg.x1001); InitProperty(CharacterPropertyEnum.x1002_物理攻击成长, cfg.x1002); InitProperty(CharacterPropertyEnum.x1006_基础法术攻击, cfg.x1006); InitProperty(CharacterPropertyEnum.x1007_法术攻击成长, cfg.x1007); InitProperty(CharacterPropertyEnum.x1011_基础物理防御, cfg.x1011); InitProperty(CharacterPropertyEnum.x1012_物理防御成长, cfg.x1012); InitProperty(CharacterPropertyEnum.x1016_基础法术防御, cfg.x1016); InitProperty(CharacterPropertyEnum.x1017_法术防御成长, cfg.x1017); InitProperty(CharacterPropertyEnum.x1021_暴击等级, cfg.x1021); InitProperty(CharacterPropertyEnum.x1022_抗暴击等级, cfg.x1022); InitProperty(CharacterPropertyEnum.x1024_命中等级, cfg.x1024); InitProperty(CharacterPropertyEnum.x1026_闪避等级, cfg.x1026); InitProperty(CharacterPropertyEnum.x1028_破击等级, cfg.x1028); InitProperty(CharacterPropertyEnum.x1030_格挡等级, cfg.x1030); InitProperty(CharacterPropertyEnum.x1032_格挡强度, cfg.x1032); InitProperty(CharacterPropertyEnum.x1033_暴击伤害, cfg.x1033); InitProperty(CharacterPropertyEnum.x1034_暴击伤害减免, cfg.x1034); InitProperty(CharacterPropertyEnum.x2001_基础生命, cfg.x2001); InitProperty(CharacterPropertyEnum.x2002_生命成长, cfg.x2002); InitProperty(CharacterPropertyEnum.x2007_基础速度, cfg.x2007); InitProperty(CharacterPropertyEnum.x2008_速度成长, cfg.x2008); InitProperty(CharacterPropertyEnum.x4001_职业, cfg.x4001); InitProperty(CharacterPropertyEnum.x4002_阵营, cfg.x4002); InitProperty(CharacterPropertyEnum.x4003_品质, cfg.x4003); InitProperty(CharacterPropertyEnum.x4004_性别, cfg.x4004); AttrCalculator.Calc(this); Hp = ActualProperty.GetInt(CharacterPropertyEnum.x2005_最大生命值); }