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

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

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

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

Include MTA Map

Mr_David

Мастер
Данный инклуд позволяет загружать любые MTA карты.
Загружать полностью карту, то есть объекты, пикапы, трансопрт.
Или же загружать все по отдельности.

LoadMtaMap(const mapname[]) // Загружает карту полностью
LoadMtaObject(const mapname[], Float:stream_dis = 200.0, &start = 0, &end = 0) // Загружает только объекты
LoadMtaPickup(const mapname[], type = 2, Float:stream_dis = 100.0, &start = 0, &end = 0) // Загружает только пикапы
LoadMtaVehicle(const mapname[], respawn_delay = 60, &start = 0, &end = 0) // Загружает только транспорт
Параметры start и end возврашают первый и последний созданный объект, пикап, трансопрт.

Так же есть поддержка авто распознавания стримера. Стример плагин от Incognito и стример Double-O-Objects, распознаются автоматически.

Стримеры MidoStream, BFX нужно задавать самому перед инклудом.

PHP:
#define Streamer_MidoStream
//#define Streamer_BFX
#include

Если вы использовать стример от Incognito и не хотите загружать пикапы через стример, то пишем перед инлудом

PHP:
#define NOT_USE_STREAMER_PIC
PHP:
#if defined _mtamap_included
	#endinput
#endif
#define _mtamap_included

#if defined _streamer_included && !defined Streamer_Incognito
	#define Streamer_Incognito
#endif

#if defined _DOO_included && !defined Streamer_DOO
	#define Streamer_DOO
#endif

/**
native LoadMtaMap(const mapname[]) // Загружает карту полностью
native LoadMtaObject(const mapname[], Float:stream_dis = 200.0, &start = 0, &end = 0) // Загружает только объекты
native LoadMtaPickup(const mapname[], type = 2, Float:stream_dis = 100.0, &start = 0, &end = 0) // Загружает только пикапы
native LoadMtaVehicle(const mapname[], respawn_delay = 60, &start = 0, &end = 0) // Загружает только транспорт
**/

#define LOAD_STREAM_DIS_OBJ 200.0
#define LOAD_STREAM_DIS_PIC 100.0
#define LOAD_RESPAWN_DELAY 60

stock LoadMtaMap(mapname[])
{
	new File:map = fopen(mapname, io_read);
	if(map)
	{
		new
			bool:succes,
			temp[20],
			Data[512],
			model,
			#if defined Streamer_Incognito || defined Streamer_BFX
			interior,
			#endif
			dimension,
			Float:posX,
			Float:posY,
			Float:posZ,
			Float:rotX,
			Float:rotY,
			Float:rotZ;
			
		while(fread(map, Data))
		{
			if(strfind(Data, "<object") != -1)
			{
				if(!succes) succes = true;
				
				GetMapParams(Data, "model", temp);
				model = strval(temp);				
				GetMapParams(Data, "posX", temp);
				posX = floatstr(temp);
				GetMapParams(Data, "posY", temp);
				posY = floatstr(temp);
				GetMapParams(Data, "posZ", temp);
				posZ = floatstr(temp);
				GetMapParams(Data, "rotX", temp);
				rotX = floatstr(temp);
				GetMapParams(Data, "rotY", temp);
				rotY = floatstr(temp);
				GetMapParams(Data, "rotZ", temp);
				rotZ = floatstr(temp);
				#if defined Streamer_Incognito || defined Streamer_BFX
				GetMapParams(Data, "interior", temp);
				interior = strval(temp);
				#endif
				#if defined Streamer_Incognito || defined Streamer_DOO || defined Streamer_BFX
				GetMapParams(Data, "dimension", temp);
				dimension = strval(temp);
				#endif
				
				#if defined Streamer_Incognito
				CreateDynamicObject(model, posX, posY, posZ, rotX, rotY, rotZ, dimension, interior, -1, LOAD_STREAM_DIS_OBJ);
				#endif
				#if defined Streamer_DOO
				CreateStreamObject(model, posX, posY, posZ, rotX, rotY, rotZ, LOAD_STREAM_DIS_OBJ, dimension);
				#endif
				#if defined Streamer_MidoStream
				CreateStreamObject(model, posX, posY, posZ, rotX, rotY, rotZ, LOAD_STREAM_DIS_OBJ);
				#endif	
				#if defined Streamer_BFX
				b_CreateObject(model, posX, posY, posZ, rotX, rotY, rotZ, interior, dimension, LOAD_STREAM_DIS_OBJ);
				#endif
				#if !defined Streamer_Incognito && !defined Streamer_DOO && !defined Streamer_MidoStream && !defined Streamer_BFX
				CreateObject(model, posX, posY, posZ, rotX, rotY, rotZ);
				#endif
			}			
			if(strfind(Data, "<pickup") != -1)
			{
				if(!succes) succes = true;
											
				GetMapParams(Data, "posX", temp);
				posX = floatstr(temp);
				GetMapParams(Data, "posY", temp);
				posY = floatstr(temp);
				GetMapParams(Data, "posZ", temp);
				posZ = floatstr(temp);
				#if defined Streamer_Incognito && !defined NOT_USE_STREAMER_PIC
				GetMapParams(Data, "interior", temp);
				interior = strval(temp);
				#endif
				GetMapParams(Data, "dimension", temp);
				dimension = strval(temp);
				
				GetMapParams(Data, "type", temp);								
				if(!strcmp(temp, "health")) model = 1240;
				else if(!strcmp(temp, "armor")) model = 1242;
				else model = MtaMap_GetWeaponModel(strval(temp));
				
				#if defined Streamer_Incognito && !defined NOT_USE_STREAMER_PIC
				CreateDynamicPickup(model, 2, posX, posY, posZ, dimension, interior, -1, LOAD_STREAM_DIS_PIC);
				#else
				CreatePickup(model, 2, posX, posY, posZ, dimension);
				#endif
			}
			if(strfind(Data, "<vehicle") != -1)
			{
				if(!succes) succes = true;
				
				GetMapParams(Data, "model", temp);
				model = strval(temp);				
				GetMapParams(Data, "posX", temp);
				posX = floatstr(temp);
				GetMapParams(Data, "posY", temp);
				posY = floatstr(temp);
				GetMapParams(Data, "posZ", temp);
				posZ = floatstr(temp);
				GetMapParams(Data, "rotZ", temp);
				rotZ = floatstr(temp);
				
				CreateVehicle(model, posX, posY, posZ, rotZ, -1, -1, LOAD_RESPAWN_DELAY);
			}
		}
		fclose(map);
		if(!succes)
		{
			printf("Карта: \"%s\" не загружена", mapname);
			return 0;
		}
		else printf("Карта: \"%s\" загружена", mapname);
		return 1;
	}		
	return 0;
}
stock LoadMtaObject(const mapname[], Float:stream_dis = 200.0, &start = 0, &end = 0)
{
	#pragma unused stream_dis
	new File:map = fopen(mapname, io_read);
	if(map)
	{
		new
			temp[20],
			Data[512],
			model,
			#if defined Streamer_Incognito || defined Streamer_BFX
			interior,
			#endif
			#if defined Streamer_Incognito || defined Streamer_DOO || defined Streamer_BFX
			dimension,
			#endif
			Float:posX,
			Float:posY,
			Float:posZ,
			Float:rotX,
			Float:rotY,
			Float:rotZ;
			
		start = -1;	
		end = -1;	
		while(fread(map, Data))
		{
			if(strfind(Data, "<object") != -1)
			{
				GetMapParams(Data, "model", temp);
				model = strval(temp);				
				GetMapParams(Data, "posX", temp);
				posX = floatstr(temp);
				GetMapParams(Data, "posY", temp);
				posY = floatstr(temp);
				GetMapParams(Data, "posZ", temp);
				posZ = floatstr(temp);
				GetMapParams(Data, "rotX", temp);
				rotX = floatstr(temp);
				GetMapParams(Data, "rotY", temp);
				rotY = floatstr(temp);
				GetMapParams(Data, "rotZ", temp);
				rotZ = floatstr(temp);
				#if defined Streamer_Incognito || defined Streamer_BFX
				GetMapParams(Data, "interior", temp);
				interior = strval(temp);
				#endif
				#if defined Streamer_Incognito || defined Streamer_DOO || defined Streamer_BFX
				GetMapParams(Data, "dimension", temp);
				dimension = strval(temp);
				#endif
				
				#if defined Streamer_Incognito
				if(start == -1) start = CreateDynamicObject(model, posX, posY, posZ, rotX, rotY, rotZ, dimension, interior, -1, stream_dis);
				else end = CreateDynamicObject(model, posX, posY, posZ, rotX, rotY, rotZ, dimension, interior, -1, stream_dis);
				#endif
				#if defined Streamer_DOO
				if(start == -1) start = CreateStreamObject(model, posX, posY, posZ, rotX, rotY, rotZ, stream_dis, dimension);
				else end = CreateStreamObject(model, posX, posY, posZ, rotX, rotY, rotZ, stream_dis, dimension);
				#endif
				#if defined Streamer_MidoStream
				if(start == -1) start = CreateStreamObject(model, posX, posY, posZ, rotX, rotY, rotZ, stream_dis);
				else end = CreateStreamObject(model, posX, posY, posZ, rotX, rotY, rotZ, stream_dis);
				#endif	
				#if defined Streamer_BFX
				if(start == -1) start = b_CreateObject(model, posX, posY, posZ, rotX, rotY, rotZ, interior, dimension, stream_dis);
				else end = b_CreateObject(model, posX, posY, posZ, rotX, rotY, rotZ, interior, dimension, stream_dis);
				#endif
				#if !defined Streamer_Incognito && !defined Streamer_DOO && !defined Streamer_MidoStream && !defined Streamer_BFX
				if(start == -1) start = CreateObject(model, posX, posY, posZ, rotX, rotY, rotZ);
				else end = CreateObject(model, posX, posY, posZ, rotX, rotY, rotZ);
				#endif
			}
		}
		fclose(map);
		if(start == -1) 
		{
			printf("Карта: \"%s\" объекты не были загружены", mapname);
			return 0;
		}
		else 
		{
			if(end == -1) end = start;
			printf("Карта: \"%s\" объекты загружены", mapname);
		}
		return 1;
	}
	return 0;
}
stock LoadMtaPickup(const mapname[], type = 2, Float:stream_dis = 100.0, &start = 0, &end = 0)
{
	#pragma unused stream_dis
	new File:map = fopen(mapname, io_read);
	if(map)
	{
		new
			temp[20],
			Data[512],
			model,
			#if defined Streamer_Incognito && !defined NOT_USE_STREAMER_PIC
			interior,
			#endif
			dimension,
			Float:posX,
			Float:posY,
			Float:posZ;
			
		start = -1;	
		end = -1;	
		while(fread(map, Data))
		{
			if(strfind(Data, "<pickup") != -1)
			{										
				GetMapParams(Data, "posX", temp);
				posX = floatstr(temp);
				GetMapParams(Data, "posY", temp);
				posY = floatstr(temp);
				GetMapParams(Data, "posZ", temp);
				posZ = floatstr(temp);
				#if defined Streamer_Incognito && !defined NOT_USE_STREAMER_PIC
				GetMapParams(Data, "interior", temp);
				interior = strval(temp);
				#endif
				GetMapParams(Data, "dimension", temp);
				dimension = strval(temp);
				
				GetMapParams(Data, "type", temp);								
				if(!strcmp(temp, "health")) model = 1240;
				else if(!strcmp(temp, "armor")) model = 1242;
				else model = MtaMap_GetWeaponModel(strval(temp));
				
				#if defined Streamer_Incognito && !defined NOT_USE_STREAMER_PIC
				if(start == -1) start = CreateDynamicPickup(model, type, posX, posY, posZ, dimension, interior, -1, stream_dis);
				else end = CreateDynamicPickup(model, type, posX, posY, posZ, dimension, interior, -1, stream_dis);
				#else
				if(start == -1) start = CreatePickup(model, type, posX, posY, posZ, dimension);
				else end = CreatePickup(model, type, posX, posY, posZ, dimension);
				#endif
			}
		}
		fclose(map);
		if(start == -1) 
		{
			printf("Карта: \"%s\" пикапы не были загружены", mapname);
			return 0;
		}
		else 
		{
			if(end == -1) end = start;
			printf("Карта: \"%s\" пикапы загружены", mapname);
		}
		return 1;
	}
	return 0;
}	
stock LoadMtaVehicle(const mapname[], respawn_delay = 60, &start = 0, &end = 0)
{
	new File:map = fopen(mapname, io_read);
	if(map)
	{
		new
			temp[20],
			Data[512],
			model,
			Float:posX,
			Float:posY,
			Float:posZ,
			Float:rotZ;
			
		start = -1;	
		end = -1;
		while(fread(map, Data))
		{			
			if(strfind(Data, "<vehicle") != -1)
			{
				GetMapParams(Data, "model", temp);
				model = strval(temp);				
				GetMapParams(Data, "posX", temp);
				posX = floatstr(temp);
				GetMapParams(Data, "posY", temp);
				posY = floatstr(temp);
				GetMapParams(Data, "posZ", temp);
				posZ = floatstr(temp);
				GetMapParams(Data, "rotZ", temp);
				rotZ = floatstr(temp);
				
				if(start == -1) start = CreateVehicle(model, posX, posY, posZ, rotZ, -1, -1, respawn_delay);
				else end = CreateVehicle(model, posX, posY, posZ, rotZ, -1, -1, respawn_delay);
			}
		}
		fclose(map);
		if(start == -1) 
		{
			printf("Карта: \"%s\" транспорт не был загружен", mapname);
			return 0;
		}
		else 
		{
			if(end == -1) end = start;
			printf("Карта: \"%s\" транспорт загружен", mapname);
		}
		return 1;
	}
	return 0;
}

#undef LOAD_STREAM_DIS_OBJ
#undef LOAD_STREAM_DIS_PIC
#undef LOAD_RESPAWN_DELAY

stock GetMapParams(const source[], const params[], dest[], maxSize = sizeof(dest))
{
	new
		st = -1, 
		i = -1;
		
	dest[0] = 0;
	
	i = strfind(source, params);
	
	if(i == -1) return 0;
	
	for( ; ; i++ )
	{
		if(source[i] == '"')
		{
			if(st == -1) st = i + 1;
			else
			{
				strmid(dest, source, st, i, maxSize);
				goto map_end;
			}
		}
	}
	
	map_end:
	return 1;
}
stock MtaMap_GetWeaponModel(weaponid)
{
	switch(weaponid)
	{
		case 1: return 331;
		case 2..8: return weaponid+331;
		case 9: return 341;
		case 10..15: return weaponid+311;
		case 16..18: return weaponid+326;
		case 22..29: return weaponid+324;
		case 30,31: return weaponid+325;
		case 32: return 372;
		case 33..45: return weaponid+324;
		case 46: return 371;
	}
	return 0;
}

Автор:Fro1sha
 
Последнее редактирование модератором:
Сверху Снизу