Вернуться   Форум команды Magic Team > Создание модов > Модостроение к Gothic

Важная информация

Модостроение к Gothic Как делаются моды к Готике...

Ответ
 
Опции темы Опции просмотра
Старый 16.11.2006, 15:23   #31
Готоман
Ученик
 
Аватар для Beckham
 
Регистрация: 09.11.2006
Адрес: Днепропетровск
Сообщений: 189
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Beckham с помощью ICQ
По умолчанию Скриптинг

Такая фича: при декомпеляции gothic.dat из готики 1 выдает до фига ерроров,
но декомпеляция завершается, а при собственно компеляции(неизмененных этих же декомпелированых файлов) выдает ту же кучу ерроров + фатал еррор (типа нашел более 50 ошибок) и компеляция останавливается так и не создав скомпелированный файл.
Что делать, это в 1-й готике так и есть или это я неправильно что-то делаю?
Beckham вне форума   Ответить с цитированием
Старый 16.11.2006, 19:51   #32
Администратор
Мастер
 
Аватар для DEDROIT
 
Регистрация: 31.01.2006
Адрес: Москва
Сообщений: 1,383
Сказал(а) спасибо: 35
Поблагодарили 230 раз(а) в 67 сообщениях
Отправить сообщение для DEDROIT с помощью ICQ
По умолчанию Скриптинг

Beckham
Да,это так и есть.Я когда компилил скрипты тоже такое было,нужно короч вручную править ошибки,у меня были где-то исправленные скрипты,но не знаю найду ли я их.
Ну вобщем если что обращайся.
DEDROIT вне форума   Ответить с цитированием
Старый 19.11.2006, 00:57   #33
Новичок
 
Аватар для scorp007
 
Регистрация: 19.10.2006
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию Скриптинг

Сделал тут предмет один, втыкайте:

instance ItPo_MegDrin(C_Item) //Это все уже расписывалось, повторять не буду.
{
name = "???";
mainflag = ITEM_KAT_POTIONS;
flags = ITEM_MULTI;
value = Value_MegaDrink;
visual = "ItPo_Perm_Mana.3ds";
material = MAT_GLAS;
on_state[0] = UseItPo_MegDrin;
scemeName = "POTIONFAST";
wear = WEAR_EFFECT;
effect = "SPELLFX_ITEMGLIMMER";
description = name;
text[3] = "Эффект неизвестен.";
};


func void UseItPo_MegDrin()
{
if ((hero.guild == GIL_DMT) && (hero.level >= 25)) //Если гильдия ГГ - ищущий и уровень не ниже 25
{
Npc_SetTrueGuild (self, GIL_ORC); //Гильдия меняется на "орк"
self.guild = GIL_ORC;
B_PlayerFindItem (ITAR_Raven_Add, 1); //ГГ находит новую броно
AI_EquipArmor (self,ITAR_Raven_Add); //ГГ одевает эту броню
Wld_PlayEffect ("SPELLFX_Fear", self, self, 0, 0, 0, FALSE); //Проигрывается визуальный эффект
Snd_Play ("MFX_Firestorm_Cast"); //Проигрывается звуковой эффект
if ((self.attribute[ATR_STRENGTH] >= 50) && (self.attribute[ATR_STRENGTH] < 75)) //Если сила то 50
до 74 {
B_RaiseAttribute (self, ATR_STRENGTH, 5); //Сила повышается на 5 едениц. Далее по аналогии.
}
else if ((self.attribute[ATR_STRENGTH] > 75) && (self.attribute[ATR_STRENGTH] <= 100))
{
B_RaiseAttribute (self, ATR_STRENGTH, 10);
}
else if ((self.attribute[ATR_STRENGTH] > 100) && (self.attribute[ATR_STRENGTH] <= 125))
{
B_RaiseAttribute (self, ATR_STRENGTH, 15);
}
else if ((self.attribute[ATR_STRENGTH] > 125) && (self.attribute[ATR_STRENGTH] <= 150))
{
B_RaiseAttribute (self, ATR_STRENGTH, 20);
Mdl_ApplyOverlayMds (self, "HUMANS_SPRINT.MDS");
}
else if (self.attribute[ATR_STRENGTH] > 150) //Особый случай: если сила ГГ=150
{
B_RaiseAttribute (self, ATR_STRENGTH, 25);
Mdl_ApplyOverlayMds (self, "HUMANS_SPRINT.MDS"); //ГГ получает постоянное ускорение.
};
if ((self.attribute[ATR_DEXTERITY] >= 50) && (self.attribute[ATR_DEXTERITY] < 75)) //Тоже, только с ловкостью.
{
B_RaiseAttribute (self, ATR_DEXTERITY, 5);
Npc_SetTalentSkill (self, NPC_TALENT_ACROBAT, 1);
}
else if ((self.attribute[ATR_DEXTERITY] > 75) && (self.attribute[ATR_DEXTERITY] <= 100)) //Сдесь ГГ получает Ещё акробатику.
{
B_RaiseAttribute (self, ATR_DEXTERITY, 10);
Npc_SetTalentSkill (self, NPC_TALENT_ACROBAT, 1);
}
else if ((self.attribute[ATR_DEXTERITY] > 100) && (self.attribute[ATR_DEXTERITY] <= 125))
{
B_RaiseAttribute (self, ATR_DEXTERITY, 15);
Npc_SetTalentSkill (self, NPC_TALENT_ACROBAT, 1);
}
else if ((self.attribute[ATR_DEXTERITY] > 125) && (self.attribute[ATR_DEXTERITY] <= 150))
{
B_RaiseAttribute (self, ATR_DEXTERITY, 20);
}
else if (self.attribute[ATR_DEXTERITY] > 150)
{
B_RaiseAttribute (self, ATR_DEXTERITY, 25);
};
if ((self.attribute[ATR_HITPOINTS_MAX] >= 100) && (self.attribute[ATR_HITPOINTS_MAX] < 150)) //Хитпоинты.
{
B_RaiseAttribute (self, ATR_HITPOINTS_MAX, 15);
}
else if ((self.attribute[ATR_HITPOINTS_MAX] > 150) && (self.attribute[ATR_HITPOINTS_MAX] <= 200))
{
B_RaiseAttribute (self, ATR_HITPOINTS_MAX, 30);
}
else if ((self.attribute[ATR_HITPOINTS_MAX] > 200) && (self.attribute[ATR_HITPOINTS_MAX] <= 250))
{
B_RaiseAttribute (self, ATR_HITPOINTS_MAX, 45);
}
else if ((self.attribute[ATR_HITPOINTS_MAX] > 250) && (self.attribute[ATR_HITPOINTS_MAX] <= 300))
{
B_RaiseAttribute (self, ATR_HITPOINTS_MAX, 60);
}
else if ((self.attribute[ATR_HITPOINTS_MAX] > 300) && (self.attribute[ATR_HITPOINTS_MAX] <= 350))
{
B_RaiseAttribute (self, ATR_HITPOINTS_MAX, 75);
}
else if ((self.attribute[ATR_HITPOINTS_MAX] > 350) && (self.attribute[ATR_HITPOINTS_MAX] <= 400))
{
B_RaiseAttribute (self, ATR_HITPOINTS_MAX, 90);
}
else if (self.attribute[ATR_HITPOINTS_MAX] > 400) //Если НР больше 400
{
B_RaiseAttribute (self, ATR_HITPOINTS_MAX, 100);
self.protection[PROT_EDGE] += 15; //ГГ получает +15 к защите от оружия дальнего и ближнего боя
self.protection[PROT_BLUNT] += 15;
self.protection[PROT_POINT] += 15;
};
if ((self.attribute[ATR_MANA_MAX] >= 75) && (self.attribute[ATR_MANA_MAX] < 100)) //С маной тоже.
{
B_RaiseAttribute (self, ATR_MANA_MAX, 10);
}
else if ((self.attribute[ATR_MANA_MAX] > 100) && (self.attribute[ATR_MANA_MAX] <= 125))
{
B_RaiseAttribute (self, ATR_MANA_MAX, 20);
}
else if ((self.attribute[ATR_MANA_MAX] > 125) && (self.attribute[ATR_MANA_MAX] <= 150))
{
B_RaiseAttribute (self, ATR_MANA_MAX, 30);
}
else if ((self.attribute[ATR_MANA_MAX] > 150) && (self.attribute[ATR_MANA_MAX] <= 175))
{
B_RaiseAttribute (self, ATR_MANA_MAX, 40);
}
else if ((self.attribute[ATR_MANA_MAX] > 175) && (self.attribute[ATR_MANA_MAX] <= 200))
{
B_RaiseAttribute (self, ATR_MANA_MAX, 50);
}
else if ((self.attribute[ATR_MANA_MAX] > 200) && (self.attribute[ATR_MANA_MAX] <= 250))
{
B_RaiseAttribute (self, ATR_MANA_MAX, 60);
}
else if (self.attribute[ATR_MANA_MAX] > 250)
{
B_RaiseAttribute (self, ATR_MANA_MAX, 70);
self.protection[PROT_MAGIC] += 15; //Защита от огня и магии
self.protection[PROT_FIRE] += 15;
};
if ((self.HitChance[NPC_TALENT_1H] >= 60) && (self.HitChance[NPC_TALENT_1H] < 70)) //Владение одноручником
{
B_AddFightSkill (self, NPC_TALENT_1H, 5);
}
else if ((self.HitChance[NPC_TALENT_1H] > 70) && (self.HitChance[NPC_TALENT_1H] <= 80))
{
B_AddFightSkill (self, NPC_TALENT_1H, 10);
}
else if (self.HitChance[NPC_TALENT_1H] > 80)
{
B_AddFightSkill (self, NPC_TALENT_1H, 20);
};
if ((self.HitChance[NPC_TALENT_2H] >= 60) && (self.HitChance[NPC_TALENT_2H] < 70)) //Двуручником
{
B_AddFightSkill (self, NPC_TALENT_2H, 5);
}
else if ((self.HitChance[NPC_TALENT_2H] > 70) && (self.HitChance[NPC_TALENT_2H] <= 80))
{
B_AddFightSkill (self, NPC_TALENT_2H, 10);
}
else if (self.HitChance[NPC_TALENT_2H] > 80)
{
B_AddFightSkill (self, NPC_TALENT_2H, 20);
};
if ((self.HitChance[NPC_TALENT_BOW] >= 60) && (self.HitChance[NPC_TALENT_BOW] < 70)) //Луком
{
B_AddFightSkill (self, NPC_TALENT_BOW, 5);
}
else if ((self.HitChance[NPC_TALENT_BOW] > 70) && (self.HitChance[NPC_TALENT_BOW] <= 80))
{
B_AddFightSkill (self, NPC_TALENT_BOW, 10);
}
else if (self.HitChance[NPC_TALENT_BOW] > 80)
{
B_AddFightSkill (self, NPC_TALENT_BOW, 20);
};
if ((self.HitChance[NPC_TALENT_CROSSBOW] >= 60) && (self.HitChance[NPC_TALENT_CROSSBOW] < 70)) //Арбалетом
{
B_AddFightSkill (self, NPC_TALENT_CROSSBOW, 5);
}
else if ((self.HitChance[NPC_TALENT_CROSSBOW] > 70) && (self.HitChance[NPC_TALENT_CROSSBOW] <= 80))
{
B_AddFightSkill (self, NPC_TALENT_CROSSBOW, 10);
}
else if (self.HitChance[NPC_TALENT_CROSSBOW] > 80)
{
B_AddFightSkill (self, NPC_TALENT_CROSSBOW, 20);
};
if (self.HitChance[NPC_TALENT_1H] > self.HitChance[NPC_TALENT_2H]) //Если владение одноручным оружием больше владения двуручным
{
B_PlayerFindItem (ItMw_BeliarWeapon_1H_21, 1); //В инвентаре появляется этот мечь
AI_EquipBestMeleeWeapon (self); //Одевается лучшее оружие ближнего боя.
};
if (self.HitChance[NPC_TALENT_2H] > self.HitChance[NPC_TALENT_1H])
{
B_PlayerFindItem (ItMw_BeliarWeapon_2H_21, 1);
AI_EquipBestMeleeWeapon (self);
};
if (self.HitChance[NPC_TALENT_2H] == self.HitChance[NPC_TALENT_1H])
{
B_PlayerFindItem (ItMw_BeliarWeapon_2H_21, 1);
AI_EquipBestMeleeWeapon (self);
};
}
else //В другом случае
{
Wld_PlayEffect ("SPELLFX_Firerain", self, self, 0, 0, 0, FALSE); //Проигрывается Эффект "огненный дожь"
AI_PlayAni (self, "S_FIRE_VICTIM");
Wld_PlayEffect ("VOB_MAGICBURN", hero, hero, 0, 0, 0, FALSE); //и еще один, поджигающий ГГ
B_Say (self, self, "$Dead");
AI_StopFX (self, "VOB_MAGICBURN");
Npc_ChangeAttribute (self, ATR_HITPOINTS, -self.attribute[ATR_HITPOINTS_MAX]); //Из НР ГГ вычетается максимальное количество НР.
Npc_StopAni (self, "S_FIRE_VICTIM");
};
};

