сабж.
кто-нибудь извращался с редактированием имён скриптов, вешаемых на игроков?
default пашет только как херт бит.. и имхо легче самоповторяющееся действие повесить
в общем задача - повесить
on_spell_cast
on_attack
on_death (ну это не обязательно)
и т.п..
пробовал через лето написать в слоты игрока другие скрипты. Вместо дефолта.
Не вышло.
Я пробовал, но как только игра сохраняет перса, у него тут-же все переменные в полях скриптинга чар-файла (bic) становятся "default"
А попробуйте создать в инвентаре чара некий нон-дроп предмет и вешать переменные на него. Может так получится?
LArden, или туплю я, или одно из двух.. Но причем тут переменные? Мы говорим про скрипты на игрока. Типа onDamage, onDeath (это можно через модульный скрипт сделать, так что наф), onSpellCastAt и прочее..
QUOTE |
А попробуйте создать в инвентаре чара некий нон-дроп предмет и вешать переменные на него. Может так получится? |
QUOTE (2_advanced @ Jun 27 2005, 01:29) |
default пашет только как херт бит.. и имхо легче самоповторяющееся действие повесить в общем задача - повесить on_spell_cast on_attack on_death (ну это не обязательно) и т.п.. |
это будет зверский лаг
"определяя через свитч, что конкретно было причиной вызова скрипта?"
а это как??
Я не придумал пока, как это сделать.
Если напишешь, дай мне. У меня Сингл, лаги не будут заметны
Что-то в этом роде:
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); } } |
NWNXом менял скрипты, повешанные на чара.. - сервак падал при первом вызове любого скрипта..
буду ковырять дальше =Р
K.SpecTr
default скрипт работает на PC только как хб, несмотря на то, что прописан во всех слотах - проверено путем написания оного. несмотря на активное поведение PC, тестовая строка падала в лог с методичностью хб. и не более.
а тот скрипт, что ты написал... как бы это так помягче описать...
dumbo
Ну, как бы это так помягче сказать, я никогда (почти) умным скриптером не прикидывался.
Я лишь поставил вопрос: может быть можно и так.
У меня вопрос такого плана. Если уж заговорили про скрипты, которые вешаются на персонажа игрока, то как отличить, кто первый начал атаку. С монстрами это просто, у них свои скрипты, а вот что делать с двумя дерущимися персонажами? Дело в том, что угадать, кто виноват, когда первоуровневый персонаж нападает на высокоуровневого, сложно. А виноват чаще именно тот, кто умер, но попробуй это докажи. Поэтому мне и интересно, можно ли как-нибудь это сделать?
Наверное все же сюда... Такс
Есть две команды А и Б, они постоянно воют,
Есть нондроп дивайс, на него нужно положить скрипт, чтобы:
1)Записывал кол-во убийств(фрагов) (число X)
2)При убийтве перса ниже чем на 10 уровне вычитать из X единицу
3)Команда, при которой можно узнать хонор статус другого игрока...
Почти уверен, что такая херь есть на волте, только никак не найду...
QUOTE (-=PsyXaoc=- @ Jul 19 2005, 00:14) |
1)Записывал кол-во убийств(фрагов) (число X) |
dumbo
ну раз не сложно, неужели нельзя помочь?
Ты сам начни, будут вопросы - ответим. Никто делать за тебя не станет, но поможем с тем, с чем с ходу не справишся.
В двух словах где тебе рыть:
QUOTE |
1)Записывал кол-во убийств(фрагов) (число X) |
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); //записали новое значение. |
QUOTE |
3)Команда, при которой можно узнать хонор статус другого игрока... |
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"))); } |
QUOTE |
систему такую написать несложно, но нафиК никому, кроме тебя, не надо |
_kaa_
Респект, разобрался
QUOTE (Zirrex @ Jul 5 2005, 23:02) |
У меня вопрос такого плана. Если уж заговорили про скрипты, которые вешаются на персонажа игрока, то как отличить, кто первый начал атаку. С монстрами это просто, у них свои скрипты, а вот что делать с двумя дерущимися персонажами? Дело в том, что угадать, кто виноват, когда первоуровневый персонаж нападает на высокоуровневого, сложно. А виноват чаще именно тот, кто умер, но попробуй это докажи. Поэтому мне и интересно, можно ли как-нибудь это сделать? |
>OnHitSpellCast
я использовал это для *портящихся вещей и оружия* ((с) ) - ударил кто-то кого-то - и у него ножик затупился и броньку чужую/щит попортил (нафига это нужно? - основа экономики.. )
а на счет - кто кого первым ударил - если только дрыномахальщик дрыномахальщика.. а если кастер?
вставлять что-то для проверки перед запуском соответствующего касту скрипта? имхо изврат маллоэффективный
QUOTE (2_advanced @ Jul 31 2005, 01:59) |
а на счет - кто кого первым ударил - если только дрыномахальщик дрыномахальщика.. а если кастер? |
а если спелл на область? подвалил злобный сорк и кинул баншу - и спеллхук будет перебирать всех существ в области?
в общем это грузный (и глючащий) гемор ни кому не нужный..
Кстати, энта, не в тему конечно, но почти по теме.
Leto теперь НЕ может прикрутить к чару SpecAbilList где содержатся спеллы как специальные абилки персонажа. Это было пофиксено биоварями в патче 1.64.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)