Seaward.ru

Здравствуйте, гость ( Вход | Регистрация )

> Для программистов, вопросы по скриптам ПКМ
igor_pol
сообщение Aug 24 2005, 21:00
Сообщение #1


боцман
****


Группа: форумчанин
Сообщений: 140
Регистрация: 3-December 04
Пользователь №: 169



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

Сообщение отредактировал Догева - Apr 24 2006, 13:36
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
36 страниц V « < 14 15 16 17 18 > »   
Reply to this topicStart new topic
Ответов(300 - 319)
Alexad_D
сообщение Sep 7 2009, 19:55
Сообщение #301


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



А как снять координаты точки на поверхности для установки локатора. К примеру в пещере в одном из тупиков хотим поставить локатор - reload чтобы это сделать надо указать координаты Вот и как это сделать?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dolphin_sv
сообщение Sep 7 2009, 20:04
Сообщение #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 либо надо писать свою "консоль" smile.gif

Есть конечно вариант №2 - найти ближайший локатор от места, где нужен новый и методом тыка подбирать координаты, постоянно проверяя их в игре (изменения в локаторах отображаются при входе выходе, т.е. перегрузке локации)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Sep 10 2009, 11:23
Сообщение #303


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Цитата(dolphin_sv @ Sep 7 2009, 20:04) *
Есть конечно вариант №2 - найти ближайший локатор от места, где нужен новый и методом тыка подбирать координаты...
Второй способ (в смысле - тыковый подбор) 1.gif приемлим в случае простого смещения локаторов, а в расстановке их с 0 совершенно не подходит. А то я тут заморочился новыми зданиями а вот как локаторы теперь проставить под вход, балкончик, фонарики и камеру? Прикрепленное изображение
Цитата
Вызов функции придумай сам как сделать. Это может быть DebugWindow либо надо писать свою "консоль" smile.gif

Сидел разбирался двое суток, как же запустить через F7 функцию -
float x,y,z;
GetCharacterPos(pchar, &x, &y, &z);
- но "Плохо когда забудешь то, что не знаешь" - научите - как....?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
navy
сообщение Sep 10 2009, 12:06
Сообщение #304


Hagane no Renkinjutsushi
*******

Seaward TeamВетеран ФорумаЗаслуженный Корсар

Группа: Seaward.Ru Team
Сообщений: 5,973
Регистрация: 15-March 05
Из: Волгоград
Пользователь №: 578



LoadSegment грузит файл в рилтайме. Поищи примеры в коде. Соответственно грузишь файл, запускаешь ф-цию, выгружаешь файл. Вот и весь принцип.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dolphin_sv
сообщение Sep 10 2009, 13:40
Сообщение #305


матрос
***


Группа: форумчанин
Сообщений: 88
Регистрация: 23-May 05
Из: Донецк
Пользователь №: 771



Цитата
Второй способ (в смысле - тыковый подбор) приемлим в случае простого смещения локаторов, а в расстановке их с 0 совершенно не подходит.


Ну почему же... Возьми на вооружение TOOL и вперед.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Sep 10 2009, 15:15
Сообщение #306


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Цитата
LoadSegment грузит файл в рилтайме. Поищи примеры в коде. Соответственно грузишь файл, запускаешь ф-цию, выгружаешь файл. Вот и весь принцип.
Не совсем понял..... Вернее - не понял совсем..... lol.gif
Короче я начал делать так (по аналогии) ........
В - init_pc.c - прописал кнопки так:
Код
ExternInitKeyCodes();
        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 = "<";
B characters.c вставил -
Код

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;
}
В seadogs.с
Код

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 и вперед.
Ну так тулом я и сдвигал локаторы там же по старым и уже прописаным можно ореинтироваться а вот как их заного вписывать - нужны же координаты. Кстати я тулом пробовал комнату создать хрень какая то получилось mad.gif Тулом класно конвертить из врл в гм. И майки не надо Кстати у меня и не получилось не разу, майкой сконвертить. Да я вообще так чувствую что будет у меня еще гемора, с этим - новым городом, но блин, очень уж хочется smile.gif новы город с новыми зданиями Там и площадь и висилицы и фонтанчики и колоколенки и стены и дома несколько вариантов и все более приближено по виду к той эпохе
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dolphin_sv
сообщение Sep 10 2009, 16:46
Сообщение #307


