2017/11/22, Ср, 20:39 Приветствую Вас ---- | RSS
Регистрация
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Jack-Hang 
Форум » Основной раздел » Кодинг Статьи » [Кодинг] Ограничение классов оружия
[Кодинг] Ограничение классов оружия
Jack-HangДата: Пн, 2008/07/21, 15:31 | Сообщение # 1
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
В player.h задаём переменную, например :
Code
int m_iFirstSlot;  //Primary Weapons, only one per slot

Незабываем также её занести в SaveData.

Потом в коде самой пушки, там где функция подбора пишем примерно так :

Code
pPlayer->m_iFirstSlot = 1;

А в player.cpp

Ищем функцию AddPlayerItem

И в ней делаем проверку на подбираемое оружие.
Примерно так :

Code
if ( pItem->m_iId == WEAPON_MP5 )
{
      if( m_iFirstSlot == 1 )
          {
              return FALSE;
          //Тут можем вписать мессагу
      }
      else
          {
              return TRUE;
      }
}
else if ( pItem->m_iId == WEAPON_SHOTGUN )
{
      if( m_iFirstSlot == 1 )
          {
              return FALSE;
          //Тут можем вписать мессагу
      }
      else
          {
              return TRUE;
      }
}

Далее ищем функцию DropPlayerItem и делаем в ней следующую проверку :

Code
if ( pWeapon->m_iId == WEAPON_MP5 )
{
      m_iFirstSlot = 0;
}
else if ( pWeapon->m_iId == WEAPON_SHOTGUN )
{
      m_iFirstSlot = 0;
}

И так далее...
А также для Пистолетов нужно создавать свою переменную и делать новую проверку. Ну вот и всё вроде бы ничего не забыл.




 
TalisДата: Пн, 2009/01/12, 16:34 | Сообщение # 2
Noob
Репутация: 0
Регистрация:2008/09/06
Сообщений: 14
Статус: Offline
Jack-Hang, можно и проще. Создаешь массив bool на 8 элементов (1-9 слоты, или меньше, смотря сколько у тебя слотов оружия доступно):
Code
bool slot_taken[8]; //занятые слоты оружия
Заносишь его в savedata:
Code
DEFINE_ARRAY( CBasePlayer, slot_taken, FIELD_BOOLEAN, 8), //занятые слоты
В функции подбора:
Code
if(pItem->iItemSlot() != 5)
         //не гранаты
     {
      if(slot_taken[pItem->iItemSlot()-1])//не забиваем занятый слот оружия; -1 потому что нумерация с 0
       return false;
      else
       slot_taken[pItem->iItemSlot()-1] = true; //иначе пишем что слот занят
     }
