262 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			262 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| EXC_VAR_MOVE_ACTIVE		<- 0
 | ||
| EXC_VAR_POS_X			<- 1
 | ||
| EXC_VAR_POS_Y			<- 2
 | ||
| EXC_VAR_POS_Z			<- 3
 | ||
| EXC_VAR_CURRENT_STATE	<- 4
 | ||
| EXC_VAR_START_ANGLE		<- 5
 | ||
| 
 | ||
| 
 | ||
| function sq_AddFunctionName(appendage)
 | ||
| {
 | ||
| 	appendage.sq_AddFunctionName("onStart", "onStart_execution");
 | ||
| 	appendage.sq_AddFunctionName("onEnd", "onEnd_execution");
 | ||
| 	appendage.sq_AddFunctionName("proc", "proc_execution");
 | ||
| 	appendage.sq_AddFunctionName("onChangeState", "onChangeState_execution");
 | ||
| 	appendage.sq_AddFunctionName("onSourceKeyFrameFlag", "onSourceKeyFrameFlag_execution");	
 | ||
| 	appendage.sq_AddFunctionName("onDestroyObject", "onDestroyObject_execution");
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| // 睡赅陛 濩?热 毡朝 偌羹樯虽蒂 ?钦?朝 ?热.
 | ||
| function isGrabableParent(appendage)
 | ||
| {
 | ||
| 	if(!appendage) return false;
 | ||
| 	local parentObj = appendage.getParent();
 | ||
| 	local sourceObj = appendage.getSource();	
 | ||
| 	if(sq_IsGrabable(sourceObj,parentObj) && sq_IsHoldable(sourceObj,parentObj)) //濩击热 毡朝 鼻鹧
 | ||
| 		return true;
 | ||
| 	return false;
 | ||
| }
 | ||
| 
 | ||
| // 横?蛤虽 卫蒙卫 属寥
 | ||
| function onStart_execution(appendage)
 | ||
| {
 | ||
| 	appendage.sq_var.setInt(EXC_VAR_CURRENT_STATE,0); //?营 蝶才桧? : 蟾晦?
 | ||
| 	
 | ||
| 	
 | ||
| 	local parentObj = appendage.getParent();
 | ||
| 	
 | ||
| 	appendage.sq_var.setFloat(EXC_VAR_START_ANGLE,0.0);
 | ||
| 		
 | ||
| 	if(parentObj && parentObj.isApplyCustomRotate())
 | ||
| 		appendage.sq_var.setFloat(EXC_VAR_START_ANGLE, parentObj.getCustomRotateAngle());
 | ||
| 	else
 | ||
| 		appendage.sq_var.setFloat(EXC_VAR_START_ANGLE, 0.0);
 | ||
| 	
 | ||
| }
 | ||
| 
 | ||
| function onDestroyObject_execution(appendage,obj)
 | ||
| {
 | ||
| 	return true;
 | ||
| }
 | ||
| 
 | ||
| function onChangeState_execution(appendage, oldState, newState, datas)
 | ||
| {	
 | ||
| 	if(!appendage) return;
 | ||
| 	
 | ||
| 	appendage.sq_var.setBool(EXC_VAR_MOVE_ACTIVE,true);
 | ||
| 	appendage.sq_var.setInt(EXC_VAR_CURRENT_STATE,newState);  //?营 蝶才桧? : 睡赅暧 郦?溯歜高
 | ||
| 
 | ||
| 
 | ||
| 	// 濩晦 碳陛瞳擎 庵煎 湍虽晦 瞪缣 ?横遽棻.
 | ||
| 	if(newState >= 7 && !isGrabableParent(appendage))
 | ||
| 	{
 | ||
| 		appendage.setValid(false);
 | ||
| 		return;
 | ||
| 	}
 | ||
| 	
 | ||
| 	setNewState_execution(appendage, oldState ,newState, false);
 | ||
| }
 | ||
| 
 | ||
| function setNewState_execution(appendage, oldState ,newState, isLast)
 | ||
| {	
 | ||
| 	local parentObj = appendage.getParent();
 | ||
| 	local sourceObj = appendage.getSource();
 | ||
| 
 | ||
| 
 | ||
| 	if(!parentObj || !sourceObj) {
 | ||
| 		appendage.setValid(false);
 | ||
| 		return;
 | ||
| 	}
 | ||
| 	
 | ||
| 	local startX = 195;	 // ?萄啭注辨 
 | ||
| 	local height = parentObj.getObjectHeight()/2;
 | ||
| 	
 | ||
| 		// 桧? 谢? ?萄啭注;
 | ||
| 	if(newState == 1) {				
 | ||
| 		setPosFromObject(appendage,99,-1,90 - height);		
 | ||
| 	}
 | ||
| 	else if(newState == 2) {		
 | ||
| 		setPosFromObject(appendage,240,-1,90 - height);
 | ||
| 	}
 | ||
| 	else if(newState == 3) {
 | ||
| 		setPosFromObject(appendage,240,-1,90 - height);
 | ||
| 	}
 | ||
| 	else if(newState == 4) {
 | ||
| 		local x = sq_GetDistancePos(240, parentObj.getDirection(), 2);
 | ||
| 		setPosFromObject(appendage,x,-1,90 - height);
 | ||
| 	}
 | ||
| 	else if(newState == 5) {		
 | ||
| 		setPosFromObject(appendage,240,-1,90 - height);
 | ||
| 	}
 | ||
| 	else if(newState == 6) {
 | ||
| 		local x = sq_GetDistancePos(240, parentObj.getDirection(), 1);
 | ||
| 		setPosFromObject(appendage,x,-1,90 - height); 
 | ||
| 	}
 | ||
| 	else if(newState == 7) {
 | ||
| 		local x = sq_GetDistancePos(240, parentObj.getDirection(), 2);
 | ||
| 		setPosFromObject(appendage,x,-1,90 - height); 
 | ||
| 	}
 | ||
| 	else if(newState == 8) {	
 | ||
| 		setPosFromObject(appendage,193,-1,193 - height);
 | ||
| 	}
 | ||
| 	else if(newState == 9) {
 | ||
| 		setPosFromObject(appendage,0 - height,1,286);		
 | ||
| 		local rotate = 105 * 0.017453;		
 | ||
| 		parentObj.setCustomRotate(true,rotate);
 | ||
| 	}
 | ||
| 	else if(newState == 10) {
 | ||
| 		setPosFromObject(appendage,-45 - height,1,275);
 | ||
| 		local rotate = 90 * 0.017453;		
 | ||
| 		parentObj.setCustomRotate(true,rotate);
 | ||
| 	}
 | ||
| 	else if(newState == 11) {
 | ||
| 		setPosFromObject(appendage,-startX - height,1,25);
 | ||
| 	}
 | ||
| 	else if(newState == 12) {
 | ||
| 		setPosFromObject(appendage,-startX - height,1,25);
 | ||
| 	}
 | ||
| 	else if(newState == 13) {
 | ||
| 		setPosFromObject(appendage,-startX - height,1,25);
 | ||
| 	}
 | ||
| 	else if(newState == 14) {
 | ||
| 		setPosFromObject(appendage,-startX - height,1,25);
 | ||
| 	}
 | ||
| 	else if(newState == 15) {
 | ||
| 		setPosFromObject(appendage,-startX - height,1,25);
 | ||
| 	}
 | ||
| 	else if(newState == 16) {
 | ||
| 		setPosFromObject(appendage,-startX - height,1,25);
 | ||
| 	}
 | ||
| 	else if(newState == 17) {
 | ||
| 		setPosFromObject(appendage,-startX - height,1,25);
 | ||
| 	}	
 | ||
| 	else if(newState == 18) {
 | ||
| 		setPosFromObject(appendage,-startX + 10 - height,-1,5);
 | ||
| 	}	
 | ||
| 	else if(newState == 19) { // 殖葬晦 卫蒙
 | ||
| 		setPosFromObject(appendage,-startX + 10 - height,-1,2);		
 | ||
| 	}	
 | ||
| 	else if(newState == 20) {
 | ||
| 		setPosFromObject(appendage,-startX + 10 - height,-1,0);
 | ||
| 	}
 | ||
| 	else if(newState == 21) {
 | ||
| 		setPosFromObject(appendage,-startX + 10 - height,-1,2);		
 | ||
| 	}
 | ||
| 	else if(newState == 22) {
 | ||
| 		setPosFromObject(appendage,-startX + 10 - height,-1,0);		
 | ||
| 	}
 | ||
| 	else if(newState == 23) {
 | ||
| 		setPosFromObject(appendage,-startX + 10 - height,-1,2);		
 | ||
| 	}
 | ||
| 	else if(newState == 24) { // 殖葬晦 部
 | ||
| 		setPosFromObject(appendage,-startX + 10 - height,-1,0);
 | ||
| 	}
 | ||
| 	else if(newState == 25) {
 | ||
| 		setPosFromObject(appendage,-startX + 10 - height,-1,5);
 | ||
| 	}
 | ||
| 	else if(newState == 26) {
 | ||
| 		setPosFromObject(appendage,111 - height,-1,25);		
 | ||
| 	}
 | ||
| 	else if(newState == 28) {
 | ||
| 	}
 | ||
| 	else if(newState == 29) {	
 | ||
| 		appendage.sq_var.setBool(0,false);	
 | ||
| 	}		
 | ||
| 	else if(newState >= 31) {
 | ||
| 		setPosFromObject(appendage,240,-1,90 - height);
 | ||
| 	}
 | ||
| 	else 
 | ||
| 	{
 | ||
| 		if(isLast)
 | ||
| 			return;
 | ||
| 		else
 | ||
| 			setNewState_execution(appendage, oldState, oldState, true); // 桧梱虽 谘戏贼 亿蝶才桧?陛 桡棻. 萤萄煎 籀葬.		
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // 横?蛤虽 ?薯 腆阳.
 | ||
| function onEnd_execution(appendage)
 | ||
| {
 | ||
| 	if(!appendage) return;
 | ||
| 	
 | ||
| 	local parentObj = appendage.getParent();	
 | ||
| 	
 | ||
| 	if(!parentObj) {
 | ||
| 		appendage.setValid(false);
 | ||
| 		return;
 | ||
| 	}
 | ||
| 	
 | ||
| 	// 濩嬴 湍霞 瞳暧 谢?蒂 尔姜 ?遽棻. 郭歜寞虽
 | ||
| 	if(isGrabableParent(appendage)) {
 | ||
| 		parentObj.setCustomRotate(false,0.0);	
 | ||
| 		local x = sq_GetDistancePos(parentObj.getXPos(), parentObj.getDirection(), -200);
 | ||
| 		sq_SetCurrentPos(parentObj,x,parentObj.getYPos(),parentObj.getZPos());	
 | ||
| 			
 | ||
| 		if(parentObj.isMyControlObject())
 | ||
| 			sq_SimpleMoveToNearMovablePos(parentObj,300);
 | ||
| 	}
 | ||
| 	
 | ||
| 	local oldAngle = appendage.sq_var.getFloat(EXC_VAR_START_ANGLE);
 | ||
| 	if(oldAngle != parentObj.getCustomRotateAngle())
 | ||
| 		parentObj.setCustomRotate(true,oldAngle);
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| function proc_execution(appendage)
 | ||
| {
 | ||
| 	if(!appendage)
 | ||
| 		return;
 | ||
| 	
 | ||
| 	
 | ||
| 	local active = appendage.sq_var.getBool(EXC_VAR_MOVE_ACTIVE);
 | ||
| 	local currentKeyIndex = appendage.sq_var.getInt(EXC_VAR_CURRENT_STATE);
 | ||
| 
 | ||
| 	if((active && currentKeyIndex >= 1))
 | ||
| 	{
 | ||
| 		if (isGrabableParent(appendage) || (currentKeyIndex < 7 && !isGrabableParent(appendage)) ) //濩晦 陛栋瞳桧釭 濩晦 碳陛瞳
 | ||
| 		{		
 | ||
| 			local parentObj = appendage.getParent();
 | ||
| 			local sourceObj = appendage.getSource();
 | ||
| 			
 | ||
| 			if(!sq_IsFixture(parentObj)) // 坚姜?桧 嬴栖贼 虽姜胀 谢?煎 桧翕 ?还匙
 | ||
| 			{
 | ||
| 				local x = appendage.sq_var.getInt(EXC_VAR_POS_X);
 | ||
| 				local y = appendage.sq_var.getInt(EXC_VAR_POS_Y);
 | ||
| 				local z = appendage.sq_var.getInt(EXC_VAR_POS_Z);	
 | ||
| 				
 | ||
| 				x = sq_GetDistancePos(sourceObj.getXPos(), sourceObj.getDirection(), x);
 | ||
| 				y = sourceObj.getYPos() + y;
 | ||
| 					
 | ||
| 				if(isGrabableParent(appendage))
 | ||
| 					z = sourceObj.getZPos() + z;
 | ||
| 				else
 | ||
| 					z = parentObj.getZPos();	
 | ||
| 				
 | ||
| 				
 | ||
| 				sq_SetCurrentPos(parentObj,x,y,z);
 | ||
| 			}
 | ||
| 		}
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| function setPosFromObject(appendage, addX, addY, addZ) 
 | ||
| {
 | ||
| 	if(!appendage) return;
 | ||
| 	appendage.sq_var.setInt(EXC_VAR_POS_X,addX);
 | ||
| 	appendage.sq_var.setInt(EXC_VAR_POS_Y,addY);
 | ||
| 	appendage.sq_var.setInt(EXC_VAR_POS_Z,addZ);
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
|  |