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

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

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

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

Мануал Динамическая система создания пикапов[ALL][MySql][ZCMD+Sscanf]

Статус
В этой теме нельзя размещать новые ответы.

SaNek2x2

Изучающий
Пользователь
Регистрация
2 Мар 2011
Сообщения
395
Лучшие ответы
0
Репутация
211
Доброе время суток.
Хочу поделится своей системой создания пикапов.
Писал сам...
Подобных тем не нашел... Были только FS
Ну так вот начнем:




С пункта 1 по пункт 3 в любое место кода
1.Для начала создадим переменные:

PHP:
#define TABLE_TELEPORT        	"teleports"
new bool:Creat[MAX_PLAYERS];//для команды
new Float:Xt, Float:Yt, Float:Zt, Model, VW, Intor;//позиция пикапа с мирами и интом
new Float:eXt, Float:eYt, Float:eZt ,eVW ,eIntor;//позиция телепорта
2.Создадим enum
PHP:
enum tTeleport
{
	tID,//ид в базе
	tModel,//модель
	Float:tX,//Координата пикапа
	Float:tY,//Координата пикапа
	Float:tZ,//Координата пикапа
	tVW,//ид мира пикапа
	tIntor,//ид интора пикапа
	Float:txX,//Координата телепорта
	Float:txY,//Координата телепорта
	Float:txZ,//Координата телепорта
	txVW,//ид мира телепорта
	txIntor,//ид мира телепорта
	tPickup//используется для создания пикапа
}
new TeleportInfo[MAX_TELEPORT][tTeleport];
new TOTAL_TELEPORT = 0;
#define MAX_TELEPORT        	100
3.Создадим паблик загрузки пикапов из БД:
PHP:
forward LoadTeleportCallback();
public LoadTeleportCallback()
{
    new rows, fields;//переменые для MySql
    cache_get_data(rows, fields);//результат загрузки
    if(rows > MAX_TELEPORT)return print("Количество телепортов превышает разрешимое.");//проверяем на кол-во пикапов
    if(rows > 0)
	{
		for(new t = 0; t < rows; t++)//цикл всех пикапов из БД
		{
        	TeleportInfo[t][tID] = cache_get_row_int(t, 0);
        	TeleportInfo[t][tModel] = cache_get_row_int(t, 1);
        	TeleportInfo[t][tX] = cache_get_row_float(t, 2);
        	TeleportInfo[t][tY] = cache_get_row_float(t, 3);
        	TeleportInfo[t][tZ] = cache_get_row_float(t, 4);
        	TeleportInfo[t][tVW] = cache_get_row_int(t, 5);
        	TeleportInfo[t][tIntor] = cache_get_row_int(t, 6);
        	TeleportInfo[t][txX] = cache_get_row_float(t, 7);
        	TeleportInfo[t][txY] = cache_get_row_float(t, 8);
        	TeleportInfo[t][txZ] = cache_get_row_float(t, 9);
        	TeleportInfo[t][txVW] = cache_get_row_int(t, 10);
        	TeleportInfo[t][txIntor] = cache_get_row_int(t, 11);
        	TeleportInfo[t][tPickup] = CreateDynamicPickup(TeleportInfo[t][tModel], 23, TeleportInfo[t][tX], TeleportInfo[t][tY], TeleportInfo[t][tZ], TeleportInfo[t][tVW], TeleportInfo[t][tIntor], -1, 100);//создаем пикап
                TOTAL_TELEPORT++;
		}
    }
    printf("Загружено пикапов: %d", TOTAL_TELEPORT);
	return true;
}
4.в OnGameModeInit добавим:
PHP:
mysql_function_query(dbHandle, "SELECT * FROM "TABLE_TELEPORT"", true, "LoadTeleportCallback", "", "");//запрос в БД
5.В OnPlayerPickUpDynamicPickup добавим
PHP:
for(new t=0;t<TOTAL_TELEPORT;t++)//цикл
	{
		if(pickupid == TeleportInfo[t][tPickup])//проверка на пикап который встали
		{
		    SetPlayerPos(playerid,TeleportInfo[t][txX],TeleportInfo[t][txY],TeleportInfo[t][txZ]);//тп на координаты
		    SetPlayerInterior(playerid, TeleportInfo[t][txIntor]);//устанавливаем инт
		    SetPlayerVirtualWorld(playerid, TeleportInfo[t][txIntor]);//устанавливаем мир
		}
	}
