- Регистрация
- 12 Янв 2019
- Сообщения
- 66
- Лучшие ответы
- 0
- Репутация
- 4
Приветствую всех в этом мануале
Отдаю Вам мой код, который я(haman sampa) делал ещё год назад.
Описание: Квестовый персонаж находиться возле Мэрии. Вы берете у неё задание и отправляетесь на чекпоинт, который находится в SF. Там вы устраиваетесь на работу и отправляетесь к Ангару, по методу SAMP RP вы носите коробки. Как принесли 15 коробок, появится новый чекпоинт 'Китайский рынок', там будет стоять только один продавец (по желанию, можете добавить несколько игроков.). Получаете от него подарок и отправляетесь обратно в ЛС.Отдаю Вам мой код, который я(haman sampa) делал ещё год назад.
Если у кого-то есть желание, изменить код и сделать его под себя, то я дою добро. Ну и критики бы я тоже хотел послушать
Добавляем к глобальным переменным.
PHP:
new C_Quest, C_QuestJ, C_QuestA[2], C_QuestR;
new cPick[2];
#define QUEST (0)
#define QUESTJOB (1)
#define QUESTRIN (2)
PHP:
public OnGameModeInit()
{
C_Quest = CreateActor(91,1480.6846,-1672.6960,14.0469,179.8011);
Create3DTextLabel
(
"Квестовый персонаж\nВзаимодействие 'Y'", -1,
1480.6846,-1672.6960,14.0469+0.5,6.0, 0, 0);
C_QuestJ = CreateActor(27,-2073.8516,268.5394,35.3792,180.1031);
Create3DTextLabel
(
"Квестовый персонаж\nВзаимодействие 'Y'", -1,
-2073.8516,268.5394,35.3792+0.5,6.0, 0, 0);
Create3DTextLabel
(
"Сколько ещё работать?!", -1,
-2126.0867,275.4578,35.4907+1.1,2.5, 0, 0);
C_QuestA[0] = CreateActor(27,-2126.0867,275.4578,35.4907,81.9883);
ApplyActorAnimation(C_QuestA[0], "PED","IDLE_TIRED",4.1,1,1,1,1,0);
Create3DTextLabel
(
"Скоро обед?", -1,
-2129.5149,266.7528,35.7113+1.1,2.5, 0, 0);
C_QuestA[1] = CreateActor(27,-2129.5149,266.7528,35.7113,173.9629);
ApplyActorAnimation(C_QuestA[1], "PED","FIGHTA_M",4.1,1,1,1,1,0);
C_QuestR = CreateActor(49, -2198.4031,636.2990,49.4429,12.3906);
Create3DTextLabel
(
"Квестовый персонаж\nВзаимодействие 'Y'", -1,
-2198.4031,636.2990,49.4429+0.5,6.0, 0, 0);
//=== Маппинг
new tmpobjid;
tmpobjid = CreateObject(3939, -2106.667480, 277.492645, 35.863990, 0.000000, 0.000000, 270.000000, 300.00);
SetObjectMaterial(tmpobjid, 0, 2567, "ab", "chipboard_256", 0x00000000);
SetObjectMaterial(tmpobjid, 1, 2567, "ab", "chipboard_256", 0x00000000);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
tmpobjid = CreateObject(2991, -2106.789062, 279.109191, 34.827877, 0.000000, 0.000000, 0.000000, 300.00);
tmpobjid = CreateObject(2991, -2106.792236, 279.125061, 36.068748, 0.000000, 0.000000, 0.000000, 300.00);
tmpobjid = CreateObject(2991, -2108.210693, 276.095947, 34.742610, 0.000000, 0.000000, 270.000000, 300.00);
tmpobjid = CreateObject(2991, -2105.528564, 275.744293, 34.723583, 0.000000, 0.000000, 76.700012, 300.00);
tmpobjid = CreateObject(2912, -2104.267822, 274.389739, 34.245677, 0.000000, 0.000000, 13.499999, 300.00);
tmpobjid = CreateObject(2912, -2106.727783, 277.546508, 34.197055, 0.000000, 0.000000, 8.199998, 300.00);
// = Пикап
cPick[0] = CreatePickup(1271, 23, -2107.12, 273.25, 35.28);
cPick[1] = CreatePickup(1580, 23, -2123.30, 248.86, 35.48);
return 1;
}
PHP:
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == cPick[0])// Квест - Помочь сделать церковь
{
if(GetPVarInt(playerid, "qQuest") != 1 && GetPVarInt(playerid, "QuestJ") != 1)
return SendClientMessage(playerid,0xFFDAB9B9, "Вам нельзя.");
if(GetPVarInt(playerid, "Gruz") == 15)
{
SendClientMessage(playerid, 0xFFDAb9b9,
"[Квест] Отправляйтесь на рынок");
DeletePVar(playerid, "qGruz");
DeletePVar(playerid, "Gruz");
DeletePVar(playerid, "QuestJ");
SetPlayerRaceCheckpoint(playerid, 2, -2198.4031,636.2990,49.4429,
0.0,0.0,0.0,10.0);
return SetPVarInt(playerid, "qQuest", 2);
}
if(GetPVarInt(playerid, "qGruz") == 1) return 1;
else
{
SetPVarInt(playerid, "qGruz", 1);
SetPlayerSpecialAction(playerid,SPECIAL_ACTION_CARRY);
SetPlayerAttachedObject(playerid, 1, 2912, 1, 0.257999, 0.528000,
-0.340000);
}
}
if(pickupid == cPick[1])
{
if(GetPVarInt(playerid, "qQuest") != 1 && GetPVarInt(playerid, "QuestJ") != 1)
return SendClientMessage(playerid,0xFFDAB9B9, "Вам нельзя.");
if(GetPVarInt(playerid, "qGruz") == 0) return 1;
else
{
SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
SetPVarInt(playerid, "Gruz", GetPVarInt(playerid, "Gruz")+1);
static const fmt[] = "%d/15 ЇeҐkoў";
new str[sizeof(fmt)+4];
format(str,sizeof(str), fmt, GetPVarInt(playerid, "Gruz"));
GameTextForPlayer(playerid, str, 1000, 1);
SetPVarInt(playerid, "qGruz", 0);
RemovePlayerAttachedObject(playerid, 1);
}
}
return 1;
}
PHP:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_YES)
{
if(IsPlayerInRangeOfActor(playerid, C_Quest))// Команда! Ниже.
{
if(GetPVarInt(playerid, "qQuest") == 3)
{
SetPVarInt(playerid, "qQuest", 4);
RemovePlayerAttachedObject(playerid, 1);
return SendClientMessage(playerid, 0xffdab9b9, "Спасибо за помощь!");
}
if(GetPVarInt(playerid, "qQuest") != 1)
{
ShowPlayerDialog
(
playerid, QUEST, DIALOG_STYLE_MSGBOX, "{66CDAA}Квест",
"{FFFFFF}Приветствую, я 'Алиса', квестовый персонаж на данном сервере\n\
Мне нужна чья то помощь, для помощи детям в Рождество\n\n\
Если согласен - нажми 'Да', если не желаешь - нажми 'Нет'", "Да","Нет"
);
}
else SendClientMessage(playerid, 0xFFDAB9B9, "Вы уже начали квест!");
}
else if(IsPlayerInRangeOfActor(playerid, C_QuestJ))// Команда! Ниже.
{
if(GetPVarInt(playerid, "qQuest") != 1) return
SendClientMessage(playerid, 0xFFDAB9B9, "Вы кто?");
else
{
if(GetPVarInt(playerid, "QuestJ") == 1) return
SendClientMessage(playerid, 0xFFDAB9B9, "Закончите работу.");
ShowPlayerDialog
(
playerid, QUESTJOB, DIALOG_STYLE_MSGBOX, "{66CDAA}Квест",
"{FFFFFF}Здравствуйте, я 'Гена', квестовый персонаж на сервереn\n\
Мне звонила 'Алиса', она рассказала про Вас\n\
Отправляйтесь помогать моим рабочим, они уже второй день работают",
"Хорошо",""
);
}
}
else if(IsPlayerInRangeOfActor(playerid, C_QuestR)) // Команда! Ниже.
{
if(GetPVarInt(playerid, "qQuest") != 2) return
SendClientMessage(playerid, 0xFFDAB9B9, "Вы кто?");
else
{
ShowPlayerDialog(playerid, QUESTRIN, DIALOG_STYLE_MSGBOX,
"{66cdaa}Кеест","{FFFFFF}Здравствуйте, я 'Артём', квестовый\
персонаж на сервере\nМне звонил 'Гена', и рассказал про Вас\
и вашу просьбу\nЯ передам Вам подарок для детей. Спасибо Вам\
за помощь!", "Хорошо", "");
}
}
}
return 1;
}
PHP:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == QUEST)
{
if(response)
{
SetPVarInt(playerid, "qQuest", 1);
SendClientMessage
(
playerid, 0xFFE4B5B5, "[Квест] {FFFFFF}Отправляйтесь на стройку"
);
return SetPlayerRaceCheckpoint(playerid, 2, -2073.8516,268.5394,35.3792,
0.0,0.0,0.0,10.0); // Гоночный чекпоинт
}
}
if(dialogid == QUESTJOB)
{
if(response)
{
DisablePlayerRaceCheckpoint(playerid);
SendClientMessage(playerid, 0xffe4b5b5,
"[Квест] {FFFFFF}Отправляйтесь к Ангару с коробками");
return SetPVarInt(playerid, "QuestJ", 1);
}
}
if(dialogid == QUESTRIN)
{
if(response)
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 2, 1480.6846,-1672.6960,14.0469,
0.0,0.0,0.0,10.0);
SetPlayerAttachedObject(playerid, 1, 19056, 1, 0.173000, -0.272999,
0.0,-0.3,89.799934,0.0,0.421000,0.313999,0.479999); // объект на игрока
SendClientMessage(playerid, 0xFFDAB9B9, "[Квест] {FFFFFF}Отправляйтесь\
к Алисе");
return SetPVarInt(playerid, "qQuest", 3);
}
}
return 1;
}
PHP:
stock IsPlayerInRangeOfActor(playerid, actorid, Float:radius = 3.0)
{
new Float:x,
Float:y,
Float:z;
if (GetActorPos(actorid, x, y, z)) // Узнаётся координаты актёра
{
ApplyActorAnimation(actorid, "PED","IDLE_chat",4.1,0,1,1,1,1); // анимация разговора
return IsPlayerInRangeOfPoint(playerid, radius, x, y, z); // проверка местонахождение игрока.
}
return 0;
}
Фотографии:
Спасибо всем кто просмотрел данную тему.
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Спасибо всем кто просмотрел данную тему.
Последнее редактирование: