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

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

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

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

Мануал Система графити

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

Тём4ик

Умник
Всем привет, хочу вам показать сис-му графити, что за система я думаю вы поняли, приступим к делу :)
Ко всем дефайнам добавим.
PHP:
#define 	SPRAYTAG_FOLDER 			"spraytags/%s.ini"

#define 	MAX_PLAYERS_TAGS 			(5) 					// Mаксимум графити с человека.
#define 	SPRAY_TAG_TIMER 			(4) 					// Время.
#define 	SPRAY_TAG_OBJECT 			(19353) 				// Ид обьекта
#define 	SPRAY_TAG_OBJECT_DISTANCE 	(200.0) 				// Дистанция

// ######### Диалоги #########
#define 	TYPE_LIST_MENU 				(0)
#define 	TYPE_LIST_EDIT 				(1)
#define 	TYPE_LIST_CREATE 			(2)
#define 	TYPE_LIST_TAGS 				(3)	
#define 	TYPE_LIST_TAGS_DELETE 		(4)
#define 	TYPE_LIST_TAGS_CREATE 		(5)
#define 	TYPE_LIST_TAGS_FIND 		(6)

// ######### Dialog's ID #########
#define 	SPRAYTAG_MENU 				(9800)
#define 	SPRAYTAG_DELETE 			(9801)
#define 	SPRAYTAG_CREATE 			(9802)
#define 	SPRAYTAG_CREATE_MAIN 		(9803)
#define 	SPRAYTAG_CREATE_TEXT 		(9804)
#define 	SPRAYTAG_CREATE_FONT 		(9805)
#define 	SPRAYTAG_CREATE_SIZE 		(9806)
#define 	SPRAYTAG_CREATE_COLOR 		(9807)
#define 	SPRAYTAG_CREATE_FINISH 		(9808)
#define 	SPRAYTAG_EDIT_MAIN 			(9809)
#define 	SPRAYTAG_EDIT_TEXT 			(9810)
#define 	SPRAYTAG_EDIT_FONT 			(9811)
#define 	SPRAYTAG_EDIT_SIZE 			(9812)
#define 	SPRAYTAG_EDIT_COLOR 		(9813)
#define 	SPRAYTAG_EDIT_FINISH 		(9814)
#define 	SPRAYTAG_EDIT_LIST 			(9815)
#define 	SPRAYTAG_FIND				(9816)
#define 	SPRAYTAG_DIALOG_RETURN		(9817)
Ко всем енума"м добавим
PHP:
enum SPRAYTAG_DATA
{
	_spObject,
	_spText[50],
	_spFontColor,
	_spBold,
	_spFontSize,
	_spFont[50],
	Float:_spPosX,
	Float:_spPosY,
	Float:_spPosZ,
	Float:_spPosRX,
	Float:_spPosRY,
	Float:_spPosRZ,
	_spVW,
	_spInt
}

new 
	SprayTags[MAX_PLAYERS][MAX_PLAYERS_TAGS][SPRAYTAG_DATA],
	spraytag_object[MAX_PLAYERS],
	spraytag_timer[MAX_PLAYERS],
	spraytag_timer_left[MAX_PLAYERS],
	spraytag_find[MAX_PLAYERS],
	spraytag_slot[MAX_PLAYERS],
	spraytag_text[MAX_PLAYERS],
	spraytag_size[MAX_PLAYERS],
	spraytag_bold[MAX_PLAYERS],
	spraytag_color[MAX_PLAYERS],
	spraytag_font[MAX_PLAYERS],
	Float:spraytag_positions[MAX_PLAYERS][6]
;
В паблик OnGameModeExit добавляем
PHP:
	DOF2_Exit();
В паблик OnPlayerConnect добавляем
PHP:
	Tag_Load(playerid);
Далее мы создадим паблик (в конец мода)
PHP:
forward SprayTag_Dialog(iPlayerID, iType);
public SprayTag_Dialog(iPlayerID, iType)
{
	new 
		szDialog[500],
		szText[50],
		szFont[50],
		szBold[4],
		szColor[30]
	;
	
	switch(iType)
	{
		case TYPE_LIST_MENU:
		{
			ShowPlayerDialog(iPlayerID, SPRAYTAG_MENU, DIALOG_STYLE_LIST, "{F7EC6F}Графити - {469BF0}Меню", "Создать графити\nРедактировать графити\nУдалить графити\nНанести графити", "Ок", "Выход");
		}
		case TYPE_LIST_CREATE:
		{
			switch(spraytag_bold[iPlayerID])
			{
				case 0: szBold = "No";
				case 1: szBold = "Yes";
			}
			switch(spraytag_color[iPlayerID])
			{
				case -65536: szColor = "{FF0000}Red";
				case -16468988: szColor = "{04B404}Green";
				case -16730675: szColor = "{00B5CD}Light Blue";
				case -256: szColor = "{FFFF00}Yellow";
				case -16776961: szColor = "{0000FF}Blue";
				case -8092540: szColor = "{848484}Grey";
				case -65281: szColor = "{FF00FF}Pink";
				case -1: szColor = "{FFFFFF}White";
			}
			
			format(szText, 50, spraytag_text[iPlayerID]);
			format(szFont, 50, spraytag_font[iPlayerID]);
			
			format(szDialog, sizeof szDialog, "\
				{F7EC6F}Text: %s\n\
				{F7EC6F}Font: %s\n\
				{F7EC6F}Size: %d\n\
				{F7EC6F}Color: %s\n\
				{F7EC6F}Bold: %s\n\
				{FFB957}Create Tag",
				szText, 
				szFont, 
				spraytag_size[iPlayerID],
				szColor, 
				szBold
			);
			ShowPlayerDialog(iPlayerID, SPRAYTAG_CREATE_MAIN, DIALOG_STYLE_LIST, "{F7EC6F}Графити - {469BF0}Настройка", szDialog, "Ок", "Back");
		}
		case TYPE_LIST_EDIT:
		{
			switch(spraytag_bold[iPlayerID])
			{
				case 0: szBold = "No";
				case 1: szBold = "Yes";
			}
			switch(spraytag_color[iPlayerID])
			{
				case -65536: szColor = "{FF0000}Red";
				case -16468988: szColor = "{04B404}Green";
				case -16730675: szColor = "{00B5CD}Light Blue";
				case -256: szColor = "{FFFF00}Yellow";
				case -16776961: szColor = "{0000FF}Blue";
				case -8092540: szColor = "{848484}Grey";
				case -65281: szColor = "{FF00FF}Pink";
				case -1: szColor = "{FFFFFF}White";
			}

			format(szDialog, sizeof szDialog, "\
				{F7EC6F}Text: %s\n\
				{F7EC6F}Font: %s\n\
				{F7EC6F}Size: %d\n\
				{F7EC6F}Color: %s\n\
				{F7EC6F}Bold: %s\n\
				{1EAAD9}Edit Tag",
				spraytag_text[iPlayerID], 
				spraytag_font[iPlayerID], 
				spraytag_size[iPlayerID],
				szColor, 
				szBold
			);
			ShowPlayerDialog(iPlayerID, SPRAYTAG_EDIT_LIST, DIALOG_STYLE_LIST, "{F7EC6F}Графити - {469BF0}настройка", szDialog, "Ок", "Back");
		}
		case TYPE_LIST_TAGS:
		{
			new 
				szName[MAX_PLAYER_NAME]
			;
					
			GetPlayerName(iPlayerID, szName, sizeof szName);
			for(new i; i < MAX_PLAYERS_TAGS; i++)
			{
				new szTag[24];
				format(szTag, sizeof szTag, "{F7EC6F}Свободно");
				if(SprayTags[iPlayerID][i][_spPosX] != 0.0 && SprayTags[iPlayerID][i][_spPosY] != 0.0)
				{
					format(szTag, sizeof(szTag), "{F7EC6F}Графити #%i", i);
				}
				format(szDialog, sizeof(szDialog), "%s%s\n", szDialog, szTag);
			}
			
			ShowPlayerDialog(iPlayerID, SPRAYTAG_EDIT_MAIN, DIALOG_STYLE_LIST, "{F7EC6F}Графити - {469BF0}Редактирования графити", szDialog, "Ок", "Back");
		}
		case TYPE_LIST_TAGS_DELETE:
		{
			new 
				szName[MAX_PLAYER_NAME]
			;
					
			GetPlayerName(iPlayerID, szName, sizeof szName);
					
			for(new i; i < MAX_PLAYERS_TAGS; i++)
			{
				new szTag[24];
				format(szTag, sizeof szTag, "{F7EC6F}Свободно");
				if(SprayTags[iPlayerID][i][_spPosX] != 0.0 && SprayTags[iPlayerID][i][_spPosY] != 0.0)
				{
					format(szTag, sizeof(szTag), "{F7EC6F}Графити #%i", i);
				}
				format(szDialog, sizeof(szDialog), "%s%s\n", szDialog, szTag);
			}
			ShowPlayerDialog(iPlayerID, SPRAYTAG_DELETE, DIALOG_STYLE_LIST, "{F7EC6F}Графити - {469BF0}Графити удалено", szDialog, "Ок", "Back");
		}
		case TYPE_LIST_TAGS_CREATE:
		{
			new 
				szName[MAX_PLAYER_NAME]
			;
					
			GetPlayerName(iPlayerID, szName, sizeof szName);
					
			for(new i; i < MAX_PLAYERS_TAGS; i++)
			{
				new szTag[24];
				format(szTag, sizeof szTag, "{F7EC6F}Свободный");
				if(SprayTags[iPlayerID][i][_spPosX] != 0.0 && SprayTags[iPlayerID][i][_spPosY] != 0.0)
				{
					format(szTag, sizeof(szTag), "{F7EC6F}Графити #%i", i);
				}
				format(szDialog, sizeof(szDialog), "%s%s\n", szDialog, szTag);
			}
			ShowPlayerDialog(iPlayerID, SPRAYTAG_CREATE, DIALOG_STYLE_LIST, "{F7EC6F}Графити - {469BF0}Свободный слот", szDialog, "Ок", "Back");
		}
		case TYPE_LIST_TAGS_FIND:
		{
			new 
				szName[MAX_PLAYER_NAME]
			;
					
			GetPlayerName(iPlayerID, szName, sizeof szName);
					
			for(new i; i < MAX_PLAYERS_TAGS; i++)
			{
				new szTag[24];
				format(szTag, sizeof szTag, "{F7EC6F}Свободный");
				if(SprayTags[iPlayerID][i][_spPosX] != 0.0 && SprayTags[iPlayerID][i][_spPosY] != 0.0)
				{
					format(szTag, sizeof(szTag), "{F7EC6F}Графити #%i", i);
				}
				format(szDialog, sizeof(szDialog), "%s%s\n", szDialog, szTag);
			}
			ShowPlayerDialog(iPlayerID, SPRAYTAG_FIND, DIALOG_STYLE_LIST, "{F7EC6F}Графити - {469BF0}Хотите найти графити?", szDialog, "Ок", "Back");
		}
	}
	return 1;
}
Далее в паблик OnPlayerEnterCheckpoint
PHP:
	if(spraytag_find[playerid])
	{
		SendClientMessage(playerid, -1, "Вы прибыли.");
		DisablePlayerCheckpoint(playerid);
	}
В паблики OnDialogResponse
PHP:
	switch(dialogid)
	{
		case SPRAYTAG_DIALOG_RETURN: SprayTag_Dialog(playerid, TYPE_LIST_MENU);
		case SPRAYTAG_MENU:
		{
			if(!response) return 1;
			switch(listitem)
			{
				case 0: 
				{
					SprayTag_Dialog(playerid, TYPE_LIST_TAGS_CREATE);
				}
				case 1: SprayTag_Dialog(playerid, TYPE_LIST_TAGS);
				case 2: SprayTag_Dialog(playerid, TYPE_LIST_TAGS_DELETE);
				case 3:  SprayTag_Dialog(playerid, TYPE_LIST_TAGS_FIND);
			}
		}
		case SPRAYTAG_EDIT_MAIN:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_MENU);
			if(SprayTags[playerid][listitem][_spPosX] == 0.0)
				return ShowPlayerDialog(playerid, SPRAYTAG_DIALOG_RETURN, DIALOG_STYLE_MSGBOX, "{F7EC6F}Графити - {BD0000} Ops!!", "Ops! Графити уже используеться.", "Back", "");
				
			spraytag_slot[playerid] = listitem;
			
			spraytag_bold[playerid] = SprayTags[playerid][listitem][_spBold];
			spraytag_color[playerid] = SprayTags[playerid][listitem][_spFontColor];
			format(spraytag_text[playerid], 50, SprayTags[playerid][listitem][_spText]);
			format(spraytag_font[playerid], 50, SprayTags[playerid][listitem][_spFont]);
			spraytag_size[playerid] = SprayTags[playerid][listitem][_spFontSize];
			SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
		}
		case SPRAYTAG_DELETE:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_MENU);
			
			if(SprayTags[playerid][listitem][_spPosX] == 0.0)
				return ShowPlayerDialog(playerid, SPRAYTAG_DIALOG_RETURN, DIALOG_STYLE_MSGBOX, "{F7EC6F}Spray Tag - {BD0000} Ops!!", "Ops! Это уже используеться.", "Back", "");
				
			new 
				szMessage[60]
			;
				
			Tags_Clear(playerid, listitem);
			format(szMessage, sizeof szMessage, "[Графити] Графити #%i удалено.", listitem);
			SendClientMessage(playerid, -1, szMessage);
			SprayTag_Dialog(playerid, TYPE_LIST_MENU);
		}
		case SPRAYTAG_FIND:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_MENU);
			
			if(SprayTags[playerid][listitem][_spPosX] == 0.0)
				return ShowPlayerDialog(playerid, SPRAYTAG_DIALOG_RETURN, DIALOG_STYLE_MSGBOX, "{F7EC6F}Графити - {BD0000} Ops!!", "Ops! Это уже используеться.", "Back", "");
				
			new 
				szMessage[60]
			;
			spraytag_find[playerid] = SetPlayerCheckpoint(playerid, SprayTags[playerid][listitem][_spPosX], SprayTags[playerid][listitem][_spPosY], SprayTags[playerid][listitem][_spPosZ], 3.0);
			format(szMessage, sizeof szMessage, "[Графити] Um checkpoint foi marcado na sua spraytag #%i.", listitem);
			SendClientMessage(playerid, -1, szMessage);
		}
		case SPRAYTAG_CREATE:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_MENU);
			
			if(SprayTags[playerid][listitem][_spPosX] == 0.0)
			{
				spraytag_slot[playerid] = listitem;
				format(spraytag_text[playerid], 50, "Exemplo");
				format(spraytag_font[playerid], 50, "Arial");
				spraytag_color[playerid] = -1;
				spraytag_size[playerid] = 24;
				spraytag_bold[playerid] = 0;
				SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
			} else ShowPlayerDialog(playerid, SPRAYTAG_DIALOG_RETURN, DIALOG_STYLE_MSGBOX, "{F7EC6F}Графити - {BD0000} Ops!!", "Это уже используеться.", "Back", "");
		}
		case SPRAYTAG_EDIT_LIST:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_TAGS);
			
			new 
				iIndex = spraytag_slot[playerid]
			;
			
			switch(listitem)
			{
				case 0: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_TEXT, DIALOG_STYLE_INPUT, "{F7EC6F}Графити - {469BF0}Текст", "Введите текст, который будет как графити", "Done", "Back");
				case 1: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_FONT, DIALOG_STYLE_LIST, "{F7EC6F}Графити - {469BF0}Шрифт", "Arial\nCourier\nImpact\nPricedown\nDaredevil\nBomb  ing\naaaiight! fat\nFrom Street Art\nGhang\nGraffogie\nGraphers Blog\nNosegrind Demo", "Done", "Back");
				case 2: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_SIZE, DIALOG_STYLE_INPUT, "{F7EC6F}Графити - {469BF0}Размер", "Введите размер, вашего графити", "Done", "Back");
				case 3: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_COLOR, DIALOG_STYLE_LIST, "{F7EC6F}Графити - {469BF0}Цвет", "{FF0000}Red\n{04B404}Green\n{00B5CD}Light Blue\n{FFFF00}Yellow\n{0000FF}Blue\n{848484}Grey\n  {FF00FF}Pink\n{FFFFFF}White", "Done", "Back");
				case 4: 
				{
					switch(spraytag_bold[playerid])
					{
						case 0: spraytag_bold[playerid] = 1;
						case 1: spraytag_bold[playerid] = 0;
					}
					SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
				}
				case 5: 
				{
					EditDynamicObject(playerid, SprayTags[playerid][iIndex][_spObject]);
					SetPVarInt(playerid, "SPRAYTAG_EDIT", 2);
				}
			}
		}
		case SPRAYTAG_EDIT_TEXT:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
			format(spraytag_text[playerid], 32, inputtext);
			SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
		}
		case SPRAYTAG_EDIT_FONT:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
			format(spraytag_font[playerid], 32, inputtext);
			SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
		}
		case SPRAYTAG_EDIT_SIZE:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
			spraytag_size[playerid] = strval(inputtext);
			SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
		}
		case SPRAYTAG_EDIT_COLOR:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
			new iColor;
			switch(listitem)
	        {
	            case 0: iColor = HexToInt("0xFFFF0000");
	            case 1: iColor = HexToInt("0xFF04B404");
	            case 2: iColor = HexToInt("0xFF00B5CD");
	            case 3: iColor = HexToInt("0xFFFFFF00");
	            case 4: iColor = HexToInt("0xFF0000FF");
	            case 5: iColor = HexToInt("0xFF848484");
	            case 6: iColor = HexToInt("0xFFFF00FF");
	            case 7: iColor = HexToInt("0xFFFFFFFF");
	        }
			spraytag_color[playerid] = iColor;
			SprayTag_Dialog(playerid, TYPE_LIST_EDIT);
		}
		
		case SPRAYTAG_CREATE_MAIN:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_TAGS_CREATE);
			switch(listitem)
			{
				case 0: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_TEXT, DIALOG_STYLE_INPUT, "{F7EC6F}Графити - {469BF0}Текст", "Введите текст, который будет как графити", "Done", "Back");
				case 1: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_FONT, DIALOG_STYLE_LIST, "{F7EC6F}Графити - {469BF0}Шрифт", "Arial\nCourier\nImpact\nPricedown\nDaredevil\nBomb  ing\naaaiight! fat\nFrom Street Art\nGhang\nGraffogie\nGraphers Blog\nNosegrind Demo", "Done", "Back");
				case 2: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_SIZE, DIALOG_STYLE_INPUT, "{F7EC6F}Графити - {469BF0}Размер", "Введите размер, вашего графити", "Done", "Back");
				case 3: ShowPlayerDialog(playerid, SPRAYTAG_CREATE_COLOR, DIALOG_STYLE_LIST, "{F7EC6F}Графити - {469BF0}Цвет", "{FF0000}Red\n{04B404}Green\n{00B5CD}Light Blue\n{FFFF00}Yellow\n{0000FF}Blue\n{848484}Grey\n  {FF00FF}Pink\n{FFFFFF}White", "Done", "Back");
				case 4: 
				{
					switch(spraytag_bold[playerid])
					{
						case 0: spraytag_bold[playerid] = 1;
						case 1: spraytag_bold[playerid] = 0;
					}
					SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
				}
				case 5: 
				{
					new 
						Float:Position[3],
						szText[50],
						szFont[50]
					;
					
					GetPlayerPos(playerid, Position[0], Position[1], Position[2]);
					format(szText, 50, spraytag_text[playerid]);
					format(szFont, 50, spraytag_font[playerid]);
					
					spraytag_object[playerid] = CreateDynamicObject(SPRAY_TAG_OBJECT, Position[0]-1.0, Position[1], Position[2], 0.0, 0.0, 0.0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), -1, SPRAY_TAG_OBJECT_DISTANCE);
					SetDynamicObjectMaterialText(spraytag_object[playerid], 0, szText, OBJECT_MATERIAL_SIZE_512x512, szFont, spraytag_size[playerid], spraytag_bold[playerid], spraytag_color[playerid], 0, 1);
					EditDynamicObject(playerid, spraytag_object[playerid]);
					SetPVarInt(playerid, "SPRAYTAG_EDIT", 1);
				}
			}
		}
		case SPRAYTAG_CREATE_TEXT:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
			format(spraytag_text[playerid], 50, inputtext);
			SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
		}
		case SPRAYTAG_CREATE_FONT:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
			format(spraytag_font[playerid], 50, inputtext);
			SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
		}
		case SPRAYTAG_CREATE_SIZE:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
			spraytag_size[playerid] = strval(inputtext);
			SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
		}
		case SPRAYTAG_CREATE_COLOR:
		{
			if(!response) return SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
			new iColor;
			switch(listitem)
	        {
	            case 0: iColor = HexToInt("0xFFFF0000");
	            case 1: iColor = HexToInt("0xFF04B404");
	            case 2: iColor = HexToInt("0xFF00B5CD");
	            case 3: iColor = HexToInt("0xFFFFFF00");
	            case 4: iColor = HexToInt("0xFF0000FF");
	            case 5: iColor = HexToInt("0xFF848484");
	            case 6: iColor = HexToInt("0xFFFF00FF");
	            case 7: iColor = HexToInt("0xFFFFFFFF");
	        }
			spraytag_color[playerid] = iColor;
			SprayTag_Dialog(playerid, TYPE_LIST_CREATE);
		}
	}
Далее создадим паблик
PHP:
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz) 
{
	if(response == EDIT_RESPONSE_FINAL)
	{
		if(GetPVarInt(playerid, "SPRAYTAG_EDIT") == 1)
		{
			if(!IsPlayerInRangeOfPoint(playerid, 3, x, y, z))
			{
				DestroyDynamicObject(spraytag_object[playerid]);
				DeletePVar(playerid, "SPRAYTAG_EDIT");
				return SendClientMessage(playerid, -1, "Вы не около графити.");
			}
			
			spraytag_positions[playerid][0] = x;
			spraytag_positions[playerid][1] = y;
			spraytag_positions[playerid][2] = z;
			spraytag_positions[playerid][3] = rx;
			spraytag_positions[playerid][4] = ry;
			spraytag_positions[playerid][5] = rz;
			
			spraytag_timer[playerid] = SetTimerEx("SprayTag", 1000, true, "ii", playerid, 2);
			
			ApplyAnimation(playerid, "SPRAYCAN", "spraycan_full", 4.0, 1, 1, 1, 0, 0, 1);
			
			spraytag_timer_left[playerid] = SPRAY_TAG_TIMER;
			DestroyDynamicObject(spraytag_object[playerid]);
		}
		if(GetPVarInt(playerid, "SPRAYTAG_EDIT") == 2)
		{
			new 
				iIndex = spraytag_slot[playerid]
			;
			
			if(!IsPlayerInRangeOfPoint(playerid, 3, x, y, z))
			{
				DestroyDynamicObject(SprayTags[playerid][iIndex][_spObject]);
				SprayTag_Spawn(playerid, iIndex);
				DeletePVar(playerid, "SPRAYTAG_EDIT");
				return SendClientMessage(playerid, -1, "Вы не около графити.");
			}
				
			spraytag_positions[playerid][0] = x;
			spraytag_positions[playerid][1] = y;
			spraytag_positions[playerid][2] = z;
			spraytag_positions[playerid][3] = rx;
			spraytag_positions[playerid][4] = ry;
			spraytag_positions[playerid][5] = rz;
			
			spraytag_timer[playerid] = SetTimerEx("SprayTag", 1000, true, "ii", playerid, 1);
			
			ApplyAnimation(playerid, "SPRAYCAN", "spraycan_full", 4.0, 1, 1, 1, 0, 0, 1);
			
			spraytag_timer_left[playerid] = SPRAY_TAG_TIMER;
			DestroyDynamicObject(SprayTags[playerid][iIndex][_spObject]);
		}
	}
	if(response == EDIT_RESPONSE_CANCEL)
	{
		if(GetPVarInt(playerid, "SPRAYTAG_EDIT") >= 1)
		{
			DestroyDynamicObject(spraytag_object[playerid]);
			DestroyDynamicObject(SprayTags[playerid][spraytag_slot[playerid]][_spObject]);
			SprayTag_Spawn(playerid, spraytag_slot[playerid]);
			DeletePVar(playerid, "SPRAYTAG_EDIT");
		}
	}
	return 1;
}

forward SprayTag(playerid, type);
public SprayTag(playerid, type)
{
	new 
		iIndex = spraytag_slot[playerid]
	;
	
	if(!IsPlayerConnected(playerid))
	{
		spraytag_timer_left[playerid] = 0;
		DeletePVar(playerid, "SPRAYTAG_EDIT");
		KillTimer(spraytag_timer[playerid]);
		return 1;
	}
	
	spraytag_timer_left[playerid]--;
	
	switch(type)
	{
		case 1: 
		{
			if(spraytag_timer_left[playerid] == 0)
			{
				DestroyDynamicObject(SprayTags[playerid][iIndex][_spObject]);
				DestroyDynamicObject(spraytag_object[playerid]);
				
				format(SprayTags[playerid][iIndex][_spText], 50, spraytag_text[playerid]);
				format(SprayTags[playerid][iIndex][_spFont], 50, spraytag_font[playerid]);
				
				SprayTags[playerid][iIndex][_spPosX] = spraytag_positions[playerid][0];
				SprayTags[playerid][iIndex][_spPosY] = spraytag_positions[playerid][1];
				SprayTags[playerid][iIndex][_spPosZ] = spraytag_positions[playerid][2];
				SprayTags[playerid][iIndex][_spPosRX] = spraytag_positions[playerid][3];
				SprayTags[playerid][iIndex][_spPosRY] = spraytag_positions[playerid][4];
				SprayTags[playerid][iIndex][_spPosRZ] = spraytag_positions[playerid][5];
				SprayTags[playerid][iIndex][_spFontColor] = spraytag_color[playerid];
				SprayTags[playerid][iIndex][_spFontSize] = spraytag_size[playerid];
				SprayTags[playerid][iIndex][_spBold] = spraytag_bold[playerid];
				
				SprayTag_Spawn(playerid, iIndex);
				Tags_Save(playerid, iIndex);
				
				ClearAnimations(playerid);
				ApplyAnimation(playerid, "GRAFFITI", "graffiti_Chkout", 4.0, 0, 0, 0, 0, 0, 1);
				KillTimer(spraytag_timer[playerid]);
			}
		}
		case 2: 
		{
			if(spraytag_timer_left[playerid] == 0)
			{
				SprayTag_Create(playerid, spraytag_slot[playerid]);
				ClearAnimations(playerid);
				ApplyAnimation(playerid, "GRAFFITI", "graffiti_Chkout", 4.0, 0, 0, 0, 0, 0, 1);
				KillTimer(spraytag_timer[playerid]);
			}
		}
	}
	DeletePVar(playerid, "SPRAYTAG_EDIT");
	return 1;
}
Добавим команду,для вызова окна диалога
PHP:
CMD:tags(playerid) 
{
	if(IsPlayerConnected(playerid)) SprayTag_Dialog(playerid, TYPE_LIST_MENU);
	return 1;
}
И в конец мода добавим Стоки
PHP:
stock SprayTag_Create(playerid, iIndex)
{
	if(IsPlayerConnected(playerid))
	{
		new 
			szMessage[128]
		;
		
		SprayTags[playerid][iIndex][_spPosX] = spraytag_positions[playerid][0];
		SprayTags[playerid][iIndex][_spPosY] = spraytag_positions[playerid][1];
		SprayTags[playerid][iIndex][_spPosZ] = spraytag_positions[playerid][2];
		SprayTags[playerid][iIndex][_spPosRX] = spraytag_positions[playerid][3];
		SprayTags[playerid][iIndex][_spPosRY] = spraytag_positions[playerid][4];
		SprayTags[playerid][iIndex][_spPosRZ] = spraytag_positions[playerid][5];
		
		format(SprayTags[playerid][iIndex][_spText], 50, spraytag_text[playerid]);
		format(SprayTags[playerid][iIndex][_spFont], 50, spraytag_font[playerid]);
		
		SprayTags[playerid][iIndex][_spFontColor] = spraytag_color[playerid];
		SprayTags[playerid][iIndex][_spFontSize] = spraytag_size[playerid];
		SprayTags[playerid][iIndex][_spBold] = spraytag_bold[playerid];
		
		SprayTag_Spawn(playerid, iIndex);
		Tags_Save(playerid, iIndex);
		
		format(szMessage, sizeof szMessage, "[Сис-ма графити] Вы написали графити ID # %i.", iIndex);
		SendClientMessage(playerid, -1, szMessage);
	}
}

