Доступ к архиву

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

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

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

телепорт для МП

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

tryp

Изучающий
Пользователь
Регистрация
17 Авг 2011
Сообщения
483
Лучшие ответы
0
Репутация
161
Доброе всем время суток.На всех рп серверах есть МП(конкурсы ивенты итд), чтоб тп на МП , восновном все люди пишут в репорт свой ид но я сделал иначе!
для начало содаем enum для тп
PHP:
enum IMPEnum
{
    IMPID,
    IMPType,    	// тип ивента,если 0 то ивент отключен
    IMPRW,     		// конфисковывать ли оружие?
    IMPFreeze,     	// замораживать ли игроков?
    IMPGunID,		// оружие
    IMPAmmo,		// патроны  к оружию
    IMPCar,			// модель машины если 0  = ент
    Float:IMPPosX,  // позиция X
    Float:IMPPosY,  // позиция  Y
    Float:IMPPosZ,  // позиция Z
    IMPInt,  		// интерьер
   	IMPObjInt,  	// интерьер обьектов
    IMPPosR     	// радиус по XY
}
new IMP[IMPEnum];
затем создаем команду чтоб открыть/закрыть телепорт у нас будет /ivent
идем в Public OnPlayerCommandText
PHP:
if(strcmp(cmd, "/ivent", true) == 0 || strcmp(cmd, ".шмуте", true) == 0)
	{
		if (PlayerInfo[playerid][pAdmin] == 2 || PlayerInfo[playerid][pAdmin] >= 3)
		{
			new type,radius,wr,stype[64];
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_GRAD1, " Использование: /ivent [тип ивента не более 10] [радиус телепорта] (конф оружие 1/0) (заморозка 1/0)");
				return 1;
			}
			type = strval(tmp);
			if(type>10 || type<0)
			{
				SendClientMessage(playerid, COLOR_GRAD1, " Недопустимое значение.");
				return 1;
			}
			if(type==0)
			{
				if(IMP[IMPType]==0)
				{
					SendClientMessage(playerid, COLOR_GRAD1, " Ивент не был начат!");
					return 1;
				}
				IMP[IMPType]=0;
				GetPlayerName(playerid, sendername, sizeof(sendername));
				format(string, sizeof(string), " Объявление: ТП завершен! Контракт: [%d]%s Номер: %d ",  playerid,sendername,PlayerInfo[playerid][pPnumber]);
				BroadCast(TEAM_GROVE_COLOR,string);
				return 1;
			}
			IMP[IMPType]=type;
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				radius = 4;
			}
			else radius = strval(tmp);
			if(radius>10 || radius<0) return SendClientMessage(playerid, COLOR_GRAD1, " Недопустимое значение.");
            IMP[IMPPosR]=radius;
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				wr=0;
			}
			else wr = strval(tmp);
			if(wr<0 || wr >1)return SendClientMessage(playerid, COLOR_GRAD1, " Недопустимое значение.");
            IMP[IMPRW]=wr;
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				wr=0;
			}
			else wr = strval(tmp);
			if(wr<0 || wr >1)return SendClientMessage(playerid, COLOR_GRAD1, " Недопустимое значение.");
            IMP[IMPFreeze]=wr;
			GetPlayerPos(playerid,IMP[IMPPosX],IMP[IMPPosY],IMP[IMPPosZ]);IMP[IMPInt]=GetPlayerInterior(playerid);
			switch(type)// причина
			{
				case 1: format(stype,64, "Ивент:  ДМ , после ТП сразу в линию!");
	    		case 2: format(stype,64, "Ивент:  Гонка , после ТП сразу по машинам и в Линию!");
                case 3: format(stype,64, "Ивент:  Дерби , после ТП сразу по машинам!");
				case 4: format(stype,64, "Телепорт: к Мерии ");
				case 5: format(stype,64, "Ивент:  ТДМ, Террористы против Ментов!");
				case 6: format(stype,64, "Телепорт: Осмотр местности для ТДМ, после ТП в Линию!");
				case 7: format(stype,64, "Ивент: Гонка на Гидрах(В разрабоке) ");
				case 8: format(stype,64, "Ивент: Скриптовый ДМ, после ТП сразу в Линию! ");
				case 9: format(stype,64, "Ивент: Скриптовая гонка, после ТП сразу по машинам и в Линию! ");
				case 10: format(stype,64, "Ивент: Скриптовый Дерби, после ТП сразу в Линию! ");
				default: return 1;
			}
