www.pudn.com > tele.rar > tele.pwn


#include  
 
new FSName[30] = "传送脚本"; 
 
#define TELE_CMD  	0 
#define TELE_NAME   1 
#define TELE_INFO   2 
 
#define TELE_INTERIOR 0 
#define TELE_PLAYER_X 1 
#define TELE_PLAYER_Y 2 
#define TELE_PLAYER_Z 3 
#define TELE_PLAYER_A 4 
#define TELE_VEHICLE_X 5 
#define TELE_VEHICLE_Y 6 
#define TELE_VEHICLE_Z 7 
#define TELE_VEHICLE_A 8 
 
#define DEFAULT_INTERIOR 0.000 
 
#define MAX_TELEPORTS                                                           21 
 
new TeleInfo[MAX_TELEPORTS+1][3][256]= 
{ 
	//	数据模板 
	{ "NONE", "NONE", "NONE" }, 
	//  命令名称      传送点介绍      备注 
	{ "/CCS", "炼油厂", "NONE" }, 
}; 
 
new Float:TelePos[MAX_TELEPORTS+1][9]= 
{ 
	//	数据模板 
	{ 
	    DEFAULT_INTERIOR,							//所处空间代号(Interior ID) 
		0.000,		0.000,		0.000,		0.000,	//步行状态 
		0.000,		0.000,		0.000,		0.000	//驾驶状态 
	}, 
	 
	//	X轴坐标     Y轴坐标     Z轴坐标     面向角度 
	{ 
	    DEFAULT_INTERIOR,							//所处空间代号(Interior ID) 
		603.616882,-804.889282,184.641790,	0.000,	//步行状态 
		603.616882,-804.889282,184.641790,	0.000   //驾驶状态 
	} 
}; 
 
forward public OnPlayerConnected(playerid); 
public OnFilterScriptInit()//脚本初始化 
{ 
	printf("* 脚本描述: %s",FSName); 
	SendClientMessageToAll(CLR_SERVER,"此服务器启用了传送脚本,输入/tele获取说明"); 
	return 1; 
} 
public OnFilterScriptExit()//卸载脚本 
{ 
	printf("* 脚本描述: %s",FSName); 
	SendClientMessageToAll(CLR_SERVER,"此服务器禁用了传送脚本,传送命令失效"); 
	return 1; 
} 
public OnPlayerConnect(playerid)//命令处理 
{ 
	SendClientMessage(playerid,CLR_SERVER,"此服务器启用了传送脚本,输入/TELE查询可用传送点"); 
	return 1; 
} 
 
stock OnPlayerTeleportCommand(playerid,cmd[]) 
{ 
    for(new T=1;T",T,TeleInfo[T][TELE_NAME],TeleInfo[T][TELE_CMD],TeleInfo[T][TELE_INFO]); 
		            SendClientMessage(playerid,CLR_INFORMATION,Qinf); 
		        } 
                teleports++; 
			} 
			Qformat(" 可用传送点总数: %d 传送方法: 输入括号内命令或者/TELE ID",teleports); 
			SendClientMessage(playerid,CLR_SERVER,Qinf); 
		    return 1; 
	    } 
	    else 
	    { 
	        new TELE_ID = strval(cmdtok2); 
	        if(TELE_ID>0||TELE_ID<=MAX_TELEPORTS) 
	        { 
		        if(strcmp(TeleInfo[TELE_ID][TELE_CMD],"NONE",true)!=0) 
				{ 
				    Qformat(" 玩家(%d): %s 传送至%s(%s)",playerid,ReturnPlayerName(playerid),TeleInfo[TELE_ID][TELE_NAME],TeleInfo[TELE_ID][TELE_CMD]); 
				    SendClientMessage(playerid,CLR_SERVER,Qinf); 
				    if(strcmp(TeleInfo[TELE_ID][TELE_INFO],"NONE",true)!=0) 
					{ 
						Rformat(" 注意: %s",TeleInfo[TELE_ID][TELE_INFO]); 
						SendClientMessage(playerid,CLR_ALERT,Qinf); 
					} 
					SetPlayerInterior(playerid,floatround(TelePos[TELE_ID][TELE_INTERIOR])); 
					if(IsPlayerInAnyVehicle(playerid)==0) 
					{ 
						SetPlayerPos 
						( 
							playerid, 
							TelePos[TELE_ID][TELE_PLAYER_X], 
							TelePos[TELE_ID][TELE_PLAYER_Y], 
							TelePos[TELE_ID][TELE_PLAYER_Z] 
						); 
						SetPlayerFacingAngle(playerid,TelePos[TELE_ID][TELE_PLAYER_A]); 
					} 
	    			else 
					{ 
						SetVehiclePos 
						( 
							GetPlayerVehicleID(playerid), 
							TelePos[TELE_ID][TELE_VEHICLE_X], 
							TelePos[TELE_ID][TELE_VEHICLE_Y], 
							TelePos[TELE_ID][TELE_VEHICLE_Z] 
						); 
						SetVehicleZAngle(GetPlayerVehicleID(playerid),TelePos[TELE_ID][TELE_VEHICLE_A]); 
					} 
					return 1; 
				} 
			} 
		    SendClientMessage(playerid,CLR_ALERT,"传送ID错误: 此ID不存在"); 
			return 1; 
		} 
	} 
	 
	if(OnPlayerTeleportCommand(playerid,cmdtok1)==1)return 1; 
	else return 0; 
}