stock SprayTag_Spawn(playerid, iIndex)
{
	SprayTags[playerid][iIndex][_spObject] = CreateDynamicObject(SPRAY_TAG_OBJECT, SprayTags[playerid][iIndex][_spPosX], SprayTags[playerid][iIndex][_spPosY], SprayTags[playerid][iIndex][_spPosZ], SprayTags[playerid][iIndex][_spPosRX], SprayTags[playerid][iIndex][_spPosRY], SprayTags[playerid][iIndex][_spPosRZ], SprayTags[playerid][iIndex][_spVW], SprayTags[playerid][iIndex][_spInt], -1, SPRAY_TAG_OBJECT_DISTANCE);
	SetDynamicObjectMaterialText(SprayTags[playerid][iIndex][_spObject], 0, SprayTags[playerid][iIndex][_spText], OBJECT_MATERIAL_SIZE_512x512, SprayTags[playerid][iIndex][_spFont], SprayTags[playerid][iIndex][_spFontSize], SprayTags[playerid][iIndex][_spBold], SprayTags[playerid][iIndex][_spFontColor], 0, 1);
	return 1;
}

stock Tag_Load(playerid)
{
	if(IsPlayerConnected(playerid))
	{
		new 
			szFile[40],
			szLine[28],
			szName[MAX_PLAYER_NAME]
		;
		GetPlayerName(playerid, szName, MAX_PLAYER_NAME);
		format(szFile, 40, SPRAYTAG_FOLDER, szName);
		
		for(new i; i < MAX_PLAYERS_TAGS; i++)
		{
			format(szLine, sizeof szLine, "Text%i", i); format(SprayTags[playerid][i][_spText], 50, DOF2_GetString(szFile, szLine));
			format(szLine, sizeof szLine, "Font%i", i); format(SprayTags[playerid][i][_spFont], 50, DOF2_GetString(szFile, szLine));
			format(szLine, sizeof szLine, "FontSize%i", i); SprayTags[playerid][i][_spFontSize] = DOF2_GetInt(szFile, szLine);
			format(szLine, sizeof szLine, "FontBold%i", i); SprayTags[playerid][i][_spBold] = DOF2_GetInt(szFile, szLine);
			format(szLine, sizeof szLine, "FontColor%i", i); SprayTags[playerid][i][_spFontColor] = DOF2_GetInt(szFile, szLine);
			format(szLine, sizeof szLine, "PosX%i", i); SprayTags[playerid][i][_spPosX] = DOF2_GetFloat(szFile, szLine);
			format(szLine, sizeof szLine, "PosY%i", i); SprayTags[playerid][i][_spPosY] = DOF2_GetFloat(szFile, szLine);
			format(szLine, sizeof szLine, "PosZ%i", i); SprayTags[playerid][i][_spPosZ] = DOF2_GetFloat(szFile, szLine);
			format(szLine, sizeof szLine, "RotX%i", i); SprayTags[playerid][i][_spPosRX] = DOF2_GetFloat(szFile, szLine);
			format(szLine, sizeof szLine, "RotY%i", i); SprayTags[playerid][i][_spPosRY] = DOF2_GetFloat(szFile, szLine);
			format(szLine, sizeof szLine, "RotZ%i", i); SprayTags[playerid][i][_spPosRZ] = DOF2_GetFloat(szFile, szLine);
			format(szLine, sizeof szLine, "VirtualWorld%i", i); SprayTags[playerid][i][_spVW] = DOF2_GetInt(szFile, szLine);
			format(szLine, sizeof szLine, "Interior%i", i); SprayTags[playerid][i][_spInt] = DOF2_GetInt(szFile, szLine);
			
			if(SprayTags[playerid][i][_spPosX] != 0.0) 
			{
				SprayTag_Spawn(playerid, i);
			} 
		}
	}
	return 1;
}

stock Tags_Clear(playerid, iIndex)
{
	format(SprayTags[playerid][iIndex][_spText], 50, "Exemplo");
	format(SprayTags[playerid][iIndex][_spFont], 50, "Arial");
	SprayTags[playerid][iIndex][_spFontSize] = 24;
	SprayTags[playerid][iIndex][_spBold] = 0;
	SprayTags[playerid][iIndex][_spFontColor] = -1;
	SprayTags[playerid][iIndex][_spPosX] = 0.0;
	SprayTags[playerid][iIndex][_spPosY] = 0.0;
	SprayTags[playerid][iIndex][_spPosZ] = 0.0;
	SprayTags[playerid][iIndex][_spPosRX] = 0.0;
	SprayTags[playerid][iIndex][_spPosRY] = 0.0;
	SprayTags[playerid][iIndex][_spPosRZ] = 0.0;
	SprayTags[playerid][iIndex][_spVW] = 0;
	SprayTags[playerid][iIndex][_spInt] = 0;
	DestroyDynamicObject(SprayTags[playerid][iIndex][_spObject]);
	Tags_Save(playerid, iIndex);
	return 1;
}

stock Tags_Save(playerid, iIndex)
{
	if(IsPlayerConnected(playerid))
	{
		new 
			szFile[32],
			szLine[128],
			szName[MAX_PLAYER_NAME]
		;

		GetPlayerName(playerid, szName, MAX_PLAYER_NAME);
		format(szFile, 32, SPRAYTAG_FOLDER, szName);
		if(!DOF2_FileExists(szFile)) DOF2_CreateFile(szFile);
		{
			format(szLine, sizeof szLine, "Text%i", iIndex); DOF2_SetString(szFile, szLine, SprayTags[playerid][iIndex][_spText]);
			format(szLine, sizeof szLine, "Font%i", iIndex); DOF2_SetString(szFile, szLine, SprayTags[playerid][iIndex][_spFont]);
			format(szLine, sizeof szLine, "FontSize%i", iIndex); DOF2_SetInt(szFile, szLine, SprayTags[playerid][iIndex][_spFontSize]);
			format(szLine, sizeof szLine, "FontBold%i", iIndex); DOF2_SetInt(szFile, szLine, SprayTags[playerid][iIndex][_spBold]);
			format(szLine, sizeof szLine, "FontColor%i", iIndex); DOF2_SetInt(szFile, szLine, SprayTags[playerid][iIndex][_spFontColor]);
			format(szLine, sizeof szLine, "PosX%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosX]);
			format(szLine, sizeof szLine, "PosY%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosY]);
			format(szLine, sizeof szLine, "PosZ%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosZ]);
			format(szLine, sizeof szLine, "RotX%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosRX]);
			format(szLine, sizeof szLine, "RotY%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosRY]);
			format(szLine, sizeof szLine, "RotZ%i", iIndex); DOF2_SetFloat(szFile, szLine, SprayTags[playerid][iIndex][_spPosRZ]);
			format(szLine, sizeof szLine, "VirtualWorld%i", iIndex); DOF2_SetInt(szFile, szLine, SprayTags[playerid][iIndex][_spVW]);
			format(szLine, sizeof szLine, "Interior%i", iIndex); DOF2_SetInt(szFile, szLine, SprayTags[playerid][iIndex][_spInt]);
			DOF2_SaveFile();
		} 
	}
	return 1;
}

stock HexToInt(string[]) // Created by Zamaroth
{
	if (string[0] == 0) return 0;
	
	new 
		i,
		cur = 1,
		res = 0
	;
	
	for (i = strlen(string); i > 0; i --) {
		if (string[i-1] < 58) res = res + cur * (string[i-1]-48); else res = res + cur * (string[i-1]-65+10);
		cur = cur * 16;
	}
	return res;
}
Данная система у меня есть ещё на MySQL выложу завтра!
Смотрим видео
Будуть ошибки?Или баги?Пишите в тему помогу .
Вот скачайте, закиньте в скрипфайлс, и в папку с сервером.
Автор :NurbWill
​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу