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

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