ElectricStalin
Участник
- Сообщения
- 24
- Реакции
- 0
Добрый день. Потребовалось добавить энтитям оружия на земле свечение через стены. Все получилось, но оружие теперь почему-то спавнится высоко в небе (см. скрин).
Вот код:
spawnWeaponPositions координаты точек спавна я получаю из файла. В общем, если я отключаю свечение, то оружие спавнится как надо, если включаю, то оружие начинает светится, но спавнится совсем по другим координатам.
В логах ошибок нет
Вот код:

C-подобный:
void CreateWeapon(int i)
{
new index;
char buffer[64];
weapons.GetString(i,buffer,sizeof(buffer));
TrimString(buffer);
index=CreateEntityByName(buffer);
allWeapons[i][ind]=index;
if (index < 1)
{
LogError("Error during creating '%s'",buffer);
return;
}
SetEntProp(index, Prop_Send, "m_iItemDefinitionIndex", GetWeaponIndex(i));
DispatchKeyValueVector(index, "origin", spawnWeaponPositions[i]);
DispatchKeyValue(index, "spawnflags", "1");
entList[i]=index;
SetEntProp(index, Prop_Data, "m_iClip1", weaponClip(buffer));
SetEntProp(index, Prop_Send, "m_iPrimaryReserveAmmoCount",weaponReserve(buffer));
DispatchSpawn(index);
SDKHook(index, SDKHook_StartTouchPost, OnEntityTouch);
TeleportEntity(index, spawnWeaponPositions[i], NULL_VECTOR, NULL_VECTOR);
LogError("Create weapon ",i);
if(g_iGameState!=STATE_WARMUP)
{
SetSkin(i);
}
SetGlowing(index);
}
void SetGlowing(int entityIndex)
{
char model[128];
GetEntPropString(entityIndex, Prop_Data, "m_ModelName", model, 128)
int skin = CreateEntModelProp(entityIndex, model);
SetEntProp(skin, Prop_Send, "m_bShouldGlow", true, true);
SetEntProp(skin, Prop_Send, "m_nGlowStyle", 0);
SetEntPropFloat(skin, Prop_Send, "m_flGlowMaxDist", 10000000.0);
SetEntData(skin, GetEntSendPropOffs(skin, "m_clrGlow"), 192, _, true); // Red
SetEntData(skin, GetEntSendPropOffs(skin, "m_clrGlow") + 1, 160, _, true); // Green
SetEntData(skin, GetEntSendPropOffs(skin, "m_clrGlow") + 2, 96, _, true); // Blue
SetEntData(skin, GetEntSendPropOffs(skin, "m_clrGlow") + 3, 64, _, true); // Alpha
}
int CreateEntModelProp(int entity, char[] sModel)
{
RemoveSkin(entity);
int Ent = CreateEntityByName("prop_dynamic_override");
DispatchKeyValue(Ent, "model", sModel);
DispatchKeyValue(Ent, "disablereceiveshadows", "1");
DispatchKeyValue(Ent, "disableshadows", "1");
DispatchKeyValue(Ent, "solid", "0");
DispatchKeyValue(Ent, "spawnflags", "256");
SetEntProp(Ent, Prop_Send, "m_CollisionGroup", 11);
DispatchSpawn(Ent);
SetEntProp(Ent, Prop_Send, "m_fEffects", EF_BONEMERGE|EF_NOSHADOW|EF_NORECEIVESHADOW|EF_PARENT_ANIMATES);
SetVariantString("!activator");
AcceptEntityInput(Ent, "SetParent", entity, Ent, 0);
SetVariantString("primary");
AcceptEntityInput(Ent, "SetParentAttachment", Ent, Ent, 0);
return Ent;
}
void RemoveSkin(entity)
{
if(IsValidEntity(entity))
{
AcceptEntityInput(entity, "Kill");
}
SetEntityRenderMode(entity, RENDER_NORMAL);
}
spawnWeaponPositions координаты точек спавна я получаю из файла. В общем, если я отключаю свечение, то оружие спавнится как надо, если включаю, то оружие начинает светится, но спавнится совсем по другим координатам.
В логах ошибок нет