Так и сделано без этой строчки ни кто не ломается в локации, а под водой не плавают в бассейне а ходят а хочется что бы было всё тик-так.
Добавлено (24.09.2013, 09:49) --------------------------------------------- По поводу закрытых скриптов всё это как бы мягко сказать, ерунда. Проклятые судьбой например много чего взяла от ранних корсаров и сделали свою игру, выпустив её бесплатно, денежные средства за это не получала, так и я денег не беру, но мог бы заточить весь аддон под другими именами в других локациях и выпустить похожий аддон, но мне это не интересно пусть будет как есть. Права создателей нет желания нарушать и труды других людей которые создавали модели, локации, квесты. Непреодолимое желание завязать всё в одну игру было моей мечтой, по сути она готова, но и дальше можно шагнуть переписать сундук мертвеца, ветер свободы, и другие ранние игры в одну игру, только истории, истории и истории. История пирата выпускала с открытыми скриптами со своими сложностями игры, многое чего мне не понравилось кроме разных историй, ТДМ2 так же с открытыми скриптами, что касаемо ГПК аккеловское детище тут сложнее, но ведь все аддоны на этом построены, поэтому как бы не вижу причин для этой демогогии, да оттолкнулся от 1.2.4 и своими трудами достичь по не многу до 1.3.2 на этой игрушке. Было бы круто если бы оценили данную идею и поддержали создатели как Варшип, Люгер и многие другие знающие ребята. Один хрен корсаров 4 не будет и не отдаст аккела на растерзание модаделам, жадность их погубит а игра не выйдет, поэтому приходится писать на том что есть и что есть. Объединяя все аддоны в одну игру на мой взгляд нет ни чего криминального а напротив как реклама для создателей своих аддонов.
// Генерация корабля для верфи int GenerateStoreShip(int iBaseType) { int iShip = GenerateShip(iBaseType, 0); // честный
if (iShip == -1) { return SHIP_NOTUSED; }
ref rRealShip = GetRealShip(iShip); rRealShip.StoreShip = true; // кораль на верфи, трется отдельным методом rRealShip.Cannon = CANNON_TYPE_NONECANNON;//aw013 без орудий
return iShip; }
Всё бы хорошо, да только при таком варианте хоть корабли и продаются на верфях без орудий, однако если не покупать и не устанавливать пушек на верфи, а выйти в море на таком корабле сразу после его покупки как он есть, не заходя в окно управления орудиями то при смене локации на морскую корабль окажется полностью снаряженным 12 фунтовыми пушками.
Всё бы хорошо, да только при таком варианте хоть корабли и продаются на верфях без орудий, однако если не покупать и не устанавливать пушек на верфи, а выйти в море на таком корабле сразу после его покупки как он есть, не заходя в окно управления орудиями то при смене локации на морскую корабль окажется полностью снаряженным 12 фунтовыми пушками.
Все те, кто играл в мод-пак AT 1.3.2 и ККС от BlackMark Studio, видели в числе прочих нововведений, интерфейс покраски корабельных характеристик, отбермуженных на верфи Исла-Тесоро и некоторых других, в особый цвет!..
В этом уроке я решил рассказать о том, как сделал это собственноручно... Итак, приступим.
1. Для работы нам нужны два файла: - файл \program\dialogs\russian\Shipyard\pirates_shipyard.c; - файл \program\interface\interface_utils.c;
2. Принцип реализации этого метода заключается в том, чтобы перед выводом на экран определённого параметра корабля проверять: является ли указанный параметр уже "отбермуженным" или ещё нет? Если параметр корабля уже был отбермужен, он имеет определённый набор атрибутов. Именно проверку на наличие этих атрибутов и следует предусмотреть прежде, чем выводить на экран очередной параметр.
3. Для начала рассмотрим первый файл. В этом файле находится вся процедура обработки корабельных параметров при апгрейде корабля на верфи мастера Алексуса. Соответственно, в этом же файле и нужно искать проверки на апгрейд корабельных параметров. Практически в самом начале файла мы уже видим меню выбора услуг по апгрейду корабельных характеристик. Вот оно...
if (!CheckAttribute(&RealShips[sti(Pchar.Ship.Type)], "Tuning.MaxCrew")) { Link.l5 = "Прибавить место для экипажа."; Link.l5.go = "ship_tunning_MaxCrew"; }
В каждом из приведённых условий выбора уже содержится необходимое условие для проверки на "отбермуженность". Иными словами, суть этого меню заключается в следующем... Рассмотрим только на примере скорости... Если параметр "скорость" ещё не "отбермужен" (параметр не имеет атрибута), выводить вариант "отбермудить" скорость в списке услуг. Символ "!" в условии означает отрицание...
4. Теперь рассмотрим второй файл. Процедура SetShipOTHERTable() в этом файле как раз отвечает за вывод корабельных параметров на экран. В частности, строка:
выводит на экран через знак "/" текущее и предельное значения прочности корпуса. Именно они и окрашиваются в новый цвет после апгрейда.
5. Осталось совсем немного! Теперь необходимо всего-навсего к этим двум строчкам добавить условие на проверку!
Пример ниже...
Код
/* состояние корпуса */ GameInterface.(_tabName).tr1.UserData.ID = "Hull"; GameInterface.(_tabName).tr1.td1.icon.group = "ICONS_CHAR"; GameInterface.(_tabName).tr1.td1.icon.image = "Hull";
/* сначала проверим, является ли этот параметр отбермуженным */ if (CheckAttribute(&RealShips[sti(Pchar.Ship.Type)], "Tuning.HP")) { /* красим шрифт в заранее определённый цвет */ GameInterface.(_tabName).tr1.td2.color = uColor; GameInterface.(_tabName).tr1.td3.color = uColor;
/* выводим окрашенное в заданный цвет слово "Корпус" */ GameInterface.(_tabName).tr1.td2.str = XI_ConvertString("Hull");
/* выводим окрашенные в заданный цвет параметры */ GameInterface.(_tabName).tr1.td3.str = sti(_chr.ship.hp) + " / " + sti(refBaseShip.hp); }
/* если же указанные параметры не "отбермужены", выводим их обычным цветом */ else { GameInterface.(_tabName).tr1.td2.str = XI_ConvertString("Hull"); GameInterface.(_tabName).tr1.td3.str = sti(_chr.ship.hp) + " / " + sti(refBaseShip.hp); }
По аналогии нужно сделать то же самое для всех остальных выводимых параметров! Также не забудьте заранее определить цвет, в который будут окрашиваться надписи. Выберите по таблице цветов понравившийся цвет и соответствующие ему значения, запишите их в переменную "uColor" (имя переменной можете дать своё) и объявите переменную целочисленного типа в самом начале указанной выше процедуры:
Код
int uColor = argb(255, X1, X2, X3);
Например, чтобы задать красный (255, 0, 0) цвет, задайте: argb(255, 255, 0, 0) или любой другой, который вам понравится и будет нормально смотреться в вашем интерфейсе...
Вот и всё! Изменения не требуют начала новой игры, можете отслеживать происходящие изменения, загружая игру и проверяя результат! Желательно иметь сохранение перед проведением апгрейда заданного параметра. Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
В К:ПС мне понравилось, что Lugger добавил крабиков в бухты - выглядит весьма атмосферно, согласитесь. Вот и мы так сделаем
Автор кода: Виктор "Lugger" Китаев Рабочие файлы: LAi_login.c, ваш личный файл Необходимые ресурсы: моделька и анимация маленьких крабов из К:ПС. Путь до модели: RESOURCE\MODELS\Characters\crabSmall.gm. Анимация: RESOURCE\animation\crabSmall.ani и RESOURCE\animation\crabSmall.an.
Приступаем.
1) Создаем свой личный файл формата .C, инклудим его в seadogs.c, прописывая:
3) Сохраняем наш файл. Затем открываем LAi_login.c, поиском находим void LAi_CharacterPostLogin(ref location) и добавляем вызов функции из нашего файла, вот так(на примере файла из ГПК):
Код
void LAi_CharacterPostLogin(ref location) { //Расставляем последователей for(int i = 0; i < LAi_numloginedcharacters; i++) { int idx = LAi_loginedcharacters[i]; if(idx >= 0) { //Просматриваем последователей ref chr = &Characters[idx]; if(CheckAttribute(chr, "location.follower") != false) { //Получим координаты игрока float x, y, z; if(GetCharacterPos(pchar, &x, &y, &z) == false) { x = 0.0; y = 0.0; z = 0.0; } //Ищем свободный ближайший локатор string locator = LAi_FindNearestFreeLocator("goto", x, y, z); if(locator != "") { TeleportCharacterToLocator(chr, "goto", locator) CharacterTurnByChr(chr, pchar); }else{ Trace("Can't find good locator for follower character <" + chr.id + ">"); } } } } if(!actLoadFlag) { QuestsCheck(); // в начале квесты, иначе нет перехвата // заполнение фантомами локаций CreateCitizens(location); CreateHabitues(location); CreateIncquisitio(location); CreateMayak(location); CreateBrothels(location); CreatePearlVillage(location); CreateInsideHouseEncounters(location); CreateInsideResidenceEncounters(location); CreateSkladInsideEncounters(location); CreateJail(location); CreateFortsNPC(location); CreateLostShipsCity(location); CreatPlantation(location); // homo плантация CreatUnderwater(location); CreatTenochtitlan(location); CreatTenochtitlanInside(location); CreatDesMoines(location); //Расставляем квестовых энкоунтеров LAi_CreateEncounters(location); //eddy. монстры не нужны здесь /// ОЗГи LandHunterReactionResult(location); //обновить базу абордажников для нефритового черепа CopyPassForAztecSkull(); SetCrabsToShore(location); // <-- ВОТ СЮДА } }
4) Всё. Запускаем игру и наблюдаем крабиков! Скриншоты по ссылке ниже(как сюда вставить не понял o_O).
Необходимые ресурсы: моделька и анимация маленьких крабов из К:ПС
А нельзя ли выложить модели и текстуры для тех, у кого их нет?
Жаль, что крабики используют те же текстуры и анимацию, что и большие... Хотелось бы задать им другие параметры, другую скорость перемещения... Как это вот сделать?! Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
Сообщение отредактировал Nathaniel - Суббота, 19.10.2013, 15:06
Жаль, что крабики используют те же текстуры и анимацию, что и большие... Хотелось бы задать им другие параметры, другую скорость перемещения... Как это вот сделать?!
Кстати, да, на счёт скорости передвижения крабиков - отличная идея. Нужно их замедлить. Делается это очень легко.
1 . Задавать скорость проигрывания анимаций нужно в файлах .ani - в нашем случае crabSmall.ani. Ищем и настраиваем параметр data = "Walk speed"(указанные числа означают, сколько метров пройдет персонаж за секунду) в следующих кейсах:
;Ходьба вперёд [walk]
;Ходьба назад [back walk]
;Бег вперёд [run]
;Бег назад [back run]
;Идти вниз по лестнице [stairs down]
;Идти вниз по лестнице задом наперед [back stairs down]
;Идти вниз по лестнице [stairs up]
;Идти вниз по лестнице задом наперед [back stairs up]
;Бег по лестнице вверх [run stairs up]
;Бег по лестнице вниз [run stairs down]
; Бег по лестнице вверх задом наперед [back run stairs up]
; Бег по лестнице вниз задом наперед [back run stairs down]
Изменения можно производить прямо в игре, после перезагрузки локации, файлы анимации перечитаются. Боевые анимации трогать не будем - пусть носятся, когда находятся в режиме боя, так даже лучше.
2 . Ну, а по поводу текстур - HEX-редактором(или просто Notepad++) открываем модель крабиков - crabSmall.gm - ищем используемую текстуру(в поиске вбивать .tga), и меняем имя(с таким же кол-ом символов), сохраняем модель. Дальше дело за Вами - рисовать новую "шкурку", или просто перекрасить имеющуюся.
Сообщение отредактировал PirateModder - Суббота, 19.10.2013, 16:51
А ведь и правда, не подумал сразу... Спасибо! Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
PirateModder, никаких крабиков не наблюдается. Пробовал и вар-нт для ИП и ККС = 0 результат. У меня ванильный ГПК. - Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
а вообще мне такой способ создания крабиков не нравится и я объясню почему: краб является персонажем и из-за этого он может попасть в "объектив" пистолета при прицеливании, особенно такое будет раздражать в какой-нибудь боевке - ваш самый важный выстрел примет на себя не враждебный НПС, а ни в чем не повинный крабик а функции вывести НПС из "объектива" прицеливания нет ни в скриптах, ни в двиге Что толку, если не можешь сделать мир лучше.
Сообщение отредактировал Mett - Вторник, 28.01.2014, 19:23
PirateModder, все заработало. Спасибо за хорошую добавку.)
Убрал им бессмертие. Может кто знает как заставить крабов нападать на ГГ? А то от меня отгребают, а защищаться не могут. ) - Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
Mett, спасибо. Прописал все до кучи в созданный "void SetCrabsToShore". Они действительно лезут на героя, только коцать не коцают почемут.
Добавлено (28.01.2014, 20:30) --------------------------------------------- Они и на удары не отзываются анимами хитов, как дефолтные персы. Не дергаются тобишь. Вроде даже fight режим анимаций не врубают, я бы заметил, тк скорость бега в боевке прописал им побольше.
Добавлено (28.01.2014, 21:54) --------------------------------------------- + Бонус по крабам. Вот ссыль на архивчик с моими звуками к этим крабам: yandex 1. Закиньте их в папку People Fight (по адресу RESOURCE\Sounds\People Fight) 2. Допишите в файле sound_alias.ini (по адресу RESOURCE\INI\aliases\sound_alias.ini) следующее:
Цитата
[death_crab] minDistance = 4.0 maxDistance = 21.0 volume = 0.9 name = PEOPLE FIGHT\crab_death01.wav name = PEOPLE FIGHT\crab_death02.wav name = PEOPLE FIGHT\crab_death01.wav
[hit_crab] minDistance = 4.0 maxDistance = 21.0 volume = 0.9 name = PEOPLE FIGHT\crab_hit01.wav name = PEOPLE FIGHT\crab_hit02.wav name = PEOPLE FIGHT\crab_hit01.wav
3. Замените файл crabSmall.ani на скачанный тут: yandex, либо сами пропишите звуки на нужные фреймы анимаций, если знаете как.
Теперь ваши крабы будут пищать от ударов и в агонии. - Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
Сообщение отредактировал Reboroda - Вторник, 28.01.2014, 21:54
Они и на удары не отзываются анимами хитов, как дефолтные персы. Не дергаются тобишь.
это уже нюансы анимации самих крабов надо смотреть раскадровку и править блоки анимации, если есть подходящие движения
Цитата
только коцать не коцают почемут
а потому что у них оружия нет в коде, который скидывал PirateModder у крабов полностью пустой инвентарь пропиши им оружие какое-нибудь - будут коцать Что толку, если не можешь сделать мир лучше.
как раз у стандартных крабов из подводных локаций в ГПК такое оружие только теперь кулаки будут падать с дохлых с крабов постоянно ;) Что толку, если не можешь сделать мир лучше.