Можете помочь отредактировать плагин для left 4 dead 2?

Алексей Кашура

Участник
Сообщения
15
Реакции
1
Здравствуйте народ! Нужна ваша помощь с плагином Мне нужно заставить этот плагин сохранять выбранный персонаж каждого игрока на протяжении всей кампании.


C-подобный:
#pragma semicolon 1
#include <sourcemod>
#include <sdktools>

new String:current_map[55];

public OnPluginStart()
{
    RegConsoleCmd("sm_rochelle", Command_model);
    RegConsoleCmd("sm_coach", Command_model);
    RegConsoleCmd("sm_nick", Command_model);
    RegConsoleCmd("sm_ellis", Command_model);
    RegConsoleCmd("sm_zoey", Command_model);
    RegConsoleCmd("sm_francis", Command_model);
    RegConsoleCmd("sm_louis", Command_model);
    RegConsoleCmd("sm_bill", Command_model);
}

public OnMapStart()
{
    GetCurrentMap(current_map, sizeof(current_map));
    
    CheckPrecacheModel("models/survivors/survivor_gambler.mdl");
    CheckPrecacheModel("models/survivors/survivor_manager.mdl");
    CheckPrecacheModel("models/survivors/survivor_coach.mdl");
    CheckPrecacheModel("models/survivors/survivor_producer.mdl");
    CheckPrecacheModel("models/survivors/survivor_teenangst.mdl");
    CheckPrecacheModel("models/survivors/survivor_biker.mdl");
    CheckPrecacheModel("models/survivors/survivor_namvet.mdl");
    CheckPrecacheModel("models/survivors/survivor_mechanic.mdl");
}

public Action:Command_model(client, args)
{
    if (!client || !IsClientInGame(client))
        return Plugin_Continue;

    decl String:model[256];
    GetCmdArg(0, model, sizeof(model));
    
    ReplaceString(model, sizeof(model), "sm_", "", false);

    if (client)
    {
        if (GetClientTeam(client) == 2)
        {            
            if (L4DMaps() == 2)
            {
                if (StrEqual(model, "nick"))
                {
                    SetEntProp(client, Prop_Send, "m_survivorCharacter", 0);
                    SetEntityModel(client, "models/survivors/survivor_gambler.mdl");
                }
                else if (StrEqual(model, "rochelle"))
                {
                    SetEntProp(client, Prop_Send, "m_survivorCharacter", 1);
                    SetEntityModel(client, "models/survivors/survivor_producer.mdl");
                }
                else if (StrEqual(model, "coach"))
                {
                    SetEntProp(client, Prop_Send, "m_survivorCharacter", 2);
                    SetEntityModel(client, "models/survivors/survivor_coach.mdl");
                }
                else if (StrEqual(model, "ellis"))
                {
                    SetEntProp(client, Prop_Send, "m_survivorCharacter", 3);
                    SetEntityModel(client, "models/survivors/survivor_mechanic.mdl");
                }
                else
                {
                    PrintToChat(client, "\x05Changing the skin \x04%s\x05 on this map disabled", model);
                    return Plugin_Continue;
                }
            }
            else if (L4DMaps() == 1)
            {
                if (StrEqual(model, "bill"))
                {
                    SetEntProp(client, Prop_Send, "m_survivorCharacter", 0);
                    SetEntityModel(client, "models/survivors/survivor_namvet.mdl");
                }
                else if (StrEqual(model, "zoey"))
                {
                    SetEntProp(client, Prop_Send, "m_survivorCharacter", 1);
                    SetEntityModel(client, "models/survivors/survivor_teenangst.mdl");
                }
                else if (StrEqual(model, "louis"))
                {
                    SetEntProp(client, Prop_Send, "m_survivorCharacter", 2);
                    SetEntityModel(client, "models/survivors/survivor_manager.mdl");
                }
                else if (StrEqual(model, "francis"))
                {
                    SetEntProp(client, Prop_Send, "m_survivorCharacter", 3);
                    SetEntityModel(client, "models/survivors/survivor_biker.mdl");
                }
                else
                {
                    PrintToChat(client, "\x05Changing the skin \x04%s\x05 on this map disabled", model);
                    return Plugin_Continue;
                }
            }
            else
            {
                PrintToChat(client, "\x05Changing the skin \x04%s\x05 on this map disabled", model);
                return Plugin_Continue;
            }
            
            PrintToChat(client, "\x05Current skin is replaced by the skin \x04%s", model);
        }
    }
    return Plugin_Continue;
}

L4DMaps()
{
    if ((StrContains(current_map, "c7m") != -1) || (StrContains(current_map, "c8m") != -1) || (StrContains(current_map, "c9m") != -1) || (StrContains(current_map, "c10m") != -1) || (StrContains(current_map, "c11m") != -1) || (StrContains(current_map, "c12m", false) != -1)) 
        return 1;
        
    if ((StrContains(current_map, "c1m") != -1) || (StrContains(current_map, "c2m") != -1) || (StrContains(current_map, "c3m") != -1) || (StrContains(current_map, "c4m") != -1) || (StrContains(current_map, "c5m") != -1) || (StrContains(current_map, "c6m", false) != -1) || (StrContains(current_map, "c13m", false) != -1)) 
        return 2;
    
    return 0;
}

public CheckPrecacheModel(String:Model[])
{
    if (!IsModelPrecached(Model)) 
    {
        PrecacheModel(Model);
    }
}
Буду очень благодарен, если поможете…
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Если писал ты, то вот тебе подсказка:
делаем массив выбора игрока, типа player_choice[client]=0 - не выбирать модель. 1 2 3 4 - в соответствии с моделью.
И далее: хукаем событие респавн, и делаем:
if(player_choice[client]==0){принт ВЫ МОЖЕТЕ ВЫБРАТЬ МОДЕЛЬ}
else if(player_choice[client]==1){MODEL}
else if(player_choice[client]==2){MODEL}
else if(player_choice[client]==3){MODEL}
else if(player_choice[client]==4){MODEL}
Или кейсом аналогично.

Добавлено через 5 минут
Мда.
http://forums.alliedmods.net/showthread.php?p=2089083
 
Последнее редактирование:

Алексей Кашура

Участник
Сообщения
15
Реакции
1
Если писал ты, то вот тебе подсказка:
делаем массив выбора игрока, типа player_choice[client]=0 - не выбирать модель. 1 2 3 4 - в соответствии с моделью.
И далее: хукаем событие респавн, и делаем:
if(player_choice[client]==0){принт ВЫ МОЖЕТЕ ВЫБРАТЬ МОДЕЛЬ}
else if(player_choice[client]==1){MODEL}
else if(player_choice[client]==2){MODEL}
else if(player_choice[client]==3){MODEL}
else if(player_choice[client]==4){MODEL}
Или кейсом аналогично.

Добавлено через 5 минут
Мда.
http://forums.alliedmods.net/showthread.php?p=2089083
это не я писал но я использую данный плагин. Спасибо что подсказали!
 
Сверху Снизу