function setCustomData_po_ATIceRoad(obj, reciveData) { if(!obj) return; //sq_BinaryWriteDword(change_time); // 卫除 //sq_BinaryWriteDword(rate); // ?徽 //sq_BinaryWriteDword(movSpd); // 马模纂 local changeTime = reciveData.readDword(); // 卫除 local rate = reciveData.readDword(); // ?徽 local movSpd = reciveData.readDword(); // 马模纂 obj.getVar("info").clear_vector(); obj.getVar("info").push_vector(changeTime); local atk = sq_GetCurrentAttackInfo(obj); //sq_SetChangeStatusIntoAttackInfo(atk, 0, ACTIVESTATUS_SLOW, rate, movSpd, changeTime); // ?撩蝶鉴暧 溯涟 // 嬴桧蝶 煎萄 ?撩 ?卫粽 蝶鉴击 寡锡棻贼 蜃擎 瞳桧 彩念 鼻鹧桧鼻缣 勘萼棻. local exSkillLevel = reciveData.readWord(); if (exSkillLevel > 0) { local prob = reciveData.readFloat(); local asLevel = reciveData.readWord(); local validTime = reciveData.readDword(); sq_SetChangeStatusIntoAttackInfoWithEtc(atk, 0, ACTIVESTATUS_FREEZE, prob.tointeger(), asLevel, validTime, 0, 0); } } function setState_po_ATIceRoad(obj, state, datas) { if(!obj) return; } function procAppend_po_ATIceRoad(obj) { if(!obj) return; //print(" ice road"); // } function onAttack_po_ATIceRoad(obj, damager, boundingBox, isStuck) { if(!obj) return 0; local pChr = obj.getTopCharacter(); if(!pChr) return 0; if(obj.isMyControlObject()) { local skill_level = sq_GetSkillLevel(pChr, SKILL_ICEROAD); local rate = sq_GetLevelData(pChr, SKILL_ICEROAD, SKL_LV_3, skill_level); // 桧楼 ?徽 local rand = sq_getRandom(0, 100); // 桧楼?徽桧 剩横陛捡 桧楼马模 横?蛤虽蒂 勘横鄹栖棻.. //sq_IsValidActiveStatus(damager, ACTIVESTATUS_SLOW); if(rate >= rand) { local group = sq_GetGroup(damager); local uniqueId = sq_GetUniqueId(damager); sq_BinaryStartWrite(); sq_BinaryWriteWord(group); sq_BinaryWriteWord(uniqueId); sq_SendChangeSkillEffectPacket(obj, SKILL_ICEROAD); } } // return 0; } function onChangeSkillEffect_po_ATIceRoad(obj, skillIndex, reciveData) { print(" onChangeSkillEffect_po_ATIceRoad:" + obj); if(skillIndex != SKILL_ICEROAD) return; if(!obj) return; local pChr = obj.getTopCharacter(); print(" onChangeSkillEffect_po_ATIceRoad:" + pChr); if(!pChr) return; //print(" iceroad rand:" + rand + " rate:" + rate); local group = reciveData.readWord(); local uniqueId = reciveData.readWord(); local damager = sq_GetObject(obj, group, uniqueId); local active_damager = sq_GetCNRDObjectToActiveObject(damager); if(!active_damager) return 0; local appendage = CNSquirrelAppendage.sq_AppendAppendage(damager, damager, SKILL_ICEROAD, true, "Character/ATMage/IceRoad/ap_ATMage_IceRoadCS.nut", false); // 罹晦怃 append 蒙机 CNSquirrelAppendage.sq_AppendAppendageID(appendage, damager, damager, APID_SKILL_LIGHT_ENCHANT_WEAPON, false); // // 酝犒肾贼 寰肾晦 阳侥缣.. 棻卫 椭朝棻.. appendage = active_damager.GetSquirrelAppendage("Character/ATMage/IceRoad/ap_ATMage_IceRoadCS.nut"); // 桧楼 马模 if(appendage) { local skill_level = sq_GetSkillLevel(pChr, SKILL_ICEROAD); local change_time = sq_GetLevelData(pChr, SKILL_ICEROAD, SKL_LV_1, skill_level); // 虽楼卫除 //local change_time = 5000; appendage.sq_SetValidTime(change_time); // 横?蛤虽 颤歜 撮? local mov_spd = sq_GetLevelData(pChr, SKILL_ICEROAD, SKL_LV_2, skill_level); // 虽楼卫除 mov_spd = -mov_spd; //local mov_spd = -600; print(" mov_spd:" + mov_spd.tofloat()); appendage.getTimer().Reset(); appendage.getTimer().Start(0,0); appendage.sq_var.clear_vector(); appendage.sq_var.push_vector(change_time); // 虽楼卫除 appendage.sq_var.push_vector(0); // ?楚斜 local change_appendage = appendage.sq_getChangeStatus("changeStatus"); if(!change_appendage) change_appendage = appendage.sq_AddChangeStatusAppendageID(damager, damager, 0, CHANGE_STATUS_TYPE_MOVE_SPEED, false, mov_spd, APID_COMMON); if(change_appendage) { change_appendage.clearParameter(); change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, false, mov_spd.tofloat()); } } else { print(" exist appendage"); } } function onDestroyObject_po_ATIceRoad(obj, object) { if(!obj) return; } function onKeyFrameFlag_po_ATIceRoad(obj, flagIndex) { } function onEndCurrentAni_po_ATIceRoad(obj) { if(!obj) return; if(obj.isMyControlObject()) { sq_SendDestroyPacketPassiveObject(obj); } }