Скриптинг курилка

Quote:
Originally Posted by OstGot
View Post
Возник один интересный вопрос, но не совсем по pawn скриптингу.
Собстно, когда-то проверял, выдаётся ли гольф клюшка при выходе из Caddy (457 модель), и она выдавалась при условии, что в этом слоте оружия у игрока ничего не было. Сейчас вот решил перепроверить - не выдаётся... Переустановил игру и попробовал на чистой, тоже самое. Ещё спрашивал у людей и выяснил, что у кого-то выдаётся, у кого-то нет.
Вопрос: от чего это может зависеть, если кто знает? (соб/клео/сф/самп аддон и прочие моды точно отпадают)
Причина проблемы всё-же найдена: это действительно делал соб. Вариативность у разных игроков была потому, что разные собейты обновляются по разному (а у кого-то вообще его и нет), и в одних этого нет, в других есть (от pr9n'а, к примеру, клюшка выдаётся). Нехитрым методом теста даже выяснил, в каком именно файле проблема: d3d9.dll, кой без модов в папке с игрой отсутствует, так что смело можно удалять любые проверки из ваших античитов на выдачу клюшки, если вдруг имеете
Reply

Quote:
Originally Posted by thebatya
View Post
Недавно начал работать с гит
Подскажите кто сталкивался с проблемой кодировки
У меня все файлы проекта в кодировке 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, там вроде как всё нормально.
Reply

Quote:
Originally Posted by ZiGGi
View Post
Это нормально, в репозитории же всё хорошо, просто 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.

Reply

Quote:
Originally Posted by thebatya
View Post
Мне именно гитхаб нужен, потому что проект там в приватном репозитории расположен.
А можно как то скомпилировать utf-8 нормально?
Не получится - Pawn то поддерживает UTF-8, но SA-MP нет. Но я не понимаю - зачем тебе вообще смотреть код через сайт GitHub? Тем более в приватном репозитории. Да и приватные репозитории есть как на GitLab, так и на Bitbucket.
Reply

Quote:

Нехитрым методом теста даже выяснил, в каком именно файле проблема: d3d9.dll

ну как бы это и есть сам соб...
Reply

Quote:
Originally Posted by OstGot
View Post
Причина проблемы всё-же найдена: это действительно делал соб. Вариативность у разных игроков была потому, что разные собейты обновляются по разному (а у кого-то вообще его и нет), и в одних этого нет, в других есть (от pr9n'а, к примеру, клюшка выдаётся). Нехитрым методом теста даже выяснил, в каком именно файле проблема: d3d9.dll, кой без модов в папке с игрой отсутствует, так что смело можно удалять любые проверки из ваших античитов на выдачу клюшки, если вдруг имеете
а зачем удалять то? если можно определенный процент негодяев выгнать с сервера. я что то не уловил сути.
Reply

Quote:
Originally Posted by DartfoL
View Post
ну как бы это и есть сам соб...
Да, я знаю. Но возможно ещё для каких-то модов он нужен, хз. А сам файл найти нужно было, чтобы лишний раз удостовериться, так что это просто инфа для справки)

Quote:
Originally Posted by Mcc
View Post
а зачем удалять то? если можно определенный процент негодяев выгнать с сервера. я что то не уловил сути.
Во многих античитах на оружие наоборот сохранились исключения для выдачи этой самой клюшки, т.е. при её появлении, если игрок только что вышел из авто, то это в таких защитах игнорируется и за чит не считается. Убрав проверку за это станет наказывать, всё просто.
Reply

Но у меня есть вот такой код в 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);
			}
        }
    }
Reply

Quote:
Originally Posted by OneHitWonder
View Post
Но у меня есть вот такой код в 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);
			}
        }
    }
Я уверен, что есть и что-то хуже.
Reply

Буду искать, смотреть. А с этим как? Не слишком страшно для OnPlayerUpdate?
Reply

Quote:
Originally Posted by OneHitWonder
View Post
Буду искать, смотреть. А с этим как? Не слишком страшно для OnPlayerUpdate?
Не знаю, но можно и улучшить.
Reply

Скинь ради интереса функцию IsAFlyingVeh(GetPlayerVehicleID(playerid))
Reply

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;
}
Reply

Quote:
Originally Posted by ZiGGi
View Post
Не знаю, но можно и улучшить.
Каким образом, не подскажешь? Это всё на что меня хватило
Reply

Quote:
Originally Posted by OneHitWonder
View Post
Каким образом, не подскажешь? Это всё на что меня хватило
Не API переписывать стандартный надо, а алгоритмы улучшать.
Для начала можно попробовать переделать проверку на тип т/с, заведя массив для всех моделей авто и указав тип в нужных ячейках для каждой модели. Далее можно будет просто обращаться к нужному индексу в массиве (а именно иду модели) и сразу получать тип (в т.ч. и узнавать, лодка это или что-то иное). Прирост скорости, возможно, будет невысоким, но попробовать стоит, если это так уж важно.

Также "GetPlayerVehicleID(playerid)" можно узнавать единожды, записав предварительно её возвращаемое значение в переменную
Reply

Quote:
Originally Posted by OstGot
View Post
Не API переписывать стандартный надо, а алгоритмы улучшать.
Для начала можно попробовать переделать проверку на тип т/с, заведя массив для всех моделей авто и указав тип в нужных ячейках для каждой модели. Далее можно будет просто обращаться к нужному индексу в массиве (а именно иду модели) и сразу получать тип (в т.ч. и узнавать, лодка это или что-то иное). Прирост скорости, возможно, будет невысоким, но попробовать стоит, если это так уж важно.

Также "GetPlayerVehicleID(playerid)" можно узнавать единожды, записав предварительно её возвращаемое значение в переменную
Но лучше не изобретать велосипед, а использовать готовые решения. У меня есть очень простая и небольшая библиотека: https://github.com/Open-GTO/zvehinfo
Ещё GetVehicleModel можно вызвать единожды.

А если серьёзно, то этот код вообще можно удалить, он всё-равно никого никогда не кикнет.
Reply

Quote:
Originally Posted by ZiGGi
View Post
Но лучше не изобретать велосипед, а использовать готовые решения. У меня есть очень простая и небольшая библиотека: https://github.com/Open-GTO/zvehinfo
Ещё GetVehicleModel можно вызвать единожды.

А если серьёзно, то этот код вообще можно удалить, он всё-равно никого никогда не кикнет.
Как это? Еще как кикает. При телепорте отлавливает как нечего делать.
За библиотеку спасибо, воспользуюсь.
Reply

Quote:
Originally Posted by OneHitWonder
View Post
Как это? Еще как кикает. При телепорте отлавливает как нечего делать.
За библиотеку спасибо, воспользуюсь.
Значит что-то другое кикает, потому что GetPlayerPos и IsPlayerInRangeOfPoint используют одни и те же данные о положении игрока.
Reply

Quote:
Originally Posted by ZiGGi
View Post
Значит что-то другое кикает, потому что GetPlayerPos и IsPlayerInRangeOfPoint используют одни и те же данные о положении игрока.
Кстати да, сразу тоже заметил, что сверяется текущая позиция игрока с текущей позицией игрока, но что-то списал всё на сонную голову)
А насчёт велосипедов - я делал свою функцию узнавания типа по такому принципу ещё пару лет назад
Reply

Кстати да, только сейчас это понял) Использовал еще сегодня пвары и переделал на переменные, а это совсем не учел, доделал)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)