Advertisement
Guest User

Untitled

a guest
May 25th, 2014
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.39 KB | None | 0 0
  1. public PlVers:__version =
  2. {
  3.     version = 5,
  4.     filevers = "1.5.3",
  5.     date = "05/23/2014",
  6.     time = "12:55:48"
  7. };
  8. new Float:NULL_VECTOR[3];
  9. new String:NULL_STRING[4];
  10. public Extension:__ext_core =
  11. {
  12.     name = "Core",
  13.     file = "core",
  14.     autoload = 0,
  15.     required = 0,
  16. };
  17. new MaxClients;
  18. public Extension:__ext_sdkhooks =
  19. {
  20.     name = "SDKHooks",
  21.     file = "sdkhooks.ext",
  22.     autoload = 1,
  23.     required = 1,
  24. };
  25. public Extension:__ext_sdktools =
  26. {
  27.     name = "SDKTools",
  28.     file = "sdktools.ext",
  29.     autoload = 1,
  30.     required = 1,
  31. };
  32. public Plugin:myinfo =
  33. {
  34.     name = "OperationL2P Flash Test",
  35.     description = "",
  36.     author = "OperationL2P.com",
  37.     version = "0.1",
  38.     url = ""
  39. };
  40. new Float:PositionLast[66][3];
  41. new bool:ClientView[66];
  42. new Float:ClientAngles[66][3];
  43. new Float:ClientOrigins[66][3];
  44. new bool_camDisable[66];
  45. new Float:ClientTargetAngles[66][3];
  46. new Float:ClientTargetOrigins[66][3];
  47. new String:ClientNadeName[66][64];
  48. new BeamSprite;
  49. new Handle:specTimers[66];
  50. public __ext_core_SetNTVOptional()
  51. {
  52.     MarkNativeAsOptional("GetFeatureStatus");
  53.     MarkNativeAsOptional("RequireFeature");
  54.     MarkNativeAsOptional("AddCommandListener");
  55.     MarkNativeAsOptional("RemoveCommandListener");
  56.     MarkNativeAsOptional("BfWriteBool");
  57.     MarkNativeAsOptional("BfWriteByte");
  58.     MarkNativeAsOptional("BfWriteChar");
  59.     MarkNativeAsOptional("BfWriteShort");
  60.     MarkNativeAsOptional("BfWriteWord");
  61.     MarkNativeAsOptional("BfWriteNum");
  62.     MarkNativeAsOptional("BfWriteFloat");
  63.     MarkNativeAsOptional("BfWriteString");
  64.     MarkNativeAsOptional("BfWriteEntity");
  65.     MarkNativeAsOptional("BfWriteAngle");
  66.     MarkNativeAsOptional("BfWriteCoord");
  67.     MarkNativeAsOptional("BfWriteVecCoord");
  68.     MarkNativeAsOptional("BfWriteVecNormal");
  69.     MarkNativeAsOptional("BfWriteAngles");
  70.     MarkNativeAsOptional("BfReadBool");
  71.     MarkNativeAsOptional("BfReadByte");
  72.     MarkNativeAsOptional("BfReadChar");
  73.     MarkNativeAsOptional("BfReadShort");
  74.     MarkNativeAsOptional("BfReadWord");
  75.     MarkNativeAsOptional("BfReadNum");
  76.     MarkNativeAsOptional("BfReadFloat");
  77.     MarkNativeAsOptional("BfReadString");
  78.     MarkNativeAsOptional("BfReadEntity");
  79.     MarkNativeAsOptional("BfReadAngle");
  80.     MarkNativeAsOptional("BfReadCoord");
  81.     MarkNativeAsOptional("BfReadVecCoord");
  82.     MarkNativeAsOptional("BfReadVecNormal");
  83.     MarkNativeAsOptional("BfReadAngles");
  84.     MarkNativeAsOptional("BfGetNumBytesLeft");
  85.     MarkNativeAsOptional("PbReadInt");
  86.     MarkNativeAsOptional("PbReadFloat");
  87.     MarkNativeAsOptional("PbReadBool");
  88.     MarkNativeAsOptional("PbReadString");
  89.     MarkNativeAsOptional("PbReadColor");
  90.     MarkNativeAsOptional("PbReadAngle");
  91.     MarkNativeAsOptional("PbReadVector");
  92.     MarkNativeAsOptional("PbReadVector2D");
  93.     MarkNativeAsOptional("PbGetRepeatedFieldCount");
  94.     MarkNativeAsOptional("PbReadRepeatedInt");
  95.     MarkNativeAsOptional("PbReadRepeatedFloat");
  96.     MarkNativeAsOptional("PbReadRepeatedBool");
  97.     MarkNativeAsOptional("PbReadRepeatedString");
  98.     MarkNativeAsOptional("PbReadRepeatedColor");
  99.     MarkNativeAsOptional("PbReadRepeatedAngle");
  100.     MarkNativeAsOptional("PbReadRepeatedVector");
  101.     MarkNativeAsOptional("PbReadRepeatedVector2D");
  102.     MarkNativeAsOptional("PbSetInt");
  103.     MarkNativeAsOptional("PbSetFloat");
  104.     MarkNativeAsOptional("PbSetBool");
  105.     MarkNativeAsOptional("PbSetString");
  106.     MarkNativeAsOptional("PbSetColor");
  107.     MarkNativeAsOptional("PbSetAngle");
  108.     MarkNativeAsOptional("PbSetVector");
  109.     MarkNativeAsOptional("PbSetVector2D");
  110.     MarkNativeAsOptional("PbAddInt");
  111.     MarkNativeAsOptional("PbAddFloat");
  112.     MarkNativeAsOptional("PbAddBool");
  113.     MarkNativeAsOptional("PbAddString");
  114.     MarkNativeAsOptional("PbAddColor");
  115.     MarkNativeAsOptional("PbAddAngle");
  116.     MarkNativeAsOptional("PbAddVector");
  117.     MarkNativeAsOptional("PbAddVector2D");
  118.     MarkNativeAsOptional("PbReadMessage");
  119.     MarkNativeAsOptional("PbReadRepeatedMessage");
  120.     MarkNativeAsOptional("PbAddMessage");
  121.     VerifyCoreVersion();
  122.     return 0;
  123. }
  124.  
  125. bool:StrEqual(String:str1[], String:str2[], bool:caseSensitive)
  126. {
  127.     return strcmp(str1, str2, caseSensitive) == 0;
  128. }
  129.  
  130. PrintToChatAll(String:format[])
  131. {
  132.     decl String:buffer[192];
  133.     new i = 1;
  134.     while (i <= MaxClients)
  135.     {
  136.         if (IsClientInGame(i))
  137.         {
  138.             SetGlobalTransTarget(i);
  139.             VFormat(buffer, 192, format, 2);
  140.             PrintToChat(i, "%s", buffer);
  141.             i++;
  142.         }
  143.         i++;
  144.     }
  145.     return 0;
  146. }
  147.  
  148. TE_WriteEncodedEnt(String:prop[], value)
  149. {
  150.     new encvalue = value & 4095 | 4096;
  151.     return TE_WriteNum(prop, encvalue);
  152. }
  153.  
  154. TE_SendToAll(Float:delay)
  155. {
  156.     new total;
  157.     new clients[MaxClients];
  158.     new i = 1;
  159.     while (i <= MaxClients)
  160.     {
  161.         if (IsClientInGame(i))
  162.         {
  163.             total++;
  164.             clients[total] = i;
  165.             i++;
  166.         }
  167.         i++;
  168.     }
  169.     return TE_Send(clients, total, delay);
  170. }
  171.  
  172. TE_SetupBeamFollow(EntIndex, ModelIndex, HaloIndex, Float:Life, Float:Width, Float:EndWidth, FadeLength, Color[4])
  173. {
  174.     TE_Start("BeamFollow");
  175.     TE_WriteEncodedEnt("m_iEntIndex", EntIndex);
  176.     TE_WriteNum("m_nModelIndex", ModelIndex);
  177.     TE_WriteNum("m_nHaloIndex", HaloIndex);
  178.     TE_WriteNum("m_nStartFrame", 0);
  179.     TE_WriteNum("m_nFrameRate", 0);
  180.     TE_WriteFloat("m_fLife", Life);
  181.     TE_WriteFloat("m_fWidth", Width);
  182.     TE_WriteFloat("m_fEndWidth", EndWidth);
  183.     TE_WriteNum("m_nFadeLength", FadeLength);
  184.     TE_WriteNum("r", Color[0]);
  185.     TE_WriteNum("g", Color[1]);
  186.     TE_WriteNum("b", Color[2]);
  187.     TE_WriteNum("a", Color[3]);
  188.     return 0;
  189. }
  190.  
  191. public OnMapStart()
  192. {
  193.     BeamSprite = PrecacheModel("materials/sprites/laserbeam.vmt", false);
  194.     return 0;
  195. }
  196.  
  197. public SaveTargetPosition(client)
  198. {
  199.     GetClientEyeAngles(client, ClientTargetAngles[client][0][0]);
  200.     GetClientAbsOrigin(client, ClientTargetOrigins[client][0][0]);
  201.     return 0;
  202. }
  203.  
  204. public LoadTargetPosition(client)
  205. {
  206.     TeleportEntity(client, ClientTargetOrigins[client][0][0], ClientTargetAngles[client][0][0], NULL_VECTOR);
  207.     return 0;
  208. }
  209.  
  210. public SavePosition(client)
  211. {
  212.     GetClientEyeAngles(client, ClientAngles[client][0][0]);
  213.     GetClientAbsOrigin(client, ClientOrigins[client][0][0]);
  214.     return 0;
  215. }
  216.  
  217. public LoadPosition(client)
  218. {
  219.     TeleportEntity(client, ClientOrigins[client][0][0], ClientAngles[client][0][0], NULL_VECTOR);
  220.     return 0;
  221. }
  222.  
  223. public StartView(client)
  224. {
  225.     if (!ClientView[client][0][0])
  226.     {
  227.         if (IsClientInGame(client))
  228.         {
  229.             LoadTargetPosition(client);
  230.         }
  231.         ClientView[client] = 1;
  232.     }
  233.     return 0;
  234. }
  235.  
  236. public StopView(client)
  237. {
  238.     if (ClientView[client][0][0])
  239.     {
  240.         if (IsClientInGame(client))
  241.         {
  242.             LoadPosition(client);
  243.         }
  244.         ClientView[client] = 0;
  245.     }
  246.     return 0;
  247. }
  248.  
  249. public OnPluginStart()
  250. {
  251.     RegConsoleCmd("sm_camera", ToggleViewCmd, "Toggle between regular and projectile view", 0);
  252.     HookEvent("weapon_fire", OnShot, EventHookMode:1);
  253.     HookEvent("player_spawned", OnPlayerSpawn, EventHookMode:1);
  254.     HookEvent("inspect_weapon", OnInspect, EventHookMode:1);
  255.     return 0;
  256. }
  257.  
  258. public OnClientDisconnect(client)
  259. {
  260.     StopView(client);
  261.     return 0;
  262. }
  263.  
  264. public IsGrenadeName(String:name[], String:postfix[])
  265. {
  266.     new String:buffer[64];
  267.     Format(buffer, 63, "%s%s", "hegrenade", postfix);
  268.     if (StrEqual(name, buffer, true))
  269.     {
  270.         return 1;
  271.     }
  272.     Format(buffer, 63, "%s%s", "smokegrenade", postfix);
  273.     if (StrEqual(name, buffer, true))
  274.     {
  275.         return 1;
  276.     }
  277.     Format(buffer, 63, "%s%s", "flashbang", postfix);
  278.     if (StrEqual(name, buffer, true))
  279.     {
  280.         return 1;
  281.     }
  282.     return 0;
  283. }
  284.  
  285. public OnEntityCreated(iEntity, String:classname[])
  286. {
  287.     if (IsGrenadeName(classname, "_projectile"))
  288.     {
  289.         SDKHook(iEntity, SDKHookType:24, OnEntitySpawned);
  290.     }
  291.     return 0;
  292. }
  293.  
  294. public OnEntitySpawned(iGrenade)
  295. {
  296.     new client = GetEntPropEnt(iGrenade, PropType:0, "m_hOwnerEntity", 0);
  297.     if (!bool_camDisable[client][0][0])
  298.     {
  299.         if (!ClientView[client][0][0])
  300.         {
  301.             SavePosition(client);
  302.             CreateTimer(0.1, StartViewAction, client, 0);
  303.         }
  304.         TeleportEntity(iGrenade, 12264, NULL_VECTOR, 12276);
  305.     }
  306.     TE_SetupBeamFollow(iGrenade, BeamSprite, 0, 20, 3, 3, 5, 12288);
  307.     TE_SendToAll(0);
  308.     return 0;
  309. }
  310.  
  311. public Action:StartViewAction(Handle:timer, client)
  312. {
  313.     StartView(client);
  314.     return Action:0;
  315. }
  316.  
  317. public Action:StopViewAction(Handle:timer, client)
  318. {
  319.     StopView(client);
  320.     specTimers[client] = 0;
  321.     return Action:0;
  322. }
  323.  
  324. public Action:GiveNade(Handle:timer, client)
  325. {
  326.     return Action:0;
  327. }
  328.  
  329. public OnPlayerSpawn(Handle:event, String:name[], bool:dontBroadcast)
  330. {
  331.     new client = GetClientOfUserId(GetEventInt(event, "userid"));
  332.     PrintToChatAll("Event: player_spawned");
  333.     if (IsClientInGame(client))
  334.     {
  335.         SetEntProp(client, PropType:1, "m_takedamage", any:0, 1, 0);
  336.     }
  337.     return 0;
  338. }
  339.  
  340. public OnShot(Handle:event, String:name[], bool:dontBroadcast)
  341. {
  342.     new client = GetClientOfUserId(GetEventInt(event, "userid"));
  343.     new String:weapon[32];
  344.     GetEventString(event, "weapon", weapon, 32);
  345.     if (!IsGrenadeName(weapon, ""))
  346.     {
  347.         SaveTargetPosition(client);
  348.     }
  349.     else
  350.     {
  351.         strcopy(ClientNadeName[client][0][0], 63, weapon);
  352.         CreateTimer(0.2, GiveNade, client, 0);
  353.     }
  354.     return 0;
  355. }
  356.  
  357. public OnInspect(Handle:event, String:name[], bool:dontBroadcast)
  358. {
  359.     new client = GetClientOfUserId(GetEventInt(event, "userid"));
  360.     if (ClientView[client][0][0])
  361.     {
  362.         specTimers[client] = CreateTimer(0.1, StopViewAction, client, 0);
  363.     }
  364.     return 0;
  365. }
  366.  
  367. public Action:ToggleViewCmd(client, args)
  368. {
  369.     if (IsValidClient(client))
  370.     {
  371.         bool_camDisable[client] = !bool_camDisable[client][0][0];
  372.         if (bool_camDisable[client][0][0])
  373.         {
  374.             PrintToChat(client, "%s", "Camera disabled");
  375.         }
  376.         else
  377.         {
  378.             PrintToChat(client, "%s", "Camera enabled");
  379.         }
  380.     }
  381.     else
  382.     {
  383.         PrintToChat(client, "", "access");
  384.     }
  385.     return Action:3;
  386. }
  387.  
  388. IsValidClient(client)
  389. {
  390.     if (client > 0)
  391.     {
  392.         return 1;
  393.     }
  394.     return 0;
  395. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement