Что нового

Удалённое изменение кода. Подмена функций

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
Имеется программа (гейм-бот, хотя это не принципиально), общающаяся с собственным сервером. Пока общение заключается в аутентификации пользователей, и только. Но часто приходится вносить не слишком значительные изменения в код, чтобы восстановить утраченную в результате обновлений игры, или по другим причинам работоспособность. Выкладывать новый билд каждый раз после внесённых изменений намучаешься, да и для пользователей это не очень удобно. В связи с этим возникла идея по внесению изменений в работу программы удалённо. Написать функцию которая по требованию сервера изменит значение любой переменной(или нескольких), или создаст глобальную переменную, не составило труда. Но как быть с самим кодом? Допустим у меня имеется код:
Код:
Func _aaa()
    MsgBox(0,'','Привет')
EndFunc

Который нужно заменить на:
Код:
Func _aaa()
    $a = InputBox('','Введите 2+5')
    Return $a
EndFunc

Понятно, что полученный от сервера текст можно вписать используя Execute(), но нужно сделать чтобы функции при этом не конфликтовали... Сложность в том, что заранее не угадаешь, что и где придётся менять. В целом весь код состоит из отдельных функций, и суть задачи сводится к тому чтобы подменять функции, но функций оч много, и вписывать в каждую
Код:
If <сервер прислал другой код этой функции> Then <код присланный сервером> Else <имеющийся код> EndIf
не самый подходящий вариант.
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Вижу такое решение:
С сервера отсылать весь скрипт, а не отдельные функции.
Клиент видит обновление, записывает значения переменных(если нужно что-то сохранять), например, в ini-файл.
Останавливает скрипт, делает замену старого скрипта новым и запускает новый с присвоением значений переменных из файла(опять таки если это нужно).
---------
Еще как вариант - хранить каждую функцию в отдельном файле и добавлять их в основной скрипт через #include-once, но это на случай если не хочется отсылать один большой скрипт.
И все равно придется делать рестарт основного скрипта.
 
Автор
N

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
Хранение функций в файлах, равно как и пересылка всего скрипта не допустима, потому как програмуля продаётся, и палить исходники значит лишиться дохода ))
 
Верх