Такого оружия и доспехов в игре нет - они из моего мода. Можно вставить другие.

__________________
Сон разума рождает чудовищ.
scorp007 вне форума   Ответить с цитированием
Старый 22.11.2006, 16:08   #34
Готоман
Ученик
 
Аватар для Beckham
 
Регистрация: 09.11.2006
Адрес: Днепропетровск
Сообщений: 189
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Beckham с помощью ICQ
По умолчанию Скриптинг

scorp007
------------------------------------------------------------------------------------------------------------------------------------------------------------------------Слушай а на фига такоя бутылочка нужна, если типа эффект "???" лучше сделай не приписку эффекта к уровню аттрибута, а сделай реально Random-effect
среди готовых функций Готики есть random-генератор, по нему и сделай рэндом-еффект--------------------------------------------------------------------------------------
------------------------------------------------------------------------------------

У меня лично вопрос такой: Я создавал кольцо, которое призывает монстра, который практически бессмертен, но наносит мало урона.
Так вот призывается и отзывается он функциями требующими не тип переменной instance, а тип int(вроде производной типа instance)
Так вот призывается нормально, при вызове функции удаления из мира (removeNPC, или что-то вроде того) выдается ошибка несовпадения типов.
Как реализовать, чтоб при снятии предмета монмтр исчезал???
Beckham вне форума   Ответить с цитированием
Старый 22.11.2006, 22:59   #35
Новичок
 
Аватар для scorp007
 
Регистрация: 19.10.2006
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию Скриптинг

Beckham
У меня и так все напитки рандомно атрибуты плюсуют:

instance ItPo_Perm_Mana(C_Item)
{
name = NAME_Trank;
mainflag = ITEM_KAT_POTIONS;
flags = ITEM_MULTI;
value = Value_ManaMaxElixier;
visual = "ItPo_Perm_Mana.3ds";
material = MAT_GLAS;
on_state[0] = UseItPo_Perm_Mana;
scemeName = "POTIONFAST";
wear = WEAR_EFFECT;
effect = "SPELLFX_MANAPOTION";
description = "Эликсир духа";
text[1] = "3-10";
count[1] = ManaMax_Elixier;
text[5] = NAME_Value;
count[5] = Value_ManaMaxElixier;
};


func void UseItPo_Perm_Mana()
{
var int value_haotic;
value_haotic = Hlp_Random (90);
if ((value_haotic >= 0) && (value_haotic < 30))
{
B_RaiseAttribute (self, ATR_MANA_MAX, ManaMax_Elixier);
Npc_ChangeAttribute (self, ATR_MANA, ManaMax_Elixier);
}
else if ((value_haotic > 30) && (value_haotic <= 60))
{
B_RaiseAttribute (self, ATR_MANA_MAX, 7);
Npc_ChangeAttribute (self, ATR_MANA, 7);
}
else if ((value_haotic > 60) && (value_haotic <= 90))
{
B_RaiseAttribute (self, ATR_MANA_MAX, 3);
Npc_ChangeAttribute (self, ATR_MANA, 3);
}
else if (value_haotic == 30)
{
B_RaiseAttribute (self, ATR_MANA_MAX, 10);
Npc_ChangeAttribute (self, ATR_MANA, 10);
};
};

А эта бутылочка повышает хорошо только то, что было на достаточно высоком уровне до ее выпивания и имеет ограничения по использованию.
__________________
Сон разума рождает чудовищ.
scorp007 вне форума   Ответить с цитированием
Старый 06.01.2007, 20:06   #36
Готоман
Ученик
 
Аватар для Beckham
 
Регистрация: 09.11.2006
Адрес: Днепропетровск
Сообщений: 189
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Beckham с помощью ICQ
По умолчанию Скриптинг

Вот недавно такого наскриптил, что аж смешно.
Делаю диалог, после которого непись отводит героя в определенное место, но вот блин лажа: когда на пути встречается орк и атакует идущего впереди непися, тот резко разворачивается и начинает атаковать героя, хотя тот только послушно за ним шел.
Вот вообще не пойму в чем дело, вроде бы и поставил НПС как парти-мембер и гильдию для надежности одинаковую поставил и даже тип НПС поставил friend, но все та же фигня при чем когда он разбирается с героем или того просто орк убивает все становится как надо и непись идет с орком воевать.
Может кто подскажет в чем может быть проблема?
Beckham вне форума   Ответить с цитированием
Старый 06.01.2007, 22:55   #37
Администратор
Мастер
 
Аватар для DEDROIT
 
Регистрация: 31.01.2006
Адрес: Москва
Сообщений: 1,383
Сказал(а) спасибо: 35
Поблагодарили 230 раз(а) в 67 сообщениях
Отправить сообщение для DEDROIT с помощью ICQ
По умолчанию Скриптинг

Beckham
Приведи скриптик диалога,может там собака зарыта.Хотя по тому,что ты написал вроде всё правильно.
DEDROIT вне форума   Ответить с цитированием
Старый 09.01.2007, 20:13   #38
Готоман
Ученик
 
Аватар для Beckham
 
Регистрация: 09.11.2006
Адрес: Днепропетровск
Сообщений: 189
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Beckham с помощью ICQ
По умолчанию Скриптинг

DEDROIT
Да похоже таки нет ошибки. Дело в том, что я это делаю на Г1, так вот с орками там явно разрабы набокали. Дело в том, что других монстров непись убивает без проблем, а вот именно орки создают такие проблемы. При чем не важно как именно свести непися и орков: то ли НПС просто стоит, а ты к нему бежишь и за тобой орки, то ли ты его ведешь к оркам.
Более того, если стоит группа орков и ГГ идет их атаковать, они естественно все его бьют, но вот если в это время вселиться в орка (читом естественно), то орки утрачивают интерес к ГГ и идут тебя мочить (когда ты вселился в орка).
В принципе там ведь в первой готике и в оригинале вроде не было подобных квестов.
То есть когда ГГ вместе с кем то убивал орков. Ну было похожее на кладбище орков, но там ведь ты присоединялся к идолу, когда орки, с которыми он воевал уже убиты, а когда он за ГГ шел, то он сам их не атаковал.
Beckham вне форума   Ответить с цитированием
Старый 26.01.2007, 16:45   #39
Новичок
 
Аватар для Nevedim
 
Регистрация: 26.01.2007
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию Скриптинг

Такой вопрос:
Диалоги в будующем моде можно сделать только скриптингом или есть дуругая программа, есть совет?
Nevedim вне форума   Ответить с цитированием
Старый 26.01.2007, 17:06   #40
Администратор
Мастер
 
Аватар для DEDROIT
 
Регистрация: 31.01.2006
Адрес: Москва
Сообщений: 1,383
Сказал(а) спасибо: 35
Поблагодарили 230 раз(а) в 67 сообщениях
Отправить сообщение для DEDROIT с помощью ICQ
По умолчанию Скриптинг

Nevedim
Ну диалоге естественно пишутся скриптингом,есть ещё некоторые програмы,типо миранды,там говорят намного быстрее идёт процесс!
DEDROIT вне форума   Ответить с цитированием
Ответ

Метки
доп.программы, полезная информация, скриптинг, советы, ссылки


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 04:04. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Magic Team© 2006-2013, The development and modification