Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Динамическая система MapIcon

#pragma

Изучающий
Пользователь
Регистрация
4 Дек 2017
Сообщения
537
Лучшие ответы
20
Репутация
129
Доброго времени суток форум pawno-info.
Решил сделать такую простенькую систему динамический иконок себе в мод, в последствие решил выложить сюда.
Знаю что система очень проста, но возможно кому то и пригодиться, особенно тем кто хочет вывести иконки у себя на сайте в UCP.

Требуются плагины MySQL r40 и выше. sscanf2 и streamer.




Для начала давайте выполним запрос в Базе данных phpMyAdmin


PHP:
CREATE TABLE IF NOT EXISTS `icon` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `PosX` float NOT NULL,
  `PosY` float NOT NULL,
  `PosZ` float NOT NULL,
  `IconID` int(11) NOT NULL,
  `Distance` int(11) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=11 ;
В начало скрипта добавим переменные и енуменатор.

PHP:
enum e:_ICON_INFO
{
	iID,
	Float:iPosX,
	Float:iPosY,
	Float:iPosZ,
	iIconID,
    iDistance
};
#define MAX_ICON 20 // Максимальное кол-во иконок на сервере.
new
	IconInfo[MAX_ICON][e_ICON_INFO],
	TOTALICON 
;
Добавим загрузку в калбек OnGameModeInit

PHP:
mysql_tquery(/*переменная коннекта к MySQL*/, "SELECT * FROM `icon` WHERE 1", "LoadIcon", "");
Теперь давайте где нибудь в конце скрипта добавим калбек LoadIcon

PHP:
forward LoadIcon();
public LoadIcon()
{
	new
		rows,
		time = GetTickCount();

	cache_get_row_count(rows);

	if(!rows) print("Иконки не были загружены!");
	else
	{
		for(new index = 1; index < rows + 1; index++)
		{
			cache_get_value_name_int(index-1, "ID", IconInfo[index][iID]);
			cache_get_value_name_float(index-1, "PosX", IconInfo[index][iPosX]);
			cache_get_value_name_float(index-1, "PosY", IconInfo[index][iPosY]);
			cache_get_value_name_float(index-1, "PosZ", IconInfo[index][iPosZ]);
			cache_get_value_name_int(index-1, "IconID", IconInfo[index][iIconID]);
            cache_get_value_name_int(index-1, "Distance", IconInfo[index][iDistance]);

            CreateDynamicMapIcon(IconInfo[index][iPosX], IconInfo[index][iPosY], IconInfo[index][iPosZ], IconInfo[index][iIconID], 0, -1, -1, -1, IconInfo[index][iDistance]); //создаём иконку на карте
			TOTALICON++;
		}
	}
	printf("[LOAD]: Иконки успешно загружены - %d шт %d m.s", TOTALICON, GetTickCount() - time);
	return true;
}
Теперь добавим команду по добавлению иконок на сервер:

PHP:
CMD:addicon(playerid, params[])
{
        /* Здесь проверка на администратора */
	if(sscanf(inputtext, "dd", params[0], params[1])) return SendClientMessage(playerid, -1, "Используйте: /addicon [Номер иконки] [Дистанция прорисовки]");
	else if(!(5 <= params[0] <= 63)) return SendClientMessage(playerid, -1, "ID иконок не может быть меньше 5 и больше чем 63");
	new
	    string[128];
	TOTALICON++;
	new Float:PosX, Float:PosY, Float:PosZ;
	GetPlayerPos(playerid, PosX, PosY, PosZ); // Узнаём положения игрока
	CreateDynamicMapIcon(PosX, PosY, PosZ, params[0], 0, -1, -1, -1, params[1]); //Создаём иконку
	format(string, sizeof(string), "INSERT INTO `icon` (PosX, PosY, PosZ, IconID, Distance) VALUES ('%f', '%f', '%f', '%d', '%d')", PosX, PosY, PosZ, params[0], params[1]);
	mysql_tquery(/*переменная коннекта к MySQL*/, string, "", ""); // Создаём новую запись в таблице icon
	format(string, sizeof(string), "Иконка номер: %d создана, айди иконки: %d", TOTALICON, params[0]); 
	SendClientMessage(playerid, -1, string);// Выводим сообщение в чат о успешном создании.
	return true;
}

Вот такая вот простая система)) спасибо за внимания.
Автор: #pragma
 
Последнее редактирование:
Сверху Снизу