Маленькая шпаргалка по скриптам
Дать предмет
CreateItemOnObject("ResRef ", GetPCSpeaker(), 1);
или
object oItem = CreateItemOnObject("ResRef ", GetPCSpeaker(), 1);
SetIdentified(oItem, TRUE); // опознать
Дать ХР
GiveXPToCreature(GetPCSpeaker(),100);
Золото
GiveGoldToCreature(GetPCSpeaker(),100);// дать золота
TakeGoldFromCreature(9000, GetPCSpeaker(), TRUE); // забрать золото
Удалить предмет из инвентаря
DestroyObject(GetItemPossessedBy(GetPCSpeaker(), "TAG"));
Проверить предмет инвентаря существа
int StartingConditional()
{
if(GetIsObjectValid(GetItemPossessedBy(GetPCSpeaker(), "TAG")))
return TRUE;
return FALSE;
}
Установить переменную
SetLocalInt(GetPCSpeaker(),"LOCAL",1);
SetLocalInt(OBJECT_SELF,"LOCAL",1);
SetLocalInt(GetClickingObject(),"LOCAL ",1);
SetLocalInt(GetModule(),"LOCAL",1);
SetLocalInt(GetEnteringObject(),"LOCAL",1);
SetLocalInt(GetLastUsedBy(),"LOCAL",1);
SetLocalInt(GetFirstPC(),"LOCAL",1);
if (GetLocalInt(OBJECT_SELF, "LOCAL") == 1) // Проверить
SetLocalInt(oSelf, "NUM", GetLocalInt(oSelf, "NUM") + 1);
// Прибавить к переменной "NUM" единицу
Текст над персонажем
ActionSpeakString("Охо-хо, что же будет???");
DelayCommand(31.5, AssignCommand(oPC, SpeakString("Слова")));
AssignCommand(oPC, ActionStartConversation(oNPC,"dialog"));
// “dialog” - диалог персонажа
AssignCommand(oPC, ActionStartConversation(oNPC)); // диалог персонажа
Текст в панели отчета
FloatingTextStringOnCreature("Текст.", GetExitingObject());
SendMessageToPC(oPC, "Вы убили гоблина");
Плейс или дверь говорит свой диалог (слот OnUsed)
ActionStartConversation(GetLastUsedBy());
Авто сохранение
DoSinglePlayerAutoSave();
Перемещение существа к точке маршрута при диалоге
ActionForceMoveToObject(GetObjectByTag("Тэг точки"), FALSE, 0.0, 15.0);
ActionDoCommand(SetCommandable(TRUE));
DelayCommand(0.1, SetCommandable(FALSE));
Перемещение героя и NРС к точке маршрута при диалоге
(Универсальная версия)
object oSelf = OBJECT_SELF;
object oPoint = GetWaypointByTag("WP_" + GetTag(oSelf));
object oPC = GetPCSpeaker();
AssignCommand(oPC, ClearAllActions());
AssignCommand(oSelf, ClearAllActions());
AssignCommand(oPC, ActionJumpToObject(oPoint));
AssignCommand(oSelf, ActionJumpToObject(oPoint));
// Точка перемещения содержит WP_+Тэг объекта NPC
Уничтожить объект
object oByTag = GetNearestObjectByTag ("TAG");
DestroyObject(oByTag, 1.00); // уничтожить ближайший объект с тегом
DestroyObject(GetObjectByTag("CERDZE"),1.00); // уничтожить объект с тегом
Закрытие двери
object oDoor = GetObjectByTag("TAG");
AssignCommand(oDoor, ActionCloseDoor(oDoor));
SetLocked(oDoor, TRUE);
Открытие двери
object oDoor = GetObjectByTag("TAG");
AssignCommand(oDoor, ActionDoCommand(SetLocked(oDoor, FALSE)));
AssignCommand(oDoor, ActionOpenDoor(oDoor));
Эффекты
effect eSmoke = EffectVisualEffect(VFX_FNF_DISPEL);
location Loc = GetLocation(OBJECT_SELF);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eSmoke, Loc);
object oPC = GetFirstPC();
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eSmoke,oPC, 10.0);
NPC садится на стул (Универсальная версия)
if (!IsInConversation(OBJECT_SELF))
ActionSit(GetNearestObjectByTag("ST_"+ GetTag(OBJECT_SELF)));
Управление фракцией
void main()
{
object oPC = GetPCSpeaker();
object oByTag = GetObjectByTag("TAG");
AdjustReputation( oPC, oByTag, 50);
}
// Фракция нейтральная (ненавидит цифра со знаком - )
Проверить врага
if(GetIsEnemy(oPC, oEnemy)) // Если враги
ChangeFaction(oGob, oNeytral); // Дать oGob фракцию oNeytral
Озвучить
PlaySound("as_cv_gongring2");
PlayVoiceChat(VOICE_CHAT_DEATH);
Добрый
AdjustAlignment(GetFirstPC(), ALIGNMENT_GOOD, 5);
Проверить наличие нескольких предметов
#include "nw_i0_tool"
void main()
{
if(HasItem(GetObjectByTag("TAG "), "Item_1")&&
HasItem(GetObjectByTag("TAG"), "Item_2"))
}
Проверить несколько переменных
int StartingConditional()
{
if(GetLocalInt(GetPCSpeaker(), "R1_") == 1 &&
GetLocalInt(GetPCSpeaker(), "R2_") == 1 &&
GetLocalInt(GetPCSpeaker(), "R3_") == 1)
return TRUE;
return FALSE;
}
Проверить переменную и предмет
#include "nw_i0_tool"
int StartingConditional()
{
if(GetLocalInt(GetPCSpeaker(), "LOCAL") == 1 &&
HasItem(GetPCSpeaker(), "TAG"))
return TRUE;
return FALSE;
}
Существо или плейс перемещается из палитры
object oWP = GetWaypointByTag("WP_");
location Loc = GetLocation(oWP);
CreateObject(OBJECT_TYPE_CREATURE, "ResRef", Loc, FALSE, "newTag"); // Существо
CreateObject(OBJECT_TYPE_PLACEABLE, "ResRef", Loc, FALSE, "newTag"); // Объект
или
object oNPC = CreateObject(OBJECT_TYPE_CREATURE,"ResRef",Loc,FALSE,"newTag");
Проверить дистанцию
object oCreature = GetNearestCreature
(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
if (GetIsObjectValid(oCreature) == TRUE &&
GetDistanceToObject(oCreature) < 10.0)
или
object oCreature = GetObjectByTag("TAG");
object oPC = GetFirstPC();
if(GetArea(oPC== GetArea(oCreature) &&
GetDistanceBetween (oPC, oCreature) < 10.0)
Запись в журнале
(взяли предмет, событие в слоте OnAqcuireItem модуля)
#include "nw_i0_tool"
void main()
{
object oPC = GetFirstPC();
if(HasItem(oPC, "TAG"))
AddJournalQuestEntry("quest_12", 1, oPC); // журнал
}
Открыть карту
ExploreAreaForPlayer(GetArea(OBJECT_SELF), GetEnteringObject());
Открыть точку на карте
SetMapPinEnabled(GetObjectByTag("KARTA"),1);
Проверка предметов в ящеке (слот OnDisturbed)
object oItem = GetInventoryDisturbItem(); // слот OnDisturbed
if (GetTag(oItem) == "TAG") {}
Смерть существа, остается труп
void main()
{
if (Random(2) == 0)
PlayAnimation(ANIMATION_LOOPING_DEAD_FRONT);
else
PlayAnimation(ANIMATION_LOOPING_DEAD_BACK);
SetIsDestroyable(FALSE, TRUE, TRUE);
PlayVoiceChat(VOICE_CHAT_DEATH);
}
Уничтожить умершее существо
object oPC = GetObjectByTag("BODY");
AssignCommand(oPC, SetIsDestroyable(TRUE, TRUE, TRUE));
DestroyObject(oPC, 0.5);
Дать сигнал
SignalEvent(GetObjectByTag("TAG"), EventUserDefined(300));
Проверить сигнал (слот OnUserDefined)
void main()
{
int nEvent = GetUserDefinedEventNumber();
switch(nEvent)
{
case 300: {Что должно произойти} break;
}
}
Взять спутника
AddHenchman(GetPCSpeaker(), OBJECT_SELF);
Убрать спутника
object oPC = GetPCSpeaker();
object oSP = GetHenchman(oPC);
if (GetIsObjectValid(oSP))
{
RemoveHenchman(oPC, oSP);
AssignCommand(oSP, ClearAllActions());
}
Уровень звука
SoundObjectPlay(oSound); // Звук включить
SoundObjectStop(oSound); // Звук выключить
SoundObjectSetVolume(GetObjectByTag("TAG"), 0-127);
// уровень звука от 0 до 127
Проверить героя
object oPC = GetEnteringObject();
if (!GetIsPC(oPC)) return;
Проверить персонаж
object oNPC = GetEnteringObject();
if (!(GetTag(oNPC) == "TAG")) return;
Удалить встречу
SetEncounterActive(FALSE, GetObjectByTag("VOLKI"));
Сработает только при заряженной встречи
Очистить стек, т.е. отменить все действия
DelayCommand(0.1, AssignCommand(OBJECT_SELF, ClearAllActions()));
Снять бессмертие
SetImmortal(OBJECT_SELF, FALSE); // Снимаем бессмертие
SetPlotFlag(OBJECT_SELF, FALSE); // Снимаем галку сюжет
Заклинание
object oPC = GetFirstPC();
object oZel = GetNearestObjectByTag("ZEL_");
//Объект на который должен быть скастован спелл.
AssignCommand(oPC,ActionCastSpellAtObject(SPELL_FIREBALL,
oZel,PROJECTILE_PATH_TYPE_BALLISTIC)); // дейсвующее
AssignCommand(oPC,ActionCastFakeSpellAtObject(SPELL_FIREBALL,
oZel,PROJECTILE_PATH_TYPE_BALLISTIC)); // визуальное
Анимация
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 1.0, 2.0));
Запретить действия персонажу
SetCommandable(FALSE, oPC); // заблокировать очередь
SetCommandable(TRUE, oPC); // разблокировать очередь
Проверить эффект
effect eEffect = GetFirstEffect(OBJECT_SELF);
if (GetEffectType(eEffect) == EFFECT_TYPE_VISUALEFFECT) {}
Сумка
if(GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX)
ActionGiveItem(oItem, oPC); // Дать сумку или предмет
Надписи
string sTag = GetTag(OBJECT_SELF);
string sStrL = GetStringLeft(sTag, 3); // Три первых левых буквы
int iEnd = GetStringLength(sTag ); // количество знаков в надписи
Проверить строку
if(FindSubString("*Atrib_1*Atrib_2*Atrib_3*", GetTag(oItem)+"*") > 0) {}
Переход на другой модуль
StartNewModule("Arena1");
Перенос переменных для перехода модулей
object oPC = GetFirstPC();
int iReput = GetLocalInt(oPC,"TORGOVEZ_REPA"); // Наша переменная
SetCampaignInt("MOD_1", "REPA_2", iReput, oPC); // установить переменную
if (GetLocalInt(oPC, "R3_VOLXV") == 1) // Проверить
// установить переменную
SetCampaignInt("MOD_1", "R3_VOLXV", 1, oPC);
========== в новом модуле ============
int iCom = GetCampaignInt("MOD_1", "REPA_2", oPC);
SetLocalInt(oPC,"TORGOVEZ_REPA", iCom); // Присвоить
if(GetCampaignInt("MOD_1", "R3_VOLXV", oPC)==1) // Проверить
{
SetLocalInt(GetFirstPC(),"R3_VOLXV",1);
DeleteCampaignVariable("MOD_1", "R3_VOLXV", oPC);
}
Спутник и переход с ним в другой модуль
object oPC = GetFirstPC();
StoreCampaignObject("MOD_1", "N1", GetHenchman(oPC), oPC);
========== в новом модуле ============
object oSP = RetrieveCampaignObject("MOD_1", "N1", GetLocation(oPC), OBJECT_INVALID, oPC);
AddHenchman(oPC, oSP);
DeleteCampaignVariable("MOD_1", " N1", oPC);
Уровень сложности
int iGame = GetGameDifficulty(); // Уровень сложности равен 1,2,3,4
|