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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 101 102 103 104 105 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
DarkDeivel
сообщение Sep 22 2006, 08:49
Сообщение #2551


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



Люди. Как сделать так чтобы каждая раса начинала в разном городе. Типа челове в Человеческом городе. Эльф в эльфийском. и.т.д.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Sep 22 2006, 09:16
Сообщение #2552


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



Написать простой скрипт, который проверяет расу игрока и кидает того в нужное место:

NSS
// Под точкой старта, создаем триггер и на onEnter, вешаем код:
void main()
{
string sRace;
object oEnter = GetEnteringObject();
int nRace =GetRacialType(oEnter);
int nInt = GetLocalInt(oEnter, "nEnterPlayer");

if (nInt == 1)
   return;

if (GetIsPC(oEnter) == FALSE)
   return;

SetLocalInt(oEnter, "nEnterPlayer", 1);

switch (nRace)
   {
   case RACIAL_TYPE_DWARF: sRace = "DWARF"; break;
   case RACIAL_TYPE_GNOME: sRace = "GNOME"; break;
   case RACIAL_TYPE_HALFELF: sRace = "HALFELF"; break;
   case RACIAL_TYPE_HALFLING: sRace = "HALFLING"; break;
   case RACIAL_TYPE_HALFORC: sRace = "HALFORC"; break;
   case RACIAL_TYPE_HUMAN: sRace = "HUMAN"; break;
   case RACIAL_TYPE_ELF: sRace = "ELF"; break;
   }
AssignCommand(oEnter, ClearAllActions());
AssignCommand(oEnter, ActionJumpToObject(GetWaypointByTag("WP_"+sRace+"")));
}


Теперь о его настройке. Для каждой рассы необходимо создать вайпоинт c тэгом: WP_+НАЗВАНИЕ_РАССЫ и разместить в нужном месте. Т.е скажем для людей это будет: WP_HUMAN, который соответственно будет находится в людском городе.

Сообщение отредактировал Dik Morris - Sep 22 2006, 09:46
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DarkDeivel
сообщение Sep 22 2006, 09:32
Сообщение #2553


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



Если честно, то я не въехал. (IMG:style_emoticons/kolobok_light/nea.gif)

Я имею ввиду. Что при создании нового перса он сразу начинается в определённом городе. Если ты написал то что мне надо. То я попробовал чот неправильно. Я давно не создавал все позабывал. Поэтому не ругай меня за мою тупость.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Sep 22 2006, 09:33
Сообщение #2554


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

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



