Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
> Ликбез по CNR, Изучаем систему крафта...
Аваддон
сообщение Oct 14 2004, 17:03
Сообщение #1


Level 10
***

Класс: Воин
Характер: Lawful Neutral
Раса: Человек
NWN: Скриптинг [PW]



На что способна эта система крафта – одному автору известно. И потому было решено начать ликбез по CNR. А начать я бы его хотел с ответа на вопрос Balrog’а – Как написать свой рецепт?! Мало того, мы еще затронем то – как написать рецепт при этом внеся новый типа материала для крафтинга и дележку крафтовых вещей по типу.

А все начиналось с тулсета и модуля CNR…
Задача урока – Создать раздел спец оружия. Создать подраздел клинков. Написать рецепт на клинок.

Открываем модуль CNR в тулсете. Так… Ищем скрипт наковальни. Он называется «cnrAnvilPublic». А вот теперь уже начинаем творить! Создадим новый раздел в наковальне – «Специальное оружие». Для этого найдем строчки:
Neverwinter Script Source
void ProcessMenuWeaponsCopp(string sMenuWeaponsCopp);
void ProcessMenuWeaponsBron(string sMenuWeaponsBron);
void ProcessMenuWeaponsIron(string sMenuWeaponsIron);

Добавим ниже строку:
Neverwinter Script Source
void ProcessMenuWeaponsSpec(string sMenuWeaponsSpec);

Ниже идут строки:
Neverwinter Script Source
string sMenuWeaponsCopp = CnrRecipeAddSubMenu("cnrAnvilPublic", "Медное Оружие");
  string sMenuWeaponsBron = CnrRecipeAddSubMenu("cnrAnvilPublic", "Бронзовое Оружие");
  string sMenuWeaponsIron = CnrRecipeAddSubMenu("cnrAnvilPublic", "Железное Оружие");

Добавим сюда наш пункт:
Neverwinter Script Source
string sMenuWeaponsSpec = CnrRecipeAddSubMenu("cnrAnvilPublic", "Специальное Оружие");

Прокручиваем скрипт ниже… Эта команда подсчитывает рецепты. Смотрим:
Neverwinter Script Source
CnrIncrementStackCount(OBJECT_SELF);
  AssignCommand(OBJECT_SELF, ProcessMenuWeaponsCopp(sMenuWeaponsCopp));

  CnrIncrementStackCount(OBJECT_SELF);
  AssignCommand(OBJECT_SELF, ProcessMenuWeaponsBron(sMenuWeaponsBron));

  CnrIncrementStackCount(OBJECT_SELF);
  AssignCommand(OBJECT_SELF, ProcessMenuWeaponsIron(sMenuWeaponsIron));

Добавляем:
Neverwinter Script Source
CnrIncrementStackCount(OBJECT_SELF);
  AssignCommand(OBJECT_SELF, ProcessMenuWeaponsSpec(sMenuWeaponsSpec));


Так дальше идет уже дележка на типы и рецепты. Крутим в самый низ, там где заканчивается строчками:
Neverwinter Script Source
CnrDecrementStackCount(OBJECT_SELF);
}


