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 добавляем
Это для пикапов входа/выхода.
2. В public OnGameModeInit() вставляем наши пикапы
3. В паблик public OnPlayerPickUpPickup(playerid, pickupid) Вставляем
Вот и сделали мы Вход/выход.
4. В enum pInfo вставляем
5. В public OnPlayerConnect(playerid) вставляем
6. В паблик OnPlayerSave вставляем
7. В паблик OnPlayerLogin вставляем
8. Далее в паблик public OnPlayerDeath(playerid, killerid, reason) вставляем
9. Далее в public OnPlayerSpawn(playerid) вставляем
10. Теперь создаем систему выдачи ХП в палатах. Ко всем forward добавляем
11. И добавляем в конец мода public
12. Нам нужно чтобы паблик работал, для этого в public OnGameModeInit() добавляем
13. Так же в public OnGameModeInit() добавляем
14. И последнее в public OnPlayerCommandText(playerid, cmdtext[])
добавляем нашу команду
Автор: DmX
Лазил по форуму, нашел [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++; // Выход
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,
PHP:
PlayerInfo[playerid][pBolnica] = 0;
PHP:
ini_setInteger(iniFile, "Больница", PlayerInfo[playerid][pBolnica]);
PHP:
ini_getInteger(iniFile, "Больница", PlayerInfo[playerid][pBolnica]);
PHP:
new para1;
PlayerInfo[para1][pBolnica] = 1;
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;
}
PHP:
forward HP(playerid);
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;
}
PHP:
SetTimer("HP", 600, true);
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);
добавляем нашу команду
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
Последнее редактирование:
