Сейчас заново посмотрел исходник Demiurge-а. Всё скомпилилось. Кампилятор жаловался на:
"m_iExplodeC"и на "g_sModelIndexSpore"
Но теперь другая проблема:
Когда щёлкаешь лкм Sporelauncher-а, спора летит ниже прицела:
А когда ШокТрупер кидает гранату, то после взрыва остаётся спрайт:
Нашёл исходник споры от "Raven City". Теперь компилятору не нравятся партиклы.
D:\SDK\Single-Player Source\dlls\spore.cpp(20) : error C2511: 'CreateSporeGrenade' : overloaded member function 'class CSpore *(const char *,class Vector,class Vector,class CBaseEntity *)' not found in 'CSpore'
d:\sdk\single-player source\dlls\weapons.h(58) : see declaration of 'CSpore'
D:\SDK\Single-Player Source\dlls\spore.cpp(32) : error C2511: 'CreateSporeRocket' : overloaded member function 'class CSpore *(const char *,class Vector,class Vector,class CBaseEntity *)' not found in 'CSpore'
d:\sdk\single-player source\dlls\weapons.h(58) : see declaration of 'CSpore'
Half, это означает, что сигнатура метода, указанная в h-файле не соответствует сигнатуре метода в cpp-файле. Ошибка, кстати, запросто гуглится и чтобы её понять, необязательно даже знать C++, учись пользоваться поиском.
FreeSlave для новичка не очень понятно объяснил. Half короче, в описании класса CSpore (weapons.h) у CreateSporeGrenade и CreateSporeRocket набор аргументов не такой, как в cpp-файле (spore.cpp).
Очень просто. Вопросы на форумах задают только новички. Бывалые люди знают про существование гугла, а также то, что на 99% вопросов уже есть ответы в интернете.
Внезапно возник ещё один вопрос:
Почти скомпилил Спрайтовый поезд, осталась всего 1-а ошибка:
d:\sdk\single-player source\dlls\spritetrain.cpp(147) : error C2440: 'static_cast' : cannot convert from '' to 'void (__thiscall CBaseToggle::*)(void)'
None of the functions with this name in scope match the target type
Что удивительно, SetMoveDone( Wait ) (147 строка) используется только для брашевых энтитей. А что написать для точечной?
П. С. Может я плохо искал, но вопросы про исходник env_spritetrain-а мне пока не попадались.
С горем пополам, скомпилил всё таки этот spritetrain, опираясь на триггер-Камеру. Теперь на карте его (спрайтовый поезд) вообще нет! Что делать, ума не приложу!
Что же я не так сделал?
Вложение: sprtrain.zip (2.3 кб)
Этот файл был скачан 76 раз.
Half писал: С горем пополам, скомпилил всё таки этот spritetrain, опираясь на триггер-Камеру
Всё правильно, так он и делается.
Добавлено 22-06-2013 в 18:36:
Посмотрел твой код. Копипаста без малейшего понимания зачем и куда.
Это не будет работать. Во первых Move надо объявить как EXPORT.
Во вторых задать SetThink( Move ) при активации. В третьих задать nextthink = gpGlobals->time, чтобы тчинкало каждый кадр, в четвертых надо найти m_pentPath причём не в спавне, а в Activate. У тебя там есть код, который этим занимается, но результат записывает почему-то в pevCurrentTarget.
Т.е. ты попросту скидал в один класс совершенно разные куски кода и теперь удивляешься почему не работает.
ЗЫ. Wait, Next вообще убери, они не будут работать для MOVETYPE_NOCLIP.
Добавлено 22-06-2013 в 18:41:
Вот боле-мене исправленный пример. Я его не проверял, но по идее должно работать.
Вложение: sprtrain.zip (1.6 кб)
Этот файл был скачан 78 раз.
Дядя Миша писал: Посмотрел твой код. Копипаста без малейшего понимания зачем и куда.
Это ещё что! Знал бы ты, как я с этим кодом около года воевал! Потому и выглядел, как копи-паста.
Цитата:
Дядя Миша писал: Вот боле-мене исправленный пример
Спасибо за исходник, притензий не имею, но комилятору не нравится "UTIL_SetOrigin (pev, m_pentPath->v.origin );"
Цитата:
D:\SDK\Single-Player Source\dlls\spritetrain.cpp(94) : error C2039: 'v' : is not a member of 'CBaseEntity'
d:\sdk\single-player source\dlls\cbase.h(137) : see declaration of 'CBaseEntity'
D:\SDK\Single-Player Source\dlls\spritetrain.cpp(94) : error C2228: left of '.origin' must have class/struct/union type