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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 136 137 138 139 140 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
wirTUS
сообщение May 30 2011, 21:19
Сообщение #3411


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Спасибо, попробую.

И еще вопрос: можно ли ставить скрипт, заполняющий инвентарь плэйсебла, на его onused, описывая плэйс как OBJECT_SELF, PC как GetLastUsedBy()?
Проблема: скрипт компилится нормально, стоит на onUsed сундука с активированными флагами Plot, Useable и Has Inventory, при попытке открыть персонажем 1го уровня(как свежесгенеренным, так и экспортированным) сундук открывается, но его инвентарь пустой. Т.к. существует возможность пустого сундука при верном исполнении скрипта, пробовал перезаходить (3 раза подряд) и, т.к. ограничения в одно использование в скрипте нету, пробовал открывать несколько раз подряд.
Собственно, скрипт.
Neverwinter Script
///////////////////////////////////////////////////////////////////
//Скрипт, спавнящий в плэйсеблы барахло///By HailAnDkilL aka///////
//почти по таблице 3-5(рандомные сокро-///wirTUS aka Бессонов//////
//вища) DMG 3.5. Различия в вещах(пред-///Георгий Борисович////////
//ставлено не все, ибо некоторых вещей/////////////////////////////
//в NWN нету, некоторые вещи бесполез-/////////////////////////////
//ны, а до некоторых не дошли руки) и//////////////////////////////
//в проверке не d100 и диапазоны вари-/////////////////////////////
//антов, а рандом(кол-во вариантов)+1//////////////////////////////
///////////////////////////////////////////////////////////////////
#include "NW_I0_GENERIC"

string sARMTAG()
{
string sSTR="MUNDANEARMOR";
int iMARMV = Random(13)+1;
int iMARMT = Random(9)+1;

switch(iMARMV)
{
case 10: sSTR=sSTR+"10_";
case 11: sSTR=sSTR+"11_";
case 12: sSTR=sSTR+"12_";
case 13: sSTR=sSTR+"13_";
default: sSTR=sSTR+"0"+IntToString(iMARMV)+"_";
}
sSTR=sSTR+IntToString(iMARMT);
return(sSTR);
}
//////////////////////////////////////////////
//////////////////////////////////////////////
//////////////////////////////////////////////
string sWEAPTAG()
{
string sSTR="MUNDANEWEAPON";
int iMWEMV = Random(12)+1;
int iMWEMT = Random(4)+1;

switch(iMWEMV)
{
case 10: sSTR=sSTR+"10_";
case 11: sSTR=sSTR+"11_";
case 12: sSTR=sSTR+"12_";
default: sSTR=sSTR+"0"+IntToString(iMWEMV)+"_";
}
sSTR=sSTR+IntToString(iMWEMT);
return(sSTR);
}
//////////////////////////////////////////////
//////////////////////////////////////////////
//////////////////////////////////////////////
void PGTC(int var1, int var2)
{
object oGOLD = GetObjectByTag("NW_IT_GOLD001");
object oCHEST = OBJECT_SELF;
SetItemStackSize(oGOLD, var1*var2);
ActionGiveItem(oGOLD, oCHEST);
}

void main()
{
object oPC = GetLastUsedBy();
object oCHEST = OBJECT_SELF;
int iPC_LVL = GetCharacterLevel(oPC);
int iVAR1 = Random(5)+1;
int iVAR2 = Random(3)+1;
int iVAR3 = Random(3)+1;
int iGEMV = d6(1);
string sTAG;
switch(iPC_LVL)
{
case 1:
        switch(iVAR1)
        {
        case 1: break;
        case 2: PGTC(d6(1),1);
        case 3: PGTC(d8(1),10);
        case 4: PGTC(d8(2),10);
        case 5: PGTC(d4(1),100);
        }/*
        switch(iVAR2)
        {
        case 1: break;
        case 2: sTAG="GEM"+IntToString(iGEMV);
        }*/

        switch(iVAR3)
        {
        case 1: break;
        case 2: ActionGiveItem(GetObjectByTag(sARMTAG()), oCHEST);
        case 3: ActionGiveItem(GetObjectByTag(sWEAPTAG()), oCHEST);
                }
        }
}

инклюд требуется для работы GetCharacterLevel, без него все равно не работало (использовалась сумма трёх GetLevelByPosition)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение May 30 2011, 21:25
Сообщение #3412


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Здесь нужно использовать не ActionGiveItem(), которая применяется для передачи уже существующих предметов, а CreateItemOnObject().
Neverwinter Script
GetObjectByTag(sARMTAG()) //скорее всего, вернет OBJECT_INVALID
Цитата
инклюд требуется для работы GetCharacterLevel, без него все равно не работало (использовалась сумма трёх GetLevelByPosition)
Можно использовать GetHitDice() - это сразу общий уровень.

Сообщение отредактировал Ilerien - May 30 2011, 21:26
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение May 30 2011, 21:51
Сообщение #3413


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Исправил на
Neverwinter Script
#include "NW_I0_GENERIC"

string sARMTAG()
{
string sSTR="MUNDANEARMOR";
int iMARMV = Random(13)+1;
int iMARMT = Random(9)+1;

switch(iMARMV)
{
case 10: sSTR=sSTR+"10";
case 11: sSTR=sSTR+"11";
case 12: sSTR=sSTR+"12";
case 13: sSTR=sSTR+"13";
default: sSTR=sSTR+"0"+IntToString(iMARMV);
}
if(iMARMV<7) {sSTR=sSTR+"_"+IntToString(iMARMT);}
return(sSTR);
}
//////////////////////////////////////////////
//////////////////////////////////////////////
//////////////////////////////////////////////
string sWEAPTAG()
{
string sSTR="MUNDANEWEAPON";
int iMWEMV = Random(12)+1;
int iMWEMT = Random(4)+1;

switch(iMWEMV)
{
case 10: sSTR=sSTR+"10_";
case 11: sSTR=sSTR+"11_";
case 12: sSTR=sSTR+"12_";
default: sSTR=sSTR+"0"+IntToString(iMWEMV)+"_";
}
sSTR=sSTR+IntToString(iMWEMT);
return(sSTR);
}
//////////////////////////////////////////////
//////////////////////////////////////////////
//////////////////////////////////////////////
void PGTC(int var1, int var2)
{
string oGOLD = "NW_IT_GOLD001";
object oCHEST = OBJECT_SELF;
CreateItemOnObject(oGOLD, oCHEST, var1*var2, "");
}
//////////////////////////////////////////////
//////////////////////////////////////////////
//////////////////////////////////////////////
void main()
{
object oPC = GetLastUsedBy();
object oCHEST = OBJECT_SELF;
int iPC_LVL = GetHitDice(oPC);
int iVAR1 = Random(5)+1;
int iVAR2 = Random(3)+1;
int iVAR3 = Random(3)+1;
int iGEMV = d6(1);
string sTAG;
switch(iPC_LVL)
{
case 1:
        switch(iVAR1)
        {
        case 1: break;
        case 2: PGTC(d6(1),1);
        case 3: PGTC(d8(1),10);
        case 4: PGTC(d8(2),10);
        case 5: PGTC(d4(1),100);
        }
        switch(iVAR3)
        {
        case 1: break;
        case 2: CreateItemOnObject(sARMTAG(), oCHEST, 1, "");
        case 3: CreateItemOnObject(sWEAPTAG(), oCHEST, 1, "");
                }
        }
}

Золото прилежно спавнит, вещи - нет. Тэги вещей заданы MUNDANEWEAPON[1-12]_[1-4], MUNDANEARMOR[1-6]_[1-9], MUNDANEARMOR[7-13]
Примеры тэгов: "MUNDANEWEAPON10_4", "MUNDANEARMOR01_5", "MUNDANEARMOR09"
Наиболее вероятно, что ошибка в процедурах, генерящих тэги
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение May 30 2011, 21:59
Сообщение #3414


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Теги тут вообще ни при чём. При создании объекта из палитры нужно указывать название ресурса (ResRef) - уникальный идентификатор ресурса в определённом пространстве имен (в данном случае, в пространстве наименований ресурсов предметов). Длина ресрефа (вообще для любого ресурса в NWN, хоть для скриптов или иконок) не превышает 16 символов - скажем, попытка создать предмет с ресрефом "MUNDANEWEAPON10_4" обречена на провал сразу же. (IMG:style_emoticons/kolobok_light/smile.gif)

