255 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			255 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | 
 | |||
|  | function insertWindmillDust(obj, dx, dy, dz) | |||
|  | { | |||
|  | 	if(!obj) | |||
|  | 		return; | |||
|  | 		 | |||
|  | 	local x = sq_GetXPos(obj); | |||
|  | 	local y = sq_GetYPos(obj); | |||
|  | 	local z = sq_GetZPos(obj); | |||
|  | 	 | |||
|  | 	local particleCreater = obj.getVar().GetparticleCreaterMap("ATTurnWindmillDust", "Character/Mage/Effect/Particle/ATTurnWindmillDust.ptl", obj); | |||
|  | 		 | |||
|  | 	particleCreater.Restart(0); | |||
|  | 	particleCreater.SetPos(x + dx, y + dy, z + dz);	 | |||
|  | 	 | |||
|  | 	sq_AddParticleObject(obj, particleCreater); | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function setCustomData_po_ATTurnWidmill(obj, reciveData) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | 
 | |||
|  | 	local flip = reciveData.readDword(); | |||
|  | 	local distance = reciveData.readDword();	 | |||
|  | 	local attackRate = reciveData.readDword(); | |||
|  | 	local term = reciveData.readDword(); | |||
|  | 	local dirType = reciveData.readDword(); | |||
|  | 	local angle = reciveData.readDword(); | |||
|  | 
 | |||
|  | 	local x = sq_GetXPos(obj); | |||
|  | 	local y = sq_GetYPos(obj); | |||
|  | 	local z = sq_GetZPos(obj); | |||
|  | 	 | |||
|  | 	obj.getVar("dir").clear_vector(); | |||
|  | 	obj.getVar("dir").push_vector(dirType); | |||
|  | 	obj.getVar("dir").push_vector(angle); | |||
|  | 	 | |||
|  | 	local disW = distance; | |||
|  | 	local disH = 0; | |||
|  | 	if(dirType) | |||
|  | 	{ | |||
|  | 		local cos_x = distance.tofloat() * sq_CosTable(angle); | |||
|  | 		local sin_y = distance.tofloat() * sq_SinTable(angle); | |||
|  | 		 | |||
|  | 		disW = sq_Abs( cos_x.tointeger() ); | |||
|  | 		disH = sq_Abs( sin_y.tointeger() ); | |||
|  | 		 | |||
|  | 		print(" angle:" + angle + " sin_y:" + sin_y); | |||
|  | 		 | |||
|  | 	} | |||
|  | 	 | |||
|  | 		 | |||
|  | 	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(disW); // x桧翕剪葬 | |||
|  | 	obj.getVar("dis").push_vector(disH); // y桧翕剪葬 | |||
|  | 	 | |||
|  | 	 | |||
|  | 
 | |||
|  | 	obj.getVar("flip").clear_vector(); // state vector | |||
|  | 	obj.getVar("flip").push_vector(flip); | |||
|  | 	 | |||
|  | 	obj.getVar("state").clear_vector(); // state vector | |||
|  | 	obj.getVar("state").push_vector(PASSIVEOBJ_SUB_STATE_0); | |||
|  | 	 | |||
|  | 	//print(" term:" + term); | |||
|  | 	initGetVarTimer(obj, 1, term, -1); | |||
|  | 	 | |||
|  | 	obj.getVar("particle").clear_timer_vector(); | |||
|  | 	obj.getVar("particle").push_timer_vector(); | |||
|  | 	 | |||
|  | 	local t = obj.getVar("particle").get_timer_vector(0); | |||
|  | 	t.setParameter(20, -1);		 | |||
|  | 	t.resetInstant(0); | |||
|  | 	 | |||
|  | 	local pAttack = sq_GetCurrentAttackInfo(obj);			 | |||
|  | 	sq_SetCurrentAttackBonusRate(pAttack, attackRate); | |||
|  | 	 | |||
|  | 		 | |||
|  | 	if(obj.isMyControlObject()) { | |||
|  | 		local pIntVec = sq_GetGlobalIntVector(); | |||
|  | 		 | |||
|  | 		sq_IntVectorClear(pIntVec); | |||
|  | 		sq_IntVectorPush(pIntVec, 0); | |||
|  | 		 | |||
|  | 		obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_0, pIntVec, STATE_PRIORITY_AUTO, false, ""); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	//ATTurnWindmillDust.ptl | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function setState_po_ATTurnWidmill(obj, state, datas) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return; | |||
|  | 	 | |||
|  | 	local passiveState = state; | |||
|  | 	 | |||
|  | 	obj.getVar("state").set_vector(0, passiveState); | |||
|  | 
 | |||
|  | 	local x = sq_GetXPos(obj); | |||
|  | 	local y = sq_GetYPos(obj); | |||
|  | 	local z = sq_GetZPos(obj); | |||
|  | 	 | |||
|  | 	if(passiveState == PASSIVEOBJ_SUB_STATE_0) | |||
|  | 	{ | |||
|  | 		if(obj.getVar("flip").get_vector(0)) | |||
|  | 		{ | |||
|  | 			local ani = obj.getCustomAnimation(1); | |||
|  | 			obj.setCurrentAnimation(ani); | |||
|  | 		} | |||
|  | 	} | |||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_1) | |||
|  | 	{ | |||
|  | 		if(!obj.getVar("flip").get_vector(0)) | |||
|  | 		{ | |||
|  | 			local ani = obj.getCustomAnimation(0); | |||
|  | 			obj.setCurrentAnimation(ani); | |||
|  | 		} | |||
|  | 		else | |||
|  | 		{ | |||
|  | 			local ani = obj.getCustomAnimation(2); | |||
|  | 			obj.setCurrentAnimation(ani); | |||
|  | 		} | |||
|  | 	 | |||
|  | 	} | |||
|  | 	 | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function procAppend_po_ATTurnWidmill(obj) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 	 | |||
|  | 	local passiveState = obj.getVar("state").get_vector(0); | |||
|  | 	 | |||
|  | 	local pAni = obj.getCurrentAnimation(); | |||
|  | 	local currentT = sq_GetCurrentTime(pAni); | |||
|  | 	 | |||
|  | 	if(passiveState == PASSIVEOBJ_SUB_STATE_0) | |||
|  | 	{ | |||
|  | 		local fireT = 200; | |||
|  | 		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); | |||
|  | 		  | |||
|  | 		sq_setCurrentAxisPos(obj, 0, dstX); | |||
|  | 		 | |||
|  | 		 | |||
|  | 		 | |||
|  | 		// 跷陛 | |||
|  | 		if(obj.getVar("dir").get_vector(0)) | |||
|  | 		{ | |||
|  | 			local disH = obj.getVar("dis").get_vector(4); // 撮煎 桧翕剪葬 | |||
|  | 			local vH = sq_GetUniformVelocity(0, disH, currentT, fireT); | |||
|  | 			 | |||
|  | 			//print(" disH:" + disH); | |||
|  | 			if(obj.getVar("dir").get_vector(0) == 1) | |||
|  | 			{ | |||
|  | 				vH = -vH; | |||
|  | 			} | |||
|  | 			 | |||
|  | 			local dstY = srcY + vH; | |||
|  | 			sq_setCurrentAxisPos(obj, 1, dstY); | |||
|  | 		} | |||
|  | 		 | |||
|  | 		 | |||
|  | 		if(currentT >= fireT) | |||
|  | 		{ | |||
|  | 			if(obj.isMyControlObject()) | |||
|  | 			{ | |||
|  | 				local pIntVec = sq_GetGlobalIntVector(); | |||
|  | 			 | |||
|  | 				sq_IntVectorClear(pIntVec); | |||
|  | 				sq_IntVectorPush(pIntVec, 0); | |||
|  | 
 | |||
|  | 				obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, ""); | |||
|  | 			} | |||
|  | 		} | |||
|  | 		 | |||
|  | 		// 试虽 ??赝 当撩 | |||
|  | 		local t = obj.getVar("particle").get_timer_vector(0); | |||
|  | 		 | |||
|  | 		if(t.isOnEvent(currentT) == true) | |||
|  | 		{		 | |||
|  | 			local dx = sq_GetDistancePos(0, obj.getDirection(), 10); | |||
|  | 			insertWindmillDust(obj, dx, 5, -8); | |||
|  | 		} | |||
|  | 		 | |||
|  | 		local hitT = obj.getVar().get_timer_vector(0); | |||
|  | 	 | |||
|  | 		if(hitT) | |||
|  | 		{		 | |||
|  | 			if(hitT.isOnEvent(currentT) == true) | |||
|  | 			{ | |||
|  | 				//print(" reset"); | |||
|  | 				obj.resetHitObjectList(); | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_1) | |||
|  | 	{ | |||
|  | 	} | |||
|  | 
 | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function onChangeSkillEffect_po_ATTurnWidmill(obj, skillIndex, reciveData) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function onDestroyObject_po_ATTurnWidmill(obj, object) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function onKeyFrameFlag_po_ATTurnWidmill(obj, flagIndex) | |||
|  | { | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function onEndCurrentAni_po_ATTurnWidmill(obj) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 	 | |||
|  | 	local passiveState = obj.getVar("state").get_vector(0); | |||
|  | 	 | |||
|  | 	if(passiveState == PASSIVEOBJ_SUB_STATE_1) | |||
|  | 	{ | |||
|  | 		if(obj.isMyControlObject()) | |||
|  | 		{ | |||
|  | 			sq_SendDestroyPacketPassiveObject(obj); | |||
|  | 		} | |||
|  | 	} | |||
|  | 	 | |||
|  | 
 | |||
|  | } | |||
|  |  |