![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
igor_pol |
![]()
Сообщение
#1
|
боцман ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 140 Регистрация: 3-December 04 Пользователь №: 169 ![]() |
Первое что я хотел написать "АДМИНЫ!!!!" НЕ ЗВЕРЕЙТЕ ЗА "НЕНУЖНУЮ ТЕМУ"
************************************************** на вопрос зачем создал эту тему отвечу так "Я например НЕ ПРОСТО ЮЗВЕРЬ А КОЕ ЧТО И САМ НАПИСАТЬ МОГУ. И хотел бы чтобы на форуме была тема для тех кто сам хочет что-то добавить в игру. На сайте аддона Алекс вікинул ссылку на описание скриптов ПКМ на английском. Я хотел бы узнать где можно нарыть больше инфы по этом скриптам. И кстати на каком языке они пишуться. Если кто-то знает ----- пишите. И вообще всем програмерам на форуме нужна своя тема. так что ГОСПОДА ПРОГРАМЕРЫ ВАЛИТЕ СЮДА !!!! Может из этого что небудь интересное выйдет!!!!!!(Если тему не УТРУТ) Жду сообщений (может у когот есть идеи на эту тему ) Сообщение отредактировал Догева - Apr 24 2006, 13:36 |
![]() ![]() |
Alexad_D |
![]()
Сообщение
#301
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
А как снять координаты точки на поверхности для установки локатора. К примеру в пещере в одном из тупиков хотим поставить локатор - reload чтобы это сделать надо указать координаты Вот и как это сделать?
|
dolphin_sv |
![]()
Сообщение
#302
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 88 Регистрация: 23-May 05 Из: Донецк Пользователь №: 771 ![]() |
program\characters\characters.c
Ищещь ф-ю: bool GetCharacterPos(ref character, ref float_x, ref float_y, ref float_z) и вносишь следующие изменения: Код bool GetCharacterPos(ref character, ref float_x, ref float_y, ref float_z) { float cx, cy, cz; if(SendMessage(character, "leee", MSG_CHARACTER_GETPOS, &cx, &cy, &cz) == 0) return false; float_x = cx; float_y = cy; float_z = cz; Log_SetStringToLog("x = "+cx + " y = " + cy + " z = "+cz); return true; } Теперь при вызове этой функции: Код float x,y,z; GetCharacterPos(pchar, &x, &y, &z); на экран выведутся координаты героя в локации Вызов функции придумай сам как сделать. Это может быть DebugWindow либо надо писать свою "консоль" ![]() Есть конечно вариант №2 - найти ближайший локатор от места, где нужен новый и методом тыка подбирать координаты, постоянно проверяя их в игре (изменения в локаторах отображаются при входе выходе, т.е. перегрузке локации) |
Alexad_D |
![]()
Сообщение
#303
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
Есть конечно вариант №2 - найти ближайший локатор от места, где нужен новый и методом тыка подбирать координаты... Второй способ (в смысле - тыковый подбор) ![]() ![]() Цитата Вызов функции придумай сам как сделать. Это может быть DebugWindow либо надо писать свою "консоль" smile.gif Сидел разбирался двое суток, как же запустить через F7 функцию - float x,y,z; GetCharacterPos(pchar, &x, &y, &z); - но "Плохо когда забудешь то, что не знаешь" - научите - как....? |
navy |
![]()
Сообщение
#304
|
Hagane no Renkinjutsushi ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Seaward.Ru Team Сообщений: 5,973 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 ![]() |
LoadSegment грузит файл в рилтайме. Поищи примеры в коде. Соответственно грузишь файл, запускаешь ф-цию, выгружаешь файл. Вот и весь принцип.
|
dolphin_sv |
![]()
Сообщение
#305
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 88 Регистрация: 23-May 05 Из: Донецк Пользователь №: 771 ![]() |
Цитата Второй способ (в смысле - тыковый подбор) приемлим в случае простого смещения локаторов, а в расстановке их с 0 совершенно не подходит. Ну почему же... Возьми на вооружение TOOL и вперед. |
Alexad_D |
![]()
Сообщение
#306
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
Цитата LoadSegment грузит файл в рилтайме. Поищи примеры в коде. Соответственно грузишь файл, запускаешь ф-цию, выгружаешь файл. Вот и весь принцип. Не совсем понял..... Вернее - не понял совсем..... ![]() Короче я начал делать так (по аналогии) ........ В - init_pc.c - прописал кнопки так: Код ExternInitKeyCodes(); B characters.c вставил - CI_CreateAndSetControls( "", "Control", CI_GetKeyCode("VK_F7"), 0, false ); CI_CreateAndSetControls( "", "Control2", CI_GetKeyCode("VK_F11"), 0, false ); CI_CreateAndSetControls( "", "Control3", CI_GetKeyCode("VK_F12"), 0, false ); void ExternInitKeyCodes() objControlsState.key_codes.VK_F7 = 118; objControlsState.key_codes.VK_F7.img = "<"; objControlsState.key_codes.VK_F11 = 122; objControlsState.key_codes.VK_F11.img = "<"; objControlsState.key_codes.VK_F12 = 123; objControlsState.key_codes.VK_F12.img = "<"; Код bool GetCharacterPos(ref character, ref float_x, ref float_y, ref float_z) { float cx, cy, cz; if(SendMessage(character, "leee", MSG_CHARACTER_GETPOS, &cx, &cy, &cz) == 0) return false; float_x = cx; float_y = cy; float_z = cz; Log_SetStringToLog("x = "+cx + " y = " + cy + " z = "+cz); return true; } Код switch(ControlName) { case "Control": // по F7 Показывает текущую позицию ГГ float x,y,z; GetCharacterPos(pchar, &x, &y, &z); И вот как правильно тут вписать вызов этой функции break; case "Control2": // по F11 вызывает окно отладчика LaunchBoalDebugScreen(); break; case "Control3": ref mainCh = GetMainCharacter(); //Показать характеристики ближайшего перса в заданном радиусе int res = LAi_FindNearestVisCharacter(mainCh, 20); Ну и так далее ............... break; } Цитата Ну почему же... Возьми на вооружение TOOL и вперед. Ну так тулом я и сдвигал локаторы там же по старым и уже прописаным можно ореинтироваться а вот как их заного вписывать - нужны же координаты. Кстати я тулом пробовал комнату создать хрень какая то получилось ![]() ![]() |
dolphin_sv |
![]()
Сообщение
#307
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 88 Регистрация: 23-May 05 Из: Донецк Пользователь №: 771 ![]() |
Где именно ошибка? На что ругается?
|
Alexad_D |
![]()
Сообщение
#308
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
Сделано так -
Код switch(ControlName) А ругается так { case "Control": // по F7 Показывает текущую позицию ГГ float x,y,z; GetCharacterPos(pchar, &x, &y, &z); <-- 785 строка break; } ![]() COMPILE ERROR - file: seadogs.c; line: 785 Invalid Expression COMPILE ERROR - file: seadogs.c; line: 785 invalid syntax -------------------------------------------------------------------- Пробую сейчас сделать свой дебаг интерфейс через F7 Вызов панели с 2 кнопками F2, F3 Для снятия координат на суше и на море ( если получится ![]() |
dolphin_sv |
![]()
Сообщение
#309
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 88 Регистрация: 23-May 05 Из: Донецк Пользователь №: 771 ![]() |
GetCharacterPos(pchar, x, y, z);
вот так надо. Под острова этот способ не подойдет, т.к. считываются координаты персонажа в локации, а в открытом море и на карте нет персонажа и это не локации. |
Alexad_D |
![]()
Сообщение
#310
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
Переправил - все равно ругается так же..... чего-то ему эта строчка не нравится
![]() ![]() А про море я знаю - Был уже об этом разговор на форуме.... AlexusB даже выкладывал код как снимать координаты в море под острова |
dolphin_sv |
![]()
Сообщение
#311
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 88 Регистрация: 23-May 05 Из: Донецк Пользователь №: 771 ![]() |
Попробуй так
GetCharacterPos(GetMainCharacter(), &x, &y, &z); Это уже точно должно сработать ![]() |
Alexad_D |
![]()
Сообщение
#312
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
![]() ![]() ================================================================================ ==================== Все свой вопрос удалил. Ошибку нашел Прикрепленные изображения ![]() |
Alexad_D |
![]()
Сообщение
#313
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
Всем добрый день. Даже не знаю как и поступить вроде бы и мой пост последний, а с другой стороны, вроде бы как две недели уже ему. Ну да ладно будь что будет. Ну это было лирическое отступление (или вернее - вступление) А суть вот в чем....
Короче я начал писать квест - в кратце - у ГГ есть вариант познакомиться в таверне с девушкой и помочь ей освободить ее отца из тюрьмы и вернуть корабль захваченный предавшей их командой. Написать то я его написал - все через диалог - работает, но во первых если с Биатрис не начать диалог то квест не начнется Да и завязывание диалога, художественно-литературное исполнение знакомства мне не как-то не очень Я решил его несколько изменить и сделать уже через квест реакшин т.е. Код case "HelpGirl_quest": ChangeCharacterAddress(characterFromID("Bertuzzo"), "Santafe_tavern", "goto19"); ChangeCharacterAddress(characterFromID("beatrice"), "Santafe_tavern", "goto20"); LAi_SetActorType(CharacterFromID("beatrice")); LAi_SetActorType(CharacterFromID("Bertuzzo")); LAi_group_MoveCharacter(CharacterFromID("beatrice"), "beatrice"); LAi_group_MoveCharacter(CharacterFromID("Bertuzzo"), "Bertuzzo"); LAi_SetImmortal(CharacterFromID("beatrice"), true); LAi_ActorAttack(characterFromID("Bertuzzo"), characterFromID("beatrice"), ""); LAi_ActorAttack(characterFromID("beatrice"), characterFromID("Bertuzzo"), ""); //LAi_SetCheckMinHP(characterFromID("Bertuzzo"), 10.0, true, "Znakomstvo"); LAi_SetActorType(pchar); LAi_ActorFollow(pchar, characterFromID("beatrice"), "", 25.0); //StartQuestMovie(true, false, false); break; case "Znakomstvo": // Пытаемся завести знакомство LAi_ActorDialog(characterFromID("beatrice"), Pchar, "", 3.0, 0); //LAi_ActorDialog(characterFromID("beatrice"), Pchar, "Francheska_dialog", 3.0, 0); break; ![]() |
dolphin_sv |
![]()
Сообщение
#314
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 88 Регистрация: 23-May 05 Из: Донецк Пользователь №: 771 ![]() |
Сделай их не актерами а warrior, помести в разные группы и заставь эти две группы драться. В этом случае они не будут рубить друг друга до изнеможения и проверяльщик ХП сработает.
|
Alexad_D |
![]()
Сообщение
#315
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
Ай не знаю! Мудрил, мудрил какая-то хрень все получалась. То одно не работает то другое..... Короче я пошел другим более длинным путем. Вроде бы все работает, но вот насколько это грамотно Код case "HelpGirl_quest": Так можно... или тоже безграмотно?if(makeint(PChar.reputation) >= 47) { //если да - запускаем квест 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); } else { //всех вон с пляжа ChangeCharacterAddress(characterFromID("beatrice"), "Santafe_town", "goto20"); ChangeCharacterAddress(characterFromID("Bertuzzo"), "None", ""); LAi_SetPlayerType (Pchar); LAi_type_actor_Reset(characterFromID("beatrice")); LAi_type_actor_Reset(characterFromID("Bertuzzo")); } break; case "GirlProtection": // Заступаемся за девушку LAi_SetStayType(pchar); LAi_type_actor_Reset(characterFromID("beatrice")); LAi_type_actor_Reset(characterFromID("Bertuzzo")); LAi_ActorDialog(characterFromID("Bertuzzo"), pchar, "", 1.0, 1.0); break; case "GirlProtection1": //Валим говнюка LAi_ActorRunToLocator(characterFromID("beatrice"), "goto", "goto21", "", 5.0); //Прячем ее заспину LAi_SetImmortal(characterFromID("Bertuzzo"), false); LAi_SetImmortal(Pchar, true); LAi_SetPlayerType (Pchar); LAi_group_MoveCharacter(CharacterFromID("Bertuzzo"), "Bertuzzo"); LAi_group_FightGroups("Bertuzzo", LAI_GROUP_PLAYER, true); LAi_SetFightMode(PChar, true); LAi_group_SetCheck("Bertuzzo", "GirlProtection2"); break; case "GirlProtection2": //вступаем в диалог с телкой //LAi_SetPlayerType (Pchar); <--запускаем через диалог LAi_SetActorType(pchar); LAi_SetActorType(CharacterFromID("beatrice")); LAi_ActorWaitDialog(CharacterFromID("beatrice"), PChar); LAi_ActorDialog(PChar, CharacterFromID("beatrice"), "", 3.0, 3.0); break; ===================================================== А вот еще вспомнил...... Почему каждый раз Эти двое по разному деруться, т.е. уходит разное время пока сработает проверяльщик НР? То я еле добегаю, то стою почти минуту, жду пока эта парочка натешится саблями махать |
Warship |
![]()
Сообщение
#316
|
Гроза морей ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: бета-тестер Сообщений: 441 Регистрация: 29-April 07 Из: Прим. край г. Находка Пользователь №: 9,103 ![]() |
Непонятно, зачем ты их в кайсе "HelpGirl_quest" в группу перемещаешь, она ж не юзается, а в кайсе "GirlProtection1" снова идет добавлние - вот там его можно и оставить, а первое потереть. Ну, или в первом случае боевку тоже на группы перевести, как и было сказано.
=== А вообще, в твоем куске кода щас где-то 15 ненужных циклов по 1000 итераций каждый - оптимизируй код. Прочти книжку "Совершенный код" Стива Макконнелла. |
navy |
![]()
Сообщение
#317
|
Hagane no Renkinjutsushi ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Seaward.Ru Team Сообщений: 5,973 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 ![]() |
Цитата Прочти книжку "Совершенный код" Стива Макконнелла. Хотя бы рекомендации Алекса, их более чем достаточно ![]() |
ALexusB |
![]()
Сообщение
#318
|
Разработчик ВМЛ-КВЛ ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 16,606 Регистрация: 2-November 04 Пользователь №: 3 ![]() |
|
navy |
![]()
Сообщение
#319
|
Hagane no Renkinjutsushi ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Seaward.Ru Team Сообщений: 5,973 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 ![]() |
А я вот все никак не доберусь
![]() |
Alexad_D |
![]()
Сообщение
#320
|
матрос ![]() ![]() ![]() Группа: форумчанин Сообщений: 89 Регистрация: 11-July 09 Из: Беларусь. г. Поставы Пользователь №: 20,710 ![]() |
Непонятно, зачем ты их в кайсе "HelpGirl_quest" в группу перемещаешь, она ж не юзается Ты про перемещение в какие группы говоришь про это Код LAi_group_MoveCharacter(CharacterFromID("beatrice"), "beatrice"); Если сделать без этих строчек (я пробовал по разному пока заработало) - тогда они просто месят друг друга не нанося урона - 0/50 и 0/80.LAi_group_MoveCharacter(CharacterFromID("Bertuzzo"), "Bertuzzo"); Прочти книжку "Совершенный код" Стива Макконнелла. По поводу книжек Я живу в маленьком ![]() ![]() Цитата(Navy @ Sep 24 2009, 07:47) Хотя бы рекомендации Алекса, их более чем достаточно За отсутствием присутствия таковых(имеется ввиду - умных книжек) ![]() ![]() ![]() А вообще, в твоем куске кода щас где-то 15 ненужных циклов по 1000 итераций каждый - оптимизируй код. Вот я потому и советуюсь как его лучше оптимизировать и где именно эти 15 ненужных циклов.......================================================================= Еще....... Очень хочу сделать окно диалога как в К3 - (Без верхней части для голов) Но не знаю за что уцепиться и с чего начать В одном ли это файле или в нескольких(если да то каких) Может кто уже пробовал, знает? |
![]() ![]() |
Текстовая версия | Сейчас: 16th September 2025 - 11:43 |