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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 45 46 47 48 49 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Lex
сообщение May 21 2005, 17:53
Сообщение #1151


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

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



QUOTE (Убо-Сатло @ May 21 2005, 18:25)
А диалог вставить в ->свойства плэйса -> улучшеный-> разговор

вот это ты сделал?
Добавлено в [mergetime]1116687381[/mergetime]
QUOTE (Убо-Сатло @ May 21 2005, 18:25)
void main()
{
  ActionStartConversation(GetLastUsedBy());
}

это пашет - 100%.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 21 2005, 17:56
Сообщение #1152


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Конечно :yes: . Все поставил.

Сейчас еще проверю...



Сообщение отредактировал Лито - May 21 2005, 18:04
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Убо-Сатло
сообщение May 21 2005, 17:59
Сообщение #1153


Level 5
**

Класс: Маг
Характер: True Neutral
Раса: Человек



Я могу предположить 2 варианта:
1) Твой плэйс расположен так, что PC не может его использовать(подойти к нему с нужной стороны на нужное расстояние). Когда кликаешь на него, в левом верхнем углу вылазит иконка движения. Если когда PC подошел к плэйсу, иконка не ушла, значит это так.
2) Ну, это на всякий случай, проверь, скрипт стоит на OnUsed? Диалог вставлен? Да, и есть ли еще на этом плэйсе какие-то скрипты? Если есть, то где?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 21 2005, 18:05
Сообщение #1154


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Все я понял в чем дело...Дело в том что там 10 шаров и я не по тому целкал :swoon:

Новый вопрос у меня, дроп золота я сделал. Теперь у меня задача сделать дроп одной случаной вещи из инвенторя. Дальше возможны варианты выпадение вещи по ее стоимости или скажем выпадение одной одетой вещи(кстати дополнительный вопрос: как правильно говорить? Одетой и надетой? :)). (это когда игроки забивают всю сумку хламом...)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение May 22 2005, 01:16
Сообщение #1155


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

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



Lex Большое спасибо, что помогаеш мне, но вотя в этих скриптах дуб дубком, немог бы ты описать более понятным для меня образом.
Neverwinter Script Source
CreateObject(int OBJECT_TYPE_*,string ref, location lloc,FALSE);
?????
Neverwinter Script Source
CreateObject(int OBJECT_TYPE_*,string ref, location lloc,FALSE);
?????

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
JesterX
сообщение May 22 2005, 09:50
Сообщение #1156


Level 1


Класс: Чемпион Торма
Характер: Lawful Good
Раса: Человек



Кто нибудь помогите. Делаю модуль по мотивам книг Ника Перумова - Хранитель мечей, точнее по миру описанному там.
Скриптер из меня никакой. Нужен скрипт:
Герой умирает и переносится в межреальность, там общается и его отправляют назад в место где он погиб.
За основу я взял скрипты (помоему от Аваддон"а),и чуть переделал.

OnPlayerDying Герой без сознания.

void bleed(int iBleedAmt)
{

effect eShake=EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
effect eBleedEff;
if (GetCurrentHitPoints() <= 3) {
SpeakStringByStrRef (110519);
if (iBleedAmt > 0) {
eBleedEff = EffectDamage(iBleedAmt);
} else {
eBleedEff = EffectDamage(iBleedAmt);
}
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBleedEff, OBJECT_SELF);
if (GetCurrentHitPoints() <= -10) {
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), OBJECT_SELF);
return;
}

if (iBleedAmt > 0) {
if (d10(1) == 1) {
iBleedAmt = -iBleedAmt;
}
}
}
DelayCommand(6.0,bleed(iBleedAmt));
}




void main()
{
effect eBlood=EffectVisualEffect(VFX_COM_CHUNK_RED_MEDIUM);
object oDying = GetLastPlayerDying();
object oEnemy = GetLastAttacker();
float fWho = (GetFacing(oEnemy));
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eBlood, GetLocation(oDying), 10.0);
AssignCommand(oDying, ClearAllActions());
AssignCommand(oDying, bleed(1));
CreateObject(OBJECT_TYPE_PLACEABLE,"bloody",GetLocation(oDying),TRUE);

}