6.Добавим саму команду
PHP:
CMD:pickup(playerid, params[0])
{
	if(Creat[playerid] == false)
	{
    	if(sscanf(params,"d",params[0]))return SendClientMessage(playerid, ORANGE, "/pickup [модель]");
    	Model = params[0];
		GetPlayerPos(playerid, Xt, Yt,Zt);
		Intor = GetPlayerInterior(playerid);
		VW = GetPlayerVirtualWorld(playerid);
		Creat[playerid] = true;
	}
	else
	{
	    new query[520];
	    GetPlayerPos(playerid, eXt, eYt,eZt);
   		eIntor = GetPlayerInterior(playerid);
		eVW = GetPlayerVirtualWorld(playerid);
	    format(query,sizeof query,"INSERT INTO "TABLE_TELEPORT" (Model, X, Y, Z, VW, Intor, xX, xY, xZ, xVW, xIntor) VALUES (%d, %f, %f, %f, %d, %d, %f, %f, %f, %d, %d)",Model, Xt, Yt,Zt, VW, Intor,eXt, eYt,eZt, eVW, eIntor);
    	mysql_function_query(dbHandle, query, false, "", "");
    	Creat[playerid] = false;
    	TeleportInfo[TOTAL_TELEPORT][tModel] = Model;
    	TeleportInfo[TOTAL_TELEPORT][tX] = Xt;
    	TeleportInfo[TOTAL_TELEPORT][tY]= Yt;
		TeleportInfo[TOTAL_TELEPORT][tZ] = Zt;
		TeleportInfo[TOTAL_TELEPORT][tVW] = VW;
		TeleportInfo[TOTAL_TELEPORT][tIntor] = Intor;
		TeleportInfo[TOTAL_TELEPORT][txX] = eXt;
		TeleportInfo[TOTAL_TELEPORT][txY] = eYt;
		TeleportInfo[TOTAL_TELEPORT][txZ] = eZt;
		TeleportInfo[TOTAL_TELEPORT][txVW] = eVW;
		TeleportInfo[TOTAL_TELEPORT][txIntor] = eIntor;
    	TeleportInfo[TOTAL_TELEPORT][tPickup] = CreateDynamicPickup(TeleportInfo[TOTAL_TELEPORT][tModel], 23, TeleportInfo[TOTAL_TELEPORT][tX], TeleportInfo[TOTAL_TELEPORT][tY], TeleportInfo[TOTAL_TELEPORT][tZ], TeleportInfo[TOTAL_TELEPORT][tVW], TeleportInfo[TOTAL_TELEPORT][tIntor], -1, 100);
        TOTAL_TELEPORT++;
		printf("Создан пикап №%d", TOTAL_TELEPORT);
	}
	return true;
}
7.Создадим Таблицу в БД
PHP:
CREATE TABLE IF NOT EXISTS `teleports` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `Model` int(11) NOT NULL,
  `X` float NOT NULL,
  `Y` float NOT NULL,
  `Z` float NOT NULL,
  `VW` int(11) NOT NULL,
  `Intor` int(11) NOT NULL,
  `xX` float NOT NULL,
  `xY` float NOT NULL,
  `xZ` float NOT NULL,
  `xVW` int(11) NOT NULL,
  `xIntor` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
Вот вроде и все...
Если нужны будут инклуды то завтра добавлю...
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу