Возник вопрос умеет ли пк вызывать функи из приложения и наоборот как фс.
То у меня появилось подозрение на кривую многопоточность фса.
Тоесть когда выполняетса фс.execute если выполнить фс.callfunction из другова потока чето походу слетает порой
У меня скрипт никаких расчетов почти не делает тока реализует логику, скорость пох. Просто последнее время убивает нестабильность и глючность фс 1.1
вощем перехожу на пакс. Вроде все вкусно но пока невтыкаю как скажем закрыть текущий модуль и загрузить и запустить новый.
Добавлено через 23 часа 55 минут
Что неверно?)
i:integer;
procedure(a,b:integer,s:string);
......
i:=compiler.gethandle(0,`onxxx`,true);
p:=prog.getaddress(`module`,i);
p(3, id, `бафни`);
________________ в скрипте
procedure onxxx(ci:integer; oid:integer: s:string);
begin
if s='бафни' then begin
settarget(id);
useskill(skill_emp,false,false,true,false);
end;
end
итог - бафает потом выдает эксепшн. Фс норм. Что у них не fastcall чтоли или я мудаг?
__________________
читернуть бы ништяг
Последний раз редактировалось mira, 24.06.2011 в 11:20.
Причина: Добавлено сообщение
Добавлено через 6 часов 46 минут
и не работает на скрипте бота. работает тока в программе test.exe =))
неужели у них какието особенности постоения скрипта
вон тут конкатенация порадовала s:='vasia'+' '+'hello'
ожидаю vasia hello а получаю vasiahello
__________________
читернуть бы ништяг
Последний раз редактировалось mira, 24.06.2011 в 21:14.
Причина: Добавлено сообщение
при чем скрипт как таковой, можно сохранить в бинарке, но при этом незабыть приложить к нему все используемые с скрипта hfunc, чтобы потом при загрузке бинарки получить по ним валидные pfunc
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 24.06.2011 в 21:28.
Причина: Добавлено сообщение
ресет разве не трет все регистрелангвиджи и регистерхеадеры ?
delphi Код:
fPaxCompiler:=TPaxCompiler.Create(nil);
fPaxPascalLanguage:=TPaxPascalLanguage.Create(nil);
fPaxCompiler.Reset;
fPaxCompiler.RegisterLanguage(fPaxPascalLanguage); //рега языка после ресета
fPaxCompiler.RegisterHeader(0, 'procedure WriteStr(s : string);', @PaxWriteStr); //рега ф-й после реги языка.
fPaxCompiler.AddModule('mainmodule',fPaxPascalLanguage.LanguageName); //код
fPaxCompiler.AddCodeFromFile('mainmodule', filname);
result:=fPaxCompiler.Compile(PaxProgram1);
scriptloaded:=result;
ну и paxProgram.Run; гдето.
кстати, учитывай еще такой интересный факт. что после компиляции тебе нужно вызвать run если ты планируешь юзать ф.и. из пакса. т.е. компильяция - запуск (даже если тело программы пустое) и только потом вызов всяких там "onxxx"
в противном случае будут сюрпризы )
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 24.06.2011 в 22:09.