[JailBreak] Simon Question v1.0

Одобрените от нас плъгини. Моля, докладвайте ако забележите бъг с някой от плъгините в този раздел.
Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

[JailBreak] Simon Question v1.0

Мнение от TheRedShoko » 28 Фев 2018, 22:58

Име на плъгина: Simon Question
Автор: TheRedShoko
Версия: 1.0

Описание: Плъгинът представлява добавка за JailBreak, която добавя команда /quest, чрез която Simon може да зададе въпрос на затворниците.
Модули нужни за правилното функциониране на плъгина:
  • regex

Cvars:
quest_holdtime - колко секунди имат затворниците, за да дадат правилен отговор (по подразбиране: "20")
Commands:
  • say /quest - отваря менюто, от където се адава въпрос, отговор и се стартира quest-a.
  • say /quest <question>? <answer> - стартира играта като за въпрос се използва <question>, а за отговор <answer>. За да работи правилно трябва задължително да има '?' в края на въпроса, преди отговора. (Пример: "say /quest 2 + 2 = ? 4")

Change log:
v1.0 - first release

Инсталация на плъгина:
1. Компилирате локално плъгина и инсталирате както всеки друг.
Настройки на плъгина:
- от 5 и 6 ред се настройва натива, който проверява дали играч е Simon. По подразбиране е настроено на is_user_simon (което се използва в edit-a на <VeCo> и OciXCrom на оригиналния jbextreme. Ако използвате по-различен натив - там е мястото, от където да го настроите.
За да компилирате ще ви трябва библиотеката WPMGPrintChatColor, която може да намерите тук

Тук може да видите всички сървъри, които използват плъгина.

jb_quest.sma
(4.93 KiB) Свалено 248 пъти
jb_quest.sma
(4.93 KiB) Свалено 248 пъти

Аватар
DoPe ;]]
Извън линия
Потребител
Потребител
Мнения: 402
Регистриран на: 27 Фев 2017, 22:10
Обратна връзка:

[JailBreak] Simon Question v1.0

Мнение от DoPe ;]] » 28 Фев 2018, 23:10