Далее OnPlayerDeath Герой умирает и переносится в межреальность.

void main()
{
object oPlayer = GetLastPlayerDied();
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH), GetLocation(oPlayer));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MAJOR), oPlayer,6.0);
DelayCommand(2.0,FadeToBlack(oPlayer));
DelayCommand(5.0,BlackScreen(oPlayer));

DelayCommand(5.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer));
DelayCommand(5.8,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPlayer)), oPlayer));
DelayCommand(6.0,AssignCommand(oPlayer,ClearAllActions()));
DelayCommand(6.2,AssignCommand(oPlayer,JumpToLocation(GetLocation(GetObjectByTag("WP_RAISE")))));
}



И еще в локации межреальности - куда перемещается мертвый игрок OnEnter

void main()
{
object oPC = GetEnteringObject();
DelayCommand(2.0,FadeFromBlack(oPC,FADE_SPEED_SLOWEST));
}

Огромная просьба, ПОМОГИТЕ!!! Допишите скрипт пожалуйста.

P.S. Нужен еще один скрипт, который я поставлю на ветвь разговора. И чуть дописать скрипт на OnPlayerDeath. [COLOR=red][COLOR=red]
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 22 2005, 10:28
Сообщение #1157


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



QUOTE (Мефистофель @ May 22 2005, 01:16)
Lex Большое спасибо, что помогаеш мне, но вотя в этих скриптах дуб дубком, немог бы ты описать более понятным для меня образом.
Neverwinter Script Source
CreateObject(int OBJECT_TYPE_*,string ref, location lloc,FALSE);

Neverwinter Script Source
CreateObject(int OBJECT_TYPE_*,string ref, location lloc,FALSE);


Это просто пример функции.
на место int OBJECT_TYPE_* - ставишь константу, типа объекта(плэйсибл, существо и т.д.)
string ref - РесРеф создаваемого объекта.
location lloc - куда объект создается.
FALSE - эффект "появления". Например паук спускается по нити паутины...

2JesterX, гм...ты же сам все сделал.

Сообщение отредактировал Лито - May 22 2005, 10:30
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Archangel
сообщение May 22 2005, 11:03
Сообщение #1158


Восставший из пепла
***

Класс: Бледный Мастер
Характер: Neutral Evil
Раса: Человек
ПОДМАСТЕРЬЕ



Люди, памажите! Вот скрипт:
Neverwinter Script Source
void main()
{
object oTK=GetObjectByTag("TK");
object oSTK1=GetObjectByTag("STK1");
object oED=GetObjectByTag("IN_HOME_AREA_D1");
object oMD1=GetObjectByTag("HOME_AREA_BIG_DOOR");
object oMD2=GetObjectByTag("CENTER_AREA_BIG_DOOR");
object oTKWP0=GetWaypointByTag("TKWP0");
object oTKWP1=GetWaypointByTag("TKWP1");
object oTKWPEND=GetWaypointByTag("TKWPEND");
object oMTK1=GetObjectByTag("MTK1");
if (GetIsDay() && GetLocalInt(oTK, "Day") != 1)
{
ActionSpeakString("Äîáðîå óòðî!");
ActionForceMoveToObject(oED);
ActionJumpToObject(oTKWP0);
ActionForceMoveToObject(oMD1);
ActionJumpToObject(oTKWP1);
SetLocalInt(oTK, "Day", 1);
SetLocalInt(oTK, "Night", 0);
return;
}
if (GetIsNight()&& GetLocalInt(oTK, "Night") != 1)
{
ActionSpeakString("Óõ. Ïîçäíî óæå. Ïîéäó äîìîé...");
ActionForceMoveToObject(oMD2);
ActionJumpToObject(oTKWPEND);
ActionSit(oSTK1);
ActionWait(120.0);
ActionForceMoveToObject(oMTK1);
ActionPlayAnimation(ANIMATION_LOOPING_GET_MID);
ActionForceMoveToObject(oTKWPEND);
ActionPlayAnimation(ANIMATION_FIREFORGET_TAUNT);
ActionPlayAnimation(ANIMATION_FIREFORGET_TAUNT);
ActionPlayAnimation(ANIMATION_FIREFORGET_TAUNT);
ActionPlayAnimation(ANIMATION_FIREFORGET_TAUNT);
ActionPlayAnimation(ANIMATION_FIREFORGET_TAUNT);
ActionPlayAnimation(ANIMATION_FIREFORGET_SALUTE);
ActionPlayAnimation(ANIMATION_FIREFORGET_SALUTE);
ActionPlayAnimation(ANIMATION_FIREFORGET_SALUTE);
ActionPlayAnimation(ANIMATION_FIREFORGET_SALUTE);
ActionPlayAnimation(ANIMATION_FIREFORGET_SALUTE);
ActionPlayAnimation(ANIMATION_LOOPING_LISTEN);
ActionPlayAnimation(ANIMATION_LOOPING_LISTEN);
ActionPlayAnimation(ANIMATION_LOOPING_LISTEN);
ActionPlayAnimation(ANIMATION_LOOPING_LISTEN);
ActionPlayAnimation(ANIMATION_LOOPING_LISTEN);
ActionSit(oSTK1);
SetLocalInt(oTK, "Day", 0);
SetLocalInt(oTK, "Night", 1);
return;
}
}

Но почему-то, когда НеПиСь выполняет команду ActionSit, то он больше не встает со стула! Почему же так происходит? Все компилится без проблем.
Я пытался после этой ф-ии ставить ClearAllActions(), но непомогает. Так же пытался все преплести к DelayCommand, но толку никакого... :vava:
Кто-нибудь знает в чем загвостка?
ЗЫ
Скрипт ставится в OnHeartBeat НеПиСя.


Сообщение отредактировал Archangel - May 22 2005, 11:04
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 22 2005, 15:01
Сообщение #1159


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Вобщем система выпадения одной шмотки из слота при смерти PС и золота, была написана...
Если кому интересно то вот:
Neverwinter Script Source
object oDrop=OBJECT_INVALID;
int nSlot;
int nGP = GetGold(oPC);
int k;
int i;
int nChance=0;
if(GetHitDice(oPC)<6)nChance=70;
if((Random(100)+nChance)<(60+GetHitDice(oPC)))
{
k=Random(11);
for(i=k;oDrop==OBJECT_INVALID; )
{
switch(i)
{
  case 0:nSlot=INVENTORY_SLOT_ARMS;break;
  case 1:nSlot=INVENTORY_SLOT_BELT;break;
  case 2:nSlot=INVENTORY_SLOT_BOOTS;break;
  case 3:nSlot=INVENTORY_SLOT_CHEST;break;
  case 4:nSlot=INVENTORY_SLOT_CLOAK;break;
  case 5:nSlot=INVENTORY_SLOT_HEAD;break;
  case 6:nSlot=INVENTORY_SLOT_LEFTHAND;break;
  case 7:nSlot=INVENTORY_SLOT_LEFTRING;break;
  case 8:nSlot=INVENTORY_SLOT_NECK;break;
  case 9:nSlot=INVENTORY_SLOT_RIGHTHAND;break;
  case 10:nSlot=INVENTORY_SLOT_RIGHTRING;break;
}
oDrop=GetItemInSlot(nSlot,oPC);
i++;
if(i==11) i=0;
if(i==k)break;
}
}
object oCorpse = CreateObject(OBJECT_TYPE_PLACEABLE,"pc_corpse",GetLocation(oPC),TRUE); //плэйс трупа игрока
AssignCommand(oCorpse,TakeGoldFromCreature(nGP,oPC,FALSE));//забираем GP
AssignCommand(oCorpse,ActionTakeItem(oDrop,oPC));//забираем вещь

Из игроков левелом 5 или меньше, вещи не падают, только золото. Есть шанс выпадения. У 10 -70%,у 20 уровня он равен 80%,у 30 - 90%, у 40%...
Если вещей в слотах не было найдено, то тогда ничего не выпадает.
Собственно есть задача с которой я не могу справится. Я хочу переписать систему смерти на шарде. При смерти игрока кидает в фугу, где он либо входит в портал, за что с него снимают n-кол-во XP, либо ждет пока его реснут(скастовав райз или резурект на труп, который создается на месте смерти.)
Вот с момента воскрешения начинаются проблемы...
Пробовал реализовать через стринги которые накладываются при смерти на труп и на игрока.
Neverwinter Script Source
void main()
{
object oPC =GetNextPC();
string sPCName = GetPCPlayerName(oPC);

if(GetSpellId()==SPELL_RAISE_DEAD)
{
if(GetLocalString(OBJECT_SELF,"NAME")==sPCName)
{
AssignCommand(oPC,JumpToLocation(GetLocation(OBJECT_SELF)));
int nPenalty =100*GetHitDice(oPC);
    int nXP = GetXP(oPC);
    int nNewXP = nXP - nPenalty;
    SetXP(oPC,nNewXP);
}
}
}

И если они равны, применять к игроку в фуге необходимые эффекты, но! я на 100% уверен, что -
Neverwinter Script Source
object oPC =GetNextPC();
уже не верно.
Даже не знаю как реализовать :xz: , помогайте мастера :shout:

Сообщение отредактировал Лито - May 22 2005, 15:01
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение May 22 2005, 17:07
Сообщение #1160


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

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



а причем тут GetNextPC()?! - это функция получения следущего объекта игрока при перечислении игроков. тебе надо при создании трупа игрока на объект трупа вешать ссылку на объект игрока. и потом при юзании резурректа на труп, читать с него переменную объекта игрока и уже с ней работать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 22 2005, 17:20
Сообщение #1161


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



dumbo, что надо использовать не GetNextPC() мне понятненько, а вот это:
1п.
QUOTE
вешать ссылку на объект игрока
- нет, как это сделать?

Я надеюсь что пойму вот это:
2п.
QUOTE
читать с него переменную объекта игрока и уже с ней работать.

Но для начала надо разобратся с 1п :xz:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение May 22 2005, 18:28
Сообщение #1162


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

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



где-то в подыхании игрока стоит что-то вроде:
Neverwinter Script Source
object oPC = OBJECT_SELF;
// где ж мы сдохли?
location lLoc = GetLocation(oPC);
// трупик
object oCorpse = CreateObject(
                  OBJECT_TYPE_PLACEABLE,
                  "resref_трупика", lLoc, FALSE);
// повесить ссылку на трупик (установить переменную-объект)
SetLocalObject(oCorpse, "oOwner", oPC);

и, соответственно, в тоем скрипте воскрешения:
Neverwinter Script Source
object oTarget = GetSpellTargetObject();
if (GetResRef(oTarget) == "resref_трупика")
{
  object oPC = GetLocalObject(oTarget, "oOwner");
  бла-бла-бла с oPC
}
}

ps. и юзайте irc-канал. там самое место для такого чата. :yes:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 22 2005, 19:24
Сообщение #1163


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Собственно поставил на OnPlayerDeath
Neverwinter Script Source
SetLocalObject(oCorpse, GetName(oPC), oPC);

GetName(oPC), потому что делается для шарда, и локалка по идее должна отличатся от локалок других трупов.
и написал вот такой скрипт на OnCastSpell трупа

Neverwinter Script Source
void main()
{
object oTarget = GetSpellTargetObject();
int nSpell = GetLastSpell();
if (GetResRef(oTarget) == "pc_corpse")
{
  object oPC = GetLocalObject(oTarget, GetName(oPC));
  if(nSpell==SPELL_RAISE_DEAD)
  {
  AssignCommand(oPC,ActionJumpToLocation(GetLocation(OBJECT_SELF)));
  DestroyObject(OBJECT_SELF);

    int nPenalty =100*GetHitDice(oTarget);
    int nXP = GetXP(oTarget);
    int nNewXP = nXP - nPenalty;
    SetXP(oTarget,nNewXP);
    object oItem;
    int nSlot;
    AssignCommand(oTarget,ClearAllActions(TRUE));
    DeleteLocalObject(oTarget,GetName(oPC));
    for(nSlot = 0; nSlot < 14; nSlot++)
    {
        oItem = GetItemInSlot(nSlot, oPC);
        if(oItem != OBJECT_INVALID)
        {
            AssignCommand(oTarget, ActionUnequipItem(oItem));
            AssignCommand(oTarget, ActionEquipItem(oItem, nSlot));
        }
        }
  }
  if(nSpell==SPELL_RESURRECTION)
  {
  AssignCommand(oPC,ActionJumpToLocation(GetLocation(OBJECT_SELF)));
  DestroyObject(OBJECT_SELF);
  int nPenalty =50*GetHitDice(oTarget);
    int nXP = GetXP(oTarget);
    int nNewXP = nXP - nPenalty;
    SetXP(oTarget,nNewXP);
    object oItem;
    int nSlot;
    AssignCommand(oTarget,ClearAllActions(TRUE));
    DeleteLocalObject(oTarget,GetName(oPC));
    for(nSlot = 0; nSlot < 14; nSlot++)
    {
        oItem = GetItemInSlot(nSlot, oPC);
        if(oItem != OBJECT_INVALID)
        {
            AssignCommand(oTarget, ActionUnequipItem(oItem));
            AssignCommand(oTarget, ActionEquipItem(oItem, nSlot));
        }
        }
  }
}
}

Проверял так: Убивал сам себя, после чего пытался наложить райз или резурект на свой же труп. Эффект = 0. Где проблема опять же ума не приложу :xz:
Добавлено в [mergetime]1116779131[/mergetime]
QUOTE
ps. и юзайте irc-канал. там самое место для такого чата.

Да...пора бы уже настроить.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение May 23 2005, 02:50
Сообщение #1164


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

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



Лито, ты своим введением все и поломал. ;)
QUOTE (Лито @ May 22 2005, 20:24)
GetName(oPC), потому что делается для шарда, и локалка по идее должна отличатся от локалок других трупов. и написал вот такой скрипт на OnCastSpell трупа
не должна она отличаться. у каждого трупа своя переменная "oOwner". ты же не путаешь свою ногу с чужой только от того, что они обе называются "нога"? потом еще момент - я писал определение GetSpellTargetObject(), потому как предполагал, что ты изменяешь скрипт спелла(общего). в пределах скрипта OnSpellCastAt это определение бессмысленно. вот эта твоя конструкция вообще не выдерживает никакой критики:
Neverwinter Script Source
object oPC = GetLocalObject(oTarget, GetName(oPC));
по идее, такое не должно компилиться. но тут огреха компилятора - собирает и не пикает. почему ты выставляешь экспу трупу - вообще загадка.. ;) причем, до этого уничтожаешь его(само уничтожение происходит, кстати, только после выхода из скрипта). ладно. от теории к практике:
1. в скрипте смерти вернуть то, что тебе предлагали:
Neverwinter Script Source
SetLocalObject(oCorpse, "oOwner", oPC);

2. скрипт в слот OnSpellCastAt:
Neverwinter Script Source
void main()
{
  // страховка от установки скрипта на другой плэйс
  if (GetResRef(OBJECT_SELF) != "pc_corpse") return;
  object oPC = GetLocalObject(OBJECT_SELF, "oOwner");
  // то, что ты никогда не делаешь, а очень зря! =)
  if (oPC == OBJECT_INVALID) return;

  int nPenalty;
  int nSpell = GetLastSpell();
  if (nSpell == SPELL_RAISE_DEAD)
    nPenalty =100*GetHitDice(oPC);
  else if (nSpell==SPELL_RESURRECTION)
    nPenalty =50*GetHitDice(oPC);
  else return;

  SendMessageToPC(oPC, "Перенадеваем вещи...");
  //все эти команды выполнятся только после завершения скрипта
  AssignCommand(oPC, ClearAllActions(TRUE));
  AssignCommand(oPC, ActionJumpToLocation(GetLocation(OBJECT_SELF)));
  AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_GREETING));

  int nXP = GetXP(oPC);
  int nNewXP = nXP - nPenalty;
  SetXP(oPC, nNewXP);

  AssignCommand(oPC, DelayCommand(10.0, ExecuteScript("reequip", oPC)));
  DestroyObject(OBJECT_SELF, 1.0);
}

3. скрипт "переодевания" - reequip.nss
Neverwinter Script Source
void main()
{
  object oItem;
  int nSlot;
  ClearAllActions(TRUE);
  for(nSlot = 0; nSlot < 14; nSlot++)
  {
    oItem = GetItemInSlot(nSlot, OBJECT_SELF);
    if (GetIsObjectValid(oItem))
    {
      ActionUnequipItem(oItem);
      ActionEquipItem(oItem, nSlot);
    }
  }
}

ps. модифицировать это все нужно очень вкурчиво, следить за логикой и очередностью происходящих с объектами операций... :drag:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение May 23 2005, 07:23
Сообщение #1165


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

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



Лито немогли бы вы показать целый скрипт, а то, я ничерта несмыслю.
Заранее спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
JesterX
сообщение May 23 2005, 08:31
Сообщение #1166


Level 1


Класс: Чемпион Торма
Характер: Lawful Good
Раса: Человек



Кто нибудь помогите. Делаю модуль по мотивам книг Ника Перумова - Хранитель мечей, точнее по миру описанному там.
Скриптер из меня никакой. Герой умирает и переносится в межреальность, там общается и его отправляют назад в место где он погиб. Нужен скрипт телепорта на место смерти героя.
За основу я взял скрипты (помоему от Аваддон"а),и чуть переделал.

OnPlayerDying Герой без сознания.

void bleed(int iBleedAmt)
{

effect eShake=EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
effect eBleedEff;
if (GetCurrentHitPoints() <= 3) {
SpeakStringByStrRef (110519);
if (iBleedAmt > 0) {
eBleedEff = EffectDamage(iBleedAmt);
} else {
eBleedEff = EffectDamage(iBleedAmt);
}
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBleedEff, OBJECT_SELF);
if (GetCurrentHitPoints() <= -10) {
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), OBJECT_SELF);
return;
}

if (iBleedAmt > 0) {
if (d10(1) == 1) {
iBleedAmt = -iBleedAmt;
}
}
}
DelayCommand(6.0,bleed(iBleedAmt));
}




void main()
{
effect eBlood=EffectVisualEffect(VFX_COM_CHUNK_RED_MEDIUM);
object oDying = GetLastPlayerDying();
object oEnemy = GetLastAttacker();
float fWho = (GetFacing(oEnemy));
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eBlood, GetLocation(oDying), 10.0);
AssignCommand(oDying, ClearAllActions());
AssignCommand(oDying, bleed(1));
CreateObject(OBJECT_TYPE_PLACEABLE,"bloody",GetLocation(oDying),TRUE);

}



Далее OnPlayerDeath Герой умирает и переносится в межреальность.

void main()
{
object oPlayer = GetLastPlayerDied();
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH), GetLocation(oPlayer));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MAJOR), oPlayer,6.0);
DelayCommand(2.0,FadeToBlack(oPlayer));
DelayCommand(5.0,BlackScreen(oPlayer));

DelayCommand(5.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer));
DelayCommand(5.8,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPlayer)), oPlayer));
DelayCommand(6.0,AssignCommand(oPlayer,ClearAllActions()));
DelayCommand(6.2,AssignCommand(oPlayer,JumpToLocation(GetLocation(GetObjectByTag("WP_RAISE")))));
}



И еще в локации межреальности - куда перемещается мертвый игрок OnEnter

void main()
{
object oPC = GetEnteringObject();
DelayCommand(2.0,FadeFromBlack(oPC,FADE_SPEED_SLOWEST));
}

Огромная просьба, ПОМОГИТЕ!!! Допишите скрипт пожалуйста.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение May 23 2005, 08:35
Сообщение #1167


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



QUOTE
Но почему-то, когда НеПиСь выполняет команду ActionSit, то он больше не встает со стула! Почему же так происходит? Все компилится без проблем.
Я пытался после этой ф-ии ставить ClearAllActions(), но непомогает. Так же пытался все преплести к DelayCommand, но толку никакого... 
Кто-нибудь знает в чем загвостка?
ЗЫ
Скрипт ставится в OnHeartBeat НеПиСя.


...в последнем предложении кроется ответ на твою проблем :lol: "Скрипт ставится в OnHeartBeat НеПиСя. " наводящий вопрос : как часто выполняется скрипт на OnHeartBeat?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение May 23 2005, 08:50
Сообщение #1168


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

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



JesterX
ты извини, конечно, но напрашивается пародия на твой вопрос:
"я тут делаю модуль. вот нашел скрипт и немного его изменил: object oPC = OBJECT_SELF! помогите! допишите мне скрипт!"
ps. телепаты в отпуске. :yes:
pss. поясняю позицию - что там у тебя за диалоги? - остальное вроде интуитивно понятно, хотя конкретики тоже не помешает. что ты хочешь-то?

Сообщение отредактировал dumbo - May 23 2005, 08:57
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
JesterX
сообщение May 23 2005, 08:57
Сообщение #1169


Level 1


Класс: Чемпион Торма
Характер: Lawful Good
Раса: Человек



Просто мне нужно как-то пометить место смерти и написать скрипт телепорта для отправки игрока на это самое место смерти.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение May 23 2005, 09:01
Сообщение #1170


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

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



так кинь там трупак... только что ведь обсуждалась очень схожая ситуация! смотри наши терки с Лито.
ps. народ, вам когда что-то такое надо, сами не знаете что или если чувствуете, что предстоит такое вот общение в режиме чата - идите на irc-канал #wrg(как и что - написано вверху страницы). у меня такое ощущение, что модератор уже откинул крышечку с оптики...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
JesterX
сообщение May 23 2005, 09:20
Сообщение #1171


Level 1


Класс: Чемпион Торма
Характер: Lawful Good
Раса: Человек



В том то и дело, что труп на месте смерти мне не нужен.
Еще раз - Игрок умирает в точке А, и переносится в точку Б,
там он общается и его отправляют обратно в точку А.
Нужен скрипт отправки из Б в А
Я бы не писал все это если бы разбирался в скриптах.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 23 2005, 10:16
Сообщение #1172


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Мефистофель, Хартбит все время повторяется, не так ли? Вот и подумай, твоему неписю каждые 6 секунд идет команда присесть на стул :D
Добавлено в [mergetime]1116832825[/mergetime]
JesterX
Neverwinter Script Source
#include "x0_i0_secret"
void main()
{
object oPC = GetLastPlayerDied();
object oJump = GetWaypointByTag("B");//Вэйпоинт с тэгом B
TransportToWaypoint(oPC,oJump);
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
JesterX
сообщение May 23 2005, 10:25
Сообщение #1173


Level 1


Класс: Чемпион Торма
Характер: Lawful Good
Раса: Человек



#include "x0_i0_secret"
void main()
{
object oPC = GetLastPlayerDied();
object oJump = GetWaypointByTag("B");//Вэйпоинт с тэгом B
TransportToWaypoint(oPC,oJump);
}

Я так понял, что это отправка на место смерти.
А в инклюде что?
Или я не прав?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 23 2005, 10:32
Сообщение #1174


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



JesterX, это отправка с места смерти.
В инклюде в функция
Neverwinter Script Source
TransportToWaypoint(oPC,oJump);
.
Если хочешь чтобы игрока портили при разговоре на место смерти то -
Neverwinter Script Source
#include "x0_i0_secret"
void main()
{
object oPC =  GetPCSpeaker();
object oJump = GetWaypointByTag("B");//Вэйпоинт с тэгом B
TransportToWaypoint(oPC,oJump);
}

На скрипте смерти пишешь:
Neverwinter Script Source
#include "x0_i0_secret"
void main()
{
CreateObject(OBJECT_TYPE_WAYPOINT,"РесРэф Вэйпоинта",GetLocation(oPC),FALSE,"B");
}

Подойдет скорее только для сингла.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
JesterX
сообщение May 23 2005, 10:45
Сообщение #1175


Level 1


Класс: Чемпион Торма
Характер: Lawful Good
Раса: Человек



Спасибо!!! Щас буду пробовать. Потом отпишу.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 45 46 47 48 49 > » 
Ответить в эту темуОткрыть новую тему
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30th April 2025 - 12:09