Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Отображение ентити
Отображение ентити
BlackHead1673 Дата: Пятница, 02.06.2023, 01:30:12 | Сообщение # 1
Сообщений: 18
Репутация: 0 [ +/- ]
Почему-то не отображается созданное ентити
Пробовал до этого создавать env_sprite и все работало

Код
#pragma semicolon 1

#include <smlib>
#include <sourcemod>
#include <sdkhooks>

#pragma newdecls required

#define d_interval 0.5 //Интервал между созданием инфодекалей (меньше 0.5 лучше не ставить)
#define d_clear 5.0 // Через сколько секунд удалять инфодекали (слишком много времени лучше не ставить).
#define d_max 11 // d_clear(5.0) / d_interval(0.5) = 10 + 1 "на всякий" = 11

int
    i_speed[MAXPLAYERS+1],
    i_ground[MAXPLAYERS+1],
    count_ent[MAXPLAYERS+1],
    del_ent[MAXPLAYERS+1],
    step_ent[d_max];
Handle
    h_CDStep[MAXPLAYERS+1],
    h_ClearStep[MAXPLAYERS+1];
bool
    StepsClient[MAXPLAYERS+1];

public void OnPluginStart(){
    RegConsoleCmd("sm_test", cmd_test);
}
public void OnMapStart(){
    CreateTimer(0.1, GlobalTimer, _, 1);
    AddFileToDownloadsTable("materials/nlas/decals/arrow_step.vmt");
    AddFileToDownloadsTable("materials/nlas/decals/arrow_step.vtf");
    PrecacheDecal("nlas/decals/arrow_step.vmt", true);
}
public Action cmd_test(int client, int args){
    if(!StepsClient[client]) StepsClient[client] = true;
    else if(StepsClient[client]) StepsClient[client] = false;
    PrintToChat(client, "%s", StepsClient[client]?"+":"-");
    return Plugin_Handled;
}
public Action GlobalTimer(Handle timer){
    for(int client = 1; client <= MaxClients; client++)
    {
        if(IsValidClient(client) && IsPlayerAlive(client))
        {
            float vec[3]; GetEntPropVector(client, Prop_Data, "m_vecVelocity", vec);
            i_ground[client] = GetEntPropEnt(client, Prop_Send, "m_hGroundEntity");
            i_speed[client] = RoundToNearest(SquareRoot(vec[0] * vec[0] + vec[1] * vec[1]));
            PrintHintText(client, "%N\n%d\n%d\nCount: %d, Del: %d", client, i_speed[client], i_ground[client], count_ent[client], del_ent[client]);
            if(h_CDStep[client] == null)
            {
                if(i_speed[client]>110 && i_ground[client]!=-1)
                {
                    float pos[3]; GetClientAbsOrigin(client, pos);
                    float ang[3]; GetClientAbsAngles(client, ang);
                    count_ent[client]++;
                    if(count_ent[client] >= d_max) count_ent[client] = 0;
                    step_ent[count_ent[client]] = CreateEntityByName("info_projecteddecal");
                    if(step_ent[count_ent[client]]!=-1)
                    {
                        DispatchKeyValue(step_ent[count_ent[client]], "texture", "nlas/decals/arrow_step.vmt");
                        DispatchKeyValueVector(step_ent[count_ent[client]], "angles", ang);

                        DispatchKeyValue(step_ent[count_ent[client]], "Distance", "64");
                        DispatchSpawn(step_ent[count_ent[client]]);
                        ActivateEntity(step_ent[count_ent[client]]);
                        TeleportEntity(step_ent[count_ent[client]], pos, NULL_VECTOR, NULL_VECTOR);

                        h_ClearStep[client] = CreateTimer(d_clear, ClearStep, client);
                        PrintToChatAll("_______________\nstep_ent: %d\n%.1f %.1f %.1f", step_ent[count_ent[client]], pos[0], pos[1], pos[2]);
                    }
                    //SDKHook(ent, SDKHook_SetTransmit, Hook_SetTransmit);
                }
                h_CDStep[client] = CreateTimer(d_interval, CDStep, client);
            }
        }
    }
}
/*
public Action Hook_SetTransmit(int entity, int client){
    return !StepsClient[client]? Plugin_Handled : Plugin_Continue;
}
*/
public Action ClearStep(Handle timer, int client){
    del_ent[client]++;
    if(del_ent[client] >= d_max) del_ent[client] = 0;
    AcceptEntityInput(step_ent[del_ent[client]], "kill");
}
public Action CDStep(Handle timer, int client){
    h_CDStep[client] = null;
}
stock bool IsValidClient(int client){
    if(0 >= client || client > MaxClients || !IsClientInGame(client) || !IsClientConnected(client))
        return false;
    return true;
}
 
_wS_ Дата: Пятница, 02.06.2023, 05:58:11 | Сообщение # 2
Thanks
Возможно model нужно указать или попробовать SetEntityModel.
 
BlackHead1673 Дата: Пятница, 02.06.2023, 15:37:02 | Сообщение # 3
Сообщений: 18
Репутация: 0 [ +/- ]
Не, не помогло
Может проблема в том как я настроил vmt для текстуры
Хотя я так же пробовал использовать "стандартные" декали из файлов игры
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Отображение ентити
  • Страница 1 из 1
  • 1
Поиск: