Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Przerobienie pluginu /quiz


  • Zamknięty Temat jest zamknięty
1 odpowiedź w tym temacie

#1 AnoX

    Nowy

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:2
  • Imię:Piotr
Offline

Napisano 01.08.2014 20:44

Siema
Może ktoś przerobić ten plugin tak, aby była możliwość korzystania z quiz'u co 5 minut, a za poprawną odpowiedź dodawałby tylko level, exp, fragi i kasę?


 

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta_util>
#include <ColorChat>

//#define CODMOD

#if defined CODMOD
#include <codmod>
#endif


new Array:g_aQuizQuest,
	Array:g_aQuizGoodAns,
	Array:g_aQuizBadAns1,
	Array:g_aQuizBadAns2,
	Array:g_aQuizBadAns3,
	Array:g_aQuizAnsNum
;

new g_iUserQuizMode[33],
	g_iUserQuizID[33]
;

new Float:g_fUserNextQuiz[33] = 0.0;

new szWeaponName[][] =
{
	"weapon_glock18", "weapon_usp", "weapon_p228", "weapon_deagle", "weapon_fiveseven", 
	"weapon_elite", "weapon_m3", "weapon_xm1014", "weapon_mp5navy", "weapon_tmp", 
	"weapon_mac10", "weapon_p90", "weapon_ump45", "weapon_ak47", "weapon_awp",
	"weapon_m4a1", "weapon_famas", "weapon_galil", "weapon_g3sg1", "weapon_m249",
	"weapon_sg552", "weapon_sg550", "weapon_aug", "weapon_scout", "weapon_hegrenade",
	"weapon_smokegrenade", "weapon_flashbang"
	
};

new g_cvarMoneyForHint, g_cvarTimeToNextQuiz;

public plugin_init() {
	register_plugin("Quiz", "0.2", "MarWit")
	
	register_clcmd("say /quiz", "cmdQuiz")
	register_concmd("quiz_debug", "QuizsDump");
	
	register_clcmd("WpiszOdpowiedz", "ManualAnsewer")
	
	g_cvarMoneyForHint = register_cvar("quiz_moneyforhint", "3600")
	g_cvarTimeToNextQuiz = register_cvar("quiz_timetonextquiz", "8")
	
	g_aQuizQuest = ArrayCreate(128, 1)
	g_aQuizGoodAns = ArrayCreate(64, 1)
	g_aQuizBadAns1 = ArrayCreate(64, 1)
	g_aQuizBadAns2 = ArrayCreate(64, 1)
	g_aQuizBadAns3 = ArrayCreate(64, 1)
	g_aQuizAnsNum = ArrayCreate(1, 1)
	
	LoadConfigFile()
	
}

public LoadConfigFile()
{
	new szFile[128]
	get_configsdir(szFile, charsmax(szFile))
	format(szFile, charsmax(szFile), "%s/quiz.ini", szFile)
	
	new iFile = fopen(szFile, "r")
	
	if(!iFile)
	{
		set_fail_state("[Quiz] Nie ma pliku quiz.ini!")
		return;
	}
	
	new szBuffer[384], szQuizQuest[128], szQuizGoodAns[64], szQuizBadAns1[64], szQuizBadAns2[64], szQuizBadAns3[64];
	new iAnsNum = 1;
	
	while(!feof(iFile))
	{
		fgets(iFile, szBuffer, charsmax(szBuffer))
		trim(szBuffer)
		
		parse(szBuffer, szQuizQuest, charsmax(szQuizQuest), szQuizGoodAns, charsmax(szQuizGoodAns), szQuizBadAns1, charsmax(szQuizBadAns1), szQuizBadAns2, charsmax(szQuizBadAns2), szQuizBadAns3, charsmax(szQuizBadAns3))
		
		ArrayPushString(g_aQuizQuest, szQuizQuest)
		ArrayPushString(g_aQuizGoodAns, szQuizGoodAns)
		
		if(strlen(szQuizBadAns1))
		{
			ArrayPushString(g_aQuizBadAns1, szQuizBadAns1)
			iAnsNum++;
		} else {
			ArrayPushString(g_aQuizBadAns1, "")
		}
		
		if(strlen(szQuizBadAns2))
		{
			ArrayPushString(g_aQuizBadAns2, szQuizBadAns2)
			iAnsNum++;
		} else {
			ArrayPushString(g_aQuizBadAns2, "")
		}
		
		if(strlen(szQuizBadAns3))
		{
			ArrayPushString(g_aQuizBadAns3, szQuizBadAns3)
			iAnsNum++;
		} else {
			ArrayPushString(g_aQuizBadAns3, "")
		}
		
		ArrayPushCell(g_aQuizAnsNum, iAnsNum)
		iAnsNum = 1;
		
		szQuizBadAns1 = ""
		szQuizBadAns2 = ""
		szQuizBadAns3 = ""
	}
}