В функции выброса оружия:
Code
slot_taken[pWeapon->iItemSlot()-1] = false; //пишем что слот свободен
В функции подбора выбросившегося weaponbox'а:
Code
bool deleteme = true;
далее после while ( m_rgpPlayerItems[ i ] ) { pItem = m_rgpPlayerItems[ i ];
Code
if(pPlayer->slot_taken[pItem->iItemSlot()-1])//если у игрока уже есть оружие этого типа
        {
                       deleteme = false; //не удалять
         break;
        }
далее в самом конце
Code

           SetTouch(NULL);
     if(deleteme)//если игрок забрал все - удаляем
     {
      EMIT_SOUND( pOther->edict(), CHAN_ITEM, "items/gunpickup2.wav", 1, ATTN_NORM );
      UTIL_Remove(this);
     }

Вот так вот вкрадце... можно всякую косметику наложить, типа модельки выброшенного оружия... Но это уже другая тема smile Главное не забыть новому оружию прописать int iItemSlot( void )






Сообщение отредактировал Talis - Пн, 2009/01/12, 16:36
 
Jack-HangДата: Вт, 2009/01/13, 14:32 | Сообщение # 3
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
Ну да, можно и так ^_^, а если я хочу по 2 пушки в каждом слоте? smile



 
TalisДата: Пт, 2009/01/16, 20:10 | Сообщение # 4
Noob
Репутация: 0
Регистрация:2008/09/06
Сообщений: 14
Статус: Offline
Тогда можно создать ту же логическую матрицу 8x2, где 8 - слоты, 2 - позиции, смотря сколько слотов и позиций у тебя в моде. Если хочешь для каждого слота разное количество - поставь максимальное количество и при инициализации заполни ненужные позиции true.
В любом случае лучше использовать логические чем целочисленные - память побереги. true/false (2 варианта) против -32768 .. 32767 (65535 варианта), что легче будет? smile тыб еще long int создал (-2147483648 .. 2147483647) biggrin В hl1 это незначительно, знаю, но все же - лучше привыкать сразу, если и дальше хочешь писать smile






Сообщение отредактировал Talis - Пт, 2009/01/16, 20:10
 
Jack-HangДата: Сб, 2009/01/17, 14:19 | Сообщение # 5
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
Хорошо, я учту на будущее happy



 
megaeregiДата: Вс, 2013/06/09, 15:12 | Сообщение # 6
Noob
Репутация: 0
Регистрация:2013/06/09
Сообщений: 1
Статус: Offline
Было бы там 8 слотов то можно было бы в один байт всё запихать (00110110, к примеру).
http://exchangex.ru/index.php?who=6299
 
ZVERДата: Сб, 2013/11/30, 01:15 | Сообщение # 7
Noob
Репутация: 0
Регистрация:2013/11/30
Сообщений: 1
Статус: Offline
Уникальная подборка для спамера
Вот кто-то спрашивал, решил выложить
Хрумер 7.0.10 рабочий http://depositfiles.com/files/83gxuwpz4
Ucoz постер парсер http://depositfiles.com/files/hh2q67f3i
Ask постер парсер регер http://depositfiles.com/files/u4wfill8a
Твиттер постер.регер.спамер http://depositfiles.com/files/u6f7b42zt
Одноклас парсер.постер.регер комбайн ! http://depositfiles.com/files/jann9xt3j
Мой мир постер http://depositfiles.com/files/h94tut2ik
Мой Мир парсер по категориям http://depositfiles.com/files/e2uhz15sg
Майл рассылка приват http://depositfiles.com/files/fofqii085
Вконтакте постер парсер http://depositfiles.com/files/3po9shn16
XenForo постер http://depositfiles.com/files/lehpda36y
FlooSIP автодозвон флудер http://depositfiles.com/files/j9fz4yued
Mamba.Ru постер http://depositfiles.com/files/ygr1vj6v4
Почти весь софт приват
 
GDFДата: Пт, 2013/12/20, 11:41 | Сообщение # 8
Noob
Репутация: 0
Регистрация:2013/12/20
Сообщений: 1
Статус: Offline
Темные методы продвижения сайта

Постеры, спамеры, регеры,инвайтеры, чекеры

Ask постер парсер регер http://yadi.sk/d/4NArrGvlDqpRt
FlooSIP автодозвон с номерами http://yadi.sk/d/Yd3GLFlQDqhC4
Mamba.Ru постер http://yadi.sk/d/QxhzSNbwDqbT9
Ucoz постер парсер http://yadi.sk/d/cplaP0wBDqpRv
XenForo постер http://yadi.sk/d/DRX9MIMPDqckM
Вконтакте постер парсер http://yadi.sk/d/E00z9JIiDr2ga
Emali рассылка приват 3 программы http://yadi.sk/d/Q92ZRtTIDqbTq
Мой Мир парсер по категориям http://yadi.sk/d/hNosGcrZDqbRD
Мой мир постер http://yadi.sk/d/bYeb86-zDqbSU
Однокласники отличный комбайн ! http://yadi.sk/d/iSqWPbpcDqzop
Хрумер 7.0.10 рабочий http://yadi.sk/d/BVwppPK6DqzoC
Твиттер постер регер http://yadi.sk/d/kYL75aybDqpRr

http://revision.besaba.com/
 
GranaDeДата: Вс, 2013/12/22, 19:28 | Сообщение # 9
Noob
Репутация: 0
Регистрация:2013/12/22
Сообщений: 1
Статус: Offline
Если нужно разместить вашу информацию на
множестве ресурсах, то этот инструмент поможет
вам решить эту задачу...
Forum Poster - гарантированный постинг на тысячах
форумам (Россия, Украина, Казахстан, Белорусия).

http://seosoft.url.ph/
 
Форум » Основной раздел » Кодинг Статьи » [Кодинг] Ограничение классов оружия
Страница 1 из 11
Поиск:

Сайт управляется системой uCoz Copyright by kiexStudio © 2009