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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
14 страниц V  « < 8 9 10 11 12 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты: Все вопросы, Алгоритмы, оптимизация, особености и хитрости в скриптинге
Equilibrium
сообщение Dec 24 2008, 23:44
Сообщение #226


Level 2
*

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



Эх... ясно, пасиб... Но буду иметь ввиду на всякий случай.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RebOOter
сообщение Jan 3 2009, 11:46
Сообщение #227


Level 1


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



Народ, не могу разобраться в некоторых вещах.
1) Пытаюсь написать скрипт, что бы один НПС атаковал другова.
Neverwinter Script
void main()
{
object oVoin = GetObjectByTag("BOEC1");
object oVoin2 = GetObjectByTag("BOEC2");

AssingCommand(oVoin, ActionAttack(oVoin2));
}


Компилятр выдаёт мне:
4000_tboi_os.nss(6): ERROR: UNDEFINED INDENTIFIER

2) В Вики был самоучитель из 4-х уроков. Там был приведён пример скрипта, что-бы НПС пел:

Neverwinter Script
void main()
  {
  ClearAllActions();
  ActionSpeakString(&#39;This is the song that never ends.&#39(IMG:style_emoticons/kolobok_light/wink3.gif) ;
  ActionWait(1.5);
  ActionSpeakString(&#39;Yes it goes on and on, my friends.&#39(IMG:style_emoticons/kolobok_light/wink3.gif) ;
  ActionWait(1.5);
  ActionSpeakString(&#39;Some people started singing it not knowing what it was.&#39(IMG:style_emoticons/kolobok_light/wink3.gif) ;
  ActionWait(1.5);
  ActionSpeakString(&#39;And now they&#39;ll keep on singing it forever, just because:&#39(IMG:style_emoticons/kolobok_light/wink3.gif) ;
  }


Компилятор так-же выдал ошибку: Script2.nss(4): ERROR: UNDEFINED IDENTIFIER

Может это правила написания для 1-го NWN? Возможно я чего-то не понял?
Если по 1-му вопросу, то я задаю 2 объекта которые определяются по тэгам и отдаю команду (т.е. oVoin c тэгом BOEC1 атакует oVoin2 c тэгом BOEC2).
По втрому вообще понять не могу. Может мне нужно именно задать объект?

Зарание спасибо!


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

Neverwinter Script
void main()
  {
  ClearAllActions();
  ActionSpeakString(&#39;This is the song that never ends.&#39(IMG:style_emoticons/kolobok_light/wink3.gif)
  ActionWait(1.5);
  ActionSpeakString(&#39;Yes it goes on and on, my friends.&#39(IMG:style_emoticons/kolobok_light/wink3.gif)
  ActionWait(1.5);
  ActionSpeakString(&#39;Some people started singing it not knowing what it was.&#39(IMG:style_emoticons/kolobok_light/wink3.gif)
  ActionWait(1.5);
  ActionSpeakString(&#39;And now they keep on singing it forever, just because&#39(IMG:style_emoticons/kolobok_light/wink3.gif)
  }


Опять... редактор заменил символ " ' " на "&#39 (IMG:style_emoticons/kolobok_light/wink3.gif) "
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Jan 3 2009, 12:36
Сообщение #228


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



В первом скрипте ошибка, должно быть AssignCommand(последние две буквы assign). Ну и чтобы совсем хорошо было, надо добавить перед этим AssignCommand(oVoin, ClearAllActions());
Во втором - кавычки должны быть двойные: не ('), а ("), надо не забывать закрывать скобки и ставить в конце строки ;
Neverwinter Script
void main()
{
    ClearAllActions();
    ActionSpeakString("This is the song that never ends.");
    ActionWait(1.5);
    ActionSpeakString("Yes it goes on and on, my friends.");
    ActionWait(1.5);
    ActionSpeakString("Some people started singing it not knowing what it was.");
    ActionWait(1.5);
    ActionSpeakString("And now they'll keep on singing it forever, just because...");
}



Сообщение отредактировал greye - Jan 3 2009, 15:05
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RebOOter
сообщение Jan 3 2009, 14:57
Сообщение #229


Level 1


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



Цитата(greye @ Jan 3 2009, 15:36) *
В первом скрипте ошибка, должно быть AssignCommand(последние две буквы assign). Ну и чтобы совсем хорошо было, надо добавить перед этим AssignCommand(oVoin, ClearAllActions());
Во втором - кавычки должны быть двойные: не ('), а ("), надо не забывать закрывать скобки и ставить в конце строки ;


По первому компилятор "дал добро". Спасибо!)

А по второму, ковычки я ставлю двойные и точку с зяпятой тоже ставлю, но компилятор всё равно в той-же строке ошибку выдаёт (IMG:style_emoticons/kolobok_light/sad.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RebOOter
сообщение Jan 4 2009, 06:25
Сообщение #230


Level 1


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



Второй скрип запахал!)) В ковычках дело было... а в примере одна была (IMG:style_emoticons/kolobok_light/smile.gif)

А второй скрипт без ошибок, но не рабочий... не хотят они друг друга атаковать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Marta
сообщение Jul 25 2009, 12:59
Сообщение #231


Level 1


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



Чувствуется, у админов и у всех остальных летние каникулы. Но все же, вдруг кто зайдет. Не могу написать скрипт одевания брони на ГГ через диалог. Поможите, люди добрые, подскажите, что здесь не так:

Neverwinter Script
// Проба. Одеть вещь в слот.

void main()
{
    object oPC = GetPCSpeaker();
    object oItem = GetObjectByTag("NW_CLOTH018");
   

  AssignCommand( oPC, ActionEquipItem(oItem, INVENTORY_SLOT_CHEST) );


}


И почему у меня эта долбаное действие ActionEquipItem вообще не работает, вплоть до того, что не работает стандартный скрипт ga_equip_slot ? Может быть, кто-то знает, какой командой в этом случае можно заменить ActionEquipItem?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Jul 25 2009, 20:20
Сообщение #232


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

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



Neverwinter Script
object oItem = GetObjectByTag("NW_CLOTH018");

может быть дело в том, что таких объектов много, и берётся объект не в инвентаре героя; тогда лучше использовать функцию:
Neverwinter Script
object GetItemPossessedBy(object oCreature, string sItemTag)

ещё может быть стоит попробовать добавить перед одеванием ActionPauseConversation(), а после ActionResumeConversation()...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Marta
сообщение Jul 25 2009, 23:40
Сообщение #233


Level 1


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



Ух. Спасибо, что вообще ответил, но я, к сожалению, ничего не поняла. Я же не скриптер, а полный ламер. Вместо object oItem = GetObjectByTag мне надо написать object GetItemPossessedBy? Так у меня не компилируется, или как там... И непонятно, куда писать тег вещи. (object oCreature, string sItemTag("NW_CLOTH018") )? Тогда что за oCreature?

ActionPauseConversation() - это
Neverwinter Script
void    ActionPauseConversation();

?
Так все равно не компилируется.

Я понимаю, для тебя это вопросы из серии "детский сад - штаны на лямках". Вероятно, мне стоит со всем этим перейти в "скрипты для новичков", я в эту тему-то написала потому что стандартный скрипт тоже не работает. Если тебе не очень влом, разжуй мне, пожалуйста, все это в любой теме, в какой тут положено, или просто покажи на этом примере, чтобы я поняла принцип. Может, и еще кому пригодится.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Jul 26 2009, 05:16
Сообщение #234


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

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



объясню, но вряд ли кому-то это ещё пригодится, т.к. каждому нужны объяснения для себя отдельно.

Во-первых, странно, что стандартный скрипт не работает, может быть дело не в скрипте, а в опечатке в теге, или перепутывании его с резрефом.

oCreature и sItemTag - это параметры функции GetItemPossessedBy, чтобы её запустить, надо вместо них записать что нам надо, в данном случае нам нужен предмет с тегом у игрока, сделовательно oCreature - игрок, sItemTag - тэг

Neverwinter Script
object oItem = GetItemPossessedBy(oPC, "NW_CLOTH018");


Сообщение отредактировал azathoth - Jul 26 2009, 05:18
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Marta
сообщение Jul 26 2009, 13:23
Сообщение #235


Level 1


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



Вах, сработало! Спасибо огромное, - а то я уже неделю бъюсь!

Но стандартный скрипт ga_equip_slot у меня не работает точно, я ничего не напутала. Поэтому кладу сюда получившийся скриптик имени azathoth для счастья будущих поколений, - вдруг у кого-то еще возникнут такие проблемы. Скрипт одевает броню на ГГ через диалог, и только после того, как через ga_give_item добавляешь эту самую броню в инвентарь ГГ на предыдущей фразе.

Neverwinter Script
//::    Проба. Одеть броню на ГГ.

void main()
{
    object oPC = GetPCSpeaker();
    object oItem = GetItemPossessedBy(oPC, "NW_CLOTH018");
   
  AssignCommand( oPC, ActionEquipItem(oItem, INVENTORY_SLOT_CHEST) );
 
}


azathoth, спасибо. Ты мне просто весь сценарий спас.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Marta
сообщение Jul 27 2009, 13:56
Сообщение #236


Level 1


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



Еще вопрос, - к azathoth, или еще к кому-нибудь.

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

Я попыталась приравнять гномов и хоббитов к дварфам, чтобы можно было в окошке sRase(String) выставить единицу, и не париться. Но, что ни напишу, все компилируется, но ни хрена не работает.

Сначала я просто написала

Neverwinter Script
else if(sRace == "gnome" || nRace == 1)


Не сработало. Оно и понятно, - выше по списку числятся дварфы, у которых тоже прописана цифра 1. Тогда я переписала:
Neverwinter Script
else if (sRace == "halfling" || nRace == 3)
    {
    return (nRacialType == 1 || nRacialType == 11);
    }

Опять не сработало. Пишу другой вариант:

Neverwinter Script
else if(sRace == "gnome" || nRace == 3)
    {
        nRacialType = GetRacialType(oPC);
        nCheck = RACIAL_TYPE_GNOME;
        return (nRacialType == 1 || nRacialType == 11);
    }

Не работает. Если я пишу гномам nRace == 1, это не влияет. Я думаю, может дело в субрасах. Пишу:
Neverwinter Script
else if(GetStringLeft(sRace, 13) == "lightfoothalf" || nRace == 15)
    {
    return (nRacialType == 1 || nRacialType == 11);
    }

И опять, блин, не работает. Вопрос, - что бы тут еще можно было написать, чтобы заработало, а то этот скрипт видит одних дварфов, как и стандартный скрипт gc_check_race_pc, и толку с него нет никакого. Почему не срабатывает return? Неясно. Если бы я разбиралась в скриптах, я бы, конечно, не мучила бы стандартный скрипт, а написала бы что-то вроде "дварфы, гномы, хоббиты == True, все остальные == False", но я вообще без понятия как и в какой форме такое пишут. Со стандартными скриптами иногда хоть что-то путное выходит. Так что, - в очередной раз, помогите, плиз, кто-нибудь.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jul 28 2009, 11:48
Сообщение #237


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

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



должно быть что-то такое:

Neverwinter Script
int nRacialType = GetRacialType(oPC);
return (nRacialType==RACIAL_TYPE_GNOME || nRacialType==RACIAL_TYPE_DWARF || nRacialType==RACIAL_TYPE_HALFLING);

эта конструкция вернет TRUE, если раса игрока одна из трех. А на какие условия втыкать работу этого блока - тебе виднее. Можно замутить что-то универсальное, чтобы из диалога передавался символьный код, например GDH, который понимался бы скриптом как гномы/дварфы/халфлинги. Но имхо под конкретный модуль проще сделать несколько общих скриптов. Если у тебя всегда такая комбинация карликов, то проще сделать для этого отдельный скрипт и не париться.

зы: не уверен в правильности расовых констант, пишу по памяти.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Marta
сообщение Jul 28 2009, 14:30
Сообщение #238


Level 1


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



Lex, прости, но вообще не поняла. Я же говорю, - я не скриптер, не программер, - я сценарист.

Мне что, писать

Neverwinter Script
// gc_check_race_PC_correct

int StartingConditional(string sRace)
{
    object oPC = GetPCSpeaker();
    int nRacialType = GetRacialType(oPC);
    return (nRacialType==RACIAL_TYPE_GNOME || nRacialType==RACIAL_TYPE_DWARF || nRacialType==RACIAL_TYPE_HALFLING);
}

?

Но если я пишу (string sRace), это предполагает, что будет окно sRase(String), - и что мне в это окно писать? А если я не пишу (string sRace), то что вместо него написать-то?

Или мне по-прежнему основываться на стандартном скрипте, и расписывать все расы, типа if(sRace == "dwarf" || nRace == 1) , но как? Какой смысл возвращать расу гномов к "RACIAL_TYPE_GNOME", уж не говоря о том, что в стандартном скрипте не int nRacialType = GetRacialType(oPC); , а int nRacialType = GetSubRace(oPC); . На этом мысль останавливается.

А что касается таких замороченных заклинаний, как "символьный код GDH", так на нашем болоте об этой темной некромантии и не слыхивали, и я таких словов вообще не знаю. Ты уж, пожалуйста, будь проще с народом.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jul 28 2009, 15:38
Сообщение #239


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

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



а ты не пиши (string sRace). И вместо него ничего не пиши. Для данного скрипта тебе вводные параметры из диалога не нужны.

Neverwinter Script
int StartingConditional()
{
    int nRacialType = GetRacialType(GetPCSpeaker());
    return (nRacialType==RACIAL_TYPE_GNOME || nRacialType==RACIAL_TYPE_DWARF || nRacialType==RACIAL_TYPE_HALFLING);
}


Цитата(Marta @ Jul 28 2009, 14:30) *
А что касается таких замороченных заклинаний, как "символьный код GDH", так на нашем болоте об этой темной некромантии и не слыхивали, и я таких словов вообще не знаю. Ты уж, пожалуйста, будь проще с народом.

я лишь имел ввиду передачу из диалога данных в виде строки "GHD", которая бы скриптом расценивалась как: "TRUE, если игрок Gnone, Halfling или Dwarf". Но сейчас я еще раз над этим подумал - плохая идея. Получится большой скрипт (разбор сторки на символы, анализ символов, формирование результата бинарным сложением для упрощения проверки и собственно сама проверка), и нужно будет каждый раз верно ставить буквы. Имхо проще несколько более простых скриптов без внешних параметров.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Marta
сообщение Jul 28 2009, 17:30
Сообщение #240


Level 1


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



Ес-с, работает. Не знала, что после int StartingConditional надо скобки оставлять :-). Может быть, в итоге я чему-то выучусь, и перестану уже тупить, но пока до этого далеко.
Спасибо огромное.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение Aug 3 2009, 15:46
Сообщение #241


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Общий вопрос. Известно, что Обсидиан отличается от Авроры интерфейсом и некоторыми функциями - я слышал про cutscenes и ActionSit. Я здесь не говорю про маппинг, который может отличаться сильно. Меня интересуют основные, традиционные функции скриптов Авроры. Годны ли они в целом? Иными словами, если я возьму типичный, средней сложности скрипт для Авроры с проверками пола, времени суток и т.п., или скрипт со spawn и уничтожением объектов, с установкой глобальных переменных, такого рода вещами, сколько из этого придется менять?

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Griffon
сообщение Aug 3 2009, 16:14
Сообщение #242


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

Класс: Страж Тьмы
Характер: True Neutral
Раса: Человек
МАСТЕР D&D



В целом скрипты не отличаются и их можно использовать в обоих редакторах. Полный список неработающих функций должен быть на офф форумею К слову, ActionSit одна из них. Более подробно расскажет комадна шарда БГ или Ванес, он тож активно переносил все на НВН2.

http://nwvault.ign.com/View.php?view=NWN2A...6#_Toc146633941

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение Aug 6 2009, 16:56
Сообщение #243


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Спасибо.

Еще вопрос: задавался ли кто-нибудь системой скриптов для изучения заклинаний (spell research)?

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Georgus
сообщение Aug 25 2009, 14:57
Сообщение #244


Level 1


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



Приветствую уважаемых мастеров. У меня такой вопрос - как сделать, чтобы после смерти персонаж возрождался не в месте гибели, а в указанном мною. Вопрос второй - как сделать чтобы после смерти персонаж вообще не воскрешался, а вылетала табличка из НВН2 (игра окончена, все свободны: загрузка или выход). Заранее спасибо.


З.Ы Да да, я уже знаю. Я НУБ и ламер=)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Griffon
сообщение Aug 26 2009, 15:25
Сообщение #245


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

Класс: Страж Тьмы
Характер: True Neutral
Раса: Человек
МАСТЕР D&D



Neverwinter Script
V1.1                  l  Ќ                                                                                                                          gui_death_respawn_self              Щ  mod_onplayerdeath                Щ  mod_onplayerrespawn              Щ  0  Ц    ?  E  †  // gui_death_respawn_self
/*
    NWN2 Default Death Screen 'Respawn' callback
*/

// BMA-OEI 7/20/06
// BMA-OEI 11/08/06 -- Close SCREEN_DEATH_DEFAULT
/*
  You can place your real respawn script in here or
  you can use it like I did and execute it on the player.
*/



#include "ginc_death"


void main()
{
    //ResurrectCreature( OBJECT_SELF );
    ExecuteScript("mod_onplayerrespawn",OBJECT_SELF);
    CloseGUIScreen( OBJECT_SELF, "SCREEN_DEATH_DEFAULT" );
}/*
    mod_onplayerdeath
*/

const string GUI_DEFAULT_DEATH_SCREEN = "SCREEN_DEATH_DEFAULT";

// Display death pop-up to oPlayer
void ShowDefaultDeathScreen( object oPlayer );

void main()
{
    object oPlayer = GetLastPlayerDied();   
    DelayCommand( 2.5f, ShowDefaultDeathScreen( oPlayer ) );
}

// Display death pop-up to oPlayer
void ShowDefaultDeathScreen( object oPlayer )
{
    DisplayGuiScreen( oPlayer, GUI_DEFAULT_DEATH_SCREEN, FALSE );
    //DisplayMessageBox( oPlayer, 0, GetStringByStrRef(181408), "gui_death_respawn_self", "", FALSE, "", 6603, "", 0, "" );
}/*
    mod_onplayerrespawn
*/

#include "nw_i0_plot"
#include "ginc_death"
#include "x0_i0_transport"

//::  Applies an XP and GP penalty
//::    to the player respawning
//::  object oDead - Player who died.
void ApplyPenalty(object oDead);
//::  Gets the tag of the destination waypoint
//::  object oDead - Player who died.
string GetDestinationTag(object oDead);
//::  Gets the respawning player
object GetRespawningPlayer();
//::  Gets the respawn point, if any
//::  sDestTag - tag of the destination waypoint
//::  oDead - Player who died
object GetRespawnPoint(string sDestTag, object oDead);

void main()
{
    //Create initial variables
    object oRespawner = GetRespawningPlayer();
    object oArea = GetArea(oRespawner);
    string sDestTag = GetDestinationTag(oRespawner);
    object oRespawnPoint = GetRespawnPoint(sDestTag, oRespawner);
    location lDeathSpot = GetLocation(GetLastRespawnButtonPresser());
    location lRespawnPoint;
   
    //Apply effects to PC
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectRe
surrection(),oRespawner);
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHe
al(GetMaxHitPoints(oRespawner)), oRespawner);
    RemoveEffects(oRespawner);
   
    //Apply death penalty
    ApplyPenalty(oRespawner);
   
    //Transport PC
    if (GetIsObjectValid(oRespawnPoint))
    {
        lRespawnPoint = GetLocation(oRespawnPoint);
        TransportToLocation(oRespawner,lRespawnPoint);
    }
   
    //Bring PC back to life
    DelayCommand(1.5,ResurrectCreature(oRespawner));
}

void ApplyPenalty(object oDead)
{
    location lDeathSpot = GetLocation(oDead);
    int nXP = GetXP(oDead);
    int nPenalty = 50 * GetHitDice(oDead);
    int nHD = GetHitDice(oDead);
    // * You can not lose a level with this respawning
    int nMin = ((nHD * (nHD - 1)) / 2) * 1000;

    int nNewXP = nXP - nPenalty;
    if (nNewXP < nMin)
      nNewXP = nMin;
    SetXP(oDead, nNewXP);
    int nGoldToTake =    FloatToInt(0.10 * GetGold(oDead));
    // * a cap of 10 000gp taken from you
    if (nGoldToTake > 10000)
    {
        nGoldToTake = 10000;
    }
    AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, TRUE));
    DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oDead, FALSE));
    DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oDead, FALSE));
}

string GetDestinationTag(object oDead)
{
    //You can go about determining where the respawn waypoint
    //is located a number of ways.  In here I have two examples.
    //    Determined by setting a string variable on the area called sRespawn
    //    Manually set it.
    string sTag = "";
    object oArea = GetArea(oDead);
    //Get tag based on area level variable
    sTag = GetLocalString(oArea,"sRespawnTag");
    //Check for tag and default to a module level variable
    if(sTag == "")
    {
        sTag = GetLocalString(GetModule(),"sRespawnTag");
    }
    //Manually set tag
    //sTag = "";
    return sTag;
}

object GetRespawningPlayer()
{
    //This should be OBJECT_SELF, however if not then
    //we can use the player that last pressed the respawn
    //button.
    object oPlayer = OBJECT_INVALID;
    oPlayer = OBJECT_SELF;
    //Make sure this is a PC
    if(!GetIsPC(oPlayer))
    {
        oPlayer = GetLastRespawnButtonPresser();
    }
    return oPlayer;
}

object GetRespawnPoint(string sDestTag, object oDead)
{
    //Get the waypoint object by using the destination
    //tag.  First we try for one in the current area by
    //using GetNearestObjectByTag, otherwise we jsut get
    //an object with that tag.
    object oRespawnPoint = OBJECT_INVALID;
    oRespawnPoint = GetNearestObjectByTag(sDestTag,oDead);
    if(!GetIsObjectValid(oRespawnPoint))
    {
        oRespawnPoint = GetWaypointByTag(sDestTag);
    }
    return oRespawnPoint;
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Aug 27 2009, 08:40
Сообщение #246


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

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



Грифон, ты опасен!
Подумай над своей реакцией, если бы я на твои ранние вопросы по скриптам так бы отвечал (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Aug 27 2009, 11:15
Сообщение #247


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

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



Lex, тогда парня надо отправлять сразу в тему по обучению скриптам. Через месяц выкладывать даваемое по кускам (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Georgus
сообщение Aug 27 2009, 12:46
Сообщение #248


Level 1


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



Хех, спасиб . Попробую разобраться в данном скрипте.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Griffon
сообщение Aug 27 2009, 13:35
Сообщение #249


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

Класс: Страж Тьмы
Характер: True Neutral
Раса: Человек
МАСТЕР D&D



Lex, я на то и рассчитывал, что гуру скриптинга сразу же прокомментируют, выкинут лишнее и вынесут вердикт. (IMG:style_emoticons/kolobok_light/biggrin.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Aug 27 2009, 14:45
Сообщение #250


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

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



Цитата(Griffon @ Aug 27 2009, 13:35) *
Lex, я на то и рассчитывал, что гуру скриптинга сразу же прокомментируют, выкинут лишнее и вынесут вердикт. (IMG:style_emoticons/kolobok_light/biggrin.gif)

я вердикт выше вынес: ты опаcен (IMG:style_emoticons/kolobok_light/smile.gif) )

по теме: если нужно ТОЛЬКО респ в какой-то точке (без штрафов и прочей фигни) или вообще его убрать - то 3/4 скрипта можно выкинуть.
А вот если планируется еще куча мелких фич, динамическое изменение места респауна и тд - то выкидывать придется не так уж и много.

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

14 страниц V  « < 8 9 10 11 12 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 23rd April 2024 - 23:52