Сообщение отредактировал Ilerien - May 31 2011, 02:34
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение May 30 2011, 22:05
Сообщение #3415


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Спасибо, сейчас буду исправлять, потом выложу что получится; перечитал описание CreateItemOnObject в Лексиконе, по тэгам можно вызывать только предметы стандартной палитры, почему собс-но золото и дается
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение May 30 2011, 22:38
Сообщение #3416


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Цитата
перечитал описание CreateItemOnObject в Лексиконе, по тэгам можно вызывать только предметы стандартной палитры, почему собс-но золото и дается
Это де-факто неправда. (IMG:style_emoticons/kolobok_light/smile.gif) Просто в стандартной палитре соблюдена конвенция - дефолтный тег предмета совпадает с его ресрефом, но написан в верхнем регистре. Строка, передаваемая в CreateObject/CreateItemOnObject(), автоматически конвертируется в нижний регистр, поэтому и так и получается. Никто не мешает соблюдать ту же конвенцию в кастомной палитре.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение May 30 2011, 23:11
Сообщение #3417


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Исправил, работает, спасибо
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение Jun 3 2011, 15:22
Сообщение #3418


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Скрипт
Neverwinter Script
object GiveToChest(string str, int integer)
{
return CreateItemOnObject(str, OBJECT_SELF, integer, "");
}
object GetMundaneArmorByD100()
{
int i1 = d100(1);
int i2 = Random(9)+1;
int i3 = d100(1);

//   if(i1==1)
//   {
    return GiveToChest("ba13_"+IntToString(i2),1);
//   }
}
void MakeEnchMagicArmor(int Ench)
{
object oARMOR = GetMundaneArmorByD100();
string sNAME = GetName(oARMOR);
int i = GetStringLength(sNAME);
int n = FindSubString(sNAME, " мастерской работы");

while(i>=n)
{
  sNAME[i]=&#39;&#39;;
  i = i-1;
}
}

void main()
{
//int i1 = d100(1);
}

Выдает ошибку "NO SEMICOLON AFTER EXPRESSION"(нет точки с запятой после выражения) на строку "sNAME[i]='';". Пробовал вместо '' ставить "" или null, так же заменял
Neverwinter Script
while(i>=n)
{
  sNAME[i]=&#39;&#39;;
  i = i-1;
}

на
Neverwinter Script
while(n<=i)
{
  sNAME[n]=&#39;&#39;;
  n++;
}

все равно ругался
там, где
Neverwinter Script
&#39
было " ' " без пробелов

Сообщение отредактировал wirTUS - Jun 3 2011, 15:38
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Jun 3 2011, 15:45
Сообщение #3419


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



В нвскрипте нет массивов.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение Jun 3 2011, 18:25
Сообщение #3420


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Т.е. отдельный символ строки получить нельзя, и, следовательно, строку нельзя уменьшить без полного изменения (приравнивания к меньшей строке)?

Решил порезать процедуру получения айтема, вставив ее в получение енча, соотв., куб кидается там же, соотв., по этому кубу сразу получается айтем, меняется имя и дается енч(пока еще не дается, но это не на долго). По идее, должно работать
Neverwinter Script
object GiveToChest(string str, int integer)
{
return CreateItemOnObject(str, OBJECT_SELF, integer, "");
}
//////////////////////////////////////////////
//////////////////////////////////////////////
//////////////////////////////////////////////
}
void MakeEnchMagicArmor(int Ench)
{
object oARMOR;
int i1 = d100(1);
int i2 = Random(9)+1;

   if(i1==1)
   {
    oARMOR = GiveToChest("ba13_"+IntToString(i2),1);
    SetName(oARMOR, "+"+IntToSrting(Ench)+" Обитый доспех");
   }


}

void main()
{
//int i1 = d100(1);
}

Кстати, padded armor, переведенный как обитый доспех это нормально? Вроде у него в русском есть свое имя, на "б" что-то, кажется

Уже налипил лишнюю скобку и "srting" (IMG:style_emoticons/kolobok_light/prankster2.gif)

Цитата
Вроде у него в русском есть свое имя, на "б" что-то, кажется
Стеганка на "б" (IMG:style_emoticons/kolobok_light/biggrin.gif)

Сообщение отредактировал wirTUS - Jun 3 2011, 17:52
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Jun 3 2011, 22:44
Сообщение #3421


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Цитата
Т.е. отдельный символ строки получить нельзя, и, следовательно, строку нельзя уменьшить без полного изменения (приравнивания к меньшей строке)?
Да. GetSubString() в помощь.

