Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Система ПВО(Stinger 92) - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ All ]
Система ПВО(Stinger 92)
Оценка: -----

#1
Пользователь офлайн   Tunes 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Для того что бы этот код стал играбельным , вам понадобиться небольшая его модификация и заточка под свой мод , я дал крепкую основу
ну поехали , за ранее просьба , господа Скриптеры не нужно тупых вопросов , зачем лишнии масивы , считайте мне так нравиться !! , ну вот и теперь мы можем
двинуться вперед. чуть не забыл система работает на SA-MP 0.3 d
В самое начало мода кидаем
new lox;
new rocket;
new rocket2;
new rocket3;
new rocket4;
new ascan;
new bool:onefire;
new bool:autoscanik = 0;
new bool:autoscani = 1;
new bool:scancomp[MAX_PLAYERS];
new bool:sputcomp[MAX_PLAYERS];
new bool:yescam[MAX_PLAYERS];
new Float:llx;
new Float:lly;
new Float:llz;

далее добавляем массивы , для этого ишем допустим вот такую строчку
new HouseInfo[MAX_HOUSE][hInfo] = {

и перед ней ставим следующее
new massiveng[3][1] = {
{15},
{1720},
{23}
};
new massivengtwo[3][1] = {
{237},
{1698},
{23}
};
new massivengtree[3][1] = {
{354},
{2030},
{23}
};
new massivengfour[3][1] = {
{188},
{2083},
{23}
};


new Float:massivko[3][1] = {
{0},
{0},
{0}
};
new randommassive[8][1] = {
{0},
{1},
{2},
{3},
{0},
{5},
{2},
{0}
};

new Float:cordmassive[6][1] ={

{0},//max_x
{0},//min_z
{0},//max_z
{0},//min_x
{0},//max_y
{0}//min_y
};

Далее в

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{

if(IsKeyJustDown(KEY_YES,newkeys,oldkeys))
	{
	if(IsPlayerConnected(playerid))
	    {

			if(PlayerInfo[playerid][pMember] == 3)
	        {
	        if(	IsPlayerInRangeOfPoint(playerid,8.0,212.4152,1822.7180,6.4141))
	        {
	       

	lox++;
 sputcomp[playerid] = 1;//??????? ??????? , ?.? ????? ???????????? /rassto
SetPlayerCameraLookAt(playerid, 199.4840,1916.9125,10.2145);
TogglePlayerControllableEx(playerid, 0);
yescam[playerid]= 0;

				GetPlayerPos(playerid, Unspec[playerid][Coords][0],Unspec[playerid][
Coords][1],Unspec[playerid][Coords][2]);
				SendClientMessage(playerid,COLOR_GREEN,"Вы находитесь в режиме спутника , теперь просто используйте команду  /rasstod что бы открыть меню опций");
				SendClientMessage(playerid,COLOR_GREEN,"Так же вы можете менять зум линзы спутника , и тем самым приблежать изображение используйте Y и N");

   switch(lox)
   {
		case 1:
		{
		SetPlayerCameraPos(playerid, 191.6631,1922.4348,273.5554);
		PlaySoundForPlayer(playerid, 1056);
		}
		case 2:
		{
		SetPlayerCameraPos(playerid, 191.6631,1922.4348,260.5554);
		PlaySoundForPlayer(playerid, 1056);
		}
		case 3:
		{
		SetPlayerCameraPos(playerid, 191.6631,1922.4348,240.5554);
		PlaySoundForPlayer(playerid, 1056);
		}
		case 4:
        {
         SetPlayerCameraPos(playerid, 191.6631,1922.4348,220.5554);
         PlaySoundForPlayer(playerid, 1056);
         }
         case 5:
         {
         SetPlayerCameraPos(playerid, 191.6631,1922.4348,200.5554);
         PlaySoundForPlayer(playerid, 1056);
         }
         case 6:
         {
         SetPlayerCameraPos(playerid, 191.6631,1922.4348,180.5554);
         PlaySoundForPlayer(playerid, 1056);
        
         }
		 case 7:
		 {
		 SetPlayerCameraPos(playerid, 191.6631,1922.4348,160.5554);
		 PlaySoundForPlayer(playerid, 1056);

		  
		  }
	case 8:
	{
		 SetPlayerCameraPos(playerid, 191.6631,1922.4348,273.5554);
		 PlaySoundForPlayer(playerid, 1056);
		 lox =0;
	}
		 

  }
  }
  }
  }

        //return 1;
    }
    if(IsKeyJustDown(KEY_NO,newkeys,oldkeys))
    {
    if(IsPlayerConnected(playerid))
	    {

			if(PlayerInfo[playerid][pMember] == 3)
	        {
	        
	        if(yescam[playerid]== 1 )
	        {
	        return 1;
	        }
  


    SetCameraBehindPlayer(playerid);
    TogglePlayerControllableEx(playerid, 1);
    scancomp[playerid] =0;
    SetPlayerPos(playerid, Unspec[playerid][Coords][0],Unspec[playerid][
Coords][1],Unspec[playerid][Coords][2]);
    yescam[playerid]=0;
    }
    }
    }

далее создадим сами команды
для этого идем в
public OnPlayerCommandText(playerid, cmdtext[])

if(strcmp(cmd, "/rasstod", true) == 0)//???????? ???? ????? ?????? ???????? , ??? ???????? ?? , ? ?????? ???? ? ????? ????
	{
	if(IsPlayerConnected(playerid))
	    {
	    if(PlayerInfo[playerid][pMember] == 3)
	        {
		        if(PlayerInfo[playerid][pJailed] > 0)
				{
				    SendClientMessage(playerid, COLOR_GREY, "Вы находитесь под арестом");
				    return 1;
				}
	ShowPlayerDialog(playerid, 1112, DIALOG_STYLE_LIST, "{907347} Меню ПВО", "{d68f11}Auto Scan\n{840510}Easy Scan\n{d68f11}Точная стрельба On/off\n{d68f11}Атака по ID", "Использовать", "Выйти");
}
}

return 1;
}

Далее идем в

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{

else if(dialogid == 1112)
	{	//ShowPlayerDialog(playerid,29,DIALOG_STYLE_LIST,"*** HELP ***",listitems,"OK","Cancel");
		if(response)
		{
			//gShowDialog[playerid] = 0;
			if(listitem == 0)
			{
if (autoscani == 1)
  {
  
  ascan = SetTimer("autoscan",3000,1);
  GameTextForPlayer(playerid, "~g~Auto Scan~n~~w~On", 3500, 1);
  PlaySoundForPlayer(playerid, 1145);
  	SendClientMessage(playerid, COLOR_LIGHTBLUE, "Система активна");
  autoscani = 0;
  }
  else if (autoscani == 0)
  {
  autoscani = 1;
   GameTextForPlayer(playerid, "~p~Auto Scan~n~~w~Off", 3500, 1);
   PlaySoundForPlayer(playerid, 1145);
   SendClientMessage(playerid, COLOR_RED, "Система деактивирована ");
   KillTimer(ascan);
   }
   
  


			}
			else if(listitem == 1)
			{


//??? ??????? ????
	if(IsPlayerConnected(playerid))
	    {

			if(PlayerInfo[playerid][pLeader] == 3)
	        {

			for(new i = 0; i < GetMaxPlayers(); i++)
	{
	if(IsPlayerInAnyVehicle(i) && GetPlayerState(i)==PLAYER_STATE_DRIVER)
				{

new Float:ttx; new Float:tty;
new Float:ttz;
new ckoro;
new name[MAX_PLAYER_NAME];
GetPlayerPos(i,ttx,tty,ttz);
cordmassive[0][0] = -19.2888;//Max_x
cordmassive[3][0] = 394.4355;//min_x
cordmassive[4][0] = 1715.4519;//Max_y
cordmassive[5][0] = 2112.4717;//Min_y
cordmassive[2][0] = 30.1875;//max_z
cordmassive[1][0] = 144.5304;//min_z
if((ttx > cordmassive[0][0] && ttx < cordmassive[3][0]) && (tty > cordmassive[4][0] && tty <cordmassive[5][0]) && (ttz > cordmassive[2][0] && ttz < cordmassive[1][0]))
{
new stringa[256];
new Float:xdist;	new Float:ydist;	new Float:zdist;
		GetVehicleVelocity(GetPlayerVehicleID(i), xdist, ydist, zdist);
		ckoro = floatround( floatsqroot( floatpower(xdist*100.0,2)+floatpower(ydist*100.0,2)+floatpower(zdist*100.0,2) ) );
 GetPlayerName(i, name, sizeof(name));
    format(stringa, sizeof(stringa), " Система: над зоной замечено летаюшее средство с пилотом :_ %s , И движеться со скоростью %d  км/ч ",name,ckoro);
    SendClientMessageToAll(0xFFFF00AA, stringa);


    scancomp[playerid] =1;
}
}
}
}
}
return 1;
}

else if(listitem == 2)
			{
			  if (autoscanik == 0)
  {
  GameTextForPlayer(playerid, "~g~One Fire~n~~w~On", 3500, 1);
  PlaySoundForPlayer(playerid, 1145);
  	SendClientMessage(playerid, COLOR_LIGHTBLUE, "Система Активна");
  	onefire = 1;
  autoscanik = 1;
  }
  else if (autoscanik == 1)
  {
  autoscanik = 0;
   GameTextForPlayer(playerid, "~p~One Fire~n~~w~Off", 3500, 1);
   PlaySoundForPlayer(playerid, 1145);
   SendClientMessage(playerid, COLOR_RED, "Система деактивирована ");
   onefire = 0;
   
   }

			}
else if(listitem == 3)
			{
   ShowPlayerDialog(playerid,1116,DIALOG_STYLE_INPUT,"Огонь по ID","Введите ID игрока [playerid] \nили часть его имени [PartOfName]","OK","Cancel");
   }


		return 1;
	}
}
else if(dialogid == 1116)
	{

	if(response)
		{   //attack on id
	if(IsPlayerConnected(playerid))
	    {

			giveplayerid = ReturnUser(inputtext);
			if(!strlen(inputtext))
			{
				SendClientMessage(playerid, COLOR_GRAYWHITE, "USAGE:  [playerid/PartOfName]");
				return 1;
			}
			if(PlayerInfo[playerid][pMember] == 3)
	        {
		        if(PlayerInfo[playerid][pJailed] > 0)
				{
				    SendClientMessage(playerid, COLOR_GREY, "Вы заключенный");
				    return 1;
				}
				if (scancomp[playerid] == 0)
	        {
        	SendClientMessage(playerid,COLOR_GREEN,"Для начала отсканируйте местность");
        	return 1;
	        }
			giveplayerid = ReturnUser(inputtext);
new Float:ttx; new Float:tty;
new Float:ttz; new string[256];
GetPlayerPos(giveplayerid,ttx,tty,ttz);
cordmassive[0][0] = -19.2888;//Max_x
cordmassive[3][0] = 394.4355;//min_x
cordmassive[4][0] = 1715.4519;//Max_y
cordmassive[5][0] = 2112.4717;//Min_y
cordmassive[2][0] = 30.1875;//max_z
cordmassive[1][0] = 144.5304;//min_z
if((ttx > cordmassive[0][0] && ttx < cordmassive[3][0]) && (tty > cordmassive[4][0] && tty <cordmassive[5][0]) && (ttz > cordmassive[2][0] && ttz < cordmassive[1][0]))
{
Rocket(giveplayerid);
SendClientMessage(giveplayerid,COLOR_RED,"Выстрел произведен");
}
}
}
return 1;
}



		}

И в самый конец мода следущее::
stock Rocket(giveplayerid)
{

new dist;//rocket1
new dist2;//rocket2
new dist3;//rocket3
new dist4;//rocket4
GetPlayerPos(giveplayerid,llx,lly,llz);
massivko[0][0] = llx;
massivko[1][0] = lly;
massivko[2][0] = llz;

dist = GetDistanceToPoint(giveplayerid,massiveng[0][0],massiveng[1]
[0],massiveng[2][0]);
dist2 = GetDistanceToPoint(giveplayerid,massivengtwo[0][0],massivengtwo[
1][0],massivengtwo[2][0]);
dist3 = GetDistanceToPoint(giveplayerid,massivengtree[0][0],massivengtree[
1][0],massivengtree[2][0]);
dist4 = GetDistanceToPoint(giveplayerid,massivengfour[0][0],massivengfour[
1][0],massivengfour[2][0]);
dist = dist*9;
dist2 = dist2*9;
dist3 = dist3*9;
dist4 = dist4*9;
//конец вычислительного блока 
if(onefire == 1)
{
if (dist < dist2 && dist < dist3 && dist < dist4 )
{
rocket = CreateObject(354,15,1720,23,0,0,0,300);
MoveObject(rocket,massivko[0][0],massivko[1][0],massivko[
2][0],100,-1000,-1000,-1000);
SetTimer("vzriv",dist,0);
}
else if ( dist2 < dist && dist2 < dist3 && dist2 < dist4)
{
rocket2 = CreateObject(354,237,1698,23,0,0,0,300);
MoveObject(rocket2,massivko[0][0],massivko[1][0],
massivko[2][0],100,-1000,-1000,-1000);
SetTimer("vzriv2",dist2,0);
}
else if ( dist3 <  dist  && dist3 < dist2 && dist3 < dist4)
{
rocket3 = CreateObject(354,354,2030,23,0,0,0,300);
MoveObject(rocket3,massivko[0][0],massivko[1][0],
massivko[2][0],100,-1000,-1000,-1000);
SetTimer("vzriv3",dist3,0);
}
else if ( dist4 < dist && dist4 < dist2 && dist4 < dist3)
{
rocket4 = CreateObject(354,188,2083,23,0,0,0,300);
MoveObject(rocket4,massivko[0][0],massivko[1][0],
massivko[2][0],100,-1000,-1000,-1000);
SetTimer("vzriv4",dist4,0);
}
PlaySoundForPlayer(giveplayerid, 1057);
}

if (onefire == 0)
{
rocket = CreateObject(354,15,1720,23,0,0,0,300);
MoveObject(rocket,massivko[0][0],massivko[1][0],massivko[
2][0],100,-1000,-1000,-1000);
SetTimer("vzriv",dist,0);
rocket2 = CreateObject(354,237,1698,23,0,0,0,300);
MoveObject(rocket2,massivko[0][0],massivko[1][0],
massivko[2][0],100,-1000,-1000,-1000);
SetTimer("vzriv2",dist2,0);
rocket3 = CreateObject(354,354,2030,23,0,0,0,300);
MoveObject(rocket3,massivko[0][0],massivko[1][0],
massivko[2][0],100,-1000,-1000,-1000);
SetTimer("vzriv3",dist3,0);
rocket4 = CreateObject(354,188,2083,23,0,0,0,300);
MoveObject(rocket4,massivko[0][0],massivko[1][0],
massivko[2][0],100,-1000,-1000,-1000);
SetTimer("vzriv4",dist4,0);
}
}


public vzriv()
{

new rand;
rand = random(sizeof(randommassive));
CreateExplosion(llx+randommassive[rand][0],lly,llz,2,50);


DestroyObject(rocket);

}
public vzriv2()
{

new rand;
rand = random(sizeof(randommassive));
CreateExplosion(llx+randommassive[rand][0],lly,llz,2,50);


DestroyObject(rocket2);

}
public vzriv3()
{

new rand;
rand = random(sizeof(randommassive));
CreateExplosion(llx+randommassive[rand][0],lly,llz,2,50);


DestroyObject(rocket3);

}
public vzriv4()
{

new rand;
rand = random(sizeof(randommassive));
CreateExplosion(llx+randommassive[rand][0],lly,llz,2,50);


DestroyObject(rocket4);

}
public autoscan()
{

			for(new i = 0; i < GetMaxPlayers(); i++)
	{
	if(IsPlayerInAnyVehicle(i) && GetPlayerState(i)==PLAYER_STATE_DRIVER)
				{

new Float:ttxt; new Float:ttyt;
new Float:ttzt;
new ckoros;
new nameg[MAX_PLAYER_NAME];
GetPlayerPos(i,ttxt,ttyt,ttzt);
cordmassive[0][0] = -19.2888;//Max_x
cordmassive[3][0] = 394.4355;//min_x
cordmassive[4][0] = 1715.4519;//Max_y
cordmassive[5][0] = 2112.4717;//Min_y
cordmassive[2][0] = 30.1875;//max_z
cordmassive[1][0] = 144.5304;//min_z
if((ttxt > cordmassive[0][0] && ttxt < cordmassive[3][0]) && (ttyt > cordmassive[4][0] && ttyt <cordmassive[5][0]) && (ttzt > cordmassive[2][0] && ttzt < cordmassive[1][0]))
{
new stringal[256];
new Float:xdist;	new Float:ydist;	new Float:zdist;
		GetVehicleVelocity(GetPlayerVehicleID(i), xdist, ydist, zdist);
		ckoros = floatround( floatsqroot( floatpower(xdist*100.0,2)+floatpower(ydist*100.0,2)+floatpower(zdist*100.0,2) ) );
 GetPlayerName(i, nameg, sizeof(nameg));
    format(stringal, sizeof(stringal), "Система: над зоной замечено летаюшее средство с пилотом :_ %s , И движеться со скоростью %d  км/ч ",nameg,ckoros);
    SendClientMessageToAll(0xFFFF00AA, stringal);
}
}
}


return 1;
}






На этом все.Систему написал Doctor_Johansen при публикации данного материала обязательно указывать автора.

Вот ссылка на видео, если кто не понял о чем оно.
YouTube
0

#2
Пользователь офлайн   St1muL 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Хм, ничего так, сама идея понравилась.
0

#3
Пользователь офлайн   CLOXEDY 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
А зачем вписать данную систему в мод? если можно просто скачать Filescript и не тратить много времени

Сообщение отредактировал CLOXEDY: 23 Июнь 2019 - 16:23

0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика