Пятница, 29.03.2024, 05:08
 
Приветствую Вас Guest | RSS
Главная страница | Рандомные модели - Форум | Регистрация | Вход
[Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум » Игровая мастерская » Программирование » Рандомные модели (Рандомные модели аля citizen17)
Рандомные модели
HellMapperДата: Вторник, 01.12.2009, 14:59 | Сообщение # 1
Scout
Группа: Проверенные
Сообщений: 588
Репутация: 27
Статус: Offline
Люди, хелп ми. У меня 24 вида солдат т.е на каждый вид комбайнов(soldier, guard и super_soldier) по 8 моделей. Задача в том чтобы при спавне моделей для каждого вида комбайнов выбирались свои рандомные модели из указанных папок. Это похоже как у citizen'ов. Но пока мои творения успехов не дают. Если у кого есть идеи на этот счет, говорите.

Добавлено (01.12.2009, 14:59)
---------------------------------------------
Итак я создал функцию выбора рандомной модели но в ней нехватает одного компонента(угадайте) - рандом. Вот сей код

Code

static const char *g_ppszRandomModels[] =   
{
      "models/1.mdl",

   "models/2.mdl",
     
   "models/3.mdl",

};

void CNPC_CombineS::Precache()
{

   const char *pModelName = STRING( GetModelName() );
   if( !Q_stricmp( pModelName, "models/combine_super_soldier.mdl" ) )
   {
    m_fIsElite = true;
   }
   else
   {
    m_fIsElite = false;
   }
   int nModels = ARRAYSIZE( g_ppszRandomModels );
   int i;
for ( i = 0; i < nModels; ++i )
{
   if( !GetModelName() )
   {
    SetModelName( MAKE_STRING(g_ppszRandomModels[i]) );
   }
}
   PrecacheModel( STRING( GetModelName() ) );

Идея такова, что модели должны рандомно браться из массива g_ppszRandomModels, но вот зараза не берет. Кто заинтересовался можете подумать. А кстати игра выбирает самое первое значение из массива g_ppszRandomModels.


Я живу в будущем City 15







Если Вы можете, играя в "Counter-Strike: Sourсe", посадить хедшот ножом через стену в попу своему противнику, который находится на другом конце карты, на другом сервере, и который играет в "Team Fortress 2" и находится под действием убер-заряда, то знайте, что в плане читерства вы достигли совершенства. ©IPa


Было отредактированно - HellMapper - Вторник, 01.12.2009, 15:02
 
HitmenДата: Вторник, 01.12.2009, 15:17 | Сообщение # 2
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
Работает? smile

Туториалы по программированию, мои и слегка изменённые чужие. :)

Sp@ce Project Blog
Sp@ce Project Web-Site

I'm in spaaace!
Я в контакте
Я в Facebook'е

 
HellMapperДата: Вторник, 01.12.2009, 15:31 | Сообщение # 3
Scout
Группа: Проверенные
Сообщений: 588
Репутация: 27
Статус: Offline
Нет sad

Я живу в будущем City 15







Если Вы можете, играя в "Counter-Strike: Sourсe", посадить хедшот ножом через стену в попу своему противнику, который находится на другом конце карты, на другом сервере, и который играет в "Team Fortress 2" и находится под действием убер-заряда, то знайте, что в плане читерства вы достигли совершенства. ©IPa
 
HitmenДата: Вторник, 01.12.2009, 15:37 | Сообщение # 4
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
Будет время, повожусь, раз так.

Туториалы по программированию, мои и слегка изменённые чужие. :)

Sp@ce Project Blog
Sp@ce Project Web-Site

I'm in spaaace!
Я в контакте
Я в Facebook'е

 
HellMapperДата: Вторник, 01.12.2009, 16:06 | Сообщение # 5
Scout
Группа: Проверенные
Сообщений: 588
Репутация: 27
Статус: Offline
У меня есть еще одна идея как сделать рандомные модели. Но я не знаю как задать рандому промежутки например от 1 до 8. Если узнаю можно будет сделать по следующему.

Code

