Облазил все что мог в поисках ответа как сделать, чтобы декаль зависела от типа материала и ничего не нашел. Может у кого-нибудь есть какие-либо исходники, ссылки, туторы на эту тему? Или может совет какой полезный, кто-нибудь даст, где смотреть и что делать.
[)r0n закомментируй стандартную функцию создания декали на клиенте, ставь декали в EV_HLDM_PlaySound или как его там, где звук попадания пули выбирается в зависимости от материала. Но это только для игрока, для его оружий. У монстров и пулемётов декали ставятся на сервере. Смысл в том, чтобы определить тип материала, лучше это делать на сервере, т.к. для "немировых" энтить можно определить класс и для энтить с CLASS_MACHINE задавать звук металла.
На сервере трейсим энтитю. Если она "мировая", то отправляем на клиент в эвенте или мессагой индекс текстуры. Если "немировая", то в зависимости от класса индекс "мяса" или металла. А на клиенте уже отлавливаем этот индекс и в зависимости от него делаем нужный звук и декаль. Глянь мой тутор "Эффект попадания пуль в стену".
хах , а я сделал
смотри...
вобщем создаём переменную:
char *textype;
в EV_HLDM_PlaySound записываем её , к примеру textype = "metall"
далее есть :
EV_HLDM_DamageDecal( physent_t *pe )
там создаём условия типа:
else if (texmat =="metal")
{
idx = gEngfuncs.pfnRandomLong(1,4);
sprintf(decalname,"{shot_metal%d",idx);
}
вот и всё, ничего сложного
в параное тоже можно , почти так же только не в дэмэйдж декал, а там где вы её рисуете (я рисую из EV_HLDM_GunshotDecalTrace )
там у меня:
CreateDecal(*pTrace,"shot");
только вот тут уже можно так:
char *szDecal;
sprintf(szDecal , "shot_%s" , textype);
в итоге создаём новые группы декалей в decallist.txt (или не так) и пишем туда тгашки
Видимо очень сильно там солнышко пекет. Наводящее слово - strcmp
Хотя есть мысль что если у компилятора/линкера(непомню у кого точно) включена настройка "merge duplicated strings" то такое проканает при условии что строки задавать таким способом
C++ Source Code:
char*name="foo";
знающие - поправьте меня если я не прав, мне самому стало интересно.
__________________
Трагическая новость: Пятеро инженеров Casio умерли от смеха, узнав что Samsung анонсировали часы с заявленным временем работы в 25 часов
вы объясните мне ,чем так не правильно?! все говорят.а объяснять - не объясняют, к тому же у меня еще с вб привычка так делать и всё отлично(!!!) работает
HAWK0044 ты сравниваешь указатели на строки а не сами строки.
такой метод зафейлиться тут:
C++ Source Code:
1
char str[64];
2
strcpy(str,"Boom - это круто! 8-)");
3
if (str == "Boom - это круто! 8-)")
4
MessageBox(0,str,"",MB_ICONERROR);
МессаджБокс никогда не вылезет.
__________________
Трагическая новость: Пятеро инженеров Casio умерли от смеха, узнав что Samsung анонсировали часы с заявленным временем работы в 25 часов