//			format(string, sizeof(string), " Администратор %s: [%s] Ипспользуйте: /toivent для телепорта.", sendername,stype);
			GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), " Объявление: %s,пишем ИД! Контракт: [%d]%s Номер: %d ",  stype,playerid,sendername,PlayerInfo[playerid][pPnumber]);
			BroadCast(TEAM_GROVE_COLOR,string);
		}
	}
	if (!strcmp("/toivent", cmd,true))
	{
		ToIvent(playerid);
		return 1;
	}
чтоб открыть тп надо написать так: /ivent [тип ивента от 1 до 10][радиус от 1 до 10][дать оружие1/0][зароморить1/0] .
чтоб закрыть тп пишем /ivent 0 0 0 0!
____________________________________
Дальше суем это в конец мода!
PHP:
 ToIvent(playerid)
{
    new carid;
	if(PlayerInfo[playerid][pJailed]>0) SendClientMessage(playerid, COLOR_GREY, " Недопустимая комманда для заключенных.");
     else
	{
		if(IMP[IMPType]>0)
		{
			if(IMP[IMPType]==4)//телепорт к мерии
			{
				SetPlayerPos(playerid,1498.0271,-1744.0148,13.5469);
				SetPlayerFacingAngle(playerid,0);
				SetPlayerInterior(playerid,0);
			}
			if(IMP[IMPType]==7) //телепорт на гидрах
			{
				SetPlayerPos(playerid,1214.2761,-903.8991,42.6997);
				PutPlayerInVehicle(playerid,520,1);
				LockCar(carid);
				Gas[carid] = GasMax;
				SetPlayerHealth(playerid,100);
				SetPlayerVirtualWorld(playerid, 1);
				}
			if(IMP[IMPType]==9) //телепорт на гидрах
			{
				SetPlayerPos(playerid,PlayMission[kCP1][0],PlayMission[kCP1][1],PlayMission[kCP1][2]);
				//PutPlayerInVehicle(playerid,520,1);
				SetPlayerHealth(playerid,100);
				SetPlayerVirtualWorld(playerid, 1);
				}
            else
			{
				SetPlayerPos(playerid,IMP[IMPPosX]+RandomEx(-IMP[IMPPosR],IMP[IMPPosR]),IMP[IMPPosY]+RandomEx(-IMP[IMPPosR],IMP[IMPPosR]),IMP[IMPPosZ]);
				SetPlayerInterior(playerid,IMP[IMPInt]);
			}
			SetPlayerHealth(playerid,100);
			if(IMP[IMPRW]) ResetPlayerWeapons(playerid);
			if(IMP[IMPFreeze]) TogglePlayerControllable(playerid,0);
			SendClientMessage(playerid, COLOR_GREY, " Тебя телепортировали на ивент.");
		}
		else SendClientMessage(playerid, COLOR_GRAD1, " Ивент отключен.");
	}
}
RandomEx(min, max)
{
	return random(max - min) + min;
}
и теперь идем в public OnPlayerText (это нужно чтоб если ты написал в чат свой ид то ты будешь тп!)
PHP:
if(IMP[IMPType]!=0)
	{
	    new id=ReturnUser(text);
	    if(id==playerid)
		ToIvent(playerid);
		return 0;
	}
чтоб тп надо писать свой ид не в ooc чат а в обычный (глобальный)
автор: хз
от + не откажусь)
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу