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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 97 98 99 100 101 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
Dana
сообщение Mar 5 2006, 17:57
Сообщение #2451


Level 2
*

Класс: Друид
Характер: Lawful Neutral
Раса: Полуэльф



Продолжаем разбор: =)

Написанное мной на OnDeath:
NSS
#include "NW_I0_GENERIC"
void main()
{

object oKiller = GetLastKiller();
int nLevel = GetCharacterLevel(oKiller);
if (GetXP(oKiller)  > ((((nLevel + 1) * nLevel) / 2 * 1000) - 1))
{
    SetXP(oKiller, (((nLevel + 1) * nLevel) / 2 * 1000) - 1);
    SendMessageToPC(oKiller, "Your must LEVEL UP!!!");

}
else
{
    ExecuteScript("nw_c2_default7", OBJECT_SELF);
}
}



Для мобов есть стандартная функция - "nw_c2_default7"

NSS
#include "x2_inc_compon"
#include "x0_i0_spawncond"

void main()
{
    int nClass = GetLevelByClass(CLASS_TYPE_COMMONER);
    int nAlign = GetAlignmentGoodEvil(OBJECT_SELF);
    object oKiller = GetLastKiller();
    // If we're a good/neutral commoner,
    // adjust the killer's alignment evil
    if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL))
    {
        AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5);
    }

    // Call to allies to let them know we're dead
    SpeakString("NW_I_AM_DEAD", TALKVOLUME_SILENT_TALK);

    //Shout Attack my target, only works with the On Spawn In setup
    SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK);

    // NOTE: the OnDeath user-defined event does not
    // trigger reliably and should probably be removed
    if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT))
    {
        SignalEvent(OBJECT_SELF, EventUserDefined(1007));
    }
    craft_drop_items(oKiller);
}


Ничего не пойму (IMG:style_emoticons/kolobok_light/sad.gif) Вроде бы все работает. Сообщение о поднятии уровня появляется, но...опыт продолжает даваться. При наступлении следующего OnDeath опыт опять приходит в норму (т.е. -1 до след. апа), а затем опять дается. Млин! (IMG:style_emoticons/kolobok_light/sad.gif)
1) прошу объяснить что не так
2) прошу исправить
3) либо... уважаемый Zirrex выложит версию исправленную и дополненную...(вариант: свою с Амена)... (IMG:style_emoticons/kolobok_light/angel.gif)
4) может я что не так поняла, но опыт-то проверяется только у "object oKiller = GetLastKiller();"? и коим образом тут остальные участники пати?


Aiwan: Дана, у нас есть специальный BBкод который вставляется нажатием на букву N [nss]. Это как раз код для скриптов НВН. Добро пожаловать. (IMG:style_emoticons/kolobok_light/biggrin.gif)


Сообщение отредактировал Aiwan - Mar 5 2006, 22:13
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Mar 5 2006, 18:43
Сообщение #2452


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

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



Dana, а, стоп, в данном случае опыт будет даваться только тому, кто убил это существо. Для распределения опыта по партии, нужен скрипт иного профиля. Я так написал, потому что не знаю, как у тебя работает скрипт в самом модуле. Может быть уже есть система распределения опыта (IMG:style_emoticons/kolobok_light/smile.gif)

Не надо ExecuteScript делать, лучше уж так:
NSS
#include "x0_i0_spawncond"

void main()
{
    object oKiller = GetLastKiller();

    int nLevel = GetHitDice(oKiller);

    if (GetXP(oKiller) > ((((nLevel + 1) * nLevel) / 2 * 1000) - 1))
    {
        SetXP(oKiller, (((nLevel + 1) * nLevel) / 2 * 1000) - 1);
        SendMessageToPC(oKiller, "Your must LEVEL UP!!!");
    }
    else
    {
        // Это лишь для примера, по-настоящему нужна система распределения опыта, и желательно своя, а не стандартная
        SendMessageToPC(oKiller, "О боги, меня наградили");
        SetXP(oKiller, 100);
    }

    if (GetSpawnInCondition(NW_FLAG_DEATH_EVENT))
    {
        SignalEvent(OBJECT_SELF, EventUserDefined(1007));
    }
}

Остальное из скрипта "nw_c2_default7", я выкинул, потому что лишнее, и подходит больше для одиночной игры, чем для сетевого модуля. Тем более понижать мировоззрение за убийство фракции Commoner - это гм... не очень весело (IMG:style_emoticons/kolobok_light/smile.gif)

Что это - GetCharacterLevel? Есть функция - int GetHitDice(object oCreature)

Да, и не забудь поставить в модульных настройках опцию "XP Scale" в 0, если ты используешь свою систему распределения опыта. Пока она у тебя будет стоять не в 0, то скрипт выдачи опыта на действии "OnDeath" монстра работать будет не совсем верно. Он тебя ограничивает по опыту, а стандартный скрипт игры выдает опыт, минуя это условие.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Daemonix
сообщение Mar 5 2006, 23:11
Сообщение #2453


Level 10
***

Класс: Мастер Оружия
Характер: Lawful Good
Раса: Человек



-fenix-
Спасибо. Скоро проверю. По поводу EventActivate - там было написано, что этот объект надо активировать, вот я и подумал на него...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dana
сообщение Mar 6 2006, 09:59
Сообщение #2454


Level 2
*

Класс: Друид
Характер: Lawful Neutral
Раса: Полуэльф



продолжим:
Допустим у меня система распределения опыта - всем поровну.
в представленном коде OnDeath моба, как я понимаю, происходит проверка ТОЛЬКО его oKillera.
NSS
if (GetXP(oKiller) > ((((nLevel + 1) * nLevel) / 2 * 1000) - 1))
    {
        SetXP(oKiller, (((nLevel + 1) * nLevel) / 2 * 1000) - 1);
        SendMessageToPC(oKiller, "Your must LEVEL UP!!!");
    }

следовательно надо сделать это для каждого участников пати? иначе получается, можно просто поставить чарf рядом, самому уйти спать, а в это врtмя будет идти прокач. Так?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 6 2006, 10:22
Сообщение #2455


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

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



Можно проверить кто убил. Если я уловил нить вопроса (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif)
NSS
if (GetXP(oKiller) > ((((nLevel + 1) * nLevel) / 2 * 1000) - 1))
    {
        if(GetIsPC(oKiller)
        {
          SetXP(oKiller, (((nLevel + 1) * nLevel) / 2 * 1000) - 1);
          SendMessageToPC(oKiller, "Your must LEVEL UP!!!");
        }
    }
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Mar 6 2006, 11:44
Сообщение #2456


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

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



Aiwan, не, не уловил. (IMG:style_emoticons/kolobok_light/pardon.gif)

Dana, кусок прямо из Lexicon'a(с легким тюнингом):
NSS
// Get the first PC party member
    object oPartyMember = GetFirstFactionMember(oKiller, TRUE);
    // We stop when there are no more valid PC's in the party.
    while(GetIsObjectValid(oPartyMember) == TRUE)
    {
        // Do something to party member
        if (GetXP(oPartyMember) > ((((nLevel + 1) * nLevel) * 500) - 1))
        {
            SetXP(oPartyMember, (((nLevel + 1) * nLevel) * 500) - 1);
            SendMessageToPC(oPartyMember, "Your must LEVEL UP!!!");
        }
        // Get the next PC member of oPC's faction.
        // If we put anything but oPC into this, it may be a totally
        // unreliable loop!
        oPartyMember = GetNextFactionMember(oKiller, TRUE);
    }
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Mar 7 2006, 00:08
Сообщение #2457


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

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



dumbo, интересно, а можно еще больше эту формулу упростить? В принципе, я видел, что деление на 2, а потом умножение на 1000, лишнее, но оставил так.

Dana, я же тебе дал ссылку в ICQ. Подобный код, который написал dumbo, можно вставить внутрь такой системы распределения опыта.

В скрипте "nw_c2_default7" лишь добавится:
NSS
ExecuteScript("xp_system", oKiller);

Сама же система полностью разбирается в скрипте "xp_system". Посмотри эту систему.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dana
сообщение Mar 8 2006, 18:19
Сообщение #2458


Level 2
*

Класс: Друид
Характер: Lawful Neutral
Раса: Полуэльф



Продолжим извечные «что» да «как». На повестке 2 вопроса.

1)ситуация. Как мне сделать проверку, находится ли в данной локации хотя бы один PC?
2)Посмотрите и исправьте если это требуется мой код (прыжок к лидеру). Это кольцо с уникальной силой для себя. На OnActvateItem модуля. Еще идет проверка на то, у кого находится кольцо. То есть у другого игрока оно не должно работать. (если выпадет в луте)
NSS
void main()
{
object oItem = GetItemActivated();
string sTag = GetTag(oItem );
object oPC = GetItemActivator();
object oLeader = GetFactionLeader(oPC);
location locTarget = GetLocation(oPC);
string sPlayerName = GetPCPlayerName(oPC);

//CALL_LEADER - is a tag of teleport ring with unique power for himself
    if (( sTag == "CALL_LEADER" ) && (sPlayerName == "vasya pupkin"))
    {
        if(GetIsObjectValid(oLeader) == TRUE && oLeader != oPC)
        {
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,    EffectVisualEffect(VFX_IMP_UNSUMMON), locTarget);
            ActionWait(2.0);
            ActionJumpToObject(oLeader);
        }
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 8 2006, 21:20
Сообщение #2459


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

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



1. Тут надо бы больше параметров. Например когда проверяем? При входе, выходе, триггер... Это просто.

2. В чем проблема?

Вопрос от меня. Что делашь? Шард?

Можно перебрать всех в локации, а можно посмотреть как делает биовар.
NSS
object GetNearestPC(object oTarget=OBJECT_SELF)
{
  object oNearestPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oTarget);
  string sPCName = GetName(oNearestPC);
  return oNearestPC;
  }
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dana
сообщение Mar 8 2006, 21:43
Сообщение #2460


Level 2
*

Класс: Друид
Характер: Lawful Neutral
Раса: Полуэльф



1) проверка, когда выходит PC из локации. на OnExit наверно
2) вроде как разобралась. Надо было через AssignCommand() делать
3) да, шард. По мирам Ю.Никитина. Скриптер пока тока я, да и то начинающий (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 8 2006, 23:48
Сообщение #2461


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

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



NSS
void main()
{
object oPC = GetExitingObject();
object oPCin = GetFirstObjectInArea(OBJECT_SELF);
if (!GetIsPC(oPC)) return;

while (oPCin!=OBJECT_INVALID) // Пока такой объект есть
{
  if (GetObjectType(oPCin) == OBJECT_TYPE_CREATURE) // Его тип создание
  {
    if (GetIsPC(oPCin)) // если это игрок
    {
      // Тут то что ты хочешь сделать
      // если надо прервать - прерви.
    }
  }
  oPCin = GetNextObjectInArea(OBJECT_SELF); // Берем следующего в локации
  }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Mar 9 2006, 10:15
Сообщение #2462


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

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



Можно еще так:
NSS
void main()
{
    object oPC = GetExitingObject();

    if (!GetIsPC(oPC)) return;

    int nPlayer = FALSE;

    object oPlayer = GetFirstPC();

    while (GetIsObjectValid(oPlayer))
    {
        if (GetArea(oPlayer) == OBJECT_SELF)
        {
            nPlayer = TRUE;
            break;
        }
        oPlayer = GetNextPC();
    }

    if (nPlayer)
    {
        // скрипт действия   
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dana
сообщение Mar 10 2006, 22:32
Сообщение #2463


Level 2
*

Класс: Друид
Характер: Lawful Neutral
Раса: Полуэльф



Без трудностей никуда. Продолжим. Итак, ситуация: в ивентаре имеется итем дрова (синька “wood”), в палитре – плейс дрова (синька «place_wood»). Выкладывая итем дров из инвентаря, я должна получить плейс дров на земле.

OnUnAquiredItem модуля:

NSS
void main()
{
object oPC = GetModuleItemLostBy();
if (!GetIsPC(oPC)) return;
object oLostItem = GetModuleItemLost();
if (!GetIsObjectValid(oLostItem)) return;

if (GetTag(oLostItem)=="wood")
{
//выкладываем плейс дров
CreateObject(OBJECT_TYPE_PLACEABLE,"place_wood",GetLocation(oPC));
//уничтожаем итем дров
DestroyObject(oLostItem);
}
}

Казалось бы…ан нет! Итем уничтожается, но плейс дров не появляется.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Mar 10 2006, 22:41
Сообщение #2464


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

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить
NWN: Скриптинг [PW]



QUOTE
в ивентаре имеется итем дрова (синька ”wood”),

в том случае надо таг, а не синьку..если таг другой, то
QUOTE
if (GetTag(oLostItem)=="wood")

непрально
так..заметка
перепроверь таги и синьки, я к тому, что у меня работает всё

Сообщение отредактировал [MoF]Darth_Nick - Mar 10 2006, 23:24
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dana
сообщение Mar 10 2006, 22:59
Сообщение #2465


Level 2
*

Класс: Друид
Характер: Lawful Neutral
Раса: Полуэльф



ниии... с тэгами все нормуль. не в этом дело (IMG:style_emoticons/kolobok_light/sad.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Mar 11 2006, 00:21
Сообщение #2466


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

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



Dana, я надеюсь ты в курсе, что объект создается по РесРефу?

Похоже ты хочешь сделать что-то типа отдыха. Не надо мучаться с тем, что уже есть! Посмотри в базе скриптов, там есть скрипт на отдых в дикой местности, как раз с выкладкой дров, ну и прочим.
Очень советую посмотреть темки: База скриптов, Скрипты для новичков, Вопросы и Ответы по Toolsetу.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dana
сообщение Mar 11 2006, 00:39
Сообщение #2467


Level 2
*

Класс: Друид
Характер: Lawful Neutral
Раса: Полуэльф



ыыыы (IMG:style_emoticons/kolobok_light/smile.gif) как раз оттуда это и взято. там 2 источника. Очень похожи. (IMG:style_emoticons/kolobok_light/smile.gif)
а результата нет (IMG:style_emoticons/kolobok_light/sad.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Mar 11 2006, 00:59
Сообщение #2468


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

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить
NWN: Скриптинг [PW]



http://nwcustom.jino-net.ru/upload/plc_itm_down.rar
наглядно.
береш, ложиш и появляются дрова

Сообщение отредактировал [MoF]Darth_Nick - Mar 11 2006, 01:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Mar 11 2006, 01:15
Сообщение #2469


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

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



Dana, еще раз обращаю твое внимание на то, что объект создается по РесРефу! Это очень частая ошибка начинающих.
Об этом говорится в ВиО
QUOTE

ВОПРОС
CreateObject(...); - создает по Blueprint ResRef или по тэгу?

ОТВЕТЫ
CreateObject(...); - создает по Blueprint ResRef
Создавать можно только итемы, NPC, плейсы, магазины и вейпоинты.

Посмотри в модуле [MoF]Darth_Nick'а , там у дров в палитре и имя и тег и РесРеф "place_wood".
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dana
сообщение Mar 11 2006, 12:44
Сообщение #2470


Level 2
*

Класс: Друид
Характер: Lawful Neutral
Раса: Полуэльф



(IMG:style_emoticons/kolobok_light/smile.gif) моя вина. исправлиась. действительно делала по тэгу.
теперь все нормально. ПС дрыхнет так, что экран трясется.
Всем спасибо, все свободны... до следующей моей очередной заковырки (IMG:style_emoticons/kolobok_light/smile.gif)


И снова здравствуйте… С отдыхом все получилось, на радостях даже сделала, что бы дрова из плейсов деревьев добывать можно было (IMG:style_emoticons/kolobok_light/smile.gif) Итак, продолжим:
1) хочу, что бы при создании плейса костра и в течении всего времени что он у меня полыхает, был звук треска костра. Как я понимаю CreateObject здесь неуместен.
2)так же хочу сделать, чтобы при убийстве какого-либо животного после него оставался итем «Мясо» и через определенное время исчезал (5 сек, 10 сек…). Через инвентарь животного оно конечно остается, но не исчезает. Здесь надо делать генерируемый лут с DestoyObject?
Пока что это все, что меня интересует (IMG:style_emoticons/kolobok_light/smile.gif)
Заранее благодарна. Навеки ваша. Дана.

Сообщение отредактировал Dana - Mar 11 2006, 12:43
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 11 2006, 13:57
Сообщение #2471


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

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



QUOTE(Dana @ Mar 11 2006, 12:44) [snapback]72277[/snapback]
2)так же хочу сделать, чтобы при убийстве какого-либо животного после него оставался итем «Мясо» и через определенное время исчезал (5 сек, 10 сек…). Через инвентарь животного оно конечно остается, но не исчезает. Здесь надо делать генерируемый лут с DestoyObject?

описывалось недавно как это делать. Удаление с указаной задержкой делается в скрипте onDeath. Сначала отчистка инвенторя, потом удаление плейса.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chess
сообщение Mar 11 2006, 21:03
Сообщение #2472


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



Еще раз вынужден просить помощи, я уже писал этот вопрос, но не кто не помог, умельцы, подскажите мне ПЛИЗ, как убрать этого пацана, Link Boy его завут, который появляется, когда спать ложишься ? И потом продолжает бегать за тобой с факелом !
И еще, что-нибудь про систему лута, процент выпадения данной вещи из данного моба например, хотяб примерно, как написать такой скрипт ?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Isendel
сообщение Mar 11 2006, 21:19
Сообщение #2473


Level 10
***

Класс: Бард
Характер: Chaotic Good
Раса: Эльф



Брр, ты вообще откуда этого Линк Боя достал? Или он появляется, когда ты в реале спать ложишься, и бегает за тобой с факелом? (IMG:style_emoticons/kolobok_light/ph34r.gif) (IMG:style_emoticons/kolobok_light/crazy.gif)

Думаю, с этим вопросом было бы уместнее обратиться сюда - http://www.wrg.ru/forums/index.php?showforum=3
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Mar 11 2006, 21:28
Сообщение #2474


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

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



QUOTE(Chess @ Mar 11 2006, 21:03) [snapback]72324[/snapback]
Еще раз вынужден просить помощи, я уже писал этот вопрос, но не кто не помог, умельцы, подскажите мне ПЛИЗ, как убрать этого пацана, Link Boy его завут, который появляется, когда спать ложишься ? И потом продолжает бегать за тобой с факелом !

Эт хто такой и где? (IMG:style_emoticons/kolobok_light/shok.gif)

QUOTE(Chess @ Mar 11 2006, 21:03) [snapback]72324[/snapback]
И еще, что-нибудь про систему лута, процент выпадения данной вещи из данного моба например, хотяб примерно, как написать такой скрипт ?

Самое простое, это задать шанс выпадения фиксированного шмота. Тобишь ты указываешь в скрипте все шмотки, которые могут выпасть из чела, а потом ставешь для каждой процент.
Вот скажем так на смерть НПС
NSS
void main()
{
string s1 = "РесРеф_первого_итема";
string s2 = "РесРеф_второго_итема";

//Random генерирует случайные числа от 0 до 3, то есть выбирает из четырех чисел.
//мы ставим условие, чтоб объект создавался если выпадет "2", то есть 1 из 4, то есть шанс 25%
if(Random(4)==2)
CreateItemOnObject(s1);
//аналогично
if(Random(4)==2)
CreateItemOnObject(s2);
}

А вот нормальная систему лута сложнее. Тут надо все вещи разбивать по группам: мечи, щиты, копья..., хорошее состоянее, плохое... и прочее. И условия выпада соответственные.
Посмотри в форуме шардов, там вроде есть примеры.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Mar 12 2006, 03:52
Сообщение #2475


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

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



Dana, звук такой же объект, как и все остальные. Его можно поставить в точку появления костра, и после сна удалять. Только я все же больше склоняюсь ко сну, в котором не нужно создавать костер с помощью дров, ибо маг, друид, и т.п. классы, таскать с собой дрова, и тем более рубить дерево топориком, который они даже в руки взять не могут, не очень здорово. Старая идея, которая очень давно была реализована на Экзисе. Причем по сей день жива на некоторых шардах. Если честно, такая идея несколько банальна. Лучше сделать места по всей территории мира, где можно спать. Например, на Мидгарде можно было спать только около костров. Единственный недостаток, костры горели вечно, даже если рядом никого не было. Но такой уж объект. К сожалению поменять ему ключ "горит - не горит" нельзя.

По поводу второго, посмотри внимательно мое сообщение.

Chess, днем тебе представлю простенький код по системе лута, а ты уж сам его расширишь.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

205 страниц V  « < 97 98 99 100 101 > » 
Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 



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