Времени суток!
Могу ли использовать код написанный на C или C++ в Кибор?
Я думал о Dll, но не до конца уверен что это сработает.
И еще вопрос, если это будет Dll, смогу ли я объявлять новые значения переменным находящимся внутри dll, если да, то как?
Заранее спасибо!
1. petyanka - 09 Декабря, 2023 - 15:16:00 - перейти к сообщению
2. Zireael - 09 Декабря, 2023 - 15:44:25 - перейти к сообщению
Цитата:
Могу ли использовать код написанный на C или C++ в Кибор?
Нет. Можно переписать используя синтаксис кибор. Но, не всё можно сделать и не всегда удобно.
Цитата:
Я думал о Dll, но не до конца уверен что это сработает.
В длл можно любой код выполнить.
Цитата:
если это будет Dll, смогу ли я объявлять новые значения переменным находящимся внутри dll, если да, то как?
Код длл C++:
CODE:
#include "pch.h"
int X = 0;
extern "C" __declspec(dllexport)void SetValue(int NewValue)
{
X = NewValue;
}
extern "C" __declspec(dllexport)int GetValue()
{
return X;
}
int X = 0;
extern "C" __declspec(dllexport)void SetValue(int NewValue)
{
X = NewValue;
}
extern "C" __declspec(dllexport)int GetValue()
{
return X;
}
Код кибор:
CODE:
external(VOID, "SetValue", "SetValue", "MyDllKib.dll");
external(INT, "GetValue", "GetValue", "yDllKib.dll");
SetValue(5);
messagebox(GetValue());
SetValue(99);
messagebox(GetValue());
external(INT, "GetValue", "GetValue", "yDllKib.dll");
SetValue(5);
messagebox(GetValue());
SetValue(99);
messagebox(GetValue());
3. petyanka - 09 Декабря, 2023 - 16:05:30 - перейти к сообщению
Zireael пишет:
Цитата:
Могу ли использовать код написанный на C или C++ в Кибор?
Нет. Можно переписать используя синтаксис кибор. Но, не всё можно сделать и не всегда удобно.
Цитата:
Я думал о Dll, но не до конца уверен что это сработает.
В длл можно любой код выполнить.
Цитата:
если это будет Dll, смогу ли я объявлять новые значения переменным находящимся внутри dll, если да, то как?
Код длл C++:
CODE:
#include "pch.h"
int X = 0;
extern "C" __declspec(dllexport)void SetValue(int NewValue)
{
X = NewValue;
}
extern "C" __declspec(dllexport)int GetValue()
{
return X;
}
int X = 0;
extern "C" __declspec(dllexport)void SetValue(int NewValue)
{
X = NewValue;
}
extern "C" __declspec(dllexport)int GetValue()
{
return X;
}
Код кибор:
CODE:
external(VOID, "SetValue", "SetValue", "MyDllKib.dll");
external(INT, "GetValue", "GetValue", "yDllKib.dll");
SetValue(5);
messagebox(GetValue());
SetValue(99);
messagebox(GetValue());
external(INT, "GetValue", "GetValue", "yDllKib.dll");
SetValue(5);
messagebox(GetValue());
SetValue(99);
messagebox(GetValue());
Спасибо! Буду пробовать.
4. petyanka - 11 Декабря, 2023 - 15:45:12 - перейти к сообщению
Я чего-то явно не понимаю, написал DLL, Вот часть кода:
Но как только я пытаюсь присвоить новые значения для s.Text_pars, кибор просто закрывается, без каких либо ошибок. Что же я делаю не так?
С++ (Отобразить)
Но как только я пытаюсь присвоить новые значения для s.Text_pars, кибор просто закрывается, без каких либо ошибок. Что же я делаю не так?
Код кибора (Отобразить)
5. Zireael - 11 Декабря, 2023 - 17:32:02 - перейти к сообщению
Лучше напишите что вы хотите сделать.
Пример передачи в функцию массива int и строки:
Пример передачи в функцию массива int и строки:
C++ (Отобразить)
Kibor (Отобразить)
6. petyanka - 12 Декабря, 2023 - 02:14:20 - перейти к сообщению
Zireael пишет:
Лучше напишите что вы хотите сделать.
Если в кратце, то в игре есть:
x1,y1 - координаты персонажа
x2,y2 - координаты точки куда мне нужно бежать
azimuth - азимут куда я смотрю
Что я хочу сделать?
Написать Dll, которая будет универсальной для любой игры, где есть эти значения
Как я это реализовал? Вот код
C++ (Отобразить)
Если в кратце, Dll принимает текст в string от кибора, дальше разбирает этот текст на переменные в формате x1,y1,x2,y2,azimuth . Потом вызываются функции, которые считают угол поворота камеры в игре.
На выходе, кибор получает x1,y1,x2,y2,azimuth,angle_deg (x1,y1,x2,y2 - не обязательно получать в финальной версии, это скорее для проверки что длл исправно работает)
7. Zireael - 12 Декабря, 2023 - 03:21:35 - перейти к сообщению
А зачем передавать параметры строкой и потом разбирать её?
Так не проще?:
Так не проще?:
C++ (Отобразить)
Kibor (Отобразить)
8. petyanka - 12 Декабря, 2023 - 04:40:44 - перейти к сообщению
Zireael пишет:
А зачем передавать параметры строкой и потом разбирать её?
Так не проще?
Так не проще?
Значительно проще, спасибо за помощь, потратил 2 дня чтобы тот код написать, а в итоге вы в 30 строк уместили мои 150, еще и глаза открыли, как все это может работать.
Огромное спасибо!
9. resident - 12 Декабря, 2023 - 07:23:23 - перейти к сообщению
А зачем тут вообще С++, кибор считать разучился?
CODE:
if(535-yy[0]!=0) koef=(xx[0]-640)/(yy[0]-535)*-1; // коэф прямой
else koef=999;
angle=asin(koef/sqrt(1+pow(koef,2))); // угол
if(535-yy[0]!=0) koef=(xx[0]-640)/(yy[0]-535)*-1; // коэф прямой
else koef=999;
angle=asin(koef/sqrt(1+pow(koef,2))); // угол
10. sedoi - 12 Декабря, 2023 - 13:17:33 - перейти к сообщению
Zireael пишет:
А зачем передавать параметры строкой и потом разбирать её?
Так не проще?:
Так не проще?:
C++ (Отобразить)
Kibor (Отобразить)
Добрый вечер, а как её использовать? создал текстовый документ вставил этот код в него, назвал MyDllKib и сменил расширение на dll закинул рядом с кибором в папку ,в киборе ввёл вызов функций те что ниже описаны. пишет что MyDllKib.dll не подключен, что я не так сделал?