Город Мастеров
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
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 27 2005, 01:35
Сообщение #2


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

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



пробовал через лето написать в слоты игрока другие скрипты. Вместо дефолта.
Не вышло.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Leon PRO
сообщение Jun 27 2005, 02:03
Сообщение #3


Ушедший на войну
Иконки Групп

Класс: Маг
Характер: Chaotic Good
Раса: Человек
NWN: Контент



Я пробовал, но как только игра сохраняет перса, у него тут-же все переменные в полях скриптинга чар-файла (bic) становятся "default"
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
LArden
сообщение Jun 27 2005, 10:03
Сообщение #4


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

Класс: Друид
Характер: True Neutral
Раса: Человек
NWN: Тексты



А попробуйте создать в инвентаре чара некий нон-дроп предмет и вешать переменные на него. Может так получится?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 27 2005, 12:40
Сообщение #5


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

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



LArden, или туплю я, или одно из двух.. Но причем тут переменные? Мы говорим про скрипты на игрока. Типа onDamage, onDeath (это можно через модульный скрипт сделать, так что наф), onSpellCastAt и прочее..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
helvene
сообщение Jun 27 2005, 18:29
Сообщение #6


Mystery
Иконки Групп

Класс: Маг
Характер: Lawful Evil
Раса: Тварь
NWN: Контент
Амен



QUOTE
А попробуйте создать в инвентаре чара некий нон-дроп предмет и вешать переменные на него. Может так получится?

Так не просто получится - так делают.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
K.SpecTr
сообщение Jun 27 2005, 19:41
Сообщение #7


Level 10
***

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



QUOTE (2_advanced @ Jun 27 2005, 01:29)
default пашет только как херт бит.. и имхо легче самоповторяющееся действие повесить

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

default "пашет" как все эти скрипты вместе взятые, не зря он в каждом слоте. И срабатывает он по всем эвентам для этих слотов.
А что если использовать его как контейнер: все on_xxx как инклюды и запускать соответствующие функции, определяя через свитч, что конкретно было причиной вызова скрипта?
Т.е. если у нас причина атака, то запускаем on_attack - засечена смерть, то on_death.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Jun 27 2005, 22:36
Сообщение #8


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

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



это будет зверский лаг :vava:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 27 2005, 23:35
Сообщение #9


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

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



"определяя через свитч, что конкретно было причиной вызова скрипта?"
а это как??
Я не придумал пока, как это сделать.
Если напишешь, дай мне. :) У меня Сингл, лаги не будут заметны :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
K.SpecTr
сообщение Jun 29 2005, 22:31
Сообщение #10


Level 10
***

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



Что-то в этом роде:
CODE
void main()
{
// def_xxxx - скрипты на эвенты. Инклюды они или нет, это другой вопрос.
// Не вижу причин для бешеного лага.
if(GetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT) && GetLastPerceptionSeen())
   {
       ExecuteScript(def_percieve,OBJECT_SELF);
   }
if(GetSpawnInCondition(NW_FLAG_DAMAGED_EVENT))
   {
       ExecuteScript(def_damaged,OBJECT_SELF);
   }
if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT))
   {
        ExecuteScript(def_death,OBJECT_SELF);
   }
if(GetSpawnInCondition(NW_FLAG_SPELL_CAST_AT_EVENT))
   {
       ExecuteScript(def_spellcast,OBJECT_SELF);
   }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Jun 29 2005, 23:08
Сообщение #11


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

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



NWNXом менял скрипты, повешанные на чара.. - сервак падал при первом вызове любого скрипта..
буду ковырять дальше =Р
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jun 30 2005, 05:58
Сообщение #12


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

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



K.SpecTr
default скрипт работает на PC только как хб, несмотря на то, что прописан во всех слотах - проверено путем написания оного. несмотря на активное поведение PC, тестовая строка падала в лог с методичностью хб. и не более.

а тот скрипт, что ты написал... как бы это так помягче описать... :swoon: ;)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
K.SpecTr
сообщение Jun 30 2005, 06:17
Сообщение #13


Level 10
***

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



dumbo
Ну, как бы это так помягче сказать, я никогда (почти) умным скриптером не прикидывался. :lol:
Я лишь поставил вопрос: может быть можно и так. ;)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 5 2005, 23:02
Сообщение #14


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

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



У меня вопрос такого плана. Если уж заговорили про скрипты, которые вешаются на персонажа игрока, то как отличить, кто первый начал атаку. С монстрами это просто, у них свои скрипты, а вот что делать с двумя дерущимися персонажами? Дело в том, что угадать, кто виноват, когда первоуровневый персонаж нападает на высокоуровневого, сложно. А виноват чаще именно тот, кто умер, но попробуй это докажи. Поэтому мне и интересно, можно ли как-нибудь это сделать?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-=PsyXaoc=-
сообщение Jul 18 2005, 23:14
Сообщение #15


