Re: Скриптинг курилка -
OstGot - 19.03.2017
Quote:
Originally Posted by OstGot
Возник один интересный вопрос, но не совсем по pawn скриптингу.
Собстно, когда-то проверял, выдаётся ли гольф клюшка при выходе из Caddy (457 модель), и она выдавалась при условии, что в этом слоте оружия у игрока ничего не было. Сейчас вот решил перепроверить - не выдаётся... Переустановил игру и попробовал на чистой, тоже самое. Ещё спрашивал у людей и выяснил, что у кого-то выдаётся, у кого-то нет.
Вопрос: от чего это может зависеть, если кто знает? (соб/клео/сф/самп аддон и прочие моды точно отпадают)
|
Причина проблемы всё-же найдена: это действительно делал соб. Вариативность у разных игроков была потому, что разные собейты обновляются по разному (а у кого-то вообще его и нет), и в одних этого нет, в других есть (от pr9n'а, к примеру, клюшка выдаётся). Нехитрым методом теста даже выяснил, в каком именно файле проблема: d3d9.dll, кой без модов в папке с игрой отсутствует, так что смело можно удалять любые проверки из ваших античитов на выдачу клюшки, если вдруг имеете
Re: Скриптинг курилка -
ZiGGi - 19.03.2017
Quote:
Originally Posted by thebatya
Недавно начал работать с гит
Подскажите кто сталкивался с проблемой кодировки
У меня все файлы проекта в кодировке cp1251 и после пуша проекта на гитхаб все в кракозябрах
Локальный конфиг
PHP Code:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
quotepath = false
[i18n]
commitencoding = cp1251
logoutputencoding = cp1251
|
Это нормально, в репозитории же всё хорошо, просто GitHub (именно сайт) не поддерживает кодировку, отличную от UTF-8. Можешь попробовать GitLab, там вроде как всё нормально.
Re: Скриптинг курилка -
thebatya - 19.03.2017
Quote:
Originally Posted by ZiGGi
Это нормально, в репозитории же всё хорошо, просто GitHub (именно сайт) не поддерживает кодировку, отличную от UTF-8. Можешь попробовать GitLab, там вроде как всё нормально.
|
Мне именно гитхаб нужен, потому что проект там в приватном репозитории расположен.
А можно как то скомпилировать utf-8 нормально?
Quote:
The pawn compiler reads source files in the ascii character set and in the UTF-8 character set.
|
Re: Скриптинг курилка -
ZiGGi - 19.03.2017
Quote:
Originally Posted by thebatya
Мне именно гитхаб нужен, потому что проект там в приватном репозитории расположен.
А можно как то скомпилировать utf-8 нормально?
|
Не получится - Pawn то поддерживает UTF-8, но SA-MP нет. Но я не понимаю - зачем тебе вообще смотреть код через сайт GitHub? Тем более в приватном репозитории. Да и приватные репозитории есть как на GitLab, так и на Bitbucket.
Re: Скриптинг курилка -
DartfoL - 19.03.2017
Quote:
Нехитрым методом теста даже выяснил, в каком именно файле проблема: d3d9.dll
|
ну как бы это и есть сам соб...
Re: Скриптинг курилка -
Mcc - 19.03.2017
Quote:
Originally Posted by OstGot
Причина проблемы всё-же найдена: это действительно делал соб. Вариативность у разных игроков была потому, что разные собейты обновляются по разному (а у кого-то вообще его и нет), и в одних этого нет, в других есть (от pr9n'а, к примеру, клюшка выдаётся). Нехитрым методом теста даже выяснил, в каком именно файле проблема: d3d9.dll, кой без модов в папке с игрой отсутствует, так что смело можно удалять любые проверки из ваших античитов на выдачу клюшки, если вдруг имеете
|
а зачем удалять то? если можно определенный процент негодяев выгнать с сервера. я что то не уловил сути.
Re: Скриптинг курилка -
OstGot - 19.03.2017
Quote:
Originally Posted by DartfoL
ну как бы это и есть сам соб...
|
Да, я знаю. Но возможно ещё для каких-то модов он нужен, хз. А сам файл найти нужно было, чтобы лишний раз удостовериться, так что это просто инфа для справки)
Quote:
Originally Posted by Mcc
а зачем удалять то? если можно определенный процент негодяев выгнать с сервера. я что то не уловил сути.
|
Во многих античитах на оружие наоборот сохранились исключения для выдачи этой самой клюшки, т.е. при её появлении, если игрок только что вышел из авто, то это в таких защитах игнорируется и за чит не считается. Убрав проверку за это станет наказывать, всё просто.
Re: Скриптинг курилка -
OneHitWonder - 24.03.2017
Но у меня есть вот такой код в OnPlayerUpdate
Code:
if(GetPlayerPos(playerid, achpos[playerid][0], achpos[playerid][1], achpos[playerid][2]))
{
if(!IsAFlyingVeh(GetPlayerVehicleID(playerid)) && !IsABoatVeh(GetPlayerVehicleID(playerid)))
{
if(!IsPlayerInRangeOfPoint(playerid, 40.0, achpos[playerid][0], achpos[playerid][1], achpos[playerid][2]))
{
Kick(playerid);
}
}
}
Re: Скриптинг курилка -
ZiGGi - 24.03.2017
Quote:
Originally Posted by OneHitWonder
Но у меня есть вот такой код в OnPlayerUpdate
Code:
if(GetPlayerPos(playerid, achpos[playerid][0], achpos[playerid][1], achpos[playerid][2]))
{
if(!IsAFlyingVeh(GetPlayerVehicleID(playerid)) && !IsABoatVeh(GetPlayerVehicleID(playerid)))
{
if(!IsPlayerInRangeOfPoint(playerid, 40.0, achpos[playerid][0], achpos[playerid][1], achpos[playerid][2]))
{
Kick(playerid);
}
}
}
|
Я уверен, что есть и что-то хуже.
Re: Скриптинг курилка -
OneHitWonder - 24.03.2017
Буду искать, смотреть. А с этим как? Не слишком страшно для OnPlayerUpdate?
Re: Скриптинг курилка -
ZiGGi - 24.03.2017
Quote:
Originally Posted by OneHitWonder
Буду искать, смотреть. А с этим как? Не слишком страшно для OnPlayerUpdate?
|
Не знаю, но можно и улучшить.
Re: Скриптинг курилка -
White_116 - 24.03.2017
Скинь ради интереса функцию
IsAFlyingVeh(GetPlayerVehicleID(playerid))
Re: Скриптинг курилка -
OneHitWonder - 24.03.2017
IsAFlyingVeh(carid)
{
switch(GetVehicleModel(carid))
{
case 417, 425, 447, 460, 469, 476, 487, 488, 497, 511..513, 519, 520, 548, 553, 563, 577, 592, 593: return true;
}
return false;
}
Re: Скриптинг курилка -
OneHitWonder - 24.03.2017
Quote:
Originally Posted by ZiGGi
Не знаю, но можно и улучшить.
|
Каким образом, не подскажешь? Это всё на что меня хватило
Re: Скриптинг курилка -
OstGot - 24.03.2017
Quote:
Originally Posted by OneHitWonder
Каким образом, не подскажешь? Это всё на что меня хватило
|
Не API переписывать стандартный надо, а алгоритмы улучшать.
Для начала можно попробовать переделать проверку на тип т/с, заведя массив для всех моделей авто и указав тип в нужных ячейках для каждой модели. Далее можно будет просто обращаться к нужному индексу в массиве (а именно иду модели) и сразу получать тип (в т.ч. и узнавать, лодка это или что-то иное). Прирост скорости, возможно, будет невысоким, но попробовать стоит, если это так уж важно.
Также "GetPlayerVehicleID(playerid)" можно узнавать единожды, записав предварительно её возвращаемое значение в переменную
Re: Скриптинг курилка -
ZiGGi - 24.03.2017
Quote:
Originally Posted by OstGot
Не API переписывать стандартный надо, а алгоритмы улучшать.
Для начала можно попробовать переделать проверку на тип т/с, заведя массив для всех моделей авто и указав тип в нужных ячейках для каждой модели. Далее можно будет просто обращаться к нужному индексу в массиве (а именно иду модели) и сразу получать тип (в т.ч. и узнавать, лодка это или что-то иное). Прирост скорости, возможно, будет невысоким, но попробовать стоит, если это так уж важно.
Также "GetPlayerVehicleID(playerid)" можно узнавать единожды, записав предварительно её возвращаемое значение в переменную
|
Но лучше не изобретать велосипед, а использовать готовые решения. У меня есть очень простая и небольшая библиотека:
https://github.com/Open-GTO/zvehinfo
Ещё GetVehicleModel можно вызвать единожды.
А если серьёзно, то этот код вообще можно удалить, он всё-равно никого никогда не кикнет.
Re: Скриптинг курилка -
OneHitWonder - 24.03.2017
Quote:
Originally Posted by ZiGGi
Но лучше не изобретать велосипед, а использовать готовые решения. У меня есть очень простая и небольшая библиотека: https://github.com/Open-GTO/zvehinfo
Ещё GetVehicleModel можно вызвать единожды.
А если серьёзно, то этот код вообще можно удалить, он всё-равно никого никогда не кикнет.
|
Как это? Еще как кикает. При телепорте отлавливает как нечего делать.
За библиотеку спасибо, воспользуюсь.
Re: Скриптинг курилка -
ZiGGi - 24.03.2017
Quote:
Originally Posted by OneHitWonder
Как это? Еще как кикает. При телепорте отлавливает как нечего делать.
За библиотеку спасибо, воспользуюсь.
|
Значит что-то другое кикает, потому что GetPlayerPos и IsPlayerInRangeOfPoint используют одни и те же данные о положении игрока.
Re: Скриптинг курилка -
OstGot - 24.03.2017
Quote:
Originally Posted by ZiGGi
Значит что-то другое кикает, потому что GetPlayerPos и IsPlayerInRangeOfPoint используют одни и те же данные о положении игрока.
|
Кстати да, сразу тоже заметил, что сверяется текущая позиция игрока с текущей позицией игрока, но что-то списал всё на сонную голову)
А насчёт велосипедов - я делал свою функцию узнавания типа по такому принципу ещё пару лет назад
Re: Скриптинг курилка -
OneHitWonder - 24.03.2017
Кстати да, только сейчас это понял) Использовал еще сегодня пвары и переделал на переменные, а это совсем не учел, доделал)