Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (3): [1] 2 3 »   

> Описание: использоване кода на C/C++ в Кибор
petyanka
Отправлено: 09 Декабря, 2023 - 23:16:00
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2014  
Репутация: 1




Времени суток!
Могу ли использовать код написанный на C или C++ в Кибор?
Я думал о Dll, но не до конца уверен что это сработает.
И еще вопрос, если это будет Dll, смогу ли я объявлять новые значения переменным находящимся внутри dll, если да, то как?
Заранее спасибо!

(Отредактировано автором: 09 Декабря, 2023 - 23:16:17)

 
 Top
Zireael
Отправлено: 09 Декабря, 2023 - 23:44:25
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4398
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
Могу ли использовать код написанный на 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;
}

Код кибор:
CODE:
external(VOID, "SetValue", "SetValue", "MyDllKib.dll");
external(INT, "GetValue", "GetValue", "yDllKib.dll");

SetValue(5);
messagebox(GetValue());
SetValue(99);
messagebox(GetValue());
 
 Top
petyanka
Отправлено: 10 Декабря, 2023 - 00:05:30
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2014  
Репутация: 1




 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;
}

Код кибор:
CODE:
external(VOID, "SetValue", "SetValue", "MyDllKib.dll");
external(INT, "GetValue", "GetValue", "yDllKib.dll");

SetValue(5);
messagebox(GetValue());
SetValue(99);
messagebox(GetValue());


Спасибо! Буду пробовать. Радость
 
 Top
petyanka
Отправлено: 11 Декабря, 2023 - 23:45:12
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2014  
Репутация: 1




Я чего-то явно не понимаю, написал DLL, Вот часть кода:

С++ (Отобразить)


Но как только я пытаюсь присвоить новые значения для s.Text_pars, кибор просто закрывается, без каких либо ошибок. Что же я делаю не так?

Код кибора (Отобразить)

(Отредактировано автором: 11 Декабря, 2023 - 23:46:08)

 
 Top
Zireael
Отправлено: 12 Декабря, 2023 - 01:32:02
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4398
Дата рег-ции: Нояб. 2017  
Репутация: 580




Лучше напишите что вы хотите сделать.

Пример передачи в функцию массива int и строки:

C++ (Отобразить)

Kibor (Отобразить)

(Отредактировано автором: 12 Декабря, 2023 - 01:33:53)

 
 Top
petyanka
Отправлено: 12 Декабря, 2023 - 10:14:20
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2014  
Репутация: 1




 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 - не обязательно получать в финальной версии, это скорее для проверки что длл исправно работает)
 
 Top
Zireael
Отправлено: 12 Декабря, 2023 - 11:21:35
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4398
Дата рег-ции: Нояб. 2017  
Репутация: 580




А зачем передавать параметры строкой и потом разбирать её?
Так не проще?:
C++ (Отобразить)

Kibor (Отобразить)
 
 Top
petyanka
Отправлено: 12 Декабря, 2023 - 12:40:44
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2014  
Репутация: 1




 Zireael пишет:
А зачем передавать параметры строкой и потом разбирать её?
Так не проще?


Значительно проще, спасибо за помощь, потратил 2 дня чтобы тот код написать, а в итоге вы в 30 строк уместили мои 150, еще и глаза открыли, как все это может работать.
Огромное спасибо!
 
 Top
resident
Отправлено: 12 Декабря, 2023 - 15:23:23
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 72
Дата рег-ции: Янв. 2023  
Репутация: 0




А зачем тут вообще С++, кибор считать разучился?
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))); // угол
 
 Top
sedoi
Отправлено: 12 Декабря, 2023 - 21:17:33
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 46
Дата рег-ции: Апр. 2016  
Репутация: 1




 Zireael пишет:
А зачем передавать параметры строкой и потом разбирать её?
Так не проще?:
C++ (Отобразить)

Kibor (Отобразить)

Добрый вечер, а как её использовать? создал текстовый документ вставил этот код в него, назвал MyDllKib и сменил расширение на dll закинул рядом с кибором в папку ,в киборе ввёл вызов функций те что ниже описаны. пишет что MyDllKib.dll не подключен, что я не так сделал?
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by