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