Появилась идея добавить плагин в кликер, немного почитав справку ( на много количество информации не тянет ) решил я написать тестовую .dll на c#, которая будет принимать в себя два числа а выводить их сумму ( тестовая ребят, просто проверить как работает, я знаю, что кликер и так считать умеет ). Постарался соблюсти все рекомендации из справки и на выходе содержимое файла представляло из себя:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dll
{
public class Class1
{
public static int execute(int[] x, int y)
{
return x[0] + x[1];
}
}
}
Сохраняю это все как Dll.dll, перемещаю в папку с кликером и там же создаю следующий сценарий полностью скопированный из справки:
call("Dll.dll", 5, 4)
logwrite($_return1)
HALT
На выходе получаю ошибку при интерпретации строки call("Dll.dll", 5, 4) ...
Да я в курсе, что эта функция бородатая и старая, что ей никто и похоже никогда не пользовался, судя по информации с форума, но у меня появилось одна идея, для решения которой очень бы пригодился именно плагин:
Допустим при помощи CheatEngine ( далее CE) удалось найти в игре адрес интересующего нас параметра ( допустим это x и y координаты моба или предмета в мире игры, как вы понимаете на экране такой информации просто не будет, чтобы считывать ее как картинку ). Но вот засада, этот адрес мало того что меняется при каждом запуске игры, еще и невозможно при помощи смещений привязаться к статичному адресу потому что адрес меняется после смерти моба. Тут остается один выход - Сканить память при помощи маски.
На просторах интернета я нарыл функцию SigScan под c# и немного ее доработал.
Если коротко то эта функция позволяет быстро найти интересующий нас адрес в памяти по заранее приготовленной маске, которая состоит из 2-х частей, первая часть это массив байт, который будет находиться в памяти процесса, вторая - маска для этого массива.
Пример массива { 0x06, 0x00 , 0x03, 0x00, 0x01 }, для него также в функцию подается маска примерно такого вида "xx?xx", где x - байты, которые будут учитываться, а ?, которые нет, на выходе получаем адрес в памяти ...