Xeon_RUS, функция TogglePlayerBlockHit(playerid, toggle) влияет на блокировку выполнения алгоритма вычисления нанесения урона, а не блокирует физический урон игрового движка.
AirKite ваш fs конфликтует с моим модом, это понятно мод слишком большой, много строк.
Как связано количество строк от того как это работает? if(a==b) { print("A = B"); }
и if(a==b) print("A = B"); одно и тоже. Работает тоже одинаково.
Quote (AirKite)
Просто нет желания рыться в старых исходниках чего то править, перезаливать и т.д.
Выкладывать свои работы в общий доступ это нормально. Все равно когда-нибудь сделает что-то подобное и выложит исходник. Я не буду больше тебя донимать, просто это хороший скрипт и можно было бы выложить хотя бы (!) версию без надписи при коннекте. Никто его ставить не будет только из-за этого. Я понимаю, ты мне скажешь в ответ, что ты никого не заставляешь это ставить. Я тебе скажу в ответ: А смысл тогда делать было скрипт?
Если баги возникают из ниоткуда - ты на правильном пути. (с)
AirKite ваш fs конфликтует с моим модом, это понятно мод слишком большой, много строк.
Там нечему конфликтовать, вне зависимости от того на сколько большой или маленький мод. Внешнее воздействие производится только в виде CallRemote на OnPlayerHit с соответствующими аргументами, что в принципе и было запланировано. Дальше вашего public OnPlayerHit(playerid, hiterid, bodypart, weaponid, Float:distance) в моде, некуда не уйдёт.
Quote (RMEN)
Хочу встроить ваш fs к себе в мод
Даже если бы исходники были в свободном доступе, это плохая идея.
Quote (RMEN)
Я не знаю как это связано, но при коннекте, не происходит спаун 30% игроков.
Как я уже говорил выше всё воздействие это вызов OnPlayerHit из всех рабочих скриптов. Ошибка в любом случае допущена в вашем FS или GM.
Quote (_Dark_)
Выкладывать свои работы в общий доступ это нормально.
И что? Во первых, на этот счёт у каждого своё мнение, каждый сам в праве решать нужно ему что то выкладывать или нет. В прочем то, скрипт разве не в общем доступе? Хочешь качай, хочешь не качай... это разве не общий доступ?
Quote (_Dark_)
Все равно когда-нибудь сделает что-то подобное и выложит исходник.
Именно что-то подобное уже давно есть и с исходниками. Мне не холодно, не жарко, также как и то, что "Все равно когда-нибудь GTA SA перестанет быть актуальной", хотя нет... это печалит Скорее также как и "Все равно когда-нибудь собака съест кота". В общем, с таким даже к отсутствию женской логики не подойти "Ну сними трусики и дай мне!!! Всё равно когда-нибудь кто то это сделает".
Quote (_Dark_)
Никто его ставить не будет только из-за этого. Я понимаю, ты мне скажешь в ответ, что ты никого не заставляешь это ставить. Я тебе скажу в ответ: А смысл тогда делать было скрипт?
Во первых скрипт делался исключительно для SmartLife. Во вторых после того как я решил поделится и с другими, он стал востребован. То что ты его не хочешь использовать изза надписи, и думаешь что остальные поступают также, лишь твоё мнение. В прочем даже если бы я делал его чисто для общего доступа, то на вопрос " А смысл тогда делать было скрипт?" ответ был бы также простым "Для тех кому нужен был этот скрипт, в таком виде, в котором он предоставляется."
Что в этом скрипте такого тяжелого? Вот принцип работы в теории: 1. При нажатии клавиши огня, определяем оружие в руках, а также в отдельную переменную записываем прошлого игрока, на которого была прошлая цель, если смещение сильно изменилось, значит цель уже не он, а значит едем дальше. Есть ещё исключение, если игрок использует кулак или кастет, а также оружие, которое не может поражать дальние цели, типа огнемета и прочих вещей, требуется доп.первичная проверка на дистанцию между игроками. 2. Циклом, а желательно динамическим циклом, который будет прогонять игроков, вошедших в область видимости конкретного игрока, прогоняем их, определяя вектор прицела игрока, для этого вам понадобятся координаты игрока, координаты игрока, кто проверяется, вектора направления камеры и её позиции, ну, а здесь зная векторную алгебру, произвести расчет, то есть произведение двух векторов, первый вектор - камерный, второй получаем сами с помощью вычитания камерной позиции и позиции игрока, кто проверяется, после их произведения у нас получается что-то некого скалярного вектора с модулем, этот вектор мы и будем делить на модуль вектора камеры через его проекцию в прям.системе координат. Из всех этих математических операций мы получим смещение по отношению к игроку, если это смещение к примеру меньше одной целой, делаем вывод о том, что цель является именно этот игрок, записываем его в переменную для этого игрока. 3. В это время у нас либо в анти-чите, либо ещё в каком-либо паблике должны браться жизни игроков, кто является целью, пока игрок, который стреляет не отпустит клавишу огня, опять же foreach, в этом цикле мы будем проверять жизни игрока, если они будут становится меньше, отправляем результат функции-автовызова. 4. Когда игрок отпускает клавишу огня, берем финальный уровень жизней игрока, на кого была цель и если оно будет меньше, опять отправляем данные, но все это должно сопровождаться постоянной проверкой на смещение, иначе игрок может просто сбить прицел от игрока, в которого стреляет. Этот способ будет безупречно работать только в том случаи, если на сервере не будет задержек, а также между игроками будет дуэль. Если же кто-то присоединиться к поддержки для одной цели, определить сколько жизней вынес тот или иной игрок будет фактически невозможно. А использование паблика OnPlayerUpdate для меня лично будет неуместным в данном кейсе, так как он имеет слишком низкую частоту вызова, что для среднего мода с большим онлайном просто невозможно. На счет уровня, куда попал игрок, это все делается легко, опять же определяем диапазон нужного смещения, которое соответствует какой-либо части тела и готово. Но лично для меня все это лишнее, это не может работать безупречно, я уверен. С такой синхронизацией это доп.нагрузка, не более.
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Да, именно такое уже и есть. Причём не один раз делалось OnPlayerHit намного проще, примитивней и он не делает проверок на ХП игрока. И всё это не за просто так. Скрипт в сотни раз быстрее буржуйских аналогов, точно определяет стрельбу хоть в перестрелке 100 на 100 (Имеется ввиду не только физическое попадание). И как сказал toneysix, по другому типу:
Quote (toneysix)
Если же кто-то присоединиться к поддержки для одной цели, определить сколько жизней вынес тот или иной игрок будет фактически невозможно.
p.s. В свой мод я некогда этот скрипт не вшивал. Но в виде FS он всегда был запущен и функционировал внутри мода.
AirKite, простите, может нубский вопрос, но все же.. У меня пишет фатальный еррор, что не может прочитать из файла oph, хотя я вставил Ваш oph.inc в pawno/include/ . И уже как только не пробовал, и так и сяк, а в моде всеравно еррор.. Помогите пожалуйста
За 2010 год, с глупым алгоритмом, который прокручивает цикл со сдвигом по 1.0 юниту и проверкой т.е. он буквально прорисовывает траекторию полёта пули (определяет только headshot), не позавидуешь тому кто поставит этот скрипт с онлайном выше 20 человек.
KyPaITaTKa_XIX, ты уверен что этим pawno пытаешься скомпилировать скрипт?