[CS: GO] Плагин для превью Skins (VIP, Shop), Equipments (VIP, Shop), Pets (VIP, Shop)

Тема в разделе "Требуется", создана пользователем sPonso™, 10 янв 2018.

  1. sPonso™

    sPonso™

    Сообщения:
    12
    Симпатии:
    0
    Здравствуйте, необходим плагин для создания превью выбранных скинов, экипировок, питомцев.
    Необходимо, чтобы во вкладке Покупки предмета был выбор "Включить превью" и создавалась рядом с тобой модель того, что собираешься купить.
    К примеру: Нужно купить скин в шопе, нажимаешь "Превью" и создалась рядом 3д модель, через которую можно "проходить" (то есть чтобы не было столкновения как с предметом) и которую можно самому осмотреть со всех сторон. Нужно чтобы она была видна лишь самому использующему; должна быть активна всё время, пока не нажмёшь снова кнопку "превью" и тогда она исчезнет. (и если нажать "Назад" и вернутся в список - она тоже пропадает)

    Пример работы плагина (видео) могу предоставить тому, кто возьмётся за заказ. Цена договорная.
    Контакты - в ЛС на этом форуме.
     
  2. Lisoh

    Lisoh

    Сообщения:
    116
    Симпатии:
    51
    Кто нибудь выполнил заказ? И я одного не понимаю, зачем вносить поправки во все плагины, если можно создать один и записать туда все существующие скины на сервере?

    Как я сделал для себя:
    [​IMG]

    [​IMG]

    [​IMG]
     
  3. Tomich

    Tomich

    Сообщения:
    129
    Симпатии:
    24
    Хотелос бы по подробнее. Alexander Shlyapnikov , готов заплатить за работу :)
     
  4. leshaJEY

    leshaJEY

    Сообщения:
    84
    Симпатии:
    7
    Продаёшь ? :)
     
  5. Lisoh

    Lisoh

    Сообщения:
    116
    Симпатии:
    51
    Нет, не продаю. Забирайте на халяву.

    Исходный код:
    PHP:
    #include <sdktools_functions>
    #include <sdktools_entinput>
    #include <sdkhooks>

    #pragma newdecls required
    #pragma semicolon 1

    public Plugin myinfo = {name "Preview"author "Drumanid"version "1.0"url "http://vk.com/drumanid"}

    #define CFG "addons/sourcemod/configs/preview.ini"

    KeyValues kv;
    char g_sModel[128];
    int g_iEntity[MAXPLAYERS +1];
    bool g_bHide[MAXPLAYERS +1];

    public 
    void OnPluginStart()
    {
        
    kv = new KeyValues("Preview");
        if(!
    kv.ImportFromFile(CFG)) SetFailState("No found: %s"CFG);

        
    RegConsoleCmd("sm_pre"Prevcmd);
        
    RegConsoleCmd("sm_preview"Prevcmd);
    }

    public 
    Action Prevcmd(int iClientint iArgs)
    {
        if(
    g_bHide[iClient]) PrevMenu(iClient);
        else 
    SkinsMenu(iClient);
        return 
    Plugin_Handled;
    }

    void SkinsMenu(int iClient)
    {
        
    Menu hMenu = new Menu(SkinsMenuOptions);
        
    hMenu.ExitButton true;
        
    hMenu.SetTitle("Модель скина: \n \n");
     
        
    kv.Rewind();
        if(
    kv.GotoFirstSubKey())
        {
            
    char g_slModelName[64], g_slModel[128];
            do
            {
                
    kv.GetSectionName(g_slModelNamesizeof(g_slModelName));
                
    kv.GetString("model"g_slModelsizeof(g_slModel));
                
    hMenu.AddItem(g_slModelg_slModelName);
            }
            while(
    kv.GotoNextKey());
        }
     
        
    hMenu.Display(iClientMENU_TIME_FOREVER);
    }

    public 
    int SkinsMenuOptions(Menu hMenuMenuAction actionint iClientint option)
    {
        switch(
    action)
        {
            case 
    MenuAction_Enddelete hMenu;
            case 
    MenuAction_Select:
            {
                
    char g_slModel[128];
                
    hMenu.GetItem(optiong_slModelsizeof(g_slModel));
                
    FormatEx(g_sModelsizeof(g_sModel), "%s"g_slModel);
            
                
    PrevMenu(iClient);
            }
        }
    }

    void PrevMenu(int iClient)
    {
        
    Menu hMenu = new Menu(PrevMenuOptions);
        
    hMenu.ExitButton true;
        
    hMenu.SetTitle("Демонстрация модели: \n \n");
     
        if(
    g_bHide[iClient]) hMenu.AddItem("""Выключить превью");
        else 
    hMenu.AddItem("""Включить превью");
        
    hMenu.AddItem("""Вернуться назад к выбору модели");
     
        
    hMenu.Display(iClientMENU_TIME_FOREVER);
    }

    public 
    int PrevMenuOptions(Menu hMenuMenuAction actionint iClientint option)
    {
        switch(
    action)
        {
            case 
    MenuAction_Enddelete hMenu;
            case 
    MenuAction_Select:
            {
                switch(
    option)
                {
                    case 
    0:
                    {
                        if(
    g_bHide[iClient]) DeleteEntity(iClient);
                        else 
    PrevCreate(iClient);
                    
                        
    PrevMenu(iClient);
                    }
                    case 
    1SkinsMenu(iClient);
                }
            }
        }
    }

    void PrevCreate(int iClient)
    {
        if((
    g_iEntity[iClient] = CreateEntityByName("prop_physics_override")) != -1)
        {
            
    DispatchKeyValue(g_iEntity[iClient], "model"g_sModel);
            
    DispatchKeyValue(g_iEntity[iClient], "physicsmode""2");
            
    DispatchKeyValue(g_iEntity[iClient], "massScale""1.0");
            
    DispatchKeyValue(g_iEntity[iClient], "spawnflags""0");
            
    DispatchSpawn(g_iEntity[iClient]);
        
            
    SetEntProp(g_iEntity[iClient], Prop_Send"m_usSolidFlags",  8);
            
    SetEntProp(g_iEntity[iClient], Prop_Send"m_CollisionGroup"1);
        
            
    float Pos[3];
            
    GetClientAbsOrigin(iClientPos);
        
            
    TeleportEntity(g_iEntity[iClient], PosNULL_VECTORNULL_VECTOR);
            
    SetEntityMoveType(g_iEntity[iClient], MOVETYPE_NONE);
        
            
    SDKHook(g_iEntity[iClient], SDKHook_SetTransmitSetTransmit);
            
    g_bHide[iClient] = true;
        }
    }

    void DeleteEntity(int iClient)
    {
        if(
    IsValidEntity(g_iEntity[iClient])) AcceptEntityInput(g_iEntity[iClient], "Kill");
        
    g_bHide[iClient] = false;
        
    //SDKUnhook(g_iEntity[iClient], SDKHook_SetTransmit, SetTransmit);
    }

    public 
    Action SetTransmit(int Entityint iClient) { return g_bHide[iClient] ? Plugin_Continue:Plugin_Handled; } // Будут видеть все у кого включен режим превью
    public void OnClientDisconnect(int iClient) { DeleteEntity(iClient); }
    Конфиг:
    PHP:
    "Preview"
    {
        
    "Anarchist [1]"                                                 // Название в меню
        
    {
            
    "model"    "models/player/tm_anarchist.mdl"                    // Путь к модели
        
    }
        
    "Anarchist [2]"
        
    {
            
    "model"    "models/player/tm_anarchist_varianta.mdl"
        
    }
        
    "SWAT [1]"
        
    {
            
    "model"    "models/player/ctm_swat.mdl"
        
    }
        
    "SWAT [2]"
        
    {
            
    "model"    "models/player/ctm_swat_varianta.mdl"
        
    }
    }
     

    Вложения:

    • Preview.7z
      Размер файла:
      8,9 КБ
      Просмотров:
      2
    Последнее редактирование: 16 янв 2018 в 02:08
    sPonso™ и Meowmurmur нравится это.
  6. R1KO

    R1KO Хейтер великого DEN`а Супермодератор

    Сообщения:
    7.243
    Симпатии:
    4.556
    @Lisoh, так оформил бы как ресурс
     
  7. Lisoh

    Lisoh

    Сообщения:
    116
    Симпатии:
    51
    Залил.
     
  8. sPonso™

    sPonso™

    Сообщения:
    12
    Симпатии:
    0
    Спасибо за плагин, но бывает что в некоторые моменты при переключении списка или выборе скина(нажатии кнопки Далее) сервер уходит в краш. Нужно ставить модель с прекешем в таком случае?
    Хотел узнать, превью включенного скина виден только игроку кто его включил или всем?
    Так же чтобы превью модели появлялось не на твоём месте расположения, а чуть поодаль от тебя (на небольшом расстоянии от тебя)
    Так же хотелось бы дополнение в плагин. Нужно чтобы плагин брал ID экипировки из плагина VIP Equipments и Shop Equipments (в конфиге чтобы самому указывать из какого нужно брать) и было соединение с моделью скина. То есть к примеру:
    PHP:
    "Model1" //название модели
    {
    "shop" //подгурзка конфига моделей экипировки из Shop Equipments
    или
    "vip" //подгрузка конфига моделей экипировки из Vip Equipments

    "model"    "models/player/tm_anarchist.mdl"  //выбранная основная модель персонажа
    "equip"     "models/player/wing/name1.mdl"   //выбранная модель экипировки на которую будет накладываться из "model".
    }
    }
    В конечном итоге будет показана модель персонажа и на нём модель крыльев к примеру. (координаты крыльев или "кость" прикрепления будет браться из конфига.