Всем привет! Не знаю приживется тема или нет, но не попробовав не узнаешь, а ломать не строить Суть темы? на форуме есть не мало мододелов которые не могут писать код на ACS и\или Decorate, а так же есть те кто может. Для тех кому нужны скрипты, предлагаю постить тут свои заказы на скрипты. Я буду добавлять заказы в шапку темы под спойлер "Заказы" и любой желающий помочь программист, сможет просмотреть список актуальных заказов, эдакая разминка для кодера, а может и проверка своих способностей +) Если вы хотите оставить заказ на какой либо скрипт, постарайтесь как можно четче изложить что вам надо от скрипта т.е. опишите что должен делать скрипт.
Так же предлагаю программистам постить тут свои скрипты, функции, библиотеки, в общем все что считаете более менее полезным и\или сложным в написании. Постить элементарщину наподобие [Script 1 (void){PrintBold(s:"text");}] думаю смысла нет.) Все что будет более менее годным, так же буду добавлять в шапку темы под спойлер. Надеюсь с помощью этой темы, получится объединить\собрать\увеличить все те крохи полезного что есть. Аналог ассетам хД
Шаблон добавления скриптов, функций и т.д. копипастим и заполняем:
Скрытый текст:
Если ваш скрипт сложный, большой, его описание и добавление требует отдельной темы.. создавайте тему, после заполняйте вкратце шаблон + ссылку на тему.
Шаблон для заказа скриптов, копипастим и заполняем:
Скрытый текст:
Заполняем как можно подробнее что должен делать скрипт. Сообщения типа: "Мне нужен скрипт грабить корованы" или "хочу оружие как в брутале", будет удаляться, автор будет награжден плюсом.
Тут будут размещаться заказы на скрипты, более новые заказы вверху спойлера. Заказы периодически будут очищаться по мере выполнения или длительного НЕ выполнения или чрезмерного накопления.
Тут будут размещаться скрипты, функции. ----------------------------------------------------------------------------------------------------------------
ACSUtils - библиотека для скриптинга ZDoom и Zandronum [Автор Korshun]
Скрытый текст:
Имя скрипта\функции: ACSUtils - библиотека для скриптинга ZDoom и Zandronum
Автор: Korshun
Описание: Это огромная библиотека функций для скриптинга. Тут есть всё, чего не хватает в здуме. Около 300 функций для упрощения кода, среди них: математика, 3д надписи, мышь, ChangeFlag, GetCVarFixed.
1) Качаем апгрейднутый компилятор, без него сломается от количества функций (ACC, BCC, либо GDCC)
2) Копируем acsutils.acs в проект.
3) Прописываем в своём скрипте код как по ссылке выше.
4) Если вы скачали именно ACC, а не какой-либо другой компилятор, то добавляем папку с ACC в “Include Paths” в "Edit -> Preferences -> Scripting -> ACS", иначе будет жаловаться, что zcommon.acs не найден.
Функция void ClearHUD (int min_Id, int max_Id); Очищает заданный диапазон id-ов сообщений
Скрытый текст:
Имя скрипта\функции: void ClearHUD (int min_Id, int max_Id); Автор: в данном случае думаю не надо автора, функция слишком проста) Описание: Функция которая будет очищать HUD игрока, для чего надо? К примеру у вас есть скрипты которые выводят графику\сообщения на экран игрока с помощью функции HudMessage(); Простенький пример такого скрипта:
Script "ShowText" (void)//Допустим скрипт висит на линии, игрок прошел по ней и вывелось сообщение
{
HudMessage(s:"My text in player screen1"; 0,3,CR_RED,300.1,200.1,0.0);
HudMessage(s:"My text in player screen2"; 0,4,CR_RED,300.1,300.1,0.0);
HudMessage(s:"My text in player screen3"; 0,5,CR_RED,300.1,400.1,0.0);
//И таких HUDMessage много..
}
Так вот написав функцию ClearHUD(3,10); где вам надо указать диапазон id-ов сообщений от меньшего к большему. При активации функция очистит все HUDMessage у которых ID 3,4,5,6,7,8,9,10... Функция очень проста, но тем не менее возможно кто-то не знает и она пригодится. Как добавить: Копипастим код к себе в ACS скрипты и просто там где надо пишем ClearHUD (int min_Id, int max_Id); Ссылка\код:
function void ClearHUD (int min_Id,int max_Id)
{
for (int i = min_Id; i < max_Id; i++)
{
HudMessage(s:""; 0,i,0,0,0,0);
}
}
Описание: Места из которых идут молнии помечены мапспотами (мапспоты лежат наверху столбов). Мапспоты также указывают направление. Дальше каждому скрипту выдаётся свой мапспот, он от координаты Z отнимает высоту столба (там фиксировано, вроде -304.0), и каждую секунду спавнит другой скрипт. Как добавить: Копипастим скрипт, ставим мапспоты, читаем код и разбираемся как добавить хД Ссылка\код: pastebin
Уменьшающий луч из дюка на ZScript. Работает на игроках. [Автор:]ZZYZX
Скрытый текст:
Имя скрипта\функции: Уменьшающий луч из дюка на ZScript. Работает на игроках.
Автор: ZZYZX
Описание: Из шапки думаю понятно. Как добавить: При использовании два момента: 1. в монстрах нужно проверять на итем Shrunk, и не вызывать Melee/Missile, например так:
2. если нужно, чтобы монстр не уменьшался, то DamageFactor ShrinkRay, 0.
С оружием игрока ничего не делал. Я думаю, можно что-то типа Tome of Power организовать, только для уменьшенной версии. Но мне лень было и вообще это всё потом под дюковский пак будет переделано. Ссылка\код:http://pastebin.com/835UypWp
Скрипт проигрывает музыку\звуки в случайном порядке[Автор:]Alekv
Скрытый текст:
Имя скрипта\функции: Скрипт проигрывает музыку\звуки в случайном порядке
Автор: Alekv
Описание: После того как 1 трек закончит воспроизводиться, начнет играть след. случайный трек. Как добавить: Копируем в свои скрипты да и все) Музыка\звуки если юзаете pk3 архив, лучше хранить в папке sound. Так же добавить имена треков в SNDInfo. Все остальное написано в комментариях к коду Ссылка\код:
Скрытый текст:
#define COUNT_TRACK 3 //Количество треков.
script "PlayMusic" ENTER
{//Музыка должна лежать в папке sound(можно и в подпапках), имена музыки надо прописать в SNDInfo. По поводу папки Music хз, надо тестить.
str PlayList[COUNT_TRACK][2] = {//Название треков которые будут играть на карте и время в секундах.
{"MyMusic1", 30}, //Играем трек MyMusic1, 30 сек.
{"MyMusic2", 60}, //Играем 60сек.
{"MyFolder/MyMusic3", 150}, //Играет трек 150сек (2мин. 30сек.)
};
int Play = random(0,COUNT_TRACK);//Берем случайное число
int TimerPlay = PlayList[Play][1] * 35;//Получаем время трека в секундах.
//Ставим случайный трек.
PlaySound(0,PlayList[Play][0],CHAN_7,1.0,FALSE,ATTN_NORM,FALSE);//Эту функцию возможно стоит настроить под себя.. к примеру громкость или канал или еще что
while (TimerPlay != 0) //Ждем. когда трек закончит играть, выходим
{
PrintBold(s:"Play track - ",d:Play,s:"\n\nTimePlay - ", d:TimerPlay); //Для тестов, что бы видеть на экране время и номер трека.
TimerPlay--;
Delay(1);
}
Delay(1);
Restart;
}
Для примера как выглядит заполненный шаблон для добавления скриптов:
Скрытый текст:
Инвентарь для GZDoom\GLOOME [spoiler]Имя скрипта\функции: Инвентарь для GZDoom\GLOOME
Автор: Alekv
Описание: Настраиваемый инвентарь, нет драг н дропа, есть гор. слоты как в том же диабло, только хуже, по стандарту 12 слотов\ячеек, можно добавить хоть 100шт.. это уже по желанию.
Как добавить: По ссылке в теме инвентаря все есть.
Для примера как выглядит заполненный шаблон заказа:
Скрытый текст:
Заказ на скрипт от: Alekv Подробно что должен делать скрипт: Мне нужен скрипт смены дня и ночи, хочу что бы освещение на уровне каждые 5 мин. убавлялось до темноты примерно brightnes 130, выводился по середине экрана текст "Сейчас ночь!" на 5 сек, после опять прибавлялось 5мин. и когда будет яркость 256, выводился текст "Сейчас день!" Под какой порт: GZDoom v2+
У кого есть что добавить\предложить, пишите. Голосование, со временем уберу, решил таким образом узнать будет жить тема или нет Еще вот предложение касательно простых или сомнительных скриптов, кто-то написал скрипт, хочет что бы скрипт добавился в шапку темы, можно лайкать сообщение со скриптом если вы считаете что скрипт должен быть в шапке темы! Если лайков набралось к примеру больше 5, добавляем. Как вам?
Не взлетит Не умрет, имхо, ибо криворукие люди, не способные сами чему-то обучится есть всегда, и если ты реально способен хорошо помочь - то тогда уж точно не помрет.
Не взлетит Не умрет, имхо, ибо криворукие люди, не способные сами чему-то обучится есть всегда, и если ты реально способен хорошо помочь - то тогда уж точно не помрет.
Тут дело не в криворукости, люди разные, кому-то нравится только уровни строить, кому-то рисовать текстурки, кому-то 3д модели, кому-то код писать, может кто-то и хотел бы научиться писать код(учитывая что тут простенькие скрипты), но не лежит душа как говорится)
Ну и еще вот зачем писать по 10 раз одно и тоже..? К примеру кто-то написал платформу из актера, другие тоже могут, но зачем время тратить, можно же поделится со всеми, так если повезет со временем соберется не плохая коллекция готовых скриптов благодаря которой моды можно делать быстрее, интереснее) И да, я в целом тоже буду что-то постить, может даже напишу что-то чисто из интереса, но 1 в поле не воин как говорится Добавлено спустя 3 минуты 45 секунд: И так, начну пожалуй с простенькой функции, помню когда я понятия не имел как использовать функции, для меня даже такая была адом, но хотелось)
Имя скрипта\функции: void ClearHUD (int min_Id, int max_Id); Автор: в данном случае думаю не надо автора, функция слишком проста) Описание: Функция которая будет очищать HUD игрока, для чего надо? К примеру у вас есть скрипты которые выводят графику\сообщения на экран игрока с помощью функции HudMessage(); Простенький пример такого скрипта:
Script "ShowText" (void)//Допустим скрипт висит на линии, игрок прошел по ней и вывелось сообщение
{
HudMessage(s:"My text in player screen1"; 0,3,CR_RED,300.1,200.1,0.0);
HudMessage(s:"My text in player screen2"; 0,4,CR_RED,300.1,300.1,0.0);
HudMessage(s:"My text in player screen3"; 0,5,CR_RED,300.1,400.1,0.0);
//И таких HUDMessage много..
}
Так вот написав функцию ClearHUD(3,10); где вам надо указать диапазон id-ов сообщений от меньшего к большему. При активации функция очистит все HUDMessage у которых ID 3,4,5,6,7,8,9,10... Функция очень проста, но тем не менее возможно кто-то не знает и она пригодится. Как добавить: Копипастим код к себе в ACS скрипты и просто там где надо пишем ClearHUD (int min_Id, int max_Id); Ссылка\код:
function void ClearHUD (int min_Id,int max_Id)
{
for (int i = min_Id; i < max_Id; i++)
{
HudMessage(s:""; 0,i,0,0,0,0);
}
}
Имя скрипта\функции: ACSUtils - библиотека для скриптинга ZDoom и Zandronum
Автор: Korshun
Описание: Это огромная библиотека функций для скриптинга. Тут есть всё, чего не хватает в здуме. Около 300 функций для упрощения кода, среди них: математика, 3д надписи, мышь, ChangeFlag, GetCVarFixed.
1) Качаем апгрейднутый компилятор, без него сломается от количества функций (ACC, BCC, либо GDCC)
2) Копируем acsutils.acs в проект.
3) Прописываем в своём скрипте код как по ссылке выше.
4) Если вы скачали именно ACC, а не какой-либо другой компилятор, то добавляем папку с ACC в “Include Paths” в "Edit -> Preferences -> Scripting -> ACS", иначе будет жаловаться, что zcommon.acs не найден.
Конечно надо Я хотел бы заюзать такой эффект у себя в зайце, в магазине т.к. до сих пор хз что бы туда придумать Сейчас когда курсор на выбранной вещи она увеличивается в размере на 0.2 и спавнит простенькие партикли:
Скрытый текст:
думаю твой эффект смотрелся бы лучше, только его бы зациклить и подумать над тем как его норм. связать
А сайт, да конечно круто, но тут во 1ых все на русском! Во вторых, тут уютнее, в 3их превьюшки если они нужны и так можно запостить, хоть видео)
Korshun Вот не 1ый раз уже кидается в глаза этот GDCC, судя по твоей либе могуч особенно офигел от функций кнопок getKey и т.д.) Но не могу понять как это работает, я почему-то думал, все что умеет обычный acs, это предел, а оказывается это ограничения официального компилятора и гозза понимает куда больше чем офф. acc? Блин как же иногда напрягает что почти все годное на англ и читать\понимать ппц как сложно, привет не справедливый мир (-_-) А структуры прям за живое задели(это из инвентаря тоталхаосовского) =(
Добавлено спустя 1 час 24 минуты 8 секунд:
ZZYZX Только заполни по шаблону что бы в шапку добавить:
Красивый эффект вихря из партиклей при спавне монстра и не только.[Автор ZZYZX]
Скрытый текст:
Скрин\анимация: Имя скрипта\функции: Скрипт вихрь из партиклей.
Автор: ZZYZX
Описание:
Как добавить: Скопипастить к себе в скрипты и запускать примерно таким способом:
Вот не 1ый раз уже кидается в глаза этот GDCC, судя по твоей либе могуч особенно офигел от функций кнопок getKey и т.д.)
Моя либа не использует возможности GDCC. 100% обычный ACS. Просто нужен компилятор, поддерживающий больше 256 функций в одной программе.
alekv:
Но не могу понять как это работает, я почему-то думал, все что умеет обычный acs, это предел, а оказывается это ограничения официального компилятора и гозза понимает куда больше чем офф. acc?
Нет, гздум понимает ровно только, сколько понимает ACC. Просто BCC и GDCC реализовывают новые фишки поверх существующих. Например, структуры в BCC превращаются в массивы. При этом ты мог бы и сам сделать то же самое, но фичи компилятор позволяют проще записывать эти действия.
alekv:
Блин как же иногда напрягает что почти все годное на англ и читать\понимать ппц как сложно, привет не справедливый мир (-_-)
Мы пробовали написать документацию на русском, но это значит писать её дважды. А всё годное на английском не только в думе, но и вообще во всём программировании!
alekv:
А структуры прям за живое задели(это из инвентаря тоталхаосовского) =(
Я не понял про что это.
alekv:
Интересно понятный будет такой шаблон? Тут просто уже сразу с цветом и в рамочке ..
Ага, не получалось вставить цвета. Теперь гораздо легче.
Korshun Спасибо! Открыл мне глаза по поводу этих новомодных компиляторов) Жаль что официальный так улучшать не хотят. Твой запрос\библиотека уже в шапке темы, посмотри, как оно читается?
Korshun:
Мы пробовали написать документацию на русском, но это значит писать её дважды. А всё годное на английском не только в думе, но и вообще во всём программировании!
Да, да, знаю что все на англ, от этого и обидно что сколько лет проходит, а на русский могучий мало что переводят.. Надо растить русское поколение программистов, которые будут комментировать код только на русском
Да, да, знаю что все на англ, от этого и обидно что сколько лет проходит, а на русский могучий мало что переводят.. Надо растить русское поколение программистов, которые будут комментировать код только на русском
Ну перевод там уже начат (math.acs и еще парочка), готово будет где-то после того, как
Ну, буду первым. Подробно что должен делать скрипт: интерактивное меню по типу netricsa из serious sam.
Скрытый текст:
Другими словами, нужно меню, в котором можно будет спокойно рассмотреть модели оружия/противников/уровней, почитать их подробное описание. Возможно уже есть какие-нибудь похожие моды, чтобы с нуля это не создавать... Под какой порт: GZDoom v2+
sanek_47 Да, такое меню можно накатать в гоззе, но это до жути нудно и долго) Зачем такой заказ постишь, щас всех распугаешь хД По сути все кнопки с лева вверху это массивы 3д или 4д, мб у каждой кнопки несколько массивов, каждый такой массив содержит в себе графику кнопки, текст, координаты.. тут понятно, а вот вертеть 3д модельку в маленьком окошке, тоже можно, 2умя способами. 1 из надо делать 1 мини уровень коробку 512х512, спавнить 3д модель в центре которая будет реагировать на переключение переменных acs кода, типа нажал кнопку оружия спавнится модель оружия.. выводить эту коробку на HUD камтекстурой, 2 спавнить прямо на HUD 3д модель с +NOINTERACTION а позади модельки скрин комнатухи. (или принтспрайт юзать? Никогда им не пользовался) И начинается самое веселое, это когда курсор входит в координаты камтекстуры или в координаты скрина комнаты если выбран 2ой способ и нажата ПКМ модель должна вертется, можно сделать просто поворот модели по Z оси когда мыша едет в право или влево(надо писать доп. функцию), а можно с помощью математических функций, но это сложнее и мне не ведомо, но тогда модель может вертется как угодно и плавно)
На словах кажется что тут делов на пол дня или даже пару часов, но на деле тут около недели сидеть и думать как сделать, то или се + куча нюансов, хз возьмется ли кто-то за такое) Я бы не рискнул.. + заранее нужна нарезанная графика, шрифт, текст который должен выводится и описание поведения текста\кнопок если оружия нет, или есть или еще что-то..
Там делов на час. Если без камтекстуры спрайтом. Если с камтекстурой, то чуть меньше Только перед этим ещё пару часов ТЗ оформлять конкретно и графон рисовать. Шрифт можно взять в формате... забыл в каком формате. В самом крутом из тех, которые здум умеет, там ещё есть прозрачность и кернинг. Б-чётотам. После чего сгенерить заблюренную версию того же шрифта скриптом (скрипт написан и где-то лежит). Кстати про модель — я не уверен, но мне кажется, что можно заюзать координаты за пределами карты и просто отрисовать туда модель фона и нужный спрайт/модель. Например в -32768.0,-32768.0. Камеру отспавнить руками, SetCameraToTexture аналогично, в итоге в гздб ничего делать не надо.
В общем тут проверить руками за пару минут адекватность работы модели за пределами карты (нужно чтобы она закрывала собой небо и HOM), после чего либо сделать сектор с моделью, либо делать статическую подложку со спрайтами. Больше никаких непонятных моментов нет.
sanek_47 Ну вот, ZZYZX говорит возьмется на выходных, ты же тогда подготовь графику и объяснение (тз проще говоря). Зная что ZZYZX может творить с sin\cos, vector и т.д. поворот 3д модели мышей не избежен хД
ZZYZX Ну не знаю, за 1-2 часа, это слишком быстро) Хотя хз, я вечно сижу долго над схожей менюхой хоть и знаю как ее делать.. Еще больше всего напрягает что выводить графику приходится в слепую -_- или юзать мышу которая пишет координаты, после запоминать и вписывать в HUDmessage.
ZZYZX:
Шрифт можно взять в формате... забыл в каком формате. В самом крутом из тех, которые здум умеет, там ещё есть прозрачность и кернинг. Б-чётотам.
Это что за формат такой? Там кажется их не много, fon2 и обычный который картинками, собс-но они все там убоги в какой-то степени. А ttf шрифты пока что не держит гозза.
А вот по поводу 3д модельки, тут как мне кажется удобнее способ который просто спавнит модель на экран, а позади модели фон скрин какой-то коробки или вообще 3д модель коробки т.е. без камтекстур что бы не приходилось постоянно на каждом уровне ставить где-то текстуру или строить комнату или ставить камеру такой вот ход мыслей
Замудреный шрифт какой-то, не думал что он лучше картинок или fon2
Как бы и не лучшее, что может быть для шрифта, который картинка. Хотя вообще ещё есть бигфонт, но бигфонт это собственный недоформат, и для конвертирования чего-то в бигфонт нужно дополнительно ковыряться.
alekv:
Все равно не удобно, это хорошо если сам рисуешь, а если нет, то в слепую или мышей с координатами.
Ну вот, ZZYZX говорит возьмется на выходных, ты же тогда подготовь графику и объяснение (тз проще говоря). Зная что ZZYZX может творить с sin\cos, vector и т.д. поворот 3д модели мышей не избежен хД
С графикой позже разберусь, для начала нужно хотя бы схематично сделать.
Обьяснение: Меню состоит из 3-х окон и 5 кнопок (также, как и в Serious Sam). Кнопки: -Магазин (в нем будут отображаться список товаров, которые можно купить (аптечки там, бронежилеты и т.д.)) -Уровни (здесь отображаются посещенные уровни с описанием, в окне, где должна быть модель отображается скриншот уровня) -Оружие (тут все понятно) -Монстры (тут тоже) -Статистика (а здесь показывается всякая интересная информация, например, количество убитых врагов, количество выпущенных пуль, количество найденных денег, время, количество найденных секретов и т.д. В общем, примерно также как и здесь:
Скрытый текст:
)
Ручное верчение модели, мне кажется, будет лишним, так что не стоит на это тратить время.
Извиняюсь, последний пост в этой теме вообще не видел ) Нету: - Скролла в окнах (надо допилить. допилю.) - Магазина (тут всё сложно, надо же с твоими скриптами интегрироваться, количество бабла там, доступность итемов...) - Статистики (тут опять интеграция с твоими скриптами.)
Для отображения акторов требует сектор 512х512 в верхнем левом углу карты (совсем в углу) с высотой пола -16384 и потолка 16384 на каждой карте, где нужно использовать скрипт. Инициализация инфы в function void HSDBInit.
Если хочешь чтобы я тебе это доделал до конца, то мне не сложно, но нужен контакт в скайпе, твой вад и графика интерфейса.
з.ы. конкретно время не засекал, но это примерно полтора часа неспешного кодинга и гимпования. з.з.ы. щас небось вылезет коршун и скажет юзать прямоугольники. Не буду.