Багов на первый вгляд нет.

Переводом названий итемов не заморачивался, на английском всяко лучше. (IMG:style_emoticons/kolobok_light/rolleyes.gif)

Сообщение отредактировал Ilerien - Jun 3 2011, 22:44
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение Jun 4 2011, 02:01
Сообщение #3422


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



А вот такой вопрос: что есть database и кастомный dialog.tlk, с чем их едят, в чем (и есть ли) преимущества кастомного "диалога" над стандартным?
Еще вопрос: можно ли для какого-нибудь feat'а, сделанного спеллом (как ярость варвара, например) сделать радиальное меню с выбором из n вариантов (как клик ПКМ на игрока)?
Если да, то
1)Как?
2)Можно ли сделать многоуровневое радиальное меню (как ПКМ на игрока - spells - wizard - VI)?
3)Можно ли, "достраивать" это меню по ходу игры (например, прошел игрок по триггеру и бац! в меню фита новый пункт)?

Сообщение отредактировал wirTUS - Jun 4 2011, 04:33
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Keks
сообщение Jun 4 2011, 10:12
Сообщение #3423


Level 3
*

Класс: Теневой Танцор
Характер: Lawful Neutral
Раса: Человек



1) database - папка игры, где содержаться данные о встроенной БД (да и сама БД тож);
2) кастомный dialog.tlk - основной тлк игры, содержит текст, который используется как в самой игре, палитрах, так и во всех менюшках запуска nwn.exe. Если вносить изменения в него, то необходимо "закинуть" измененный файл в корень игры и в папку тлк. Система кастомного диалога была разработана биоварями для шардов (разный шарды = разные тлк), в то время как дефолтный вносит изменение во все с момента запуска игры
3) Да можно.
3.1 ) Создать фит и выдать его чару/ сделать выборным через cls_feat_***.2da, в последнем столбце поставив "1" это отразит фит в радикальном меню класса.
3.2 ) Можно - смотри по аналогии с многоуровневыми заклинаниями (например шейпы перевертыша).
3.3 ) Да можно - выдавать фиты (правда я делал это с применением нвнх, отключенным дефолтным ЕЛЦ и соответственно включенным своим ЕЛЦ (IMG:style_emoticons/kolobok_light/wink3.gif) )

Сообщение отредактировал Keks - Jun 4 2011, 10:13
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Jun 4 2011, 10:46
Сообщение #3424


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



База данных в НВН бывает внутренней (стандартные средства вроде SetCampaignInt() и т. д.) и внешней (я пользуюсь MySQL, прикрученным через NWNX ODBC). Выгоды от использования очевидны - возможность сохранять информацию вне зависимости от рестартов сервера.

Измененный dialog.tlk используется, когда хочется изменить какие-то строки, не поддающиеся переписыванию через 2да (скажем, название урона), или если критично видеть при создании персонажа измененные описания классов/фитов/заклинаний/.. Использовать не рекомендуется - потому что эта замена для клиента распространяется на все. (IMG:style_emoticons/kolobok_light/smile.gif)
Кастомный tlk - это отдельный tlk-файл, который подключается непосредственно к модулю. Хорош всем, кроме того, что строки из него при создании персонажа и заходе на сервер не видны.
Цитата
Еще вопрос: можно ли для какого-нибудь feat'а, сделанного спеллом (как ярость варвара, например) сделать радиальное меню с выбором из n вариантов (как клик ПКМ на игрока)?
Если да, то
1)Как?
2)Можно ли сделать многоуровневое радиальное меню (как ПКМ на игрока - spells - wizard - VI)?
3)Можно ли, "достраивать" это меню по ходу игры (например, прошел игрок по триггеру и бац! в меню фита новый пункт)?
Можно.
1) Сделав целевое заклинание состоящим из подзаклинаний, как всяческие теневые вызывания. Там есть грабли, которые я не так давно описывал в окрестности этой темы - поиск в помощь.
2) Нет.
3) Нет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение Jun 4 2011, 12:35
Сообщение #3425


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Огромное спасибо
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение Jun 6 2011, 13:36
Сообщение #3426


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



