Jump to content

Добро пожаловать на проект
Weekly Open Games

Weekly Open Games — это проект для людей, которым интересен хардкорный тип игры. Мы стараемся максимально эффективно использовать структуру, слабые и сильные стороны, а также технику и вооружение различных сторон конфликта, но не ставим перед собой цель провести 100% сбалансированного боестолкновения. Командная игра, командное взаимодействие — фундамент нашего проекта.
О проекте WOG WOG3 Как начать играть Правила серверов
MSC

VTN: Обсуждение

Recommended Posts

Нашел косяк в текущей реализации очков вранглера, если коротко, то они работали именно так, как описал hitman ранее:

 

On 20.03.2018 at 11:12 PM, hitman said:

Есть предложение по очкам, мать его, вранглера. Ибо сейчас неадекват. То играем до последнего бойца, то атака в 8 человек против одного в обороне проигрывает.


Сделайте так:
1) Рядовой - 1 очко
2) Тимлид\КО маленького отделения - 2 очка
3) КО большого отделения - 3 очка
4) КС - 4 очка

Количество очков на миссии = количество слотов. То есть если 20 атаки против 15 обороны, то у атаки 20 очков, у обороны 15.

но только при условии, что в настройках wrangler_points_settings.hpp все wrangler_points_*limit = 100. В остальных случаях все будет зависеть от кол-ва народу на старте миссии, чем больше народу  - тем меньше можно потерять стороне в процентном соотношении.
Вроде поправил, но проверить не могу - нет под руками армы: Файл Scripts/WranglerPoints/Init.sqf заменить на

wrangler_points_manager = compile preprocessFile "scripts\wranglerpoints\pointsmanager.sqf";
private ["_penalty"]

if (isServer) then 
{
        if (isMultiplayer) then 
        {
                uisleep wrangler_points_activation_delay;
        }
        else
        {
                uisleep 5;
        };

        wrangler_points_eastcount = 0;
        wrangler_points_westcount = 0;
        wrangler_points_guercount = 0;
        wrangler_points_civicount = 0;
        wrangler_points_eastcurrent = 0;
        wrangler_points_westcurrent = 0;
        wrangler_points_guercurrent = 0;
        wrangler_points_civicurrent = 0;

        wrangler_points_missionevent = 0;

        {
                if (_x iskindof "CAManBase") then 
                {
                        if (isMultiplayer) then 
                        {
                                if (isplayer _x) then 
                                {
                                        _penalty = _x getVariable ["wrangler_points_penalty",1];
                                        _x addMPEventHandler ["MPKilled",{_this call wrangler_points_manager;}];
                                        switch (str(side (group _x))) do 
                                        {
                                                case "EAST": 
                                                        {
                                                                wrangler_points_eastcount = wrangler_points_eastcount + 1; 
                                                                wrangler_points_eastcurrent = wrangler_points_eastcurrent + _penalty;
                                                        };
                                                case "WEST": 
                                                        {
                                                                wrangler_points_westcount = wrangler_points_westcount + 1; 
                                                                wrangler_points_westcurrent = wrangler_points_westcurrent + _penalty;
                                                        };
                                                case "GUER": 
                                                        {
                                                                wrangler_points_guercount = wrangler_points_guercount + 1; 
                                                                wrangler_points_guercurrent = wrangler_points_guercurrent + _penalty;
                                                        };

                                                case "CIV": 
                                                        {
                                                                wrangler_points_civicount = wrangler_points_civicount + 1; 
                                                                wrangler_points_civicurrent = wrangler_points_civicurrent + _penalty;
                                                        };
                                        };
                                };
                        }
                        else
                        {
                                _x addMPEventHandler ["MPKilled",{_this call wrangler_points_manager;}];
                                switch (str(side (group _x))) do 
                                {
                                        case "EAST": {wrangler_points_eastcount = wrangler_points_eastcount + 1;};
                                        case "WEST": {wrangler_points_westcount = wrangler_points_westcount + 1;};
                                        case "GUER": {wrangler_points_guercount = wrangler_points_guercount + 1;};
                                        case "CIV": {wrangler_points_civicount = wrangler_points_civicount + 1;};
                                };
                        };
                };

        } ForEach AllUnits;

};

 З.Ы. Патч не полный, как до дома доберусь - скину обновленную версию.

Edited by coppernik

Share this post


Link to post
Share on other sites

Прекратите трогать своими грязными лапами Очки Вранглера! Вы все равно в них ничего не понимаете :yoba-arma: Все там прекрасно работает, вопрос лишь в адекватности картодела, который ставит параметры от балды :yoba-arma:

Спойлер

Костицзе в бан, попугаев убить :yoba-arma:

 

Edited by DAP

Share this post


Link to post
Share on other sites
2 minutes ago, DAP said:

Прекратите трогать своими грязными лапами Очки Вранглера! Вы все равно в них ничего не понимаете :yoba-arma: Все там прекрасно работает, вопрос лишь в адекватности картодела, который ставит параметры от балды :yoba-arma:

А зачем тогда в переменную (которая должна быть по смыслу счетчиком очков, получившихся простым сложением очков стороны) ты запихал число играющих юнитов? При этом тригер на проигрыш мог показать нам "total eliminated", хотя есть еще живые юниты на стороне.
грубо говоря  в твоей текущей реализации:
Если мы имеем отделение в 8 тел, где 1 коммандир с 3мя очками, то при сложением твоим скриптом общее кол-во очков которое получит сторона на старте будет 8, а не 10.

 

Share this post


Link to post
Share on other sites
6 минут назад, coppernik сказал:

А зачем тогда в переменную (которая должна быть по смыслу счетчиком очков, получившихся простым сложением очков стороны) ты запихал число играющих юнитов? При этом тригер на проигрыш мог показать нам "total eliminated", хотя есть еще живые юниты на стороне.
грубо говоря  в твоей текущей реализации:
Если мы имеем отделение в 8 тел, где 1 коммандир с 3мя очками, то при сложением твоим скриптом общее кол-во очков которое получит сторона на старте будет 8, а не 10.

 

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

Edited by DAP

Share this post


Link to post
Share on other sites
1 minute ago, DAP said:

Потомущта считается процент от играющих игроков стороны, а не количества слотов на миссии. 

При этом полностью игнорируется тот факт, что юнит может иметь вес в очках отличный от 1. Отсюда получаем - чем больше людей с весом отличным от 1, тем меньше нужно потерять стороне, что бы проиграть. И она сможет проиграть по потерям, имея еще живых игроков, даже при wrangler_points_*limit = 100.

Share this post


Link to post
Share on other sites
8 минут назад, coppernik сказал:

При этом полностью игнорируется тот факт, что юнит может иметь вес в очках отличный от 1. Отсюда получаем - чем больше людей с весом отличным от 1, тем меньше нужно потерять стороне, что бы проиграть. И она сможет проиграть по потерям, имея еще живых игроков, даже при wrangler_points_*limit = 100.

Разумеется. Потому что очки учитываются "по весу", а не "по головам". Иначе вообще смысла не будет назначении разной стоимости очков. Нахрена она вообще нужна будет, если смерть командира никак не повлияет "скорость уменьшения" ОВ? Например, у тебя три бойца. Двое из них стоимостью 1 ОВ и один - 2 ОВ. Нахера ставить за 100% общую стоимость 4 ОВ, если при таких условиях миссия завершится при смерти только всех трех юнитов? Это будет равнозначно тому, чтобы дать каждому юниту по 1 ОВ стоимости и поставить за 100% 3 ОВ. Вот нахера, скажи мне? 

Edited by DAP

Share this post


Link to post
Share on other sites
5 minutes ago, DAP said:

Разумеется. Потому что очки учитываются "по весу", а не "по головам". Иначе вообще смысла не будет назначении разной стоимости очков. Нахрена она вообще нужна будет, если смерть командира никак не повлияет "скорость уменьшения" ОВ? Например, у тебя три бойца. Двое из них стоимостью 1 ОВ и один - 2 ОВ. Нахера ставить за 100% общую стоимость 4 ОВ, если при таких условиях миссия завершится при смерти только всех трех юнитов? Это будет равнозначно тому, чтобы дать каждому юниту по 1 ОВ стоимости и поставить за 100% 3 ОВ. Вот нахера, скажи мне? 

Что бы дать возможность картоделам прозрачно и предсказуемо настроить лимиты, если он установил 100 - значит эта сторона должна проиграть по потерям только при полном уничтожении. У тебя -  ставишь лимит 100. Создаешь 2 отделения по 6 человек, где обычный юнит - 1, коммандир - 6 очков, убиваешь обоих коммандиров(просто бойцов не трогаешь) - полчаешь проигрышь по потерям.

Edited by coppernik

Share this post


Link to post
Share on other sites
10 минут назад, coppernik сказал:

Что бы дать возможность картоделам прозрачно и предсказуемо настроить лимиты, если он установил 100 - значит эта сторона должна проиграть по потерять только при полном уничтожении. У тебя -  ставишь лимит 100. Создаешь 2 отделения по 6 человек, где обычный юнит - 1, коммандир - 6 очков, убиваешь обоих коммандиров(просто бойцов не трогаешь) - полчаешь проигрышь по потерям.

