Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Квесты - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

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

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

[ Scr ][ All ]
Квесты
Оценка: -----

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

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Привет, сейчас я покажу систему квестов(неполная)
Автор: Я
По вашему может быть быдло-кодом)

Нам будет нужен инклуд dc_cmd ну или аналог.

Начнем!
К инклудам:
#include <a_samp>
#include <dc_cmd>
#include <a_mysql> // для тех кто хочет сделать получение приза через базу данных.

К переменным (new):
new dbHandle;
new MySQL:dbHandle;

К дефайнам
#define SCM SendClientMessage
#define SPD ShowPlayerDialog
#define COLOR_RED (0xF04245FF)
#define COLOR_GREEN (0x63BD4EFF)
#define COLOR_GREY (0xAFAFAFAA)
#define T_ACCOUNTS "accounts"

Теперь добавляем саму команду /quest
Ко всем командам добавляем.
CMD:quest(playerid)
{
	if(!gPlayerLogged[playerid]) return SCM(playerid, COLOR_GREY, "Вы не авторизованы"); // Проверка на авторизацию игрока у каждого своя.
	SPD(playerid, 1525, DIALOG_STYLE_LIST, "Квесты", "Получить паспорт\n", "Принять", "Закрыть"); // 1525 id диалога меняем на ваш НЕЗАНЯТЫЙ
	return 1;
}

Далее нам надо создать сам диалог переходим в public OnDialogReponse и вставляем туда:
case 1525:
		{
		    if(!response) return 1;
			switch(listitem)
			{
				case 0:
				{
				    SPD(playerid, 1526, DIALOG_STYLE_MSGBOX, "Получить паспорт", "Получение паспорта проходит в мэрии {00FF00}Лос-Сантоса\n\n{FFC100}Награда: 50 кредитов.", "Принять", "Закрыть"); // 1526 другой id диалога тоже меняем на свой НЕЗАНЯТЫЙ или оставляем тот же самый
				}
			}
		}

Следующим шагом мы сделаем чтобы при нажатии кнопки принять принимался квест а при нажатии закрыть открывалось меню с квестами
case 1526:
		{
		    if(response)
		    {
				if(GetPVarInt(playerid, "quest", 1))
				{
					SCM(playerid, COLOR_RED, "Вы уже выполняете квест!");
					return 1;
				}
		        SCM(playerid, COLOR_GREEN, "Вы взялись за выполнение квеста!");
		        SetPVarInt(playerid, "quest", 1);
		    }
		    else
		    {
		        return cmd_quest(playerid);
		    }
		}

Ну и теперь получение награды так как, я пользуюсь MySQL у меня получение будет через запрос. Нажимаем сочетание клавиш CTRL+F и ищем что то похожее на "вы получили паспорт" и вставляем ниже проверку:
if(GetPVarInt(playerid, "quest", 1))
			{
			        new string[128];
				SetPVarInt(playerid, "quest", 0);
				SCM(playerid, COLOR_GREEN, "Вы успешно выполнили квест! И получили свою награду!");
				pInfo[playerid][pCredits] += 50; // Получаем кредиты
				format(string, sizeof(string), "UPDATE "T_ACCOUNTS" SET credits = %d WHERE id = %d", pInfo[playerid][pTotalCredits], pInfo[playerid][pID]);
				mysql_tquery(dbHandle, string, "", "");
			}

0

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

  • Новичок
  • Вставить ник
  • Раскрыть информацию
CMD:quest(playerid)
{
        if(!gPlayerLogged[playerid]) return SCM(playerid, COLOR_GREY, "Вы не авторизованы"); // Проверка на авторизацию игрока у каждого своя.
        SPD(playerid, 1525, DIALOG_STYLE_LIST, "Квесты", "Получить паспорт\n", "Принять", "Закрыть"); // 1525 id диалога меняем на ваш НЕЗАНЯТЫЙ
        return 1;
}

Зачем вообще делать проверки?
-1

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

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
CMD:quest(playerid)
{
if(!gPlayerLogged[playerid]) return SCM(playerid, COLOR_GREY, "Вы не авторизованы"); // Проверка на авторизацию игрока у каждого своя.
SPD(playerid, 1525, DIALOG_STYLE_LIST, "Квесты", "Получить паспорт\n", "Принять", "Закрыть"); // 1525 id диалога меняем на ваш НЕЗАНЯТЫЙ
return 1;
}

Далее нам надо создать сам диалог переходим в public OnDialogReponse и вставляем туда:
case 1525:
{
if(!response) return 1;
switch(listitem)
{
case 0:
{
SPD(playerid, 1526, DIALOG_STYLE_MSGBOX, "Получить паспорт", "Получение паспорта проходит в мэрии {00FF00}Лос-Сантоса\n\n{FFC100}Награда: 50 кредитов.", "Принять", "Закрыть"); // 1526 другой id диалога тоже меняем на свой НЕЗАНЯТЫЙ или оставляем тот же самый
}
}
}

Следующим шагом мы сделаем чтобы при нажатии кнопки принять принимался квест а при нажатии закрыть открывалось меню с квестами
case 1526:
{
if(response)
{
if(GetPVarInt(playerid, "quest", 1))
{
SCM(playerid, COLOR_RED, "Вы уже выполняете квест!");
return 1;
}
SCM(playerid, COLOR_GREEN, "Вы взялись за выполнение квеста!");
SetPVarInt(playerid, "quest", 1);
}
else
{
return cmd_quest(playerid);
}
}

Ну и теперь получение награды так как, я пользуюсь MySQL у меня получение будет через запрос. Нажимаем сочетание клавиш CTRL+F и ищем что то похожее на "вы получили паспорт" и вставляем ниже проверку:
if(GetPVarInt(playerid, "quest", 1))
{
new string[128];
SetPVarInt(playerid, "quest", 0);
SCM(playerid, COLOR_GREEN, "Вы успешно выполнили квест! И получили свою награду!");
pInfo[playerid][pCredits] += 50; // Получаем кредиты
format(string, sizeof(string), "UPDATE "T_ACCOUNTS" SET credits = %d WHERE id = %d", pInfo[playerid][pTotalCredits], pInfo[playerid][pID]);
mysql_tquery(dbHandle, string, "", "");


Не понимаю куда это вставлять, нет такого у меня нигде...
0

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


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

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


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