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

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

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

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

Мануал по созданию PaintBall`a как на Samp-RP

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

xstyle

Компетентный
Здравствуйте. Решил вырезать Paint Ball из мода Samp-Rp v10. Вырезал я.

Добавьте в enum:


PHP:
enum painfo
{
	Name[32],
	Kills,
	Deaths,
};
new PaintInfo[15][painfo], PaintList = 0;
В public Float:GetDistanceBetweenPlayers(p1,p2):

PHP:
new PaintGun[] = {24,31};
new Float:PaintballSpawns[6][3] = {
	{2563.6877,2807.0288,10.8203},
	{2554.0505,2837.7419,10.8203},
	{2585.6748,2848.5283,10.8203},
	{2598.7083,2843.5200,10.8203},
	{2546.7622,2830.9004,14.2559},
	{2575.9900,2839.3103,19.9922}
};
new paintt[3];
В OnPlayerDisconnect:

PHP:
	if(GetPVarInt(playerid, "napeinte") == 1 && paintt[1] == 1) paintt[2]--;
	SetPVarInt(playerid,"Register",0);
В SetPlayerSpawn:

PHP:
		if(GetPVarInt(playerid, "napeinte") == 2 && paintt[1] == 2)
		{
			GiveWeapon(playerid, PaintGun[random(sizeof(PaintGun))], 300);
			new rand = random(sizeof(PaintballSpawns));
			SetPlayerPos(playerid, PaintballSpawns[rand][0], PaintballSpawns[rand][1], PaintballSpawns[rand][2]);
			SetPlayerInterior(playerid,0);
			return true;
		}
В OnPlayerDeath:

PHP:
	if(GetPVarInt(playerid,"napeinte") == 2)
	{
		SetPVarInt(playerid,"paintdeaths",GetPVarInt(playerid,"paintdeaths")+1);
        if(killerid != INVALID_PLAYER_ID)
        {
			GameTextForPlayer(killerid, "~w~Kills +1", 5000, 1);
			if(playerid != killerid){ SetPVarInt(killerid,"paintkills",GetPVarInt(killerid,"paintkills")+1); }
		}
	}
В OnPlayerPickUpDynamicPickup:

PHP:
	else if(pickupid == paint)
	{
	    if(paintt[1] == 0) return SendClientMessage(playerid,COLOR_GREY,"В данное время регистрация недоступна");
	    //if(PlayerInfo[playerid][pLevel] < 3 )return SendClientMessage(playerid,COLOR_GRAD1,"Участвовать можно с 3 lvl!");
		if(GetPVarInt(playerid, "napeinte") == 1)return SendClientMessage(playerid, COLOR_GREY, "Ты уже зарегистрировался на матч!");
		SetPVarInt(playerid, "napeinte", 1);
		paintt[2]++;
		format(string,sizeof(string), "Вы зарегистрировались на матч под номером: %d", paintt[2]);
		SendClientMessage(playerid,0x6495EDFF,string);
		return true;
	}
В public Fresh: Если нету паблика, то создайте: public Fresh()

PHP:
	if(paintt[0] > 0)
	{
		paintt[0]--;
		if(paintt[1] == 1 && paintt[0] == 120){ SendClientMessageToAll(0xFFAAFFAA,"Внимание! Начало Paint Balla через 2 минуты. Место проведения военный завод K.A.C.C"); }
		if(paintt[1] == 1 && paintt[0] == 1)
		{
			if(paintt[2] > 2)
			{
			    for(new i = 0; i < PaintList; i++)
			    {
			        strmid(PaintInfo[i][Name],"None", 0, strlen("None"), 32);
			        PaintInfo[i][Kills] = 0;
				    PaintInfo[i][Deaths] = 0;
				}
			    PaintList = 0;
				SendClientMessageToAll(0xFFAAFFAA,"Внимание! Матч по Paint Ball начался.");
				paintt[1] = 2; paintt[0] = 300;
				for(new idx=0, x=0; idx<cvector_size(players); idx++)
				{
					x = cvector_get(players, idx); if(GetPVarInt(x, "napeinte") == 1){ SetPVarInt(x, "napeinte", 2); SpawnPlayer(x); }
				}
			}
			else { SendClientMessageToAll(0xFFAAFFAA,"Матч по пейнтболу отменен из-за не достаточного количества участников"); paintt[1] = 0; paintt[0] = 0; }
		}
		if(paintt[1] == 2 && paintt[0] == 1)
		{
			SendClientMessageToAll(0xFFAAFFAA,"Матч по пейнтболу завершен (( Список победителей: /paintlist ))");
			paintt[1] = 0; paintt[0] = 0;
			for(new idx=0, x=0; idx<cvector_size(players); idx++)
			{
				x = cvector_get(players, idx);
			    new v = GetPVarInt(x,"paintkills");
				if(GetPVarInt(x, "napeinte") == 2)
				{
				    PaintInfo[PaintList][Kills] = GetPVarInt(x,"paintkills");
				    PaintInfo[PaintList][Deaths] = GetPVarInt(x,"paintdeaths");
				    strmid(PaintInfo[PaintList][Name],Name(x), 0, strlen(Name(x)), 32);
				    PaintList++;
					if(v > maxs) { maxs = v; id = x; }
				    DelGun(x);
					guncheat[x] = 0;
					SetPlayerPos(x, 2490.5623,2773.2583,10.7950);
					SetPlayerFacingAngle(x, 91.0485);
				}
			}
			if(id != -1) { PlayerInfo[id][pCash]+=50000; SendClientMessage(id, TEAM_AZTECAS_COLOR, "Поздравляю Вы заняли 1-ое место."); }
		}
	}
Опять же в public Fresh() добавьте:

PHP:
	if(paintt[1] == 0)
	{
		if(hour == 16 && minute == 10  || hour == 13 && minute == 10  || hour == 14 && minute == 10  || hour == 22 && minute == 10 || hour == 01 && minute == 30 || hour == 03 && minute == 15 )
		{
			SendClientMessageToAll(0xFFAAFFAA,"Внимание! Начало Paint Balla через 5 минут. Место проведения военный завод K.A.C.C");
			paintt[0] = 300;
			paintt[1] = 1;
			for(new i = 0; i < GetMaxPlayers(); i++){ DeletePVar(i, "napeinte"); }
		}
	}
В public OnGameModeInit():

PHP:
paint = CreatePickup(353, 23, 2495.7253,2773.2148,10.8190);
Теперь в OnPlayerCommand:

PHP:
YCMD:paintlist(playerid,params[],help)
{
	if(PlayerInfo[playerid][pLogin] == 0) return true;
	new strrr[700];
	for(new i = 0; i < PaintList; i++) format(YCMDstr, sizeof(YCMDstr), "%s\t\tУбийств: %d\t\tСмертей: %d\n",PaintInfo[i][Name],PaintInfo[i][Kills],PaintInfo[i][Deaths]), strcat(strrr, YCMDstr);
	if (strlen(strrr) > 1) ShowPlayerDialogEx(playerid, 11349, DIALOG_STYLE_MSGBOX, "Список игроков", strrr, "Закрыть", "");
	else SendClientMessage(playerid,-1,"Список пуст");
	return true;
}
Это для YCMD, далее для простых:

PHP:
	else if(strcmp(cmd, "/paintlist", true) == 0)
    {
	    if(IsPlayerConnected(playerid)) return true;
	    new strrr[700];
	    new str[256];
	    for(new i = 0; i < PaintList; i++) format(str, sizeof(str), "%s\t\tУбийств: %d\t\tСмертей: %d\n",PaintInfo[i][Namee],PaintInfo[i][Kills],PaintInfo[i][Deaths]), strcat(strrr, str);
	    if (strlen(strrr) > 1) SPD(playerid, 11349, DIALOG_STYLE_MSGBOX, "Список игроков", strrr, "Закрыть", "");
	    else SendClientMessage(playerid,-1,"Список пуст");
	    return true;
    }
В моде были объекты для завода, если кому-то нужны, то вот они:

PHP:
	//========================== Paint Ball ============================
	CreateDynamicObject(5170,2552.87597656,2766.25659180,13.66572475,0.00000000,0.00000000,0.00000000); //object(imnrmpy2_las2) (1)
	CreateDynamicObject(5170,2551.80981445,2744.61572266,13.66572475,0.00000000,0.00000000,0.00000000); //object(imnrmpy2_las2) (2)
	CreateDynamicObject(5170,2551.49316406,2794.50073242,13.66572475,0.00000000,0.00000000,0.00000000); //object(imnrmpy2_las2) (3)
	CreateDynamicObject(3043,2582.46679688,2807.37036133,11.27223206,0.00000000,0.00000000,0.00000000); //object(kmb_container_open) (1)
	CreateDynamicObject(3043,2613.61181641,2807.70214844,11.27223206,0.00000000,0.00000000,0.00000000); //object(kmb_container_open) (2)
	CreateDynamicObject(18260,2579.22485352,2842.20605469,11.39350510,0.00000000,0.00000000,0.00000000); //object(crates01) (1)
	CreateDynamicObject(1431,2614.69287109,2832.97265625,10.36792564,0.00000000,0.00000000,80.00000000); //object(dyn_box_pile) (1)
	CreateDynamicObject(3565,2598.67114258,2808.57958984,14.60387421,0.00000000,0.00000000,90.00000000); //object(lasdkrt1_la01) (1)
	CreateDynamicObject(3573,2601.66772461,2827.66430664,12.51200390,0.00000000,0.00000000,90.00000000); //object(lasdkrtgrp1) (1)
	CreateDynamicObject(3575,2577.66162109,2823.56713867,12.51200294,0.00000000,0.00000000,0.00000000); //object(lasdkrt05) (1)
	CreateDynamicObject(3576,2603.48193359,2831.21386719,16.70763397,0.00000000,0.00000000,178.00000000); //object(dockcrates2_la) (1)
	CreateDynamicObject(3800,2581.90380859,2829.22216797,12.51763725,0.00000000,0.00000000,0.00000000); //object(acbox4_sfs) (1)
	CreateDynamicObject(3800,2575.81030273,2830.46435547,12.51763725,0.00000000,0.00000000,0.00000000); //object(acbox4_sfs) (2)
	CreateDynamicObject(3800,2581.20703125,2824.35351562,15.21496201,0.00000000,0.00000000,0.00000000); //object(acbox4_sfs) (3)
	CreateDynamicObject(3800,2546.06030273,2831.63256836,13.25593376,0.00000000,0.00000000,0.00000000); //object(acbox4_sfs) (4)
	CreateDynamicObject(3800,2569.89770508,2829.42382812,9.82031250,0.00000000,0.00000000,0.00000000); //object(acbox4_sfs) (5)
	CreateDynamicObject(7040,2562.93725586,2821.91650391,13.24809265,0.00000000,0.00000000,0.00000000); //object(vgnplcehldbox01) (1)
	CreateDynamicObject(8885,2587.69555664,2808.10986328,13.24809265,0.00000000,0.00000000,90.00000000); //object(vgsefrght03) (1)
	CreateDynamicObject(2048,2583.01025391,2824.90185547,13.54934692,0.00000000,0.00000000,90.00000000); //object(cj_flag2) (1)
	CreateDynamicObject(2048,2567.04467773,2820.36108398,15.18964386,0.00000000,0.00000000,90.00000000); //object(cj_flag2) (2)
	CreateDynamicObject(2048,2550.66284180,2839.76000977,12.33377647,0.00000000,0.00000000,90.00000000); //object(cj_flag2) (3)
	CreateDynamicObject(2765,2539.72045898,2829.25317383,14.70967579,0.00000000,0.00000000,60.00000000); //object(cj_cb_list1) (1)
	CreateDynamicObject(2745,2595.37207031,2794.51879883,11.02893162,0.00000000,0.00000000,270.00000000); //object(cj_stat_3) (1)
	CreateDynamicObject(2745,2595.49951172,2786.80615234,11.02893162,0.00000000,0.00000000,270.00000000); //object(cj_stat_3) (2)
	CreateDynamicObject(4515,2896.34228516,476.26184082,-64.61634827,0.00000000,0.00000000,0.00000000); //object(cn2_roadblock02ld) (1)
	CreateDynamicObject(991,2539.09375000,2823.83276367,11.03555298,0.00000000,0.00000000,90.00000000); //object(bar_barriergate1) (1)
	CreateDynamicObject(991,2616.11010742,2830.99316406,11.03555298,0.00000000,0.00000000,90.00000000); //object(bar_barriergate1) (2)
	CreateDynamicObject(18200,1853.96386719,3129.90771484,-73.40789032,0.00000000,0.00000000,0.00000000); //object(w_town_11) (1)
	CreateDynamicObject(12839,2579.71850586,2819.52880859,16.23694229,0.00000000,0.00000000,88.50000000); //object(cos_sbanksteps02) (1)
	CreateDynamicObject(12958,2503.84667969,2820.36157227,12.91957855,0.00000000,0.00000000,180.00000000); //object(cos_sbanksteps01) (1)
	CreateDynamicObject(12985,2547.93603516,2811.11743164,17.09434509,0.00000000,0.00000000,0.00000000); //object(cos_sbanksteps05) (1)
	CreateDynamicObject(5822,2822.91430664,2972.92187500,-0.44067764,0.00000000,0.00000000,100.00000000); //object(lhroofst14) (1)
	CreateDynamicObject(12839,2567.61547852,2827.19677734,16.97333145,0.00000000,0.00000000,180.00000000); //object(cos_sbanksteps02) (2)
Вроде все расписал, если будут ошибки/недоработки, то пишите в тему, буду исправлять.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу