Advertisement
FlacoBey

Untitled

Jun 12th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.74 KB | None | 0 0
  1. #include sdktools
  2. #include sdkhooks
  3.  
  4. #pragma semicolon 1
  5. #pragma newdecls required
  6.  
  7. #define MODEL_BILL "models/survivors/survivor_namvet.mdl"
  8. #define MODEL_FRANCIS "models/survivors/survivor_biker.mdl"
  9. #define MODEL_LOUIS "models/survivors/survivor_manager.mdl"
  10. #define MODEL_ZOEY "models/survivors/survivor_teenangst.mdl"
  11.  
  12. #define MODEL_NICK "models/survivors/survivor_gambler.mdl"
  13. #define MODEL_ROCHELLE "models/survivors/survivor_producer.mdl"
  14. #define MODEL_COACH "models/survivors/survivor_coach.mdl"
  15. #define MODEL_ELLIS "models/survivors/survivor_mechanic.mdl"
  16.  
  17. bool IsSet[8] = false;
  18.  
  19. char Inflicted[][] =
  20. {  
  21.     "models/survivors/survivor_gambler.mdl",
  22.     "models/survivors/survivor_producer.mdl",
  23.     "models/survivors/survivor_coach.mdl",
  24.     "models/survivors/survivor_mechanic.mdl",
  25.     "models/survivors/survivor_namvet.mdl",
  26.     "models/survivors/survivor_teenangst.mdl",
  27.     "models/survivors/survivor_biker.mdl",
  28.     "models/survivors/survivor_manager.mdl"
  29. };
  30.  
  31. public void OnPluginStart()
  32. {
  33.     Handle hGameConf = LoadGameConfigFile("l4d2_zoey_unlock");
  34.     int offset = GameConfGetOffset(hGameConf, "ZoeyUnlock_Offset");
  35.     Address patch = GameConfGetAddress(hGameConf, "ZoeyUnlock");
  36.     delete hGameConf;
  37.     int byte = LoadFromAddress(patch + view_as<Address>(offset), NumberType_Int8);
  38.     if( byte == 0xE8 )
  39.     {
  40.         for( int i = 0; i < 5; i++ )
  41.             StoreToAddress(patch + view_as<Address>(offset + i), 0x90, NumberType_Int8);
  42.     }
  43.     for( int i = 0; i < 8; i++ )
  44.         IsSet[i] = false;
  45.        
  46.     RegConsoleCmd("sm_quote", iShowUp);
  47. }
  48.  
  49. public void OnMapStart()
  50. {    
  51.     SetConVarInt(FindConVar("precache_all_survivors"), 1);
  52.     for( int i = 0; i < sizeof(Inflicted); i++ )
  53.     {
  54.         PrecacheModel(Inflicted[sizeof(i)][i], true);
  55.     }
  56. }
  57.  
  58. public Action iShowUp(int client, int args)
  59. {
  60.     for( int i = 0; i < MaxClients; i++ )
  61.     {
  62.         if(bIsSurvivor(i) && !IsFakeClient(i))
  63.         {
  64.             int iProp = GetEntProp(i, Prop_Send, "m_survivorCharacter");
  65.             IsSet[iProp] = true;
  66.         }
  67.     }
  68.     if(bIsSurvivor(client))
  69.         SetCharacter(client);
  70. }
  71.  
  72. void SetCharacter(int client)
  73. {
  74.     Handle PersonLimnk = CreateMenu(MainCharacterMenu);
  75.     SetMenuTitle(PersonLimnk, "Выберите персонажа:");
  76.     if(IsSet[5] == false)
  77.         AddMenuItem(PersonLimnk, "5", "Зоя");
  78.     if(IsSet[4] == false)
  79.         AddMenuItem(PersonLimnk, "4", "Билл");
  80.     if(IsSet[7] == false)
  81.         AddMenuItem(PersonLimnk, "7", "Луис");
  82.     if(IsSet[6] == false)
  83.         AddMenuItem(PersonLimnk, "6", "Френсис");
  84.     if(IsSet[0] == false)
  85.         AddMenuItem(PersonLimnk, "0", "Ник");
  86.     if(IsSet[3] == false)
  87.         AddMenuItem(PersonLimnk, "3", "Эллис");
  88.     if(IsSet[1] == false)
  89.         AddMenuItem(PersonLimnk, "1", "Рошель");
  90.     if(IsSet[2] == false)
  91.         AddMenuItem(PersonLimnk, "2", "Тренер");
  92.     SetMenuExitButton(PersonLimnk, true);
  93.     DisplayMenu(PersonLimnk, client, MENU_TIME_FOREVER);
  94. }
  95.  
  96. public int MainCharacterMenu(Handle menu, MenuAction action, int client, int symbol)
  97. {
  98.     if (action == MenuAction_End)
  99.     {
  100.         CloseHandle(menu);
  101.         return;
  102.     }
  103.    
  104.     if(action == MenuAction_Select)
  105.     {
  106.         char iItem[32];
  107.         GetMenuItem(menu, symbol, iItem, sizeof(iItem));
  108.         symbol = StringToInt(iItem);
  109.        
  110.         int iProp = GetEntProp(client, Prop_Send, "m_survivorCharacter");
  111.        
  112.         IsSet[symbol] = true;
  113.         IsSet[iProp] = false;
  114.         SetEntProp(client, Prop_Send, "m_survivorCharacter", symbol);
  115.         if(IsModelPrecached(Inflicted[symbol])) SetEntityModel(client, Inflicted[symbol]);
  116.         else
  117.         {
  118.             PrintToChatAll("Opps! Something wrong...");
  119.             PrecacheModel(Inflicted[symbol], true);
  120.             SetEntityModel(client, Inflicted[symbol]);
  121.         }
  122.     }
  123. }
  124.  
  125. stock bool bIsSurvivor(int client)
  126. {
  127.     return client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == 2 && !IsClientInKickQueue(client) && IsPlayerAlive(client);
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement