Подредактировать модуль для shop

Тема в разделе "Запросы", создана пользователем анимешник, 8 июл 2016.

  1. анимешник

    анимешник

    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте.
    Можно ли сделать так что бы клиенты на которых одеты модели САМИ их не видели от первого лица(как например в shop equipments,мешает) ? не могли бы вы помочь.

    PHP:
    #pragma semicolon 1
    #pragma tabsize 0

    #include <sourcemod>
    #include <sdktools>
    #include <shop>

    public Plugin:myinfo =
    {
    name "[Shop] Pets",
    author "Pheonix (˙·٠●Феникс●٠·˙) & Zephyrus",
    version "1.0",
    url "http://www.hlmod.ru/ http://zizt.ru/"
    };

    enum Pet
    {
    String:model[PLATFORM_MAX_PATH],
    String:run[64],
    String:idle[64],
    Float:fPosition[3],
    Float:fAngles[3]
    }

    new 
    bool:g_iPets[MAXPLAYERS+1];
    new 
    g_unClientPet[MAXPLAYERS+1] = {-1, ...};
    new 
    g_unSelectedPet[MAXPLAYERS+1][Pet];
    new 
    g_unLastAnimation[MAXPLAYERS+1]={-1,...};

    new 
    Handle:g_hKv;


    public 
    OnPluginStart()
    {
    HookEvent("player_spawn"Pets_PlayerSpawn);
    HookEvent("player_death"Pets_PlayerDeath);
    decl String:buffer[PLATFORM_MAX_PATH];
    if (
    g_hKv != INVALID_HANDLECloseHandle(g_hKv);
    g_hKv CreateKeyValues("Pets");
    Shop_GetCfgFile(buffersizeof(buffer), "pets.ini");
    if (!
    FileToKeyValues(g_hKvbuffer)) SetFailState("Файл конфигураций не найден %s"buffer);
    if (
    Shop_IsStarted()) Shop_Started();
    }

    public 
    Shop_Started()
    {
    new 
    CategoryId:category_id Shop_RegisterCategory("pets""Питомцы""");
    decl String:sName[64], String:sDescription[64];
    KvRewind(g_hKv);

    if (
    KvGotoFirstSubKey(g_hKv))
    {
      
    decl iPrice;
      do
      {
       if (
    KvGetSectionName(g_hKvsNamesizeof(sName)) && Shop_StartItem(category_idsName))
       {
        
    iPrice KvGetNum(g_hKv"price"1000);
        
    KvGetString(g_hKv"name"sDescriptionsizeof(sDescription), sName);
        
    Shop_SetInfo(sDescription""iPriceiPrice/2Item_TogglableKvGetNum(g_hKv"duration"0));
        
    Shop_SetCallbacks(_OnEquipItem);
        
    Shop_EndItem();
       }
      }
      while (
    KvGotoNextKey(g_hKv));
    }
    }

    public 
    ShopAction:OnEquipItem(iClientCategoryId:category_id, const String:category[], ItemId:item_id, const String:sItem[], bool:isOnbool:elapsed)
    {
    if (
    isOn || elapsed)
    {
      
    ResetPet(iClient);
      
    g_iPets[iClient]=false;
      return 
    Shop_UseOff;
    }
    Shop_ToggleClientCategoryOff(iClientcategory_id);
    decl Float:m_fTemp[3];
    KvRewind(g_hKv);
    if (
    KvJumpToKey(g_hKvsItemfalse))
    {
      
    KvGetString(g_hKv"model"g_unSelectedPet[iClient][model], PLATFORM_MAX_PATH);
      
    PrecacheModel(g_unSelectedPet[iClient][model], true);
      
    KvGetString(g_hKv"idle"g_unSelectedPet[iClient][idle], 64);
      
    KvGetString(g_hKv"run"g_unSelectedPet[iClient][run], 64);
      
    KvGetVector(g_hKv"position"m_fTemp);
      
    g_unSelectedPet[iClient][fPosition]=m_fTemp;
      
    KvGetVector(g_hKv"angles"m_fTemp);
      
    g_unSelectedPet[iClient][fAngles]=m_fTemp;
      
    ResetPet(iClient);
      
    CreatePet(iClient);
      
    g_iPets[iClient]=true;
      return 
    Shop_UseOn;
    }
    PrintToChat(iClient"Failed to use \"%s\"!."sItem);
    return 
    Shop_Raw;
    }

    public 
    OnClientConnected(client)
    {
    g_iPets[client]=false;
    }

    public 
    OnClientDisconnect(client)
    {
    g_iPets[client]=false;
    }

    public 
    Action:Pets_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
    {
    new 
    client GetClientOfUserId(GetEventInt(event"userid"));
    if(!(
    2<=GetClientTeam(client)<=3) || !g_iPets[client])
      return 
    Plugin_Continue;

    ResetPet(client);
    CreatePet(client);

    return 
    Plugin_Continue;
    }

    public 
    Action:Pets_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
    {
    ResetPet(GetClientOfUserId(GetEventInt(event"userid")));
    }

    public 
    Action:OnPlayerRunCmd(client, &buttons, &impulseFloat:vel[3], Float:angles[3], &weapon, &subtype, &cmdnum, &tickcount, &seedmouse[2])
    {
    if(
    g_unClientPet[client]==INVALID_ENT_REFERENCE || !g_iPets[client] || !IsPlayerAlive(client)) return;

    if(
    tickcount == 0)
    {
      new 
    Float:vec[3];
      
    decl Float:dist;
      
    GetEntPropVector(clientProp_Data"m_vecAbsVelocity"vec);
      
    dist GetVectorLength(vec);
      if(
    g_unLastAnimation[client] != && dist 0.0)
      {
       new 
    pet EntRefToEntIndex(g_unClientPet[client]);
       if (!
    pet || !IsValidEntity(pet)) return;
                
    SetVariantString(g_unSelectedPet[client][run]);
                
    AcceptEntityInput(pet"SetAnimation");

       
    g_unLastAnimation[client]=1;
      }
      else if(
    g_unLastAnimation[client] != && dist == 0.0)
      {
       
    SetVariantString(g_unSelectedPet[client][idle]);
       
    AcceptEntityInput(EntRefToEntIndex(g_unClientPet[client]), "SetAnimation");
       
    g_unLastAnimation[client]=2;
      }
    }
    }

    public 
    CreatePet(client)
    {
    if(
    g_unClientPet[client] != -|| !IsPlayerAlive(client)) return;


    new 
    m_unEnt CreateEntityByName("prop_dynamic_override");
    if (
    IsValidEntity(m_unEnt))
    {
      new 
    Float:m_flPosition[3];
      new 
    Float:m_flAngles[3];
      new 
    Float:m_flClientOrigin[3];
      new 
    Float:m_flClientAngles[3];
      
    GetClientAbsOrigin(clientm_flClientOrigin);
      
    GetClientAbsAngles(clientm_flClientAngles);
      
    m_flPosition[0]=g_unSelectedPet[client][fPosition][0];
      
    m_flPosition[1]=g_unSelectedPet[client][fPosition][1];
      
    m_flPosition[2]=g_unSelectedPet[client][fPosition][2];
      
    m_flAngles[0]=g_unSelectedPet[client][fAngles][0];
      
    m_flAngles[1]=g_unSelectedPet[client][fAngles][1];
      
    m_flAngles[2]=g_unSelectedPet[client][fAngles][2];

      
    decl Float:m_fForward[3];
      
    decl Float:m_fRight[3];
      
    decl Float:m_fUp[3];
      
    GetAngleVectors(m_flClientAnglesm_fForwardm_fRightm_fUp);

      
    m_flClientOrigin[0] += m_fRight[0]*m_flPosition[0]+m_fForward[0]*m_flPosition[1]+m_fUp[0]*m_flPosition[2];
      
    m_flClientOrigin[1] += m_fRight[1]*m_flPosition[0]+m_fForward[1]*m_flPosition[1]+m_fUp[1]*m_flPosition[2];
      
    m_flClientOrigin[2] += m_fRight[2]*m_flPosition[0]+m_fForward[2]*m_flPosition[1]+m_fUp[2]*m_flPosition[2];
      
    m_flAngles[1] += m_flClientAngles[1];

      
    DispatchKeyValue(m_unEnt"model"g_unSelectedPet[client][model]);
      
    DispatchKeyValue(m_unEnt"spawnflags""256");
      
    DispatchKeyValue(m_unEnt"solid""0");
      
    SetEntPropEnt(m_unEntProp_Send"m_hOwnerEntity"client);
     
      
    DispatchSpawn(m_unEnt);
      
    AcceptEntityInput(m_unEnt"TurnOn"m_unEntm_unEnt0);
     
      
    // Teleport the pet to the right fPosition and attach it
      
    TeleportEntity(m_unEntm_flClientOriginm_flAnglesNULL_VECTOR);
     
      
    SetVariantString("!activator");
      
    AcceptEntityInput(m_unEnt"SetParent"clientm_unEnt0);
     
      
    SetVariantString("letthehungergamesbegin");
      
    AcceptEntityInput(m_unEnt"SetParentAttachmentMaintainOffset"m_unEntm_unEnt0);
       
      
    g_unClientPet[client] = EntIndexToEntRef(m_unEnt);
      
    g_unLastAnimation[client] = -1;
    }
    }

    public 
    ResetPet(client)
    {
    if(
    g_unClientPet[client] == -1)
      return;

    new 
    m_unEnt EntRefToEntIndex(g_unClientPet[client]);
    g_unClientPet[client] = -1;
    if(
    m_unEnt == -1)
      return;

    AcceptEntityInput(m_unEnt"Kill");
    }

    public 
    OnPluginEnd()
    {
    Shop_UnregisterMe();
    }