thecre, Ладно, придется забить на это. Тогда у меня другой вопрос, как сделать самонаводящийся снаряд? (если стрельнуть не целясь во врага и снаряд полетит в ближайшего)
Не проверял, должно работать только для нулевого mip-уровня.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Здравствуйте, можете подсказать, как прибавить какое-нибудь количество здоровья при стрельбе? Например, когда активируется FireColt(), то оно должно давать +10 жизней после каждого выстрела.
1. Ошибок не выдает, но и не работает. Что не так (хотя скорее всего все). 2. Есть ли какая система кодирования букв в числа в движке, или самим проверками надо делать.
Всё очень серьёзно. P.S. Не пишите мне на Email, пишите в Л.С.
Выражение, взятое в кавычки, всегда возвращает тип const char*. То есть, в этой строке ты вовсе не получаешь элемент строки m_strMessage под номером iStringPos. Вместо этого ты просто помещаешь в память строку "m_strMessage.str_String[iStringPos]", а затем адрес этой строки записываешь в m_fLIC. Очевидно, что вот здесь
ЦитатаCAHEK ()
if(m_fLIC== "q")
условие никогда не будет выполняться, потому что в m_fLIC лежит адрес одной строки, а ты его пытаешься сравнить с адресом другой строки. Сравнивать нужно не адреса строк, и даже не сами строки. Тебе нужно сравнивать символы. Вот так:
Код
m_iLIC = m_strMessage.str_String[iStringPos]; if (m_iLIC == 'q') { ...
Обрати внимание на две вещи. Во-первых, я не зря написал m_iLIC вместо m_fLIC, так как один символ в кодировке ASCII занимает один байт. В идеале, символы ASCII следует хранить в типе char (для юникода есть тип wchar_t), но насколько я помню, среди поддерживаемых типов параметров энтити нету типа char, поэтому можно взять INDEX, но уж точно не FLOAT; это неправильно с логической точки зрения. Во-вторых, буква q в условии оператора if заключена в одинарные скобки. Любая буква в одинарных скобках возвращает ASCII-код этой буквы, то есть, этот код уже можно сравнивать с другими буквами.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Появилась проблема, использовал функцию нетворка "IsPlayerLocal()" в коде игрока, для рендера некоторых ентить определенному игроку, а при просмотре демки от лица этого игрока ничего не видно. Существует ли другой способ, чтобы не лезть в render game view?
Отдельные 3Д-объекты можно отрисовывать в HUD вместо отрисовки в сам мир. ) Надо лишь грамотно рассчитывать их положение в каждом кадре.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
PlayerSource/PlayerTarget вообще не имеют отношения к рендерингу. Неужели воспроизведение демки так важно? Я и не помню, когда последний раз этим пользовался.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Нужна помощь. Начнем с того, что в переменных класса есть множество переменных:
Код
properties: 50 INDEX m_iValue_0 = 0, 51 INDEX m_iValue_1 = 0, 52 INDEX m_iValue_2 = 0, 53 INDEX m_iValue_3 = 0, 54 INDEX m_iValue_4 = 0,
Нужно сделать множество этих переменных в одну (какой нибудь массив с типом <INDEX>), чтобы все переменные обязательно могли синхронизироваться по мультиплееру, а также чтобы можно было пройтись по ним циклом.
Массив сложно синхронизировать. Ты можешь посмотреть, как это реализовано в CPlayer - там после основных properties (перед components) есть ещё один блок между фигурными скобками {}, в котором, среди всего прочего, лежит массив полученных сообщений (CDynamicStackArray, кажется). Но всё, что находится в этом особом блоке, не сериализуется автоматически (то есть, не сохраняется в .WLD/.SAV), поэтому для таких переменных-членов нужно вручную писать сохранялку-загружалку (у CPlayer переопределены методы Save_t/Load_t, в которых происходит загрузка и сохранение массива с сообщениями). Но если твой массив константного размера, и не сильно большой, можно схитрить и не писать вручную загрузку/сохранение. Для начала, пишешь кучу переменных (как у тебя сейчас), а потом, когда тебе нужна i-тая переменная, ты к ней обращаешься вот так:
Код
(&m_iValue_0)[i]
Тут ты берешь адрес m_iValue_0 и обращаешься к нему, как к массиву. Так как переменные в объекте класса разложены по очереди с минимальным шагом в 4 байта, такое делать совершенно безопасно. ) И не надо беспокоиться о синхронизации массивов.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Нельзя вставлять один wait в другой, поэтому придётся сделать какую-нибудь такую вспомогательную процедуру:
Код
SendToAllTargets() { m_iStringPos = 0; while (TRUE) { wait (m_fWaitTime) { on (EBegin) : {
// тут делаешь то, что тебе нужно
++m_iStringPos; if (m_iStringLength <= m_iStringPos) { return; } resume; } on (ETimer) : { stop; } } } return; }
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
SendToAllTargets() { iStringPos = 0; while (TRUE) { wait (m_fWaitTime) { on (EBegin) : {
// тут делаешь то, что тебе нужно m_iLIC = m_strMessage.str_String[iStringPos]; ((CEnemyBase*)&*m_penTarget1)->m_iQAZ = m_iLIC; SendToTarget(m_penTarget1, m_eetEvent1, m_penCaused);
++iStringPos; if (iStringLength >= iStringPos) { return; } resume; } on (ETimer) : { stop; } } } return; };
Здравствуйте. Появилась проблема. Значит, вчера компилил, всё было норм. Сегодня кое-что подправил в HUD.cpp (просто изменил текст в одной из СВОИХ ""), и решил перекомпилить, и у меня появились эти ошибки:
Код
--------------------Configuration: EntitiesMP - Win32 Release-------------------- Compiling... Common.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers HUD.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers Camera.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers Comp.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers CrateBus.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers DoorController.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers PlayerActionMarker.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers PlayerAnimator.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers PlayerView.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers PlayerWeapons.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(719) : error C2556: 'class CPlayerAnimator *__thiscall CPlayerWeapons::GetAnimator(void)' : overloaded function differs only by return type from 'int *__thiscall CPlayerWeapons::GetAnimat or(void)' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : see declaration of 'GetAnimator' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(719) : error C2371: 'GetAnimator' : redefinition; different basic types C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : see declaration of 'GetAnimator' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3515) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3515) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3562) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3562) : error C2227: left of '->FireAnimationOff' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3575) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3575) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3625) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3625) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3686) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3686) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3711) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3711) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3770) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3770) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3866) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3866) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3966) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3966) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3997) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(3997) : error C2227: left of '->FireAnimationOff' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4194) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4194) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4225) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4225) : error C2227: left of '->FireAnimationOff' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4316) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4316) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4387) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4387) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4426) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4426) : error C2227: left of '->FireAnimation' must point to class/struct/union C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4609) : error C2264: 'GetAnimator' : error in function definition or declaration; function not called C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(4609) : error C2227: left of '->FireAnimation' must point to class/struct/union PlayerWeaponsEffects.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers PowerUpItem.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers SpawnerProjectile.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers Summoner.cpp C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2143: syntax error : missing ';' before '*' C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'CPlayerAnimator' : missing storage-class or type specifiers C:/Archive/Games/Sam Utils/sdk107/EntitiesMP/PlayerWeapons.es(718) : error C2501: 'GetAnimator' : missing storage-class or type specifiers Generating Code... Error executing cl.exe.
CAHEK, проверь значения iStringLength и iStringPos. STPROD, перекомпилируй StdH.cpp.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
что это class. Но когда я подписал "class" перед CPlayerAnimator, всё сработало! Поэтому, если у вас что-то жалуется на некий класс, который внезапно перестал работать, подпишите "class"
Код
class CPlayerAnimator *GetAnimator(void) { ASSERT(m_penPlayer!=NULL); return ((CPlayerAnimator*)&*((CPlayer&)*m_penPlayer).m_penAnimator); }