Advertisement
FlacoBey

Untitled

Jul 16th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.69 KB | None | 0 0
  1. #pragma newdecls required
  2. #pragma semicolon 1
  3.  
  4. #define CONFIG_NAME "data/random_weapon.ini"
  5. #define MAXLIST 26
  6.  
  7. #include <sourcemod>
  8. #include <sdktools>
  9.  
  10. static int gItemsChances[MAXLIST + 11] =
  11. {
  12.     0,
  13.     0,
  14.     0,
  15.     0,
  16.     0,
  17.     0,
  18.     0,
  19.     0,
  20.     0,
  21.     0,
  22.     0,
  23.     0,
  24.     0,
  25.     0,
  26.     0,
  27.     0,
  28.     0,
  29.     0,
  30.     0,
  31.     0,
  32.     0,
  33.     0,
  34.     0,
  35.     0,
  36.     0,
  37.     0,
  38.     0,
  39.     0,
  40.     0,
  41.     0,
  42.     0,
  43.     0,
  44.     0,
  45.     0,
  46.     0,
  47.     0,
  48.     0
  49. };
  50.  
  51. static const char gWeaponReplace[61][] =
  52. {
  53.     "weapon_autoshotgun",  
  54.     "weapon_first_aid_kit",
  55.     "weapon_pipe_bomb",    
  56.     "weapon_molotov",      
  57.     "weapon_rifle",        
  58.     "weapon_hunting_rifle",
  59.     "weapon_pain_pills",   
  60.     "weapon_pistol",       
  61.     "weapon_adrenaline",   
  62.     "weapon_smg_mp5",      
  63.     "weapon_smg",          
  64.     "weapon_smg_silenced"
  65.     "weapon_pumpshotgun",  
  66.     "weapon_shotgun_chrome",
  67.     "weapon_rifle_m60",    
  68.     "weapon_shotgun_spas"
  69.     "weapon_sniper_military",
  70.     "weapon_rifle_ak47",   
  71.     "weapon_rifle_desert"
  72.     "weapon_sniper_awp",   
  73.     "weapon_rifle_sg552",  
  74.     "weapon_sniper_scout"
  75.     "weapon_grenade_launcher",
  76.     "weapon_pistol_magnum",
  77.     "weapon_vomitjar",     
  78.     "weapon_defibrillator",
  79.     "weapon_spawn",
  80.     "weapon_item_spawn",
  81.     "weapon_autoshotgun_spawn",    
  82.     "weapon_first_aid_kit_spawn",  
  83.     "weapon_pipe_bomb_spawn",      
  84.     "weapon_molotov_spawn",        
  85.     "weapon_rifle_spawn",          
  86.     "weapon_hunting_rifle_spawn",  
  87.     "weapon_pain_pills_spawn",     
  88.     "weapon_pistol_spawn",         
  89.     "weapon_adrenaline_spawn",     
  90.     "weapon_smg_mp5_spawn",        
  91.     "weapon_smg_spawn",            
  92.     "weapon_smg_silenced_spawn",   
  93.     "weapon_pumpshotgun_spawn",    
  94.     "weapon_shotgun_chrome_spawn"
  95.     "weapon_rifle_m60_spawn",      
  96.     "weapon_shotgun_spas_spawn",   
  97.     "weapon_sniper_military_spawn",
  98.     "weapon_rifle_ak47_spawn",     
  99.     "weapon_rifle_desert_spawn",   
  100.     "weapon_sniper_awp_spawn",     
  101.     "weapon_rifle_sg552_spawn",    
  102.     "weapon_sniper_scout_spawn",   
  103.     "weapon_grenade_launcher_spawn",
  104.     "weapon_pistol_magnum_spawn",  
  105.     "weapon_vomitjar_spawn",       
  106.     "weapon_defibrillator_spawn",
  107.     "weapon_melee_spawn",
  108.     "weapon_ammo_spawn",
  109.     "weapon_smg_mp5",
  110.     "weapon_smg_silenced",
  111.     "weapon_smg",
  112.     "weapon_smoker_claw",
  113.     "weapon_sniper_awp"
  114. };
  115.  
  116. static const char gModelsItemsList[MAXLIST + 11][] =
  117. {
  118.     "models/w_models/weapons/w_autoshot_m4super.mdl",   //0
  119.     "models/w_models/weapons/w_eq_Medkit.mdl",          //1
  120.     "models/w_models/weapons/w_eq_pipebomb.mdl",        //2
  121.     "models/w_models/weapons/w_eq_molotov.mdl",         //3
  122.     "models/w_models/weapons/w_rifle_m16a2.mdl",        //4
  123.     "models/w_models/weapons/w_sniper_mini14.mdl",      //5
  124.     "models/w_models/weapons/w_eq_painpills.mdl",       //6
  125.     "models/w_models/weapons/w_pistol_a.mdl",           //7
  126.     "models/w_models/weapons/w_eq_adrenaline.mdl",      //8
  127.     "models/w_models/weapons/w_smg_mp5.mdl",            //9
  128.     "models/w_models/weapons/w_smg_uzi.mdl",            //10
  129.     "models/w_models/weapons/w_smg_a.mdl",              //11
  130.     "models/w_models/weapons/w_shotgun.mdl",            //12
  131.     "models/w_models/weapons/w_pumpshotgun_a.mdl",      //13
  132.     "models/w_models/weapons/w_m60.mdl",                //14
  133.     "models/w_models/weapons/w_shotgun_spas.mdl",       //15
  134.     "models/w_models/weapons/w_sniper_military.mdl",    //16
  135.     "models/w_models/weapons/w_rifle_ak47.mdl",         //17
  136.     "models/w_models/weapons/w_desert_rifle.mdl",       //18
  137.     "models/w_models/weapons/w_sniper_awp.mdl",         //19
  138.     "models/w_models/weapons/w_rifle_sg552.mdl",        //20
  139.     "models/w_models/weapons/w_sniper_scout.mdl",       //21
  140.     "models/w_models/weapons/w_grenade_launcher.mdl",   //22
  141.     "models/w_models/weapons/w_desert_eagle.mdl",       //23
  142.     "models/w_models/weapons/w_eq_bile_flask.mdl",      //24
  143.     "models/w_models/weapons/w_eq_defibrillator.mdl",   //25
  144.     "models/weapons/melee/v_fireaxe.mdl",               //26
  145.     "models/weapons/melee/v_frying_pan.mdl",            //27
  146.     "models/weapons/melee/v_machete.mdl",               //28
  147.     "models/weapons/melee/v_bat.mdl",                   //29
  148.     "models/weapons/melee/v_crowbar.mdl",               //30
  149.     "models/weapons/melee/v_cricket_bat.mdl",           //31
  150.     "models/weapons/melee/v_tonfa.mdl",                 //32
  151.     "models/weapons/melee/v_katana.mdl",                //33
  152.     "models/weapons/melee/v_electric_guitar.mdl",       //34
  153.     "models/weapons/melee/v_golfclub.mdl",              //35
  154.     "models/v_models/v_knife_t.mdl"                     //36
  155. };
  156.  
  157. static const char gItemsList[MAXLIST + 11][] =
  158. {
  159.     "weapon_autoshotgun",      
  160.     "weapon_first_aid_kit",    
  161.     "weapon_pipe_bomb",        
  162.     "weapon_molotov",          
  163.     "weapon_rifle",            
  164.     "weapon_hunting_rifle",    
  165.     "weapon_pain_pills",       
  166.     "weapon_pistol",           
  167.     "weapon_adrenaline",       
  168.     "weapon_smg_mp5",          
  169.     "weapon_smg",              
  170.     "weapon_smg_silenced",     
  171.     "weapon_pumpshotgun",      
  172.     "weapon_shotgun_chrome",   
  173.     "weapon_rifle_m60",        
  174.     "weapon_shotgun_spas",     
  175.     "weapon_sniper_military",  
  176.     "weapon_rifle_ak47",       
  177.     "weapon_rifle_desert",     
  178.     "weapon_sniper_awp",       
  179.     "weapon_rifle_sg552",      
  180.     "weapon_sniper_scout",     
  181.     "weapon_grenade_launcher"
  182.     "weapon_pistol_magnum",    
  183.     "weapon_vomitjar",         
  184.     "weapon_defibrillator",    
  185.     "fireaxe",
  186.     "frying_pan",
  187.     "machete",
  188.     "baseball_bat",
  189.     "crowbar",
  190.     "cricket_bat",
  191.     "tonfa",
  192.     "katana",
  193.     "electric_guitar",
  194.     "golfclub",
  195.     "knife"
  196. };
  197.  
  198. public void OnPluginStart()
  199. {
  200.     LoadPercents();
  201.     RegConsoleCmd("sm_sss", gs);
  202.     HookEvent("round_start", Random);
  203. }
  204.  
  205. public Action Random(Event event, const char[] name, bool dontbroadcast)
  206. {
  207.     char sClassName[64], szModelName[128];
  208.     int iRandom, iWeight, iItem;
  209.     float vPos[3], vAng[3];
  210.  
  211.     for(int i = MaxClients; i <= 2048; i++)
  212.     {
  213.         if(IsValidEntity(i))
  214.         {
  215.             GetEntityClassname(i, sClassName, sizeof sClassName);
  216.             for(int l; l < sizeof gWeaponReplace; l++)
  217.             {
  218.                 if(strcmp(sClassName, gWeaponReplace[l]) == 0 && (GetEntPropEnt(i, Prop_Data, "m_hOwnerEntity")) < 1)
  219.                 {
  220.                     GetEntPropString(i, Prop_Data, "m_ModelName", szModelName, sizeof szModelName);
  221.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vPos);
  222.                     GetEntPropVector(i, Prop_Send, "m_angRotation", vAng);
  223.                    
  224.                     vPos[2] += 1;
  225.                     iRandom = GetRandomInt(0, sizeof gItemsList - 1);
  226.                     iWeight = GetRandomInt(1, 100);
  227.                     if (iWeight <= gItemsChances[iRandom])
  228.                     {
  229.                        
  230.                         iItem = CreateEntityByName(gItemsList[iRandom]);
  231.                         if(IsValidEntity(iItem))
  232.                         {
  233.                             TeleportEntity(iItem, vPos, vAng, NULL_VECTOR);
  234.                             DispatchSpawn(iItem);
  235.  
  236.                             if(!IsModelPrecached(szModelName)) PrecacheModel(szModelName, true);
  237.                            
  238.                             SetEntityModel(iItem, gModelsItemsList[iRandom]);
  239.                         }
  240.                         else
  241.                         {
  242.                             SpawnMelee(gItemsList[iRandom], vPos, vAng);
  243.                         }
  244.                     }
  245.                     AcceptEntityInput(i, "kill");
  246.                 }
  247.             }
  248.         }
  249.     }
  250. }
  251.  
  252. public Action gs(int client, int args)
  253. {
  254.     for( int i; i < sizeof gItemsChances; i++ )
  255.     {
  256.         PrintToChatAll("%i", gItemsChances[i]);
  257.     }
  258. }
  259.  
  260. void LoadPercents()
  261. {  
  262.     char sPath[PLATFORM_MAX_PATH];
  263.     BuildPath(Path_SM, sPath, sizeof(sPath), CONFIG_NAME);
  264.     KeyValues hFile = new KeyValues("OA-ECP-34-12-FAN-SJGFA-JSDA-DN2-SDJASD-SDJ-0x94");
  265.     if(!FileExists(sPath))
  266.     {
  267.         File hCfg = OpenFile(sPath, "w");
  268.         hCfg.WriteLine("");
  269.         delete hCfg;
  270.        
  271.         if(KvJumpToKey(hFile, "weapons", true))
  272.         {
  273.             for( int i; i < MAXLIST + 11; i++ )
  274.                 hFile.SetNum(gItemsList[i], 0);
  275.  
  276.         }
  277.         hFile.Rewind();
  278.         hFile.ExportToFile(sPath);
  279.         LoadPercents();
  280.     }
  281.     else
  282.     {
  283.         if(hFile.ImportFromFile(sPath))
  284.         {
  285.             if(KvJumpToKey(hFile, "weapons", true))
  286.                 for( int i; i < MAXLIST + 11; i++ )
  287.                     gItemsChances[i] = hFile.GetNum(gItemsList[i]);
  288.         }
  289.        
  290.     }
  291.     delete hFile;
  292. }
  293.  
  294. void SpawnMelee(const char[] Melee, float origin[3], float angles[3])
  295. {
  296.     int iWeapon = CreateEntityByName("weapon_melee");
  297.  
  298.     if (IsValidEntity(iWeapon))
  299.     {
  300.         DispatchKeyValue(iWeapon, "melee_script_name", Melee);
  301.  
  302.         DispatchSpawn(iWeapon);
  303.  
  304.         TeleportEntity(iWeapon, origin, angles, NULL_VECTOR);
  305.        
  306.         char ModelName[128];
  307.         GetEntPropString(iWeapon, Prop_Data, "m_ModelName", ModelName, sizeof ModelName);
  308.        
  309.         if (StrContains( ModelName, "hunter", false ) != -1)
  310.             AcceptEntityInput(iWeapon, "kill");
  311.     }
  312. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement