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

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

> PC scripting :P, вешать скрипты на игроов (не default)
2_advanced
сообщение Jun 27 2005, 01:29
Сообщение #1


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



сабж.
кто-нибудь извращался с редактированием имён скриптов, вешаемых на игроков?
default пашет только как херт бит.. и имхо легче самоповторяющееся действие повесить

в общем задача - повесить
on_spell_cast
on_attack
on_death (ну это не обязательно)
и т.п..

Сообщение отредактировал 2_advanced - Jun 27 2005, 01:34
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
_kaa_
сообщение Jul 20 2005, 09:22
Сообщение #2


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



Ты сам начни, будут вопросы - ответим. Никто делать за тебя не станет, но поможем с тем, с чем с ходу не справишся.
В двух словах где тебе рыть:

QUOTE

1)Записывал кол-во убийств(фрагов) (число X)


Тебе нужно отслеживать событие "смерть игрока" - это OnPlayerDying, OnPlayerDeath (в свойствах модуля).
Первое срабатывает, когда у игрока меньше 0 хитпоинтов, второе - когда -10 и меньше.
Если кто-то умирает - генерируется эти события, в них можно получить кто умер
Neverwinter Script Source
object oPC =GetLastPlayerDied();
и кто его убил
Neverwinter Script Source
object oKiller=GetLastHostileActor()
.
QUOTE

2)При убийтве перса ниже чем на 10 уровне вычитать из X единицу

Это гораздо проще. У тебя уже есть убитый и убийца, осталось узнать уровень обоих и сравнить.
Neverwinter Script Source
int PC_level= GetHitDice(oPC); // вернет тебе уровень игрока oPC.
int Killer_level = GetHitDice(oKiller); // уровень убийцы
int frag = 0;
if (Killer_level - PC_level > 10)
    frag = -1
else
    frag = 1;


Теперь надо записать все на вещь:
Neverwinter Script Source
object oNoDropItem = GetItemPossessedBy(oPC,"<тег вещи>");
int Frags = GetLocalInt(oNoDropItem,"Frags"); // прочитали сколько было фрагов
Frags += frag;                                // Frags = Frags + frag, добавили или уменьшили
GetLocalInt(oNoDropItem,"Frags",Frags);      //записали новое значение.


Как только будет сохранение персонажа (при его выходе или при вызове ExportAllCharacters(),ExportSingleCharacter(oPC)) его фраги запишутся в .bic файл игрока, т.е. туда же куда пишется информация об игроке, его уровне, вещях и т.п.

QUOTE

3)Команда, при которой можно узнать хонор статус другого игрока...

Если "хонор" в твоем понимании количество фрагов:

Тебе нужна вещь со свойством Cast Spell:Unique power (unlimit). При ее активации вызывается событие модуля onActivateItem(), в нем тебе нужно проверить, что активированна именно твоя вещь. Скажем вещь твоя имеет тег "honor_viewer"
Neverwinter Script Source
//module onActivateItem()
    object oItem=GetItemActivated();        //что за вещь вызвала скрипт
    object oActivator=GetItemActivator();  //кто активировал
    object oTarget = GetItemActivatedTarget();  //на кого активировали
    string sTag = GetTag(oItem);
   
    if (sTag == "honor_viewer") // если активировали твою вещь, то
    {
        SendMessageToPC(oActivator,  //послать сообщение тому, кто активировал вещь
                        IntToSting(  //посылать можно только строки, поэтому преобразуем число в строку
                        GetLocalInt(GetItemPossessedBy(oTarget,"<тег вещи но дроп>"),"Frags")));
    }


Вариант без проверок. Проверки приделывай сам, надо убедиться что oTarget - игрока (GetIsPC()), что
GetItemPossessedBy(oTarget,"<тег вещи но дроп>") вернет тебе объект, а не OBJECT_INVALID и т.п.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- 2_advanced   PC scripting :P   Jun 27 2005, 01:29
- - Lex   пробовал через лето написать в слоты игрока другие...   Jun 27 2005, 01:35
- - Leon PRO   Я пробовал, но как только игра сохраняет перса, у ...   Jun 27 2005, 02:03
- - LArden   А попробуйте создать в инвентаре чара некий нон-др...   Jun 27 2005, 10:03
- - Lex   LArden, или туплю я, или одно из двух.. Но причем ...   Jun 27 2005, 12:40
- - helvene   QUOTE А попробуйте создать в инвентаре чара некий...   Jun 27 2005, 18:29
- - K.SpecTr   QUOTE (2_advanced @ Jun 27 2005, 01:29)defau...   Jun 27 2005, 19:41
- - 2_advanced   это будет зверский лаг   Jun 27 2005, 22:36
- - Lex   "определяя через свитч, что конкретно было пр...   Jun 27 2005, 23:35
- - K.SpecTr   Что-то в этом роде: CODE void main() { // ...   Jun 29 2005, 22:31
- - 2_advanced   NWNXом менял скрипты, повешанные на чара.. - серва...   Jun 29 2005, 23:08
- - dumbo   K.SpecTr default скрипт работает на PC только как ...   Jun 30 2005, 05:58
- - K.SpecTr   dumbo Ну, как бы это так помягче сказать, я никогд...   Jun 30 2005, 06:17
- - Zirrex   У меня вопрос такого плана. Если уж заговорили про...   Jul 5 2005, 23:02
- - -=PsyXaoc=-   Наверное все же сюда... Такс Есть две команды А и ...   Jul 18 2005, 23:14
- - dumbo   QUOTE (-=PsyXaoc=- @ Jul 19 2005, ...   Jul 19 2005, 04:48
- - -=PsyXaoc=-   dumbo ну раз не сложно, неужели нельзя помочь?   Jul 19 2005, 10:50
- - _kaa_   Ты сам начни, будут вопросы - ответим. Никто делат...   Jul 20 2005, 09:22
- - Vanes   QUOTE систему такую написать несложно, но нафиК ни...   Jul 20 2005, 12:33
- - -=PsyXaoc=-   _kaa_ Респект, разобрался   Jul 20 2005, 12:51
- - Valleo   QUOTE (Zirrex @ Jul 5 2005, 23:02) У меня вопрос т...   Jul 28 2005, 19:20
- - 2_advanced   >OnHitSpellCast я использовал это для *портящих...   Jul 31 2005, 00:59
- - dumbo   QUOTE (2_advanced @ Jul 31 2005, 01:59)а на ...   Jul 31 2005, 04:57
- - 2_advanced   а если спелл на область? подвалил злобный сорк и к...   Jul 31 2005, 22:48
- - Valleo   Кстати, энта, не в тему конечно, но почти по теме....   Aug 8 2005, 18:47


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 13th May 2025 - 16:02