Я долго ломал голову о том, как нормально запускать скрипты стелса по хоткеям и нашел боле менее приемлемый костыль:
использование "evSpeech" евента и биндинга в клиенте кнопок на Whisper '....'
как работает:
запускается такой скрипт в главном окне стелса:
Code: Select all
Program Macros;
const
CarveCorpses = true;
var // GLOBAL VARS
ctimeq: TDatetime;
checkheal: integer;
Corpses : Array of Cardinal;
{$Include 'common.inc'}
{$Include 'heal.inc'}
{$Include 'loot.inc'}
procedure dispatcher(text,SenderName : String; SenderID : Cardinal);
begin
if SenderID = Self then
begin
AddToSystemJournal('Event: ' + text);
case text of
'h' : Heal;
'l' : SmartLoot;
end;
end;
end;
begin
SetEventProc(evSpeech,'dispatcher');
while not dead and connected do
wait(100);
end.
Далее, если уже в самом клиенте (даже без DLL, а с разором) сказать:
Code: Select all
; h
Это решение весьма неудобно, потому что:
1. речь чара выводит из хайда
2. не очень быстро откликается
3. Это костыль
Что хочется:
Новый евент ("evExecCommand : [Command : String]" например), который будет дергаться, если клиент набрал команду вида ",exec heal", чтобы нивелировать все перечисленные недостатки.
Зачем хочется:
1. в запуске скриптов по хоткеям из DLL нельзя хранить состояние переменных между запусками. SetGloba/GetGlobal не устраивают из-за того, что можно хранить только строки, да и все скрипты переписывать нужно.
2. Ну все-таки хочется играть с разором для простых вещей и того + суперсложные скрипты стелса, вызываемые по хоткею.
Спасибо!