public void doClassChange(byte classId) { //load hotbars //Calculate stats //Calculate hp/mp //Get Potenciel ?????? //Set HP/MP/TP PARAMS //Set mainskill and level //Set Parameters //Set current EXP //Set Hotbar Commands 1 //Set Hotbar Commands 2 //Set Hotbar Commands 3 //Check if bonus point available... set //Set rested EXP charaWork.parameterSave.state_mainSkill[0] = classId; charaWork.parameterSave.state_mainSkillLevel = charaWork.battleSave.skillLevel[classId - 1]; playerWork.restBonusExpRate = 0.0f; ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("charaWork/stateForAll", this, actorId); propertyBuilder.addProperty("charaWork.parameterSave.state_mainSkill[0]"); propertyBuilder.addProperty("charaWork.parameterSave.state_mainSkillLevel"); propertyBuilder.newTarget("playerWork/expBonus"); propertyBuilder.addProperty("playerWork.restBonusExpRate"); List <SubPacket> packets = propertyBuilder.done(); foreach (SubPacket packet in packets) { broadcastPacket(packet, true); } Database.savePlayerCurrentClass(this); }
public override BasePacket getInitPackets(uint playerActorId) { ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("/_init", this, playerActorId); //Properties for (int i = 0; i < charaWork.property.Length; i++) { if (charaWork.property[i] != 0) { propPacketUtil.addProperty(String.Format("charaWork.property[{0}]", i)); } } //Parameters propPacketUtil.addProperty("charaWork.parameterSave.hp[0]"); propPacketUtil.addProperty("charaWork.parameterSave.hpMax[0]"); propPacketUtil.addProperty("charaWork.parameterSave.mp"); propPacketUtil.addProperty("charaWork.parameterSave.mpMax"); propPacketUtil.addProperty("charaWork.parameterTemp.tp"); if (charaWork.parameterSave.state_mainSkill[0] != 0) { propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkill[0]"); } if (charaWork.parameterSave.state_mainSkill[1] != 0) { propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkill[1]"); } if (charaWork.parameterSave.state_mainSkill[2] != 0) { propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkill[2]"); } if (charaWork.parameterSave.state_mainSkill[3] != 0) { propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkill[3]"); } propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkillLevel"); //Status Times for (int i = 0; i < charaWork.statusShownTime.Length; i++) { if (charaWork.statusShownTime[i] != 0xFFFFFFFF) { propPacketUtil.addProperty(String.Format("charaWork.statusShownTime[{0}]", i)); } } //General Parameters for (int i = 3; i < charaWork.battleTemp.generalParameter.Length; i++) { if (charaWork.battleTemp.generalParameter[i] != 0) { propPacketUtil.addProperty(String.Format("charaWork.battleTemp.generalParameter[{0}]", i)); } } propPacketUtil.addProperty("npcWork.hateType"); return(BasePacket.createPacket(propPacketUtil.done(), true, false)); }
public override BasePacket getInitPackets(uint playerActorId) { ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("/_init", this, playerActorId); propPacketUtil.addProperty("charaWork.eventSave.bazaarTax"); propPacketUtil.addProperty("charaWork.battleSave.potencial"); //Properties for (int i = 0; i < charaWork.property.Length; i++) { if (charaWork.property[i] != 0) { propPacketUtil.addProperty(String.Format("charaWork.property[{0}]", i)); } } //Parameters propPacketUtil.addProperty("charaWork.parameterSave.hp[0]"); propPacketUtil.addProperty("charaWork.parameterSave.hpMax[0]"); propPacketUtil.addProperty("charaWork.parameterSave.mp"); propPacketUtil.addProperty("charaWork.parameterSave.mpMax"); propPacketUtil.addProperty("charaWork.parameterTemp.tp"); propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkill[0]"); propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkillLevel"); //Status Times for (int i = 0; i < charaWork.statusShownTime.Length; i++) { if (charaWork.statusShownTime[i] != 0xFFFFFFFF) { propPacketUtil.addProperty(String.Format("charaWork.statusShownTime[{0}]", i)); } } //General Parameters for (int i = 3; i < charaWork.battleTemp.generalParameter.Length; i++) { if (charaWork.battleTemp.generalParameter[i] != 0) { propPacketUtil.addProperty(String.Format("charaWork.battleTemp.generalParameter[{0}]", i)); } } propPacketUtil.addProperty("charaWork.battleTemp.castGauge_speed[0]"); propPacketUtil.addProperty("charaWork.battleTemp.castGauge_speed[1]"); //Battle Save Skillpoint //Commands propPacketUtil.addProperty("charaWork.commandBorder"); for (int i = 0; i < charaWork.command.Length; i++) { if (charaWork.command[i] != 0) { propPacketUtil.addProperty(String.Format("charaWork.command[{0}]", i)); } } for (int i = 0; i < charaWork.commandCategory.Length; i++) { charaWork.commandCategory[i] = 1; if (charaWork.commandCategory[i] != 0) { propPacketUtil.addProperty(String.Format("charaWork.commandCategory[{0}]", i)); } } for (int i = 0; i < charaWork.commandAcquired.Length; i++) { if (charaWork.commandAcquired[i] != false) { propPacketUtil.addProperty(String.Format("charaWork.commandAcquired[{0}]", i)); } } for (int i = 0; i < charaWork.additionalCommandAcquired.Length; i++) { if (charaWork.additionalCommandAcquired[i] != false) { propPacketUtil.addProperty(String.Format("charaWork.additionalCommandAcquired[{0}]", i)); } } for (int i = 0; i < charaWork.parameterSave.commandSlot_compatibility.Length; i++) { charaWork.parameterSave.commandSlot_compatibility[i] = true; if (charaWork.parameterSave.commandSlot_compatibility[i]) { propPacketUtil.addProperty(String.Format("charaWork.parameterSave.commandSlot_compatibility[{0}]", i)); } } /* * for (int i = 0; i < charaWork.parameterSave.commandSlot_recastTime.Length; i++) * { * if (charaWork.parameterSave.commandSlot_recastTime[i] != 0) * propPacketUtil.addProperty(String.Format("charaWork.parameterSave.commandSlot_recastTime[{0}]", i)); * } */ //System propPacketUtil.addProperty("charaWork.parameterTemp.forceControl_float_forClientSelf[0]"); propPacketUtil.addProperty("charaWork.parameterTemp.forceControl_float_forClientSelf[1]"); propPacketUtil.addProperty("charaWork.parameterTemp.forceControl_int16_forClientSelf[0]"); propPacketUtil.addProperty("charaWork.parameterTemp.forceControl_int16_forClientSelf[1]"); charaWork.parameterTemp.otherClassAbilityCount[0] = 4; charaWork.parameterTemp.otherClassAbilityCount[1] = 5; charaWork.parameterTemp.giftCount[1] = 5; propPacketUtil.addProperty("charaWork.parameterTemp.otherClassAbilityCount[0]"); propPacketUtil.addProperty("charaWork.parameterTemp.otherClassAbilityCount[1]"); propPacketUtil.addProperty("charaWork.parameterTemp.giftCount[1]"); propPacketUtil.addProperty("charaWork.depictionJudge"); //Scenario for (int i = 0; i < playerWork.questScenario.Length; i++) { if (playerWork.questScenario[i] != 0) { propPacketUtil.addProperty(String.Format("playerWork.questScenario[{0}]", i)); } } //Guildleve - Local for (int i = 0; i < playerWork.questGuildleve.Length; i++) { if (playerWork.questGuildleve[i] != 0) { propPacketUtil.addProperty(String.Format("playerWork.questGuildleve[{0}]", i)); } } //Guildleve - Regional for (int i = 0; i < work.guildleveId.Length; i++) { if (work.guildleveId[i] != 0) { propPacketUtil.addProperty(String.Format("work.guildleveId[{0}]", i)); } if (work.guildleveDone[i] != false) { propPacketUtil.addProperty(String.Format("work.guildleveDone[{0}]", i)); } if (work.guildleveChecked[i] != false) { propPacketUtil.addProperty(String.Format("work.guildleveChecked[{0}]", i)); } } //NPC Linkshell for (int i = 0; i < playerWork.npcLinkshellChatCalling.Length; i++) { if (playerWork.npcLinkshellChatCalling[i] != false) { propPacketUtil.addProperty(String.Format("playerWork.npcLinkshellChatCalling[{0}]", i)); } if (playerWork.npcLinkshellChatExtra[i] != false) { propPacketUtil.addProperty(String.Format("playerWork.npcLinkshellChatExtra[{0}]", i)); } } propPacketUtil.addProperty("playerWork.restBonusExpRate"); //Profile propPacketUtil.addProperty("playerWork.tribe"); propPacketUtil.addProperty("playerWork.guardian"); propPacketUtil.addProperty("playerWork.birthdayMonth"); propPacketUtil.addProperty("playerWork.birthdayDay"); propPacketUtil.addProperty("playerWork.initialTown"); return(BasePacket.createPacket(propPacketUtil.done(), true, false)); }