culexor

Untitled

Jul 21st, 2012
485
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 17.27 KB | None | 0 0
  1. #include <sourcemod>
  2. #include <sdktools>
  3. #define MAXNPCS    3000
  4.  
  5. static String:NPCPath[128];
  6. static lastID = 0;
  7. static Entys[3000];
  8. public Plugin:myinfo =
  9. {
  10.     name = "Entity Locker",
  11.     author = "Krim - Editted by [GR]Nick",
  12.     description = "Saves Entitys",
  13.     version = "2.0",
  14.     url = "www.area51cheatserver.com"
  15. };
  16.  
  17.  
  18. public OnPluginStart()
  19. {
  20.     RegAdminCmd("sm_save", Command_Saveit, ADMFLAG_SLAY,"Point and Go :)");
  21.     RegAdminCmd("sm_changeskin", Command_Skin, ADMFLAG_SLAY, "Change Skin of a prop");
  22.     RegAdminCmd("sm_changecolor", Command_Color, ADMFLAG_SLAY, "Change Color of a prop");
  23.         RegAdminCmd("sm_remove", CommandRemoveEnt, ADMFLAG_SLAY,"Point and Go :)");
  24.         RegAdminCmd("sm_walkthru", Command_walkthru, ADMFLAG_SLAY,"Point and Go :)");
  25.  
  26.         PrintToServer("RP: Initializing Nicks Entity Restorer");
  27.     CreateConVar("rp_version", "1.3", "Nicks Entity Restorer Version",FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_UNLOGGED|FCVAR_DONTRECORD|FCVAR_REPLICATED|FCVAR_NOTIFY);
  28.         Command_lastID();
  29. }
  30.  
  31. stock LoadString(Handle:Vault, const String:Key[32], const String:SaveKey[255], const String:DefaultValue[255], String:Reference[255])
  32. {
  33.  
  34.     //Jump:
  35.     KvJumpToKey(Vault, Key, false);
  36.    
  37.     //Load:
  38.     KvGetString(Vault, SaveKey, Reference, 255, DefaultValue);
  39.  
  40.     //Rewind:
  41.     KvRewind(Vault);
  42. }
  43.  
  44. stock SaveString(Handle:Vault, const String:Key[32], const String:SaveKey[255], const String:Variable[255])
  45. {
  46.  
  47.     //Jump:
  48.     KvJumpToKey(Vault, Key, true);
  49.  
  50.     //Save:
  51.     KvSetString(Vault, SaveKey, Variable);
  52.  
  53.     //Rewind:
  54.     KvRewind(Vault);
  55. }
  56.  
  57. //Map Start:
  58. public OnMapStart()
  59. {
  60.     decl String:MapName[128], String:FinalPathF[128];
  61.     GetCurrentMap(MapName, 128);
  62.     Format(FinalPathF, sizeof(FinalPathF), "data/roleplay/%s/furni.txt", MapName);
  63.  
  64.         BuildPath(Path_SM, NPCPath, 128, FinalPathF);
  65.         if(FileExists(NPCPath) == false) PrintToConsole(0, "[SM] ERROR: Missing file '%s'", NPCPath);
  66.  
  67.     //Clear Data From Previous Maps:
  68.     for(new X = 0; X < 3000; X++)
  69.     {
  70.         Entys[X] = 0;
  71.     }
  72.  
  73.     CreateTimer(1.0, Command_drawItems);    
  74. }
  75.  
  76. public Action:Command_walkthru(Client,args)
  77. {
  78.     decl Ent;
  79.     Ent = GetClientAimTarget(Client, false);
  80.    
  81.     PrintToChat(Client,"Old Collision: %d",GetEntProp(Ent, Prop_Data, "m_CollisionGroup"));
  82.     if(Ent != -1 && Ent < 0 && Ent > GetMaxClients())
  83.     {
  84.         decl String:level[255];
  85.         GetCmdArg(1, level, sizeof(level));
  86.         SetEntProp(Ent, Prop_Data, "m_CollisionGroup", StringToInt(level));
  87.     }
  88.     return Plugin_Handled;
  89. }
  90.  
  91. public Action:Command_Saveit(Client,args)
  92. {
  93.     decl Ent;
  94.     Ent = GetClientAimTarget(Client, false);
  95.    
  96.     if(Ent != -1 && Ent > GetMaxClients())
  97.     {
  98.         decl String:modelname[128];
  99.         decl String:Buffers[7][128];    
  100.         decl Float:Origin[3];
  101.         decl Float:Angels[3];
  102.         decl String:SaveBuffer[255];
  103.        
  104.         GetEntPropString(Ent, Prop_Data, "m_ModelName", modelname, 128);
  105.         if(strlen(modelname) < 5)
  106.         {
  107.             PrintToChat(Client,"[RP]: Model doesnt seem to be correct: %s",modelname);
  108.             return Plugin_Handled;
  109.         }
  110.        
  111.         GetEntPropVector(Ent, Prop_Data, "m_vecOrigin", Origin);
  112.         GetEntPropVector(Ent, Prop_Data, "m_angRotation", Angels);
  113.        
  114.        
  115.         IntToString(RoundFloat(Origin[0]), Buffers[0], 32);  
  116.         IntToString(RoundFloat(Origin[1]), Buffers[1], 32);
  117.         IntToString(RoundFloat(Origin[2]), Buffers[2], 32);
  118.         IntToString(RoundFloat(Angels[0]), Buffers[4], 32);
  119.         IntToString(RoundFloat(Angels[1]), Buffers[5], 32);
  120.         IntToString(RoundFloat(Angels[2]), Buffers[6], 32);    
  121.         Buffers[3] = modelname;
  122.        
  123.     lastID++;
  124.  
  125.         ImplodeStrings(Buffers, 7, " ", SaveBuffer, 255);
  126.  
  127.         decl String:NPCId[255];
  128.         IntToString(lastID, NPCId, 255);
  129.    
  130.         decl String:NPCType[32];
  131.         NPCType = "Furn";
  132.  
  133.     decl String:Props[255];
  134.  
  135.     decl Handle:Vault;
  136.     Vault = CreateKeyValues("Vault");
  137.     FileToKeyValues(Vault, NPCPath);
  138.         LoadString(Vault, NPCType, NPCId, "Null", Props);
  139.  
  140.         if(StrEqual(Props, "Null", false))
  141.         {
  142.             SaveString(Vault, "Furn", NPCId, SaveBuffer);
  143.             KeyValuesToFile(Vault, NPCPath);
  144.             CloseHandle(Vault);
  145.  
  146.             SetEntProp(Ent, Prop_Data, "m_takedamage", 0, 1);  
  147.         AcceptEntityInput(Ent, "DisableMotion");
  148.        
  149.             Entys[Ent] = lastID;
  150.         PrintToChat(Client,"[RP]: Save #%i: Properties: %s",lastID,SaveBuffer);
  151.         return Plugin_Handled;
  152.     }
  153.     //PrintToChat(Client, "[RP] Detected Already Used ID. Finding another open ID.");
  154.     CloseHandle(Vault);
  155.     WriteID(Client, SaveBuffer, Ent);
  156.     return Plugin_Handled;
  157.     }
  158.     PrintToChat(Client, "[RP] Error. Invalid Entity.");
  159.     return Plugin_Handled;
  160. }
  161.  
  162. stock WriteID(Client, String:SaveBuffer2[255], Ent)
  163. {
  164.     lastID++;
  165.         decl String:NPCId[255];
  166.         IntToString(lastID, NPCId, 255);
  167.    
  168.         decl String:NPCType[32];
  169.         NPCType = "Furn";
  170.  
  171.     decl String:Props[255];
  172.  
  173.     decl Handle:Vault;
  174.     Vault = CreateKeyValues("Vault");
  175.     FileToKeyValues(Vault, NPCPath);
  176.         LoadString(Vault, NPCType, NPCId, "Null", Props);
  177.  
  178.         if(StrEqual(Props, "Null", false))
  179.         {
  180.             SaveString(Vault, "Furn", NPCId, SaveBuffer2);
  181.             KeyValuesToFile(Vault, NPCPath);
  182.             CloseHandle(Vault);
  183.  
  184.             SetEntProp(Ent, Prop_Data, "m_takedamage", 0, 1);
  185.         AcceptEntityInput(Ent, "DisableMotion");
  186.        
  187.             Entys[Ent] = lastID;
  188.         PrintToChat(Client, "[RP]: Save #%i: Properties: %s",lastID,SaveBuffer2);
  189.     }
  190.     else
  191.     {
  192.         CloseHandle(Vault);
  193.         WriteID(Client, SaveBuffer2, Ent);
  194.     }
  195. }
  196.  
  197. public bool:Command_lastID()
  198. {
  199.     decl Handle:Vault;
  200.  
  201.     //Initialize:
  202.     Vault = CreateKeyValues("Vault");
  203.  
  204.     //Retrieve:
  205.     FileToKeyValues(Vault, NPCPath);
  206.    
  207.     new Y = 0;
  208.     decl String:Temp[15];
  209.    
  210.     KvJumpToKey(Vault, "Furn", true);
  211.     KvGotoFirstSubKey(Vault,false);
  212.     do
  213.     {
  214.     KvGetSectionName(Vault, Temp, 15);
  215.     Y = StringToInt(Temp);
  216.     if(Y > lastID) lastID = Y;
  217.            
  218.     } while (KvGotoNextKey(Vault,false));
  219.    
  220.     PrintToServer("RP: new lastID: #%d",lastID);
  221.     CloseHandle(Vault);
  222.     return true;
  223. }
  224.  
  225. public Action:Command_drawItems(Handle:Timer, any:Value)
  226. {
  227.     PrintToServer("RP: Loading Entities...");
  228.     decl Handle:Vault;
  229.     decl String:Props[255];
  230.  
  231.     //Initialize:
  232.     Vault = CreateKeyValues("Vault");
  233.  
  234.     //Retrieve:
  235.     FileToKeyValues(Vault, NPCPath);
  236.    
  237.     new loadArray[2000] = 0;
  238.     decl String:Temp[15];
  239.    
  240.     //Select Loader
  241.     new Y = 0;
  242.     KvJumpToKey(Vault, "Furn", true);
  243.     KvGotoFirstSubKey(Vault,false);
  244.     do
  245.     {
  246.     KvGetSectionName(Vault, Temp, 15);
  247.     loadArray[Y] = StringToInt(Temp);  
  248.     Y++;
  249.  
  250.     } while (KvGotoNextKey(Vault,false));
  251.    
  252.     PrintToServer("RP: Found %d Entities",Y-1);
  253.     KvRewind(Vault);
  254.        
  255.     //Load:
  256.     for(new X = 0; X < Y; X++)
  257.     {
  258.         if(loadArray[X] == 0)
  259.         {
  260.             PrintToServer("RP: Error at Entity #%d",X);
  261.             CloseHandle(Vault);
  262.             return Plugin_Handled;
  263.         }
  264.            
  265.         //Declare:
  266.         decl String:NPCId[255];
  267.                
  268.         //Convert:
  269.         IntToString(loadArray[X], NPCId, 255);
  270.        
  271.         //Declare:
  272.         decl String:NPCType[32];
  273.  
  274.         //Convert:
  275.         NPCType = "Furn";
  276.  
  277.         //Extract:
  278.         LoadString(Vault, NPCType, NPCId, "Null", Props);
  279.        
  280.         //Found in DB:
  281.         if(StrContains(Props, "Null", false) == -1)
  282.         {
  283.             decl Ent;
  284.             decl String:Buffer[7][255];
  285.             decl Float:FurnitureOrigin[3];
  286.             decl Float:Angels[3];
  287.            
  288.              //Explode:
  289.             ExplodeString(Props, " ", Buffer, 7, 255);
  290.            
  291.             FurnitureOrigin[0] = StringToFloat(Buffer[0]);
  292.             FurnitureOrigin[1] = StringToFloat(Buffer[1]);
  293.             FurnitureOrigin[2] = StringToFloat(Buffer[2]);
  294.             Angels[0] = StringToFloat(Buffer[4]);
  295.             Angels[1] = StringToFloat(Buffer[5]);
  296.             Angels[2] = StringToFloat(Buffer[6]);
  297.            
  298.             if(strlen(Buffer[3]) > 5)
  299.             {
  300.                 //PrintToChat(Client,"[IMPORT]: %i %s",X,Buffer[3]);  
  301.                 PrecacheModel(Buffer[3],true);
  302.                 Ent = CreateEntityByName("prop_physics_override");
  303.                 DispatchKeyValue(Ent, "model", Buffer[3]);
  304.                 DispatchSpawn(Ent);
  305.                
  306.                 //PrintToServer("KER: Loaded %d",loadArray[X]);
  307.                 TeleportEntity(Ent, FurnitureOrigin, Angels, NULL_VECTOR);
  308.                 SetEntProp(Ent, Prop_Data, "m_takedamage", 0, 1);
  309.                 AcceptEntityInput(Ent, "DisableMotion");
  310.             SetEntProp(Ent, Prop_Data, "m_CollisionGroup", 0);
  311.                
  312.                 Entys[Ent] = loadArray[X];
  313.  
  314.             //Skins Addition:
  315.             decl SkinNumber;
  316.             KvJumpToKey(Vault, "Skins", false);
  317.             SkinNumber = KvGetNum(Vault, NPCId, 0);
  318.             decl String:SkinString[25];
  319.             IntToString(SkinNumber, SkinString, 25);
  320.             DispatchKeyValue(Ent, "skin", SkinString);
  321.             KvRewind(Vault);
  322.  
  323.             //Color Addition:
  324.             decl String:RGBAString[255], String:RGBAparts[4][25];
  325.             LoadString(Vault, "Color", NPCId, "Null", RGBAString);
  326.                 if(StrContains(RGBAString, "Null", false) == -1)
  327.                 {
  328.             ExplodeString(RGBAString, " ", RGBAparts, 4, 25);
  329.             decl Red, Green, Blue, Alpha;
  330.             Red = StringToInt(RGBAparts[0]);
  331.             Green = StringToInt(RGBAparts[1]);
  332.             Blue = StringToInt(RGBAparts[2]);
  333.             Alpha = StringToInt(RGBAparts[3]);
  334.             SetEntityRenderMode(Ent, RENDER_GLOW);
  335.             SetEntityRenderColor(Ent, Red, Green, Blue, Alpha);
  336.             }
  337.             } else
  338.             {
  339.                 PrintToServer("RP: Entry %d can not be a valid model",loadArray[X]);
  340.             }
  341.         }
  342.     }
  343.     PrintToServer("RP: All Entities loaded");
  344.     CloseHandle(Vault);
  345.     return Plugin_Handled;
  346. }
  347.  
  348. public Action:CommandRemoveEnt(Client, Args)
  349. {
  350.     decl Ent;
  351.     Ent = GetClientAimTarget(Client, false);
  352.    
  353.     if(Ent != -1 && Ent > 0 && Ent > GetMaxClients())
  354.     {
  355.         if(Entys[Ent])
  356.         {
  357.             //Vault:
  358.             decl bool:Deleted;
  359.             decl Handle:Vault;
  360.             Vault = CreateKeyValues("Vault");
  361.  
  362.             //Retrieve:
  363.             FileToKeyValues(Vault, NPCPath);
  364.  
  365.             decl String:Buffer[20];
  366.             IntToString(Entys[Ent],Buffer,20);
  367.            
  368.             //Delete:
  369.             KvJumpToKey(Vault, "Furn", false);
  370.             Deleted = KvDeleteKey(Vault, Buffer);
  371.             KvRewind(Vault);
  372.  
  373.             KvJumpToKey(Vault, "Skins", false);
  374.             KvDeleteKey(Vault, Buffer);
  375.             KvRewind(Vault);
  376.  
  377.             KvJumpToKey(Vault, "Color", false);
  378.             KvDeleteKey(Vault, Buffer);
  379.             KvRewind(Vault);
  380.  
  381.             //Store:
  382.             KeyValuesToFile(Vault, NPCPath);
  383.  
  384.             //Print:
  385.             if(!Deleted) PrintToConsole(Client, "[RP] Failed to remove Entity %d from the database", Entys[Ent]);
  386.             else
  387.             {
  388.                 //Print:
  389.                 PrintToConsole(Client, "[RP] Removed Entity %d from the database", Entys[Ent]);
  390.         Entys[Ent] = 0;
  391.                 RemoveEdict(Ent);
  392.             }
  393.  
  394.             //Close:
  395.             CloseHandle(Vault);
  396.         }
  397.     }
  398.  
  399.     //Return:
  400.     return Plugin_Handled;
  401. }
  402.  
  403. public Action:Command_Skin(Client,args)
  404. {
  405.     if(Client == 0) return Plugin_Handled;
  406.  
  407.     if(args < 1)
  408.     {
  409.         PrintToConsole(Client, "[RP] Usage: sm_changeskin <skin number> <opt 0|1 save>");
  410.         return Plugin_Handled;
  411.     }
  412.     else if(args == 1)
  413.     {
  414.         decl String:Arg1[25];
  415.  
  416.         GetCmdArg(1, Arg1, sizeof(Arg1));
  417.  
  418.         decl Var;
  419.         Var = StringToInt(Arg1);
  420.         if(Var < 0)
  421.         {
  422.             PrintToChat(Client, "[RP] Usage: sm_changeskin <skin number> <opt 0|1 save>");
  423.             return Plugin_Handled;
  424.         }
  425.         decl Ent;
  426.         Ent = GetClientAimTarget(Client, false);
  427.    
  428.         if(Ent != -1 && Ent > 0 && Ent > GetMaxClients())
  429.         {
  430.             DispatchKeyValue(Ent, "skin", Arg1);
  431.             PrintToChat(Client, "[RP] Changed Skin temporarily to #%s", Arg1);
  432.             return Plugin_Handled;
  433.         }
  434.         PrintToChat(Client, "[RP] Could not locate a prop.");
  435.         return Plugin_Handled;
  436.     }
  437.     else if(args > 1)
  438.     {
  439.         decl String:Arg1[25], String:Arg2[25];
  440.  
  441.         GetCmdArg(1, Arg1, sizeof(Arg1));
  442.         GetCmdArg(2, Arg2, sizeof(Arg2));
  443.  
  444.         decl Var, Var2;
  445.         Var = StringToInt(Arg1);
  446.         Var2 = StringToInt(Arg2);
  447.         if(Var < 0)
  448.         {
  449.             PrintToChat(Client, "[RP] Usage: sm_changeskin <skin number> <opt 0|1 save>");
  450.             return Plugin_Handled;
  451.         }
  452.         decl Ent;
  453.         Ent = GetClientAimTarget(Client, false);
  454.    
  455.         if(Ent != -1 && Ent > 0 && Ent > GetMaxClients())
  456.         {
  457.             DispatchKeyValue(Ent, "skin", Arg1);
  458.             if(Var2 > 0)
  459.             {
  460.                 if(Entys[Ent] < 1)
  461.                 {
  462.                     PrintToChat(Client, "[RP] This prop must be saved first before you save its skin");
  463.                     return Plugin_Handled;
  464.                 }
  465.                 DispatchKeyValue(Ent, "skin", Arg1);
  466.                 PrintToChat(Client, "[RP] Changed Skin to #%s and is saved", Arg1);
  467.                 decl Handle:Vault;
  468.                 Vault = CreateKeyValues("Vault");
  469.                 FileToKeyValues(Vault, NPCPath);
  470.                 KvJumpToKey(Vault, "Skins", true);
  471.  
  472.                 decl String:EntyString[25];
  473.                 IntToString(Entys[Ent], EntyString, 25);
  474.                 if(Var == 0)
  475.                 {
  476.                     KvDeleteKey(Vault, EntyString);
  477.                 }
  478.                 else if(Var > 0)
  479.                 {
  480.                     KvSetNum(Vault, EntyString, Var);
  481.                 }
  482.                 KvRewind(Vault);
  483.                 KeyValuesToFile(Vault, NPCPath);
  484.                 CloseHandle(Vault);
  485.                 return Plugin_Handled;
  486.             }
  487.             else
  488.             {
  489.                 DispatchKeyValue(Ent, "skin", Arg1);
  490.                 PrintToChat(Client, "[RP] Changed Skin temporarily to #%s", Arg1);
  491.                 return Plugin_Handled;
  492.             }
  493.         }
  494.         PrintToChat(Client, "[RP] Could not locate a prop.");
  495.         return Plugin_Handled;
  496.     }
  497.     return Plugin_Handled;
  498. }
  499.  
  500. public Action:Command_Color(Client,args)
  501. {
  502.     if(Client == 0) return Plugin_Handled;
  503.  
  504.     if(args < 4)
  505.     {
  506.         PrintToConsole(Client, "[RP] Usage: sm_changecolor <Red 0-255> <Green 0-255> <Blue 0-255> <Alpha 0-255> <opt 0|1 save>");
  507.         return Plugin_Handled;
  508.     }
  509.     else if(args == 4)
  510.     {
  511.         decl String:Arg1[25], String:Arg2[25], String:Arg3[25], String:Arg4[25];
  512.  
  513.         GetCmdArg(1, Arg1, sizeof(Arg1));
  514.         GetCmdArg(2, Arg2, sizeof(Arg2));
  515.         GetCmdArg(3, Arg3, sizeof(Arg3));
  516.         GetCmdArg(4, Arg4, sizeof(Arg4));
  517.  
  518.         decl Var, Var2, Var3, Var4;
  519.         Var = StringToInt(Arg1);
  520.         Var2 = StringToInt(Arg2);
  521.         Var3 = StringToInt(Arg3);
  522.         Var4 = StringToInt(Arg4);
  523.         if(Var < 0 || Var > 255 || Var2 < 0 || Var2 > 255 || Var3 < 0 || Var3 > 255 || Var4 < 0 || Var4 > 255)
  524.         {
  525.             PrintToChat(Client, "[RP] Usage: sm_changecolor <Red 0-255> <Green 0-255> <Blue 0-255> <Alpha 0-255> <opt 0|1 save>");
  526.             return Plugin_Handled;
  527.         }
  528.         decl Ent;
  529.         Ent = GetClientAimTarget(Client, false);
  530.    
  531.         if(Ent != -1 && Ent > 0 && Ent > GetMaxClients())
  532.         {
  533.             SetEntityRenderMode(Ent, RENDER_GLOW);
  534.             SetEntityRenderColor(Ent, Var, Var2, Var3, Var4);
  535.             PrintToChat(Client, "[RP] Changed Color temporarily to Red=%d Green=%d Blue=%d Alpha=%d", Var, Var2, Var3, Var4);
  536.             return Plugin_Handled;
  537.         }
  538.         PrintToChat(Client, "[RP] Could not locate a prop.");
  539.         return Plugin_Handled;
  540.     }
  541.     else if(args > 4)
  542.     {
  543.         decl String:Arg1[25], String:Arg2[25], String:Arg3[25], String:Arg4[25], String:Arg5[25];
  544.  
  545.         GetCmdArg(1, Arg1, sizeof(Arg1));
  546.         GetCmdArg(2, Arg2, sizeof(Arg2));
  547.         GetCmdArg(3, Arg3, sizeof(Arg3));
  548.         GetCmdArg(4, Arg4, sizeof(Arg4));
  549.         GetCmdArg(5, Arg5, sizeof(Arg5));
  550.  
  551.         decl Var, Var2, Var3, Var4, Var5;
  552.         Var = StringToInt(Arg1);
  553.         Var2 = StringToInt(Arg2);
  554.         Var3 = StringToInt(Arg3);
  555.         Var4 = StringToInt(Arg4);
  556.         Var5 = StringToInt(Arg5);
  557.  
  558.         if(Var < 0 || Var > 255 || Var2 < 0 || Var2 > 255 || Var3 < 0 || Var3 > 255 || Var4 < 0 || Var4 > 255)
  559.         {
  560.             PrintToChat(Client, "[RP] Usage: sm_changecolor <Red 0-255> <Green 0-255> <Blue 0-255> <Alpha 0-255> <opt 0|1 save>");
  561.             return Plugin_Handled;
  562.         }
  563.         decl Ent;
  564.         Ent = GetClientAimTarget(Client, false);
  565.    
  566.         if(Ent != -1 && Ent > 0 && Ent > GetMaxClients())
  567.         {
  568.             DispatchKeyValue(Ent, "skin", Arg1);
  569.             if(Var5 > 0)
  570.             {
  571.                 if(Entys[Ent] < 1)
  572.                 {
  573.                     PrintToChat(Client, "[RP] This prop must be saved first before you save its color/alpha");
  574.                     return Plugin_Handled;
  575.                 }
  576.                 SetEntityRenderMode(Ent, RENDER_GLOW);
  577.                 SetEntityRenderColor(Ent, Var, Var2, Var3, Var4);
  578.                 PrintToChat(Client, "[RP] Changed Color to Red=%d Green=%d Blue=%d Alpha=%d and is saved.", Var, Var2, Var3, Var4);
  579.                 decl Handle:Vault;
  580.                 Vault = CreateKeyValues("Vault");
  581.                 FileToKeyValues(Vault, NPCPath);
  582.                 KvJumpToKey(Vault, "Color", true);
  583.  
  584.                 decl String:EntyString[25];
  585.                 IntToString(Entys[Ent], EntyString, 25);
  586.  
  587.                 decl String:RGBA[255];
  588.                 Format(RGBA, 255, "%d %d %d %d", Var, Var2, Var3, Var4);
  589.  
  590.                 if(Var == 255 && Var2 == 255 && Var3 == 255 && Var4 == 255)
  591.                 {
  592.                     KvDeleteKey(Vault, EntyString);
  593.                 }
  594.                 else if(Var < 255 || Var2 < 255 || Var3 < 255 || Var4 < 255)
  595.                 {
  596.                     KvSetString(Vault, EntyString, RGBA);
  597.                 }
  598.                 KvRewind(Vault);
  599.                 KeyValuesToFile(Vault, NPCPath);
  600.                 CloseHandle(Vault);
  601.                 return Plugin_Handled;
  602.             }
  603.             else
  604.             {
  605.                 SetEntityRenderMode(Ent, RENDER_GLOW);
  606.                 SetEntityRenderColor(Ent, Var, Var2, Var3, Var4);
  607.                 PrintToChat(Client, "[RP] Changed Color temporarily to Red=%d Green=%d Blue=%d Alpha=%d", Var, Var2, Var3, Var4);
  608.                 return Plugin_Handled;
  609.             }
  610.         }
  611.         PrintToChat(Client, "[RP] Could not locate a prop.");
  612.         return Plugin_Handled;
  613.     }
  614.     return Plugin_Handled;
  615. }
Advertisement
Add Comment
Please, Sign In to add comment