if( n = 1)
{
SetModelName(.....
}
if( n = 2) и т.д.

Добавлено (01.12.2009, 16:05)
---------------------------------------------

Code

if( !GetModelName() )
  {
     int m;
  m=rand();
  RandomInt(1,3);
         if(m=1)
   {
   SetModelName( MAKE_STRING("models/1.mdl") );
   }
         if(m=2)
   {
   SetModelName( MAKE_STRING("models/2.mdl") );
   }
         if(m=3)
   {
   SetModelName( MAKE_STRING("models/3.mdl") );
   }
   
}
  PrecacheModel( STRING( GetModelName() ) );

Вот еще один вариант, но чето мод берет только модель под номером 3

Добавлено (01.12.2009, 16:06)
---------------------------------------------
Че не так не понимаю


Я живу в будущем City 15







Если Вы можете, играя в "Counter-Strike: Sourсe", посадить хедшот ножом через стену в попу своему противнику, который находится на другом конце карты, на другом сервере, и который играет в "Team Fortress 2" и находится под действием убер-заряда, то знайте, что в плане читерства вы достигли совершенства. ©IPa


Было отредактированно - HellMapper - Вторник, 01.12.2009, 15:51
 
HitmenДата: Вторник, 01.12.2009, 16:12 | Сообщение # 6
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
Ты попробуй сделать запрос на получение значиений функции, я подозреваю, что она получает значение, просто ты его не используешь, нужна функция, которая читает значение и на основе этого должен быть выбор моделей, т.е.
if (функция = n)
{
SetModelName(...)
}

Пишу функцию так, без вв-кода, т.к. с мобилы.


Туториалы по программированию, мои и слегка изменённые чужие. :)

Sp@ce Project Blog
Sp@ce Project Web-Site

I'm in spaaace!
Я в контакте
Я в Facebook'е

 
HellMapperДата: Вторник, 01.12.2009, 16:24 | Сообщение # 7
Scout
Группа: Проверенные
Сообщений: 588
Репутация: 27
Статус: Offline
Если не трудно создай код, а то запарился

Добавлено (01.12.2009, 16:24)
---------------------------------------------
Смотри ф-ию precache в Combines


Я живу в будущем City 15







Если Вы можете, играя в "Counter-Strike: Sourсe", посадить хедшот ножом через стену в попу своему противнику, который находится на другом конце карты, на другом сервере, и который играет в "Team Fortress 2" и находится под действием убер-заряда, то знайте, что в плане читерства вы достигли совершенства. ©IPa
 
HitmenДата: Вторник, 01.12.2009, 16:59 | Сообщение # 8
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
Окей, буду за компом, попробую. smile
Результаты сюда буду выкладывать в виде функций.


Туториалы по программированию, мои и слегка изменённые чужие. :)

Sp@ce Project Blog
Sp@ce Project Web-Site

I'm in spaaace!
Я в контакте
Я в Facebook'е

 
AndreazzzДата: Вторник, 01.12.2009, 17:09 | Сообщение # 9
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
хитмен, а ты через какой браузер? ? ? я через оперу мобиле 10 beta Кстати я тоже позырю

 
StriderДата: Вторник, 01.12.2009, 18:01 | Сообщение # 10
Spy
Группа: Проверенные
Сообщений: 1465
Репутация: 51
Статус: Offline
Andreazzz, не оффтопь, да и оперы 10 на мобиле не существует...

HellMapper, Ты бы в своём коде else if использовал)

Code
       if(m=1)
    {
    SetModelName( MAKE_STRING("models/1.mdl") );
    }
    else if(m=2)
    {
    SetModelName( MAKE_STRING("models/2.mdl") );
    }
    else if(m=3)
    {
    SetModelName( MAKE_STRING("models/3.mdl") );
    }
 
HitmenДата: Вторник, 01.12.2009, 18:05 | Сообщение # 11
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
Кста, вот функция из npc_citizen17, но она корявая, если честно.

Code
void CNPC_Citizen::PrecacheAllOfType( CitizenType_t type )
{
  if ( m_Type == CT_UNIQUE )
   return;

  int nHeads = ARRAYSIZE( g_ppszRandomHeads );
  int i;
  for ( i = 0; i < nHeads; ++i )
  {
   if ( !IsExcludedHead( type, false, i ) )
   {
    PrecacheModel( CFmtStr( "models/Humans/%s/%s", (const char *)(CFmtStr(g_ppszModelLocs[m_Type], "")), g_ppszRandomHeads[i] ) );
   }
  }

  if ( m_Type == CT_REBEL )
  {
   for ( i = 0; i < nHeads; ++i )
   {
    if ( !IsExcludedHead( type, true, i ) )
    {
     PrecacheModel( CFmtStr( "models/Humans/%s/%s", (const char *)(CFmtStr(g_ppszModelLocs[m_Type], "m")), g_ppszRandomHeads[i] ) );
    }
   }
  }
}


Туториалы по программированию, мои и слегка изменённые чужие. :)

Sp@ce Project Blog
Sp@ce Project Web-Site

I'm in spaaace!
Я в контакте
Я в Facebook'е

 
HellMapperДата: Вторник, 01.12.2009, 18:29 | Сообщение # 12
Scout
Группа: Проверенные
Сообщений: 588
Репутация: 27
Статус: Offline
Да Hitmen, я ее тож зырел и пытался юзать но не вышло

Я живу в будущем City 15







Если Вы можете, играя в "Counter-Strike: Sourсe", посадить хедшот ножом через стену в попу своему противнику, который находится на другом конце карты, на другом сервере, и который играет в "Team Fortress 2" и находится под действием убер-заряда, то знайте, что в плане читерства вы достигли совершенства. ©IPa
 
HitmenДата: Вторник, 01.12.2009, 18:57 | Сообщение # 13
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
HellMapper, Тут лишнее нужно урезать)

Туториалы по программированию, мои и слегка изменённые чужие. :)

Sp@ce Project Blog
Sp@ce Project Web-Site

I'm in spaaace!
Я в контакте
Я в Facebook'е

 
HellMapperДата: Вторник, 01.12.2009, 19:01 | Сообщение # 14
Scout
Группа: Проверенные
Сообщений: 588
Репутация: 27
Статус: Offline
Ну да типо типов этого
Code
if ( m_Type == CT_UNIQUE )
    return;
- выбор типа ситизена Ребел Обычный Медик и т.д.
А если задавать у солдата модель именно в хамере через fgd то все работает, но есть свои недостатки.


Я живу в будущем City 15







Если Вы можете, играя в "Counter-Strike: Sourсe", посадить хедшот ножом через стену в попу своему противнику, который находится на другом конце карты, на другом сервере, и который играет в "Team Fortress 2" и находится под действием убер-заряда, то знайте, что в плане читерства вы достигли совершенства. ©IPa
 
HitmenДата: Вторник, 01.12.2009, 19:26 | Сообщение # 15
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
Кста, может через .fgd пробнуть, там же выбор модели?

Туториалы по программированию, мои и слегка изменённые чужие. :)

Sp@ce Project Blog
Sp@ce Project Web-Site

I'm in spaaace!
Я в контакте
Я в Facebook'е

 
DetLeRДата: Вторник, 01.12.2009, 21:46 | Сообщение # 16
Engineer
Группа: Администраторы
Сообщений: 1731
Статус: Offline
Hitmen, неа. Не прокатит. Надо кастомный выбор моделей делать как у ситизенов, но у мя не получилось.
 
HitmenДата: Вторник, 01.12.2009, 23:05 | Сообщение # 17
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
У меня та жа фигня, всё по порядку делал, но не получилось. sad

Туториалы по программированию, мои и слегка изменённые чужие. :)

Sp@ce Project Blog
Sp@ce Project Web-Site

I'm in spaaace!
Я в контакте
Я в Facebook'е

 
AndreazzzДата: Среда, 02.12.2009, 21:12 | Сообщение # 18
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
Strider, не хавари того чо не знаеш
Quote
http://www.opera.com/mobile/


 
HitmenДата: Среда, 02.12.2009, 21:26 | Сообщение # 19
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
Andreazzz, Это не для телефонов, а для смартфонов и коммуникаторов, а так же для ПДА (КПК), скажу тебе, что они сильно отличаются от обычного телефона.
Последняя версия оперы для мобилы - Opera Mini 5.0 beta


Туториалы по программированию, мои и слегка изменённые чужие. :)

Sp@ce Project Blog
Sp@ce Project Web-Site

I'm in spaaace!
Я в контакте
Я в Facebook'е

 
AndreazzzДата: Среда, 02.12.2009, 21:43 | Сообщение # 20
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
Hitmen, Mini 5beta она тожесамое что и Mobile 10 beta

 
Форум » Игровая мастерская » Программирование » Рандомные модели (Рандомные модели аля citizen17)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Помощь в разработке форума: HOMiE7