Кстати, какую-нить расу можно в скрипте не указывать. Тогда ее представитель появется в точке старта. Не поставить ее не получится, так что че ей просто так стоять? (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Sep 22 2006, 09:40
Сообщение #2555


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



-fenix-, логично. (IMG:style_emoticons/kolobok_light/smile.gif)

DarkDeivel,
QUOTE
Что при создании нового перса он сразу начинается в определённом городе

именно это и написал. (IMG:style_emoticons/kolobok_light/smile.gif)

PS: в скрипте была небольшая ошибка, но я исправил. Читай пост еще раз. И описание. (IMG:style_emoticons/kolobok_light/wink3.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DarkDeivel
сообщение Sep 22 2006, 09:49
Сообщение #2556


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



ВОт код я повешал. Ты писал

Теперь о его настройке. Для каждой рассы необходимо создать вайпоинт c тэгом: WP_+НАЗВАНИЕ_РАССЫ и разместить в нужном месте. Т.е скажем для людей это будет: WP_HUMAN, который соответственно будет находится в людском городе.

А вот WP_HUMAN куданить в скрипте записывать надО?? (IMG:style_emoticons/kolobok_light/biggrin.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 22 2006, 09:59
Сообщение #2557


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

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



не в скрипте.
- берешь ЛЮБОЙ вэйпоинт из палитры
- ставишь его туда, где будут люди появляться
- даешь ему тэг WP_HUMAN
дальше по аналогии с другими рассами.

что не ясно то?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DarkDeivel
сообщение Sep 22 2006, 20:06
Сообщение #2558


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



QUOTE(Lex @ Sep 22 2006, 09:59) [snapback]92436[/snapback]

не в скрипте.
- берешь ЛЮБОЙ вэйпоинт из палитры
- ставишь его туда, где будут люди появляться
- даешь ему тэг WP_HUMAN
дальше по аналогии с другими рассами.

что не ясно то?

Всё ясно. Все работает. (IMG:style_emoticons/kolobok_light/declare.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Diamond
сообщение Sep 23 2006, 14:36
Сообщение #2559


Level 2
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



Пара вопросов по скриптам.

Есть скрипт, который сажает непися на стул (то что запостил в первый раз это был полный бред...)

NSS
void main()
{
ActionSit (GetNearestObjectByTag("SIT_STOOL", OBJECT_SELF));
}


Но при разговоре с игроком непись ясное дело встаёт. Сам вопрос: как надо поменять скрипт, чтобы после завершения диалога непись опять садился?

И ещё вопрос: Что надо поставит на триггер, чтобы когда на него наступит игрок к нему подбегал непись и начинал диалог, но этого бы не происходило пока переменная "Перем" скажем не равна 1?

Сообщение отредактировал Diamond - Sep 23 2006, 15:01
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 23 2006, 14:50
Сообщение #2560


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

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



NSS
    if (IsInConversation(OBJECT_SELF)) return; // если разговариваем - выход
    if (GetIsInCombat(OBJECT_SELF)) return; // если в бою - выход
    // в остальных случаях садимся
   ActionSit (GetNearestObjectByTag("SIT_STOOL", OBJECT_SELF));

Этот блок поставить в ХБ скрипт или в ЮД, в ту часть, которая отвечает за ХБ.

скрипт для триггера и диалога НПС писали уже раз 100. поищи.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Diamond
сообщение Sep 23 2006, 15:08
Сообщение #2561


Level 2
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



Со стулом теперь всё ОК (IMG:style_emoticons/kolobok_light/good.gif) Спасибо!


Сообщение отредактировал Diamond - Sep 23 2006, 16:13
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Diamond
сообщение Sep 24 2006, 11:21
Сообщение #2562


Level 2
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



Вопрос: Есть скрипт на ТекстПоявляетсяПри
NSS
int StartingConditional()
{

    // Inspect local variables
    if(!(GetLocalInt(GetPCSpeaker(), "ar1_leave_sailok") != 1))
        return FALSE;
    if(!(GetLocalInt(GetPCSpeaker(), "ar1_leave_sajala") != 1))
        return FALSE;
    if(!(GetLocalInt(GetPCSpeaker(), "ar1_leave_ship_contr") != 1))
        return FALSE;
    if(!(GetLocalInt(GetPCSpeaker(), "ar1_leave_ship_merc") != 1))
        return FALSE;

    return TRUE;
}


Но мне нужно, чтобы строка диалога исчезала только если все 4 переменныи равны 1, а в этом вареанте она исчезает если одна равна 1.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Sep 24 2006, 12:19
Сообщение #2563


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



NSS
int StartingConditional()
{
    object oPC = GetPCSpeaker();

    if (GetLocalInt(oPC, "ar1_leave_sailok") == 1 && GetLocalInt(oPC, "ar1_leave_sajala") == 1 &&
    GetLocalInt(oPC, "ar1_leave_ship_contr") == 1 && GetLocalInt(oPC, "ar1_leave_ship_merc") == 1)
    {
     return FALSE;
    }
    else
     return TRUE;
}


Когда все 4 переменные равны TRUE, то строка исчезает. Иначе - висит.

Сообщение отредактировал Dik Morris - Sep 24 2006, 19:30
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Sep 24 2006, 19:20
Сообщение #2564


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



а при компиляци не ругается на некое невозвращенное значение функции? (IMG:style_emoticons/kolobok_light/crazy.gif)

имхо else return TRUE;
заменить на просто return TRUE;
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
StalkerDtN
сообщение Sep 24 2006, 21:03
Сообщение #2565


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [Sn]



QUOTE(2_advanced @ Sep 25 2006, 00:20) [snapback]92679[/snapback]
а при компиляци не ругается на некое невозвращенное значение функции?

if-else типа друг друга дополняют, так что не ругается! (IMG:style_emoticons/kolobok_light/biggrin.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilrilan
сообщение Sep 27 2006, 08:57
Сообщение #2566


Level 1


Класс: Некромант
Характер: Lawful Evil
Раса: Человек



Как можно поймать событие что человек альтанулся? Не резко нажал Disconnect, а взял и выткнул физически сетевой шнур из компа. Или у него просто обрыв связи был. OnClientLeave почему-то этот момент не ловит
:-((
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dart_Vadder
сообщение Sep 27 2006, 10:05
Сообщение #2567


Level 4
**

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



QUOTE(Ilrilan @ Sep 27 2006, 11:57) [snapback]92874[/snapback]

Как можно поймать событие что человек альтанулся? Не резко нажал Disconnect, а взял и выткнул физически сетевой шнур из компа. Или у него просто обрыв связи был. OnClientLeave почему-то этот момент не ловит
:-((

Ясно дело, не ловится. Программно это дело не решается.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Sep 27 2006, 15:31
Сообщение #2568


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



внешним софтом отлавливать посыл пакета на выход =)
а чтоб не альтились - сделать спец палку с диалогом, бутящую персов =)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Sep 28 2006, 02:41
Сообщение #2569


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



QUOTE(Ilrilan @ Sep 27 2006, 09:57) [snapback]92874[/snapback]
Как можно поймать событие что человек альтанулся? Не резко нажал Disconnect, а взял и выткнул физически сетевой шнур из компа. Или у него просто обрыв связи был. OnClientLeave почему-то этот момент не ловит

интересный метод "альтования", однако. при описываемом тобой раскладе, альтующийся извращенец быстро склеит ласты, ибо сервер пакет выхода не видит, и думает что чел здесь. и только через минуту таймаута сервак по отсутствию "пингов" поймет, что чела нет и спокойно завершит сессию, записав состояние перса. а состояние это скорее всего будет "несвежим", и зайдя обратно чел будет тщетно взывать к ДМам "БАГ!Я ЗОШОЛ МЕРТВЫЙ!!!!А БЫЛ ЖИВОЙ!!!!" (IMG:style_emoticons/kolobok_light/shout.gif) . так что способ этот относится скорее к сепукке, нежели к позорному бегству.

QUOTE(2_advanced @ Sep 27 2006, 16:31) [snapback]92904[/snapback]
внешним софтом отлавливать посыл пакета на выход =)

это "ответ чемберлену" на нормальное альтование. (IMG:style_emoticons/kolobok_light/wink3.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sharklike
сообщение Sep 28 2006, 05:25
Сообщение #2570


Level 8
***

Класс: Бледный Мастер
Характер: Chaotic Neutral
Раса: Человек



QUOTE(dumbo @ Sep 28 2006, 02:41) [snapback]92934[/snapback]

интересный метод "альтования", однако. при описываемом тобой раскладе, альтующийся извращенец быстро склеит ласты, ибо сервер пакет выхода не видит, и думает что чел здесь. и только через минуту таймаута сервак по отсутствию "пингов" поймет, что чела нет и спокойно завершит сессию, записав состояние перса.

В большинстве случаев так и будет, но не всегда. Если клиент линуховый и его убивают, то сервер тут же отключает чела, даже не получив пакет выхода. Видать как-то еще обрабатывается состояние сокета.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Animeslave
сообщение Oct 2 2006, 08:22
Сообщение #2571


Level 1


Класс: Самурай
Характер: True Neutral
Раса: Полуэльф



Пытался сделать дверь которая закрывается 20 часов вечера и открывается в 8 утра.

Что не правильно? Ставил на OnHeartBeat

NSS
void main()
{
    object door=OBJECT_SELF;
    {
        if (GetIsOpen(door)==FALSE && GetTimeHour()>=8 && GetTimeHour()<20)
        {
            ActionUnlockObject(door);
            ActionOpenDoor(door);
        }
        if (GetIsOpen(door)==TRUE && GetTimeHour()>=20 && GetTimeHour()<8)
        {
            ActionCloseDoor(door);
            ActionLockObject(door);
        }
    }
}


Сообщение отредактировал Animeslave - Oct 2 2006, 08:22
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Oct 2 2006, 17:06
Сообщение #2572


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

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



А что не работает?
зы: запирать дверь лучше
NSS
// Set the locked state of oTarget, which can be a door or a placeable object.
void SetLocked(object oTarget, int bLocked)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Animeslave
сообщение Oct 2 2006, 21:08
Сообщение #2573


Level 1


Класс: Самурай
Характер: True Neutral
Раса: Полуэльф



Lex спасибо, что перенес. Хочу сильно извениться за свои слова. Простите!

И Lex Если это ты мне, то дело не в том, что плохо запирается, а в том, что, вообще, в назначеный час, не закрываестя, или не открывается дверь.

ps: извеняюсь за неинформативность.

Сообщение отредактировал Animeslave - Oct 2 2006, 21:10
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Oct 2 2006, 21:27
Сообщение #2574


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

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



- Ну для начала у тебя неверное условие:
"GetTimeHour()>=20 && GetTimeHour()<8" Время не может быть одновременно больше 20 и меньше 8. Там надо не И, а ИЛИ ставить.
- потом у тебя идет проверка на открытость/закрытость двери, а надо бы на запертость
- ну и если дверь заперта на ключ, то ты ее некорректно отпираешь, поэтому открыть ее не получается утром.. ну а вечером не закрывается потому что условие неверное.

В итоге что-то такое получается: (скрипт из ПЛ, только тут наоборот, днем закрыто, а ночью открыто.. ночной храм был)
NSS
void main()
{
int H = GetTimeHour();
object oSelf = OBJECT_SELF;
if ((H>=8)&&(H<20)&&(!GetLocked(oSelf)))
   {
   SetLocked(oSelf,TRUE);
   ActionCloseDoor(oSelf);
   }
if (((H>=20)||(H<8))&&(GetLocked(oSelf)))
   {
   SetLocked(oSelf,FALSE);
   ActionCloseDoor(oSelf);
   }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Animeslave
сообщение Oct 3 2006, 22:05
Сообщение #2575


Level 1


Класс: Самурай
Характер: True Neutral
Раса: Полуэльф



Lex спасибо за помощь нашел ошибку. переправил скрипт.

NSS
void main()
{
    object door=OBJECT_SELF;
    {
        if (GetTimeHour()>=8 && GetTimeHour()<20)
        {
            if (GetLocked(door)==TRUE)
            {
                SetLocked(door, FALSE);
                ActionOpenDoor(door);
            }
            else
            {
                ActionOpenDoor(door);
            }
        }
        else
        {
            if (GetLocked(door)==FALSE)
            {
                ActionCloseDoor(door);
                SetLocked(door, TRUE);
            }
            else
            {
                ActionCloseDoor(door);
            }
        }
    }
}


Все также на OnHeartBeat двери. И Начальное состояние двери закрыто.
Проверил работает

ps: Твой скрипт,Lex, почемуто отказывается работать.

LEX: ну у меня работал и работает до сих пор, хотя и старенький, его надо бы оптимизировать.

Сообщение отредактировал Lex - Oct 3 2006, 22:41
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 101 102 103 104 105 > » 
Ответить в эту темуОткрыть новую тему
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 



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