• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Вопросы по скриптингу

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
  • Первое сообщение
  • #1
Прежде чем задавать вопросы, ознакомьтесь с документацией..
1) Читать онлайн
2) Архив с офлайн-версией(chm) во вложении
 

Вложения

  • Vam_tutor.rar
    171,6 KB · Просмотры: 574
Последнее редактирование модератором:

Мільтен

Участник форума
Регистрация
27 Июн 2008
Сообщения
862
Благодарности
427
Баллы
265
Речь идет о диалогах с безымянными неписями, использующих функцию AssignAmbientInfos. Диалоги написаны, присвоены всем непися гильдии "Гражданин" с номером голоса 1. Но в игре при попытке поговорить с безымянным неписем есть только дефолтная строчка "КОНЕЦ". Сидим вдвоем, думаем, что может не работать, пока получается не очень. Вполне возможно, что пропустили какую-нибудь мелочь.
 

Ur-tRall

Участник форума
Регистрация
16 Май 2009
Сообщения
4.100
Благодарности
2.123
Баллы
475
Да запутали один раз меня в личке с фоновыми диалогами. А так эти диалоги находяться у обыкновенных стандартных неписей, которые находятся в папке Story\B_AssignAmbientInfos. Если они стоят на месте, значит возможно ошибка при компиляции решения. Иногда нужно добавить несколько файлов при компиляции или декомпиляции. А так скорее всего видимо в связке файлов чего-то не хватает, а Соусер просто не выдаёт ошибку, а компилирует с таким багом.
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Хелдар, а можно увидеть файлы Gothic.src, папку B_AssignAmbientInfos и скрипты непесей? Так дело сдвинется с мертвой точки, а вот гадать на кофейной гуще... т.е. механизм фоновых диалогов всем понятен, значит где-то просто ошибка.
 

Хелдар

Участник форума
Регистрация
3 Июл 2012
Сообщения
2.450
Благодарности
780
Баллы
375
Помочь разрешить мою проблему, увы, никто не может, так что я просто создам новое решение. Спасибо тем, кто пытался помочь.
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Можешь перечислить какие файла ты менял я дома компильну, используя твой gothic.src?

Опять же уверен, что они просто у тебя не компилятся. Ты пробывал через спейсер компилить?
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Так вот скрипт колечка. Смотрим, разбираемся:
func void UnEquip_ItRi_Dex_Strg_001()
{
gof=gof-1;
Npc_ChangeAttribute(self,ATR_STRENGTH,-Ri_DexStrg_Strg);
Npc_ChangeAttribute(self,ATR_DEXTERITY,-Ri_DexStrg_Dex);
};

func void Equip_ItRi_Dex_Strg_001()
{
gof=gof+1;
if (gof>5)
{
EquipItem(hero, 900);
gof=gof-1;
}
else
{
Npc_ChangeAttribute(self,ATR_STRENGTH,Ri_DexStrg_Strg);
Npc_ChangeAttribute(self,ATR_DEXTERITY,Ri_DexStrg_Dex);
};

};

900 идешник колечка.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
и что с ним НЕтак. или так?
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
MEG@VOLT, так надо читать что выше написанно;).

Ладно формулирую задачу: как сделать так, что бы можно было одеть не более, например, пяти колец?

Скрипт кольца:

var int gof;
instance ItRi_Dex_Strg_001(C_Item)
{
id = 900;
name = NAME_Ring;
mainflag = ITEM_KAT_MAGIC;
flags = ITEM_KAT_RING_E;
value = Value_Ri_DexStrg;
visual = "ItRi_Dex_Strg_01.3ds";
visual_skin = 0;
material = MAT_METAL;
on_equip = Equip_ItRi_Dex_Strg_001;
on_unequip = UnEquip_ItRi_Dex_Strg_001;
description = "Кольцо власти";
text[2] = NAME_Bonus_Str;
count[2] = 4;
text[3] = NAME_Bonus_Dex;
count[3] = 4;
text[5] = NAME_Value;
count[5] = value;
inv_zbias = INVCAM_ENTF_RING_STANDARD;
inv_rotz = INVCAM_Z_RING_STANDARD;
inv_rotx = INVCAM_X_RING_STANDARD;
};
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.169
Баллы
340
EquipItem(hero, 900);
gof=gof-1;

не совсем понял, зачем отнимать значение переменной после экипировки предмета?
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
hell9999, необходимо вместо EquipItem(hero, 900) поставить функцию, которая будет деэкипировать и тогда все будет работать. Как выглядит эта функция?
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.169
Баллы
340
Давно уже не скриптил, поэтому могу и ошибаться, но примерно вот так будет:

if (gof<5)
{
Npc_ChangeAttribute(self,ATR_STRENGTH,Ri_DexStrg_S trg);
Npc_ChangeAttribute(self,ATR_DEXTERITY,Ri_DexStrg_ Dex);
};
else
{
UnEquip_ItRi_Dex_Strg_001()
};
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Не Тема так работать не будет - уже проверено;). (заметь у меня функция UnEquip_ItRi_Dex_Strg_001 стоит до функции Equip_ItRi_Dex_Strg_001 так как я уже проывал сделать как ты написал). Функция UnEquip_ItRi_Dex_Strg_001() вызывается движком при деэкипировке предметом;), а знчит надо принудитель деэкипировать, но какая функция это делает?
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.169
Баллы
340
Ну есть один вариант, через удаление предмета и создания его в инвентаре. Работает. Только есть у него один неприятный баг. Если попробовать экипировать предмет и тут-же его выбросить, получится на земле один предмет и такой-же в инвентаре. Читерство.
Думаю, нужно Сата трясти, чтобы выдал доступ к двигу, покопать, откуда растут ноги в двиге у проверок аттрибутов при экипировке оружия. И по аналогии слепить.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
если попробовать с небольшим уклоном на прикол.
func void UnEquip_ItRi_Dex_Strg_001()
{
gof=gof-1;
Npc_ChangeAttribute(self,ATR_STRENGTH,-Ri_DexStrg_Strg);
Npc_ChangeAttribute(self,ATR_DEXTERITY,-Ri_DexStrg_Dex);
};

func void Equip_ItRi_Dex_Strg_001()
{
gof=gof+1;
if (gof>5)
{
AI_DropItem(hero, 900);
Print("У меня же не 6 пальцев...")
;
gof=gof-1;
}
else
{
Npc_ChangeAttribute(self,ATR_STRENGTH,Ri_DexStrg_Strg);
Npc_ChangeAttribute(self,ATR_DEXTERITY,Ri_DexStrg_Dex);
};

};

900 идешник колечка.
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.169
Баллы
340
Интересный подход кстати. :D
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Уж лучше через экст=(.
 

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
Ilot,
Уж лучше через экст.
Как по мне - красивше, проще и быстрее вариантом MEG@VOLT. Еще и с приколом. :D
Фактически надо убрать только отображение в инвентаре что лишний предмет одет. Все равно эффектов больше 5 штук не получишь по скрипту. Да и на руках врядли 5 колец будет видно. Ради этого прикручивать екст..... ::)
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
665
Баллы
245
Что-то вот решил задать такой вопрос, больше базовый. С какой целью пираньи создавали кучи инстанций разного рода итемок, если можно сделать прототип и от него клонировать. Причем в аддоне они начали уже использовать прототипы.
Есть ли в этом тайный смысл или это полностью равноценные реализации, ибо это сокращение размеров текста достаточно большое.
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Эмм Лех не совсем понятно. В скриптах все итемки описываются посредством одного класса или я не прав?
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
665
Баллы
245
Эмм Лех не совсем понятно. В скриптах все итемки описываются посредством одного класса или я не прав?
Нет, я не про это. Например, можно сделать прототип брони, и от неё клонировать инстанции, изменяя, что тебе уже нужно (модель, подпись, хары), что в принципе я и делал. А пираньи прототип использовали только в аддоне, например, сделав клинок Белиара.

Я так-то уже многое перевёл на прототипы и клоны, просто вот подумал про сакральный смысл.
 
Сверху Снизу