Очень радует, что вам все понятно. Продолжаем.
Мы уже разбирали что такое пременная. Теперь мы применим знания в главном составляющем грамотного мода - диалоге.
Переменная проверяется в начале корневой строки так (эта строка появится ТОЛЬКО когда переменная равна 0):
Neverwinter Script Source
//:://////////////////////////////////////////////
//:: Проверим отсутсвие переменной AIWAN_LESSON_01_DIALOG
//:: Copyright © 2007 WRG!
//:://////////////////////////////////////////////
/*
Описание самого квеста, если нужно.
*/
//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 10.12.2007
//:://////////////////////////////////////////////
int StartingConditional( )
{
object oPC = GetPCSpeaker( );
int iQuest = GetLocalInt( oPC, "AIWAN_LESSON_01_DIALOG" );
//-------------------------------------------------------
if ( iQuest == 0 ) // Если локалка равна 0.
{
return TRUE; // Возврат ИСТИНА, т.е. старт диалога
}
return FALSE; // В противном случае отбой
}
Эта строка диалога появится ТОЛЬКО когда переменная ровна 1:
Neverwinter Script Source
//:://////////////////////////////////////////////
//:: Проверим переменную AIWAN_LESSON_01_DIALOG на 1
//:: Copyright © 2007 WRG!
//:://////////////////////////////////////////////
/*
Описание самого квеста, если нужно.
*/
//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 10.12.2007
//:://////////////////////////////////////////////
int StartingConditional( )
{
object oPC = GetPCSpeaker( );
int iQuest = GetLocalInt( oPC, "AIWAN_LESSON_01_DIALOG" );
//-------------------------------------------------------
if ( iQuest == 1 ) // Если локалка равна еденице.
{
return TRUE; // Возврат ИСТИНА, т.е. старт диалога
}
return FALSE; // В противном случае отбой
}
В каждой строке вы присвоите новую переменную для продвижения по диалогу далее. Не забываем, что слоты для проверки и присваивания переменных разные.
Neverwinter Script Source
//:://////////////////////////////////////////////
//:: Присвоим переменную AIWAN_LESSON_01_DIALOG 1
//:: Copyright © 2007 WRG!
//:://////////////////////////////////////////////
/*
Описание самого квеста, если нужно.
*/
//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 10.12.2007
//:://////////////////////////////////////////////
void main( )
{
object oPC = GetPCSpeaker( );
// object oPC = GetFirstPC( ); - так будет работать на любом месте для сингла
SetLocalInt( oPC, "AIWAN_LESSON_01_DIALOG", 1 );
}
Все это скрипты для чайников. Коими мы с вами и являемя. Но я попробую вам дать один скрипт универсальный, что бы вы поняли, что мы с вами используем 1% потенциала кода. Например, что бы не писать 5 скриптов для 5 строк в которых существующая переменная увеличивается на 1, можно написать такой скрипт на все строки присвоения:
Neverwinter Script Source
//:://////////////////////////////////////////////
//:: Присвоим переменную универсально
//:: Copyright © 2007 WRG!
//:://////////////////////////////////////////////
/*
Описание самого квеста, если нужно.
*/
//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 10.12.2007
//:://////////////////////////////////////////////
void main( )
{
object oPC = GetPCSpeaker( );
// object oPC = GetFirstPC( ); - так будет работать на любом месте для сингла
int i = GetLocalInt( oPC, "AIWAN_LESSON_01_DIALOG" );
// Проверим текущее состояние переменной
// и прибавим к полученному результату единичку.
SetLocalInt( oPC, "AIWAN_LESSON_01_DIALOG", i+1 );
}
Нескаторые ремарки. Вы заметили, что некоторые скрипты не содержат скобо {}. Я изначально пишу их везде что бы вы не путались и понимали блоки. НО. Если код скрипта содержит одну строку, то условие в блоки ставить не нужно. Пример:
Этот код
Neverwinter Script Source
int StartingConditional( )
{
object oPC = GetPCSpeaker( );
int iQuest = GetLocalInt( oPC, "ПЕРЕМЕННАЯ ОДЫН" );
//-------------------------------------------------------
if ( iQuest == 1 ) // Если локалка равна еденице.
{
return TRUE; // Возврат ИСТИНА, т.е. старт диалога
}
return FALSE; // В противном случае отбой
}
РАВЕН этому:
Neverwinter Script Source
int StartingConditional( )
{
object oPC = GetPCSpeaker( );
int iQuest = GetLocalInt( oPC, "ПЕРЕМЕННАЯ ОДЫН" );
//-------------------------------------------------------
if ( iQuest == 1 ) // Если локалка равна еденице.
return TRUE; // Возврат ИСТИНА, т.е. старт диалога
return FALSE; // В противном случае отбой
}
Так как после условия у нас одна строка для кода.
Теперь домашнее задание.
В аттаче что я прикрепил есть модуль с диалогом. Ваша задача выполнить то, что я недоделал двумя способами. Первый, по "крестьянски" второй используя универсальный скрипт. Задача. Все пять строк должны появиться. После выбора в диалоге "Увеличить или прировнять" переменную к числу, мы не должны получть строку ошибку. Задача простая, но на внимательность. жду ваших сообщений. У кого что не получилось.
Добавлено через 42 секунды
Да. Естественно локалку переименовать с вашим ником.