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 "";
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
 |