А вот вопрос по NWNx: куда и как он девает бд, созданую скриптом (был поюзан скрипт из примера по odbc)? Поиском обшарил на pwdata весь компьютер, ничего не нашел
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Jun 6 2011, 13:54
Сообщение #3427


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Странный вопрос. Честно говоря, я не помню, как MySQL хранит данные на харде, но зачем это вообще понадобилось? Есть удобный интерфейс для доступа к данным, зачем их физически на харде отлавливать?
Сам мускуль-то поставил? Без него (ну или SQLite/Postgres - но с мускулем проще всего) этот плагин в принципе работать не будет.

Сообщение отредактировал Ilerien - Jun 6 2011, 14:23
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Laajin
сообщение Jun 6 2011, 17:40
Сообщение #3428


Level 5
**

Класс: Пьяный Мастер
Характер: Chaotic Good
Раса: Человек



Там при распаковки NWNx в директорию игры по умолчанию стоит другой тип БД не MySQL, нужно в ручную за коментить в настройках NWNx ее и раскоментить MySQL. Может, в этом проблема?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение Jun 6 2011, 17:58
Сообщение #3429


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Я сначала попробовал в ацесс, в mysql попробовал создать скриптом из nwnx'овского демо модуля, на \u nonamedb (поменял в скрипте с pwdata на nonamedb) ругается ERROR 1049 <42000>: Unknown database 'nonamedb'. Предварительно создал nwnx'ом хост и зашел до вылета, скрипт должен был сработать
Цитата
Там при распаковки NWNx в директорию игры по умолчанию стоит другой тип БД не MySQL, нужно в ручную за коментить в настройках NWNx ее и раскоментить MySQL. Может, в этом проблема?
Понял, меняю
Цитата
Я сначала попробовал в ацесс, в mysql попробовал создать скриптом из nwnx'овского демо модуля, на \u nonamedb (поменял в скрипте с pwdata на nonamedb) ругается ERROR 1049 <42000>: Unknown database 'nonamedb'. Предварительно создал nwnx'ом хост и зашел до вылета, скрипт должен был сработать

Поставил настройки под mysql, скорее всего через скрипт получить доступ к БД получится, через mysql идет та же ошибка. С бд в принципе и mysql в частности до вчерашнего дня дела не имел, наверняка где-то тут кроется причина

Сообщение отредактировал wirTUS - Jun 6 2011, 18:27
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Keks
сообщение Jun 7 2011, 21:34
Сообщение #3430


Level 3
*

Класс: Теневой Танцор
Характер: Lawful Neutral
Раса: Человек