матрос
***


Группа: форумчанин
Сообщений: 88
Регистрация: 23-May 05
Из: Донецк
Пользователь №: 771



Где именно ошибка? На что ругается?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Sep 10 2009, 18:20
Сообщение #308


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Сделано так -
Код
   switch(ControlName)
    {
        case "Control":
            // по F7  Показывает текущую позицию ГГ
             float x,y,z;
             GetCharacterPos(pchar, &x, &y, &z);                                <-- 785 строка
            
        break;
           }
А ругается так ohmy.gif -
COMPILE ERROR - file: seadogs.c; line: 785
Invalid Expression
COMPILE ERROR - file: seadogs.c; line: 785
invalid syntax
--------------------------------------------------------------------
Пробую сейчас сделать свой дебаг интерфейс через F7 Вызов панели с 2 кнопками F2, F3 Для снятия координат на суше и на море ( если получится 1.gif ) один черт еще под острова надо будет координаты снимать
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dolphin_sv
сообщение Sep 10 2009, 20:24
Сообщение #309


матрос
***


Группа: форумчанин
Сообщений: 88
Регистрация: 23-May 05
Из: Донецк
Пользователь №: 771



GetCharacterPos(pchar, x, y, z);

вот так надо.

Под острова этот способ не подойдет, т.к. считываются координаты персонажа в локации, а в открытом море и на карте нет персонажа и это не локации.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Sep 10 2009, 21:13
Сообщение #310


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Переправил - все равно ругается так же..... чего-то ему эта строчка не нравится smile.gif И кажется я уже так пробовал sad.gif

А про море я знаю - Был уже об этом разговор на форуме.... AlexusB даже выкладывал код как снимать координаты в море под острова
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dolphin_sv
сообщение Sep 10 2009, 22:10
Сообщение #311


матрос
***


Группа: форумчанин
Сообщений: 88
Регистрация: 23-May 05
Из: Донецк
Пользователь №: 771



Попробуй так
GetCharacterPos(GetMainCharacter(), &x, &y, &z);

Это уже точно должно сработать smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Sep 10 2009, 23:00
Сообщение #312


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



1.gif Есть заработало!!!!!!! Все показывает координаты. А я как раз закончил свою панель, вставил туда по F1 функцию и испытал.. smile.gif Большое спасибо

================================================================================
====================
Все свой вопрос удалил. Ошибку нашел


Прикрепленные изображения
Прикрепленное изображение
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Sep 23 2009, 17:54
Сообщение #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;  
Так вот какая петрушка, Если не отключить проверяльщик мин НР то они почему то деруться пока из игры не выйдешь А при отключенном не вызывается кейс вызывающий диалог sad.gif по этому я даже не знаю правильно ли я его пытаюсь вызвать) И даже после убийства Бертучо, даже обычным способом нельзя вступить в диалог с Франческой хотя диалог еще сохранился
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dolphin_sv
сообщение Sep 23 2009, 20:02
Сообщение #314


матрос
***


Группа: форумчанин
Сообщений: 88
Регистрация: 23-May 05
Из: Донецк
Пользователь №: 771



Сделай их не актерами а warrior, помести в разные группы и заставь эти две группы драться. В этом случае они не будут рубить друг друга до изнеможения и проверяльщик ХП сработает.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Sep 24 2009, 03:55
Сообщение #315


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Цитата(dolphin_sv @ Sep 23 2009, 20:02) *

Ай не знаю! Мудрил, мудрил какая-то хрень все получалась. То одно не работает то другое..... Короче я пошел другим более длинным путем. Вроде бы все работает, но вот насколько это грамотно
Код
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;
Так можно... или тоже безграмотно?
=====================================================
А вот еще вспомнил...... Почему каждый раз Эти двое по разному деруться, т.е. уходит разное время пока сработает проверяльщик НР? То я еле добегаю, то стою почти минуту, жду пока эта парочка натешится саблями махать
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Warship
сообщение Sep 24 2009, 05:09
Сообщение #316


Гроза морей
*****

Ветеран ФорумаЗаслуженный КорсарСоздатель Модов к ГПК
Создатель Модов к КВЛ
Группа: бета-тестер
Сообщений: 441
Регистрация: 29-April 07
Из: Прим. край г. Находка
Пользователь №: 9,103



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

===

А вообще, в твоем куске кода щас где-то 15 ненужных циклов по 1000 итераций каждый - оптимизируй код.
Прочти книжку "Совершенный код" Стива Макконнелла.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
navy
сообщение Sep 24 2009, 07:47
Сообщение #317


Hagane no Renkinjutsushi
*******

Seaward TeamВетеран ФорумаЗаслуженный Корсар

Группа: Seaward.Ru Team
Сообщений: 5,973
Регистрация: 15-March 05
Из: Волгоград
Пользователь №: 578



Цитата
Прочти книжку "Совершенный код" Стива Макконнелла.

Хотя бы рекомендации Алекса, их более чем достаточно smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Sep 24 2009, 08:59
Сообщение #318


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,606
Регистрация: 2-November 04
Пользователь №: 3



Цитата(navy @ Sep 24 2009, 08:47) *

Хотя бы рекомендации Алекса, их более чем достаточно smile.gif

Потому как Алекс (я) читал эту книжку smile.gif
User is online!Profile CardPM
Go to the top of the page
+Quote Post
navy
сообщение Sep 24 2009, 09:08
Сообщение #319


Hagane no Renkinjutsushi
*******

Seaward TeamВетеран ФорумаЗаслуженный Корсар

Группа: Seaward.Ru Team
Сообщений: 5,973
Регистрация: 15-March 05
Из: Волгоград
Пользователь №: 578



А я вот все никак не доберусь rolleyes.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Sep 24 2009, 10:24
Сообщение #320


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Цитата(Warship @ Sep 24 2009, 05:09) *

Непонятно, зачем ты их в кайсе "HelpGirl_quest" в группу перемещаешь, она ж не юзается
Warship
Ты про перемещение в какие группы говоришь про это
Код
LAi_group_MoveCharacter(CharacterFromID("beatrice"), "beatrice");
                LAi_group_MoveCharacter(CharacterFromID("Bertuzzo"), "Bertuzzo");
Если сделать без этих строчек (я пробовал по разному пока заработало) - тогда они просто месят друг друга не нанося урона - 0/50 и 0/80.
Цитата(Warship @ Sep 24 2009, 05:09) *
Прочти книжку "Совершенный код" Стива Макконнелла.
По поводу книжек Я живу в маленьком 3.gif (очень маленьком) sad.gif городке - этим я думаю все сказано.
Цитата(Navy @ Sep 24 2009, 07:47)
Хотя бы рекомендации Алекса, их более чем достаточно smile.gif
За отсутствием присутствия таковых(имеется ввиду - умных книжек) smile.gif я как раз и пользуюсь рекомендациями с форума и беру за образец и ореинтируюсь на скрипты от Акеллы 1.gif
Цитата(Warship @ Sep 24 2009, 05:09) *
А вообще, в твоем куске кода щас где-то 15 ненужных циклов по 1000 итераций каждый - оптимизируй код.
Вот я потому и советуюсь как его лучше оптимизировать и где именно эти 15 ненужных циклов.......
=================================================================
Еще....... Очень хочу сделать окно диалога как в К3 - (Без верхней части для голов) Но не знаю за что уцепиться и с чего начать В одном ли это файле или в нескольких(если да то каких) Может кто уже пробовал, знает?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

36 страниц V « < 14 15 16 17 18 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 16th September 2025 - 14:10

Блок рекламы
Яндекс цитирования Rambler's Top100
Rambler's Top100