www.pudn.com > tele.rar > tele.pwn
#includenew 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; }