![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2361
|
|
Level 1 Класс: Друид Характер: Neutral Good Раса: Эльф ![]() |
QUOTE Да, вот еще что, если ты обратил внимание, то все модули сделаны так, чтобы в них не было ничего от аддона, в котором компания не делалась. Да уж. И первые проявления этого - отказы в компилляции... (IMG:style_emoticons/kolobok_light/sad.gif) Dik Morris, Zirrex, спасибо. Пойду искать пропатченную версию в продаже, т.к. скачать 76 мб нереально... (IMG:style_emoticons/kolobok_light/sad.gif) Сообщение отредактировал Alaron - Jun 25 2006, 09:02 |
![]()
Сообщение
#2362
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Dik Morris, теперь мне понятно! СПАСИБО БОЛЬШОЕ!
|
![]()
Сообщение
#2363
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
А как уничтожить скрипт, который, допустим запускается второй раз (это в диалоге)?
|
![]()
Сообщение
#2364
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Белатрис, нужно просто делать проверку на локальные переменные.
По ним читай Здесь, либо в мануале от Aiwan'a. PS: т.е скрипт у тебя будет иметь такой вид: NSS void main()
{ if (GetLocalInt(OBJECT_SELF, "temp") == 0) { SetLocalInt(OBJECT_SELF, "temp",1); // Код ; } } |
![]()
Сообщение
#2365
|
|
Level 1 Класс: Друид Характер: Neutral Good Раса: Эльф ![]() |
Дамы и Господа, помогите, плиз, решить задачку.
Дано: Файл *.erf в нем *.uti, скрипты и информация для экспорта (кому интересно, ссылка выше на nwvault) Надо: Как можно удобнее вставить сие нововведение в кампании (NWN, SoU и HotU) Решение: Наиболее вероятным решением всех отозвавшихся является вставка через Аврору перепакованием модулей. Вопрос: Можно ли вставить содержимое файла ерф в Оверрайд и как? Если никак, то что еще можете предложить? Заранее much thanks... Сообщение отредактировал Alaron - Jun 26 2006, 12:34 |
![]()
Сообщение
#2366
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Alaron, без внедрения в модули, у тебя ничего не получится. Скрипты сделаны с таким учетом, что ты их будешь устанавливать именно в модуль, а не отдельно. Отдельно же они даже работать не будут, потому что не понятно к чему относятся.
|
![]()
Сообщение
#2367
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
ИМХО, можно, только ncs (скомпилированные).
|
![]() ![]()
Сообщение
#2368
|
|
Лорд AxisTown'a ![]() Класс: Монах Характер: Lawful Good Раса: Дварф NWN: Маппинг ![]() |
QUOTE почему же тогда он не вспомнил, что я ни-ни в скриптах, ... а почему ОН( или кто-то другой) должен что-то о тебе вспоминать специально? я конечно понимаю, что каждый человек выдающиеся , уникальная ит итп личность, но , скриптеры , как правило , люди занятые своими собственными скриптами и в голове лишнюю информацию не держат..так что , если что-то надо конкретное, то и и писать надо соответственно ибо со чтением чужих мыслей у нас не очень получаеться пока (IMG:style_emoticons/kolobok_light/biggrin.gif) (IMG:style_emoticons/kolobok_light/mosking.gif) п.с. вышесказанное ,кстати, не только к конкретному случаю относиться (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#2369
|
|
Level 2 ![]() Класс: Маг Характер: Chaotic Evil Раса: Полуэльф ![]() |
Доброго времени суток.
Прошу не посылать читать мануалы. Те кто пользуются NWNX знаю, что припомощи NWNX можно связать NWN и MySQL. Я связал (все отлично работает), но теперь появились вопросы: как записать данный в таблицу и как их от туда причитать и записать в переменные. Записать оказалось очень легко, но как от туда их прочитать? Собственно трока для записи в таблицу NSS string sSQL="INSERT INTO nwn(playername, charname, pc_dm, ip_address) "+ "VALUES('"+sPlayer+"','"+sChar+"','"+sDM+"','"+ip+"')"; SQLExecDirect(sSQL); Тут мы записываем в таблицу "nwn" в соответсвующие поля переменные sPlayer, sChar, sDM, ip. А как, имея уже заполненную таблицу, записать значения каждого соответсв. поля в переменную sPlayer, sChar, sDM, ip? Поидее мы должны выбрать сделать "SELECT * FROM `nwn_stast` WHERE 'playername' = 'sPlayer'" и т.п., а потом из полученного результата прочитать для каждой переменной значения. Как это сделать? |
![]()
Сообщение
#2370
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
я очень давно занимался nwnx'ом и т.д.. по памяти, там есть функции:
QUOTE SQLFirstRow\SQLFetch <- для чеков SQLExecDirect <- запрос SQLGetData <- получение данных ^ помойму что-то типа string sResult = SQLGetData(1); после запроса SELECT помойму так.. посмотри подфорум - Шарды рунета.. там было про ето Сообщение отредактировал [MoF]Darth_Nick - Jul 2 2006, 14:16 |
![]()
Сообщение
#2371
|
|
Level 8 ![]() ![]() ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
QUOTE(OxCom @ Jul 2 2006, 12:59) [snapback]86839[/snapback] Записать оказалось очень легко, но как от туда их прочитать? Собственно трока для записи в таблицу NSS string sSQL="INSERT INTO nwn(playername, charname, pc_dm, ip_address) "+ "VALUES('"+sPlayer+"','"+sChar+"','"+sDM+"','"+ip+"')"; SQLExecDirect(sSQL); Тут мы записываем в таблицу "nwn" в соответсвующие поля переменные sPlayer, sChar, sDM, ip. А как, имея уже заполненную таблицу, записать значения каждого соответсв. поля в переменную sPlayer, sChar, sDM, ip? Поидее мы должны выбрать сделать "SELECT * FROM `nwn_stast` WHERE 'playername' = 'sPlayer'" и т.п., а потом из полученного результата прочитать для каждой переменной значения. Как это сделать? следующий код сделает запрос: NSS string sPlayer = SQLEncodeSpecialChars("Аккаунт"); string sSQL = "SELECT * FROM nwn_stast WHERE playername='"+ sPlayer +"'"; SQLExecDirect(sSQL); результатом которого будет набор записей со значением "Аккаунт" в поле playername функция SQLFetch() позволит продвигаться по результирующему набору от первой записи до последней, возвращая SQL_SUCCES в том случае, если запись существует и SQL_ERROR в противоположном если SQLFetch() вернула SQL_SUCCES - значит можно получить значения полей текущей записи функцией SQLGetData(), в качестве параметра которой передается номер поля |
![]()
Сообщение
#2372
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Насколько я помню, какие-то примеры должны быть в демо-модуле NWNX-ODBC.
Во-первых, начну с совета. Использовать в запросах заранее неизвестные и задаваемые игроком строки (имя чара, аккаунт и т.д.) следует ТОЛЬКО с функцией SQLEncodeSpecialChars. т.е.: "SELECT ..... WHERE ...='"+SQLEncodeSpecialChars(sString)+"' ...". То же и при INSERT. В базе эти строки будут закодированными (' заменяется на `~), а при их вытаскивании нужно будет сделать SQLDecodeSpecialChars. Во-вторых, как вытаскивать записи из базы. Приведу примеры. Получение номера и прав игрока (нужна одна запись): NSS #include "aps_include" ... string sName = GetName(oPC); string sAccount = GetPCPlayerName(oPC); SQLExecDirect("SELECT id, rights FROM nwn WHERE playername='"+SQLEncodeSpecialChars(sAccount)+"' AND charname='"+SQLEncodeSpecialChars(sName)+"'"); //Выполнение запроса if(SQLFetch()) //если есть хоть одна такая запись { int nID = StringToInt(SQLGetData(1)); //поле 1 - id int nRights = StringToInt(SQLGetData(2)); //поле 2 - rights } Получение нескольких записей (инициализация заданных переменных - упрощенный вариант): NSS #include "aps_include" SQLExecDirect("SELECT name, val FROM preset_vars"); //запрос while(SQLFetch()) //пролистывать записи до конца { string sVarName = SQLGetData(1); int nVal = StringToInt(SQLGetData(2)); SetLocalInt(GetModule(), sVarName, nVal); } На Экзисе я использую немного изменённую библиотеку, в частности там укорочены имена функций (SQLExec, SQLGet) и улучшена SQLEncodeSpecialChars: в запрос добавляется "\", и декодировать уже ничего не надо. Сообщение отредактировал virusman - Jul 2 2006, 18:49 |
![]()
Сообщение
#2373
|
|
Level 2 ![]() Класс: Маг Характер: Chaotic Evil Раса: Полуэльф ![]() |
Спасибо разобрался. Теперь такой вопрос:
Поставил скрипт в OnClientLeave. Он не срабатывает когда игрок выходит. NSS #инклуды void main() { object oPC = GetExitingObject(); if (!GetIsPC(oPC)) return; #работа с MySQL } Если этот же скрипт поставить объекту на OnUse и заменить GetExitingObject(); на GetExitingObject(); то все работает. |
![]()
Сообщение
#2374
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
На выходящем игроке некоторые функции не работают. Но это не тот случай, потому что подобный код:
NSS object oPlayer = GetExitingObject(); int nDM = GetIsDM(oPlayer); ... if (!nDM) ExecuteScript("lr_talsave_save",OBJECT_SELF); работает. Сообщение отредактировал virusman - Jul 6 2006, 15:36 |
![]()
Сообщение
#2375
|
|
Level 8 ![]() ![]() ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
В OnClientLeave функция GetIsPC возвращает FALSE.
|
![]()
Сообщение
#2376
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Ой, перепутал GetIsPC и GetIsDM. (IMG:style_emoticons/kolobok_light/smile.gif)
OnClientEnter/OnClientLeave всегда срабатывают только на игроках. Дополнительные проверки тут не нужны. |
![]() ![]()
Сообщение
#2377
|
|
Level 3 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
Здраствуйте всем вам. Уезжал на долго не создавал. Весь опыт потерял набираю заново. Как сделать что когда игрок наступает на Триггер на него кастуется 5 заклинаний. Лечение, защита, сила, и еще чтонибудь на ваш вкус только не навороченное. (IMG:style_emoticons/kolobok_light/nea.gif)
|
![]()
Сообщение
#2378
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
На onEnter, триггера:
NSS void main()
{ object oPC = GetEnteringObject(); effect eHeal = EffectHeal(GetMaxHitPoints(oPC)); effect eStrength = EffectAbilityIncrease(ABILITY_STRENGTH,1); effect eAC = EffectACIncrease(1); // Остальные эффекты добавишь сам, ищи в фильтре Effect* if (!GetIsPC(oPC)) return; if (GetCurrentHitPoints(oPC) != GetMaxHitPoints(oPC)) { ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oPC); } ApplyEffectToObject(DURATION_TYPE_PERMANENT, eStrength, oPC); // Сила повышается на 1. Бесконечно. ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAC, oPC); // AC повышается на 1. Бесконечно. DestroyObject(OBJECT_SELF, 0.4); // Удали строку если не нужно чтобы скрипт срабатывал 1 раз. } Сообщение отредактировал Dik Morris - Jul 7 2006, 15:44 |
![]()
Сообщение
#2379
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
Здрв!Нужен ответ.Как добавить в имя вещи слово,т.Е. Если был "топор" то сделать его "топор хлада" с помощью скрипта.Заране спасибо!%:-)
|
![]()
Сообщение
#2380
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
SetName(oItem, GetName(oItem)+" of Cold");
|
![]()
Сообщение
#2381
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
Спасибо,друг virusman!Ты продвинул мою работу на сто,нет на тысячу стае!Еще раз сенкс!
|
![]()
Сообщение
#2382
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Хотел уточнить что данная фун-ция, появляется только в версии 1.67. (IMG:style_emoticons/kolobok_light/wink3.gif)
Сообщение отредактировал Dik Morris - Jul 8 2006, 12:04 |
![]()
Сообщение
#2383
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Кстати, с помощью этой функции можно делать индивидуальные вещи. Т.е. вначале сохранять в строковую переменную название вещи, а уж потом менять в момент создания.
|
![]()
Сообщение
#2384
|
|
Level 3 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
Скажите как сделать чтобы при слове "далее" персонаж перемещался к указаному НПС. Тоесть.
ПОдоходит к капитану на одномо острове. -Переправь меня на другой остров. - не прооблема давай. -далее. и персонаж оказывается возле НПС капитана на другом острове. |
![]()
Сообщение
#2385
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
DarkDeivel, подобные ситуации разбираются очень часто, используй поиск.
Нашел, меньше чем за полминуты. Читать. Сообщение отредактировал Dik Morris - Jul 8 2006, 21:34 |
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 16:08 |