Браво, най-накрая да видя и един полезен плъгин за Jailbreak в този сайт... :clap:
Последно промяна от OciXCrom на 28 Фев 2018, 23:15, променено общо 1 път.
Причина: Обиден съм. :(
The Best Deathrun Server: 79.124.49.91:27019
The Best Respawn Server: 79.124.49.88:27021

Аватар
tom1k
Извън линия
Потребител
Потребител
Мнения: 202
Регистриран на: 29 Сеп 2020, 23:50
Местоположение: Добрич
Се отблагодари: 16 пъти
Получена благодарност: 8 пъти

[JailBreak] Simon Question v1.0

Мнение от tom1k » 04 Ное 2021, 13:28

Днес го тествах и примерно като се смени мапа, пускам quest и първия който отговори печели, обаче пускам пак и не отчита отговора. Също така не работи с думи, само с цифри. Това е леко преработена версия да не работи само ако си Симон но, не мисля че има проблем този код.

ЕДИТ: Или пък следния проблем:

Код за потвърждение: Избери целия код

[Quest]  Question: How much is 2 + 2
[Grenade] {B()$TErrr} Throw: Flash
[V.I.P] | [True Monster] --ROHAIB KHAN-- : eventd
abdul qadir killed RG KILLAR with knife
DEAD [Test Admin] | [IG - rABB1T] {B()$TErrr} : hi roul
[Grenade] RG KILLAR Throw: Grenade
[Test Admin] | [Trickster] ExPrtKZ : 4
DEAD [Owner] | [IG - Trickster] roulettkoKZ : 4
DEAD [Test Admin] | [IG - rABB1T] {B()$TErrr} : 4
[Quest]  AdidAaSs 🙂 has WON the game! The answer was 4! Prize: 195XP
[Ultra VIP] | [Headshot God] AdidAaSs 🙂 : 4

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <regex>
#define CC_COLORS_TYPE CC_COLORS_SHORT
#include <cromchat>
#include <crxranks>

#define ADMIN_FLAG ADMIN_RCON

#define VERSION "1.1"

#define TASKID_QUEST 123

new const g_szRegexPattern[] = "\/quest (.+?\?)\s*(.+)";
new Regex:g_QuestRegexPattern;

new g_szUserQuestion[33][128], g_szUserAnswer[33][32];
new g_szQuestion[128], g_szAnswer[32];

new gp_QuestHoldTime;
new g_iUnused, g_szUnused[2], g_iRewardMin, g_iRewardMax;

public plugin_init()
{
	register_plugin("[JB] Simon Question: CRXRanks", VERSION, "TheRedShoko @ AMXX-BG.info | Lethality");
	register_cvar("simon_quest", VERSION, FCVAR_SPONLY | FCVAR_SERVER | FCVAR_UNLOGGED);
	
	register_clcmd("say", "CommandSayTyped");

	register_clcmd("amx_TYPE_QUESTION", "QuestionTyped");
	register_clcmd("amx_TYPE_ANSWER", "AnswerTyped");

	gp_QuestHoldTime = register_cvar("quest_holdtime", "20");

	bind_pcvar_num(create_cvar("quiz_reward_min", "50"), g_iRewardMin);
	bind_pcvar_num(create_cvar("quiz_reward_max", "300"), g_iRewardMax);

	g_QuestRegexPattern = regex_compile(g_szRegexPattern, g_iUnused, g_szUnused, charsmax(g_szUnused));

	CC_SetPrefix("!g[!tQuest!g] ");
}

public QuestionTyped(id, lvl, cmdId)
{
	if (!has_access(id))
	{
		return PLUGIN_CONTINUE;
	}

	if (read_argc() < 2)
	{
		return PLUGIN_HANDLED;
	}

	read_args(g_szUserQuestion[id], charsmax(g_szUserQuestion[]));
	remove_quotes(g_szUserQuestion[id]);
	ShowQuestMenu(id);

	return PLUGIN_HANDLED;
}

public AnswerTyped(id)
{
	if (!has_access(id))
	{
		return PLUGIN_CONTINUE;
	}

	if (read_argc() < 2)
	{
		return PLUGIN_HANDLED;
	}

	read_args(g_szUserAnswer[id], charsmax(g_szUserAnswer[]));
	remove_quotes(g_szUserAnswer[id]);
	ShowQuestMenu(id);

	return PLUGIN_HANDLED;
}

public CommandSayTyped(id)
{
	new szSaid[156];
	read_args(szSaid, charsmax(szSaid));
	remove_quotes(szSaid);

	if (equali(szSaid, "/quest", 6))
	{
		if (!has_access(id))
		{
			return PLUGIN_HANDLED;
		}

		if (regex_match_c(szSaid, g_QuestRegexPattern, g_iUnused) > 0)
		{
			new szQuestion[128], szAnswer[32];
			regex_substr(g_QuestRegexPattern, 1, szQuestion, charsmax(szQuestion));
			regex_substr(g_QuestRegexPattern, 2, szAnswer, charsmax(szAnswer));

			trim(szQuestion);
			trim(szAnswer);

			StartQuest(id, szQuestion, szAnswer);
		}
		else
		{
			ShowQuestMenu(id);
		}

		return PLUGIN_HANDLED;
	}

	if (!task_exists(TASKID_QUEST))
	{
		return PLUGIN_CONTINUE;
	}

	if (equali(szSaid, g_szAnswer) && get_user_team(id) == 1 && is_user_alive(id))
	{
		EndQuest(TASKID_QUEST + id);
	}

	return PLUGIN_CONTINUE;
}

ShowQuestMenu(id)
{
	new iMenu = menu_create("Quest Game", "QuestGameHandler");

	new szQuestionItem[156], szAnswerItem[64];
	formatex(szQuestionItem, charsmax(szQuestionItem), "Question \y%s", g_szUserQuestion[id]);
	formatex(szAnswerItem, charsmax(szAnswerItem), "Answer \y%s", g_szUserAnswer[id]);

	menu_additem(iMenu, szQuestionItem);
	menu_additem(iMenu, szAnswerItem);
	menu_addblank(iMenu, 0);
	menu_additem(iMenu, "Start the quest");

	menu_display(id, iMenu);
}

public QuestGameHandler(id, iMenu, Item)
{
	if (Item == MENU_EXIT)
	{
		menu_destroy(iMenu);
		return;
	}

	switch (Item)
	{
		case 0: client_cmd(id, "messagemode amx_TYPE_QUESTION");
		case 1: client_cmd(id, "messagemode amx_TYPE_ANSWER");
		case 2:
		{
			StartQuest(id, g_szUserQuestion[id], g_szUserAnswer[id]);
			menu_destroy(iMenu);
			return;
		}
	}

	menu_destroy(iMenu);
	ShowQuestMenu(id);
}

StartQuest(id, szQuestion[], szAnswer[])
{
	if (strlen(szQuestion) == 0 || strlen(szAnswer) == 0)
	{
		CC_SendMatched(id, CC_COLOR_TEAM, "!tYou !nmust type !gvalid !nquestion and answer in order to start the game!");
		return;
	}

	copy(g_szQuestion, charsmax(g_szQuestion), szQuestion);
	copy(g_szAnswer, charsmax(g_szAnswer), szAnswer);

	copy(g_szUserAnswer[id], charsmax(g_szUserAnswer[]), "");
	copy(g_szUserQuestion[id], charsmax(g_szUserQuestion[]), "");

	CC_SendMatched(0, CC_COLOR_TEAM, "!t%n !nstarted the quest game! !tYou !nhave !g%d !nseconds to answer the question!", id, get_pcvar_num(gp_QuestHoldTime));
	CC_SendMatched(0, CC_COLOR_TEAM, "!nQuestion: !g%s", g_szQuestion);

	set_task(get_pcvar_float(gp_QuestHoldTime), "EndQuest", TASKID_QUEST);
}

public EndQuest(taskid)
{
	new id = taskid - TASKID_QUEST;
    
	static iReward;
	iReward = random_num(g_iRewardMin, g_iRewardMax)

	if (!is_user_connected(id))
	{
		CC_SendMatched(0, CC_COLOR_TEAM, "!tNone !nhas won the game. !gThe answer !nwas !t%s !gPrize !nwas: !t%d!gXP", g_szAnswer, iReward);
	}
	else
	{
		new szName[32];
		get_user_name(id, szName, charsmax(szName));
		crxranks_give_user_xp(id, iReward, .source = CRXRANKS_XPS_ADMIN);
		CC_SendMatched(0, CC_COLOR_TEAM, "!t%s !nhas !gWON !nthe game! !gThe answer !nis !t%s! !gPrize: !t%d!gXP", szName, g_szAnswer, iReward);
	}

	copy(g_szAnswer, charsmax(g_szAnswer), "");
	copy(g_szQuestion, charsmax(g_szQuestion), "");

	remove_task(TASKID_QUEST);
}
bool:has_access(id)
	return bool:(get_user_flags(id) & ADMIN_FLAG);
Върнете се в началото
iG-Blockmaker # HNS 100aa
45.144.155.175:27018


Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Одобрени плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 11 госта