Level 1


Класс: Монах
Характер: Chaotic Evil
Раса: Эльф



Наверное все же сюда... Такс
Есть две команды А и Б, они постоянно воют,
Есть нондроп дивайс, на него нужно положить скрипт, чтобы:
1)Записывал кол-во убийств(фрагов) (число X)
2)При убийтве перса ниже чем на 10 уровне вычитать из X единицу
3)Команда, при которой можно узнать хонор статус другого игрока...

Почти уверен, что такая херь есть на волте, только никак не найду...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jul 19 2005, 04:48
Сообщение #16


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

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



QUOTE (-=PsyXaoc=- @ Jul 19 2005, 00:14)
1)Записывал кол-во убийств(фрагов) (число X)

лучший! :good:
систему такую написать несложно, но нафиК никому, кроме тебя, не надо.
Добавлено в [mergetime]1121737902[/mergetime]
да, по ТЕМЕ: скрипты на PC, кроме хб, просто не вызываются, поэтому менять их названия ни в памяти игры, ни в сэйве смысла не имеет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-=PsyXaoc=-
сообщение Jul 19 2005, 10:50
Сообщение #17


Level 1


Класс: Монах
Характер: Chaotic Evil
Раса: Эльф



dumbo
ну раз не сложно, неужели нельзя помочь?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Jul 20 2005, 09:22
Сообщение #18


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 и т.п.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Vanes
сообщение Jul 20 2005, 12:33
Сообщение #19


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

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



QUOTE
систему такую написать несложно, но нафиК никому, кроме тебя, не надо

РПшникам может и не надо...
а у меня такая штука с февраля месяца крутится... только не через итем, а в БД...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-=PsyXaoc=-
сообщение Jul 20 2005, 12:51
Сообщение #20


Level 1


Класс: Монах
Характер: Chaotic Evil
Раса: Эльф



_kaa_
:good: Респект, разобрался
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Valleo
сообщение Jul 28 2005, 19:20
Сообщение #21


Level 4
**

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



QUOTE (Zirrex @ Jul 5 2005, 23:02)
У меня вопрос такого плана. Если уж заговорили про скрипты, которые вешаются на персонажа игрока, то как отличить, кто первый начал атаку. С монстрами это просто, у них свои скрипты, а вот что делать с двумя дерущимися персонажами? Дело в том, что угадать, кто виноват, когда первоуровневый персонаж нападает на высокоуровневого, сложно. А виноват чаще именно тот, кто умер, но попробуй это докажи. Поэтому мне и интересно, можно ли как-нибудь это сделать?

Насчет кто кого првым ударил - на броню повешать OnHitSpellCast и вызывать через него скрипт глобальный, который и будет определять кто кого первым ударил. Главное прикрутить каждой броньке\одежке эту фишку через AddItemProperty, вроде так...

И вообще - я делал через default очень хорошую систему, она осталась в моем первом модуле шарда Энтарион. На второй модуль не буду переводить, так как система всетаки давала хорошенькие лаги, так как скрипт вызывался на КАЖДЫЙ эвент прсонажа.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Jul 31 2005, 00:59
Сообщение #22


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

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



>OnHitSpellCast
я использовал это для *портящихся вещей и оружия* ((с) :D ) - ударил кто-то кого-то - и у него ножик затупился и броньку чужую/щит попортил :) (нафига это нужно? - основа экономики.. )

а на счет - кто кого первым ударил - если только дрыномахальщик дрыномахальщика.. а если кастер?
вставлять что-то для проверки перед запуском соответствующего касту скрипта? имхо изврат маллоэффективный

Сообщение отредактировал 2_advanced - Jul 31 2005, 01:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jul 31 2005, 04:57
Сообщение #23


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

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



QUOTE (2_advanced @ Jul 31 2005, 01:59)
а на счет - кто кого первым ударил - если только дрыномахальщик дрыномахальщика.. а если кастер?

это как раз не есть проблема - spell-hooking(небольшое описание) на то имеется.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Jul 31 2005, 22:48
Сообщение #24


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

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



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

Сообщение отредактировал 2_advanced - Jul 31 2005, 22:50
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Valleo
сообщение Aug 8 2005, 18:47
Сообщение #25


Level 4
**

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



Кстати, энта, не в тему конечно, но почти по теме.

Leto теперь НЕ может прикрутить к чару SpecAbilList где содержатся спеллы как специальные абилки персонажа. Это было пофиксено биоварями в патче 1.64.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



Текстовая версия Сейчас: 5th July 2020 - 02:33