А я не виноват, что вы даже мозжечок напрячь не можете :yoba-arma: Английским по-белому написано, что это ЛИМИТ ОЧКОВ ВРАНГЛЕРА ДЛЯ СТОРОНЫ :yoba-arma: ОЧКОВ ВРАНГЛЕРА, КАРЛ! :yoba-arma: А не количества бойцов на стороне :yoba-arma: Они работают именно так, как и должны: фиксируют уровень и значимость потерь стороны и завершают миссию при достижении критических значений таких потерь. Ибо нехрен командирам лезть вперед на пулеметы, как вы тут на вожике это любите делать :yoba-arma: Очки Вранглера научат вас жизнь командира ценить и беречь :yoba-arma:

Edited by DAP

Share this post


Link to post
Share on other sites

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

Чтоб понять код нужно напрягать мозжечок. Не для того он служит, чтоб им код понимать.

Edited by Wrangler

Share this post


Link to post
Share on other sites
Just now, Wrangler said:

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

Там, кстати, хоть вообще не комментированный код, но все очень просто и понятно.

 

2 minutes ago, DAP said:

 :yoba-arma: Очки Вранглера научат вас жизнь командира ценить и беречь :yoba-arma:

В теории, но извини, не в текущей реализации.

Share this post


Link to post
Share on other sites
4 минуты назад, Wrangler сказал:

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

Я им уже сто раз объяснял как они работают и что зачем нужно, но они все равно продолжают додумывать и выдумывать какие-то свои правила :yoba-arma:

Share this post


Link to post
Share on other sites
4 минуты назад, coppernik сказал:

В теории, но извини, не в текущей реализации.

Текущая реализация упирается исключительно в безграмотность и своеволие картоделов :yoba-arma: ОВ - это, по-сути, инструментарий для оценки уровня и значимости потерь и автоматического завершения миссии по определенному шаблону в зависимости от результатов такой оценки.

Share this post


Link to post
Share on other sites
Just now, DAP said:

Текущая реализация упирается исключительно в безграмотность и своеволие картоделов :yoba-arma: ОВ - это, по-сути, инструментарий для оценки уровня и значимости потерь и автоматического завершения миссии по определенному шаблону в зависимости от результатов такой оценки.

Критерий оценки которого максимально запутан и непрозрачен, что я и хочу изменить.

Share this post


Link to post
Share on other sites
3 минуты назад, coppernik сказал:

Критерий оценки которого максимально запутан и непрозрачен, что я и хочу изменить.

Вот этого только не надо :yoba-arma: Вы просто не хотите в очередной раз получить сообщение "МИССИЯ ПРОВАЛЕНА", когда всем командным составом опять пойдете в алгу на пулеметы :yoba-arma: Все там просто и прозрачно :yoba-arma: Просто ОВ сурово наказывают за разбазаривание жизней командиров и личного состава, от чего у некоторых возникает баттхерт "НИПАИГРАЛ", когда миссия завершается провалом по потерям :yoba-arma:

Share this post


Link to post
Share on other sites
Just now, Wrangler said:

вот это и задокументировать!

Я честно попытался сформулировать этот критерий в текущем виде и бросил, там все неоднозначно.
@DAP То есть, что скрипт при оставшихся живых на стороне и выставленном лимите в 100  выдает "Totally Elliminated" - это тоже нормально?

Share this post


Link to post
Share on other sites
6 минут назад, coppernik сказал:

Я честно попытался сформулировать этот критерий в текущем виде и бросил, там все неоднозначно.
@DAP То есть, что скрипт при оставшихся живых на стороне и выставленном лимите в 100  выдает "Totally Elliminated" - это тоже нормально?

Вообще-то я давал Доку шаблон, в котором этот аспект был учтен. Но вы там уже так поковырялись со своими "рацпредложениями", что я не могу гарантировать даже адекватную работу всех алгоритмов :yoba-arma: Вот именно поэтому я сейчас потихоньку и пилю модуль ОВ в виде аддона, в который вы так просто не сможете залезть своими шаловливыми ручонками :yoba-arma:

Edited by DAP

Share this post


Link to post
Share on other sites
1 минуту назад, DAP сказал:

Но вы там уже так поковырялись со своими "рацпредложениями"

НЕТ.

Никаких изменений в ОВ.

Share this post


Link to post
Share on other sites
2 минуты назад, DAP сказал:

вы там уже так поковырялись со своими "рацпредложениями", что я не могу гарантировать даже адекватную работу

Посеяли рациональное зерно?

(посеяли в смысле пролюбили)

Share this post


Link to post
Share on other sites
4 минуты назад, Dock сказал:

НЕТ.

Никаких изменений в ОВ.

Ага :yoba-arma: Только тут Коперник выше уже приводит примеры того, как он будет менять ОВ :yoba-arma: Сколько вы там уже успели наковырять я без понятия. К тому же до сих пор помню, как тот же Ванкос объяснял мне как и где он брал скрипты ОВ для своих миссий :yoba-arma: Ну и твои эксперименты со сторонами тоже в памяти отложились :yoba-arma:

Edited by DAP

Share this post


Link to post
Share on other sites
Just now, DAP said:

Вообще-то я давал Доку шаблон, в котором этот аспект был учтен. Но вы там уже так поковырялись со своими "рацпредложениями", что я не могу гарантировать даже адекватную работу всех алгоритмов :yoba-arma:

                if (wrangler_points_eastcurrent <= _eastlimit) then
                {
                        wrangler_points_missionevent = 1;

                        [] spawn
                        {
                                uisleep 5;
                                [wrangler_points_defeat_east_sidelist,wrangler_points_eastdefeatmessage] remoteExec ["fnc_endmission"];
                        };
                };

Твой код?
При лимите в 100, _eastlimit всегда равен 0. Значит, как только счетчик оставшихся очков вранглера опустится до 0 - миссия завершается. При старте миссии в этом счетчике кол-во игроков(не учитывая вес), при каждой смерти  отнимается вес юнита, что в моем примере выше с 2мя отделениями после смерти только 2х коммандиров уже даст 0 на счетчике.

Share this post


Link to post
Share on other sites
6 минут назад, coppernik сказал:

Твой код?
При лимите в 100, _eastlimit всегда равен 0. Значит, как только счетчик оставшихся очков вранглера опустится до 0 - миссия завершается. При старте миссии в этом счетчике кол-во игроков(не учитывая вес), при каждой смерти  отнимается вес юнита, что в моем примере выше с 2мя отделениями после смерти только 2х коммандиров уже даст 0 на счетчике.

А функция fnc_endmission будет проверять остались ли еще живые юниты на стороне или нет и, в зависимости от этого, будет выводить один из двух вариантов сообщений на экран :yoba-arma: Чо не так то? :yoba-arma: По крайней мере так было в той версии ОВ, которую я давным давно отдавал Доку :yoba-arma:

Edited by DAP

Share this post


Link to post
Share on other sites
6 minutes ago, DAP said:

А функция fnc_endmission будет проверять остались ли еще живые юниты на стороне или нет и, в зависимости от этого, будет выводить один из двух вариантов сообщений на экран :yoba-arma: Чо не так то? :yoba-arma: По крайней мере так было в той версии ОВ, которую я давным давно отдавал Доку :yoba-arma:

Ага, только делает она это только в том случае, если wrangler_points_eastlimit не равен 100:
 

        if (wrangler_points_eastlimit == 100) then
        {
                wrangler_points_eastdefeatmessage = ["STR_WP_SIDE_EAST","STR_WP_ENDMESSAGE_SIDE_ELIMINATED"];
        }
        else
        {
                if (({((side (group _x)) == EAST)and(alive _x)}  count allUnits) == 0) then
                {
                        wrangler_points_eastdefeatmessage = ["STR_WP_SIDE_EAST","STR_WP_ENDMESSAGE_SIDE_ELIMINATED"];
                }
                else
                {
                        wrangler_points_eastdefeatmessage = ["STR_WP_SIDE_EAST","STR_WP_ENDMESSAGE_SIDE_CSUALTIES"];
                };
        };

Вот тебе и :yoba-arma:

Share this post


Link to post
Share on other sites
19 минут назад, coppernik сказал:

Ага, только делает она это только в том случае, если wrangler_points_eastlimit не равен 100:
 

Вот тебе и :yoba-arma:

Ну еще бы :yoba-arma: Старье оно и есть старье :yoba-arma: То-то я смотрю у вас на видео "Total eliminated" все мелькает там, где не должно бы :yoba-arma:

Можешь просто убрать условие if (wrangler_points_*tlimit == 100) then и сообщение будет выводиться правильное даже при лимите в 100% :yoba-arma:  Хотя не, тоже не будет, если на карте останутся живые боты на базе :yoba-arma: Придется добавить условие на проверку живых игроков :yoba-arma: Останется только Дока заставить пересобрать все миссии с обновленным шаблоном :yoba-arma: Я как-то уже пытался, но все заглохло намертво :yoba-arma:

Edited by DAP

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.