Скрипт, удаляющий скрин(ы)

Статус
В этой теме нельзя размещать новые ответы.

Lord

Новичок
Автор темы
236
42
Заскринил например 001 и 002, они оба идентичны. Возможно ли такое, чтоб скрипт удалял скрин в самой игре? Хотя бы последний скрин, но в идеале хотелось бы и /удалить скриншот NNN.

Если есть такой скрипт, то поделитесь. А если нет, то есть ли у кого способность написать подобное? Заранее благодарю.
 

NarutoUA

NarutoUA
BH Team
692
1,538
Если и возможно такое сделать, то скрины у тебя будут делаться по 5 минут
 

SR_team

like pancake
BH Team
4,720
6,368
Если и возможно такое сделать, то скрины у тебя будут делаться по 5 минут
че эт по 5 минут? Можно даже ускорить создание.
Заменяем сохранение скрина на диск сохранением в памяти, потом в отдельном потоке не спеша копипастим его на диск. И при следующих скринах сравниваем новый скрин с предыдущим.

UPD: Вот так для bmp можно:
C++:
bool isEqualBmp(size_t pScreen, size_t size, size_t pScreen2, size_t size2)
{
    if (size != size2)
        return false;

    return memcmp((void*)(pScreen + 58), (void*)(pScreen2 + 58), size - 58) == 0;
}
Структуры jpeg и png я не знаю
 
Последнее редактирование:
  • Нравится
Реакции: memir и 4el0ve4ik

NarutoUA

NarutoUA
BH Team
692
1,538
че эт по 5 минут? Можно даже ускорить создание.
Заменяем сохранение скрина на диск сохранением в памяти, потом в отдельном потоке не спеша копипастим его на диск. И при следующих скринах сравниваем новый скрин с предыдущим.

UPD: Вот так для bmp можно:
C++:
bool isEqualBmp(size_t pScreen, size_t size, size_t pScreen2, size_t size2)
{
    if (size != size2)
        return false;

    return memcmp((void*)(pScreen + 58), (void*)(pScreen2 + 58), size - 58) == 0;
}
Структуры jpeg и png я не знаю
Потому что в сампе нет идеально идентичных скринов (на втором скрине всегда будет надпись о сделанном первом скрине, на первом скрине не будет никаких надписей). Если я правильно понял, и задача стоит в удалении похожего по контексту скриншота, то тогда нужен анализ предыдущих скринов/скрина, можно конечно смотреть по времени скрина, но тогда могут быть ложные срабатывания
 
  • Нравится
Реакции: ishi

SR_team

like pancake
BH Team
4,720
6,368
Потому что в сампе нет идеально идентичных скринов (на втором скрине всегда будет надпись о сделанном первом скрине, на первом скрине не будет никаких надписей). Если я правильно понял, и задача стоит в удалении похожего по контексту скриншота, то тогда нужен анализ предыдущих скринов/скрина, можно конечно смотреть по времени скрина, но тогда могут быть ложные срабатывания
Можно отрубить вывод уведомления в чат. Все равно игру на пол секунды фризит - можно понять, что скрин сделан

UPD. А еще можно взять dx девайс сампа и заскринить все кроме самповского говна
 

Apolo11

Известный
54
9
Нейросеть обучить можно. Но это, ебать, сколько времени займет))))
 

NarutoUA

NarutoUA
BH Team
692
1,538
Можно отрубить вывод уведомления в чат. Все равно игру на пол секунды фризит - можно понять, что скрин сделан

UPD. А еще можно взять dx девайс сампа и заскринить все кроме самповского говна
Энивей никогда не будет 2 одинаковых скрина, в игре еще дохуя идловых анимаций
 

qrlk

Известный
Друг
411
925
Lua:
if string.find(stroka, 'sa-mp', 1, true) or string.find(stroka, 'taken', 1, true) then
    f1 = string.find(stroka, "sa", 1)
    f2 = string.find(stroka, "g", 1)
    screennomer = string.sub(stroka, f1, f2)
    os.remove(os.getenv('USERPROFILE') .. "/Documents/GTA San Andreas User Files/SAMP/screens/"..screennomer)
end
 

Lord

Новичок
Автор темы
236
42
Lua:
if string.find(stroka, 'sa-mp', 1, true) or string.find(stroka, 'taken', 1, true) then
    f1 = string.find(stroka, "sa", 1)
    f2 = string.find(stroka, "g", 1)
    screennomer = string.sub(stroka, f1, f2)
    os.remove(os.getenv('USERPROFILE') .. "/Documents/GTA San Andreas User Files/SAMP/screens/"..screennomer)
end
Как собственно им пользоваться?
P.S. В .lua полный нуль, ничего не понимаю.
 

Lord

Новичок
Автор темы
236
42
Смотря что ты конкретно хочешь сделать.
Потому что из твоего описания нихуя не понятно.
Заскринил 001. Заскринил 002. Заскринил 003.
*Случайно заскринил два раза*
*Хочу удалить скрин 002*
/удалитьскрин 002

Как-то так.
 

qrlk

Известный
Друг
411
925
Заскринил 001. Заскринил 002. Заскринил 003.
*Случайно заскринил два раза*
*Хочу удалить скрин 002*
/удалитьскрин 002

Как-то так.
Ну я могу написать скрипт на луа, который по нажатию клавиши будет удалять последний сделанный скрин.
Но я не понимаю как можно несколько раз подряд заскринить, если игра зависает во время скрина.
 
Статус
В этой теме нельзя размещать новые ответы.