я как человек не искушенный в БД через SQLite подключал
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение Jun 8 2011, 08:57
Сообщение #3431


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Цитата
С бд в принципе и mysql в частности до вчерашнего дня дела не имел, наверняка где-то тут кроется причина
Самое простое - взять сборку типа денвера, там есть субд и веб-сервер со специальной мордой для взаимодействия с мусклом. Для разработки - самое то.
Цитата
я как человек не искушенный в БД через SQLite подключал
Если с бд будет взаимодействовать только сервер (т.е. никаких армори, онлайн-списков игроков, пополнения всякой фигни дмами в реальном времени и прочее), то это идеальный вариант. БД будет в файле, так что никакого гемора с настройкой субд и потерей коннекта. Благодаря реконнекту последнее не очень очевидно, но вылезает в виде забавных багов (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Keks
сообщение Jun 8 2011, 21:23
Сообщение #3432


Level 3
*

Класс: Теневой Танцор
Характер: Lawful Neutral
Раса: Человек



Берем любой плагин для БД (я юзаю SQLite Expert Personal version 2.3.49), устанавливаем его на комп, затем берем папочку НВН и дублируем ее (скажем обозвав NWN_Server) в тот же каталог, где стоит клиентская версия, таким образом получается 2 папки, полностью подобные, но с разными названиями. Я работаю только в папке NWN_Server (правлю модуль, создаю ерки и пр.), из нее же запускаю NWNX, а из клиентской папки запускаю только игровой процесс.
Таким образом ставить виртуальные сервера на комп НЕ НАДО. Таким образом уже года 3 все пашет оки.

Цитата
Благодаря реконнекту последнее не очень очевидно, но вылезает в виде забавных багов smile.gif
Если честно, как-то не замечал багов, хотя человек спрашивает для "рабочей машины", т.е. дома делать неискушенному человеку, повторюсь, тут это оптимальный вариант, а для сервера да, лучше MYSQL

З.ы. А отредактировать чара в момент создания артмани и ему подобными можно, т.к. чар создается локально и только после нажатия кнопочки "Играть" в первый раз дублируется на сервере в папке аккаунта. Т.е. изначально чар локален, а следовательно с ним мона делать все, что душе угодно. Выдача плюшек и "всякой фигни" ДМами обрабатывается движком сервера по запросу из ДМклиента, т.ч. таким образом можно редактировать чаров игроку.

Сообщение отредактировал Keks - Jun 8 2011, 21:29
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Talarasha
сообщение Aug 29 2011, 01:02
Сообщение #3433


Level 6
**

Класс: Маг
Характер: Lawful Evil
Раса: Нежить



Вопрос по работе с освещением. В модуле понадобился аналог "призрачного зрения", как в XP2 с кольцом. По определенным причинам смена освещения через смену дня и ночи мне не подошла (не хотелось отказываться от стандартного ночного освещения), поэтому делал руками, через SetTileSourceLightColor(). Проблемы как таковых две - не дает результата применение черного цвета к источнику света (погасить не удается), но здесь, я думаю, ничего не сделать - так во всяком случае лексикон говорит. Во-вторых, не могу после возврата в нормальный режим корректно вернуть цвета, даже с помощью RecomputeStaticLighting(). Сначала думал, что ошибка в алгоритме, которым я запоминаю исходные цвета, но перезаход в область восстанавливает корректно. В чем ошибка, можно ли как-то обойти?

Код для ознакомления:
Neverwinter Script
void EtherealVision(int Color1, int Color2, int Recovery = 0)
{
    object oPC = GetFirstPC();
    object oArea = GetArea(OBJECT_SELF);
    int Height = GetAreaSize(AREA_HEIGHT);
    int Width = GetAreaSize(AREA_WIDTH);
    vector v = Vector(0.0f, 0.0f, 0.0f);
    location Pointer;

    // Main cycle; 10.0f is because Tile functions has it's own coordinate
    // system (we got coordinate of points and tile functions uses coordinate
    // of grid (integer number of squares, first square [0][0] is a bottom left)
    while(v.y < Height * 10.0f)
    {
        v.x = 0.0f;
        while(v.x < Width * 10.0f)
        {
            v = Vector(v.x/10.0, v.y/10.0, 0.0f);
            Pointer = Location(oArea,v,0.0f);
            if(Recovery == 0) // Remember colors
            {
                SetLocalInt(oArea,"TILECOLOR1"+IntToString(FloatToInt(v.x)) + IntToString(FloatToInt(v.y)),
                    GetTileSourceLight1Color(Pointer));
                SetLocalInt(oArea,"TILECOLOR2"+IntToString(FloatToInt(v.x)) + IntToString(FloatToInt(v.y)),
                    GetTileSourceLight2Color(Pointer));
            }
            else // Recover colors if it's a recovery call
            {
                Color1 = GetLocalInt(oArea,"TILECOLOR1"+IntToString(FloatToInt(v.x)) + IntToString(FloatToInt(v.y)));
                Color2 = GetLocalInt(oArea,"TILECOLOR2"+IntToString(FloatToInt(v.x)) + IntToString(FloatToInt(v.y)));
            }
            SetTileSourceLightColor(Pointer,Color1,Color2);
            v = Vector(v.x*10.0, v.y*10.0, 0.0f);
            v.x = v.x + 10.0f;
        }
        v.y = v.y + 10.0f;
    }
    RecomputeStaticLighting(oArea);
}

По "функция(цвет1,цвет2)" включает режим, по "функция(0,0,1)" выключает.

Сообщение отредактировал Talarasha - Aug 29 2011, 01:05
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Aug 29 2011, 10:13
Сообщение #3434


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Динамическое освещение в НВН вообще глючное, и RecomputeStaticLighting работает криво. Видимо, это один из его багов, наряду со свечением у плейсов после его выполнения.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
ReZkiy
сообщение Sep 9 2011, 15:04
Сообщение #3435


Level 5
**

Класс: Вор
Характер: Neutral Good
Раса: Человек



А как сделать,что бы НПС ходил туда-сюда от сундука к сундуку и совершал анимацию "открыть ключом"?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 136 137 138 139 140 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 4th May 2025 - 03:50