Для тестирования предлагаю свой плагин Exploding_bullets. Долго я с ним возился. Честно сказать - именно того что хотел я не добился. Вернее добился, но как то не совсем то.
Начало работы с этим плагином здесь. http://world-source.ru/forum/102-4364-1
Плагин работает только на карте $10000$. Не спрашивайте почему только на этой карте. Как тестировал так пока и оставил. Для любителей жесткача - получите его точно. Желательно использовать этот плагин на DM серверах. Кто хочет получить более полное представление - мой сервак для тестирования моих плагинов 5.8.200.113:27068
Сделал видео, не ахти но понятно. Делал камерой. Пробовал разными программами, так и не смог понять как захватить экран. только рабочий стол берет. С демкой возиться просто нет времени. Так что не обессудьте. Видео здесь. http://www.4shared.com/file/3HYyMq7Vba/test_plugins.html или на ЮТубе https://youtu.be/eLZ0kpQ_5K4
Гости не могут скачивать файлы
Сообщение отредактировал tonline_kms65 - Суббота, 30.01.2016, 10:20:38
Полностью согласен. tonline_kms65, зачем выкладывать плагин в паблик без sp.
Знаешь почему? Потому что когда еб...ся долго и упорно, просишь помочь, даже за бабки а в ответ тишина (http://world-source.ru/forum/102-4364-1)- как то становится обидно. Да и ладно. Исходник я конечно выложу, когда все ошибки какие есть откатаю. А пока могу заверить никаких редиректов и прочей мутоты в плагине нет. Чистый программный код.
Сообщение отредактировал tonline_kms65 - Четверг, 31.12.2015, 14:32:39
Пришло время и мне высказать свое мнение об этом. Приготовься к жесткой критике.
========================= 1) Оформление темы. 1.1. Нет ни описания работы плагина, ни скриншотов. Лично мне было непонятно, что вообще делает этот плагин, пока я не глянул исходный код. 1.2. Исходный код не приложил, поэтому пришлось воспользоваться декомпилятором. 1.3. Если используешь morecolors, то на КСГО цветовые коды отображаться не будут. Там нет HTML (не считая Hint). теперь будешь это знать. Пиши игру, на которой ты уже ее протестил и точно уверен, что там работает исправно.
2) Исходный код 2.1. Получение кваров везде. Ты получаешь квары везде, где только можно. При коннекте игрока, при старте раунда, при каждом выстреле (!). Совет: Сделай отдельную глобальную переменную, которая будет отвечать за работоспособность плагина на данной карте. В OnMapStart получай квар "bullets_active" и сверяй карту. Если квар включен и карта нужная, то переменную на 1. И в дальнейшем ее проверяй. Вообще для всех кваров сделай отдельные переменные и получай в OnMapStart (именно там, т.к. в OnPluginStart все квары равны 0). Получение кваров проходит значительно дольше, чем проверка переменной.
2.2. Функции. Зачем тебе 2 одинаковых функции KnockBack и FindExplodingGrenade? Может, у меня декомпилятор так сделал, я не знаю. Совет: Вместо public используй stock.
2.3. События. В player_spawn лучше проверять индекс игрока, которого получил. Делай проверку if (client > 0). И ты это событие не объявил вообще. Где HookEvent("player_spawn", Event_PlayerSpawn); В bullet_impact ты получаешь переменные, которых вообще не существует. "attacker" и "dmg_health" просто нет в этом событии. Следовательно, условие
Код
if (attacker) { new Float:clientloc[3] = 0.0; GetClientAbsOrigin(i_Index, clientloc); new Float:heLoc[3] = 0.0; FindExplodingGrenade(heLoc); KnockBack(i_Index, clientloc, heLoc, knockback, dmg, true); }
работать просто не будет. Таймера DeleteFlame просто нигде нет. Ты его не создаешь, а блок есть. Совет: https://wiki.alliedmods.net/Counter-Strike:_Source_Events <-- Тут можешь посмотреть список событий и переменных, которые можно из них получить.
3) Оптимизация. 3.1. Проверка работы на карте. Проверяешь квары и карту везде, где только можешь. Как я уже говорил, заводи переменную. 3.2. Создание энтити на каждом выстреле. Ты создаешь 2 энтити на каждый выстрел. Причем, одно из них взрывается. Возьми 9 своих друзей, пригласи на сервер. Купите m249 каждому в руки и постреляйте по стенам. Увидишь, как ФПС упадет. Если на сервере стоит еще пара-тройка "тяжелых" плагинов, то непременно будет краш. Это будет сложно оптимизировать, т.к. задумка сама по себе "тяжелая". Совет: Старайся оптимизировать свой код. Думай, как можно сократить код, уменьшив количество операций, но чтоб все работало. Посмотри приемы оптимизации в других плагинах (decl вместо new, switch вместо else if и другие).
=========================
Перейдем к твоей реакции на критику.
Цитатаtonline_kms65 ()
Знаешь почему? Потому что когда еб...ся долго и упорно, просишь помочь, даже за бабки а в ответ тишина (http://world-source.ru/forum/102-4364-1)- как то становится обидно.
Обидно, что сам не можешь сделать? Не можешь найти в других плагинах/на других источниках?
Цитатаtonline_kms65 ()
А пока могу заверить никаких редиректов и прочей мутоты в плагине нет. Чистый программный код.
Я бы не был в этом так уверен. Код жутко неоптимизирован. Куча ошибок.
Цитатаtonline_kms65 ()
Честно, не вижу необходимости в самом коде, и не пойму зачем он?
Чтобы люди смогли убедиться в том, что плагин реально "чистый", т.е. без каких-либо вшиваний админки для тебя (частенько так делают некоторые скриптеры)/чит-функций и прочего. Опытные скриптеры помогут тебе оптимизировать твой плагин, если будут видеть твой код, а не декомпилированный, научат полезным фишкам, которые ты потом будешь применять. Начинающие скриптеры могут вытащить некоторые функции, которые им будут нужны. Уверен, ты сам так делал.
Цитатаtonline_kms65 ()
Как только разберусь как это сделать - так вопрос будет полностью решен
Ты выложил не до конца рабочий плагин. Зачем? Доработал бы, а потом выложил и с уверенностью написал, что он РАБОТАЕТ.
Цитатаtonline_kms65 ()
Кстати, интересно стало - а если бы я например купил у кого то готовый код
Сожалею, если бы ты купил ЭТОТ код.
Цитатаtonline_kms65 ()
Возникает вопрос - а как быть с уплаченными мной деньгами?
Встречный вопрос. Зачем ты выкладываешь плагин, если ты его купил? Конечно, это дело твое. Код по-любому получат путем декомпиляции, так что твой вопрос не имеет смысла.
Цитатаtonline_kms65 ()
Не поверишь - я посмотрел твой профиль - впервые такое делаю. Не могу понять где твои плагины. Дай посмотреть на них.
Плагины 1mpulse (в основном, это модули для VIP от wS'а):
Ты получаешь несуществующие параметры из эвента. Да еще и проверяешь эти параметры всякими проверками. И говоришь, что это работает...
Цитатаtonline_kms65 ()
А до конца рабочий плагин у меня такого никогда не бывает
Цитатаtonline_kms65 ()
2-3 часа в неделю это не то время что бы разобраться
А зачем тогда выкладывать в паблик? В коде полно мусора. Я искренне сочувствую тем, кто успел скачать этот плагин.
Цитатаtonline_kms65 ()
Насчет кода - лишний раз убеждаюсь - зачем он?
Я тебе назвал 3 причины, зачем нужно выкладывать исходный код. И вот тебе четвертая причина. Так требует лицензия SourceMod. В ней написано, что любой плагин должен быть выложен с исходным кодом. Хотя, для тебя это пустые слова.
Цитатаtonline_kms65 ()
Тебе нужно было - ты декомпильнул, хоть наверняка с кучей ошибок но суть понятна.
Лично мне декомпиляция не мешает понять суть плагина, даже вытащить некоторые кусочки. Но ты о других подумай. О новичках, о тех, кто не умеет находить главное в мусоре. Именно в мусоре, а не в нормальном коде.
Цитатаtonline_kms65 ()
Так же и другим кому нужно и кто сумеет. А кто не сумеет значит и ему не нужно.
Это слова эгоиста. Ты, конечно, извини меня, но это действительно так выглядит.
Цитатаtonline_kms65 ()
моя задача - нужен от взрыва ущерб с отображением значения ущерба, кому ущерб и от кого. И самое главное я хочу понять как это (запись ущерба) работает.
Хочешь понять - понимай. А выкладывать плагин, который может крашнуть сервак, не стоит.
Цитатаtonline_kms65 ()
Это даже не мой код
Я так и понял.
Цитатаtonline_kms65 ()
Кстати так и не получилось создать партиклы. Какая то ошибка выдавалась. После займусь обязательно.
Примеры работы с партиклями есть в плагине CSSGore. Но это только со стандартными. Если делаешь свои или используешь чужие кастомные партикли, то ничего у тебя не выйдет. Говорят, только в CSGO кастомные работают.
Цитатаtonline_kms65 ()
KnockBack и FindExplodingGrenade тоже самое, так же надо удалить, не вижу смысла а сервак наверняка грузит.
Не грузят, т.к. именно эти две функции попадают в тот самый блок, который никогда не может воспроизводиться.
Цитатаtonline_kms65 ()
Когда дойдет дело до решения того что я задумал, тогда можно заняться и оптимизацией.
Еще раз повторюсь. А зачем тогда выкладывал плагин?
Цитатаtonline_kms65 ()
Не будет работать. Не старайтесь.
Естественно.
Цитатаtonline_kms65 ()
Люблю критику.
Это видно. Ни слова о моих словах про твой код не сказал.
Цитатаtonline_kms65 ()
Но ты бы лучше мне код написал, как мне решить мою задачу.
Какую задачу? Ты ни слова не сказал о том, что хочешь. Только метафоры какие-то вроде этой:
Цитатаtonline_kms65 ()
Честно сказать - именно того что хотел я не добился. Вернее добился, но как то не совсем то.
Цитатаtonline_kms65 ()
Интересно а возможно стрелять HE_гранатой? Это было бы решением всех моих проблем. Надо попробовать.
Конечно возможно. Создаешь гранату и кидаешь в сторону взгляда.
я так понимаю это по траектории с указанием скорости?
Именно.
Цитатаtonline_kms65 ()
Я хочу стрелять ею. Это реально? Как думаешь? Есть смысл время терять?
Реально, если кинуть её с очень большой скоростью. Но как пулю все равно не сможешь сделать, т.к. с расстоянием она все равно падать будет. Как подствольник только можно сделать.
Цитатаtonline_kms65 ()
понять принцип работы например HE_гранаты
А что тут сложного? env_explosion + проп-граната в одном флаконе.
Цитатаtonline_kms65 ()
как и где записываются попавшие в радиус взрыва
player_hurt и проверка на гранату. Или через SDKHooks можешь сделать.
Цитатаtonline_kms65 ()
Если к примеру в момент взрыва гранаты в того кто в радиусе взрыва кто то еще стреляет и возможно не один. Это все учитывается как то. Поэтому я и говорю что возможно сама энтитя взрыва должна писать куда-то все свои данные (атакующего, ущерб, жертва) и так же энтитя игрока должна писать тоже самое. Короче как то так. Вот моя задача. Понять как это работает.
Внутридвижковые операции. Вряд ли выцепишь. Ну, только через player_hurt и SDKHooks можешь попробовать. Вручную все записывать в переменные, а потом выводить.
Цитатаtonline_kms65 ()
Ты проще на жизнь смотри. А то как то грузишься.
Не получается как-то, когда у тебя сервак будет падать каждую карту. Или игроки не будут играть из-за лагов и вылетов. Поэтому и нужна оптимизация.
Цитатаtonline_kms65 ()
Что бы сервак свалить этим плагином - надо постараться.
Если этот плагин стоит один, то да. А если еще пару плагинов с твоей "оптимизацией" докинуть, то все. Да и вообще, тут ещё от железа игрока зависит. Если у тебя комп за 250к, то ты хоть застреляйся гранатами. А вот если слабое железо, то и при 15-20 взрывах вылететь может.
1mpulse, попробуй сделать кастомные наборы музыки, как модуль для випки) идея годная, но файлов нужно будет много догружать и прекэшить
Добавлено (31.12.2015, 07:16:12) --------------------------------------------- tonline_kms65, скинь скрин логов или ошибок из консоли, без этого трудно что-либо понять.
Сообщение отредактировал GodlikE145 - Четверг, 31.12.2015, 07:08:30
Нет. Я же тебе сказал, что квары получать нужно один раз в начале карты. А ты их получаешь КАЖДЫЙ ВЫСТРЕЛ. Бедный твой сервак. Какие-то вычислительные операции делаешь ненужные.
Цитатаtonline_kms65 ()
Пока плагин профиксен, оставлю так.
Исходник выложи, если хочешь, чтоб мы все вместе смотрели твои косяки и справляли ошибки. А то я задолбался декомпилить твой плагин каждый раз.
1mpulse,
Цитата1mpulse ()
хех, приятно что про меня помнят))
Ну дак, если выкладываешь хорошие модули, то грех не вспомнить)
Цитата1mpulse ()
сделал модуль новый Aura, работает на CS:GO
Выкладывай, может нужен кому-нибудь будет.
Цитата1mpulse ()
css не проверял, но должен
Если партикли кастомные, то вряд ли. Больше "нет", чем "да".
Сообщение отредактировал BarD - Четверг, 31.12.2015, 09:07:58
PrintToServer("****************************************************"); PrintToServer(" Plugin Exploding_bullets LOADED"); PrintToServer(" By tonline_kms65"); PrintToServer("****************************************************"); CPrintToChat(client, "{red}**------------------------------------------------------------**"); CPrintToChat(client, "{green} На карте {red}${tomato}1{orange}0{yellow}0{green}0{blue}0{indigo}$ {green}разрывные пули на всё оружие"); CPrintToChat(client, "{red}**------------------------------------------------------------**"); PrintCenterText(client, " На карте $10000$ разрывные пули на всё оружие");
Ага, да ты ещё и карту при каждом выстреле получаешь......
Цитата
public Action:Event_BulletImpact(Handle:event, String:weaponName[], bool:dontBroadcast) { decl String:map[128]; GetCurrentMap(map, 125); if (strcmp(map, "$10000$", true) && GetConVarInt(setting_Plugin)/*Постарайся вообще к этому моменту выключить плагин*/ == 1)
Сообщение отредактировал pro-health - Четверг, 31.12.2015, 10:30:18
tonline_kms65, скинь скрин логов или ошибок из консоли, без этого трудно что-либо понять.
Нет ошибок. Я же писал уже - ошибки только от диффузок cssdm.
Цитата1mpulse ()
Согласен, выложи. Поможем чем сможем, оптимизируем, подскажем, что сами умеем. А так говорить что тебе никто не помогает и говорить, что выложишь исходник когда все ошибки исправишь, это не правильно, при этом уже выложив плагин в паб.
Да зачем мне оптимизация этого плагина. Я не прошу оптимизировать этот плагин. Этот плагин не то что я хотел. Я просил ЗА БАБКИ! написать мне код программы, с объяснением работы используемых в нем функций. Вот что мне нужно. Если мне понадобится помощь в оптимизации или еще что то, я так и скажу. Вроде ничего подобного я не просил, даже и не заикался об этом. Этот плагин я тестировал долго и упорно, ошибок и падений сервака не вижу. У кого упадет - сажут. Если кому то интересен мой плагин - можете заняться оптимизацией или еще каким то рукоблудием. Я не вижу необходимости. Плагин буду постоянно дополнять и эксперементировать с ним. Смотрите на жизнь проще. Не придумывайте себе проблем. Всех с Новым Годом! Успехов и удачи нам всем!
Сообщение отредактировал tonline_kms65 - Четверг, 31.12.2015, 14:52:24