public cmdQuiz(id)
{
	if(get_gametime() <= g_fUserNextQuiz[id]){
		ColorChat(id, RED, "[Quiz]^x01 Nie mozesz teraz uruchomic quiz'u. Sproboj pozniej :)")
		return PLUGIN_HANDLED
	}
	
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	
	ViewQuiz(id, 0)
	return PLUGIN_HANDLED
}

public ViewQuiz(id, iMode)
{
	new szBuffer[128]
	new iRandomQuiz = (g_iUserQuizID[id] == -1) ? random_num(0, ArraySize(g_aQuizQuest) - 1) : g_iUserQuizID[id]
	
	ArrayGetString(g_aQuizQuest, iRandomQuiz, szBuffer, charsmax(szBuffer))
	new iMenu = menu_create(szBuffer, "ViewQuiz_Handle")
	new iMenuCallBack = menu_makecallback("ViewQuiz_CallBack")
	
	if(!iMode)
	{
		menu_additem(iMenu, "Wpisz Odpowiedz")
		menu_additem(iMenu, "Podpowiedz", "", 0, iMenuCallBack)
		menu_additem(iMenu, "Odpowiedz")
		
		g_fUserNextQuiz[id] = get_gametime() + float(get_pcvar_num(g_cvarTimeToNextQuiz) * 60)
		
	} else {
		
		if(cs_get_user_money(id) < get_pcvar_num(g_cvarMoneyForHint) || ArrayGetCell(g_aQuizAnsNum, iRandomQuiz) == 1)
			return PLUGIN_CONTINUE
			
		cs_set_user_money(id, cs_get_user_money(id)-get_pcvar_num(g_cvarMoneyForHint))
		
		new iAnsNum, iRandAns, iAns[4];
		new szMenuInfo[5];
		new bool:bReload = false;
		
		while(iAnsNum < ArrayGetCell(g_aQuizAnsNum, iRandomQuiz))
		{	
			iRandAns = random_num(1, ArrayGetCell(g_aQuizAnsNum, iRandomQuiz))
			
			for(new i=0; i<3; i++)
			{
				if(iAns[i] == iRandAns) {
					bReload = true
					break;
				}
			}
			
			if(bReload) {
				bReload = false;
				continue;
			}
			
			switch(iRandAns)
			{
				case 1: { ArrayGetString(g_aQuizGoodAns, iRandomQuiz, szBuffer, charsmax(szBuffer)); format(szMenuInfo, 4, "good"); }
				case 2: { ArrayGetString(g_aQuizBadAns1, iRandomQuiz, szBuffer, charsmax(szBuffer)); format(szMenuInfo, 4, "bad"); }
				case 3: { ArrayGetString(g_aQuizBadAns2, iRandomQuiz, szBuffer, charsmax(szBuffer)); format(szMenuInfo, 4, "bad"); }
				case 4: { ArrayGetString(g_aQuizBadAns3, iRandomQuiz, szBuffer, charsmax(szBuffer)); format(szMenuInfo, 4, "bad"); }
			}
			
			iAns[iAnsNum] = iRandAns;
			iAnsNum++;
			
			menu_additem(iMenu, szBuffer, szMenuInfo)
		}
	}
	
	g_iUserQuizID[id] = iRandomQuiz;
	g_iUserQuizMode[id] = iMode
	
	menu_display(id, iMenu)
	return PLUGIN_CONTINUE
}

public ViewQuiz_Handle(id, iMenu, iItem)
{
	if(!g_iUserQuizMode[id])
	{
		new szBuffer[64];
		
		switch(iItem)
		{
			case 0: { client_cmd(id, "messagemode WpiszOdpowiedz"); }
			case 1: { ViewQuiz(id, 1); }
			case 2: { ArrayGetString(g_aQuizGoodAns, g_iUserQuizID[id], szBuffer, charsmax(szBuffer)); ColorChat(id, RED, "[Quiz]^x01 Prawidlowa odpowiedz to:^x04 %s", szBuffer), g_iUserQuizMode[id] = -1, g_iUserQuizID[id] = -1; }
		}
		
		menu_destroy(iMenu)
	} else {
		
		new szName[64], szInfo[5], iAccess, iCallback;
		menu_item_getinfo(iMenu, iItem, iAccess, szInfo, charsmax(szInfo), szName, charsmax(szName), iCallback)
		
		if(equal(szInfo, "good"))
		{
			GiveAward(id)
		} else {
			ColorChat(id, RED, "[Quiz]^x01 Niestety, twoja odpowiedz jest bledna:(")
		}
		
		g_iUserQuizMode[id] = -1
		g_iUserQuizID[id] = -1
		
		menu_destroy(iMenu)
	}
}

