HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Исправление SetThink и его друзей под новые компиляторы
Есть ли готовые утилиты для этого?
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
mittorn
Житель форума
Девойс

Дата регистрации: Nov 2009
Проживает: Томск
Сообщений: 398

Рейтинг



Исправление 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

Это добавит & ко всем ненулевым SetThink, после чего gcc 3+ может его скомпилировать с параметром -fpermissive

Но это ломает совместимось с MSVC6 и с более новыми VS оно не начинает собираться, как и с Clang

Думаю, многих напрягала эта ситуация. Делал кто-нибудь готовые утилиты, приписывающие имя класса в этих макросах?

Сообщить модератору | | IP: Записан
Сообщение: 157220

Старое сообщение 26-07-2016 07:38
- За что?
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



Награды
 
[1 награда]


http://www.moddb.com/games/half-lif...ual-studio-2008

Цитата:
mittorn писал:
просидеть несколько дней


Там работы на полчаса максимум.

Сообщить модератору | | IP: Записан
Сообщение: 157225

Старое сообщение 26-07-2016 11:17
- За что?
mittorn
Житель форума
Девойс

Дата регистрации: Nov 2009
Проживает: Томск
Сообщений: 398

Рейтинг



Я как-то начал, через 3 часа надоело.
Толку мне от исправленного hlsdk? мне моды исправлять по быстрому.

Сообщить модератору | | IP: Записан
Сообщение: 157234

Старое сообщение 26-07-2016 12:28
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


mittorn
Моды пусть их авторы исправляют - разве не логично?
В конце концов, кому нужно, чтобы в их моды играли - им или тебе?

__________________

Сообщить модератору | | IP: Записан
Сообщение: 157236

Старое сообщение 26-07-2016 13:01
-
mittorn
Житель форума
Девойс

Дата регистрации: Nov 2009
Проживает: Томск
Сообщений: 398

Рейтинг



Цитата:
XaeroX писал:
mittorn
Моды пусть их авторы исправляют - разве не логично?
В конце концов, кому нужно, чтобы в их моды играли - им или тебе?

Я сомневаюсь, что Дядя Миша согласится исправлять XashXT под новые компиляторы.

Сообщить модератору | | IP: Записан
Сообщение: 157237

Старое сообщение 26-07-2016 13:03
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



Цитата:
XaeroX писал:
mittorn
Моды пусть их авторы исправляют - разве не логично?
В конце концов, кому нужно, чтобы в их моды играли - им или тебе?


Да уж, сидеть ждать всех остальных это очень хорошая политика.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Сообщить модератору | | IP: Записан
Сообщение: 157238

Старое сообщение 26-07-2016 14:24
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


FiEctro
Зачем сидеть ждать? Продолжать заниматься своими делами.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 157243

Старое сообщение 26-07-2016 16:21
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Таки автомат за тебя не решит, какого класса ф-ю тебе надо запускать. Случается, что функции перегружены. Я даже как-то баг нашёл, что запускается не CBaseEntity::MyThink(), а CMyEntityParent::MyThink(). Много часов я в своё время промучился. Даже пытался макрами это дело исправить. Но универсального способа для всек компиляторов не нашлось.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 157385

Старое сообщение 28-07-2016 07:45
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
~ X ~ писал:
Я даже как-то баг нашёл, что запускается не CBaseEntity::MyThink(), а CMyEntityParent::MyThink().

А можно поподробнее об этом баге?
Впервые слышу, чтобы выбиралась функция родителя при наличии переопределённой функции в потомке. Разве что сигнатуру по ошибке другой сделал?

__________________

Сообщить модератору | | IP: Записан
Сообщение: 157389

Старое сообщение 28-07-2016 08:20
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


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]

Сообщить модератору | | IP: Записан
Сообщение: 157394

Старое сообщение 28-07-2016 08:40
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


~ X ~
Гм, ну обычно если мы хотим юзать функцию базового класса, мы не переопределяем её в потомке.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 157397

Старое сообщение 28-07-2016 08:58
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


XaeroX тут появляется ещё одна кака: если я переопределяю virtual void EXPORT SUB_UseTargets(); в классе CFuncTrackTrain, в коде которого встречается SetThink(&CBaseDelay::SUB_UseTargets);, надо будет руками пройтись по всему коду и проверить чтобы вызывался оверлоуд, а не базовая версия. По этой причине новый "explicit" вариант мне не нравится.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 157402

Старое сообщение 28-07-2016 09:04
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


~ X ~
А это признак плохой архитектуры, если тебе надо вызывать частично код из функции родителя. В таких случаях его выносят в новую функцию и вызывают её.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 157415

Старое сообщение 28-07-2016 09:56
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


XaeroX ты нипрафф: мне надо, например запретить вызов CBaseEntity::SUB_UseTargets у всех потомков CBasePlat потому что у них используются другие поля для тагретов, а поле "таргет" - для указания следующего участка пути (пример). И это категорически важно, иначе у меня поезда сквозь гаргов летают по всей карте.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 157418

Старое сообщение 28-07-2016 10:12
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
~ X ~ писал:
И это категорически важно, иначе у меня поезда сквозь гаргов летают по всей карте.

поезда, они знаешь ли в любом случае будут сквозь гаргов летать. Так уж они устроены, эти поезда.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 157486

Старое сообщение 29-07-2016 19:56
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 14:21. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Исправление SetThink и его друзей под новые компиляторы
Есть ли готовые утилиты для этого?
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024