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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 60 61 62 63 64 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
Dik Morris
сообщение Jun 27 2005, 19:12
Сообщение #1521


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

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



Dark@ngel !
2) - Можно ли сделать так, чтобы с твоим помощником ходило какое-нибудь животное(например тигр)?
Можно хоть дракона или барсука...Просто создай таково персонажа который тебе подойдет, потом засунь ему скрипты стандартного хейчмана + диалог.
Ы.З: не забудь отредактировать диалог, вырезать ненужные места, журнал, звук...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 27 2005, 19:31
Сообщение #1522


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



Dark@ngel
1. Видимо, проще всего это сделать через полиморф (правда возможные варианты для превращения ограничены). Для этого создаешь предмет со свойством Cast Spell -> Unique Power Self Only.
Создаешь скрипт, имя которого совпадаетс тегом этого предмета, примерно следующего содержания:
Neverwinter Script Source
#include "x2_inc_switches"
void main()
{
  int nEvent = GetUserDefinedItemEventNumber();
  switch (nEvent)
  {
    case X2_ITEM_EVENT_ACTIVATE:
      object oPC = GetItemActivator();
      // Будем превращаться в жуткого волка
      effect ePoly = EffectPolymorph(POLYMORPH_TYPE_DIRE_WOLF);
      effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH);
      ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
      ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, oPC);
      break;
  }
}

2. Ну можно, например, самого тигра сделать хенчманом (для этого тигру нужно прописать хенчманские скрипты) и подключить его или к товоему помощнику, или к самому игроку.
Например, на ветке диалога:
void main()
{
object oHench = OBJECT_SELF;
object oTiger = GetNearestObjectByTag("TIGER");
object oPC = GetPCSpeaker();

AddHenchman(oPC, oHench);
SetMaxHenchmen(2);
AddHenchman(oPC, oTiger);
}
А когда будем увольнять хенчмана, вместе с ним нужно будет уволить и тигра (только я не знаю, как обрабатывать увольнение хенчмана через радиальное меню =) ).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 27 2005, 19:43
Сообщение #1523


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

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



Эээ - по поводу друзей игрока.

Как я понял:

Animal - вот это я не понял, это кто?
Dominated - и это кто?
Familiar - чел каторого нужно куда - нить отвести, при этом он будет везде мешаться.
Henchman - оруженосец.
Summoned - вызваный.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 27 2005, 19:51
Сообщение #1524


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



1. Dark@ngel у нас тут любят конкретику. Кто именно и в кого и как это НА ВРЕМЯ ДО ОТДЫХА? :crazy:
2. Тут точно не подскажу, не занимался ни разу...

SERGO
Neverwinter Script Source
//:://////////////////////////////////////////////
//:: OnUserDefaine
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*

*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 27.06.2005
//:://///////////////////////////////////////////
void main()
{
int nEvent = GetUserDefinedEventNumber();
//======================= DAMAGED EVENT 1006 ===================================
if (nEvent == 1006)
  {
  object oPC = GetFirstPC(); // Опишите своего РС как надо.
  object oHench = GetHenchman(oPC); // Если есть хеньчман
  object oNPC = OBJECT_SELF; // Наш злюка
  int iCurHP = GetCurrentHitPoints(OBJECT_SELF);
  // Проверим сколько НР у него в данный момент времени
  int iD = 15; // Искомое число
//==============================================================================
  if (GetIsPC(oPC) && (iCurHP <= iD) && !GetLocalInt(oNPC, "DO"))
  {
  SetLocalInt(oNPC, "DO", TRUE); // ЧТо бы только раз сработало
  AssignCommand(oPC, ClearAllActions(TRUE)); // Остановим бои и забудем все!
  AssignCommand(oHench, ClearAllActions(TRUE));
  AssignCommand(oNPC, ClearAllActions(TRUE));
  ClearPersonalReputation(oPC, oNPC); // Мирись, мирись и больше не дерись!
  ClearPersonalReputation(oHench, oNPC);
  DelayCommand(0.5, ChangeToStandardFaction(oNPC,STANDARD_FACTION_DEFENDER));
  // Сменим фракцию врага на Защитника
  DelayCommand(10.0, AssignCommand(oNPC, ActionStartConversation(oPC)));
  // Задержка тут стоит потаму как после битвы обычно НПС около раунда
  // Не реагируют на диалоги.
  }
  }
}

Код я не тестил, но должен пахать. Ставится OnUserDefaine НПС.
Раззкоментируй на спавн скрипте НПС евант на демаг. И в диалоге пропиши куда надо прыгать и что сказать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 27 2005, 19:52
Сообщение #1525


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



Animal - это животное-компаньон друида или рейнджера.
Familiar - фамильяр мага.
Как работать с фамильярами (компаньонами) НПС я себе представляю довольно смутно. И среди стандартных компаньонов тигров не замечено.

Dominated - тот кого задоминейтили (Н.п. спелом, или Animal Empaty).

Добавлено в [mergetime]1119891352[/mergetime]
QUOTE (Aiwan @ Jun 27 2005, 19:51)
Кто именно и в кого и как это НА ВРЕМЯ ДО ОТДЫХА?

Обыкновенно, наверное. Эффект полиморфа будет держаться пока отдыхать не сядешь.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jun 28 2005, 18:14
Сообщение #1526


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

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



Lex Спасибо, но я не на столько умён как вы, эх.
QUOTE
это разбиралось не раз и не 2. И по характеру, по классу, по расе и прочее.
Смотри старые темы или Вопросы и Ответы.

Чёрт, клянусь мамой, искал гдето час, пользовался поиском, и в итоге 0! :swoon:
Ткните носом! :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jun 29 2005, 01:18
Сообщение #1527


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

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



Мефистофель
по расам: http://www.wrg.ru/forums/index.php?showtopic=889&st=225 :this:
далее по аналогии...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jun 29 2005, 08:24
Сообщение #1528


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

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



Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
if (!GetIsPC(oPC))
return;
int nPasi = GetGoodEvilValue(oPC);
string sWP;
if(nPasi == ALIGNMENT_GOOD)
    sWP = "wp_start_good";
if(nPasi == ALIGNMENT_EVIL)
    sWP = "wp_start_Evil";
ActionJumpToObject(GetWaypointByTag(sWP));
}
????
А скажите как зделать так, если игрок нейтральный то он несможет играть, а например то что связано с добрым, например Хаотично добрый? или здлым. относилось к скрипту.
а если игрок нейтральный то появлялась тобличка как в проклятии левора.
Спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 29 2005, 08:54
Сообщение #1529


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE (Мефистофель @ Jun 29 2005, 11:24)
а если игрок нейтральный то появлялась тобличка как в проклятии левора.

Возьми скрипты Левора и глянь.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jun 29 2005, 13:05
Сообщение #1530


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

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



QUOTE
Возьми скрипты Левора и глянь.

Дело в том что у меня сейчас нет левора!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 29 2005, 22:16
Сообщение #1531


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



Мефистофель, GetGoodEvilValue(object) возвращает значение от 0 до 100, а не константу аляймента!
Добавлено в [mergetime]1120072670[/mergetime]
Знакомые грабли.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jun 29 2005, 23:41
Сообщение #1532


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

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



QUOTE
Мефистофель, GetGoodEvilValue(object) возвращает значение от 0 до 100, а не константу аляймента!

А какую функцыю надо?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Агрессинг
сообщение Jun 30 2005, 00:08
Сообщение #1533


Level 5
**

Класс: Убийца
Характер: True Neutral
Раса: Чудовище



Мефистофель
Вот функция
Neverwinter Script Source
if (GetGoodEvilValue(oPC) )
    Kill(oPC);

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jun 30 2005, 01:44
Сообщение #1534


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Брр... о чем это вы, вот что должно быть:

Neverwinter Script Source
void main()
{
    object oPC = GetEnteringObject();

    if (!GetIsPC(oPC)) return;

    int iAligment = GetAlignmentGoodEvil(oPC);
    string sWP;

    if (iAligment == ALIGNMENT_GOOD)
        sWP = "wp_start_good";
    else if (iAligment == ALIGNMENT_EVIL)
        sWP = "wp_start_Evil";
    else
        DelayCommand(6.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(FALSE, TRUE), oPC));

    AssignCommand(oPC, ActionJumpToObject(GetWaypointByTag(sWP)));
}


Судя по этому "if (!GetIsPC(oPC)) return;", относится к многопользовательской игре, поэтому скрипт можно поставить и на "OnClientEnter". Правда, я не советую так делать, не поймут, лучше уж накладывать неподвижность, и выводи фразу в лог боя, что персонажи с нейтральным мировоззрением не допускаются.

Например, так:

Neverwinter Script Source
void main()
{
    object oPC = GetEnteringObject();

    if (!GetIsPC(oPC)) return;

    int iAligment = GetAlignmentGoodEvil(oPC);
    string sWP;

    if (iAligment == ALIGNMENT_GOOD)
        sWP = "wp_start_good";
    else if (iAligment == ALIGNMENT_EVIL)
        sWP = "wp_start_Evil";
    else
        effect eParalyze = EffectCutsceneImmobilize();
        ApplyEffectToObject(DURATION_TYPE_PERMANENT, eParalyze, oPC);
        DelayCommand(3.0, SendMessageToPC(oPC, "Извините, но нейтральное мировоззрение недопустимо."));
        return;

    AssignCommand(oPC, ActionJumpToObject(GetWaypointByTag(sWP)));
}


Сообщение отредактировал Zirrex - Jun 30 2005, 01:57
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Агрессинг
сообщение Jun 30 2005, 19:10
Сообщение #1535


Level 5
**

Класс: Убийца
Характер: True Neutral
Раса: Чудовище



А, а я на сам вопрос невнимательно посмотрел, я думал, что при вхождении в модуль игрок должен быть только нейтральным. А если надо, чтобы он к вейпу определенному прыгал, то это другое дело. :buba:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jul 1 2005, 04:23
Сообщение #1536


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

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



Зирекс Спасибо огромное пойду проверять.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мягкий Пушистик
сообщение Jul 1 2005, 06:28
Сообщение #1537


мягкий и пушистый
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Человек
Фанат WRG!



не хватает там в нескольких местах { и }
(в блоке для нейтралов в первом и втором скрипте)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
GoingPro)
сообщение Jul 1 2005, 15:49
Сообщение #1538


Level 3
*

Класс: Ниндзя
Характер: Chaotic Evil
Раса: Человек



хочу зделать малюсенький сервер...
вопрос такой:
Как мне зделать так что бы на нем нельзя было инспользовать персонажей локалки, а создавать новых и что бы они сохранялись? :unsure:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Агрессинг
сообщение Jul 1 2005, 18:39
Сообщение #1539


Level 5
**

Класс: Убийца
Характер: True Neutral
Раса: Чудовище



QUOTE
и что бы они сохранялись? 

Любой созданный персонаж сохраняется в loalvault.
QUOTE
Как мне зделать так что бы на нем нельзя было инспользовать персонажей локалки

Ты боишся, что люди будут заходить прокачанными персонажами? Тогда этот скрипт на on enter начальной локации
Neverwinter Script Source
void main()
{

object oPC = GetEnteringObject();
object oEquip = GetFirstItemInInventory(oPC);
int nGold = GetGold(oPC);
object oCustoms = GetObjectByTag("customs");
location lEntry =GetLocation (GetObjectByTag("ENTRY_POINT"));
int nHasEntered=GetLocalInt(oPC, "entered");
effect eEffect;


f (GetIsPC(oPC) == TRUE && GetIsDM(oPC) == FALSE && GetIsObjectValid (oPC) == TRUE) // далее скрипт идет если персонаж не DM
{


  while(GetIsObjectValid(oEquip))
    {
      DestroyObject(oEquip);
      oEquip = GetNextItemInInventory(oPC);
    }

  DestroyObject(GetItemInSlot(INVENTORY_SLOT_ARMS, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_ARROWS, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_BELT, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_BOLTS, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_BULLETS, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CHEST, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_HEAD, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_NECK, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CARMOUR, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oPC));
//забирает вещи

  SetXP(oPC, 0);


  AssignCommand ( oPC, TakeGoldFromCreature ( nGold, oPC, TRUE)); //забирает золото


}
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 1 2005, 23:31
Сообщение #1540


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Агрессинг эм... скрипт конечно хорошо, но на сервере достаточно убрать галку "Local Characters Allowed", тогда все входящие игроки будут создавать персонажей заново. Твой скрипт низводит персонажа до 1-го уровня, удаляет все вещи и золото, но он делает это при каждом входе. Можно сделать проще, с учетом вышеописанной опции:

Neverwinter Script Source
void main()
{
    object oPC = GetEnteringObject();

    if (GetIsDM(oPC)) return;

    if (!GetXP(oPC))
    {
        int StartGold = 0;
        int StripPlayer = TRUE;

        if (StartGold == 0)
        {
            if (GetLevelByClass(CLASS_TYPE_BARBARIAN,oPC))    StartGold = d4(5) * 100;
            else if (GetLevelByClass(CLASS_TYPE_BARD,oPC))    StartGold = d4(4) * 100;
            else if (GetLevelByClass(CLASS_TYPE_CLERIC,oPC))  StartGold = d4(4) * 100;
            else if (GetLevelByClass(CLASS_TYPE_DRUID,oPC))    StartGold = d4(4) * 100;
            else if (GetLevelByClass(CLASS_TYPE_FIGHTER,oPC))  StartGold = d4(6) * 100;
            else if (GetLevelByClass(CLASS_TYPE_MONK,oPC))    StartGold = d4(4) * 100;
            else if (GetLevelByClass(CLASS_TYPE_PALADIN,oPC))  StartGold = d4(5) * 100;
            else if (GetLevelByClass(CLASS_TYPE_RANGER,oPC))  StartGold = d4(5) * 100;
            else if (GetLevelByClass(CLASS_TYPE_ROGUE,oPC))    StartGold = d4(6) * 100;
            else if (GetLevelByClass(CLASS_TYPE_SORCERER,oPC)) StartGold = d4(3) * 100;
            else if (GetLevelByClass(CLASS_TYPE_WIZARD,oPC))  StartGold = d4(3) * 100;
            else                                              StartGold = d4(4) * 100;
        }
        GiveGoldToCreature(oPC, StartGold - GetGold(oPC));

        // Удалить надетые на игроке вещи
        if (StripPlayer)
        {
            int i;

            for (i = 0; i < 15 ; i++)
            {
                object oEquip = GetItemInSlot(i,oPC);

                if (GetIsObjectValid(oEquip)) DestroyObject(oEquip);
            }
        }

        // Удаление вещей из рюкзака персонажа
        object oItem = GetFirstItemInInventory(oPC);

        while (GetIsObjectValid(oItem))
        {
            DestroyObject(oItem);
            oItem = GetNextItemInInventory(oPC);
        }
        SetXP(oPC, 1);
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Jul 2 2005, 13:23
Сообщение #1541


Level 4
**

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



Здравствуйте, я чодержу небольшой шард в локальной сети, вроде полностью созданый модуль работает безглючно но появилась такая проблема, нет стимула пвп ибо с игроков ничего не падает, как я не старался, скрипт onDeath у меня вроде правильно составлен, но золото с игрока не падает, а только копируется в сумку, откуда отреспавнившийся игрок может забрать в 2 раза больше золота и такие же вещи. Почему у мертвого игрока нельзя забрать веши и как с этим бороться?
И вот еще вопрос: как заставить нипися слушать и как узнать что именно сказал игрок(янашел как узнать сказал ли он то, что задуманно, сказал ли он чтото вообще, но как узнать что именно игрок сказал понять не могу)?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jul 2 2005, 14:38
Сообщение #1542


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

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



QUOTE (Batkom @ Jul 2 2005, 14:23)
Почему у мертвого игрока нельзя забрать веши и как с этим бороться?

надо сделать, чтобы падали.
Самый простой вариант: на смерть игрока написать скрипт создания мешка, куда кидать деньги и вещи (какая часть денег и вещей - решать вам. Тут были варианты рандомно одетую вещь, рандомно вещь инвентаря...)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 2 2005, 16:21
Сообщение #1543


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Batkom, скажи мне одну вещь, ты HCR используешь? Если да, то ответ прост, на скрипте умирания "dying" есть обработка создания сумки и копирования туда денег. Бывают моменты, когда скрипт на эвентах "dying и death" срабатывает одновременно, поэтому у тебя и получается дублирование денег. Есть такой вариант:

Neverwinter Script Source
object DropBag(location lDiedHere, object oPC)
{
    string sID = GetName(oPC) + GetPCPublicCDKey(oPC);
    location lLoc = GetLocation(oPC);

    vector vLootBag = GetPositionFromLocation(lLoc);

    float fFacing = GetFacing(oPC) + (Random(2) ? 90.0 : -90.0);

    vLootBag.x += cos(fFacing) * 0.45f;
    vLootBag.y += sin(fFacing) * 0.45f;

    location lDropBag = Location(GetArea(oPC), vLootBag, fFacing + 180.0);

    object oDropBag = CreateObject(OBJECT_TYPE_PLACEABLE, "DyingCorpse", lDropBag, FALSE, "DropBag" + sID);
    return oDropBag;
}

void StripThings(object oPC, object oDrop, object oEquip)
{
    if (GetIsObjectValid(oEquip))
    {
        CopyItem(oEquip, oDrop);
        DestroyObject(oEquip);
    }
}


void CheckBag(object oDropBag)
{
    object oItem = GetFirstItemInInventory(oDropBag);

    if (!GetIsObjectValid(oItem))
    {
        DelayCommand(2.0, DestroyObject(oDropBag));
    }
}

void main()
{
    object oPC = GetLastPlayerDied();
    object oMod = GetModule();

    if (GetTag(GetArea(oPC)) == "fugue_plane") return;

    object oHenchman = GetHenchman(oPC);

    if (GetIsObjectValid(oHenchman))
    {
        RemoveHenchman(oPC, oHenchman);
    }

    string sName = GetName(oPC);
    string sCDK = GetPCPublicCDKey(oPC);
    string sID = sName + sCDK;

    if (GetIsObjectValid(oPC))
    {
        location lDiedHere = GetLocation(oPC);
        object oDropBag = GetLocalObject(oMod, "DropBag" + sID);

        if (!GetIsObjectValid(oDropBag))
        {
            oDropBag = DropBag(lDiedHere, oPC);
        }

        int iGold = GetGold(oPC);

        if (iGold > 0)
        {
            object oBag = CreateItemOnObject("bagofgold", oDropBag);
            SetLocalInt(oBag, "Gold", iGold);
            SetLocalInt(oDropBag, "Gold", iGold);
            AssignCommand(oDropBag, TakeGoldFromCreature(iGold, oPC, TRUE));
        }

        float fProcent = 50.0;

        float fRoll = IntToFloat(d20());
        float fChance = (fRoll * fProcent) / 100.0;
        float fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_ARMS, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_BELT, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_HEAD, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_NECK, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC));
        }


        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_CHEST, oPC));
        }
        CheckBag(oDropBag);

        object oLimbo = GetObjectByTag("wp_enter_fugue");
        DelayCommand(5.0, AssignCommand(oPC, ActionJumpToObject(oLimbo)));
    }
}

Это лишь малая часть, чтобы описать тут весь процесс смерти, страницы не хватит. Если тебе нужна более серьезная обработка смерти, могу скинуть по почте скрипты. В данном случае я убрал создание трупа, с помощью которого можно воскресить, описав лишь создание мешка с деньгами, и выпадение случайным образом вещей.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Jul 2 2005, 21:49
Сообщение #1544


Level 4
**

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



да, я знаю, при смерти игрока создается сумка, в которой создается золото и вешь, который у игрока должны изыматься
hcr не юзаю

Сообщение отредактировал Batkom - Jul 2 2005, 21:50
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jul 3 2005, 00:50
Сообщение #1545


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

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



ОГРОМНАЯ Посьба, дорогие форумчане помогите мне пожалуйста, очень нужен скрипт. :swoon:
если ПК с Хорактером Злой, то при смерти он отправляется в ад, если добрый то в рай. :this:
надеюсь на вашу помощь.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

205 страниц V  « < 60 61 62 63 64 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 19th July 2025 - 23:56