public ViewQuiz_CallBack(id, iMenu, iItem)
{
	if(ArrayGetCell(g_aQuizAnsNum, g_iUserQuizID[id]) < 2 || cs_get_user_money(id) < get_pcvar_num(g_cvarMoneyForHint))
		return ITEM_DISABLED
		
	return ITEM_ENABLED
}

public ManualAnsewer(id)
{
	new szText[64], szGoodAns[64];
	read_argv(1, szText, charsmax(szText))
	remove_quotes(szText)
	
	ArrayGetString(g_aQuizGoodAns, g_iUserQuizID[id], szGoodAns, charsmax(szGoodAns))
	if(equali(szText, szGoodAns))
	{
		GiveAward(id)
	} else {
		ColorChat(id, RED, "[Quiz]^x01 Niestety, twoja odpowiedz jest bledna:(")
	}
	
	g_iUserQuizMode[id] = -1
	g_iUserQuizID[id] = -1;
	
	return PLUGIN_HANDLED
}

public GiveAward(id)
{
	#if defined CODMOD
	new iRandAward = random_num(0, 4)
	#else
	new iRandAward = random_num(2, 4)
	#endif
	
	switch(iRandAward)
	{
		#if defined CODMOD
		case 0: {
			iRandAward = random_num(100, 2500)
			cod_set_user_xp(id, cod_get_user_xp(id)+iRandAward)
			ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 +%d^x01 expa!", iRandAward)
		}
		case 1: {
			iRandAward = random_num(1, 5)
			cod_set_user_xp(id, cod_get_level_xp(cod_get_user_level(id)+iRandAward))
			ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 +%d^x01 lvl!", iRandAward)
		}
		#endif
		case 2: {
			iRandAward = random_num(100, 16000)
			
			if(cs_get_user_money(id)+iRandAward > 16000)
			{
				cs_set_user_money(id, 16000)
				ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 16000^x01 $!")
			} else {
				cs_set_user_money(id, cs_get_user_money(id)+iRandAward)
				ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 +%d^x01 $!", iRandAward)
			}
		}
		case 3: {
			iRandAward = random_num(1, 8)
			
			set_pev(id, pev_frags, float(pev(id, pev_frags)+iRandAward))
			
			message_begin(MSG_ALL, get_user_msgid("ScoreInfo"));
			write_byte(id);
			write_short(pev(id, pev_frags));
			write_short(get_user_deaths(id));
			write_short(0);
			write_short(pev(id, pev_team));
			message_end();
			
			ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 +%d^x01 fragow!", iRandAward)
		}
		case 4: {
			iRandAward = random_num(0, sizeof(szWeaponName)-1)
			
			#if defined CODMOD
			cod_give_weapon(id, get_weaponid(szWeaponName[iRandAward]))
			#else
			fm_give_item(id, szWeaponName[iRandAward])
			#endif
			
			ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 dodatkowa bron^x01!")
		}
	}
	
	return PLUGIN_HANDLED			
}

public QuizsDump(id)
{
	new szBuffer[128]
	
	for(new i=0; i < ArraySize(g_aQuizQuest); i++)
	{
		log_amx("------------%d------------", i)
		
		ArrayGetString(g_aQuizQuest, i, szBuffer, 127)
		log_amx(szBuffer)
		
		ArrayGetString(g_aQuizGoodAns, i, szBuffer, 127)
		log_amx(szBuffer)
		
		ArrayGetString(g_aQuizBadAns1, i, szBuffer, 127)
		log_amx(szBuffer)
		
		ArrayGetString(g_aQuizBadAns2, i, szBuffer, 127)
		log_amx(szBuffer)
		
		ArrayGetString(g_aQuizBadAns3, i, szBuffer, 127)
		log_amx(szBuffer)
		
		log_amx("%d", ArrayGetCell(g_aQuizAnsNum, i))
		
		log_amx("--------------------------")
	}
}


#2 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 04.08.2014 07:13

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Autor tematu zbanowany

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych