Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форумы Seaward'а _ Модификации для игр на ядре Storm 2.x _ Для программистов

Автор: igor_pol Aug 24 2005, 21:00

Первое что я хотел написать "АДМИНЫ!!!!" НЕ ЗВЕРЕЙТЕ ЗА "НЕНУЖНУЮ ТЕМУ"
**************************************************
на вопрос зачем создал эту тему отвечу так "Я например НЕ ПРОСТО ЮЗВЕРЬ А КОЕ ЧТО И САМ НАПИСАТЬ МОГУ.
И хотел бы чтобы на форуме была тема для тех кто сам хочет что-то добавить в игру.
На сайте аддона Алекс вікинул ссылку на описание скриптов ПКМ на английском.
Я хотел бы узнать где можно нарыть больше инфы по этом скриптам.
И кстати на каком языке они пишуться.
Если кто-то знает ----- пишите.
И вообще всем програмерам на форуме нужна своя тема.
так что ГОСПОДА ПРОГРАМЕРЫ ВАЛИТЕ СЮДА !!!!
Может из этого что небудь интересное выйдет!!!!!!(Если тему не УТРУТ)
Жду сообщений (может у когот есть идеи на эту тему )

Автор: Kukurusina Aug 24 2005, 21:05

не надо так кричать, тему переместил, тут она более уместна

Автор: igor_pol Aug 24 2005, 21:49

Алекс! хотел спросить .
Нужна л какая-то помощь.
1.Поиск ресурсов (текстуры,модели, инфа итд)
2.Обработка изображений , текстур (Adobe Photoshop ) и пр.
3. Возможно создание каких то модулей??????????
НУ КОРОЧЕ ЕСЛИ НУЖНА ЛЮБАЯ ПОМОЩЬ ВСЕГДА БУДУ РАД ПОМОЧЬ ЧЕМ СМОГУ.....
ПИШИ в тему или не мыло : igorpolyanovskiy@mail.ru

Автор: Wilgreess Aug 24 2005, 21:50

Цитата(igor_pol @ Aug 24 2005, 10:00 PM)
Первое что я хотел написать "АДМИНЫ!!!!" НЕ ЗВЕРЕЙТЕ ЗА "НЕНУЖНУЮ ТЕМУ"
mlja.gifmlja.gifmlja.gifmlja.gifmlja.gifmlja.gifmlja.gifmlja.gifmlja.gif
на вопрос зачем создал эту тему отвечу так "Я например НЕ ПРОСТО ЮЗВЕРЬ А КОЕ ЧТО И САМ НАПИСАТЬ МОГУ.
И хотел бы чтобы на форуме была тема для тех кто сам хочет что-то добавить в игру.
На сайте аддона Алекс вікинул ссылку на описание скриптов ПКМ на английском.
Я хотел бы узнать где можно нарыть больше инфы по этом скриптам.
И кстати на каком языке они пишуться.
Если кто-то знает ----- пишите.
И вообще всем програмерам на форуме нужна своя тема.
так что ГОСПОДА ПРОГРАМЕРЫ ВАЛИТЕ СЮДА !!!!   
Может из этого что небудь интересное выйдет!!!!!!(Если тему не УТРУТ)
Жду сообщений (может у когот есть идеи на эту тему )
*


Хорошая тема, хочу с тобой поговорить, свяжись со мной по асе 306-198-132 или по мылу semcpop@rambler.ru

Автор: igor_pol Aug 24 2005, 21:58

Забыл сказать!
У меня выделенный канал инета .
Скорость 20-100кб в сек(Реально)
Так что если надо может чем помогу.
БЕСПЛАТНО КОНЧНО.
Сильно мне Аддон нравиься(Прошел все версии полностью + 5 раз ПКМ с разными заплатками Твоими и Моргана)
Игру знаю неплохо.
если надо протестить какой то отдельный сектор (квест , вредный баг или еще что я без проблем помогу) .
Я понимаю что ты можешь все делать сам но как програмист знаю сколько на ЭТО НАДО ВРЕМЕНИ.
Так что пиши.

Автор: Zeleboba Sep 22 2005, 21:41

Вот написал парочку туториалов писать мне некогда и если что извените за неграмотность



И ещё выкладывайте побольше туториалов

Автор: Eddy Sep 23 2005, 18:02

В ПКМ синтаксис от С++, структуры похожи на С99.

http://legend.seaward.ru/
В полезных ссылках есть кое-что по скриптам. А вообще для тренировки надо скачать mod_4v.

Автор: Zeleboba Sep 23 2005, 23:33

И ещё люди я заметил тамую способность что мне лень писать и могу вам прислать туториал переведённый в сократе если хотите голову поломать то могу выложить нада?




И ещё вопрос как поняли чё нибудь дальше мне выкладывать свои произведения илинет unsure.gif

Автор: igor_pol Sep 28 2005, 11:17

Все что есть по скриптам PLEEEEEASE мне на мыло igor_polyanovskiy@mail.ru.
Кстати спасибо за туториал (script.rar).
ЖДУ

Автор: Zeleboba Oct 3 2005, 01:06

Я бы перевёл но ктобы странички ети все на англицком скинул тока все чтоб
Как странички будут так и перевод будет

Автор: Лебедев Oct 8 2005, 10:03

Спасибо тебе Zeleboba за твой труд. smile.gif smile.gif smile.gif
Когда переведёшь сообщи, а...

Автор: San3000 Oct 9 2005, 17:58

Zeleboba лудше перевиди(если есть) сначало создание квестов! Я уже 2 дня парюсь...

Автор: Zeleboba Oct 11 2005, 13:42

Квесты вещь сложная я сам в них неразобрался тока диалоговые немного умею делать например денег прибавить там
А нащёт перевода могёте пока ненадолго забыть во первых у меня сократ полетел тоесть неработает а во вторых у меня нету уже Пиратов я компьютер форматнул он уменя перестал работать а город у нас мааленький Усинск называется и непродаётся нигде мож кто занесёт тады перевод начнётся и то может быть т.к я учусь последний год 9-й класс заканчиваю сами понимаете экзамины всякие разные тама времени пока нету так что кто живёт в усинске тащите мне игру и будет вам перевод или на болванке пришлите по почте желательно 2 версии игры т.к с аддоном у меня тожо нету а поиграть в новую версию так и не удалось вобщем кто сможет прислать пришлите плз

Автор: francisc Oct 29 2005, 18:08

Кто-нибудь добовлял:
1. корабли у фортов;
2.каюту капитана и трюм.
Если да,то скажите какие файлы за это отвечают.

Автор: ALexusB Oct 30 2005, 21:12

Я добавлял - файлы все новые, в стандарте нет, сам писал smile.gif

Автор: Zeleboba Oct 31 2005, 01:11

Народ дайте ссылочку на сократ интернет чтоб страницы переводить желательно с кряком я вам переведу тама гдето было написанно про новые скрипты тоесть как их делать

Автор: delfin_ Nov 4 2005, 21:42

http://pascal.dax.ru/files/books/TurboPascal/index.html ссылка для начинающих.

Автор: francisc Nov 5 2005, 09:52

А это для чего?В пкм скрипты с С++ сходны.

Автор: igor_pol Nov 5 2005, 15:26

Цитата(francisc @ Nov 5 2005, 09:52)
А это для чего?В пкм скрипты с С++ сходны.
*


ПаскаКАль это совсем НЕ ТО
Надо С++
И совсем они не похожи....
Не советую и читать .....
Дурная трата времени (если для ПКМ) smile.gif

Автор: TAHAT Nov 5 2005, 15:29

вовсе нет... Парадигмы ООП никак не отличаются в языках высокого уровня, будь то Pascal, C++ или любой другой... Достаточно знать синтаксис , ОПП и некоторые ньюансы работы с параметрами фукций... все остальное придет, когда ручками попробуешь... wink.gif

Автор: ALexusB Nov 5 2005, 17:39

ПКМ не ООП - оно тут не поможет, а будет только мешать
Приемы дедушки фортрана (процедурное программирование) - ваш лучший друг.
А так же древовидные структуры из теории ЭС и понимание прерываний (да хоть из ДОС)

Не нужно мерять скрипты мерками языка высокого уровня. ПКМ - лишь севый (не С++) синтаксис и не более. Это свой собственный подход к кодингу (рпгово-квестовый)

Нужно предстваление о типовых операциях (иф, вайл, фор, ++ и тд) и логическое мышление - остальное и есть создание модов.

Автор: delfin_ Nov 6 2005, 01:11

Цитата(igor_pol @ Nov 5 2005, 14:26)
ПаскаКАль это совсем НЕ ТО
Надо С++
И совсем они не похожи....
Не советую и читать .....
Дурная трата времени (если для ПКМ)  smile.gif
*


Т.е. ты предлогаешь сразу переходить на С++??? Помоему, для начало стоит начинать с самого простого. Наинать с С++, да ещё и и самому, по книжкам, это очень геморно. И потом начинать с объектного программирования не научившись процедурному - это всё равно что учиться на самолёте фигуры высшего пилотажа делать, не научившись взлетать и садиться - ИМХО.
==============================================
Вот ещё пару ссылок по delphi и С++.

http://forum.tehnofil.ru/viewtopic.php?t=2366

http://sscdimon.nm.ru/obuch/

Автор: Николас Шарп Nov 18 2005, 22:48

Хотелось бы побольше узнать о редактировании файла quests_reaction.c и создании своей сюжетной линии!

Автор: ALexusB Nov 18 2005, 22:57

Для начала она должна быть в головах,на бумажкай, в схемах, диалогах и сценарии - тогда половина дела сделано и понимание как и что приходит. Остается выискивать возможности, а брать их где?
Конечно, смотреть как сделаны другие квесты!! Детский набор кубиков - сделай сам.
Если кубика нужно цвета нет, тут сложнее - нужно делать самим или сценарий менять. Кому что проще и какая конечная цель.

ЗЫ Если кто-то думает, что не изучая чужой код, он сможет, придя с улицы, чего-то достичь, то кодером такой человек никогда не станет - закон программизма.

Автор: Zeleboba Nov 18 2005, 23:09

Цитата(Николас Шарп @ Nov 18 2005, 22:48)
Хотелось бы побольше узнать о редактировании файла quests_reaction.c и создании своей сюжетной линии!
*


Ты лучше сначала сделать попробуй переход к ростовщику а пото уже переходи на чтото другое лучше на диалоги а после диалогов (Как создаш хотяб один) можеш зделать небольшой квест а уж потом заглядывайся на файл с квестами
Хотя лучше сначала сделай новый корабль на старой модели





P.S Вчера притащили мне журнал Игроманию посмотрел так чё на диске есть а потом оппа ПИРАТЫ КАРИБСКОГО МОРЯ думал уже аддон ВМЛ выложили потом там посмотрел там какойто человек поставил чтоб с самого начала было денег дофига уровень тысячный и чтоб на чёрной жемчужине начинать игру lol.gif lol.gif lol.gif СУМА СОЙТИ МОЖНО ЭТОЖ СДЕЛАЕТ ЛЮБОЙ ДУРАК гдето ссылочку видел на форуме на обучение по скриптам там это всё расписано только прочитать надо

Автор: Блейз Девлин Nov 19 2005, 10:24

Все хотел спросить: как менять персонажу стартовое здоровье?

Я в Моргане 1.02 сделал ГГ в начале игры 1000 левел lol.gif (эксперементирую). Он мне выдает только 235 HP. Тоже самое у других персонажей.

Автор: Николас Шарп Nov 19 2005, 21:54

Цитата(Zeleboba @ Nov 18 2005, 23:09)
Ты лучше сначала сделать попробуй переход к ростовщику а пото уже переходи на чтото другое лучше на диалоги а после диалогов (Как создаш хотяб один) можеш зделать небольшой квест а уж потом заглядывайся на файл с квестами
Хотя лучше сначала сделай новый корабль на старой модели

Диалоги я уже умею писать!

Автор: delfin_ Nov 21 2005, 22:48

Цитата(Блейз Девлин @ Nov 19 2005, 09:24)
Все хотел спросить: как менять персонажу стартовое здоровье?

Я в Моргане 1.02 сделал ГГ в начале игры 1000 левел  lol.gif (эксперементирую). Он мне выдает только 235 HP. Тоже самое у других персонажей.
*


Надо добавить строку

Код
    LAi_SetHP(ch, 80.0, 80.0);  

Или сколько ты хочешь чтоб было вместо 80. А ещё проще:
Код
    LAi_SetImmortal(ch, true);  

smile.gif

Автор: Scatimon Dec 10 2005, 17:42

Слушайте, а вот такой "косяк" в 1,02: LAi_SetImmortal(ch, true);
не пашет после того как тебя в доме реймса данька мочит??????????????????

Автор: ALexusB Dec 10 2005, 23:53

Надо не после, а ДО

Автор: Scatimon Dec 12 2005, 01:10

Ой... содня допётр почему бессмертие не работает, там надо Квест коды править, там меняется управление с Блэйза на Даньку, и Даньке бессмертие писваивают,а потом обратно меняют местамии, ГГ тоже присвайвают-РЕЛОАД!!!!

Автор: Artur Drog Dec 27 2005, 07:47

Да клево конечно но тока чтоб создать чета типа ВМЛ надо всю ПКМ (базавую) перелопатить
ЗАЧЕМ ЗАНОВО ПРИДУМЫВАТЬ КОЛЕСО.

Автор: ALexusB Dec 27 2005, 11:23

Эта инфа для страждущих знаний и желающих уметь и мочь самим.
А никак не для лентяев, ждущих готовых плодов чужого труда.
smile.gif

Автор: Artur Drog Dec 29 2005, 08:23

Цитата(ALexusB @ Dec 27 2005, 14:23) *

Эта инфа для страждущих знаний и желающих уметь и мочь самим.
А никак не для лентяев, ждущих готовых плодов чужого труда.
smile.gif


Вы товарищ не правильно меня поняли. Конечно можно самому че нить накотать, ну а если хоется ВМЛ, тока чтоб команда имела прокачку, потери меньше, офицер судовой врач, возможность плыть к мадагаскару и в старый свет и т. д.
А на базе ПКМа - это заново модели архипилага, острова, и т п. А так же охота некоторые исторические корабли с их капитанами, адмиралы, рейтинг среди пиратов, и развитие относительно годов, потому что линкоры появились не в те времена когда начинается игра, так же увеличить разновидности судов типа фригаты имели от 16 до 68 орудий, разную скорость, ну и соответственно каманда, и все это взаимосвязанно. Сделать скрипт который всем корам будет давать рандомные харки, как на верфи так и в море, сделать возможность плавания не на карте мира а в море и наблюдая за горизонтом через подзорку. А так же возможность сетевой игры, и игрового сервера.
Назревает вопрос зачем моделить заново велосипед, если ты просто нанего хочеш установить двигатель. Конечно можно сделать сразу мопед, но ведь это гемор и не слабый!!!

Автор: ALexusB Dec 29 2005, 10:41

Хотеть сделать и уметь сделать вещи разные.
Это тема не для тех, кто не хочет хотеть, а для тех, кто хочет уметь
Счас же пошел офтопик по мечтам и предложением "чего бы я хотел"
Тема сугубо практическая, отвечает на вопрос "как сделать?".

Автор: Artur Drog Dec 29 2005, 17:58

Цитата(ALexusB @ Dec 29 2005, 13:41) *

Хотеть сделать и уметь сделать вещи разные.
Это тема не для тех, кто не хочет хотеть, а для тех, кто хочет уметь
Счас же пошел офтопик по мечтам и предложением "чего бы я хотел"
Тема сугубо практическая, отвечает на вопрос "как сделать?".


Хорошо я там в пожеланиях к кое какие предложения внес почитай...
А на счет как сделать? Ответь пожалуйста можно ли на базе ПКМ сделать Плавание в открытом море а не на карте и смотреть через подзорную трубу не ползет ли торгаш. Сделать сетевую игру, и все перечисленное выше...?
Я конечно понимаю что могут возникнуть проблемы с локациями, но если подумать и понять то можно чей та написать чтобы работало.
А все это для того чтобы можно было жить жизнью корсарв а не играть в эту жизнь.
А еще показать Акеловцам как игры делать надо, а то ни чего нового не увидел а сетевая отстой. Я понимаю выплыть с тортуги и где нить около Ямайки наткнуться на золотой караван и гнаться за ним до кубы и взять приз! вот чего я хочу, не уверен что смогу. но... Я один а вас команда. А если поставить сервак он лайн и почти каждый встречный корабль это реальный человек, а губеры колонии это модераторы, и корательные экспидиции можно набирать из настоящих морских волков и... . это можно перечислять долго, вот еслиб кто то еще мог заинтерисоваться и помоч...!

Автор: ALexusB Dec 29 2005, 23:49

теоретически можно все. практически на пкм нет.
сетевой игры точно нет, ее и в К3 нет (и не будет) - есть сетевые битвы, а не сетевая рпг

Автор: Getbern Zagolski Dec 31 2005, 07:05

2 ALexusB

Мы когда-нибудь увидим открытый код ВМЛ? Если нет, то хотелось бы узнать по каким причинам. smile.gif

P.S. Ведь это вдохновит игроков на подвиги! wink.gif

Автор: Etienne Mar 2 2006, 11:50

2 Alexus & Navy!
Пожалуйста, продолжайте эту тему!.. Ради модификации ПКМ взялся за изучение С++. Вы очень поможете всем, кто всеръёз занялся таким делом. А то что-то очень давно не было обновлений в этом топике... sad.gif

Автор: navy Mar 2 2006, 12:04

Как уже говорилось С++ к скриптам ПКМ имеет весьма малое отношение smile.gif... Больше как синтаксические конструкции ...

Спрашивайте, что интересно, постараемся ответить... Если у Алекса есть что-то готовое то он выкладывает. Я не имею готовой базы знаний smile.gif

Автор: Mad Jack Mar 3 2006, 18:51

Как изменить место в котором ГГ появляется в начале?

Переход хочу сделать в море в каюту и в трюм, как?

Чтоб провиант ели как сделать?

еще напомните пожалуйста что там надо заменить чтобы все goto там к примеру были видны в игре

Автор: Николас Шарп Mar 5 2006, 09:57

Если можно, то напишите как сделать шторм, вроде того, что был в ПКМ!! Чтобы сначал герой вышел в море, а потом оказался на берегу какого-то острова!!!

Автор: ALexusB Mar 5 2006, 19:14

Как обычно и бывает ответ в самом вопросе
цитирую
" вроде того, что был в ПКМ"
Тк это явно не один оператор - бери готовое решение в самой игре.

Автор: Scatimon Mar 8 2006, 11:24

А вот вопросик: вроде можно сделать в диалоге мини квест, без подсветки в quests_reaction ?
И ещё, я изменил стартовую точку(через Seadogs.c) сделал что бы появлялся в таверне но она вся белая при загрузке! Будто с погодой что-то, кто знает что это?

Автор: navy Mar 9 2006, 09:28

Там нужно править еще и скрипты... которые вызваются при загрузке ГГ в каюту... чтобы они обрабатывались либо сразу, либо при загрузке в ВАШУ новую локацию...


Про мини квест я чего то не понял...

Автор: матроскин Mar 9 2006, 12:00

Есть корабль в 3D maxe, конвертирую в .GM-файлы (ещё не конвертировал). Сохраню элементы корабля , как для батлшипа_1. TOOL есть. Дальше мне что надо править , огласите список , пожалуйста. 5.gif

Автор: ALexusB Mar 9 2006, 13:16

все тоже, что и баталшип_1 - поиск по всем скриптам (там 4-5 файлов для правки)
проблемы будут с человечками на палубе, нужно будет пути писать ручками, тк утилит нормальных нет.

Автор: Scatimon Mar 9 2006, 16:03

Цитата(navy @ Mar 9 2006, 09:28) *

Про мини квест я чего то не понял...


Ну прописывать в quests_reaction квест необезательно, если мне надо просто чтобы у того отобрали мне дали(предмет)! С этим я уже разобрался!
Спосибо smile.gif

Автор: KoD@K Mar 16 2006, 17:11

Не могли посказать как дать персу предмет? И где они описаны своими именами? Например горшок как называется? Что бы его дать?

Автор: navy Mar 16 2006, 17:25

GiveItem2Character (ref char, string itemID)
Все айди предметов в initItems.c

Автор: Scatimon Mar 19 2006, 22:56

Как диалог с самим собой замутить?

Автор: KoD@K Mar 20 2006, 02:01

Цитата(navy @ Jan 23 2006, 13:45) *

в quest_reaction.c добавляем следующие кейсы...
Код

case "Case1":
        LAi_SetActorType(PChar);
        LAi_SetActorType(characterFromID("NPC_ID"));
        Characters[GetCharacterIndex("NPC_ID")].Dialog.CurrentNode = "First time";
        LAi_ActorFollow(pchar, characterFromID("NPC_ID"), "", 1.0);
        LAi_ActorWaitDialog(Pchar, characterFromID("NPC_ID"));
        LAi_ActorDialog(characterFromID("NPC_ID"), Pchar, "Case2", 5.0, 0);
break;

case "Case2":
          LAi_SetPlayerType(Pchar);
          LAi_SetGuardianType(characterFromID("NPC_ID"));
break;


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

Автор: navy Mar 20 2006, 09:54

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

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

Делайте, пробуйте...я не вижу ваш код. Метод у вас есть? Что еще нужно?

Автор: KoD@K Mar 20 2006, 17:11

Я хочу, что бы ГГ побежал на встречу НПС, а не только НПС шел на всречу ГГ. Мне нужно освободить место появление персов.

Цитата(navy @ Jan 23 2006, 13:45) *

Код


        pchar.quest.Case1.win_condition.l1 = "location";
        pchar.quest.Case1.win_condition.l1.location = "Conceicao_port";
        pchar.quest.Case1.win_condition = "Case1";



И почему когда я ввожу ваш код, все работает, а как только хочу его немного изминить, даже не сам код, он не работает?
Код

        pchar.quest.Case3.win_condition.l1 = "location";
        pchar.quest.Case3.win_condition.l1.location = "Conceicao_port";
        pchar.quest.Case3.win_condition = "Case3";

Я заменил case1 на case3. И в квест реакшене все поменял на case3, но не работает.
P.S. А какая команда нужна для того, чтобы после диалога, НПС напал на меня?

Автор: Scatimon Mar 20 2006, 23:07

Посмотри как сделано в квесте (стандарт) Артуа Вуази, там в самом начале когда сам Артуа дрался со своим капитаном, ГГ подбегает к ним. Посмотри там, я всё делаю смотря на стандартные квесты.
А вот у меня вопросик: как бы КОД скрыть если не секрет 3.gif , как в ВМЛ?

Автор: navy Mar 21 2006, 09:38

Цитата
Я хочу, что бы ГГ побежал на встречу НПС, а не только НПС шел на всречу ГГ

По простому, меняй местами ГГ и НПС в методах... т.е. непись ждет, ГГ бежит. Остальное долго объяснять...

Цитата
И почему когда я ввожу ваш код, все работает

Не знаю... все должно работать, если правильно сделано...

Цитата
P.S. А какая команда нужна для того, чтобы после диалога, НПС напал на меня?

Смотрите файл LAi_Actor.c Я писал про него, и в комментраиях и так, много раз... там есть все!!! И вообще все это есть в скриптах!!! Вы думаете откуда мы это знаем? Из них же, у нас та же самая база была... даже меньше у некоторых smile.gif

Цитата
А вот у меня вопросик: как бы КОД скрыть если не секрет , как в ВМЛ?

Секрет wink.gif

Автор: Scatimon Mar 31 2006, 21:34

Ой я опять этот вопросик задаю... Как сделать выбор игрока. метод Navy (описанный в теме "Вопросы") почему-то неработает, выдаёт ошибку в коде при загрузку Инайгл.ЕХЕ, вроде делал всё правильно, но Navy говорил что чтото ещё надо править! Может кто знает что?

Автор: korsar666 Apr 2 2006, 23:36

Вот вы программисты ответьте мне как корсары корсару, а где в игре эти файлы с расширением "С" чтобы я мог сам редактировать.

Автор: delfin_ Apr 3 2006, 20:42

В папке програм. smile.gif

Автор: Scatimon Apr 4 2006, 21:45

Скажите пожалуйста как начать диалог с самим собой? Я уже задавал вопрос ,но ответа толком неполучил:(

Автор: KoD@K Apr 6 2006, 22:05

Цитата(Scatimon @ Apr 4 2006, 21:45) *

Скажите пожалуйста как начать диалог с самим собой? Я уже задавал вопрос ,но ответа толком неполучил:(


Если ответ еще нужен, то вот он:
Код

LAi_SetActorType(Pchar);
Pchar.Temp.self.dialog = Pchar.dialog.currentnode;
Pchar.dialog.currentnode = "dialog";
LAi_ActorSelfDialog(Pchar, "player_back");

Где dialog указывает на case в файле blaze_dialog.c.

Автор: Scatimon Apr 9 2006, 16:07

Всё всё, спосибо, у нашол в квесте(стандарт) когда барк надо потопить, там в комнате таверны убиваешь чела, а потом этот диалог самим с собой. Спосибо за ответ.

Автор: KoD@K Apr 9 2006, 19:25

Кто знает, где описана РПГ система в паке Моргана с заплатками от Алексуса? Если я хочу сделать примерно такую же как в адд-оне Корсары А&М. Т.е. Дерешься шпагой - качаешь шпагу. И как добавить отдельно для пистолета строку прокачки.

Автор: Scatimon Apr 11 2006, 12:17

И ещё, как мне сделать перк? Хотяб на запрет одевания кирасты буз умения?

Автор: ALexusB Apr 11 2006, 13:03

2Scatimon

см пример реализвайии перков (например меткий стрелок)

2KoD@K
Ответ тут весь код - в 95% файлах это нужно прописывать.

Изичи форму персонал - вот тебе и рпг система

Автор: Scatimon Apr 11 2006, 17:18

А РПГ система в ВМЛ - это для меня эдакая изюминка игры! Поэтому я понял что это делать сложно! Легче может просто преиминовать умения, например владение саблей - это сила мышц(или что-то в этом роде) при потоплении корабля противника, мышци качаются(штурвал тяжело было крутить:))

Автор: Бродяга Apr 22 2006, 19:01

АТ, насколько совместимы скрипты NPS и локаторы ПКМ A&M и ВМЛ v105-106?
Не могу поставить 2 независимо работающие версии на комп чтобы сравнить...

Автор: Wilgreess Apr 22 2006, 19:09

Цитата(Бродяга @ Apr 22 2006, 20:01) *

АТ, насколько совместимы скрипты NPS и локаторы ПКМ A&M и ВМЛ v105-106?
Не могу поставить 2 независимо работающие версии на комп чтобы сравнить...

Для того что-бы поставить две рабочие версии на компьютер нужно в реестре удолить записи Пиратов карибского моря, я забыл как программа называется с помощью которой удобно это сделать, можно попробовать RegCleaner wink.gif

Автор: Scatimon Apr 23 2006, 13:32

А я просто переношу папку с ПКМ в другое место(что б не соответствовал с путём установки), далее просто жму "удалить игру", удаляется тока файлы из реестра! Далее мона будет установить игру ещё раз!

Автор: LexaLloyd Jun 4 2006, 00:20

Цитата(Бродяга @ Apr 22 2006, 20:01) *

Не могу поставить 2 независимо работающие версии на комп чтобы сравнить...

Цитата(Scatimon @ Apr 23 2006, 14:32) *

А я просто переношу папку с ПКМ в другое место(что б не соответствовал с путём установки), далее просто жму "удалить игру", удаляется тока файлы из реестра! Далее мона будет установить игру ещё раз!

А я просто копирую свежеустановленную игру несколько раз в разные папки, и потом их уже мурыжу. Тока надо всегда одну оставлять оригинальную. Было дело, сносило uninstall.exe и .dat blink.gif . И запускаешь каждую версию с engine.exe из ее папки.

Автор: Dr Livsi Jul 11 2006, 08:04

В Аддоне ВМЛ были добавлены некоторые локации, кторых нет в оригинальной игре. Вопрос: как добавить подобную локацию в верию с открытыми скриптами (бордель, например), и добавить туда НПС?

И еще: как и для чего закрывать код?

Автор: Veshii Oleg Jul 11 2006, 12:10

В этом топе упоминалось что нужно пробовать програмить в mod_4v, некоторные упоминают 1.02 . Так на какой базе начинать и где взять mod_4v ????

Автор: Lugger Jul 11 2006, 12:22

Цитата(Dr Livsi @ Jul 11 2006, 09:04) *

В Аддоне ВМЛ были добавлены некоторые локации, кторых нет в оригинальной игре. Вопрос: как добавить подобную локацию в верию с открытыми скриптами (бордель, например), и добавить туда НПС?

И еще: как и для чего закрывать код?

Как незнаю, вроде надо перепрограммировать весь каталог Program в dll..Точно не знаю..
А вот зачем, это для того чтобы не редактировали игру. Наверное.

Автор: navy Jul 11 2006, 12:28

Цитата(Veshii Oleg @ Jul 11 2006, 13:10) *

В этом топе упоминалось что нужно пробовать програмить в mod_4v, некоторные упоминают 1.02 . Так на какой базе начинать и где взять mod_4v ????

Mod_v4 берется на сайте аддона в разделе "полезное"
1.02 Это мод Моргана, брать в теме инструменты. В нем есть все наработки из mod_v4

Автор: lexNev Sep 4 2006, 17:27

может здесь кто подскажет как в паке моргана 1.2 сделать нормальное соотношение сил при штурме форта?

Автор: navy Sep 5 2006, 08:46

Цитата
может здесь кто подскажет как в паке моргана 1.2 сделать нормальное соотношение сил при штурме форта?

ручками... или более внятно пишем что ты не можешь сделать сам... как недонократно говорил Алекс, тарелки с каемачками кончились

Автор: SONIkom Sep 12 2006, 12:34

-----------------------------
2Forum
-----------------------------

У меня вопрос:
В скриптах К3 есть возможность делать кораблю повреждения (в принципе, как и в К1 и в К2, - отнимать ХиПы корабля при попадании), также при попадании по корпусу корабля используются эффекты частиц (Particles, например дым или огонь) и система добавления "дыр" (Textures/blots.tga.tx), так вот о последних речь и пойдет.
Как реализовывается "дыра" в скриптах, точнее каким образом работает скрипт, да и в скрипте ли все дело (имеется ввиду, может это возможность движка, а не скрипта)? И можно ли добавлять "свои разновидности повреждений от разных снарядов" (имеется ввиду не то, что уже реализовано: ядра-корпус, картечь-люди, книппели-паруса, и бомбы-все по-немногу), т.е. можно ли, к примеру сделать вот так:

Вводим новые свойства целостности корабля: HP (Hit Points - очки жизни) КОРПУСА = состояние кормы + левого борта + правого борта + участок корпуса, что ниже ватерлинии + состояние рулевого механизма + состояние дна. Все это складывается в привычную нам цифру, например HP=580 (корпус обычного Люгера).

Берем рассчет на состояние HPкормы (вот здесь, как я полагаю, работает скрипт наподобии blots-эффекта, да и вообще скрипт повреждения корпуса, только в нашем случае, - его участка - кормы (вопрос: как это проще сделать, рассчитать HP кормы, вычислить ее координаты из всего корпуса?)). Это один из главных вопросов, как рассчитать то, что снаряд попал именно в корму, а не в корпус в целом, - разбирать саму 3D-модель корабля на корму, борта и т.д.?

Далее, при повреждении кормы, ее HP уменьшается, тем самым, меняется у нее либо своя 3d-модель, если мы разбирали все корабли на части, либо ее текстура - это к примеру, но можно добавить изменение состояния каких-либо перков, или других как старых, так и новых, придуманных параметров судна, но это для меня не проблема... не в этом дело.

И так делать со всеми составляющими HP корпуса судна. Кораблей в архипелаге К3 много, но все они жутко одинаковы, а такие параметры могут сильно изменить игру к лучшему. К сожалению мне сейчас приходится тестить все на ПКМ:модВ4 от AlexusB и Morgan, но в скором времени мне удастся все это тестить и кодить на К3 (УРА!), поэтому вот задаю такой вопрос тем, кто уже разобрал скрипты К3. По крайней мере, сейчас они у меня плавают с HPкорп=HPкорпуса + HPдна (HPдна - если скрябаешь о землю или слишком долго плаваешь, то HPдна уменьшается, что приводит со временем к течи (постепенной потере HPдна) и потере скорости корабля) и максимальное значение HPдна=max(HPкорп)/2, т.е. половине максимального HP всего корпуса.

Автор: Tail of Devil Sep 22 2006, 11:44

Люди подскажите где можна достать патч Моргана 1.02?
Или пожертвуйте пожалуйста.

Автор: navy Sep 22 2006, 12:27

Цитата
Люди подскажите где можна достать патч Моргана 1.02? Или пожертвуйте пожалуйста.

Откройте глаза!!! И проявите хоть грамм инициативы... Поиск есть по форуму!!!

Автор: Loss Sep 22 2006, 23:27

Скажите плиз, можно ли увеличить колличество RandPhrase и LinkRandPhraseс трех ну хотя б до 6. И если можно, то с примером, а то я пробовал - нифига не получилось, ошибка если вхожу в диалог.

Автор: navy Sep 25 2006, 15:49

LinkRandPhrase готовый пример, можно расширять хоть до нескольких тысяч.

Автор: SONIkom Sep 25 2006, 21:14

Цитата(SONIkom @ Sep 12 2006, 13:34) *

-----------------------------
2Forum
-----------------------------

У меня вопрос:
В скриптах К3 есть возможность делать кораблю повреждения (в принципе, как и в К1 и в К2, - отнимать ХиПы корабля при попадании), также при попадании по корпусу корабля используются эффекты частиц (Particles, например дым или огонь) и система добавления "дыр" (Textures/blots.tga.tx), так вот о последних речь и пойдет.
Как реализовывается "дыра" в скриптах, точнее каким образом работает скрипт, да и в скрипте ли все дело (имеется ввиду, может это возможность движка, а не скрипта)? И можно ли добавлять "свои разновидности повреждений от разных снарядов" (имеется ввиду не то, что уже реализовано: ядра-корпус, картечь-люди, книппели-паруса, и бомбы-все по-немногу), т.е. можно ли, к примеру сделать вот так:

Вводим новые свойства целостности корабля: HP (Hit Points - очки жизни) КОРПУСА = состояние кормы + левого борта + правого борта + участок корпуса, что ниже ватерлинии + состояние рулевого механизма + состояние дна. Все это складывается в привычную нам цифру, например HP=580 (корпус обычного Люгера).

Берем рассчет на состояние HPкормы (вот здесь, как я полагаю, работает скрипт наподобии blots-эффекта, да и вообще скрипт повреждения корпуса, только в нашем случае, - его участка - кормы (вопрос: как это проще сделать, рассчитать HP кормы, вычислить ее координаты из всего корпуса?)). Это один из главных вопросов, как рассчитать то, что снаряд попал именно в корму, а не в корпус в целом, - разбирать саму 3D-модель корабля на корму, борта и т.д.?

Далее, при повреждении кормы, ее HP уменьшается, тем самым, меняется у нее либо своя 3d-модель, если мы разбирали все корабли на части, либо ее текстура - это к примеру, но можно добавить изменение состояния каких-либо перков, или других как старых, так и новых, придуманных параметров судна, но это для меня не проблема... не в этом дело.

И так делать со всеми составляющими HP корпуса судна. Кораблей в архипелаге К3 много, но все они жутко одинаковы, а такие параметры могут сильно изменить игру к лучшему. К сожалению мне сейчас приходится тестить все на ПКМ:модВ4 от AlexusB и Morgan, но в скором времени мне удастся все это тестить и кодить на К3 (УРА!), поэтому вот задаю такой вопрос тем, кто уже разобрал скрипты К3. По крайней мере, сейчас они у меня плавают с HPкорп=HPкорпуса + HPдна (HPдна - если скрябаешь о землю или слишком долго плаваешь, то HPдна уменьшается, что приводит со временем к течи (постепенной потере HPдна) и потере скорости корабля) и максимальное значение HPдна=max(HPкорп)/2, т.е. половине максимального HP всего корпуса.


Если кто интересовался, то раздельных частей 3д модели невозможно реализовать на скриптовом уровне, что по-повреждением, скрипт blot - лишь обработка движка, который невозможно изменить, лишь только систему просчета попадания. Кароче фишка, что я задумал выше, реализуема только в мечтах.. пока что...

Автор: Alex755 Sep 27 2006, 02:08

Цитата(delfin_ @ Nov 21 2005, 22:48) *

Надо добавить строку

Код
    LAi_SetHP(ch, 80.0, 80.0);  

Или сколько ты хочешь чтоб было вместо 80. А ещё проще:
Код
    LAi_SetImmortal(ch, true);  

smile.gif

А вот проще не получилось, как было описано выше.
В самом начале игры, когда ГГ должен шпионить в
фр. колонии есть сцена со стражниками(солдатами)
у ворот Oxbay. Получилось, что они тоже стали неубиваемыми sad.gif
зы после добавления вышеозначенной строки кода игра была начата заново.
Может тут свою роль сыграл мод (А&M)?
Или данную установку бессмертия необходимо добавлять в каждый квест?
Тогда сразу рождается очень сложный вопрос - а как это делается?
Понятно, что руками и головой.
Заранее спасибо за ответ.

Автор: -=corsar=- Apr 26 2007, 19:07

Люди помогите! Создал провиант и лекарства, а как сделать, чтоб команда пользовалась этим mellow.gif ? (Провиант ела, а без лекарств умирала). Зарание спасибо за ответ smile.gif !

Автор: kvu6o May 6 2007, 11:42

Цитата(Dr Livsi @ Jul 11 2006, 09:04) *

В Аддоне ВМЛ были добавлены некоторые локации, кторых нет в оригинальной игре. Вопрос: как добавить подобную локацию в верию с открытыми скриптами (бордель, например), и добавить туда НПС?

И еще: как и для чего закрывать код?


В папке Locations\init выбераеш город где тебе надо поместитить бордель(пр.Douwesen.c).Там есть список локаций помещений(Inside) и их названия.Если хочеш использовать другую модель,то надо
указать путь в Locations[n].filespath.models = "locations\папка,где находиться модель,а так же изменить значения в полях Locations[n].models.always.locators,.....,на соответствующие новой модели.

Автор: francisc May 17 2007, 08:48

Привет,как сделать,чтобы по квесту в какой-то колонии появился пиратский(ну или просто вражеский )корабль?

Автор: navy May 17 2007, 08:56

Цитата
Привет,как сделать,чтобы по квесту в какой-то колонии появился пиратский(ну или просто вражеский )корабль?

не понял вопроса... что значит появился в колонии?

Автор: francisc May 17 2007, 09:53

Рядом с островом.Типа квест на потопление корабля.

Автор: ALexusB May 17 2007, 13:47

Group_AddCharacter("Группа", NPChar.id);
Group_SetGroupCommander("Группа", NPChar.id);
Group_SetAddress("Группа", "Остров", "Quest_Ships", "локатор");

Quest_Ships - было в моделях ПКМ, либо другая группа локаторов

Автор: francisc May 18 2007, 17:16

2ALexusB
спасибо...долго колупался...но все таки разобрался)))
А как сделать добавление записи в квест бук при выходе в глобальную карту?

Автор: Scatimon May 18 2007, 19:05

quests\quests.c там смотри по коментам...

Автор: Lugger May 18 2007, 20:10

Цитата(francisc @ May 18 2007, 18:16) *

2ALexusB
спасибо...долго колупался...но все таки разобрался)))
А как сделать добавление записи в квест бук при выходе в глобальную карту?

По видимому так:
Код
        
        case "Case_0":
              Pchar.quest.case_1.win_condition.l1 = "MapEnter";
              Pchar.quest.case_1.win_condition = "case_1";

        break;

        case "Case_1":
            AddQuestRecord("ID_QUEST", "ID_TEXT");

        break;

Автор: zigfrid May 19 2007, 16:51

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

Автор: -=corsar=- May 19 2007, 21:27

Цитата(zigfrid @ May 19 2007, 17:51) *

есть вопрос.
как сделать так, чтобы если у гг или его компаньонов был корабль

Задай вопрос пожалуйсто покантретней, может кто понял, а я к сожалению ничего... mellow.gif

Автор: ALexusB May 19 2007, 22:57

Цитата(zigfrid @ May 19 2007, 17:51) *

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

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

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

Автор: zigfrid May 20 2007, 10:02

если бы просто захватил корабль и менялась нода, то это просто.
но тут немного другая ситуация-нужно захватить корабль A и отвести его к одному челу. и вот у этого чела нужно в диалоге поставить проверялку на наличие у гг и его компаньонов корабля A, то открывется другой линк диалога.
не хотелось просто свой код писать, не люблю.

Автор: Scatimon May 20 2007, 10:25

Цитата(zigfrid @ May 20 2007, 11:02) *

если бы просто захватил корабль и менялась нода, то это просто.
но тут немного другая ситуация-нужно захватить корабль A и отвести его к одному челу. и вот у этого чела нужно в диалоге поставить проверялку на наличие у гг и его компаньонов корабля A, то открывется другой линк диалога.
не хотелось просто свой код писать, не люблю.


Можно кондишОн свой создать, а проще сделай корабль - А, квестовым, ну чтоб нигде купить его было нельзя, и его ИД другой соответственно будет, ну и проверку, когда диалог, сделай там:

Кому отдать: О привет, корабль у тебя?
ГГ: Нет
---- второй линк ------
if(ИД корабля ГГ == Ид корабля А)
{
ГГ: Да
}
if(ИД корабля Компаньона1== Ид корабля А)
{
ГГ: Да
}
if(ИД корабля Компаньона2== Ид корабля А)
{
ГГ: Да
}
if(ИД корабля Компаньона3== Ид корабля А)
{
ГГ: Да
}
ну и дальше...

Автор: zigfrid May 20 2007, 10:52

тут сел, минут за 20 код свой написал. проверяльщик есть. уря))
ну мона и так попробовать, как scatimon сказал.

Автор: ALexusB May 21 2007, 12:59

А можно, как я выше и написал.
Тк в момент захвата чела в море нет, пока к нему доберешься у него все это время будет нода уже новая... по факту захвата корабля ГГ
Не боитесь, с ним без ГГ никто не поговорит и ноду не собьет smile.gif

Автор: zigfrid May 21 2007, 17:28

ну тут уже надо ему на месте проверить. мало ли ты в порту корабль продаж?))

Автор: PAJr May 21 2007, 20:44

Подскажите пожалуйста подробно, где и что нужно поправить, чтобы начать игру в Бермудах. Заранее спасибо.

Автор: Lugger May 22 2007, 06:17

Цитата(PAJr @ May 21 2007, 21:44) *

Подскажите пожалуйста подробно, где и что нужно поправить, чтобы начать игру в Бермудах. Заранее спасибо.

Нигде. Код в КВЛ закрыт.

Автор: Dir May 22 2007, 07:30

Несколько раз начав новую игру,можно счастливым образом оказаться на Бермудах;).

Автор: Scatimon May 29 2007, 14:23

Подскажите плиз, кто знает...
Вопрос: В ПКМ, стандартно нельзя вводить переменные в Судовой Журнал, как в К3, однако знаю, что двиг это поддерживает, т.к в ВМЛ были переменные в СЖ. Может кто-нибудь подскажет как мне сделать в ПКМ ввод переменных в СЖ, пробовал перетащить из К3 код - невышло, не определяет в ТХТ он "@<>". Вопщем помогите кто может!

Автор: }{0TT@БЬ)ч Sep 28 2007, 22:47

Кто знает где в КВЛ можно урон пистолетов менять? И как можно бы переместить блейдганы в КВЛ из Корсары 3 Сундук Мертвеца, а то Лоренса из Корсары 3 Сундук Мертвяка закинул в КВЛ а Блейдган немогу "он к Лоренсу не приклеивается" чё делать подскажите?

Автор: MONBAR Sep 29 2007, 20:01

}{0TT@БЬ)ч,
Нужен открытый код, а как известно он закрыт, вывод, пока никак...

Автор: }{0TT@БЬ)ч Sep 29 2007, 21:53

Цитата(MONBAR @ Sep 29 2007, 23:01) *

}{0TT@БЬ)ч,
Нужен открытый код, а как известно он закрыт, вывод, пока никак...

А когда откроют не знаешь?

Автор: kopcap Sep 29 2007, 22:01

насколько мне известно код откроют в ГПК в патче! а будет это где-то в начале 2008 года....

Автор: Ale}{@n_Dr Sep 29 2007, 22:01

Цитата(}{0TT@БЬ)ч @ Sep 29 2007, 22:53) *

А когда откроют не знаешь?

Либо сразу с выходом К:ВЛ ГПК, либо с последним патчем на него.

ЗЫ Это примерно ноябрь-декабрь будет.(Выход ГПК)

2TAHAT :
Сорри за оффтоп. Написал ответ по инерции, так что прошу УДАЛИТЬ его (пост)
Хотя с другой стороны это вопрос хоть и косвенно, но по скриптам.

Автор: TAHAT Sep 29 2007, 22:04

оффтопик отставить ! dry.gif

Автор: Волчара Nov 13 2007, 14:52

Пираты-программисты! Скажите, как поменять параметры квестовых кораблей в ВМЛ? Никак не могу выиграть абордаж с "Циклопусом" - отличным мановаром из французской эскадры (это под конец испанской линейки). У него: 40000 корпус, 1400 команда, 100 пушек. Можно ли сделать так, чтобы у него было не 1400, а допустим, 400 чел? dry.gif

Автор: Капитан DRAG Nov 13 2007, 16:26

Цитата(Волчара @ Nov 13 2007, 14:52) *

Можно ли сделать так, чтобы у него было не 1400, а допустим, 400 чел? dry.gif

Никак, только если ArtMoney использовать-в ВМЛ код закрыт.

Автор: Maximus Nov 16 2007, 10:07

Цитата(Scatimon @ May 29 2007, 14:23) *

Подскажите плиз, кто знает...
Вопрос: В ПКМ, стандартно нельзя вводить переменные в Судовой Журнал, как в К3, однако знаю, что двиг это поддерживает, т.к в ВМЛ были переменные в СЖ. Может кто-нибудь подскажет как мне сделать в ПКМ ввод переменных в СЖ, пробовал перетащить из К3 код - невышло, не определяет в ТХТ он "@<>". Вопщем помогите кто может!


Приветствую всех. Давненько я тут не был smile.gif

Двиг не поддерживает - факт. Но способ есть wink.gif Имею собственную разработку данной фичи cool.gif В БИЛД ещё не включено, но поделиться могу (при условии обязательного упоминания моего имени). Работает точно так же, как в К3. ВСе вопросы в личку 1.gif

Автор: Scatimon Nov 20 2007, 19:39

Хех... Дело в мае было, двиг всё поддерживает, конвертация с тхт файла фозможна. (параметры пистолей, саблей пишутся именно так) Сейчас это я уже сделал. Но за ответ всёравно спс.

Автор: ECKADP Dec 18 2007, 22:50

фанаты! прошу помоч отредактировать К2 (потомучто земля-"жунгли"-тропы) = знаю что должно быть но не знаю как сделать (чайник))) = нужен инструктаж – вышлю результ-файл чо получилось = Я понятлив – HTML освоил за 2 дня, (http://eckaqpa.narod.ru/flagship.htm),

ПЛАН = редактировать хочу:
1= скорости парусников относительно ветра, типа парусов (+водоизмешенье +длина +обводы =учту))), условно-примитивно конечно но принципиално = напр скорость/угол-ветра 0/0-1/45-2/90-3/135-2/180 но под реюшими-"прямыми" --1/0 !надо убрать или задний ход!;
2= установить 3 варианта парусности = на-штаге (staysails) + на рее (марсели + полна парусность) = как? парусны гонки станут сложней-интересней на "реюших"-прямых парусах (на косых-диаметральных 2 варьанта), от силы ветра ушерб тож зависеть будет конкретно не как "шторм" тепер;
3= модели парусников изменить, в какой программе?
4= волны как в К3 но море как есть оставить;
+!= ешо много коечто)))

Автор: zorx007 Dec 25 2007, 03:59

Всем привет у меня образовался вопрос к программерам
Я играю в ПКМ с установленным аддоном Мсье Alexus"а B без дополнительных ресурсов
как создать своего героя я научился..... ума хватило для этого надо всеголишь залесть в
D:\GAMA\Seadog2\RESOURCE\INI\TEXTS\RUSSIAN\HeroDescribe.txt
и изменить его.... а как можно создать свой класс??? huh.gif
(корсар, торговец, тайный агент, итд)

Автор: MONBAR Dec 25 2007, 19:06

Классы видать в коде создаются, там указываются хар-ки РПГ системы, экипировка и т.д.... Так что ответ думаю опнятен...

Автор: zorx007 Dec 26 2007, 05:30

Цитата(MONBAR @ Dec 26 2007, 02:06) *

Классы видать в коде создаются, там указываются хар-ки РПГ системы, экипировка и т.д.... Так что ответ думаю опнятен...


Так что Класс Супермен мне создать неудастся??? unsure.gif

Автор: MONBAR Jan 1 2008, 04:58

Цитата
Так что Класс Супермен мне создать неудастся???


Нет... В К3 код открыт, моешь там создать:)

Автор: Lugger Jan 1 2008, 16:20

Цитата(MONBAR)
Нет... В К3 код открыт, моешь там создать

А в К3 и нету типов героя. smile.gif

Автор: RIZIY Apr 29 2008, 11:02

Ролики все в E:\Games\Корсары Возвращение Легенды\Resource\VIDEOS, дорожку можно заменить например VirtualDub ом.

Автор: MagnitFan Jun 8 2008, 14:52

Сорри я тупой мож че не понял но пожалуйста подскажите, как создать свой квест в ПКМ? sad.gif
И как сделать, чтобы в диалоге тому, с кем говоришь добавились предметы? Пробовал GiveItem2Character(ref char, string "blade26") не помогло ошибка. mad.gif
P.S. у меня ПКМ с установленным паком Генри Моргана, скрипты открыты

Автор: Lugger Jun 8 2008, 22:15

Цитата
Пробовал GiveItem2Character(ref char, string "blade26")

Потому что необходимо писать не так, а так:

GiveItem2Character(char, "blade26");

Где char - ссылка на персонажа, если на ГГ, то PChar, "blade26" - ID добавляемого предмета.

Автор: MagnitFan Jun 9 2008, 09:21

Большое спасибо за предметы! Огромнейший респект! Но как создавать квесты?

Немного посмотрел и попробовал скопировать в quest_reaction.c строчку case "actor_died": LAi_KillCharacter(characterFromID("ID персонажа")); characterFromID("ID персонажа").location = "none"; break; и теперь он выкидывает ошибку С++! Что делать?

Автор: Lugger Jun 9 2008, 21:26

Цитата
Но как создавать квесты?

Квестовыми прерываниями. smile.gif

Цитата(MagnitFan @ Jun 9 2008, 10:21) *

Немного посмотрел и попробовал скопировать в quest_reaction.c строчку case "actor_died": LAi_KillCharacter(characterFromID("ID персонажа")); characterFromID("ID персонажа").location = "none"; break;


Потому то и не работает, что взял и скопировал... Это понять надо.

Например, ниже, что это за бред?
Код
characterFromID("ID персонажа").location = "none";

Автор: Scatimon Jun 10 2008, 10:46

Цитата(MagnitFan @ Jun 9 2008, 10:21) *

Большое спасибо за предметы! Огромнейший респект! Но как создавать квесты?

Немного посмотрел и попробовал скопировать в quest_reaction.c строчку case "actor_died": LAi_KillCharacter(characterFromID("ID персонажа")); characterFromID("ID персонажа").location = "none"; break; и теперь он выкидывает ошибку С++! Что делать?


Код
characterFromID("ID персонажа").location = "none";

Если уж на то пошло тогда:
Цитата
Characters[GetCharacterIndex("ИД перса")].location = "none";

Объясняю почему так:
Массив
Код
Characters[]
- он идёт от 0 до какого-то другого челого числа, в К3 это 1800 (тотальное количество персов) на каждый такой массив
Код
Characters[1], Characters[2]
и тд, можно посадить атрибуты
Код
Characters[1].location
, т.е
Код
Characters[Х]
- это персонажи, которые под "номерами" в игре, где Х - этот "номер".
Дальше
Код
Characters[GetCharacterIndex("ИД перса")]
- у нас есть ИД персонажа допустим оно "ИД перса", но нам же нужен номер. Функция
Код
GetCharacterIndex("ИД перса")
- ищет персонажа с ИД "ИД перса", и дальше даёт нам номер, как бы вместо всего вот этого
Код
GetCharacterIndex("ИД перса")
после процедуры будет число целое (в диапазоне от 0 до TOTAL_CHARACTERS в Globals.c").
И выйдет, иначе говоря такое:
Код
Characters[Какое-тоЧисло].locations = "none";

Автор: qzer56 Jun 10 2008, 12:42

у меня есть вопрос:
можна в ПКМ изменять осадку корабля в зависимости от повреждений и загружености трюма
в смысле в файле ships_init.c есть у каждого корабля параметр если не ошибаюсь "waterline" так вот можна написать формулу прямо в ships_init.c ?

Автор: Scatimon Jun 10 2008, 13:56

Нет, там идёт инициализация массива, и заполенния параметров, формулу в другом месте надо. Ватерлиния вступает в силе только после релоада корабля в локацию.

Автор: qzer56 Jun 11 2008, 10:13

Цитата
Нет, там идёт инициализация массива, и заполенния параметров, формулу в другом месте надо. Ватерлиния вступает в силе только после релоада корабля в локацию.

ладно тогда такой вопрос
ватерлинию можна динамично изменять?
япробывал писать
Код

mc = GetMainCharacter();
mc.ship.WaterLine = (mc.ship.WaterLine) + 0.1;

то не катит

и еще sti, stf - это как в делфи strtoint, strtofloat ?

и ешё хочу зделать отравленый кинжал а то от обычного мало толку, противоядие есть значит можна отравлять, как зделать может есть свойство такое?

Автор: MagnitFan Jun 14 2008, 21:39

Пчему если я устанавливаю модель ГГ monkey и анимацию (пол) monkey то какая-то кривая анимация и как это исправить

Автор: Lugger Jun 15 2008, 11:18

Цитата(MagnitFan @ Jun 14 2008, 22:39) *

Пчему если я устанавливаю модель ГГ monkey и анимацию (пол) monkey то какая-то кривая анимация и как это исправить

Потому что модель ГГ не подходит для данной анимации.
Посему надо и модель менять.

Автор: kopcap Jun 15 2008, 16:24

Цитата
Пчему если я устанавливаю модель ГГ monkey и анимацию (пол) monkey то какая-то кривая анимация и как это исправить


Цитата
Потому что модель ГГ не подходит для данной анимации.
Посему надо и модель менять.


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

Не знаю как в ПКМ, да наверное также, но в к3 по умолчанию всем персам раздаются анимации, так вот чтобы прописывать нужную анимацию надо:

Characters[GetCharacterIndex("Ид перса")].model.animation = "анимация";

Автор: Lugger Jun 15 2008, 17:01

Цитата(kopcap @ Jun 15 2008, 17:24) *

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

Я и не писал, что анимация прописывается в
ch.sex = "man";

А вот в том, что я невнимательно прочёл пост, прошу извинить...

Автор: navy Jun 15 2008, 17:10

Цитата
Пчему если я устанавливаю модель ГГ monkey и анимацию (пол) monkey

Читайте еще внимательнее, анимацию И пол прописывается. Хз как там для ГГ, а для остальных будет косячить полюбому, требуется нечто большее чем просто менять анимацию модель и пол

Автор: kopcap Jun 15 2008, 19:57

Цитата
требуется нечто большее чем просто менять анимацию модель и пол

не знаю... в ТДМ прекрасно работает так, как я написал выше

Автор: Scatimon Jun 15 2008, 20:02

Всё работать должно, по принципу как писал Корсар:
"Characters[GetCharacterIndex("Ид перса")].model.animation = "анимация";"
Причём нужно эти строки добавлять в поле инициализайций анимаций. (это в characters_init.c)
И ещё, пол прописывается чисто для того, чтобы инициализировать анимацию персу. (по полу выдаётся анимация соответствующая)
Продолжая то, о чём говорил Navy, скажу, что для мартышки не будет анимации всех ударов из К3, анимаций сидения, скорее всего прыжков, плавания и тп...

Автор: navy Jun 16 2008, 09:45

Цитата
не знаю... в ТДМ прекрасно работает так, как я написал выше

для главного героя или НПС? Я писал что для ГГ этого достаточно. Для нпс нет.
Цитата
что для мартышки не будет анимации всех ударов из К3, анимаций сидения

Да, в этом тоже косяк, поэтому надо или переписывать файл анимации, или не давать невыполнимых заданий smile.gif

Автор: Жабрик Aug 13 2008, 12:24

У меня вопрос. Как можно изменить предметы, чтобы, например, бретерский пистолет давал +3 авторитет?

Автор: Scatimon Aug 25 2008, 09:50

В ВМЛ/КВЛ/ГПК почти никак. Через консоль можно поковырять, но скорее всего зависимость есть по группе предмета, а пистолет с группой артефактов стрелять не станет. В ПКМ/К3 нету системы бонусов от предметов. Кароче никак smile.gif

Автор: Жабрик Nov 1 2008, 10:37

Подскажите, как запрограммировать действие на кнопку, скажем, изменение скорости на кнопку L?

Автор: dima12 Nov 1 2008, 14:53

Для ответа на данный вопрос можно процитировать Scatimon'a

Во всех играх от Сиаварда (ВМЛ/КВЛ/ГПК - никак).

Автор: Zeleboba Nov 1 2008, 16:56

Цитата(Жабрик @ Nov 1 2008, 10:37) *

Подскажите, как запрограммировать действие на кнопку, скажем, изменение скорости на кнопку L?

Хмм... Под рукой нету открытого кода, но попробуй посмотри в папочке CONTROLS или както так!
Нам на готовый действиях можно посмотреть!
Если ты конечно про ПКМ или К3 говориш!

Автор: Жабрик Nov 1 2008, 19:17

Цитата(Zeleboba @ Nov 1 2008, 16:56) *

Если ты конечно про ПКМ или К3 говориш!

Я про ПКМ говорю, но я даже не представляю как это можно сделать.

Автор: incognito_live Jun 22 2009, 14:09

народ все таки если можно выложите исходы вмл ибо создавать второй такой шедефр не оч хотца и времени и сил уйдет хз скока а вот улучшить его было бы не плохо а то скилов как то мало=((((((
А накатить вмл на в4 чтобы было норма управление не получилось=(
да и можно заумутить некоторые темы=)более менее глобальные=)

Автор: korsar-fan Jul 1 2009, 00:21

Как вычислять координаты островов, например, взять модель глобалки ГПК, и прикрутить к ПКМ. Как вычисляю координаты position.x,position.y,position.z , position.ay???
worldMap.islands.Tortuga.locations.city.name = "";
//Geometry parameters
worldMap.islands.Tortuga.locations.city.position.x = ?;
worldMap.islands.Tortuga.locations.city.position.y = ?;
worldMap.islands.Tortuga.locations.city.position.z = ?;
worldMap.islands.Tortuga.locations.city.position.a y = ?;

Автор: ALexusB Jul 2 2009, 18:33

Плавать корабликом по карте, замерять координаты кораблика, потому делать +- тапки, куда доплыть низя
Ставить в скриптах, проверять на карте.
так, пока не получится

мы делали так smile.gif
Велком в мир крутого кода!
Второй вариант - по модели брать координаты, переводить их в игровые и потом опять 1 вариант, тк все метки сползают, из-за 3Д вида и их все равно двигать нужно по месту, чтоб не пересекались и читались

непомню уже, в каком именно двиге сторм2 или 2.5 был метод опроса локаторов, то есть координаты можно было получить из кода, а в другом двиге уже фиг

Автор: korsar-fan Jul 4 2009, 13:30

ALexusB, спасибо за помощь.

Автор: Alexad_D Jul 12 2009, 23:11

Всем доброго здравия! У меня такой вопрос по ПКМ, вернее два...... Первое - сделана новая модель с модерновой текстурой, ( морская форма ВМФ СССР) соответственно и ид новой модели присвоено, со всеми вытекающими.... и прописано вроде везде и даже работает. Используются модельки в качестве офицеров ну и экипажа ГГ. Но ..... Проблема вот в чем - при обращении с диалогом к модели, нет головы в диалоговом окне и нет почему-то в интерфейсе только иконки в списке пассажиров (128), другие (256 и 64) есть. И еще один глюк Иногда при найме, нет самой модели - висят только пистолет и сабля но после найма она (моделька) появляется. Да забыл написать что сама по себе голова новой модели, при просмотре в моделвьювер - работает - смысле есть..... 6.gif

Автор: ALexusB Jul 13 2009, 08:20

портрет 128 прописывается в пикча.ини в папкке ИНИ
Для диалога нужна модель головы отедельно, только бюст, см другие модели у них она есть, Н_ название или типа того
С невидимостью косяки с локаторами (непомню какими), толи на модели под пистоли, толи в локации, куда ставится

Автор: Alexad_D Jul 13 2009, 18:35

Так в том то и дело что модели голов есть !!!!! И в gm_view они просматриваются! А в игре.... sad.gif Значит так ..... У меня ведены новые модели для офицеров и экипажа - offis_ru_1.gm, offis_ru_2.gm и тд всего 6 к каждой текстура offis_ru_1.tga.tx и тд тоже 6 (для различий в лицах и знаках на форме) для каждой модели - голова - h_offis_ru_1.gm ну и соответственно анимация для каждой прописана в \animation\Heads модель.ani и в \animation\Heads\AN\ модель.an. За основу брал модель Блейза - для офицеров и мен3 для матросов т.е. Копировал болванку модели, переименовывал в свою. перепрописывал в ней используемую текстуру, ну и так далее в том же духе..... С матросами нет проблем а вот с офицерами...... какая то, где-то у меня не доработка.

lol.gif Точно!!!!! Как-же я сам проглядел..... Я же когда новые товары вводил тоже там (в пикче ини ) их прописывал... Спасибо огромное!!!! Вообще то игрушку модить я начал с твоей подачи (правда с перерывами) года два назад... С фразы " ...в игру можно внести изменения если знать как! ALexusB" Интернета у меня тогда не было а очень хотелось..... Ну вот методом анализа и сравнения готового материала пошло и поехало..... 1.gif


И все таки что же у меня с головами не так...... И еще я не понял как снимать координаты с карты с помощью кораблика.... для новых остравов

Автор: ALexusB Jul 14 2009, 08:21

новую можель нужно езе где-то проприсать в switch, посмотри поиском по другим моделям. Наличие файла в папке - мало.

Координаты снять повешеным новым прерыванием на свою кнопку (ф12, например), и выводить в лог
(кусок скрипта из моей дебуг панели)

Код

////////////////////////////////////////////////////////////////////////
string descF3 = "ID текущей локации +коорд     ";

void CalculateInfoDataF3()
{
    // -->
    totalInfo = descF3;
    ref mc;
    mc = GetMainCharacter();

    float locx, locy, locz;
    if (bSeaActive && !bAbordageStarted)
    {
        if (CheckAttribute(mc, "Ship.pos.x"))
        {
            totalInfo = totalInfo + NewStr() + mc.location + "     ship(x,z)= "+mc.Ship.pos.x +", "+mc.Ship.pos.z;
            if (false)//CheckAttribute(mc, "WMShip.Pos.x") && worldMap.island != "")
            {
                string sTemp = mc.curIslandId;
                float r1 = stf(worldMap.islands.(sTemp).GoMapRadius);

                r1 *= WDM_MAP_TO_SEA_SCALE;
                float d2 = GetDistance2D(stf(mc.Ship.Pos.x),
                                  stf(mc.Ship.Pos.z),
                                  stf(worldMap.islands.(sTemp).position.rx),
                                  stf(worldMap.islands.(sTemp).position.rz));

                totalInfo = totalInfo + "         Координаты для карты radius= " + r1 + "   GetDistance2D= " + d2 + "      ";
            }
        }
    }
    else
    {
          if (IsEntity(loadedLocation))
          {
            GetCharacterPos(GetMainCharacter(), &locx, &locy, &locz);
            totalInfo = totalInfo + "id = " + mc.location + " (x,y,z)= "+locx + ", " +locy + ", "+locz;
            totalInfo = totalInfo + NewStr() + "filespath.models = " + loadedLocation.filespath.models;
            totalInfo = totalInfo + NewStr() + "image = " + loadedLocation.image;
            totalInfo = totalInfo + NewStr() + "models.locators = " + loadedLocation.models.always.locators;
        }
    }
    
    //aref rootItems;
    //makearef(rootItems, worldMap);  //Islands[0]
    //DumpAttributes(rootItems);
    
    totalInfo = totalInfo + NewStr() + " MapShipX " +    worldMap.playerShipX + " MapShipZ " + worldMap.playerShipZ + " X " + worldMap.island.x + " Z " + worldMap.island.z;
    
    // <
    totalInfo = totalInfo + NewStr() + NewStr() +
                "Команда отработала успешно!";
    SetFormatedText("INFO_TEXT",totalInfo);
}


Эта штука выводт коорд в любом месте
Мы ей пользовались все время, и для новых локаторов через TOOL тоже

Автор: Alexad_D Jul 14 2009, 08:41

Спасибо! Буду разбираться......

Автор: Alexad_D Jul 14 2009, 12:23

Инструкцию по вводу модели нового персонажа. К примеру мы хотим ввести нового женского перса - Катрин. Берем за основу модельку - Daniellе.gm - и через поиск находим все что с ней связано.
1. Daniellе.gm
2. h_Daniellе.gm
3. Daniellе.tga.tx
4. h_Daniellе.ani
5. h_Daniellе.an

1. Копируем/вставляем Daniellе.gm, h_Daniellе.gm, Daniellе.tga.tx, h_Daniellе.ani, h_Daniellе.an каждую в свою папку соответственно и переименовываем (главное чтобы в названиях новой модели, букв было столько же сколько и в шаблонах) все копии в Katerine.gm, h_Katerine.gm, Katerine.tga.tx, h_Katerine.ani, h_Katerine.an

2. В Katerine.gm и h_Katerine.gm прописываем новую текстуру - Katerine.tga.tx, в h_Katerine.ani - в строке меняем на - animation = Heads\AN\h_Katerine.an

3. Новую текстуру с помощью TX-Convertor конвертим в tga, перекрашиваем фотошопом одежду, волосы и вклеиваем лицо (однокласницы...шутка) и конвертим обратно в tx.

4. Проверяем (смотрим) Katerine.gm и h_Katerine.gm в GM_view.... Все есть новая текстурированая моделька с головой..... Делаем скрин (например с помощью ирфан фьюс) экрана gm_view и делаем иконки face_75 - 64, 128, 256 соответственно и расскладываем их по местам.

5. Прописываем новую модель в characters_init.c и quests_reaction.c - получается так -

case "Katerine": rCharacter.FaceId = 75; break;


}

rCharacter.headModel = "h_" + rCharacter.model;

6. В \INI\INTERFACES в pictures.ini вставляем строки:

[FACE128_75]
sTextureName = portraits\128\face_75.tga
wTextureWidth = 128
wTextureHeight = 128
picture = face,0,0,128,128

7. Теперь делаем ее (модельку) - Персом - например, будущего нанимаемого в таверне офицера (Но можно и целый квест с ней прописать.... ) В LandEnc_init.c находим строку - LandEncounters[n].id = "ENC_OFFICER"; и подней меняем на:

//пока, на время проверки только одного
LandEncounters[n].char1.modelQuantity = 1;

LandEncounters[n].char1.model1 = "Katerine";
LandEncounters[n].char1.model1.ani = "woman";

LandEncounters[n].char1.cont = true;
LandEncounters[n].char1.pistol = false;
LandEncounters[n].char1.sword = true;

//Так-как сидеть Данька не может, то пусть крутится возле стола...
LandEncounters[n].char1.type = "Citizen";
LandEncounters[n].char1.Dialog = "Enc_Officer_dialog.c";

(правда сейчас будут накладки c текстом в диалоге, ну и с мужскими именами но это можно потом подправить, если понадобиться но лучше сделать отдельного перса с отдельным диалогом )

8. Ну и меняем анимацию в диалоге

//аналогично Головы с Данькой
case "Node_1":
Dialog.defAni = "dialog_stay1";
Dialog.defCam = "1";
Dialog.defSnd = "dialogs\0\017";
Dialog.defLinkAni = "dialog_1";
Dialog.defLinkCam = "1";
Dialog.defLinkSnd = "dialogs\woman\024";
Dialog.ani = "dialog_stay2";
Dialog.cam = "1";
Dialog.snd = "dialogs\0\009";case "Node_1":

Все.... Запускаем игру......

Автор: Alexad_D Jul 14 2009, 19:38

Цитата(qzer56 @ Jun 11 2008, 10:13) *

ладно тогда такой вопрос
ватерлинию можна динамично изменять?
япробывал писать
Код

mc = GetMainCharacter();
mc.ship.WaterLine = (mc.ship.WaterLine) + 0.1;

то не катит

и еще sti, stf - это как в делфи strtoint, strtofloat ?

и ешё хочу зделать отравленый кинжал а то от обычного мало толку, противоядие есть значит можна отравлять, как зделать может есть свойство такое?



Для начала пара вопросов..... Тебе зачем кинжал отравленый и что значит "а то от обычного мало толку" Если чтобы валить всех нафиг то это очень просто... в initItems пишешь строчки
makeref(itm,Items[n]);
itm.id = "blade28"; // ID должен быть своим Для того чтобы у других не появлялось
itm.groupID = BLADE_ITEM_TYPE;
itm.name = "itmname_blade28";
itm.describe = "itmdescr_blade28"; // в ItemsDescribe.txt описание твоей супер заточки
itm.folder = "items";
itm.model = "blade22"; //может быть любая тебе понравившаяся
itm.picIndex = 13;
itm.picTexture = "ITEMS_8";
itm.price = 12000;
itm.dmg_min = 835.0; // тут Мах. наносимяый урон от твоего ножичка - ставь от души
itm.dmg_max = 750.0; // здесь Min.
itm.piercing = 100.0; //здесь пробой брони
itm.minlevel = 10;
itm.rare = 0.01;
itm.block = 100.0; //а здесь защита
itm.param.time = 0.1;
itm.param.colorstart = argb(64, 64, 64, 64);
itm.param.colorend = argb(0, 32, 32, 32);
n++;

Вуаля..... Аналогично можно и над пистолем поизгаляться, и над пушками, и карабликами Главное cоздавай свои ID чтобы не нарваться ненароком на свое же оружие в дурных руках

Автор: ALexusB Jul 14 2009, 20:03

2Alexad_D
Инфу не постиг, многа букаф, а времени вникать нет. Головы из ПКМ не помню, тк было давно, в КВЛ уже не было голов. Но точно можно, делал же. Делай, как у всех и все будет ок.
Как последний совет -
1 у тебя может быть своя модель, которую не ест двиг, потому нет
2 в .ани файле нужно приписать модель, тк при копировании там старая.

Это все, что вспомнил.

Автор: Alexad_D Jul 15 2009, 10:27

Цитата(ALexusB @ Jul 14 2009, 20:03) *

2Alexad_D
Инфу не постиг, многа букаф, а времени вникать нет. Головы из ПКМ не помню, тк было давно, в КВЛ уже не было голов. Но точно можно, делал же. Делай, как у всех и все будет ок.
Как последний совет -
1 у тебя может быть своя модель, которую не ест двиг, потому нет
2 в .ани файле нужно приписать модель, тк при копировании там старая.

Это все, что вспомнил.



Сама то модель роботает в игре.... Да и у Моргановских Данек1,2,3 в ани прописана стандартная Даниель. Да ладно как нибудь разберусь

Автор: korsar-fan Jul 17 2009, 07:27

Прописываю локаторы через TOOL. x, y, z - это потятно. А вот xx.xz.xy и т.д.
Я так понял они отвечают куда смотрит чел, только все равно не понятно, какие из них изменять, чтобы поменять положение.

Изображение

Автор: ALexusB Jul 17 2009, 08:55

Копировать из других локаторов в этой локации само надежное, ну и подбирать дальше тыком. Это тангенсы чего-то, не разбирался, всегда хватало примера других локаторов.

Автор: Alexad_D Jul 19 2009, 13:32

Скачал пару дней назад ВМЛ (или КВЛ короче ту что на ПКМ ставят) и вот что надыбал. В свою игру, можно внести изменения несмотря на то что код закрыт! Особенность сохранение игры дает такую возможность это сделать через сейв. Я вчера ночь покапался, поэксперементировал ..... короче уплывал я из перврго города (Кюрасю кажется) на мановаре с 999 орудий на борту и скорость перезарядки 0.1 сек, 99999 - вместимость трюма, 67 - прямая скорость и 130 - на развороте, с 2000 чел командой, и прочность -99999 (караблик этот можно и продать на любой верфи - бешеных денег стоит), благородным рыцарем, с 9999 НР (только польза от этого только с разной шантропой типа охотников за головами и им подобных), с pistol5 и blade34 (не помню как называется), всеми картами, полным набором перков и с 999.999.999 денег. Главное битность (или байтность) при редактировании не нарушить.... Думаю если хорошо и не спеша покапаться можно не только это поменять, Жаль только что правда в дальнейшей игре а не сразу при старте (а то уж очень нудно нужные секции в сейве искать).... А вот еще кстати, не знаю это только у меня так или.... Короче в начале игры, когда тебя высаживают, по пути в город надо защитить честь девушки. если вступиться за нее и быстренько перескочить в другую локацию (вход в пещеру) а потом тут-же назад то репутация повышается 1.gif О как!

Автор: delfin_ Jul 19 2009, 14:02

Цитата
Я вчера ночь покапался, поэксперементировал

То что ты сделал называется "ломать сейв" (читерство), и здесь это не приветствуется. Тем более что таким способом ничего толкового не сделать (не добавить новые предметы, не добавить квестов). Вообщем когда сделаешь что то хорошее - напиши. smile.gif
По второму вопросу, это у всех так, но это уже в отдельную http://legend.seaward.ru/forum/index.php?showtopic=12255. wink.gif

Автор: Alexad_D Jul 19 2009, 14:20

Цитата(delfin_ @ Jul 19 2009, 14:02) *

То что ты сделал называется "ломать сейв" (читерство), и здесь это не приветствуется. Тем более что таким способом ничего толкового не сделать (не добавить новые предметы, не добавить квестов). Вообщем когда сделаешь что то хорошее - напиши. smile.gif
По второму вопросу, это у всех так, но это уже в отдельную http://legend.seaward.ru/forum/index.php?showtopic=12255. wink.gif


Прошу прощение за незнание терминалогии.....Правда незнание не освобождает от ответственности А по сему - замечание учту.....

Как привязать готовую модель сделанную к примеру в Maya, с помощью TOOLS к скелету и анимации. В Модел вивере я ее просматриваю вроде нормально.... А в игре такая свистопляска начинается. Если кто знает, то если можно по подробней, по шагово.....

Автор: korsar-fan Jul 19 2009, 15:15

В игре Сундук Мертвеца, сделаны полеты камеры. Как это вообще прописывают?
Изображение
Корабль стреляет по порту, и то как? huh.gif
Подскажите пожалуйста. smile.gif

Автор: ugeen Jul 19 2009, 21:44

Специальными сообщениями в двиг это делается, в двиг - модифицировааный для К3:CM - т.е. ни в чистых К3, ни в КВЛ ни в ГПК это не сделать (имеется в виду стрельба корабля в порту)

Автор: ALexusB Jul 20 2009, 13:17

Да, это докрутка КСМ, в ядре у нас нет.

Летать камерой можно и в ПКМ (см расстрел в ВМЛ) - то есть возможностей много.

Нужно юзать методы установки камеры в локатор и нацел ее на цель

См для примера диалог, когда камера наезжает - это и есть управление.
Локатора там нет - я координату бошки ГГ считал.
Соотв сделав скрипт смены по таймеру положений камеры можнос делать кино. Просто это достигается иначе, чем в КСМ, там прям анимация полета задается, как ресурс в папке с игрой.

Автор: Black Angel Jul 20 2009, 18:36

Я так понимаю вы тут говорите о стрельбе корабля по форту в КСМ в мейнменю.Я не ошибся?Если про это то это вопрос к тем кто делал ядро.Скриптово это даже в КГПК невозможно...
Так у меня вопрос по скрипту очередной...нет даже 2.
1.Почему в режиме файтмод не возможно воспроизвести левую анимацию(почесывание задницы например),а не стандартную боевую?
2.Какая функция отвечает за отображение сабель,пистолей,лечилок и тд на земле?И как чтобы эту отабраженую модель можно было бы поднять?

Автор: ALexusB Jul 20 2009, 20:09

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

Автор: Black Angel Jul 20 2009, 20:27

Цитата(ALexusB @ Jul 20 2009, 21:09) *

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

1-мне не надо ковырять ани.Просто это можно заменить в самих скриптах,но не об этом речь...Говорю ему плей анимацию,а он не пытается что либо делать,а сабля в ножнах все прекрасно работает.Это ядро или очередная проверка в скриптах?
2-а если без локатора?Взять координаты и пустить их через фор или вайл.Сендмеседж не катит,так как ему нужен итем_файндитеммодел и на этом инте мы выдает ерор и выбрасывает в винду.В чем проблема то?
Да и еще тут вещь такая почему если писать equip.pchar.blade он ид не находит?

Автор: Warship Jul 21 2009, 05:31

Цитата(Black Angel @ Jul 21 2009, 04:27) *

1-мне не надо ковырять ани.Просто это можно заменить в самих скриптах,но не об этом речь...Говорю ему плей анимацию,а он не пытается что либо делать,а сабля в ножнах все прекрасно работает.Это ядро или очередная проверка в скриптах?

Анимацию могут воспроизводить только актеры. Делай ГГ актером и только тогда проигрывай анимацию.

Цитата(Black Angel @ Jul 21 2009, 04:27) *

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

Без СендМессадж никак не положить по координатам.
С СендМессадж можно, но тогда при заступе ГГ на модельку ее низя будет взять, т.е. это просто вывод модельки в локацию.

На вскидку, пример вывода модельки с использованием сообщения в движок:
Код

Object locationModel;
CreateEntity(&locationModel, "MODELR");
SendMessage(&locationModel, "ls", MSG_MODEL_LOAD_GEO, "mirror"); // Название модельки из Resource/MODELS/
SendMessage(&locationModel, "ls", MSG_MODEL_SET_TECHNIQUE, "EnvironmentShader"); // Техника рендера
LayerAddObject("execute", &locationModel, ITEMS_LAYER);
LayerAddObject("realize", &locationModel, ITEMS_LAYER);
SendMessage(&locationModel, "lffffffffffff", MSG_MODEL_SET_POSITION, 33.6, 3.5, 87.3, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0);


Последнее сообщение - собсно координаты модельки:
x, y, z, xx, xy, xz, yx, yy, yz, zx, zy, zz

Цитата(Black Angel @ Jul 21 2009, 04:27) *

Да и еще тут вещь такая почему если писать equip.pchar.blade он ид не находит?

Нужно
PChar.Equip.Blade = _itemID;

Но вот так аттрибутами прописывать - табу. Для этого есть спец функция
void EquipCharacterByItem(ref _chref, String _itemID);

Автор: Alexad_D Jul 21 2009, 14:37

ALexusB!!! У меня вопрос к тебе... как внедрить свои модели в ПКМ - людей, корабли, здания и пр.? Как привязать людей к скелету, анимации и пр.? В хелпе по тулсу, то что я перевел, дает весма туманное предстовление о том как это сделать. Я хочу поменять практически все в игре начиная от моделей людей, кораблей и зданий, кончая квестовой линейкой Так скать - Корсары 400 лет спустя или в поисках пиратских кладов.... Сценарий сюжета уже набросан. Я уже ко многим и на разных форумах пристовал с этим но.... начинают умначать и объяснять то в чем сами имеют чисто теоретическое понятие те, кто сам не пробовал, а те кто знает как - почему то молчат....

Модели сделаны в майя 5 и экспортированы в gm, текстуры в тх - так что в гм-вивере они просматриваются тектурированые

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

Автор: ALexusB Jul 21 2009, 14:54

Внедрять в скрипты аналогично тем, что там есть. Искать работающий корабли, НПС и смотреть, где он прописан. Прописать рядом.
Если речь идет о новых своих 3Д моделях - не ко мне. Не понимаю и понимать не пытаюсь.

Автор: Black Angel Jul 21 2009, 18:27

Но вот так аттрибутами прописывать - табу. Для этого есть спец функция
void EquipCharacterByItem(ref _chref, String _itemID);
[/quote]
Анимация проигрывается но не так как надо-он саблю в ножны убирает.
Попробовал так как ты написал-модель не появилась по заданым координатам.Что не так?

Автор: Warship Jul 22 2009, 01:30

Код рабочий, я аналогичным свет маякам в море ставил.

Проверь координаты - мож куда-то в дом попадают и модельку не видно просто. smile.gif
Ну и если ставить в режиме моря, то нужно юзать два других слоя - SEA_EXECUTE и SEA_REALIZE.

Автор: Black Angel Jul 22 2009, 05:45

Проверь координаты - мож куда-то в дом попадают и модельку не видно просто. smile.gif
Ну и если ставить в режиме моря, то нужно юзать два других слоя - SEA_EXECUTE и SEA_REALIZE.
[/quote]
Координаты рабочие на 100%.Вот бутылочку лечилку отображают,а саблю,пистолет-нет.Не могу понять почему когда я беру блейд99 использую функцию итемс_итемМоделс он в сендМеседж берет блейд9...А можно так написать itemID = pchar.Equip.Blade;?

Автор: Alexad_D Jul 22 2009, 09:28

Да речь идет именно о своих 3Д-моделях.... Не могу привязать модель к анимации. Скриптами то я их прописываю (это не сложно) А вот их движения (анимация) даже кривым и то с большой натяжкой назвать можно.....

Автор: Black Angel Jul 24 2009, 19:02

Народ объясните начинающему кодеру что здесь не правильно?

Код

    aref    Item;
    string  itemId;
Log_SetStringToLog("Blade= " + Pchar.equip.blade);
    itemId = Pchar.equip.blade;
//    Log_SetStringToLog(itemId);
int  x = Items_FindItem(itemId, &Items[itemId]);
    if (x != -1)
    {
       if (!CheckAttribute(Item, "model") || Item.model == "")
        {
            Trace("SetRandItemShow: no model for item "+Item.id);
            return -1;
        }
        GetCharacterPos(pchar, &locx, &locy, &locz);
        Items_LoadModel(&itemModels[itemId], &Items[itemId]);
        SendMessage(&itemModels[itemId], "lffffffffffff", MSG_MODEL_SET_POSITION, locx, locy, locz, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0);

Почему он мне выводит не ту саблю?

Автор: Warship Jul 25 2009, 05:09

1. За место itemId = Pchar.equip.blade; юзать itemId = GetCharacterEquipByGroup(PChar, BLADE_ITEM_TYPE);
Хотя, это не так уж и критично.

2. Функция Items_FindItem(itemId, &Items[itemId]); - скриптами не поддерживаются ассоциативные массивы, т.е. запись &Items[itemId] даст ошибку.
Нужно тогда уж &Items[x].

3. Таже функция Items_FindItem(itemId, &Items[itemId]); - даже при соблюдениии пункта выше, она затрет все, что было в Items[x], а это как-раз предмет.
Там в методе обьявлена переменная Item - в нее и записывай, т.е. int x = Items_FindItem(itemId, &Item);

4. Функция Items_LoadModel(&itemModels[itemId], &Items[itemId]); - тож самое, что пункты 2 и 3.
Нужно Items_LoadModel(&itemModels[x], Item);

5. СендМессадж - ошибка из пункта 2 - &itemModels[itemId], нужно &itemModels[x].

6. Не обьявлены переменные locx ... locz;

Итого, если более-менее нормально переписать тело функции, получим:

Код

    aref Item;
    string itemId = GetCharacterEquipByGroup(PChar, BLADE_ITEM_TYPE);
    float locx, locy, locz;
    int x;

    if(itemId != "")
    {
        x = Items_FindItem(itemId, &Item);

        if(x != -1)
        {
            if(CheckAttribute(Item, "model") && Item.model != "")
            {
                GetCharacterPos(pchar, &locx, &locy, &locz);
                Items_LoadModel(&itemModels[x], Item);
                SendMessage(&itemModels[x], "lffffffffffff", MSG_MODEL_SET_POSITION, locx, locy, locz, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0);
            }
        }
    }

Автор: Black Angel Jul 25 2009, 11:57

Цитата(Warship @ Jul 25 2009, 06:09) *

1. За место itemId = Pchar.equip.blade; юзать itemId = GetCharacterEquipByGroup(PChar, BLADE_ITEM_TYPE);
Хотя, это не так уж и критично.

2. Функция Items_FindItem(itemId, &Items[itemId]); - скриптами не поддерживаются ассоциативные массивы, т.е. запись &Items[itemId] даст ошибку.
Нужно тогда уж &Items[x].

3. Таже функция Items_FindItem(itemId, &Items[itemId]); - даже при соблюдениии пункта выше, она затрет все, что было в Items[x], а это как-раз предмет.
Там в методе обьявлена переменная Item - в нее и записывай, т.е. int x = Items_FindItem(itemId, &Item);

4. Функция Items_LoadModel(&itemModels[itemId], &Items[itemId]); - тож самое, что пункты 2 и 3.
Нужно Items_LoadModel(&itemModels[x], Item);

5. СендМессадж - ошибка из пункта 2 - &itemModels[itemId], нужно &itemModels[x].

6. Не обьявлены переменные locx ... locz;

Итого, если более-менее нормально переписать тело функции, получим:
Код



Спасибо. По 6 пункту могу сказать только то что эти переменые уже были объявлены выше....
При использовании
itemId = GetCharacterEquipByGroup(PChar, BLADE_ITEM_TYPE);
код вообще не работал, в смысле это тело функции не обрабатывалось вообще.
x = Items_FindItem(itemId, &Item); - не прокатило пробовал раньше
хотя возможно это из-за неправильной постройки дерева функции
Но все равно спасибо smile.gif Сегодня попробую

Автор: Black Angel Jul 29 2009, 22:46

Подскажите пожалуйста,как заставить вражеского капитана(не квестового,а любого) во время обордажа появляться не в каюте,а на палубе вместе со всеми?

Автор: ALexusB Jul 29 2009, 23:21

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

Автор: Black Angel Jul 30 2009, 00:29

Цитата(ALexusB @ Jul 30 2009, 00:21) *

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

Вызов каюты я убрал,а вот где и в какой момент создается нпс-капитан не понял.А какая функция определяет жив ли нпс или нет?

Автор: Etien Jul 30 2009, 00:36

у меня вопрос, а как в пкм с открытым кодом содать и разместить офицера, скажем в таверне, и чтоб в диалоге его нанаять? dry.gif

Автор: navy Jul 30 2009, 07:36

Цитата
Копировать из других локаторов в этой локации само надежное, ну и подбирать дальше тыком. Это тангенсы чего-то, не разбирался, всегда хватало примера других локаторов.

это направления для локаторов... т.е вектора.

Зачем, разве нельзя их сейчас нанять?... если ты хочешь сделать квестового офицера, то тебе надо завести его в файле персонажей текущей локации, посадить в таверну и дать отдельный диалог.

Автор: Black Angel Jul 31 2009, 21:02

Цитата(ALexusB @ Jul 30 2009, 00:21) *

...добавив на один из локаторов абордаже НПС-кэпа, повесив, если нужно, на его убийство досрочное прекращение боя.

До какого или после кокого момента надо делать проверку на смерть кэпа?

Автор: ALexusB Aug 1 2009, 09:41

А это по вкусу. Какие цели ставятся. Очевидно, проверять смерть нужно при наличии кэпа, соотв. как добавил так и проверять.
По умолчанию там (на палубе) будет проверка на убиение всех врагов. Если нужно сохранить часть матросов (сдались в плен), то можно это отловить на убийство кэпа.
Кэпа сделать боссом уровня, чтоб он отличался от простых матросов крутизной. Тогда будет в балансе все.

Это как бы я делал такой мод, если нужно было бы без каюты делать абордаж вообще.
Но если речь идет о серии КВЛ-ГПК, то такой мод поломает часть квестов, тк там диалоги в каюте и шмот в сундуках, а также сдача в плен при заходе в каюту проверяется второй раз.

Автор: Black Angel Aug 1 2009, 11:07

Цитата(ALexusB @ Aug 1 2009, 10:41) *

Кэпа сделать боссом уровня, чтоб он отличался от простых матросов крутизной. Тогда будет в балансе все.

Это как бы я делал такой мод, если нужно было бы без каюты делать абордаж вообще.
Но если речь идет о серии КВЛ-ГПК, то такой мод поломает часть квестов, тк там диалоги в каюте и шмот в сундуках, а также сдача в плен при заходе в каюту проверяется второй раз.

А как его босом сделать?
На счет вещей в сандуке в каюте-после абордажа табличка найдено тото и тото.
Диалог и во время боя идет хорошо smile.gif в этом сам вчера убедился.Главное до него быстро добежать иначе при мин хипов он будет тупо стоять,тк гг нет в радиусе диалога.
Если так вот сделать нормально будет со стороны баланса?

Автор: Scatimon Aug 2 2009, 09:53

По балансу: Это кароче вопрос что-то вроде: "вы знаете вот в машине сигналку ставлю, не знаете каким цветом лучше провот пустить фары...".
Это все дело самого электрика. Тоесть вопрос про "как лучше для баланса" не может найти ответа, ибо хз какой баланс хочешь видеть ты.

Про боса: Босом сделать можно по разному. Мона записать еще одну глобальную переменную, сунуть туда либо ид капитана, либо индекс его (индекс будет лучше с точки зрения производительности).
Мона просто постоянно присваивать капитану обязательный ID. Например BoardingCap. И при постановке на палубу матросни, дать капитану привелегии. Так же поставить проверку на "убили капитана шанс на сдачу в плен остальных матросов". Ставить его в определенный локатор. Ну в общем все что угодно когда его из толпы определишь.

Автор: navy Aug 2 2009, 11:23

Цитата
А как его босом сделать?

дать крутые статы, и сделать лидером группы.. плюс добавить проверку сразу на смерть данного НПС

Автор: Etien Aug 4 2009, 14:39

я уже задавал ворос, но никто ничего не ответил, если я создам персонажа в локации города, что нужно написать в его диалоге, чтоб он присоединился ко мне в качестве офицера, как в "ВМЛ" или "ПКМ", в квесте странные вещи творят в арх , мальтийский рыцарь присоединился к гг,
я посмотрел в диалоге, там добавили
case "first_time_Masse_5":
dialog.text = DLG_TEXT[16];
link.l1 = DLG_TEXT[17];
link.l1.go = "exit";
AddDialogExitQuest("masse_becomes_officer");
pchar.quest.ANIMISTS = "to_muelle_for_rumors";
break;

case "Exit":
DialogExit();

посто сам я плохо во всем этом разбираюсь, покапался в фак е о диалогах, ну вообщем не знаю что делать, ну вот , мож кто поможет? worthy.gif

Автор: ALexusB Aug 4 2009, 14:50

Не бросать раскопки кода посредине, а далее изучать ветку "masse_becomes_officer" в квест_реакт.с файле
и сделатьк ак там.

Общий совет (всем, кто хочет быстро стать знатаком скриптов)
Юзайте поиск по папке со скриптами. например, ТоталКомендер Аль-Ф7
И находите все места нужного вам куска кода, метода, "имя квеста" и прочего. И читайте код!
Сложность возникает только тогда, когда ноги кода ведут в ядро SendMessage - вот тут да, токо методом эксперементов можно узнать (ну или спрашивать, тк я или знаю, или могу в ядре посмотреть smile.gif)
Вот без ядра жить было тяжко - по 5ч на раскопку 1 строки могло уйти.

Автор: navy Aug 4 2009, 14:51

Смотри quest_reaction.c ветку masse_becomes_officer
Там будет что-то типа AddPassenger(pchar, sld, false); или AddOfficer(pchar, sld, false);

Автор: Etien Aug 4 2009, 15:26

Цитата(navy @ Aug 4 2009, 15:51) *

Смотри quest_reaction.c ветку masse_becomes_officer
Там будет что-то типа AddPassenger(pchar, sld, false); или AddOfficer(pchar, sld, false);


Фу, biggrin.gif наконец нашел,
case "masse_becomes_officer":
AddQuestRecord("ANIMISTS", "24");
AddPassenger(pchar, characterFromID("Jaoquin de masse"), 0);
Characters[getCharacterIndex("Jaoquin de masse")].location = "none";
break;



ну что это собственно значит, и как это мне поможет?!

Автор: navy Aug 4 2009, 15:30

Разжевывать никто не будет. Как говорит Алекс "тарелки с голубой каёмкой кончились". Тебе уже дали максимум инфы для дальнейшего копания в коде.
AddPassenger(pchar, characterFromID("Jaoquin de masse"), 0);
эта строчка, как видно из названия функции, делает персонажа пассажиром у ГГ. Чтобы сделать его офицером что надо?

Автор: ALexusB Aug 4 2009, 15:30

Цитата
ну что это собственно значит, и как это мне поможет?!

http://legend.seaward.ru/forum/index.php?s=&showtopic=2666&view=findpost&p=287037
юзает совет с поиском по AddPassenger и ЧИТАЙ КОД (примеры использования)

Автор: Etien Aug 4 2009, 15:34

Цитата(navy @ Aug 4 2009, 16:30) *

Чтобы сделать его офицером что надо?


Не понял вопрос

Автор: ALexusB Aug 4 2009, 15:36

===========
Кстати, еще совет всем по оптимизации (скорости).
Компы у всех мега быстрые и народ не парится, но учитесь писать код корректно, плис, сразу - в жизни пригодиться (на работе и вообще)

разберем родной код ПКМ
AddPassenger(pchar, characterFromID("Jaoquin de masse"), 0);
Characters[getCharacterIndex("Jaoquin de masse")].location = "none";

тут использованы characterFromID и getCharacterIndex
аждый из этих методов скрывает под собой ЦИКЛ по всему перечню НПС, а это 1000-2000. Значит, кто-то специально решил просадить комп и погонять 2000 циклов второй раз! В коде есть и более прикольные примеры и по 10 раз гоняются (а вы как думаете я ВМЛ тюнинговал, что оно стало 20 кораблей в бою тянуть? wink.gif)

как должно быть

переменная = characterFromID("Jaoquin de masse");
AddPassenger(pchar, переменная, false); // нефиг еще 0 и 1 вместо true и false юзать!
переменная.location = "none";

красота smile.gif

Автор: navy Aug 4 2009, 15:40

Цитата
Не понял вопрос

Как назначают офицера? В интерфейсе открывают список пассажиров и выбирают. Значит открываем код интерфейса и ищем место где назначаются Офицеры!
Не народ, если вы что-то делать хотите, включайте голову! Или вы думаете мы тут от Акеллы получили мега-книжку "Все секреты скриптов Storm2"?

Автор: Etien Aug 4 2009, 15:55

Было бы очень хоршо, если бы кто нибудь "разжевал" мне дальше или на е майле, или в личн. сооб., или

в теме фак по модификациям, или в асе, потомучто я "глобально" не понимаю как это сделать.

sad.gif sad.gif sad.gif

Автор: delfin_ Aug 4 2009, 16:00

Цитата(navy @ Aug 4 2009, 15:40) *

Или вы думаете мы тут от Акеллы получили мега-книжку "Все секреты скриптов Storm2"?

Ага, и видео пособие в примерах. 1.gif

Цитата(Etien @ Aug 4 2009, 15:55) *
я "глобально" не понимаю как это сделать.

Сдается мне рано ты за это взялся. Это как пилотирование на самолете, нельзя сразу сесть, и научится фигурам высшего пилотирования - для начало надо научится взлетать и приземлятся. wink.gif

Автор: Etien Aug 4 2009, 16:05

как называется диалог , " када в таверне нанимаешь офицера" ? (диалог с офицером) dry.gif

Автор: Scatimon Aug 4 2009, 18:03

Я хочу еще кое чего сказать по поводу изучения. Кароче все что тут спрашивал Etien и др. есть по сюжету ПКМ. ПКМ все проходили все знают. Открываешь програм - и пшел поиском фигачить цепляясь хоть за имена персов! Дальше цепочку событий отыскал по коду совпадающую с событиями по сюжету - и хреначь, разбирай по полкам. Все просто и понятно. Все функции с персами, компаньонами в большинстве слуаем валяюца в CharacterUtilite.c Добрые разрабы даже коменты подписывали, которые новички отказываюца читать. Сиди, копай, пробуй. С чего кто-то должен че-то расжевывать? А если человек вообще ниче не понимает, то объяснить ему че-то это титанический труд, который выполнять никому не охото. Я не то чтобы огрызаюсь на всех новоявленых кодеров - просто поусидчевее надо быть. Поиск + програм, поверьте больше ничего не надо все остальное придет само в процессе.

Автор: Etien Aug 4 2009, 18:06

ты мне лучше скажи как зовется диалог

Цитата(Etien @ Aug 4 2009, 17:05) *

как называется диалог , " када в таверне нанимаешь офицера" ? (диалог с офицером) dry.gif

Автор: Scatimon Aug 4 2009, 18:09

В папке с диалогами. Папку диалоги помогать искать?...

Автор: Etien Aug 4 2009, 18:19

Цитата(Scatimon @ Aug 4 2009, 19:09) *

В папке с диалогами. Папку диалоги помогать искать?...



mad.gif Я, что по твоему совсем кретин!!!!, я как вопрос задал, не где , а как называется!

Автор: korsar-fan Aug 4 2009, 18:21

Etien, до смеха доходит. Заходишь в папку с диалогами, запускаешь поиск по содержимому файлов, вводишь пару слов из диалога и все!

Автор: Etien Aug 4 2009, 18:31

все нашел , спс

Автор: Black Angel Aug 4 2009, 21:57

Как перса из группы убрать?

Автор: ALexusB Aug 4 2009, 22:33

LAi_SetCitizenTypeNoGroup(rChTo);

Автор: Black Angel Aug 4 2009, 22:53

Цитата(ALexusB @ Aug 4 2009, 23:33) *

LAi_SetCitizenTypeNoGroup(rChTo);

а мне не надо менять тип перса.А какого он типа я сам и не знаю,но надо его отделить от группы.Или просто в новую его перенести,что будет разумнее?

Автор: navy Aug 5 2009, 07:10

Смотри код этой функции, там где-то аттрибуты труться у перса. Но вроде там еще из объекта группы он удаляется.. короче копай код.
А вообще, должен знать какой тип перса, если уж он в группе. Вроде вот такой аттрибут chr.chr_ai.group = groupName;

Автор: Etien Aug 5 2009, 14:09

а есть какойнибудь мини faq "как правильно прописать квест в пкм" ?

Автор: Ero)(@ Aug 5 2009, 16:08

Два вопроса:
1. Как добавить гг в начале игры боевую тартану?
2. Как сделать так что бы корабль нельзя было купить или в море встретить?

Автор: VladNiP Aug 5 2009, 16:34

Цитата
1. Как добавить гг в начале игры боевую тартану?

То есть? Чтобы он пересел на тартану или добаить кораблик.
Если первое, то достаточно в файле ПКМ/PROGRAM/Characters/characners_unit.c найти строчку
ch.Ship.Type = SHIP_LUGGER_ENGLAND Заменить на нужный корабль.
Если создать, то в http://legend.seaward.ru/forum/index.php?showtopic=4807 теме есть подробный рецепт создания корабля.
Цитата
2. Как сделать так что бы корабль нельзя было купить или в море встретить?

В файле ships_unit.c под нужным кораблем написать: refShip.CanEncounter = false;
А именно, после статов.
К примеру возьму форт. biggrin.gif
Код
FORT
//-------------------------------------------------------------------------
    makeref(refShip,ShipsTypes[SHIP_FORT]);
    refShip.Name            = "Fort";
    refShip.Class           = 1;
    refShip.Cannon          = CANNON_TYPE_CANNON_LBS32;
    refShip.MaxCaliber      = 32;
    refShip.Weight            = Tonnes2CWT(22500);
    refShip.Capacity        = 27000;
    refShip.CannonsQuantity = 68;
    refShip.MaxCrew         = 6500;
    refShip.MinCrew         = 3000;
    refShip.SpeedRate        = 11.2;
    refShip.TurnRate        = 20;
    refShip.Price           = 36000;
    refShip.HP              = 54000;
    refShip.SP              = 100;

    refShip.CanEncounter    = false;

Вот так.

Автор: Ero)(@ Aug 5 2009, 17:42

Спасибо

Автор: Etien Aug 5 2009, 20:15

хелп! скажите что в коде не правильно
мне надо, чтоб когда в таверну гг зашел, в "актере" подошел к сидящему за столом нпс начился диалог.
а мой гг при входе в таверну начинает стоять , как штопр

Код
//Заведение квеста на диалог с "Portos"в таверне
         pchar.quest.Case1.win_condition.l1 = "location";
         pchar.quest.Case1.win_condition.l1.location = "Redmond_tavern";
         pchar.quest.Case1.win_condition = "Case1";
   //Перемещение Рortosa
    ChangeCharacterAddressGroup(characterFromID("Portos"), "Redmond_tavern", "Sit", "Sit5");
    LAi_SetSitType(characterFromID("Portos"));

    case "Case1":

        //задаем тип поведения Актер ГГ, чтобы не дергался и не свалил куда-нибудь
        LAi_SetActorType(PChar);

        //задаем тип поведения Актер сидящей НПС, чтобы не дергался и не свалил куда-нибудь
        LAi_SetSitType(characterFromID("Portos"));  

        //тут ставим необходимую ноду диалога непися, может быть любая ВАМ необходимая...
        //в данном случаее Первая встреча
        Characters[GetCharacterIndex("Portos")].Dialog.CurrentNode = "First time";

        //(наоборот)указываем второму персонажу <characterFromID("Portos")> следовать к первому pchar
        //по истечении времени 1.0 вызовется квест... тут его нет ""
        LAi_ActorFollow(characterFromID("Portos"), pchar, "dialog_portos", 5.0);
        LAi_ActorFollow(pchar, characterFromID("Portos"), "", 5.0);
        
  break;
        case "dialog_portos":
            //----------------
            LAi_ActorWaitDialog(Pchar, characterFromID("Portos"));
            LAi_ActorDialog(characterFromID("Portos"), Pchar, "", 5.0, 0);
        
  break;

  case "Case2":
        //возвращаем тип Плэйер ГГ
        LAi_SetPlayerType(Pchar);

Автор: VladNiP Aug 5 2009, 20:31

К примеру, где у тебя LAi_actor following. ( 2 скрипт ), у тебя там что-то пропушено.
Или так надо? Если хоть одно значение пропушено, то скрипт недействителен.
LAi_ActorFollow(pchar, characterFromID("Portos"), "", 5.0); - этот пропуск так и нужен?
LAi_ActorDialog(characterFromID("Portos"), Pchar, "", 5.0, 0); - аналогично.

Цитата
Эт я сюда на всякий случай впихнул

Зачем?
Скрипты не терпят таких вот "всяких" случаев.
лучше убери, если не предусмотрено.

Автор: Etien Aug 5 2009, 20:44

Цитата(VladNiP @ Aug 5 2009, 21:31) *

LAi_ActorFollow(pchar, characterFromID("Portos"), "", 5.0); - этот пропуск так и нужен?


Эт я сюда на всякий случай впихнул

а 2 ой вроде там нужен...
Цитата

хелп! скажите что в коде не правильно
мне надо, чтоб когда в таверну гг зашел, в "актере" подошел к сидящему за столом нпс начился диалог.
а мой гг при входе в таверну начинает стоять , как штопр

опираясь на это как сделать правильный код?

Автор: Scatimon Aug 5 2009, 22:02

Портоса заставил идти к ГГ в сидячем положении - не гут. Лана через 5 сек серавно заводица диалог. Но ты заставляешь ГГ слушать диалог портоса, а портоса заводить диалог с ГГ. Делаеца наоборот. Портос ждет диалога, ГГ по подходу должен завести диалог. Причем портоса жеательно тоже ввести в актера и указать сидеть в актере.

Автор: dolphin_sv Aug 5 2009, 22:18

Достаточно вот этого:

Код
case "Case1":

        LAi_SetActorType(PChar);
        ref chr = CharacterFromID("Portos");
        chr.Dialog.CurrentNode = "First time";
        // после диалога выполнится case 2 и ГГ перестанет быть актером
        LAi_ActorDialog(Pchar, chr, "Case2", 5.0, 0.5);
        
break;

case "Case2":
        LAi_SetPlayerType(Pchar);

Автор: ALexusB Aug 5 2009, 22:20

См мой пост про переменные и лишние циклы по 2000 итераций - у тебя (Etien) жутко неоптимальный код, в каждой строке вызов портоса через метод его поиска (цикл)

Автор: navy Aug 6 2009, 07:04

Кроме того, как ты представляешь сидящего НПС идущего к твоему ГГ? Не надо пихать все подряд, разберись сначала, что и за что отвечает. Потом пишется ОСОЗНАННЫЙ код, а не набор функций.

Автор: VladNiP Aug 6 2009, 12:38

Как сделать, чтобы на фортах стояли пушки, которые сделал сам.
Допустим, я сделал 48-фунтовые пушки. Как их установить на все форты?
И еще, являются ли хорошими параметрами для такого орудия 48 фунта:
Дальность - 1400 футов.
Перезарядка - 75 секунд.
Цена - 10000
Коэффицент урона - 6.0.

Код
makeref(rCannon,Cannon[CANNON_TYPE_CANNON_LBS48]);
    rCannon.type = CANNON_NAME_SPECIAL_CANNON;
    rCannon.caliber = 48;
    rCannon.ReloadTime = 75;  // boal 40
    rCannon.Cost = 10000;
    rCannon.Weight = 90;
    rCannon.FireAngMax = 0.60;
    rCannon.FireAngMin = -0.35;
    rCannon.DamageMultiply = 6.0;
    InitBaseCannons_CalcSpeedV0(&rCannon,1400.0);

В ПКМ делаю.

Автор: ALexusB Aug 6 2009, 12:53

Зависит от платформы и баланса в ней.
ПКМ-К3-ГПК
указывайте платформу, а то сча пошлю в код, а его там просто нет smile.gif

Автор: VladNiP Aug 6 2009, 13:07

ПКМ.
Пользуясь случаем, еще хотелось бы спросить: есть такой файл, где указаны модели для офицеров, которых можно нанять в таверне? Иными словами, чтобы у человека, который появляется в таверне в качесте офицера была определенная модель и текстура.

Автор: navy Aug 6 2009, 13:33

Есть файл, где генерятся офицеры, там рандомно выбирается модель. Название его в ПКМ уже не помню совсем.

Автор: ALexusB Aug 6 2009, 13:58

Пушки на форт ставятся на капитане форта - форт - это каменный корабль, который не плавает smile.gif

см метод с проверкой Fort_CheckAttributes в AiFort и копай от него к установке на капитанах форта. Где в ПКМ, не помню.

Автор: Alexad_D Aug 6 2009, 23:07

Цитата(VladNiP @ Aug 6 2009, 13:07) *

ПКМ.
Пользуясь случаем, еще хотелось бы спросить: есть такой файл, где указаны модели для офицеров, которых можно нанять в таверне? Иными словами, чтобы у человека, который появляется в таверне в качесте офицера была определенная модель и текстура.




Изменения желательно делать в 2 файлх - nations_init.с - по пути - Corsairs2\PROGRAM\NATIONS
находишь и изменяшь примерно так......

for(int i = 0; i < MAX_NATIONS; i++)
{
makeref(rNation,Nations[i]);
rNation.boardingModel.player.m0 = "твоя выбранная модель";
rNation.boardingModel.player.m0.ani = "man или woman -зависит от выбраной модели ";
rNation.boardingModel.player.m1 = "matros1";
rNation.boardingModel.player.m1.ani = "man";

Это твой экипаж..... а офицеры в - LandEnc_init.с - по пути Corsairs2\PROGRAM\LandEncounters

делаешь так ....

LandEncounters[n].char1.model1 = "твоя выбранная модель";
LandEncounters[n].char1.model1.ani = "man или woman -зависит от выбраной модели";

LandEncounters[n].char1.model2 = "morpeh2";
LandEncounters[n].char1.model2.ani = "man"



Ну а теперь с пушками на форте....Если я конечно правильно понял твой вопрос, то ..... AlexusB тебе уже подсказал что форт это каменный карабль поэтому и искать надо в - Ships_init.с но.....

Во первых твои пушки должны еще быть прописаными в Cannons.h К примеру ты создал супер-пупер кулеврину - CULVERINE_SUP для форта, значит первым делом ты ее прописываешь так.....



#define CANNON_TYPES_QUANTITY 9 // увеличиваешь на единицу..... т.е. если было 8 то теперь на твою пушку стало больше, знасит - 9

#define CANNON_TYPE_CULVERINE_LBS12 0
#define CANNON_TYPE_CULVERINE_LBS16 1
#define CANNON_TYPE_CULVERINE_LBS24 2
#define CANNON_TYPE_CULVERINE_LBS32 3
#define CANNON_TYPE_CANNON_LBS12 4
#define CANNON_TYPE_CANNON_LBS16 5
#define CANNON_TYPE_CANNON_LBS24 6
#define CANNON_TYPE_CANNON_LBS32 7
#define CANNON_TYPE_CULVERINE_SUP 8 // ....и прописываешь свою пушку

Теперь в - Cannons_init.с создаешь свою пушку где прописываются ее характеристики, ну к примеру так:

makeref(rCannon,Cannon[CANNON_TYPE_CULVERINE_SUP]);
rCannon.type = CANNON_NAME_CULVERINE;
rCannon.caliber = 32;
rCannon.ReloadTime = 1.5;
rCannon.Cost = 80000;
rCannon.Weight = 20;
rCannon.FireAngMax = 0.60;
rCannon.FireAngMin = -0.35;
rCannon.DamageMultiply = 5;
InitBaseCannons_CalcSpeedV0(&rCannon,1000.0);

в - Ships_init.с

//-------------------------------------------------------------------------
// FORT
//-------------------------------------------------------------------------
makeref(refShip,ShipsTypes[SHIP_FORT]);
refShip.Name = "Fort";
refShip.Class = 1;
refShip.Cannon = CANNON_TYPE_CULVERINE_SUP; // вот здесь вписываешь свою супер пушку
refShip.MaxCaliber = 32;
refShip.Weight = Tonnes2CWT(22500);
refShip.Capacity = 27000;
refShip.CannonsQuantity = 68;
refShip.MaxCrew = 6500;
refShip.MinCrew = 3000;
refShip.SpeedRate = 11.2;
refShip.TurnRate = 20;
refShip.Price = 36000;
refShip.HP = 54000;
refShip.SP = 100;

refShip.CanEncounter = false;


У уже только после этого вооружаешь свои форты своей супер пушкой в - FortCommandants.с - вешая их на командиров фортов. Меняешь в строках с .....

ch.Fort.Cannons.Type.1 = CANNON_TYPE_CULVERINE_LBS24;
ch.Fort.Cannons.Type.2 = CANNON_TYPE_CANNON_LBS32;

на.....

ch.Fort.Cannons.Type.1 = CANNON_TYPE_CULVERINE_SUP;
ch.Fort.Cannons.Type.2 = CANNON_TYPE_CULVERINE_SUP;

Ну примерно вот так..... Извини если излишне подробно, но ..... нас и другие читают

Автор: Alexad_D Aug 7 2009, 12:46

Цитата(Etien @ Jul 30 2009, 00:36) *

у меня вопрос, а как в пкм с открытым кодом содать и разместить офицера, скажем в таверне, и чтоб в диалоге его нанаять? dry.gif



Я тут прочитал все твои сообщения..... А по конкретней нельзя что ты хочешь? Например - Я хочув игре, войдя туда то, увидеть того-то и чтобы он (или я) сделал то-то а потом вот так-то и вот и так-то стало. Тогда и посоветуют люди что и как тебе сделать и где и что копать а то некоторые твои вопросы напоминают что то типа:
- Как поиграть в игру?
- Ее надо запустить
- А как ее запустить?
- Надо открыть папку с игрой и запусть екзешник
- Я что тупой что ли...... Я просто не знаю где находиться папка с игрой и что такое экзешник?
Прости брат..... но уж очень похоже .....

Автор: Alexad_D Aug 7 2009, 13:34

Поэксперементируй над шлейфом от траектории полета снаряда из пушки да еще на краблик поставить не 30-100 пушек а 1-2 переделаную с большей дальностью и наносимым уроном..... выстрел напоминает запуск ПТУРСа а еще к этому Экипаж Данек в ОМОНовской форме и с дубинками, гасящие на абордажаж врагов Это выглядит прикольно..... lol.gif

Автор: Mr.proper Aug 15 2009, 10:30

Вопрос:прописываю путь перса,а он не идет застыл на месте что не так сделал???

Автор: navy Aug 15 2009, 19:19

что значит прописываю путь? код показывай, так сказать ничего нельзя.

Автор: Alexad_D Aug 15 2009, 21:31

Цитата(Black Angel @ Jul 20 2009, 20:27) *

1-мне не надо ковырять ани.Просто это можно заменить в самих скриптах,но не об этом речь...Говорю ему плей анимацию,а он не пытается что либо делать,а сабля в ножнах все прекрасно работает.Это ядро или очередная проверка в скриптах?

Ни то не другое.......
Если тебя это еще интересует, то попробую тебе ответить на этот вопрос.
В ани файле прописывается начало и конец цикла по кадрового воспроизведение анимации на какую либо команду в скриптах (к примеру)
character.actions.attack.a7 = "attack_7";
А к примеру в ан - со 169 кадра по 206 записано воспроизведение обманного финта с уклонения от удара. В ани записываем это так.....
[attack_7]
start_time = 169
end_time = 206
Теперь при обращении в скриптах к "attack_7" - у нас будет воспроизводится именно и только этот финт
так как в него, в самой анимации модели, не заложен почес задницы (или кого другого места) и естественно, воспроизведение оного почеса, невозможно..... Но можно сделать так ....... (тоже к примеру)... с 1865 по 1889 - твой почес. Или в ани ставим:
[attack_7]
start_time = 1865
end_time = 1889
И тогда - ВМЕСТО - финта будет - почес, или в строке - character.actions.attack.a7 = вместо "attack_7" пишем "idle_misc_0" так как именно под ним у нас в ани - почес. Второй вариант - скриптовая замена - чисто теоретическая и мной лично не испытана но судя по замене walk на run возможна Но Сути это не меняет - В нашем случае НА ОДНОЙ КОМАНДЕ МОЖНО ВОСПРОИЗВЕСТИ ЛЮБУЮ АНИМАЦИЮ, НО ТОЛЬКО ОДИН ОПРЕДЕЛЕННЫЙ УЧАСТОК

Автор: Mr.proper Aug 15 2009, 22:56

Цитата(navy @ Aug 15 2009, 20:19) *

что значит прописываю путь? код показывай, так сказать ничего нельзя.

вот
lai_setstayhuberpointwindow(ch,"goto","goto10");
lai_setstayhuberpointmap(ch,"goto","goto9");

Автор: navy Aug 17 2009, 09:03

Это не путь, это просто указатель где ему стоять.

Автор: Mr.proper Aug 17 2009, 09:41

Цитата(navy @ Aug 17 2009, 09:03) *

Это не путь, это просто указатель где ему стоять.

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

Автор: navy Aug 17 2009, 10:01

не стартовая точка, а местоположение нпс.. в этом локаторе при загрузке локации. если ты хочешь, чтобы он шел из одного локатора в другой, то тебе нужен LAi_ActorGoToLocator

Автор: Alexad_D Aug 17 2009, 11:57

Мне на форуме не раз попадалось упоминание еррорлога что он должен формироваться в корне игры очень удобно когда вносишь изменения А у меня почему то ничего такого нет - только системлог. В ини, тоже вроде ничего про это нет. Может кто подскажет что куда надо вписать чтобы он появился?
И еще если разрешить это:
safe_render = 0
texture_log = 0
geometry_log = 0
tracefilesoff = 0
numoftips = 0
codefiles = 0
runtimelog = 0
tracefiles = 0
memory_stats = 0
update_mem_profile = 0
Это вообще для чего?

Автор: Warship Aug 17 2009, 12:25

Кроме system.log и error.log еще есть compile.log - тоже нужная весчь.

Настройки примерно такие, но точно не помню, т.к. настраивал давно уже, + это для ГПК, поэтому привожу полностью два блока - [script] и [controls]

[script]
debuginfo = 1
codefiles = 0
runtimelog = 1
;tracefiles = 0

[controls]
ondebugkeys = 1

Автор: navy Aug 17 2009, 12:44

в engine.ini там что-то про дебаг

Автор: Alexad_D Aug 17 2009, 13:07

аха сделал так
[script]
debuginfo = 1

Перезагрузился запустил игру и ........ни фига Только один систем лог как и был, и все..... ни еррор лога не дебаг. Да такого быть не может чтобы не одной ошибки не было..... Блин может так где в скриптах что изменил или закомментировал случайно. А переставлять игру это весь мой труд за лето коту под хвост там столько глобальных изменений

Автор: navy Aug 17 2009, 13:41

Посмотри еще, там где-то еще один параметр есть. Нет у меня этого файла под рукой. Это точно не в скриптах рулиться. Эррора может не быть при старте. Поиграй чуток.

Автор: Mr.proper Aug 17 2009, 15:32

nаvy,файл называется:character init,все делал как описывали fаq,играть уже замучался все не хочет ходить.

Автор: Alexad_D Aug 17 2009, 16:11

Короче я разобрался как запускать эрор лог но вот что интересно - игра стала виснуть при загрузке и в логе выдает вот это


RUNTIME ERROR - file: store\initStore.c; line: 117 --- Вот что 117 строке - goodName = Goods[i].Name;
missed attribute: name
no rAP data
RUNTIME ERROR - file: store\initStore.c; line: 69 - в 69 строке - goodName = Goods[i].Name;
missed attribute: name
RUNTIME ERROR - file: store\initStore.c; line: 84 - в 84 goodBasePrice = MakeInt(goods[i].Cost);
missed attribute: cost
RUNTIME ERROR - file: store\initStore.c; line: 88 - pRef.Goods.(goodName).Quantity = (1000 + Rand(20))*sti(goods[i].Units);
no rAP data
AClass ERROR n1
RUNTIME ERROR - file: characters\characterUtilite.c; line: 1046 - goodsName = Goods[i].Name;
missed attribute: name
no rAP data
RUNTIME ERROR - file: characters\characterUtilite.c; line: 157 - string goodsName = Goods[_Goods].name;
missed attribute: name
missed attribute: units
RUNTIME ERROR - file: store\goods.h; line: 55 - int unitSize = sti(Goods[iGoodType].Units);
no rAP data
RUNTIME ERROR - file: store\goods.h; line: 56 - int unitQuantity = (quantity+unitSize-1)/unitSize;
Divide by zero
RUNTIME ERROR - file: store\goods.h; line: 57 - int weight = unitQuantity*sti(Goods[iGoodType].Weight
missed attribute: weight

Отключаешь лог все нормально. У меня введены несколько новых товаров но вроде все нормально (при отключенном логе) И при грабеже судов эти товары есть и на островах кроме пиратского они в обычних магазинах к экспорту\импорту запрещены, только если контробандой заряжать(у меня по одному квесту подваливает чел, ну и типа заказ, на наркоту, под хорошее лавэ - короче вроде все как и задумывалось Порчему тогда идет завис при включенном логе Оно конечно, можно лог и отключить, забыть об этом и играть дальше wink.gif Но тут дело принципа. Интересно разобраться что не так.


А вот еще..... Mr.proper что конкретно ты хочешь? Кого, где и куда ты хочешь отправить Может и сумею помочь... А вообще можешь и сам ... у тебя же есть для образца куча персов на островах выбери подходящего какого по аналогии с тем что ты хочешь ну и вперед....

Автор: Warship Aug 17 2009, 16:34

missed attribute - это ошибка отсутствия аттрибута, как и написано smile.gif

Т.е. в момент получения значения как goodName = Goods[i].Name; аттрибута Name у товара просто нету.

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

Автор: Alexad_D Aug 17 2009, 16:44

Аха стоп!!!! По подробней если можно....... в смысле нет атрибута??? И еще.... Я же ведь начинаю игру заново у меня вообще не одного сейва нет. И почему тогда при отключенном логе старт нормальный

Автор: dolphin_sv Aug 17 2009, 18:08

Скорее всего не увеличино значение константы, в которой хранится максимальное кол-во товаров, а именно GOODS_QUANTITY

Автор: Alexad_D Aug 17 2009, 20:37

Цитата(Mr.proper @ Aug 17 2009, 15:32) *

nаvy,файл называется:character init,все делал как описывали fаq,играть уже замучался все не хочет ходить.
Постой друг.... Ты кого хочешь отправить? В character_init там куда ты скорее всего полез прописываются свойства ГГ а он управляется тобой по этому это и естественно что он стоит. Если ты хочешь отправить куда то какого другого перса то его надо сначала создать в папке Init - либо в списке офицеров, либо на каком ниб острове, например Оксбее......


Да это сколько раз уже писалось и приводились примеры...... Ты полазай это все где-то есть


Dolphin_sv. Простите где - скорее всего не увеличино значение константы, в которой хранится максимальное кол-во товаров, а именно GOODS_QUANTITY - если имелся ввиду перечень товаров то значение увеличено если нет то... если можно, где конкретно оно хранится и как выражается в числовом значении..... и вопрос так и остался открытым - почему завис происходит ТОЛЬКО при включенном логе при выключенном все нормально и работает как и было задумано

Автор: Mr.proper Aug 17 2009, 20:40

Извините перепутал,я сделал в ините,он появляется и не идет ни куда.как прописать путь и где?

Автор: dolphin_sv Aug 17 2009, 22:10

Цитата(Alexad_D @ Aug 17 2009, 20:37) *

[...]
Dolphin_sv. Простите где - скорее всего не увеличино значение константы, в которой хранится максимальное кол-во товаров, а именно GOODS_QUANTITY - если имелся ввиду перечень товаров то значение увеличено если нет то... если можно, где конкретно оно хранится и как выражается в числовом значении..... и вопрос так и остался открытым - почему завис происходит ТОЛЬКО при включенном логе при выключенном все нормально и работает как и было задумано


Файл STORE\goods.h

#define GOODS_QUANTITY 27

#define GOOD_BALLS 0
#define GOOD_GRAPES 1
...
#define GOOD_LEATHER 25
#define GOOD_OIL 26

так вот, если ты добавлял товары "как надо", то у тебя после масла должны быть индексы этих товаров, а константа GOODS_QUANTITY, должна быть <индекс последнего товара> + 1.

Автор: Alexad_D Aug 17 2009, 22:59

Цитата(dolphin_sv @ Aug 17 2009, 22:10) *

......так вот, если ты добавлял товары "как надо", то у тебя после масла должны быть индексы этих товаров, а константа GOODS_QUANTITY, должна быть <индекс последнего товара> + 1.

lol.gif Так вот любезнейший Dolphin_sv Не надо недооценивать собеседника..... Если бы вы чуточку внимательнее бы прочитали предыдущий пост ...а именно: "если имелся ввиду перечень товаров то значение увеличено" раз и "завис происходит ТОЛЬКО при включенном логе при выключенном все нормально и работает как и было задумано" два. А третье - вот кусок моего STORE\goods.h -

#define GOODS_QUANTITY 31 //Добавим новых товаров

#define GOOD_BALLS 0
#define GOOD_GRAPES 1

#define GOOD_OIL 26
#define GOOD_SLAVES 27
#define GOOD_KOKA 28
#define GOOD_WHORES 29
#define GOOD_WEAPON 30
И еще...... если Вы решили подловить меня на чем то, на этом форуме (простите но у меня сложилось именно такое мнение, учитывая наши с Вами разногласия на другом) То это не делает вам чести. Если же нет я буду рад ошибиться. И в том и в другом случаи я предлагаю Вам премирение хотя бы в рамках этого форума из уважения к остальным

Автор: dolphin_sv Aug 17 2009, 23:24

Тогда осталось проверить товары:
GOOD_SLAVES
GOOD_KOKA
GOOD_WHORES
GOOD_WEAPON

в файле initGoods.c, чтобы все поля товаров были проинициализированы

а вообще, сложно найти ошибку, не видя общей картины.

Автор: Alexad_D Aug 18 2009, 00:02

Цитата(dolphin_sv @ Aug 17 2009, 23:24) *

Да понимаете, я уже вроде все просмотрел
//Добавим характеристики новым товарам

//наркоты
Goods[GOOD_KOKA].Name = "Koka";
Goods[GOOD_KOKA].Weight = 2;
Goods[GOOD_KOKA].Cost = 260;
Goods[GOOD_KOKA].Units = 1;
Goods[GOOD_KOKA].Swim.Time = 10;
//бабы
Goods[GOOD_WHORES].Name = "whores";
Goods[GOOD_WHORES].Weight = 2;
Goods[GOOD_WHORES].Cost = 220;
Goods[GOOD_WHORES].Units = 1;
Goods[GOOD_WHORES].Swim.Time = 5;
//стволы
Goods[GOOD_WEAPON].Name = "weopon";
Goods[GOOD_WEAPON].Weight = 2;
Goods[GOOD_WEAPON].Cost = 300;
Goods[GOOD_WEAPON].Units = 1;
1.gif Самое смешное..... я уже писал, что если в engine.ini - поставить debuginfo = 0 Игра стартует - как надо быть! Да он у меня и был отключен раньше.... И он мне, постольку-поскольку.... Просто наткнулся где-то что вот, типа, если что не так, то можно прочитать error.log - там все ошибки игры прописываются - полезно при модинге. А у меня очень много времени уходило на поиск ошибок. Вот я и полез...... мол буду дальше что делать, так время с экономлю, если что. 3.gif А тут такое..... Вот меня любопытство и забрало..... Почему так???!!!!
=========================================
Warship - Рабы были изначально и их вводил не я. Потому здесь и не приводил

Navy - Да скорее всего так оно и есть - вы правы, какая нибудь мелочевка. Потому что лог растет, а ошибки в нем записаны зациклено. Надо просто отвлечься, лог отключить и поплавать, понаблюдать за товарами может что и проясниться wink.gif
Большое спасибо всем кто откликнулся

Автор: Warship Aug 18 2009, 00:09

А рабы как прописаны? Вы про них не забыли?

Автор: navy Aug 18 2009, 07:29

Игра виснет так как файловые операции загружают двиг. Т.е. запись в эрор лог, потом норм старт.

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

2пропер: в ините движения не делают. Только место положение начальное и начальный шаблон поведения. Стоять, ходить, сидеть и прочее.

Автор: Alexad_D Aug 19 2009, 22:19

Так он именно это и хотел..... чтобы созданый им перс просто шлялся по городу Я ему в ЛС посоветовал задать персу начальный шаблон примерно как у патруля....

ch.Dialog.Filename = "patrol_dialog.c";
ch.location = "Oxbay_town";
ch.location.group = "goto";
ch.location.locator = "goto22";

LAi_SetPatrolType(ch);
LAi_SetLoginTime(ch, 00.0, 24.00);
LAi_SetHP(ch, 380.0, 380.0);
LAi_group_MoveCharacter(ch, "ENGLAND_SOLDIERS");
ch.greeting = "Gr_Patrol";

Значит работает раз молчит целый день 1.gif

========================================================
lol.gif А нет...... ему теперь надо чтобы тот первый подбегал и мочил его... Подскажите вы ему, кто может, а то я сам не делал, Боюсь неправильно насоветую а сесть и специально с этим разбираться времени нет.

Автор: navy Aug 20 2009, 07:09

Блин, уже все разжевали!!! LAi_Actor ему в помощь.

Автор: Scatimon Aug 20 2009, 08:04

По коду ПКМ есть хелпы, в тхт. Там все методы описаны че и как работает (и актерские поведения и остальные). Алексус выкладывал целую пачку сиих хелпов собраных в архив. По боевке - в ПКМ по сюжету есть примеры боевки и в актерах и просто по группам. Как факт могу подсказать что актерская битва это квест про Артуа Вуази или как-то так, там на пиратском острове это происходит. А груповых боевок кучма.

Автор: navy Aug 20 2009, 08:20

Да и я выкладывал пример как сделать, чтобы НПС подходил к ГГ. Там только добавить боевку осталось.

Автор: Alexad_D Aug 22 2009, 19:58

Кто подскажет в чем дело.....
//Tutorial
//alexad_d --> Смена старта игры
Locations[n].id = "Tutorial_Deck";
Locations[n].id.label = "";
Locations[n].image = "";
locations[n].type = "house";
Locations[n].filespath.models = "locations\inside\Doubleflour_house"; //номер в гостинице
Locations[n].models.always.locators = "LH_F2_l";
Locations[n].models.always.tavern = "LH_F2";
Locations[n].models.always.window = "LH_F2_w";
Locations[n].models.always.window.tech = "LocationWindows";
Locations[n].models.always.window.level = 51;
Locations[n].models.day.charactersPatch = "LH_F2_p";
Locations[n].models.night.charactersPatch = "LH_F2_p";
Locations[n].environment.weather = "false";
Locations[n].environment.sea = "false";
Locations[n].reload.l1.name = "";
Locations[n].reload.l1.go = "";
Locations[n].reload.l1.emerge = "";
n = n + 1;

Старт есть, (в номере гостиницы), но все с тормозами пока не пройдешь тутор и не выйдешь в сл. локацию. Если менять старт в сидогс или не будет тутора или дофига что переделывать. И еще забыл добавить - как-то уж больно ярко. Пробовал вариации со значениями в Locations[n].models.always.window.level - какая-то фигня получается
********************************************************************************
**************
Пропер! Ты возьми любой диалог - по его имени (через поиск) найди и посмотри все - что, где и как на него ссылается ну и делай аналогично.

Автор: Mr.proper Aug 22 2009, 20:02

AlexusB дал в описаниях программирования пкм диалог как в к3 почти,а там в диалоге стоят номера 1,2 и т.д что не так?

Автор: Scatimon Aug 23 2009, 07:25

Alexad_D: Тутор повязан значит на локу. Посмори по эрор логу где ошибка. А по поводу света:
Locations[n].environment.weather = "true";
И все норм станет. Менять айдишник старта нужно именно в сиадогсе. И вручную перебросить в твою локу тутор. Причем с заменой локаторов, в ней может не быть названий что были в каюте.

Автор: Alexad_D Aug 23 2009, 09:31

Ну у меня была проблема с еррорлогом (при включенном висла игра), Но ради такого случая я ее переустановил начисто - логи пошли. Так теперь что мы имеем -
в квест локейшн меняем айди стартовой локации
//Tutorial
//Смена старта игры -->
Locations[n].id = "tutorial_deck"; <-- можно не менять
Locations[n].id.label = "";
Locations[n].image = "";
//Sound
locations[n].type = "house";
//Models
//Always
Locations[n].filespath.models = "locations\inside\Doubleflour_house";
Locations[n].models.always.locators = "LH_F2_l";
Locations[n].models.always.tavern = "LH_F2";
Locations[n].models.always.window = "LH_F2_w";
Locations[n].models.always.window.tech = "LocationWindows";
Locations[n].models.always.window.level = 51;
//Day
Locations[n].models.day.charactersPatch = "LH_F2_p";
//Night
Locations[n].models.night.charactersPatch = "LH_F2_p";
//Environment
Locations[n].environment.weather = "false";
Locations[n].environment.sea = "false";
//Reload map
Locations[n].reload.l1.name = "reload1";
Locations[n].reload.l1.go = "";
Locations[n].reload.l1.emerge = "";
n = n + 1;

В сидоксе.....
Смотрим - LoadMainCharacterInFirstLocation(mainchar.location,"", mainchar.location.from_sea); -
где (если я правильно понял) - mainchar.location - место для перса, а - mainchar.location.from_sea - для корабля Ну и следовательно ничего не трогаем.....

sTeleportLocName = "tutorial_deck";
ReloadProgressUpdate();
LoadMainCharacterInFirstLocation(sTeleportLocName, "", "Oxbay_port");

ReloadProgressEnd();

Запускаемся...... Жуткие тормаза - пока не пройдешь тутор и не выйдешь из таверны на улицу....... Смотрим логи......

В еррорлоге только одна ошибка
RUNTIME ERROR - file: weather\WhrWeather.c; line: 96
invalid index -1 [size:16]
RUNTIME ERROR - file: weather\WhrWeather.c; line: 96
invalid array index
Но мне это не о чем не сказало...... к сожалению sad.gif
В компиле вроде как есть подсказка.......
LoadLocation(ref loc) Oxbay_Tavern
LocationLoader: not loaded back model location.models.always.window, id = Oxbay_Tavern
LocLoadShips: Can't find Location.locators.ships in location: Oxbay_Tavern

______________________________________________________________________________
А, Забыл по поводу локаторов...... В каюте ГГ загружается в - релоад1 - у кровати...... в гостинице этот локатор у двери..... Боцман - в гото3..... в гостинице это у окна - такой расклад вполне приемлем - локаторы совпадают
саблю перепрописываем вместо рандитем в бокс

Автор: Scatimon Aug 23 2009, 12:00

Ну все ясно.

Код

//Night
Locations[n].models.night.charactersPatch = "LH_F2_p";
//Environment
Locations[n].environment.weather = "true";
Locations[n].environment.sea = "false";
//Reload map


И все норм будет.

Автор: Alexad_D Aug 23 2009, 13:06

Спасибо ...... заработало.....
Только вот если можно по подробней что это ........ ? Почему нужно именно так? Причем здесь погода? Они же в помещении.....
//Environment
Locations[n].environment.weather = "true";
Locations[n].environment.sea = "false";

Автор: Scatimon Aug 23 2009, 18:11

Кароче при первом лоаде нужно чтобы идентифицировалась погода, скажем так. Вот мы принудительно включем погоду в локации дом. Из косяков: тока дождик может лить в доме и се. Можно после прохождения тутора поставить на фалс обратно.

Автор: Alexad_D Aug 23 2009, 18:42

Цитата(Scatimon @ Aug 23 2009, 18:11) *

Из косяков: тока дождик может лить в доме и се. Можно после прохождения тутора поставить на фалс обратно.
А....! Ну теперь понятно почему раньше в туторе иногда "крыша в каюте текла" 1.gif А я блин еще подумал во хоть сейчас не будет. А тут вон оно что Михалыч. А что сложно этот косяк устранить? Хотя в принципе оно и не мешает Тутор то один раз проходить Верхнюю строчку то я не менял, так и оставил - Locations[n].id = "Tutorial_Deck"; Значит все таки я был прав нефиг в сидогс лезть - больше гемора было бы. Еще раз Спасибо

Автор: Mr.proper Aug 23 2009, 19:06

Цитата(Alexad_D @ Aug 22 2009, 19:58) *

Пропер! Ты возьми любой диалог - по его имени (через поиск) найди и посмотри все - что, где и как на него ссылается ну и делай аналогично.

Я сделал аналогично ни че не пашет,кто может скинуть инфу как делать диалоги в пкм?

Автор: Alexad_D Aug 23 2009, 20:35

Цитата(Mr.proper @ Aug 23 2009, 19:06) *

Я сделал аналогично ни че не пашет,кто может скинуть инфу как делать диалоги в пкм?
Это пипец какой-то........ lol.gif Ты можешь хотя бы пример привести как ты делал? Как тебе помочь если даже не знаешь как и что ты делал конкретно. Ошибку найти помогут, но делать за тебя никто не будет Какая тебе еще инфа нужна по диалогам? Все здесь есть на форуме. Поищи.
**********************************************
Вот держи -
http://legend.seaward.ru/forum/index.php?showtopic=4807&st=0&p=109995&#entry109995
Только читай внимательно - вникай. Это тебе не на уроке информатики

Автор: navy Aug 24 2009, 07:38

Цитата
Старт есть, (в номере гостиницы), но все с тормозами пока не пройдешь тутор и не выйдешь в сл. локацию. Если менять старт в сидогс или не будет тутора или дофига что переделывать. И еще забыл добавить - как-то уж больно ярко. Пробовал вариации со значениями в Locations

Внимательно смотри иниты в начале игры, когда начало на палубе. Это надо переделывать. Смотри квест_реакшн.с

Автор: Alexad_D Aug 24 2009, 09:00

Цитата(navy @ Aug 24 2009, 07:38) *

Внимательно смотри иниты в начале игры, когда начало на палубе. Это надо переделывать. Смотри квест_реакшн.с
Дело было не в бабине.... 1.gif Уже все работает .... Scatimon подсказал что надо, при первом старте, в локацию погоду навесить и стало все ОК

//Environment
Locations[n].environment.weather = "true"; //fix от Scatimon-a
Locations[n].environment.sea = "false";

Никогда бы не додумался сам 3.gif Я даже и не смотрел на эти пункты.

Автор: navy Aug 24 2009, 09:26

Цитата
Scatimon подсказал что надо, при первом старте, в локацию погоду навесить и стало все ОК

Проблема не только в этом. Смотри. Там куча инитов, отношения, нации и т.д.

Автор: Black Angel Aug 24 2009, 17:27

Кто напомнит старому сколеротику какой файл отвечает за расчет маневрености судна?Не надо путать с маневреным разворотом и шип_инит.с
Меня интересует то,что при нажатии клавиши право/лево руля корабль поворачивает.Вот где это в движке или же в скриптах?Если в скриптах,то какой файл?

Автор: Alexad_D Aug 24 2009, 18:04

Цитата(Black Angel @ Aug 24 2009, 17:27) *

......при нажатии клавиши право/лево руля корабль поворачивает. Вот где это ......

Или перефразируй вопрос, или это в - options - в корне игры, или в програмз\контрал\ init_pc.c и init_xbox.c
----------------------------------------------------------------------------

Navy - Так ведь я же глобально ничего не менял там больше ничего не тянется - просто простая подмена локации причем под тем же именем, даже номера локаторов в локации совпадают. Чуть только бут подредактировал чтобы более мене логично было..... из комнаты выгружаешься на второй этаж таверны , ну и малькому чуток путь подредактировал. Я так пробежался по началу игры - вроде как все в норм. Малькольм, тут же, в таверне начинает "нудеть" про экипаж ну и дальше по сценарию верфь, магазин, труба тоже все ОК но только в другой последовательности. Я потому и пошел этим путем. Вообще в самой игре изначально косяк, при начале новой игры, с инициализацией погоды т.к. если шел дождь то " крыша в каюте текла" и раньше...

********************************************************************************


Цитата(Black Angel @ Aug 24 2009, 18:51)
Хорошо.Где находится расчет скорости поворота судна?
Тогда не знаю - чем мог тем помог

Автор: Black Angel Aug 24 2009, 18:51

Цитата

Или перефразируй вопрос, или это в - options - в корне игры, или в програмз\контрал\ init_pc.c и init_xbox.


Хорошо.Где находится расчет скорости поворота судна?

Автор: Scatimon Aug 24 2009, 20:13

В sea_ai. Все там. Вроде даже в нескольких файлах. Ищи поиском по названию действия кнопки из init_pc.

Автор: ALexusB Aug 24 2009, 22:11

Цитата(Black Angel @ Aug 24 2009, 19:51) *

Хорошо.Где находится расчет скорости поворота судна?

смотря в какой версии (говорил - пишите игру). Во всех по -разному
в ПКМ применяются и задаются формулы учета скилов на поворот в AIShips
А вот в к3 и КВЛ (ГПК) в папке скриптс, но файлы разные, что-то типа ШипУтилс

Автор: navy Aug 25 2009, 09:14

Цитата
ам больше ничего не тянется

Посмотри ветку "Leaving_Oxbay" quest_reaction.c Тогда поймешь что там глобально не тянется biggrin.gif В принципе, если ты не меняешь начальный остров, то можно особо не переделывать, но все равно, внимательно изучи старт игры, иниты.

Автор: Alexad_D Aug 25 2009, 22:54

Цитата(navy @ Aug 25 2009, 09:14) *

Посмотри ветку "Leaving_Oxbay" quest_reaction.c .......внимательно изучи старт игры, иниты.
1.gif Посмотрел ..........и понял, что я смутно что там понял ..... 3.gif Хотя нет - кое что понял...... Можно смело чуть изменить начальный сюжет - к примеру в городке вместо английских солдат поставить каких-нибудь пиратов-корсаров типа это вольный пиратский город и смело от туда уплыть - потом он станет французским, немного подредактировать первый диалог с Селхардом - сделать что то типа - "Господин губернатор французы захватили Оксбей. Мы в состоянии войны с ними. Им ничто не мешает подтянуть войска и с суши взять штурмом Гринфорд. Самое время нанести удар пока они ослаблены после боя с пиратами" - Ну а дальше все по стандартному сюжету - в результате бравых действий Блейза и согласно сюжету он станет английским. 6.gif Все таки наверное придется лезть квест править т.к. надо свою Беатрис ( она сама подбигает и начинает подбивать меня захватить галеон месного торговцаи валить на нем нафиг с острова так как сюда прут французы ), да как то тюрьму вписать и дом местного "Смотрящего" (Стырил идею наглым оброзом из ВМЛ) 3.gif Ладно пойду реализовывать идею и новый сюжет в жизнь 1.gif
======================================================================

Короче вот что у меня получилось...... кое что не понятно.......
1. Вход в катакомбы я перенес из reload19 в reload10 Но вот с чем столкнулся - У меня игра начинается (после тутора) в таверне. Так вот выходишь в город - Выйти из города в джунгли и войти в катакомбы можно, но ....... если сначала выйти в порт а потом зайти в город опять, то они уже закрыты и не в джунгли, не в катакомбы из города не войти..... С тюрьмой и домом наместника все в порядке. Можно ли было туда раньше попасть или нельзя я не знаю я в самом начале игры туда попадать еще не пробовал.
2. С Беатрис - на нее заведен отдельный тип поведения - LAi_SetbeatriceType (т.к. иначе почему- то не фурычит анимация) В LAi_beatrice.c полностью все взято из LAi_officer.с - только officer везде заменено на beatrice. В чем фишка здесь - Как только я выхожу в город она сразу же бежит ко мне если я начинаю задираться с охраной или с горожанами она влазит в драку на моей стороне Хотя диалога с ней еще не было (он еще не готов стоит заглушка) только название вписано ch.Dialog.Filename = "baba_dialog.c"; В принципе меня это устраивает мне так и надо, но хотелось бы знать почему тогда так себя не ведут офицеры а тупо сидят и ждут пока я к ним сам подойду(по их же образцу) это из-за разных групп локаторов ( у офицеров sit, а у нее goto) или что?
================================================================================
================

Попробовал, убрал все свои изменения в игре на чистую........ Теперь я вообще не могу попасть из оксбея не в джунгли не в катакомбы т.к. в оксбей попадаю через порт.. версия игры не знаю какая, но изначально стоят исправления от 24.08.03

Автор: Black Angel Aug 27 2009, 23:20

А есть ли какой нибудь рефрешь на огни на корабле?Почему при смене погоды огни на судне не тухнут?Это движком не поддерживается?Я говорю про гпк

Автор: Warship Aug 27 2009, 23:40

Выключать функцией
void Ship_SetLightsOff(ref rCharacter, float fTime, bool bLights, bool bFlares, bool bNow)

Т.е., если нужно, чтобы за 3 секунды платно затухли, юзать как Ship_SetLightsOff(PChar, 3.0, true, true, false);
Если нужно, чтобы затухли сразу, последний параметр ставь в истину.

Включить динамически нельзя никак.

Автор: navy Aug 28 2009, 07:54

Цитата
Попробовал, убрал все свои изменения в игре на чистую........ Теперь я вообще не могу попасть из оксбея не в джунгли не в катакомбы т.к. в оксбей попадаю через порт.. версия игры не знаю какая, но изначально стоят исправления от 24.08.03

Включи квест лог в дебаге, увидишь какие квестовые прерывания отрабатывают.
Цитата
почему тогда так себя не ведут офицеры а тупо сидят и ждут пока я к ним сам подойду(по их же образцу) это из-за разных групп локаторов ( у офицеров sit, а у нее goto) или что?

Ты добавил ее в группу ГГ, поэтому она и ведет себя таким образом.

Автор: Alexad_D Aug 28 2009, 14:32

А вот события, как например - добавление/убавление денег, репутации, предметов, можно только через диалог или обязательно в квест реакшин вписывать это событие. Вот к примеру сидит мужик на земле тоскует, я подхожу спрашиваю - Что приуныл а он отвечает:
- жена за хлебом послала а я деньги потерял.
Я отвечаю:
- Так какие проблемы- сколько?
- 1000
- На тебе 1000
или
- Да пошел ты, раззява, следующий раз умнее будешь....

Ну это грубый пример конечно, но смысл что то вроде этого.... если дал, минус 1000. а репутация +5 а отказал деньги на месте но репутация -5

Автор: delfin_ Aug 28 2009, 14:48

С этим я баловался. Достаточно в диалогах прописать.

Автор: Black Angel Aug 28 2009, 19:30

Цитата(Warship @ Aug 28 2009, 00:40) *

Выключать функцией
void Ship_SetLightsOff(ref rCharacter, float fTime, bool bLights, bool bFlares, bool bNow)

Т.е., если нужно, чтобы за 3 секунды платно затухли, юзать как Ship_SetLightsOff(PChar, 3.0, true, true, false);
Если нужно, чтобы затухли сразу, последний параметр ставь в истину.

Включить динамически нельзя никак.

спасибо большое
в каком файле находятся проверки фортов на стрелять/не стрелять по вражеским судам?

Автор: Cyclopus Aug 28 2009, 19:42

Цитата(Black Angel @ Aug 28 2009, 22:30) *

спасибо большое
в каком файле находятся проверки фортов на стрелять/не стрелять по вражеским судам?

Насколько мне известно, в файле AIFort.c должен быть ответ.
Посмотрите там, кажется, видел там что-то подобное.
Вот путь: Пираты Карибского Моря\PROGRAM\SEA_AI\AIFort.c

Автор: Alexad_D Aug 29 2009, 10:01

При редакции стартового диалога согласно нового сюжета столкнулся вот с какой проблемой:
В диалоге есть три проверки на наличае комплектации оружия
1. Все ли оружие забрали из сундука
case "TakeWeapon":
if(CheckCharacterItem(Pchar, "blade28") == 0 || CheckCharacterItem(Pchar, "Spyglass1") == 0 || CheckCharacterItem(Pchar, "pistol7") == 0)

2. Все взяли из сундука но ничего не одели
case "EquipWeapon":
if(IsEquipCharacterByItem(Pchar, "blade28") == false && IsEquipCharacterByItem(Pchar, "pistol7") == false )

3. Забыли одеть саблю
case "EquipWeapon":
if(IsEquipCharacterByItem(Pchar, "blade28") == false && IsEquipCharacterByItem(Pchar, "pistol7") == true )

4. Забыли одеть пистолет
case "EquipWeapon":
if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == false )

5.Все одели
case "EquipWeapon":
if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == true )

Так вот в чем глюк - если одеть сначала саблю (как это в диалоге у Моргана),а потом пистолет то пистолет виден но меня перебрасывает на - "забыли одеть саблю"
но если одеть сначала пистолет а потом саблю диалог продолжается как положено но.... пистолета не видно пока не перегрузимся в сл.локацию.

Видно у Моргана тоже что то похожее было. В чем ошибка

Автор: Warship Aug 29 2009, 10:59

Что значит "не виден"? По твоему кода, что привел, точно ничего не видно. smile.gif

Давай весь кусок кода, мож у тя там переходы стоят неверные. smile.gif

Автор: Alexad_D Aug 29 2009, 13:44

Цитата(Warship @ Aug 29 2009, 10:59) *

Что значит "не виден"? По твоему кода, что привел, точно ничего не видно. smile.gif
Давай весь кусок кода, мож у тя там переходы стоят неверные. smile.gif

Не видно - это значит визуально не отображается (хотя и присутствует) 1.gif
А вот кусок кода - но толку то там же мои изменения и все в принципе работает если не считать описанный выше нюанс. Можно конечно прописать последовательность нацепливания оружия в тексте диалога, чтобы не заморачиваться smile.gif Просто интересен сам факт - ПОЧЕМУ ТАК!!!
Код
case "See_Weapon":            
            if(CheckCharacterItem(Pchar, "blade28") == 0 || CheckCharacterItem(Pchar, "Spyglass5") == 0 || CheckCharacterItem(Pchar, "pistol7") == 0)
            {
                NextDiag.TempNode = "TakeWeapon";
                dialog.text = DLG_TEXT[17];                           //Ничего не взято из сундука
                link.l1 = DLG_TEXT[18];
                link.l1.go = "Exit";
            }
/*            else
            {

                NextDiag.TempNode = "EquipWeapon";
                dialog.text = DLG_TEXT[19];                            //Ничего не одето из оружия
                link.l1 = DLG_TEXT[18];
                link.l1.go = "Exit";
            }*/
            if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == true && IsEquipCharacterByItem(Pchar, "Spyglass5") == true )
            {
                dialog.text = DLG_TEXT[22];
                link.l1 = DLG_TEXT[23];
                link.l1.go = "YesDeal";
                link.l2 = DLG_TEXT[34];
                link.l2.go = "refusal";
                link.l3 = DLG_TEXT[28];
                link.l3.go = "Continue_ToSeriousFight";
            }
            else
            {
                addDialogExitQuest("Tut_EquipWeapon");
                NextDiag.TempNode = "EquipWeapon";
                dialog.text = DLG_TEXT[19];                            //Ничего не одето из оружия
                link.l1 = DLG_TEXT[18];
                link.l1.go = "Exit";
            }

        break;

        case "EquipWeapon":
            //NextDiag.TempNode = "EquipWeapon";
            dialog.text = DLG_TEXT[24];
            link.l1 = DLG_TEXT[18];                                 //Взята только труба
            link.l1.go = "Exit";

            if(IsEquipCharacterByItem(Pchar, "blade1") == true && IsEquipCharacterByItem(Pchar, "pistol7") == false )
            {
                //Dialog.TempNode = "EquipWeapon";
                dialog.text = DLG_TEXT[25];             //забыли пехаль
                link.l1 = DLG_TEXT[18];
                link.l1.go = "Exit";
            }
            if(IsEquipCharacterByItem(Pchar, "blade28") == false && IsEquipCharacterByItem(Pchar, "pistol7") == true )
            {
                //Dialog.TempNode = "EquipWeapon";
                dialog.text = DLG_TEXT[26];               //забыли саблю
                link.l1 = DLG_TEXT[18];
                link.l1.go = "Exit";
            }
            if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == true )
            {
                dialog.text = DLG_TEXT[22];
                link.l1 = DLG_TEXT[23];
                link.l1.go = "YesDeal";                  // Согласие завершить сделку
                link.l2 = DLG_TEXT[34];
                link.l2.go = "refusal";                         // Вежливо отказаться и получить трубу в подарок
                link.l3 = DLG_TEXT[28];
                link.l3.go = "Continue_ToSeriousFight";                          // Попытаться  ограбить
            }

        break;

Автор: Black Angel Aug 29 2009, 22:58

Почему во время боя при попытке выключить огни они не выключаются?

Автор: Warship Aug 30 2009, 01:32

Цитата(Alexad_D @ Aug 29 2009, 21:44) *

Не видно - это значит визуально не отображается (хотя и присутствует) 1.gif

Видимо оружие надевается флагом PChar.equip.gun = "pistol7", поэтому и не видно.
Уже много раз говорилось, что одевать нужно функцией void EquipCharacterByItem(ref chref, string itemID);

Убери лишнюю закрывающую фигурную скобку в кейсе "EquipWeapon" - наверное из-за нее и не работает.
+ стоит расположить проверки по-иному - сейчас у тебя будет вызываться квест "Tut_EquipWeapon" даже если все оружие надето (проверка ниже по коду).

Далее.
Не стоит юзать проверки "IsEquipCharacterByItem(Pchar, "blade28") == true" - ярчайший пример плохого кода. Функция IsEquipCharacterByItem() сама по себе возвращает логическое значение, зачем его еще и сравнивать?

Цитата(Black Angel @ Aug 30 2009, 06:58) *

Почему во время боя при попытке выключить огни они не выключаются?

Функцией, что я приводил, должны выключаться. Почему нет - хз.

Автор: Scatimon Aug 30 2009, 07:45

В ПКМ был такой косяк. Нужно перезапустить перса ядром при одевании пекаля. Когда одеваем саблю перезапуск происходит, при одевании пекаля - нет. Поэтому одеваем пекаль, затем саблю - перезапуск - все видно. Кароче поищи ссылку на ядно, тока с масагой про пекаль. Она вроде идентична сабле. Сувать сий кусок кода в место где происходит одевание. Это в CharacterUtilite.c
Поиском ищи фразу MSG_CHARACTER_SETBLADE. Попробуй просто копернуть кусок кода про саблю - в код про пистолет (там рядом). Я делал давным давно - работало.

Автор: Black Angel Aug 30 2009, 11:35

Цитата(Warship @ Aug 30 2009, 02:32) *

Функцией, что я приводил, должны выключаться. Почему нет - хз.

А если принудительно попробовать через сендмеседж?Кстати,надо было рефреш ставить?
И еще заметил не утром не вечером при использовании функции огни не тухнут,хотя програмно говорит что выключины(проверку сделал)...

Автор: Alexad_D Aug 30 2009, 21:27

6.gif У меня возник такой вопрос - Если проверить отсутствие определенного предмета у перса, и добавить его в случае чего - можно функцией:

Код


  if(CheckCharacterItem(Pchar, "предмет") == 0) GiveItem2Character(Pchar, "предмет");



То как тогда наоборот - как проверить его присутствие и если есть то удалить .... 3.gif Заменить 0 на 1? Если да, то тогда удалить как? Или это вообще не так делается?

Автор: dolphin_sv Aug 31 2009, 01:48

Код
if(CheckCharacterItem(Pchar, "id предмета")) TakeItemFromCharacter(Pchar, "id предмета");


Как уже говорили выше - сравнивать bool функции с 1 и 0 глупо, т.к. эта функция сама по себе возвращает или 0 (false) или 1 (true)

CheckCharacterItem(Pchar, "id предмета"), если есть предмет = 1 (true), если нет предмета = 0 (false) (функция сама по себе вызращает логическое значение)

Оператор if основывается на результате логического выражения, результатом которого могут быть ТОЛЬКО два значения (0 и 1) и имеет следующий синтаксис:

Код
if(истина)
{
     оператор 1;
}
else
{
     оператор 2;
}

Автор: Alexad_D Sep 1 2009, 22:35

Цитата( @ Aug 31 2009)
Как уже говорили выше - сравнивать bool функции с 1 и 0 глупо, т.к. эта функция сама по себе возвращает или 0 (false) или 1 (true)

Цитата( @ Aug 30 2009)
Не стоит юзать проверки "IsEquipCharacterByItem(Pchar, "blade28") == true" - ярчайший пример плохого кода. Функция IsEquipCharacterByItem() сама по себе возвращает логическое значение, зачем его еще и сравнивать?
Отредактировано..
-------------------------------------------------------------------------------------------------------------------------------------------------
1.gif Dolphin_sv и Warship - Если можно то давайте по понятней. Давайте разберем на примере кода диалога, описанного мной выше [quote post='289460'] В чем конкретно у меня ошибка.....

Автор: dolphin_sv Sep 1 2009, 23:38

Если так, то:

Код
if (CheckCharacterItem(Pchar, "blade28"))    
  {
     TakeItemFromCharacter(Pchar, "blade28");
   }
else
  {
    GiveItem2Character(Pchar, "blade1");
   }


ты пропустил скобки, должно быть if(CheckCharacterItem(Pchar, "blade28")) и без ";" в конце

этот кусок кода проверяет: если у игрока есть сабля "blade28", то у него ее забирают; если у него ее нет, то дают саблю "blade1". Если это то, что тебе надо, то тогда так.

Еще хочу обратить внимание, что данный метод не будет работать с саблей, которая экипирована на персонаже.

PS
То, как ты писал до этого, не то чтобы неправильно, просто неккорректно с точки зрения рациональности кода и правил хорошего тона программирования.

В принципе, вообще всю программу можно писать в одну строку:
if (CheckCharacterItem(Pchar, "blade28")){TakeItemFromCharacter(Pchar, "blade28");}elsе{GiveItem2Character(Pchar, "blade1");}
и так далее, но так никто не делает, потомучто существуют определенные правила и стандарты, то же самое относится и к вышеупомянутому случаю со сравниваемым значением результата логической функции.
Тебя можно понять, ты равняешься на скрипты от Акеллы, но в некоторых местах их явно скриптовали студенты-первокурсники, да еще и двоечники...

Автор: Alexad_D Sep 2 2009, 00:17

Dolphin_sv 1.gif ...Ну вот, а теперь еще эти коды пытается писать двоечник - девятикласник, который запятые вечно пропускает ........ lol.gif
В смысле: "данный метод не будет работать с саблей, которая экипирована на персонаже"....? - Работает...... перса раздевает как надо.... 1.gif Правда без проверки, сразу, одно снимаем, другое одеваем..... smile.gif
А как грамотней построить проверку - все ли одето или взято из сундука? Пост с кодом выше... Там у меня в чем ошибки? Сейчас у меня не срабатывает указание какой именно предмет не одет, но если все одеты дальше идет все как надо.

Автор: dolphin_sv Sep 2 2009, 00:25

CheckCharacterItem не проверяет одет предмет или нет, она проверяет - есть ли данный прдмет в инвентаре персонажа или нет, экипированые предметы при это не учитываются.

Проверка - экипирован персонаж предметом или нет, это функция
bool IsEquipCharacterByItem(ref chref, string itemID);

Если тебе нужно забрать предмет, который гипотетически может быть на герое, то:
1. Проверить - одет ли предмет на персонаж, если одет, то снять предмет.
2.Отобрать предмет.

Автор: Alexad_D Sep 2 2009, 14:24

Цитата(dolphin_sv @ Sep 2 2009, 00:25) *

Dolphin_sv Добрый день. Так у меня же так и сделано!!!!! Имелся ввиду самый верхний пост про диалог ГГ с евреем - торговцем. Сам диалог работает и проверка тоже. Так, как задумывалось.
Но вот насколько грамотно построена эта проверка?(ниже структура)

Если согласились посмотреть что у него есть -

case "See_Weapon":
if(CheckCharacterItem(Pchar, "blade28") == 0 || CheckCharacterItem(Pchar, "Spyglass5") == 0 || CheckCharacterItem(Pchar, "pistol7") == 0)
{
dialog.text = Ничего не взято из сундука - возми
}
else
{
NextDiag.TempNode = "EquipWeapon";
dialog.text = Что то не одето из оружия - одень
}
if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == true && IsEquipCharacterByItem(Pchar, "Spyglass5") == true )
{
dialog.text = запрс на согласие сделки
link.l1.go = "YesDeal"; - Согласие
link.l2.go = "refusal"; - Отказ
link.l3.go = " Begin_ToSeriousFight"; Пытаемся ограбить, старик начинает защищать свое добро
}
else
{
addDialogExitQuest("Tut_EquipWeapon");
NextDiag.TempNode = "EquipWeapon";
dialog.text = Ничего не одето из оружия
}
break;

case "EquipWeapon":
if(IsEquipCharacterByItem(Pchar, "blade28") == false && IsEquipCharacterByItem(Pchar, "pistol7") == false )
{
dialog.text = ничего не одето
}
if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == false )
{
dialog.text = забыли пехаль
}
if(IsEquipCharacterByItem(Pchar, "blade28") == false && IsEquipCharacterByItem(Pchar, "pistol7") == true )
{
dialog.text = забыли саблю
}
if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == true )
{
dialog.text = запрс на согласие сделки
link.l1.go = "YesDeal"; - Согласие
link.l2.go = "refusal"; - Отказ
link.l3.go = " Begin_ToSeriousFight"; - Пытаемся ограбить, старик начинает защищать свое добро
}
break;

Как я понял Ошибка в записи первых двух проверок? Надо так?
if(CheckCharacterItem(Pchar, "blade28") || CheckCharacterItem(Pchar, "Spyglass5") || CheckCharacterItem(Pchar, "pistol7"))
if(IsEquipCharacterByItem(Pchar, "blade28") && IsEquipCharacterByItem(Pchar, "pistol7") && IsEquipCharacterByItem(Pchar, "Spyglass5"))
Первой проверкой, мы проверяем забрали ли мы все из сундука, второй - все ли одели. В чем разница между - || и && ?
================================================================================
===================================
И еще..... Кто знает, где храняться данные о локаторах (goto, sit, reload, box randitem)- чтобы можно было назначить или поменять и как это делается? Имеется ввиду на самой модели помещения. Если на короблях эти локаторы видны в гмвивере то при просмотре помещеня sad.gif - нет
=========================================================

Scatimon и Dolphin_sv - Большое спасибо за объяснения

Автор: Scatimon Sep 2 2009, 17:16

|| - или
&& - и

if(a || b || c)
{
хоть что-то тру то сюда
}else{
все фалс
}

if(a && b && c)
{
все тру
}else{
хоть что-то фалс то сюда
}

Автор: dolphin_sv Sep 2 2009, 18:29

Цитата
Как я понял Ошибка в записи первых двух проверок? Надо так?
if(CheckCharacterItem(Pchar, "blade28") || CheckCharacterItem(Pchar, "Spyglass5") || CheckCharacterItem(Pchar, "pistol7"))
if(IsEquipCharacterByItem(Pchar, "blade28") && IsEquipCharacterByItem(Pchar, "pistol7") && IsEquipCharacterByItem(Pchar, "Spyglass5"))


Да, именно так. Только надо писать не "Ничего не взято из сундука", а "Что-то не взято из сундука". Почему так, читай ниже.

Цитата
Первой проверкой, мы проверяем забрали ли мы все из сундука, второй - все ли одели. В чем разница между - || и && ?


&& как и говорили, логическое "и"
|| как и говорили, логическое "или"

a && b - результат true если оба значения true. false, если хотябы одно из них false

a || b - результат true, если хотя бы одно значение true. false - если оба значения false

Еще полезна операция отрицания - !
!true = false и !false = true

Например,
if(IsEquipCharacterByItem(Pchar, "blade28")) - ты проверяешь, экипирован ли НПС предметом "blade28"
а можно с помощью логического отрицания поверить на то, что НПС не экипирован этим предметом:
if(!IsEquipCharacterByItem(Pchar, "blade28"))

Цитата
И еще..... Кто знает, где храняться данные о локаторах (goto, sit, reload, box randitem)- чтобы можно было назначить или поменять и как это делается? Имеется ввиду на самой модели помещения. Если на короблях эти локаторы видны в гмвивере то при просмотре помещеня - нет


Локаторы лучше смотреть в TOOL. В GMViewer их можно просмотреть, для локаций они находятся в отдельных файлах, как правило, для ПКМ это: "имя_локации"_l.gm, а для К3/КВЛ/ГПК "имя локации"_locators.gm

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)