int CNFStaticDataManager::LoadProtagonistStaticCallBack( void * para, int n_column, char ** column_value, char ** column_name ) { if (g_pStaticDataManager==NULL) { g_pStaticDataManager = new CNFStaticDataManager(); } int nRoleID = GetIntFromTable("i_role_id",n_column,column_value,column_name); tagProtagonistStaticInfo NewProtagonistStaticInfo; NewProtagonistStaticInfo.fHP = GetFloatFromTable("f_hp",n_column,column_value,column_name); NewProtagonistStaticInfo.fHp_g = GetFloatFromTable("f_hp_g",n_column,column_value,column_name); NewProtagonistStaticInfo.fMP = GetFloatFromTable("f_mp",n_column,column_value,column_name); NewProtagonistStaticInfo.fMp_g = GetFloatFromTable("f_mp_g",n_column,column_value,column_name); NewProtagonistStaticInfo.fDefense = GetFloatFromTable("f_defense",n_column,column_value,column_name); NewProtagonistStaticInfo.fDefense_g = GetFloatFromTable("f_defense_g",n_column,column_value,column_name); NewProtagonistStaticInfo.fAttack = GetFloatFromTable("f_attack",n_column,column_value,column_name); NewProtagonistStaticInfo.fAttack_g = GetFloatFromTable("f_attack_g",n_column,column_value,column_name); NewProtagonistStaticInfo.fDomination = GetFloatFromTable("f_domination",n_column,column_value,column_name); NewProtagonistStaticInfo.fMoveSpeed = GetFloatFromTable("f_move_speed",n_column,column_value,column_name); NewProtagonistStaticInfo.fAttackSpeed = GetFloatFromTable("f_attack_speed",n_column,column_value,column_name); NewProtagonistStaticInfo.nCrit = GetIntFromTable("i_crit",n_column,column_value,column_name); NewProtagonistStaticInfo.fCritDamage = GetFloatFromTable("f_crit_damage",n_column,column_value,column_name); NewProtagonistStaticInfo.nCrickTime = GetIntFromTable("i_crick_time",n_column,column_value,column_name); NewProtagonistStaticInfo.nConverselyTime = GetIntFromTable("i_conversely_time",n_column,column_value,column_name); NewProtagonistStaticInfo.nHitTarget = GetIntFromTable("i_hit_target",n_column,column_value,column_name); NewProtagonistStaticInfo.nAvoid = GetIntFromTable("i_avoid",n_column,column_value,column_name); NewProtagonistStaticInfo.fTreatCoefficient = GetFloatFromTable("f_treat_coefficient",n_column,column_value,column_name); NewProtagonistStaticInfo.fLength_Hold = GetFloatFromTable("f_length_hold",n_column,column_value,column_name); NewProtagonistStaticInfo.fWidth_Hold = GetFloatFromTable("f_width_hold",n_column,column_value,column_name); NewProtagonistStaticInfo.fHeight_Hold = GetFloatFromTable("f_height_hold",n_column,column_value,column_name); NewProtagonistStaticInfo.fLength_Move = GetFloatFromTable("f_length_move",n_column,column_value,column_name); NewProtagonistStaticInfo.fWidth_Move = GetFloatFromTable("f_width_move",n_column,column_value,column_name); NewProtagonistStaticInfo.fHeight_Move = GetFloatFromTable("f_height_move",n_column,column_value,column_name); NewProtagonistStaticInfo.fLength_Conversely = GetFloatFromTable("f_length_conversely",n_column,column_value,column_name); NewProtagonistStaticInfo.fWidth_Conversely = GetFloatFromTable("f_width_conversely",n_column,column_value,column_name); NewProtagonistStaticInfo.fHeight_Conversely = GetFloatFromTable("f_height_conversely",n_column,column_value,column_name); //主角ai的Json string strProAIJson = GetStringFromTable("s_protagonist_ai_json",n_column,column_value,column_name); CNFJsonTranslater::SharedData()->GetProtagonistAIInfoFromJson(strProAIJson.c_str(),NewProtagonistStaticInfo.tProtagonistAIInfo,nRoleID); NewProtagonistStaticInfo.strBeHitSoundName = GetStringFromTable("s_behit_sound_name",n_column,column_value,column_name); NewProtagonistStaticInfo.strDeadSoundName = GetStringFromTable("s_dead_sound_name",n_column,column_value,column_name); NewProtagonistStaticInfo.strArmatureName = GetStringFromTable("s_armature_name",n_column,column_value,column_name); NewProtagonistStaticInfo.nCommonAttackNum = GetIntFromTable("i_common_attack_num",n_column,column_value,column_name); g_pStaticDataManager->m_ProtagonistStaticInfoMap[nRoleID]=NewProtagonistStaticInfo; return 0; }
int CNFSaveDataManager::LoadSaveUserCallBack( void * para, int n_column, char ** column_value, char ** column_name ) { if (g_pSaveDataManager==NULL) { g_pSaveDataManager = new CNFSaveDataManager(); } tagSaveUserInfo Info; Info.strOpenID = GetStringFromTable("s_open_id",n_column,column_value,column_name); Info.strUserName = GetStringFromTable("s_username",n_column,column_value,column_name); Info.strPassWord = GetStringFromTable("s_password",n_column,column_value,column_name); g_pSaveDataManager->m_SaveUserInfo = Info; return 0; }
CFX_ByteString GetNameFromTT(const uint8_t* name_table, uint32_t name_table_size, uint32_t name_id) { if (!name_table || name_table_size < 6) { return CFX_ByteString(); } uint32_t name_count = GET_TT_SHORT(name_table + 2); uint32_t string_offset = GET_TT_SHORT(name_table + 4); // We will ignore the possibility of overlap of structures and // string table as if it's all corrupt there's not a lot we can do. if (name_table_size < string_offset) { return CFX_ByteString(); } const uint8_t* string_ptr = name_table + string_offset; uint32_t string_ptr_size = name_table_size - string_offset; name_table += 6; name_table_size -= 6; if (name_table_size < name_count * 12) { return CFX_ByteString(); } for (uint32_t i = 0; i < name_count; i++, name_table += 12) { if (GET_TT_SHORT(name_table + 6) == name_id && GET_TT_SHORT(name_table) == 1 && GET_TT_SHORT(name_table + 2) == 0) { return GetStringFromTable(string_ptr, string_ptr_size, GET_TT_SHORT(name_table + 10), GET_TT_SHORT(name_table + 8)); } } return CFX_ByteString(); }
int CNFStaticDataManager::LoadSkillStaticCallBack( void * para, int n_column, char ** column_value, char ** column_name ) { if (g_pStaticDataManager==NULL) { g_pStaticDataManager = new CNFStaticDataManager(); } int nRoleID = GetIntFromTable("i_role_id",n_column,column_value,column_name); int nSkillID = GetIntFromTable("i_skill_id",n_column,column_value,column_name); tagSkillStaticInfo Info; Info.nSkillCD = GetIntFromTable("i_skill_cd",n_column,column_value,column_name); Info.nSkillCD_g = GetIntFromTable("i_skill_cd_g",n_column,column_value,column_name); Info.fCostMp = GetFloatFromTable("f_cost_mp",n_column,column_value,column_name); Info.fCostMp_g = GetFloatFromTable("f_cost_mp_g",n_column,column_value,column_name); Info.nIsCommonSkill = GetIntFromTable("i_is_common_skill",n_column,column_value,column_name); /************************************************************************/ /* 技能块信息操作 */ /************************************************************************/ //1.得到Json的字符串 string strSkillItem = GetStringFromTable("s_skill_item_vec",n_column,column_value,column_name); //2.解析Json,得到Item信息 CNFJsonTranslater::SharedData()->GetSkillItemInfoFromJson(strSkillItem.c_str(),Info.vecSkillItem,nRoleID,nSkillID); //排序:根据延迟时间,升序排列 sort(Info.vecSkillItem.begin(),Info.vecSkillItem.end(),lessmark); for (CNFSkillItemVec::iterator iter = Info.vecSkillItem.begin();iter != Info.vecSkillItem.end();iter++) { iter->bIsCommonSkill = Info.nIsCommonSkill>0?true:false; } Info.strAniName = GetStringFromTable("s_ani_name",n_column,column_value,column_name); Info.strSkillName = GetStringFromTable("s_skill_name",n_column,column_value,column_name); Info.strSkillIntroduce = GetStringFromTable("s_skill_introduce",n_column,column_value,column_name); g_pStaticDataManager->m_SkillStaticInfoMap[nRoleID][nSkillID] = Info; ////得到Json //char * szJson = NULL; //CNFJsonTranslater::SharedData()->GetJsonFromSkillItemInfo(szJson,ItemInfo); return 0; }
int CNFStaticDataManager::LoadStageStaticCallBack( void * para, int n_column, char ** column_value, char ** column_name ) { if (g_pStaticDataManager==NULL) { g_pStaticDataManager = new CNFStaticDataManager(); } int nStageID = GetIntFromTable("i_stage_id",n_column,column_value,column_name); tagStageStaticInfo NewStageStaticInfo; NewStageStaticInfo.fRate = GetFloatFromTable("f_stage_rate",n_column,column_value,column_name); NewStageStaticInfo.fGravity = GetFloatFromTable("f_stage_gravity",n_column,column_value,column_name); NewStageStaticInfo.fLength = GetFloatFromTable("f_3d_length",n_column,column_value,column_name); NewStageStaticInfo.fWidth = GetFloatFromTable("f_3d_width",n_column,column_value,column_name); NewStageStaticInfo.fHeight = GetFloatFromTable("f_3d_height",n_column,column_value,column_name); NewStageStaticInfo.fProtagonistX =GetFloatFromTable("f_protagonist_x",n_column,column_value,column_name); NewStageStaticInfo.fProtagonistY = GetFloatFromTable("f_protagonist_y",n_column,column_value,column_name); NewStageStaticInfo.fProtagonistZ = GetFloatFromTable("f_protagonist_z",n_column,column_value,column_name); NewStageStaticInfo.strTMXWorldName = GetStringFromTable("s_tmx_world_name",n_column,column_value,column_name); //得到tmx地图 Json信息 string strTmxJson = GetStringFromTable("s_tmx_json",n_column,column_value,column_name); CNFJsonTranslater::SharedData()->GetTmxInfoFromJson(strTmxJson.c_str(),NewStageStaticInfo.TmxStaticInfoMap,nStageID); //得到npc Json信息 string strNPCJson = GetStringFromTable("s_npc_json",n_column,column_value,column_name); CNFJsonTranslater::SharedData()->GetNPCInfoFromJson(strNPCJson.c_str(),NewStageStaticInfo.NPCJsonInfoVec,nStageID); //得到npc 静态信息 for (CNFNPCJsonInfoVec::iterator iter = NewStageStaticInfo.NPCJsonInfoVec.begin();iter != NewStageStaticInfo.NPCJsonInfoVec.end();iter++) CNFStaticDataManager::SharedData()->GetNPCStaticInfo(iter->nNPCID,iter->NPCStaticInfo); //得到door Json信息 string strDoorJson = GetStringFromTable("s_door_json",n_column,column_value,column_name); CNFJsonTranslater::SharedData()->GetDoorInfoFromJson(strDoorJson.c_str(),NewStageStaticInfo.DoorJsonInfoVec,nStageID); //得到door 静态信息 for (CNFDoorJsonInfoVec::iterator iter = NewStageStaticInfo.DoorJsonInfoVec.begin();iter != NewStageStaticInfo.DoorJsonInfoVec.end();iter++) CNFStaticDataManager::SharedData()->GetDoorStaticInfo(iter->nDoorID,iter->DoorStaticInfo); g_pStaticDataManager->m_StageStaticInfoMap[nStageID]=NewStageStaticInfo; return 0; }
int CNFSaveDataManager::LoadSaveServerCallBack( void * para, int n_column, char ** column_value, char ** column_name ) { if (g_pSaveDataManager==NULL) { g_pSaveDataManager = new CNFSaveDataManager(); } tagSaveServerInfo Info; Info.nServerID = GetIntFromTable("i_server_id",n_column,column_value,column_name); Info.strServerName = GetStringFromTable("s_server_name",n_column,column_value,column_name); g_pSaveDataManager->m_SaveServerInfo = Info; return 0; }
int CNFStaticDataManager::LoadEnemyStaticCallBack( void * para, int n_column, char ** column_value, char ** column_name ) { if (g_pStaticDataManager==NULL) { g_pStaticDataManager = new CNFStaticDataManager(); } int nRoleID = GetIntFromTable("i_role_id",n_column,column_value,column_name); tagEnemyStaticInfo NewEnemyStaticInfo; NewEnemyStaticInfo.fHP = GetFloatFromTable("f_hp",n_column,column_value,column_name); NewEnemyStaticInfo.fHp_g = GetFloatFromTable("f_hp_g",n_column,column_value,column_name); NewEnemyStaticInfo.fMP = GetFloatFromTable("f_mp",n_column,column_value,column_name); NewEnemyStaticInfo.fMp_g = GetFloatFromTable("f_mp_g",n_column,column_value,column_name); NewEnemyStaticInfo.fDefense = GetFloatFromTable("f_defense",n_column,column_value,column_name); NewEnemyStaticInfo.fDefense_g = GetFloatFromTable("f_defense_g",n_column,column_value,column_name); NewEnemyStaticInfo.fAttack = GetFloatFromTable("f_attack",n_column,column_value,column_name); NewEnemyStaticInfo.fAttack_g = GetFloatFromTable("f_attack_g",n_column,column_value,column_name); NewEnemyStaticInfo.fDomination = GetFloatFromTable("f_domination",n_column,column_value,column_name); NewEnemyStaticInfo.fMoveSpeed = GetFloatFromTable("f_move_speed",n_column,column_value,column_name); NewEnemyStaticInfo.fAttackSpeed = GetFloatFromTable("f_attack_speed",n_column,column_value,column_name); NewEnemyStaticInfo.nCrit = GetIntFromTable("i_crit",n_column,column_value,column_name); NewEnemyStaticInfo.fCritDamage = GetFloatFromTable("f_crit_damage",n_column,column_value,column_name); NewEnemyStaticInfo.nCrickTime = GetIntFromTable("i_crick_time",n_column,column_value,column_name); NewEnemyStaticInfo.nConverselyTime = GetIntFromTable("i_conversely_time",n_column,column_value,column_name); NewEnemyStaticInfo.nTurnRoundTime = GetIntFromTable("i_turn_round_time",n_column,column_value,column_name); NewEnemyStaticInfo.nHitTarget = GetIntFromTable("i_hit_target",n_column,column_value,column_name); NewEnemyStaticInfo.nAvoid = GetIntFromTable("i_avoid",n_column,column_value,column_name); NewEnemyStaticInfo.fTreatCoefficient = GetFloatFromTable("f_treat_coefficient",n_column,column_value,column_name); NewEnemyStaticInfo.fLength_Hold = GetFloatFromTable("f_length_hold",n_column,column_value,column_name); NewEnemyStaticInfo.fWidth_Hold = GetFloatFromTable("f_width_hold",n_column,column_value,column_name); NewEnemyStaticInfo.fHeight_Hold = GetFloatFromTable("f_height_hold",n_column,column_value,column_name); NewEnemyStaticInfo.fLength_Move = GetFloatFromTable("f_length_move",n_column,column_value,column_name); NewEnemyStaticInfo.fWidth_Move = GetFloatFromTable("f_width_move",n_column,column_value,column_name); NewEnemyStaticInfo.fHeight_Move = GetFloatFromTable("f_height_move",n_column,column_value,column_name); NewEnemyStaticInfo.fLength_Conversely = GetFloatFromTable("f_length_conversely",n_column,column_value,column_name); NewEnemyStaticInfo.fWidth_Conversely = GetFloatFromTable("f_width_conversely",n_column,column_value,column_name); NewEnemyStaticInfo.fHeight_Conversely = GetFloatFromTable("f_height_conversely",n_column,column_value,column_name); NewEnemyStaticInfo.fNearDis = GetFloatFromTable("f_near_dis",n_column,column_value,column_name); NewEnemyStaticInfo.fFarDis = GetFloatFromTable("f_far_dis",n_column,column_value,column_name); NewEnemyStaticInfo.strArmatureName = GetStringFromTable("s_armature_name",n_column,column_value,column_name); g_pStaticDataManager->m_EnemyStaticInfoMap[nRoleID]=NewEnemyStaticInfo; return 0; }
int CNFStaticDataManager::LoadNPCStaticCallBack( void * para, int n_column, char ** column_value, char ** column_name ) { if (g_pStaticDataManager==NULL) { g_pStaticDataManager = new CNFStaticDataManager(); } int nNPCID = GetIntFromTable("i_npc_id",n_column,column_value,column_name); tagNPCStaticInfo Info; Info.strArmatureName = GetStringFromTable("s_armature_name",n_column,column_value,column_name); Info.fLength = GetFloatFromTable("f_length",n_column,column_value,column_name); Info.fWidth = GetFloatFromTable("f_width",n_column,column_value,column_name); Info.fHeight = GetFloatFromTable("f_height",n_column,column_value,column_name); g_pStaticDataManager->m_NPCStaticInfoMap[nNPCID] = Info; return 0; }
int CNFStaticDataManager::LoadEquipStaticCallBack( void * para, int n_column, char ** column_value, char ** column_name ) { if (g_pStaticDataManager==NULL) { g_pStaticDataManager = new CNFStaticDataManager(); } int nEquip = GetIntFromTable("i_equip_id",n_column,column_value,column_name); tagEquipStaticInfo Info; Info.strEquipName = GetStringFromTable("s_equip_name",n_column,column_value,column_name); Info.nEquipPositionID = GetIntFromTable("i_equip_position_id",n_column,column_value,column_name); Info.nEquipQuality = GetIntFromTable("i_equip_quality",n_column,column_value,column_name); Info.nEquipMustAID = GetIntFromTable("i_equip_must_a_id",n_column,column_value,column_name); Info.fEquipMustABasicPoint = GetIntFromTable("f_equip_must_a_basic_point",n_column,column_value,column_name); Info.fEquipMustAGroupPoint = GetIntFromTable("f_equip_must_a_group_point",n_column,column_value,column_name); g_pStaticDataManager->m_EquipStaticInfoMap[nEquip] = Info; return 0; }
static int lua_ChangeServiceConfig2(lua_State *L) { SC_HANDLE h = lua_touserdata(L, 1); DWORD dwInfoLevel = luaL_checkint(L, 2); union { SERVICE_DELAYED_AUTO_START_INFO autostart; SERVICE_DESCRIPTION description; SERVICE_FAILURE_ACTIONS failure_actions; SERVICE_FAILURE_ACTIONS_FLAG failure_actions_flag; SERVICE_PREFERRED_NODE_INFO preferred_node; SERVICE_PRESHUTDOWN_INFO preshutdown_info; SERVICE_REQUIRED_PRIVILEGES_INFO privileges_info; SERVICE_SID_INFO sid_info; SERVICE_LAUNCH_PROTECTED_INFO protected_info; } info, *infop = &info; memset(infop, 0, sizeof(info)); luaL_checktype(L, 3, LUA_TTABLE); switch (dwInfoLevel) { case SERVICE_CONFIG_DELAYED_AUTO_START_INFO: info.autostart.fDelayedAutostart = GetIntFromTable(L, "fDelayedAutostart"); break; case SERVICE_CONFIG_DESCRIPTION: info.description.lpDescription = (char*)GetStringFromTable(L, "lpDescription"); break; case SERVICE_CONFIG_FAILURE_ACTIONS: info.failure_actions.dwResetPeriod = GetIntFromTable(L, "dwResetPeriod"); info.failure_actions.lpRebootMsg = (char*)GetStringFromTable(L, "lpRebootMsg"); lua_pushstring(L, "lpsaActions"); lua_gettable(L, -2); if (lua_type(L, -1) == LUA_TTABLE) { info.failure_actions.cActions = lua_objlen(L, -1); if (info.failure_actions.cActions) { info.failure_actions.lpsaActions = LocalAlloc(LPTR, sizeof(SC_ACTION) * info.failure_actions.cActions); } DWORD i = 0; while (i < info.failure_actions.cActions) { lua_rawgeti(L, -1, i+1); luaL_checktype(L, -1, LUA_TTABLE); info.failure_actions.lpsaActions[i].Delay = GetIntFromTable(L, "Delay"); info.failure_actions.lpsaActions[i].Type = GetIntFromTable(L, "Type"); lua_pop(L, 1); ++i; } lua_pop(L, 1); } break; case SERVICE_CONFIG_FAILURE_ACTIONS_FLAG: info.failure_actions_flag.fFailureActionsOnNonCrashFailures = GetIntFromTable(L, "fFailureActionsOnNonCrashFailures"); break; case SERVICE_CONFIG_PREFERRED_NODE: info.preferred_node.usPreferredNode = GetIntFromTable(L, "usPreferredNode"); info.preferred_node.fDelete = GetIntFromTable(L, "fDelete"); break; case SERVICE_CONFIG_PRESHUTDOWN_INFO: info.preshutdown_info.dwPreshutdownTimeout = GetIntFromTable(L, "dwPreshutdownTimeout"); break; case SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO: info.privileges_info.pmszRequiredPrivileges = (char*)GetStringFromTable(L, "pmszRequiredPrivileges"); break; case SERVICE_CONFIG_SERVICE_SID_INFO: info.sid_info.dwServiceSidType = GetIntFromTable(L, "dwServiceSidType"); break; /* case SERVICE_CONFIG_TRIGGER_INFO unsupported by ANSI version of ChangeServiceConfig2 */ case SERVICE_CONFIG_LAUNCH_PROTECTED: info.protected_info.dwLaunchProtected = GetIntFromTable(L, "dwLaunchProtected"); break; default: infop = NULL; break; } BOOL ret = ChangeServiceConfig2(h, dwInfoLevel, infop); switch (dwInfoLevel) { case SERVICE_CONFIG_FAILURE_ACTIONS: LocalFree(info.failure_actions.lpsaActions); break; default: break; } lua_pushboolean(L, ret); if (ret) { lua_pushnil(L); } else { lua_pushinteger(L, GetLastError()); } return 2; }