239 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			239 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | function setCustomData_po_ATWaterCannon(obj, receiveData) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	// ?鞑 等桧搅 嫡晦 | |||
|  | 	local attackBonusRate = receiveData.readDword(); | |||
|  | 	local sizeRate = receiveData.readWord(); | |||
|  | 	 | |||
|  | 	local xVelocity = receiveData.readWord(); | |||
|  | 	local distance = receiveData.readWord(); | |||
|  | 	 | |||
|  | 	obj.getVar().clear_vector(); | |||
|  | 	obj.getVar().push_vector(0); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	obj.getVar("attack").clear_vector(); | |||
|  | 	obj.getVar("attack").push_vector(attackBonusRate); | |||
|  | 
 | |||
|  | 	// 桧翕 塽 ?娄 ??赝暧 扑姜 | |||
|  | 	//obj.sq_SetMoveParticle("Particle/ATWaterCannonMove.ptl", 0.0, 0.0);	 | |||
|  | 	//local particleCreater = obj.sq_var.GetparticleCreaterMap("ATWaterCannon", | |||
|  | 			//"PassiveObject/Character/Mage/Particle/ATWaterCannonTail.ptl", obj); | |||
|  | 	//particleCreater.Restart(0); | |||
|  | 	//obj.sq_AddObjectParticleCreater("Particle/ATWaterCannonTail.ptl"); | |||
|  | 	//obj.sq_SetObjectParticlePos(0, 1, 0); | |||
|  | 	 | |||
|  | 	//local distance = 400; // 釭陛朝 剪葬 | |||
|  | 	 | |||
|  | 	local x = sq_GetXPos(obj); | |||
|  | 	local y = sq_GetYPos(obj); | |||
|  | 	local z = sq_GetZPos(obj); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	obj.getVar("dis").clear_vector(); | |||
|  | 	 | |||
|  | 	obj.getVar("dis").push_vector(x); | |||
|  | 	obj.getVar("dis").push_vector(y); | |||
|  | 	obj.getVar("dis").push_vector(z); | |||
|  | 	obj.getVar("dis").push_vector(distance); | |||
|  | 	 | |||
|  | 	//local arriveTime = distance; | |||
|  | 	local arriveTime = (distance * 800) / xVelocity; | |||
|  | 	 | |||
|  | 
 | |||
|  | 	obj.getVar("arriveTime").clear_vector(); | |||
|  | 	obj.getVar("arriveTime").push_vector(arriveTime); | |||
|  | 	obj.getVar("arriveTime").push_vector(arriveTime); | |||
|  | 
 | |||
|  | 	// ?鞑戏煎 嫡擎 奢问溘 掸? | |||
|  | 	local attackInfo = sq_GetCurrentAttackInfo(obj); | |||
|  | 	if (attackInfo) | |||
|  | 		sq_SetCurrentAttackBonusRate(attackInfo, attackBonusRate); | |||
|  | 
 | |||
|  | 	// 僭渠?暧 觼晦蒂 亵瞰?. | |||
|  | 	local currentAni = sq_GetCurrentAnimation(obj); | |||
|  | 	obj.getVar("rate").clear_vector(); | |||
|  | 	obj.getVar("rate").push_vector(sizeRate); | |||
|  | 	 | |||
|  | 	sizeRate = sizeRate.tofloat() / 100.0; | |||
|  | 	currentAni.setImageRateFromOriginal(sizeRate, sizeRate); | |||
|  | 	currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate); | |||
|  | 	 | |||
|  | 	sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate); | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | function setState_po_ATWaterCannon(obj, state, datas) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | } | |||
|  | 
 | |||
|  | function procAppend_po_ATWaterCannon(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return;		 | |||
|  | 	 | |||
|  | 	local pAni = obj.getCurrentAnimation(); | |||
|  | 	local frmIndex = sq_GetAnimationFrameIndex(pAni); | |||
|  | 	local currentT = sq_GetCurrentTime(pAni); | |||
|  | 
 | |||
|  | 	local objX = sq_GetXPos(obj); | |||
|  | 	local objY = sq_GetYPos(obj); | |||
|  | 	local parentObj = obj.getParent(); | |||
|  | 	 | |||
|  | 	if(!parentObj) | |||
|  | 	{ | |||
|  | 		if(obj.isMyControlObject()) | |||
|  | 		{ | |||
|  | 			sq_SendDestroyPacketPassiveObject(obj); | |||
|  | 			return; | |||
|  | 		} | |||
|  | 	} | |||
|  | 		 | |||
|  | 		 | |||
|  | 	local fireT = obj.getVar("arriveTime").get_vector(0); | |||
|  | 	 | |||
|  | 	local srcX = obj.getVar("dis").get_vector(0); // 卫蒙x | |||
|  | 	local srcY = obj.getVar("dis").get_vector(1); // 卫蒙y | |||
|  | 	local srcZ = obj.getVar("dis").get_vector(2); // 卫蒙z | |||
|  | 	    	 | |||
|  | 	local distance = obj.getVar("dis").get_vector(3); // 识 桧翕剪葬 | |||
|  | 	 | |||
|  | 	local v = sq_GetUniformVelocity(0, distance, currentT, fireT); | |||
|  | 	 | |||
|  | 	local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v); | |||
|  | 	local dstY = srcY; | |||
|  | 	 | |||
|  | 	sq_setCurrentAxisPos(obj, 0, dstX); | |||
|  | 	 | |||
|  | 	local remainT = obj.getVar("arriveTime").get_vector(1); | |||
|  | 	if(currentT >= remainT) | |||
|  | 	{ | |||
|  | 		if(obj.isMyControlObject()) | |||
|  | 		{ | |||
|  | 			sq_SendDestroyPacketPassiveObject(obj); | |||
|  | 		} | |||
|  | 	}	 | |||
|  | 	 | |||
|  | 		 | |||
|  | } | |||
|  | 
 | |||
|  | function onChangeSkillEffect_po_ATWaterCannon(obj, skillIndex, reciveData) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | } | |||
|  | 
 | |||
|  | function onDestroyObject_po_ATWaterCannon(obj, object) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | } | |||
|  | 
 | |||
|  | function onKeyFrameFlag_po_ATWaterCannon(obj, flagIndex) | |||
|  | { | |||
|  | } | |||
|  | 
 | |||
|  | function onEndCurrentAni_po_ATWaterCannon(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | } | |||
|  | 
 | |||
|  | function onAttack_po_ATWaterCannon(obj, damager, boundingBox, isStuck) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return 0; | |||
|  | 		 | |||
|  | 	if(!damager) | |||
|  | 		return 0; | |||
|  | 		 | |||
|  | 	// PassiveObject/Character/Mage/Animation/ATWaterCannon/explode_normal.ani	 | |||
|  | 
 | |||
|  | 	local attackRate = obj.getVar("attack").get_vector(0); | |||
|  | 	local sizeRate = obj.getVar("rate").get_vector(0) - 30; | |||
|  | 	local group = sq_GetGroup(damager); | |||
|  | 	local id = sq_GetUniqueId(damager); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	//local x = sq_GetCenterXPos(boundingBox); | |||
|  | 	//local y = damager.getYPos() + 1; | |||
|  | 	//local z = sq_GetCenterZPos(boundingBox); | |||
|  | 	 | |||
|  | 	local x = sq_GetXPos(obj); | |||
|  | 	local y = sq_GetYPos(obj) + 1; | |||
|  | 	local z = sq_GetZPos(obj); | |||
|  | 	 | |||
|  | 	local parentObj = obj.getParent(); | |||
|  | 
 | |||
|  | 	if(obj.isMyControlObject()) | |||
|  | 	{ | |||
|  | 		local cnt = obj.getVar().get_vector(0); | |||
|  | 		 | |||
|  | 		if(!cnt) | |||
|  | 		{ | |||
|  | 			sq_BinaryStartWrite(); | |||
|  | 			sq_BinaryWriteDword(attackRate); | |||
|  | 			sq_BinaryWriteDword(group); | |||
|  | 			sq_BinaryWriteDword(id); | |||
|  | 			sq_BinaryWriteDword(sizeRate); | |||
|  | 			 | |||
|  | 			print(" exp create:" + cnt); | |||
|  | 			 | |||
|  | 			obj.getVar().set_vector(0, cnt + 1); | |||
|  | 			sq_SendCreatePassiveObjectPacketPos(parentObj, 24256, 0, x, y, z); | |||
|  | 		}		 | |||
|  | 	} | |||
|  | 	 | |||
|  | 	//local sizeRateFloat = sizeRate.tofloat() / 100.0a | |||
|  | 	//local x = sq_GetCenterXPos(boundingBox); | |||
|  | 	//local y = damager.getYPos(); | |||
|  | 	//local z = sq_GetCenterZPos(boundingBox); | |||
|  | 	//local isAutoDestroy = true; | |||
|  | 	// | |||
|  | 	//local ani = sq_CreateAnimation("","PassiveObject/Character/Mage/Animation/ATWaterCannon/explode_normal.ani"); | |||
|  | 	// | |||
|  | 	//if(!ani) | |||
|  | 		//return 0;	 | |||
|  | 	// | |||
|  | 	//local pooledObj = sq_CreatePooledObject(ani,isAutoDestroy); | |||
|  | // | |||
|  | 	//local hitAni = sq_GetCurrentAnimation(pooledObj); | |||
|  | 	//hitAni.Proc(); | |||
|  | 	//hitAni.setImageRate(sizeRateFloat, sizeRateFloat); | |||
|  | 	////hitAni.resize(sizeRateFloat, sizeRateFloat); | |||
|  | 	// | |||
|  | 	//pooledObj.setCurrentPos(x,y + 1,z); | |||
|  | 	//sq_SetCurrentDirection(pooledObj, obj.getDirection()); | |||
|  | 	// | |||
|  | 	//sq_AddObject(obj, pooledObj, OBJECTTYPE_DRAWONLY, false); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	return 0; | |||
|  | } | |||
|  | 
 | |||
|  | function onAfterAttack_po_ATWaterCannon(obj, damager, boundingBox, isStuck) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return 0; | |||
|  | 		 | |||
|  | 	if(obj.isMyControlObject()) | |||
|  | 	{ | |||
|  | 		sq_SendDestroyPacketPassiveObject(obj);	 | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return 0; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | function getCustomHitEffectFileName_po_ATWaterCannon(obj, isAttachOnDamager) | |||
|  | { | |||
|  | 	return ""; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  |  |