И начинаем монстрячить свой раздел:
Neverwinter Script Source
void ProcessMenuWeaponsSpec(string sMenuWeaponsSpec) //добавим раздел «Специальное оружие» в диалог наковальни. Результат показан на рис.1
{
  string sKeyToRecipe;
  string sMenuSpecBladed = CnrRecipeAddSubMenu(sMenuWeaponsSpec, "Клинки"); //добавим под-раздел Специальное оружие > Клинки. Результат показан на рис.2

//пишем рецепт
sKeyToRecipe = CnrRecipeCreateRecipe(sMenuSpecBladed, "Меч Лорда Аваддона", "spec_avaddon_sword", 1); //Начала рецепта. Выбираем в каком под-разделе будет данный предмет. Далее – Название. Потом Тэг предмета. И количество. Результат показан на рис.3
  CnrRecipeAddComponent(sKeyToRecipe, "cnrIngotIron", 3); // первый ингрдиент. , "cnrIngotIron" – тэг железных слитков, 3-необходимое количество.
  CnrRecipeAddComponent(sKeyToRecipe, "cnrMoldLarge", 1); //второй ингрдиент-тэг Большой литейной формочки. Ингридиентов может быть много Результат показан на рис.4
  CnrRecipeSetRecipeLevel(sKeyToRecipe, 4); //Средний уровень игрока в ремесле.
  CnrRecipeSetRecipeXP(sKeyToRecipe, 84, 84); //При удачном крафте опыта дадут  84 – игрового, и 84 ремесленного. Результат показан на рис.5
  CnrRecipeSetRecipeBiproduct(sKeyToRecipe, "spec_avaddon_fool", 0, 1);//Вторичный продукт при крафте.(например метал. стружка) "spec_avaddon_fool"- Тэг вторичного продукта, 0 - количество при удачном крафте, 1 – количество при неудачном крафте.
  CnrRecipeSetRecipeAbilityPercentages(sKeyToRecipe, 70, 30, 0, 0, 0, 0); //характеристики персонажа влиЯющие на процент удачного крафта. Сила, Ловкость, Телосложение,Интеллект, Мудрость, Харизма.

  CnrDecrementStackCount(OBJECT_SELF);//подводим итог количеству рецептов и заканчиваем функцию.
}


Ну и кончено, с шансом 65% у меня сделать свой меч получилось ;) Результат показан на рис.6 и 7.

Картинка результатов:
(IMG:http://saigh.nm.ru/text/images/CNR1.jpg)

Если не видно - жми сюда

Думаю все должно быть понятно. Удачи вам!:) Спрашивайте если что.

Сообщение отредактировал Аваддон - Nov 15 2004, 20:13
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
Аваддон
сообщение Nov 14 2004, 23:13
Сообщение #2


Level 10
***

Класс: Воин
Характер: Lawful Neutral
Раса: Человек
NWN: Скриптинг [PW]



Итак, для начала в дебри лезть не буду. Возьму первое главное - это конфиг.
Открываем скрипт cnr_config_ing.
Там можно найти много разных приблуд по настройке CNR. :swoon: :D
Что я изменил чтобы уменьшить лаги:
1. Этот пункт влияет на инициализацию рецептов. Если TRUE то CNR инициализирует все рецепты при первой загрузке модуля, естественно мод грузится будет долго. Если FALSE то будет инициализировать определенную часть рецептов при первичном использовании крафт инструмента. Если у вас шард, то лучше ставить TRUE. По крайней мере во время игры лагов у игроков не будет.
Neverwinter Script Source
int CNR_BOOL_INIT_RECIPES_ON_MODULE_LOAD = TRUE;


2. По слухам CNR еще лагает когда игроки смотрят список 10 лучших мастеров. Отключаем его. То есть прячем список.
Neverwinter Script Source
int CNR_BOOL_HIDE_TRADE_JOURNALS_TOP_TEN_LISTS = TRUE;


3. Если вы не хотите чтобы CNR показывал какие компоненты нужны игроку чтобы что-либо скрафтить, ставите TRUE. Но при этом увеличивается нагрузка на отсев рецептов , следовательно лаги. Ставим FALSE.
Neverwinter Script Source
int CNR_BOOL_HIDE_UNSATISFIED_RECIPES_IN_CRAFTING_CONVOS = FALSE;


4. Появляется нагрузка на отсев рецептов аналогично п.3. А сама функция если TRUE - прячет рецепты до которых игрок еще не дорос. Ставлю FALSE.
Neverwinter Script Source
int CNR_BOOL_HIDE_IMPOSSIBLE_RECIPES_IN_CRAFTING_CONVOS = FALSE;


Вроде бы пока что все. Признаюсь, лаги немножко уменьшились. Гы.
Жду ваших советов. Может еще поможете как его на MySQL перевести? А то я в этом не варю не фига. :drag:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Сообщений в этой теме


Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29th April 2025 - 22:31