![]() |
Страницы (2): [1] 2 » Показать все 16 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Исправление SetThink и его друзей под новые компиляторы (https://hlfx.ru/forum/showthread.php?threadid=4820)
Исправление SetThink и его друзей под новые компиляторы
Не хочется просидеть несколько дней, исправляя использования макросов SetThink, SetUse и т.д вручную.
Для GCC я нашёл относительно работоспособное решение:
code:
f="effects.h *.cpp" for m in SetThink SetTouch SetUse SetBlocked SetMoveDone; do m2=`echo $m|sed -e s/Set/Reset/` sed -e s/$m[[:space:]]\*\([[:space:]]\*/$m\(/g -e s/$m\([[:space:]]\*\\\&/$m\(/g -e s/$m\([[:space:]]\*NULL[[:space:]]\)/$m2\(\)/g -e s/$m\([[:space:]]*/$m\(\ \\\&/g -e s/$m2\(\)/$m\(\ NULL\ \)/g -i $f done
http://www.moddb.com/games/half-lif...ual-studio-2008
Я как-то начал, через 3 часа надоело.
Толку мне от исправленного hlsdk? мне моды исправлять по быстрому.
mittorn
Моды пусть их авторы исправляют - разве не логично?
В конце концов, кому нужно, чтобы в их моды играли - им или тебе?
__________________
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro
Зачем сидеть ждать? Продолжать заниматься своими делами.
__________________
Таки автомат за тебя не решит, какого класса ф-ю тебе надо запускать. Случается, что функции перегружены. Я даже как-то баг нашёл, что запускается не CBaseEntity::MyThink(), а CMyEntityParent::MyThink(). Много часов я в своё время промучился. Даже пытался макрами это дело исправить. Но универсального способа для всек компиляторов не нашлось.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
XaeroX это не баг, это такое место, в котором легко допустить и не заметить ошибку.
Например, возможны вот такие варианты:
SetThink(&CBaseEntity::SUB_UseTargets);
SetThink(&CBaseDelay::SUB_UseTargets);
SetThink(&CBasePlat::SUB_UseTargets);
А раньше это выглядело как
SetThink(SUB_UseTargets);
SetThink(SUB_UseTargets);
SetThink(SUB_UseTargets);
И при портирвоании надо включать голову: что где вызывается и правильно ли.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
Гм, ну обычно если мы хотим юзать функцию базового класса, мы не переопределяем её в потомке.
__________________
XaeroX тут появляется ещё одна кака: если я переопределяю virtual void EXPORT SUB_UseTargets(); в классе CFuncTrackTrain, в коде которого встречается SetThink(&CBaseDelay::SUB_UseTargets);, надо будет руками пройтись по всему коду и проверить чтобы вызывался оверлоуд, а не базовая версия. По этой причине новый "explicit" вариант мне не нравится.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
А это признак плохой архитектуры, если тебе надо вызывать частично код из функции родителя. В таких случаях его выносят в новую функцию и вызывают её.
__________________
XaeroX ты нипрафф: мне надо, например запретить вызов CBaseEntity::SUB_UseTargets у всех потомков CBasePlat потому что у них используются другие поля для тагретов, а поле "таргет" - для указания следующего участка пути (пример). И это категорически важно, иначе у меня поезда сквозь гаргов летают по всей карте.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 00:24. | Страницы (2): [1] 2 » Показать все 16 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024