求生之路2复活及传送玩家插件 l4d_sm_respawn 插件源码 l4d_sm_respawn.sp l4d_sm_respawn.smx。求生之路2,l4d,l4d2,SourceMOD 插件源码。
官网:https://forums.alliedmods.net/showthread.php?t=96249
#pragma semicolon 1 #include#include #define PLUGIN_VERSION "1.9.3" public Plugin:myinfo = { name = "L4D SM Respawn", author = "AtomicStryker & Ivailosp", description = "Let's you respawn Players by console", version = PLUGIN_VERSION, url = "http://forums.alliedmods.net/showthread.php?t=96249" } static Float:g_pos[3]; static Handle:hRoundRespawn = INVALID_HANDLE; static Handle:hBecomeGhost = INVALID_HANDLE; static Handle:hState_Transition = INVALID_HANDLE; static Handle:hGameConf = INVALID_HANDLE; public OnPluginStart() { decl String:game_name[24]; GetGameFolderName(game_name, sizeof(game_name)); if (!StrEqual(game_name, "left4dead2", false) && !StrEqual(game_name, "left4dead", false)) { SetFailState("Plugin supports Left 4 Dead and L4D2 only."); } LoadTranslations("common.phrases"); hGameConf = LoadGameConfigFile("l4drespawn"); CreateConVar("l4d_sm_respawn_version", PLUGIN_VERSION, "L4D SM Respawn Version", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_NOTIFY); RegAdminCmd("sm_respawn", Command_Respawn, ADMFLAG_BAN, "sm_respawn [player2] ... [playerN] - respawn all listed players and teleport them where you aim"); if (hGameConf != INVALID_HANDLE) { StartPrepSDKCall(SDKCall_Player); PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "RoundRespawn"); hRoundRespawn = EndPrepSDKCall(); if (hRoundRespawn == INVALID_HANDLE) SetFailState("L4D_SM_Respawn: RoundRespawn Signature broken"); StartPrepSDKCall(SDKCall_Player); PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "BecomeGhost"); PrepSDKCall_AddParameter(SDKType_PlainOldData , SDKPass_Plain); hBecomeGhost = EndPrepSDKCall(); if (hBecomeGhost == INVALID_HANDLE && StrEqual(game_name, "left4dead2", false)) LogError("L4D_SM_Respawn: BecomeGhost Signature broken"); StartPrepSDKCall(SDKCall_Player); PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "State_Transition"); PrepSDKCall_AddParameter(SDKType_PlainOldData , SDKPass_Plain); hState_Transition = EndPrepSDKCall(); if (hState_Transition == INVALID_HANDLE && StrEqual(game_name, "left4dead2", false)) LogError("L4D_SM_Respawn: State_Transition Signature broken"); } else { SetFailState("could not find gamedata file at addons/sourcemod/gamedata/l4drespawn.txt , you FAILED AT INSTALLING"); } } public Action:Command_Respawn(client, args) { if (args [player2] ... [playerN] - respawn all listed players"); return Plugin_Handled; } decl String:arg1[MAX_TARGET_LENGTH]; decl String:target_name[MAX_TARGET_LENGTH]; new target_list[MAXPLAYERS]; new target_count; new bool:tn_is_ml; GetCmdArg(1, arg1, sizeof(arg1)); if ((target_count = ProcessTargetString( arg1, client, target_list, MAXPLAYERS, 0, // no filtering target_name, sizeof(target_name), tn_is_ml)) MaxClients || !entity; } static bool:SetTeleportEndPoint(client) { decl Float:vAngles[3], Float:vOrigin[3]; GetClientEyePosition(client,vOrigin); GetClientEyeAngles(client, vAngles); //get endpoint for teleport new Handle:trace = TR_TraceRayFilterEx(vOrigin, vAngles, MASK_SHOT, RayType_Infinite, TraceEntityFilterPlayer); if(TR_DidHit(trace)) { decl Float:vBuffer[3], Float:vStart[3]; TR_GetEndPosition(vStart, trace); GetVectorDistance(vOrigin, vStart, false); new Float:Distance = -35.0; GetAngleVectors(vAngles, vBuffer, NULL_VECTOR, NULL_VECTOR); g_pos[0] = vStart[0] + (vBuffer[0]*Distance); g_pos[1] = vStart[1] + (vBuffer[1]*Distance); g_pos[2] = vStart[2] + (vBuffer[2]*Distance); } else { PrintToChat(client, "[SM] %s", "Could not teleport player after respawn"); CloseHandle(trace); return false; } CloseHandle(trace); return true; } PerformTeleport(client, target, Float:pos[3]) { pos[2]+=40.0; TeleportEntity(target, pos, NULL_VECTOR, NULL_VECTOR); LogAction(client,target, ""%L" teleported "%L" after respawning him" , client, target); } stock CheatCommand(client, String:command[], String:arguments[]="") { new userflags = GetUserFlagBits(client); SetUserFlagBits(client, ADMFLAG_ROOT); new flags = GetCommandFlags(command); SetCommandFlags(command, flags & ~FCVAR_CHEAT); FakeClientCommand(client, "%s %s", command, arguments); SetCommandFlags(command, flags); SetUserFlagBits(client, userflags); }
// This file was auto-generated by SourceMod (v1.3.7-dev) // ConVars for plugin "sm_respawn.smx" // L4D(2) Respawn Version // - // Default: "2.0.1" l4d_sm_respawn_version "2.0.1" // 0:关闭; 1:复活玩家后给予药丸; 2:复活后给予肾上腺素 // - // Default: "0" // Minimum: "0.000000" // Maximum: "2.000000" respawn_give_medicine "2" // 0:关闭; 1:复活玩家后给予药包 // - // Default: "0" // Minimum: "0.000000" // Maximum: "1.000000" respawn_give_medkit "1"
在admin top menu 内显示复活/传送, 选择功能后, 会显示玩家清单以供复活或传送
smx插件放入:X:left4dead2addonssourcemodplugins
txt文件放入:X:left4dead2addonssourcemodgamedata
输入!admin 或/admin 显示之admin top menu (管理员管理选单)内,
会增加了一项 [复活/传送]
然后可选择 复活玩家 或 传送玩家
选择后会有一个在线玩家及电脑BOT清单
复活玩家: 任意地复活死去玩家或电脑BOT至管理员准星位置
传召玩家: 保留玩家身上装备地传送至管理员准星位置
移形换影: 将名单一的玩家传送至名单二身边, 选择后会先显示名单一, 然后名单二
新增 sm_respawn.cfg, 可修改参数如下:
// 0:关闭; 1:复活玩家后给予药丸; 2:复活后给予肾上腺素 // - // Default: "0" // Minimum: "0.000000" // Maximum: "2.000000" respawn_give_medicine "0" // 0:关闭; 1:复活玩家后给予药包 // - // Default: "0" // Minimum: "0.000000" // Maximum: "1.000000" respawn_give_medkit "0"
已知Bug:
假如选择者(管理员)复活自己会被传到地图之起点, 可用移形换影传回至同伴身边
管理员复活任何人(不包括自己), 都可复活至管理员之准星位置
下载地址:http://115.com/file/an480cyj,解压密码:fuck115!
文章来源于lcx.cc:求生之路2复活及传送玩家插件 l4d_sm_respawn 插件源码
相关推荐: BackTrack 邮件日掉对方机器反弹CmdShell
http://backtrack.it/ 这个国外网站有视频演示过了的。 要期末开始了,虽然控制了整个学校的网络啥的,但是还是没弄到期末考试试题!于是就想通过邮箱来干掉老师的电脑然后窃取期末试题(玩笑话啊,不要当真),开始上菜。 MY Comp…
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论