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

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

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

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

Больница (LS)

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

DmX

Специалист
Добрый день уважаемые пользователи Pawno-Info.ru

Лазил по форуму, нашел [MAP]Интерьер больницы [Аналог Advance RP] и у меня возникла идея написать систему больницы. Взял здание в LS стандартную больницу. Интерьер взял от сюда: http://pawno-info.ru/threads/46408-...Advance-RP?highlight=%C1%EE%EB%FC%ED%E8%F6%E0

Скриншоты:



Описание системы больницы:

После смерти вы появляетесь в больнице, у вас два варианта 1) Стоять в палате и ждать пока прибавится +5 хп каждые 10 секунд Стоймость: 500$. 2) Прописать команду /extract и выйти досрочно Стоймость: 5000$. Заходите в палату одну из четырех и ждете. Когда ХП достигнет 95 вам высветится диалоговое окно где будет написана стоймость оплаты. Ахх да чуть не забыл, если вы пациент то у вас над головой будет 3d надпись что вы пациент.

Приступим к кодировке:

1. Для начала ко всем new добавляем

PHP:
new Bolnica[2];
new Text3D:label[MAX_PLAYERS];
Это для пикапов входа/выхода.

2. В public OnGameModeInit() вставляем наши пикапы
PHP:
	// Больница
	Create3DTextLabel("Здание 'Больница'",COLOR_WHITE,1172.9832,-1325.3738,15.3980,15,0);
	Bolnica[0] = CreatePickup(19132, 23, 1172.9832,-1325.3738,15.3980, 0); pickups++; // Вход
	Bolnica[1] = CreatePickup(19132, 23, 1192.2115,-1313.5050,1584.9719, 1); pickups++; // Выход
3. В паблик public OnPlayerPickUpPickup(playerid, pickupid) Вставляем
PHP:
	else if(pickupid == Bolnica[0]) // Больница
	{
	    SetPlayerFacingAngle(playerid, 180);
	    SetCameraBehindPlayer(playerid);
 		SetPlayerPos(playerid, 1192.2345,-1315.4447,1584.9719);
 		SetPlayerInterior(playerid, 0);
 		PlayerInfo[playerid][pInt] = 0;
 		SetPlayerVirtualWorld(playerid,1);
	}
	else if(pickupid == Bolnica[1]) // Больница
	{
		if(PlayerInfo[playerid][pBolnica] == 0)
		{
	    SetPlayerFacingAngle(playerid, -90);
	    SetCameraBehindPlayer(playerid);
 		SetPlayerPos(playerid, 1177.1229,-1325.0029,14.0551);
 		SetPlayerInterior(playerid, 0);
 		PlayerInfo[playerid][pInt] = 0;
 		SetPlayerVirtualWorld(playerid,0);
 		}
	}
Вот и сделали мы Вход/выход.

4. В enum pInfo вставляем
PHP:
pBolnica,
5. В public OnPlayerConnect(playerid) вставляем
PHP:
PlayerInfo[playerid][pBolnica] = 0;
6. В паблик OnPlayerSave вставляем
PHP:
ini_setInteger(iniFile, "Больница", PlayerInfo[playerid][pBolnica]);
7. В паблик OnPlayerLogin вставляем
PHP:
ini_getInteger(iniFile, "Больница", PlayerInfo[playerid][pBolnica]);
8. Далее в паблик public OnPlayerDeath(playerid, killerid, reason) вставляем
PHP:
    new para1;
	PlayerInfo[para1][pBolnica] = 1;
9. Далее в public OnPlayerSpawn(playerid) вставляем
PHP:
if(PlayerInfo[playerid][pBolnica] == 1)
		{
		    SetPlayerHealth(playerid, 15.0);
			SetPlayerFacingAngle(playerid, 90);
			SetPlayerInterior(playerid, 0);
			SetPlayerVirtualWorld(playerid, 1);
		    SetPlayerPos(playerid,1184.3405,-1320.2379,1584.9719);
		    new Bolnica1[] = "{ff0000}Добрый вечер, вы попали в городскую больницу штата.\nВам необходимо лечение. Войдите в палату и делайте\nнеобходимую процедуру.";
		    ShowPlayerDialog(playerid,3212,DIALOG_STYLE_MSGBOX,"Доктор",Bolnica1,"Хорошо","");
		    label[playerid] = Create3DTextLabel("Пациент",0xFF0000FF,0,0,0,10,0,2);
   			Attach3DTextLabelToPlayer(label[playerid], playerid, 0.0, 0.0, 0.4);
		    return 1;
		}
10. Теперь создаем систему выдачи ХП в палатах. Ко всем forward добавляем
PHP:
forward HP(playerid);
11. И добавляем в конец мода public
PHP:
public HP(playerid)
{
    new Float:health;
    GetPlayerHealth(playerid, health);
    if(health < 95)
    {
    if(PlayerToPoint(5.0,playerid,1183.5604,-1346.1671,1584.9778) || PlayerToPoint(5.0,playerid,1200.2266,-1346.2358,1584.9851) ||
	PlayerToPoint(5.0,playerid,1183.7390,-1353.6138,1584.9778) || PlayerToPoint(5.0,playerid,1200.1163,-1353.6847,1584.9778))
    {
    SendClientMessage(playerid, COLOR_GREY,"{ffffff}Доктор: Вы идете на поправку: {ff0000}+5 hp");
    SetPlayerHealth(playerid, health + 5.0);
    return 1;
    		}
    	}
		else
		{
			if(PlayerInfo[playerid][pBolnica] == 1)
			{
		    new Bolnica2[] = "{ff0000}Вы полностью выличились.\nВаш счет составил:{00cc00} 500$\n";
		    ShowPlayerDialog(playerid,3213,DIALOG_STYLE_MSGBOX,"Доктор",Bolnica2,"Спасибо","");
		    Delete3DTextLabel(label[playerid]);
			return 1;
		}
	}
   return 1;
}
12. Нам нужно чтобы паблик работал, для этого в public OnGameModeInit() добавляем
PHP:
	SetTimer("HP", 600, true);
13. Так же в public OnGameModeInit() добавляем
PHP:
Create3DTextLabel("Палата № 1",COLOR_WHITE,1188.7759,-1345.3319,1585.9778,7,1);
	Create3DTextLabel("{ff0000}__________",COLOR_WHITE,1188.7759,-1345.3319,1585.9778,7,1);
	Create3DTextLabel("Палата № 2",COLOR_WHITE,1194.8943,-1345.3201,1585.9778,7,1);
	Create3DTextLabel("{ff0000}__________",COLOR_WHITE,1194.8943,-1345.3201,1585.9778,7,1);
	Create3DTextLabel("Палата № 3",COLOR_WHITE,1188.7491,-1354.7456,1585.9778,7,1);
	Create3DTextLabel("{ff0000}__________",COLOR_WHITE,1188.7491,-1354.7456,1585.9778,7,1);
	Create3DTextLabel("Палата № 4",COLOR_WHITE,1194.9878,-1354.7144,1585.9778,7,1);
	Create3DTextLabel("{ff0000}__________",COLOR_WHITE,1194.9878,-1354.7144,1585.9778,7,1);
	Create3DTextLabel("Доктор",COLOR_WHITE,1191.9353,-1357.8268,1585.9778,7,1);
	Create3DTextLabel("{ff0000}______",COLOR_WHITE,1191.9353,-1357.8268,1585.9778,7,1);
	Create3DTextLabel("Команда: {00cc00}/extract\n{ffffff}Поможет вам выйти с больницы\nраньше срока\nСтоймость: {00cc00}5000$",COLOR_WHITE,1192.0161,-1362.4337,1584.9851,7,1);
14. И последнее в public OnPlayerCommandText(playerid, cmdtext[])

добавляем нашу команду

PHP:
  if(strcmp(cmd, "/extract", true) == 0)
{
if(IsPlayerConnected(playerid))
  {
    if (PlayerToPoint(playerid,1,1192.0161,-1362.4337,1584.9851)) return SendClientMessage(playerid, COLOR_GREY, "Вы не в кабинете доктора.");
	if(PlayerInfo[playerid][pBolnica] == 1)
	{
	    new para1;
		GivePlayerMoney(playerid, -5000);
		PlayerInfo[para1][pBolnica] = 0;
  		GivePlayerMoney(playerid, -500);
  		SetPlayerFacingAngle(playerid, -90);
    	GameTextForPlayer(playerid, "~r~-$5000", 1000, 1);
     	SetPlayerPos(playerid, 1178.6472,-1327.3912,14.1304);
   		SetPlayerVirtualWorld(playerid, 0);
   		SetPlayerHealth(playerid, 100.0);
		return 1;
	}
  }
return 1;
}

Автор: DmX
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу