![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
igor_pol |
![]()
Сообщение
#1
|
боцман ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 140 Регистрация: 3-December 04 Пользователь №: 169 ![]() |
Первое что я хотел написать "АДМИНЫ!!!!" НЕ ЗВЕРЕЙТЕ ЗА "НЕНУЖНУЮ ТЕМУ"
************************************************** на вопрос зачем создал эту тему отвечу так "Я например НЕ ПРОСТО ЮЗВЕРЬ А КОЕ ЧТО И САМ НАПИСАТЬ МОГУ. И хотел бы чтобы на форуме была тема для тех кто сам хочет что-то добавить в игру. На сайте аддона Алекс вікинул ссылку на описание скриптов ПКМ на английском. Я хотел бы узнать где можно нарыть больше инфы по этом скриптам. И кстати на каком языке они пишуться. Если кто-то знает ----- пишите. И вообще всем програмерам на форуме нужна своя тема. так что ГОСПОДА ПРОГРАМЕРЫ ВАЛИТЕ СЮДА !!!! Может из этого что небудь интересное выйдет!!!!!!(Если тему не УТРУТ) Жду сообщений (может у когот есть идеи на эту тему ) Сообщение отредактировал Догева - Apr 24 2006, 13:36 |
![]() ![]() |
Warship |
![]()
Сообщение
#321
|
Гроза морей ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: бета-тестер Сообщений: 441 Регистрация: 29-April 07 Из: Прим. край г. Находка Пользователь №: 9,103 ![]() |
Вот я потому и советуюсь как его лучше оптимизировать и где именно эти 15 ненужных циклов....... Например, кусок твоего кода: Код ChangeCharacterAddress(characterFromID("Bertuzzo"), "Santafe_tavern", "goto19"); ChangeCharacterAddress(characterFromID("beatrice"), "Santafe_tavern", "goto20"); LAi_SetHP(characterFromID("beatrice"), 50.0, 50.0); LAi_SetActorType(CharacterFromID("beatrice")); LAi_SetActorType(CharacterFromID("Bertuzzo")); LAi_group_MoveCharacter(CharacterFromID("beatrice"), "beatrice"); LAi_group_MoveCharacter(CharacterFromID("Bertuzzo"), "Bertuzzo"); LAi_SetImmortal(CharacterFromID("Bertuzzo"), true); Characters[GetCharacterIndex("Bertuzzo")].skill.Fencing = 1; LAi_ActorAttack(characterFromID("Bertuzzo"), characterFromID("beatrice"), ""); LAi_ActorAttack(characterFromID("beatrice"), characterFromID("Bertuzzo"), ""); LAi_SetCheckMinHP(characterFromID("beatrice"), 30.0, true, "GirlProtection"); LAi_SetActorType(pchar); LAi_ActorFollow(pchar, characterFromID("Beatrice"), "", 10.0); В нем 15 раз юзаесть функция characterFromID(). Каждая функция CharacterFromID() - это проход циклом по всем персонажам (TOTAL_CHARACTERS), т.е. 1000 итераций (на деле конечно меньше, т.к. когда найдет нужное, искать дальше перестанет). Легким движением руки это все можно оптимизировать, и получить, например, это: Код ref character1 = CharacterFromID("Bertuzzo"); ref character2 = CharacterFromID("beatrice"); ChangeCharacterAddress(character1, "Santafe_tavern", "goto19"); ChangeCharacterAddress(character2, "Santafe_tavern", "goto20"); LAi_SetHP(characterFromID("beatrice"), 50.0, 50.0); LAi_SetActorType(character2); LAi_SetActorType(character1); LAi_group_MoveCharacter(character2, "beatrice"); LAi_group_MoveCharacter(character1, "Bertuzzo"); LAi_SetImmortal(character1, true); character1.skill.Fencing = 1; LAi_ActorAttack(character1, character2, ""); LAi_ActorAttack(character2, character1, ""); LAi_SetCheckMinHP(character2, 30.0, true, "GirlProtection"); LAi_SetActorType(pchar); LAi_ActorFollow(pchar, character2, "", 10.0); Итого, вместо 15 * 1000 итераций мы получили 2000. Но. Не нужно обьявлять переменные в кайсах, т.к. это все одна функция QuestComplete() и обьявление в разных кайсах переменной с одним именем создаст ошибку. беру за образец и ореинтируюсь на скрипты от Акеллы Ну и напрасно. ![]() Поэтому у тебя код и получается неоптимизированным. |
Alexad_D |
![]()
Сообщение
#322
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
Ну и напрасно. ![]() Поэтому у тебя код и получается неоптимизированным. ![]() ![]() --------------------------------------- Так теперь проверим все ли так я понял..... Допустим, если пишем что либо для конкретных персов.... то чтобы исключить их постоянный поиск - конкретизируем их ? ref character1 = CharacterFromID("Bertuzzo"); ref character2 = CharacterFromID("beatrice"); Или же это мы что-то другое сделали? И еще ![]() Цитата Не нужно обьявлять переменные в кайсах, т.к. это все одна функция QuestComplete() и обьявление в разных кайсах переменной с одним именем создаст ошибку. Чем больше вчитываюсь тем больше запутываюсь... Т.е это истинно до до завершения квеста? А если он не завершен и как быть с кейсами в других квестах?![]() ![]() Я пробовал с подобными вопросами к нашей информатичке подходить - ![]() ![]() ![]() ![]() ================================================================================ |
Warship |
![]()
Сообщение
#323
|
Гроза морей ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: бета-тестер Сообщений: 441 Регистрация: 29-April 07 Из: Прим. край г. Находка Пользователь №: 9,103 ![]() |
Так теперь проверим все ли так я понял..... Допустим, если пишем что либо для конкретных персов.... то чтобы исключить их постоянный поиск - конкретизируем их ? ref character1 = CharacterFromID("Bertuzzo"); ref character2 = CharacterFromID("beatrice"); Или же это мы что-то другое сделали? Эти два обьявления - это обьявления переменных, содежращих, грубо говоря, ссылки на персонажей (если точнее, то на элемент в массиве обьектов). Далее эти переменные можно юзать за место CharacterFromID() (тоже такое вот грубое сравнение). Такие переменные называются переменными ссылочного типа, т.к. они указывают на определенный обьект (адрес в памяти). Кроме переменных ссылочного типа есть еще (в скриптах Сторм 2.*): Целочисленных тип - int Строковый тип - String Тип данных с плавающей точкой - float Массивы. Ну и обьекты. Отличие переменных ссылочного типа от остальных состоит в том, что при изменении указателя на обьект, изменится и сам обьект, т.е. ref character = CharacterFromID("Bertuzzo"); character.someAttribute = "12345"; Log_SetStringToLog(character.someAttribute); // 12345 Log_SetStringToLog(Characters[GetCharacterIndex("Bertuzzo")].someAttribute); // 12345 Все остальные типы (целочисленный, строковый, с плавающей точко; пример с целочисленным): int integer1 = 256; int integer2 = integer1; integer2 += 100; Log_SetStringToLog("" + integer1); // 256 Log_SetStringToLog("" + integer2); // 356 Ну и так далее. То есть это верно только для одного кейса? Уже для следующего пусть даже для тех же персов, все равно надо по новой писать Что имел ввиду: Код Код void SomeFunction(int _parameter) { switch(_parameter) { case 0: int temp = 0; break; case 1: int temp = 1; break; } } Вызовет ошибку, т.к. обьявляеются в одной функции две переменные с одинаковым именем. Следует делать как Код void SomeFunction(int _parameter) { int temp; switch(_parameter) { case 0: temp = 0; break; case 1: temp = 1; break; } } Вот такая же ситуация и с кайсами в функции QuestComplete(). Лучше вообще избегать обьявления переменных внитри кайсов, т.к. вот такую ошибку поймать вполне реально. === Вообще, смотри тему |
navy |
![]()
Сообщение
#324
|
Hagane no Renkinjutsushi ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Seaward.Ru Team Сообщений: 5,972 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 ![]() |
Цитата беру за образец и ореинтируюсь на скрипты от Акеллы Вот это как раз надо делать осторожно ![]() |
Alexad_D |
![]()
Сообщение
#325
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
Warship - Скачал, Спасибо,. Буду разбираться . Правда пока что-либо понял слабо - но буду вдумываться, пробовать делать. Я больше понимаю когда делаю сам, экспериментирую.....
===================================== ![]() ![]() ![]() ================================================================== Я тут в скольз спрашивал про окно диалога - Цитата ... Очень хочу сделать окно диалога как в К3 - (Без верхней части для голов) Но не знаю за что уцепиться и с чего начать В одном ли это файле или в нескольких, если да то каких? Может кто уже пробовал, знает, подскажет...?================================================================== Еще.... Как составить проверяльщик на нахождение перса в определенном локаторе т.е. - ref character1 = CharacterFromID("beatrice"); if (character1.location =="Santafe_tavern", "goto20" ); <-- именно вот эту строчку как правильно записать??? { Сюжет 1 } else { Сюжет 2 } Так вообще нельзя проверять или просто ошибка в записи? |
dolphin_sv |
![]()
Сообщение
#326
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 88 Регистрация: 23-May 05 Из: Донецк Пользователь №: 771 ![]() |
Еще.... Как составить проверяльщик на нахождение перса в определенном локаторе т.е. - ref character1 = CharacterFromID("beatrice"); if (character1.location =="Santafe_tavern", "goto20" ); <-- именно вот эту строчку как правильно записать??? { Сюжет 1 } else { Сюжет 2 } Так вообще нельзя проверять или просто ошибка в записи? Код if (character1.location =="Santafe_tavern" && character1.location.locator == "goto20") { Сюжет 1 } else { Сюжет 2 } Но вообще, эта проверка лишена смысла, т.к. персонажей ты сам расставляешь по локаторам, т.е. заранее знаешь и локацию и локатор. |
ALexusB |
![]()
Сообщение
#327
|
Разработчик ВМЛ-КВЛ ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 16,556 Регистрация: 2-November 04 Пользователь №: 3 ![]() |
А когда перс ходит, то у него остается первый локатор инициализации, а сам он вообще в пути, вне локаторов. Потому проверка идет только на ВХОД в локатор.
Например, ручка на предмет на полу или энкаутер в джунглях Включи просмотр шариков-локаторов в игре, ужаснись размерам ЕНС01 ![]() |
Alexad_D |
![]()
Сообщение
#328
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
Спасибо.... буду дальше продолжать застопорившуюся ветку.
Но вообще, эта проверка лишена смысла, ![]() .... персонажей ты сам расставляешь по локаторам, т.е. заранее знаешь и локацию и локатор. Истино если НПС тупо ждет когда ты обратишь на него внимание и далнейшего развития у него нет....![]() ![]() ![]() Включи просмотр шариков-локаторов в игре, ужаснись размерам ЕНС01 ![]() ![]() ![]() ...сам он вообще в пути, вне локаторов. Потому проверка идет только на ВХОД в локатор. А переброшеный Непись то находится в самом локаторе! И ждет нас.... ![]() ================================================================= Вот еще бы с головами (верхней частью диалогового окна) разобраться бы......... Ну не знаю как эту часть убрать |
Black Angel |
![]()
Сообщение
#329
|
боцман ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 256 Регистрация: 19-August 06 Из: Нижний Новгород Пользователь №: 3,985 ![]() |
У меня несколько вопросов по програмированию:
1.Как обновить таблицу в инвентаре предметов? 2.Как сделать чтобы у "сухопутных" воинов в руке и инветаре было одно и тоже? точнее где это писать? 3. При выключение фонарей хочу сделать чтобы нпс хоть иногда промахивались.Где это надо писать? |
ALexusB |
![]()
Сообщение
#330
|
Разработчик ВМЛ-КВЛ ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 16,556 Регистрация: 2-November 04 Пользователь №: 3 ![]() |
Честно пытался понять суть вопросов, не понял, тк мутно очень.
Вот так же мутно (но строго по вопросу и отвечу) 1. таблиц в игре нет вообще, как понятия. Есть дерево атрибутов и есть формы отрисовки в виде табличного списка. Поэтому ответ - никак, тк БД нет 2. у всех НПС в инвентаре есть то, что экипировано - это жестко, если разлочить воровство (обмен с НПС), то это даже видно. 3. там где промахиваются (в методах вероятности попадания). |
Black Angel |
![]()
Сообщение
#331
|
боцман ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 256 Регистрация: 19-August 06 Из: Нижний Новгород Пользователь №: 3,985 ![]() |
Честно пытался понять суть вопросов, не понял, тк мутно очень. Вот так же мутно (но строго по вопросу и отвечу) 1. таблиц в игре нет вообще, как понятия. Есть дерево атрибутов и есть формы отрисовки в виде табличного списка. Поэтому ответ - никак, тк БД нет 2. у всех НПС в инвентаре есть то, что экипировано - это жестко, если разлочить воровство (обмен с НПС), то это даже видно. 3. там где промахиваются (в методах вероятности попадания). 1.ну что то типа Table_UpdateWindow должно ж быть...а то в инвентаре нажимаю кнопку взять предмет,он появляется,но в списке(таблице)предметов его не показывает.После манипуляций выход/вход в список предметов по F2 то предмет появляется. 2.Я имел в виду при обыске трупов.А то в руке у него кирка, а обыскиваешь и нет ничего кроме пары золотых(пиастров) 3.А это в AIShip?Там вообже поведение нпс написано.А если хочу что бы совсем не видели?Где тогда это написать?В какой функции AIShip? |
delfin_ |
![]()
Сообщение
#332
|
Защитнег Бакланаф ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 5,186 Регистрация: 5-December 04 Пользователь №: 174 ![]() |
2.Я имел в виду при обыске трупов.А то в руке у него кирка, а обыскиваешь и нет ничего кроме пары золотых(пиастров) ЕМНИП - там не всегда можно снять вещи с трупов, т.е. есть некая вероятность, экипировка либо покажется, либо нет. В патче моргана на пкм была 100% вероятность что экипировка всегда будут на трупе, только обыска не было, так что они сразу в инвентарь добавлялись. |
navy |
![]()
Сообщение
#333
|
Hagane no Renkinjutsushi ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Seaward.Ru Team Сообщений: 5,972 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 ![]() |
Цитата 3.А это в AIShip?Там вообже поведение нпс написано.А если хочу что бы совсем не видели?Где тогда это написать?В какой функции AIShip? при чем тут АИШип????О_о вообще название говори за то, что этот файл отвечает за АИ КОРАБЛЕЙ!!! |
Warship |
![]()
Сообщение
#334
|
Гроза морей ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: бета-тестер Сообщений: 441 Регистрация: 29-April 07 Из: Прим. край г. Находка Пользователь №: 9,103 ![]() |
1. Нужно не рефрешить таблицу, а добавлять в нее новое.
2. LAi_utils.c функция Dead_AddLoginedCharacter(); 3. Вроде, AIBalls.c функция Ball_AddBall(); |
Black Angel |
![]()
Сообщение
#335
|
боцман ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 256 Регистрация: 19-August 06 Из: Нижний Новгород Пользователь №: 3,985 ![]() |
1. Нужно не рефрешить таблицу, а добавлять в нее новое. 2. LAi_utils.c функция Dead_AddLoginedCharacter(); 3. Вроде, AIBalls.c функция Ball_AddBall(); 1.При выбрасывании вещи из вентаря она в списке остается, а физически ее нет уже.Вот зачем мне рефреш таблицы 2.Спасибо Warship то что нужно. 3.Нет этот файл отвечает за обработку пёта разных снарядов(боеприпасов) в корпус,воду,форт и т.д. Цитата при чем тут АИШип????О_о вообще название говори за то, что этот файл отвечает за АИ КОРАБЛЕЙ!!! А ай это кто?Боты,а не человеки!:-) Сейчас объясню так что все сразу поймут:-) Все помнят фильм Хозяин Морей?Надеюсь,что очень хорошо:-)Там была сцена когда они удирали от фрегата на всех парусах и ночью воспользовались хитростью:потушили на судне все огни и спустили на воду плот с включеными фонарями.И пока враг стрелял по этому "маяку" они сменили курс и ушли в полной темноте. Помнится на форуме,ещё до выхода гпк кто то спрашивал:"В густой туман можно будет к форту на близкое растояние подойти не замеченым?" ответ был однозначным "Нет". Так вот я хочу сделать так чтобы когда погасив огни на судне во время убегания от противников они "хотя бы пытались сделадь вид, что не видят,а не стреляли точно в цель" это просто даже перебор какой то... |
navy |
![]()
Сообщение
#336
|
Hagane no Renkinjutsushi ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Seaward.Ru Team Сообщений: 5,972 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 ![]() |
Я не понмю, не смотрел. AIBalls тебе правильно сказали. Там считаются попадания.
|
delfin_ |
![]()
Сообщение
#337
|
Защитнег Бакланаф ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 5,186 Регистрация: 5-December 04 Пользователь №: 174 ![]() |
Я не спец по програмингу, но идея есть. Вроде 1 корабль = 1 кэп, с определенными навыками. Вот и нужно дать ему минусы (-99) в умениях морского боя когда фонари гаснут, т.е. сделать эвент, погаснувшие фонари + минусы неписям. Только если днем фонари не будут гореть, кэпы тоже будут слепые)))
|
Black Angel |
![]()
Сообщение
#338
|
боцман ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 256 Регистрация: 19-August 06 Из: Нижний Новгород Пользователь №: 3,985 ![]() |
Я не спец по програмингу, но идея есть. Вроде 1 корабль = 1 кэп, с определенными навыками. Вот и нужно дать ему минусы (-99) в умениях морского боя когда фонари гаснут, т.е. сделать эвент, погаснувшие фонари + минусы неписям. Только если днем фонари не будут гореть, кэпы тоже будут слепые))) Вот!Человек идею узрил ![]() ![]() ![]() Цитата(navy @ Nov 20 2009) Я не понмю, не смотрел. AIBalls тебе правильно сказали. Там считаются попадания. Да,да,да...увидел ![]() ![]() |
korsar-fan |
![]()
Сообщение
#339
|
юнга ![]() ![]() Группа: форумчанин (*) Сообщений: 13 Регистрация: 29-June 09 Пользователь №: 20,612 ![]() |
Хотелось бы узнать как в гпк сделать: 1) как с помощью предмета добавить переновимый вес, как обычные статы я знаю, а вот вес вопрос. 2) Можно ли, если с квестовым персонажем ссыграть в карты, после игры продолжить диалог, и в зависимости от исхода игры разные ветки.
|
Ван дер Декен |
![]()
Сообщение
#340
|
Бессмертный капитан Летучего Голландца ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 1,638 Регистрация: 15-October 08 Из: Ростов-на-Дону Пользователь №: 18,100 ![]() |
Ни как.
Только способность взять. Ни как. |
![]() ![]() |
Текстовая версия | Сейчас: 11th May 2025 - 21:53 |