Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include sdktools
- #include sdkhooks
- #pragma semicolon 1
- #pragma newdecls required
- #define MODEL_BILL "models/survivors/survivor_namvet.mdl"
- #define MODEL_FRANCIS "models/survivors/survivor_biker.mdl"
- #define MODEL_LOUIS "models/survivors/survivor_manager.mdl"
- #define MODEL_ZOEY "models/survivors/survivor_teenangst.mdl"
- #define MODEL_NICK "models/survivors/survivor_gambler.mdl"
- #define MODEL_ROCHELLE "models/survivors/survivor_producer.mdl"
- #define MODEL_COACH "models/survivors/survivor_coach.mdl"
- #define MODEL_ELLIS "models/survivors/survivor_mechanic.mdl"
- bool IsSet[8] = false;
- char Inflicted[][] =
- {
- "models/survivors/survivor_gambler.mdl",
- "models/survivors/survivor_producer.mdl",
- "models/survivors/survivor_coach.mdl",
- "models/survivors/survivor_mechanic.mdl",
- "models/survivors/survivor_namvet.mdl",
- "models/survivors/survivor_teenangst.mdl",
- "models/survivors/survivor_biker.mdl",
- "models/survivors/survivor_manager.mdl"
- };
- public void OnPluginStart()
- {
- Handle hGameConf = LoadGameConfigFile("l4d2_zoey_unlock");
- int offset = GameConfGetOffset(hGameConf, "ZoeyUnlock_Offset");
- Address patch = GameConfGetAddress(hGameConf, "ZoeyUnlock");
- delete hGameConf;
- int byte = LoadFromAddress(patch + view_as<Address>(offset), NumberType_Int8);
- if( byte == 0xE8 )
- {
- for( int i = 0; i < 5; i++ )
- StoreToAddress(patch + view_as<Address>(offset + i), 0x90, NumberType_Int8);
- }
- for( int i = 0; i < 8; i++ )
- IsSet[i] = false;
- RegConsoleCmd("sm_quote", iShowUp);
- }
- public void OnMapStart()
- {
- SetConVarInt(FindConVar("precache_all_survivors"), 1);
- for( int i = 0; i < sizeof(Inflicted); i++ )
- {
- PrecacheModel(Inflicted[sizeof(i)][i], true);
- }
- }
- public Action iShowUp(int client, int args)
- {
- for( int i = 0; i < MaxClients; i++ )
- {
- if(bIsSurvivor(i) && !IsFakeClient(i))
- {
- int iProp = GetEntProp(i, Prop_Send, "m_survivorCharacter");
- IsSet[iProp] = true;
- }
- }
- if(bIsSurvivor(client))
- SetCharacter(client);
- }
- void SetCharacter(int client)
- {
- Handle PersonLimnk = CreateMenu(MainCharacterMenu);
- SetMenuTitle(PersonLimnk, "Выберите персонажа:");
- if(IsSet[5] == false)
- AddMenuItem(PersonLimnk, "5", "Зоя");
- if(IsSet[4] == false)
- AddMenuItem(PersonLimnk, "4", "Билл");
- if(IsSet[7] == false)
- AddMenuItem(PersonLimnk, "7", "Луис");
- if(IsSet[6] == false)
- AddMenuItem(PersonLimnk, "6", "Френсис");
- if(IsSet[0] == false)
- AddMenuItem(PersonLimnk, "0", "Ник");
- if(IsSet[3] == false)
- AddMenuItem(PersonLimnk, "3", "Эллис");
- if(IsSet[1] == false)
- AddMenuItem(PersonLimnk, "1", "Рошель");
- if(IsSet[2] == false)
- AddMenuItem(PersonLimnk, "2", "Тренер");
- SetMenuExitButton(PersonLimnk, true);
- DisplayMenu(PersonLimnk, client, MENU_TIME_FOREVER);
- }
- public int MainCharacterMenu(Handle menu, MenuAction action, int client, int symbol)
- {
- if (action == MenuAction_End)
- {
- CloseHandle(menu);
- return;
- }
- if(action == MenuAction_Select)
- {
- char iItem[32];
- GetMenuItem(menu, symbol, iItem, sizeof(iItem));
- symbol = StringToInt(iItem);
- int iProp = GetEntProp(client, Prop_Send, "m_survivorCharacter");
- IsSet[symbol] = true;
- IsSet[iProp] = false;
- SetEntProp(client, Prop_Send, "m_survivorCharacter", symbol);
- if(IsModelPrecached(Inflicted[symbol])) SetEntityModel(client, Inflicted[symbol]);
- else
- {
- PrintToChatAll("Opps! Something wrong...");
- PrecacheModel(Inflicted[symbol], true);
- SetEntityModel(client, Inflicted[symbol]);
- }
- }
- }
- stock bool bIsSurvivor(int client)
- {
- return client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == 2 && !IsClientInKickQueue(client) && IsPlayerAlive(client);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement