Добавление актёров (Ботов) на сервер. - Форум Cheat-Master.ru
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
Добавление актёров (Ботов) на сервер.
A7X Дата: Понедельник, 01.06.2015, 20:36 | Сообщение # 1
Боец
Сообщений: 210
Статус: Offline
Привет.
Как все уже знают в версии samp 0.3.7 добавилась возможность создания статических ботов. В данном уроке я покажу вам как сделать создание / загрузку используя MySQL.
Данный урок рекомендован более-менее опытным юзерам pawno которые хоть немного понимают в MySQL.


Итак:
Добавим к инклудам:
Код
#include  <a_actor>


Далее добавим к forward'am
Код
forward  LoadActors();


Далее добавим enum с информацией о боте
Код
enum AcInfo
{
            ActorID, // Номер бота
            ActorName[32], // Имя бота
            ActorModel, // ID скина бота
            Float:ActorX, // Координата положения X
            Float:ActorY, // Координата положения Y
            Float:ActorZ, // Координата положения Z
            Float:ActorR // Координата положения R (rotate)
};
new ActorInfo[200][AcInfo], TOTALACTOR = 0;
new Text3D:LABELACTOR[200];


Далее добавим в OnGameModeInit запрос в базу данных:
P.S Значение DATABASE меняйте на своё.

Код
mysql_function_query(DATABASE,"SELECT * FROM `actors`", true, "LoadActors", "");


Далее добавим функцию загрузки и создания наших ботов:
P.S Значение DATABASE меняйте на своё.

Код
public LoadActors()
{
               new time = GetTickCount();
               new idx;
               new r, f;
               cache_get_data(r, f);
               for(idx = 1; idx <= r; idx++)
               {
                   ActorInfo[idx][ActorID] = cache_get_row_int(idx-1,0, DATABASE);
                   cache_get_row(idx-1, 1, ActorInfo[idx][ActorName], DATABASE, 32);
                   ActorInfo[idx][ActorModel] = cache_get_row_int(idx-1,2,DATABASE);
                   ActorInfo[idx][ActorX] = cache_get_row_float(idx-1,3, DATABASE);
                   ActorInfo[idx][ActorY] = cache_get_row_float(idx-1,4, DATABASE);
                   ActorInfo[idx][ActorZ] = cache_get_row_float(idx-1,5, DATABASE);
                   ActorInfo[idx][ActorR] = cache_get_row_float(idx-1,6, DATABASE);
                   CreateActor(ActorInfo[idx][ActorModel], ActorInfo[idx][ActorX],ActorInfo[idx][ActorY], ActorInfo[idx][ActorZ], ActorInfo[idx][ActorR]);
               new string[90];
                   format(string, 90, "%s", ActorInfo[idx][ActorName]);
             LABELACTOR[idx] = Create3DTextLabel(string, COLOR_WHITE, ActorInfo[idx][ActorX], ActorInfo[idx][ActorY], ActorInfo[idx][ActorZ] + 1.1, 7.0, 0, 1);
                TOTALACTOR++;
            }
            printf("[загружено актёров]: <%i>. Потрачено: <%i мс>.", TOTALACTOR, GetTickCount()-time);
}


Вот собственно и всё. Теперь нам осталось создать базу данных:
Код
CREATE TABLE IF NOT EXISTS `actors` (
             `ActorID` int(11) NOT NULL AUTO_INCREMENT,
             `ActorName` varchar(32) CHARACTER SET cp1251 COLLATE cp1251_bin NOT NULL,
             `ActorModel` int(11) NOT NULL,
             `ActorX` float NOT NULL,
             `ActorY` float NOT NULL,
             `ActorZ` float NOT NULL,
             `ActorR` float NOT NULL,
             PRIMARY KEY (`ActorID`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3


UPD: 05.10.2015
Анимка для бота (дам очень грубый пример, доработка / оптимизация на ваше усмотрение):




Оптимизация на ваше усмотрение.
Инклуд a_actor можете найти тут: http://cheat-master.ru/forum/125
Спасибо за внимание.


2000 дней на сайте.
Читер СМ с 21.01.2015 - 14.09.2016


Сообщение отредактировал A7X - Понедельник, 05.10.2015, 22:31
[CM]Kingster Дата: Вторник, 02.06.2015, 07:17 | Сообщение # 2
Боец
Сообщений: 245
Статус: Offline
Молодец, хороший урок.

Пользователь Cheat - Master уже 400 дней.

Я в Контакте - vk.com/buddy_fly
Tosoti Дата: Воскресенье, 07.06.2015, 12:13 | Сообщение # 3
Боец
Сообщений: 150
Статус: Offline
Я немного нупок, помоги, где устанавливать координаты появления ботов и их анимки, или это не в этом коде? Если нет, подскажи ка сделать пожалуйста.
A7X Дата: Воскресенье, 07.06.2015, 16:20 | Сообщение # 4
Боец
Сообщений: 210
Статус: Offline
Цитата Tosoti ()
Я немного нупок, помоги, где устанавливать координаты появления ботов и их анимки, или это не в этом коде? Если нет, подскажи ка сделать пожалуйста.

Координаты прописываются в базе данных, заполняй поля ActorX,ActorY,ActorZ,ActorR своими координатами, анимки с помощью ApplyActorAnimation


2000 дней на сайте.
Читер СМ с 21.01.2015 - 14.09.2016
Vaners123 Дата: Суббота, 27.06.2015, 23:02 | Сообщение # 5
Новичок
Сообщений: 22
Статус: Offline
Значение DATABASE меняйте на своё.

Что это означает помоги пожалуйста на что его поменять?
[Cheat]Shoter Дата: Вторник, 30.06.2015, 03:11 | Сообщение # 6
Новичок
Сообщений: 27
Статус: Offline
Молодец, +сик твой

Ivan
[CM]Kingster Дата: Четверг, 02.07.2015, 20:49 | Сообщение # 7
Боец
Сообщений: 245
Статус: Offline
Цитата Vaners123 ()
Значение DATABASE меняйте на своё.

Что это означает помоги пожалуйста на что его поменять?

Найди у себя в моде это: mysql_connect и до этого стоит переменная = mysql_connect, вот копируй переменную.


Пользователь Cheat - Master уже 400 дней.

Я в Контакте - vk.com/buddy_fly
Bunker[CM] Дата: Четверг, 02.07.2015, 22:54 | Сообщение # 8
Боец
Сообщений: 64
Статус: Offline
Отличный урок! Молодец!
[CM]Ghostly Дата: Воскресенье, 05.07.2015, 09:41 | Сообщение # 9
Любитель
Сообщений: 46
Статус: Offline
Спасибо за урок.
Поставил пару ботов на сервер.
Плюс
Jamiraque[t0wer] Дата: Воскресенье, 12.07.2015, 23:06 | Сообщение # 10
Советник
Сообщений: 603
Статус: Offline
Особо ничего сложного в работе с ними нету
anugley Дата: Вторник, 14.07.2015, 15:28 | Сообщение # 11
CHEATER CM
Сообщений: 221
Статус: Offline
Хороший урок, давно искал как поставить их. Всегда ставил их, они как сардельки, то в небе, то ещё где либо... Лови +сик.
[CM]ElitaMen Дата: Среда, 15.07.2015, 22:57 | Сообщение # 12
Любитель
Сообщений: 42
Статус: Offline
Урок то что надо

VK- https://vk.com/id290124982
Vaners123 Дата: Суббота, 18.07.2015, 23:32 | Сообщение # 13
Новичок
Сообщений: 22
Статус: Offline
помогите вот ошибки
Код
(22518) : error 017: undefined symbol "cache_get_data"
(22521) : error 017: undefined symbol "cache_get_row_int"
(22522) : error 017: undefined symbol "cache_get_row"
(22523) : error 017: undefined symbol "cache_get_row_int"
(22524) : error 017: undefined symbol "cache_get_row_float"
(22525) : error 017: undefined symbol "cache_get_row_float"
(22526) : error 017: undefined symbol "cache_get_row_float"
(22527) : error 017: undefined symbol "cache_get_row_float"
(22517) : warning 203: symbol is never used: "f"
(22539) : error 017: undefined symbol "mysql_function_query"
(23092) : warning 217: loose indentation
(23093) : warning 217: loose indentation
(23092) : warning 204: symbol is assigned a value that is never used: "myconnect"


Вот код

Цитата
publics: LoadActors()
{
new time = GetTickCount();
new idx;
new r, f;
cache_get_data(r, f);
for(idx = 1; idx <= r; idx++)
{
ActorInfo[idx][ActorID] = cache_get_row_int(idx-1,0, myconnect);
cache_get_row(idx-1, 1, ActorInfo[idx][ActorName], myconnect, 32);
ActorInfo[idx][ActorModel] = cache_get_row_int(idx-1,2,myconnect);
ActorInfo[idx][ActorX] = cache_get_row_float(idx-1,3, myconnect);
ActorInfo[idx][ActorY] = cache_get_row_float(idx-1,4, myconnect);
ActorInfo[idx][ActorZ] = cache_get_row_float(idx-1,5, myconnect);
ActorInfo[idx][ActorR] = cache_get_row_float(idx-1,6, myconnect);
CreateActor(ActorInfo[idx][ActorModel], ActorInfo[idx][ActorX],ActorInfo[idx][ActorY], ActorInfo[idx][ActorZ], ActorInfo[idx][ActorR]);
new string[90];
format(string, 90, "%s", ActorInfo[idx][ActorName]);
LABELACTOR[idx] = Create3DTextLabel(string, COLOR_WHITE, ActorInfo[idx][ActorX], ActorInfo[idx][ActorY], ActorInfo[idx][ActorZ] + 1.1, 7.0, 0, 1);
TOTALACTOR++;
}
printf("[загружено актёров]: <%i>. Потрачено: <%i мс>.", TOTALACTOR, GetTickCount()-time);
}

это с OnGameModeInit

mysql_function_query(myconnect,"SELECT * FROM `actors`", true, "LoadActors", "");



вот ещё

Цитата
myconnect = mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);

хотя по стандарту у меня было

mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);

затем я создал new myconnec;
и добавил ее туда как мне и подсказали

что делать помогите?


Сообщение отредактировал Vaners123 - Суббота, 18.07.2015, 23:34
Good[CM]Stark Дата: Воскресенье, 19.07.2015, 00:53 | Сообщение # 14
Любитель
Сообщений: 44
Статус: Offline
Вот хочу заняться уроками pawno ,можешь подсказать что такое инклуды? и запиши видео так удобнее многим, а так +
A7X Дата: Воскресенье, 19.07.2015, 07:22 | Сообщение # 15
Боец
Сообщений: 210
Статус: Offline
Vaners123, Версия MySQL Какая?

2000 дней на сайте.
Читер СМ с 21.01.2015 - 14.09.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: