Feb 112019
 

Переключаемый (аварийный) свет

Для реализации переключаемого света нам понадобится:

  • light_surface (2 шт.)
  • trigger_changetarget (2 шт.)
  • env_render (2 шт.)
  • multi_manager (3 шт)
  • trigger_auto (1 шт.)
  • func_door (1 шт.)
  • func_rot_button (1 шт.)
  • func_wall (1 шт.)
  • func_detail (1 шт.)

Примечание: В этом методе, для реализации аварийного освещения, используется брашевая энтить (func_wall), в которую входят аварийные источники света. При включении аварийного освещения, к показателям wpoly прибавятся полигоны ламп аварийного освещения.

Continue reading »

Feb 142018
 


Спасибо npocTo_LaM за данный метод 😉
Пример использования данных лучей можно просмотреть на карте 35hp_party_2

Для создания крутящихся лучей нам понадобится

  • Env_beam(16 шт.)
  • Func_train(16 шт.)
  • Info_target(1 шт.)
  • Path_corner(16 шт.)
  • Multi_manager(2 шт)
  • Trigger_auto(1 шт.)

Continue reading »

Apr 202017
 

Привет. Совсем недавно меня попросили сделать спрайт лайфбара (полоску жизни) для одного молодого КС сервера. В отличии от нашей версии необходимо было нарисовать цифровой лайфбар, предусматривающий 200 очков здоровья. Вспомните старенькие игры Worms, где над головами червей отображалось их состояние. Кроме того, требовались четыре спрайта с цветами на каждую команду (красный, синий, зеленый и желтый). В итоге, я насчитал 804 кадра, которые визуализировать вручную очень долго и скучно. К счастью, нас окружают удивительные технологии. Методов, автоматизирующих данный процесс, очень много. Одним из них я поделюсь с Вами в этой статье. Continue reading »

Jan 112014
 

Прим. копи-пастера: эта статья здесь, потому что она является дополнением к статьям по модулю Orpheu.

Автор: 6a6kin

Содержание:
I. Основы
II. Создание шаблона сигнатуры функции
Приложение А. Поиск необходимой функции

I. Основы
Знаете ли вы, во что превращается код программы на C++ или ассемблере после компиляции? Тот, кто когда-нибудь открывал исполняемые файлы текстовым редактором, видел там только кучу непонятных символов. На самом деле, это последовательность байт, в которую превратилась ваша программа. Все дело в том, что процессор ничего знает о С++, классах, объектах, он даже не видит разницы между положительными и отрицательными числами. Процессор умеет выполнять только микрокоманды, вроде сложения или деления. Эти микрокоманды представляют собой небольшие последовательности байт, из которых и состоит программа. Считывая байты, процессор распознает микрокоманды и выполняет их.
Continue reading »

Nov 082013
 

Опишу метод вкратце. Импортируем нашу карту в Блендер, с помощью физического движка Bullet генерируем анимацию, компилируем модель и добавляем ее обратно на карту в виде энтити. Мы не будем использовать BMOD, да и весь AMXX вообще. Конечно, можно было воспользоваться 3D Max, но Блендер бесплатен и выгоден в коммерческом плане.

Пара примеров с этим методом:



Continue reading »

Jul 302013
 

BMOD

Что такое BMOD?
BMOD позволяет amxx программистам использовать альтернативный физический движок (Bullet). Немного видео для наглядности:

https://youtube.com/watch?v=Nn26KkoIGNY
https://youtube.com/watch?v=CUmNRsVro1U
https://youtube.com/watch?v=vUCIKGlyDBQ
https://youtube.com/watch?v=fAJlHJehlI8

Как это работает?
Во время загрузки игровой карты движок Bullet создает свою. У нас получается два “мира” – один со старой HL1 физикой и один с Bullet Physics. Это позволяет добавить объект в мир Bullet и синхронизировать движения с любой энтити в мире HL1.
Continue reading »

May 302013
 

Автор: joaquimandrade

Модуль Orpheu дает скриптеру возможность использовать функции, которые было бы невозможно использовать без него (включая функции от других плагинов MetaMod).Модуль работает, как на Windows, так и на Linux.
Начиная с версии 2.1 ( 29 января 2010 г.), Orpheu также поддерживает прямой доступ к памяти.

Суть работы заключается в следующем:
Модуль использует преобразования между типами С++ и Pawn, и позволяет вызывать функции, указав ее адрес в памяти, а также используемые ею аргументы. Этот метод включает в себя общие принципы работы со структурами С++.

Например, предположим, что вы хотите использовать эту функцию:
void PM_Move( struct playermove_s *ppmove, qboolean server)

Она получает один аргумент типа “playermove_s” и другой типа “qboolean”. Значения эта функция не возвращает.

Пока типы, необходимые функции, используются в модуле, вы можете использовать ее. Если один из типов не используется, то Вы можете подключить его напрямую, и все равно продолжать работать с функцией, к примеру подключать ее, так как при подключении функции Вам не надо заботиться обо всех ее аргументах.
Continue reading »

May 252013
 

Этот плагин поможет избавиться от некоторой нудной работы, такой как поиск оффсетов, добавления своих дополнительных функций и регистрирования команд типа register_clcmd(“weapon_mygun”, “switch_handler”)

Сейчас всё объясню на примере тестового плагина, который меняет hud ножу.
Continue reading »