• Like 1
Sari la conținut

[PLUGIN] - JB | JOBS Menu


Postări Recomandate

Postat (editat)

Descriere: Este un sistem de job-uri cu salvare pe fvault

 Are momentan 3 job-uri, Hitman, Weapon Smith si Drug Dealer. Pentru fiecare job poti primi credite, se pot modifica nativele si facuta legatura cu alt mod de joc daca chiar e nevoie.

Nume: [JB] Jobs Menu
Versiune: 1.2

Credite : oxydev 


Sursa :  

#include <fvault>
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fun>
#include <cstrike>
#include <hamsandwich>

native get_user_credits(id);
native give_user_credits(id, amount);
native take_user_credits(id, amount);

new g_job[33], g_drugs[33], g_mats[33], g_tinta[33], g_round[33], g_praf[33]
new g_MaxClients

new szVault[ ] = "Jobs_Vault"

new g_CheckWeapon[33]

new const g_gunhitman_name[][] = { "", "Usp", "Deagle", "Scout", "Ak47"}
new const g_gunhitman[][] =  { "", "weapon_usp", "weapon_deagle", "weapon_scout", "weapon_ak47" }

public plugin_init()
{
	register_plugin("[JB] Jobs", "1.2", "oxy");
	register_clcmd("say /jobs", "ShowMenu", _, "Jobs Menu");
	register_clcmd("say /drugs", "drugsmenu")
	register_clcmd("say /contract", "hitmanmenu")
	register_clcmd("say /createguns", "weaponsmith")
	register_clcmd("jobsmenus", "ShowMenu")


	register_concmd("jbe_give_mats", "givemats", ADMIN_IMMUNITY, "<name> <amount>")
	register_concmd("jbe_give_praf", "givepraf", ADMIN_IMMUNITY, "<name> <amount>")

	register_logevent("round_task", 2, "1=Round_End")

	RegisterHam(Ham_Killed, "player", "player_killed", 1)

	g_MaxClients = get_global_int(GL_maxClients)
}

public client_disconnected(id)
{
	CmdSave(id)
}

public client_connect(id)
{
	CmdLoad(id)
}

public ShowMenu(id)
{
	if(get_user_team(id) == 1)
	{
		if(g_round[id])
		{
			chatcolor(id, "!y[!gPenitenciar!y] !yPoti alege un job o data pe runda !y!")
			return PLUGIN_HANDLED
		}

		if(g_tinta[id])
		{
			chatcolor(id, "!y[!gPenitenciar!y] !yNu poti, deoarece ai selectat o tinta")
			return PLUGIN_HANDLED
		}

		new menu = menu_create("Meniu Jobs", "mh_MyMenu");
		
		if(g_job[id] != 1)
			menu_additem(menu, "\y[\rJob\y] Drug Dealer", "1", 0); // case 0
		else
			menu_additem(menu, "\y[\rJob\y] \dDrug Dealer", "1", ADMIN_ADMIN);

		if(g_job[id] != 2)
			menu_additem(menu, "\y[\rJob\y] Hitman", "2", 0); // case 1
		else
			menu_additem(menu, "\y[\rJob\y] \dHitman", "2", ADMIN_ADMIN);

		if(g_job[id] != 3)
			menu_additem(menu, "\y[\rJob\y] Weapon Smith", "3", 0); // case 2
		else
			menu_additem(menu, "\y[\rJob\y] \dWeapon Smith", "3", ADMIN_ADMIN);

		menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
		menu_setprop(menu, MPROP_EXITNAME, "0");
		menu_setprop(menu, MPROP_NOCOLORS, 1);

		menu_display(id, menu, 0);
	}
	else
		chatcolor(id, "!y[!gPenitenciar!y] !yNu poti folosi aceasta comanda la !gCT!y!")
	return PLUGIN_HANDLED;
}

public native_set_mats(id, amount) {
	g_mats[id] += amount
	CmdSave(id)
	return PLUGIN_HANDLED
}

public native_set_praf(id, amount) {
	g_praf[id] += amount
	CmdSave(id)
	return PLUGIN_HANDLED
}

public native_get_job(id)
	return g_job[id]

public mh_MyMenu(id, menu, item)
{
	if(item == MENU_EXIT || g_tinta[id])
	{
		menu_cancel(id);
		return PLUGIN_HANDLED;
	}

	new command[6], name[64], access, callback;

	menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);

	switch(item)
	{
		case 0: {
			g_job[id] = 1
			chatcolor(id, "!y[!gPenitenciar!y] !yAi luat job-ul de !gDrug Dealer")
			chatcolor(id, "!y[!gPenitenciar!y] !yFoloseste comanda !g/drugs !ypentru a face/vinde droguri")
        }
		case 1: {
			g_job[id] = 2
			chatcolor(id, "!y[!gPenitenciar!y] !yAi luat job-ul de !gHitman")
			chatcolor(id, "!y[!gPenitenciar!y] !yAlege un gardian care sa fie !gtinta ta !y!")
			chatcolor(id, "!y[!gPenitenciar!y] !yVei alege din meniul urmator !g/contract !y!")
		}
		case 2: {
			g_job[id] = 3
			chatcolor(id, "!y[!gPenitenciar!y] !yAi luat job-ul de Weapon Smith")
			chatcolor(id, "!y[!gPenitenciar!y] !yScrie /createguns pentru a prelucra armele")
			chatcolor(id, "!y[!gPenitenciar!y] !yVei primi armele in scurt timp!")
		}
	}
	g_round[id] = 1
	CmdSave(id)
	menu_destroy(menu);

	return PLUGIN_HANDLED;
}

public weaponsmith(id)
{
	if(g_job[id] == 3)
	{
		static option[64]
		if(!is_user_alive(id))
			return PLUGIN_CONTINUE

		check_weapon(id)
	
		formatex(option, charsmax(option), "Meniu Weapon Smith ^nMateriale: %i | Praf de pusca: %i", g_mats[id], g_praf[id])
		new menu = menu_create(option, "weaponsmithhandler")
	
		formatex(option, charsmax(option), "\y[\rJob\y] Creeaza arma (x3)^n\Minim Materiale necesare: 10^n")
		menu_additem(menu, option, "1", 0)

		formatex(option, charsmax(option), "\y[\rJob\y] Crafteaza gloante (x5)^n\yPraf de pusca necesar: 30 grame^n[Arma: %s]",g_gunhitman_name[g_CheckWeapon[id]])
		menu_additem(menu, option, "2", 0)
		
		menu_display(id, menu, 0);
		return PLUGIN_HANDLED
	}
	else {
		chatcolor(id, "Nu poti intra in acest meniu!")
	}
	return PLUGIN_HANDLED
}

public check_weapon(id)
{
	new weapon = get_user_weapon(id)
	if(weapon == CSW_USP)
		g_CheckWeapon[id] = 1
	else if(weapon == CSW_DEAGLE)
		g_CheckWeapon[id] = 2
	else if(weapon == CSW_SCOUT)
		g_CheckWeapon[id] = 3
	else if(weapon == CSW_AK47)
		g_CheckWeapon[id] = 4
	else
		g_CheckWeapon[id] = 0
}	

public meniuarme(id) {
	if(g_job[id] == 3)
	{
		static option[64]
		if(!is_user_alive(id))
			return PLUGIN_CONTINUE
	
		formatex(option, charsmax(option), "Meniu Craft Weapon ^nMateriale: %i | Praf de pusca: %i", g_mats[id], g_praf[id])
		new menu = menu_create(option, "meniuarmehandler")
	
		formatex(option, charsmax(option), "\y[\rCraft\y] USP^n\yMateriale necesare: 12^n")
		menu_additem(menu, option, "1", 0)

		formatex(option, charsmax(option), "\y[\rCraft\y] Deagle^n\yMateriale necesare: 15^n")
		menu_additem(menu, option, "2", 0)

		formatex(option, charsmax(option), "\y[\rCraft\y] Scout^n\yMateriale necesare: 20^n")
		menu_additem(menu, option, "3", 0)

		formatex(option, charsmax(option), "\y[\rCraft\y] AK-47^n\yMateriale necesare: 30^n")
		menu_additem(menu, option, "4", 0)

		
		menu_display(id, menu, 0);
		return PLUGIN_HANDLED
	}
	else {
		chatcolor(id, "Nu poti intra in acest meniu!")
	}
	return PLUGIN_HANDLED
}

public meniuarmehandler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_cancel(id);
		return PLUGIN_HANDLED;
	}

	new command[6], name[64], access, callback;

	menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);

	switch(item)
	{
		case 0: {
			if(g_mats[id] >= 12) {
				g_mats[id] -= 12
				new iEnt = give_item(id, "weapon_usp")
				if (is_valid_ent(iEnt)) {
					cs_set_weapon_ammo(iEnt, 3)
				}
			}
		}
		case 1: {
			if(g_mats[id] >= 15) {
				g_mats[id] -= 15
				new iEnt = give_item(id, "weapon_deagle")
				if (is_valid_ent(iEnt)){
					cs_set_weapon_ammo(iEnt, 3)
				}
			}
		}
		case 2: {
			if(g_mats[id] >= 25) {
				g_mats[id] -= 25
				new iEnt = give_item(id, "weapon_scout")
				if (is_valid_ent(iEnt)){
					cs_set_weapon_ammo(iEnt, 3)
				}
			}
		}
		case 3: {
			if(g_mats[id] >= 30) {
				g_mats[id] -= 30
				new iEnt = give_item(id, "weapon_ak47")
				if (is_valid_ent(iEnt)){
					cs_set_weapon_ammo(iEnt, 3)
				}
			}
		}
	}

	return PLUGIN_HANDLED;
}

public meniugloante(id) {
	if(g_praf[id] >= 5 && g_job[id] == 3 && g_CheckWeapon[id] >= 1) {
		new iEnt = give_item(id, g_gunhitman[g_CheckWeapon[id]])
		if (is_valid_ent(iEnt))
			cs_set_weapon_ammo(iEnt, 3)
		client_print(id, print_chat, "[Weapon Smith] Ai craftat 3 gloante")
	}
}

public weaponsmithhandler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_cancel(id);
		return PLUGIN_HANDLED;
	}

	new command[6], name[64], access, callback;

	menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);

	switch(item)
	{
		case 0: {
			if(g_mats[id] >= 10) {
				meniuarme(id)
			}
        }
		case 1: {
			if(g_praf[id] >= 3) {
				meniugloante(id)
			}
			else
				chatcolor(id, "!y[!gPenitenciar!y] !yNu ai praful de pusca necesar (x5)")
		}
	}
	CmdSave(id)
	menu_destroy(menu);

	return PLUGIN_HANDLED;
}

public hitmanmenu(id)
{
	if(g_job[id] == 2)
	{
		if(g_tinta[id])
		{
			chatcolor(id, "!y[!gPenitenciar!y] Ai deja o tinta selectata (%s)",szName(g_tinta[id]))
			return PLUGIN_HANDLED
		}

		if(!is_user_alive(id) && get_user_team(id) == 1)
			return PLUGIN_HANDLED

		menu_players(id, CS_TEAM_CT, 0, 1, "hitmanhandler", "Alege o tinta")
	}
	else {
		chatcolor(id, "Nu poti intra in acest meniu!")
	}
	return PLUGIN_HANDLED
}

public hitmanhandler(id, menu, item) {
	if(item == MENU_EXIT)
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}

	if(g_tinta[id])
	{
		chatcolor(id, "!y[!gPenitenciar!y] Ai deja o tinta selectata (%s)",szName(g_tinta[id]))
		return PLUGIN_HANDLED
	}

	static dst[32], data[5], player, access, callback
	
	menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
	player = str_to_num(data)
	g_tinta[id] = player
	chatcolor(id, "!y[!gPenitenciar!y] !yTinta ta urmatoare este gardianul: %s", szName(player))

	return PLUGIN_HANDLED
}

// Drugs */

public drugsmenu(id)
{
	if(g_job[id] == 1)
	{
		static option[64]
		if(!is_user_alive(id))
			return PLUGIN_CONTINUE
	
		formatex(option, charsmax(option), "Meniu Drugs ^nMateriale: %i | Droguri: %i", g_mats[id], g_drugs[id])
		new menu = menu_create(option, "drughandler")
	
		formatex(option, charsmax(option), "\y[\rJob\y] Prelucreaza drog (1)^n\yMateriale necesare: 2^n")
		menu_additem(menu, option, "1", 0)

		formatex(option, charsmax(option), "\y[\rJob\y] Vinde drog (1)^n\yDrog necesar: 1^n")
		menu_additem(menu, option, "2", 0)
		
		menu_display(id, menu, 0);
		return PLUGIN_HANDLED
	}
	else {
		chatcolor(id, "Nu poti intra in acest meniu!")
	}
	return PLUGIN_HANDLED
}

public drughandler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_cancel(id);
		return PLUGIN_HANDLED;
	}

	new command[6], name[64], access, callback;

	menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);

	switch(item)
	{
		case 0: {
			if(g_mats[id] >= 2) {
				g_mats[id] -= 2
				g_drugs[id] += 1
				chatcolor(id, "!y[!gPenitenciar!y] !yAi prelucrat !gun drog!y! !yIl poti !gvinde din meniul principal!y!")
				drugsmenu(id)
			}
        }
		case 1: {
			if(g_drugs[id] >= 1) {
				g_drugs[id] -= 1
				give_user_credits(id, 50)
				chatcolor(id, "!y[!gPenitenciar!y] !yAi vandut !gun drog !y pe suma de: !g50 Credite !y!")
				drugsmenu(id)
			}
			else
			chatcolor(id, "!y[!gPenitenciar!y] !yNu ai drogurile necesare (x1)")
		}
	}
	CmdSave(id)
	menu_destroy(menu);

	return PLUGIN_HANDLED;
}
// Drugs /*

stock chatcolor(const id, const input[], any:...)
{
	new count = 1, players[32]
	static msg[191]
	vformat(msg, 190, input, 3)
	
	replace_all(msg, 190, "!g", "^4")
	replace_all(msg, 190, "!y", "^1")
	replace_all(msg, 190, "!t", "^3")
	
	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
}

public givepraf(id, level, cid) 
{
	if (!cmd_access(id,level,cid,2))
		return PLUGIN_HANDLED

	new arg1[32], arg2[8]
	read_argv(1,arg1,31)
	read_argv(2,arg2,7)
	new iarg2 = str_to_num(arg2)

	new victim = cmd_target(id,arg1, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)

	if(!victim)
		return PLUGIN_HANDLED

	if(!iarg2)
		return PLUGIN_HANDLED

	g_praf[victim] += iarg2
	CmdSave(victim)
	chatcolor(0, "!y[!gPenitenciar!y] !g%s !yi-a dat lui !g%s!t %d !yPraf de pusca",szName(id), szName(victim), iarg2)
	return PLUGIN_HANDLED
}

public givemats(id, level, cid) 
{
	if (!cmd_access(id,level,cid,2))
		return PLUGIN_HANDLED

	new arg1[32], arg2[8]
	read_argv(1,arg1,31)
	read_argv(2,arg2,7)
	new iarg2 = str_to_num(arg2)

	new victim = cmd_target(id,arg1, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)

	if(!victim)
		return PLUGIN_HANDLED

	if(!iarg2)
		return PLUGIN_HANDLED

	give_user_credits(victim, iarg2)
	CmdSave(victim)
	chatcolor(0, "!y[!gPenitenciar!y] !g%s !yi-a dat lui !g%s!t %d !yde materiale",szName(id), szName(victim), iarg2)
	return PLUGIN_HANDLED
}

public round_task()
{
	for ( new i = 0; i <= g_MaxClients; i++ )
	{
		set_task(4.0, "round_end_hook", i)
	}
}

public round_end_hook(id) {
	if(g_round[id])
		g_round[id] = 0

	if(g_tinta[id])
		g_tinta[id] = 0
}


stock szName( const index )
{
	static Name[ 32 ];

	get_user_name( index, Name, charsmax( Name ) );

	return Name;
}

public plugin_natives()
{
	register_native("set_praf", "native_set_praf", 1)
	register_native("set_mats", "native_set_mats", 1)
	register_native("get_job", "native_get_job", 1)
}

stock CmdSave( const id )
{
	new szKey[ 64 ], szData[ 256 ];
	
	formatex( szKey, charsmax( szKey ), "%s-Save", szName( id ) );
	
	formatex( szData, charsmax( szData ), "%i#%i#%i#%i", g_mats[id], g_drugs[id], g_job[id], g_praf[id]);
	
	fvault_set_data( szVault, szKey, szData );
}

stock CmdLoad( const id )
{
	new szKey[ 64 ], szData[ 256 ];
	
	formatex( szKey, charsmax( szKey ), "%s-Save", szName( id ) );
	
	formatex( szData, charsmax( szData ), "%i#%i#%i", g_mats[id], g_drugs[id], g_job[id]);
	
	fvault_get_data( szVault, szKey, szData, 255 );
	
	replace_all( szData, 255, "#", " " );
	
	new SetData[ 4 ][ 32 ];
	
	parse( szData, SetData[ 0 ], 31, SetData[ 1 ], 31, SetData[ 2 ], 31);

	g_mats[id]						= str_to_num( SetData[ 0 ] )
	
	g_drugs[id]						= str_to_num( SetData[ 1 ] )
	
	g_job[id]						= str_to_num( SetData[ 2 ] )	

	g_praf[id]						= str_to_num( SetData[ 3 ] )	
}

stock menu_players(id, CsTeams:team, skip, alive, callback[], title[], any:...)
{
	static i, name[32], num[5], menu, menuname[32]
	vformat(menuname, charsmax(menuname), title, 7)
	menu = menu_create(menuname, callback)
	
	for(i = 1; i <= g_MaxClients; i++)
	{
		if(!is_user_connected(i) ||  (alive && !is_user_alive(i)) || (skip == i))
			continue

		if(!(team == CS_TEAM_T || team == CS_TEAM_CT) || ((team == CS_TEAM_T || team == CS_TEAM_CT) && (get_user_team(i) == team)))
		{
			get_user_name(i, name, charsmax(name))
			num_to_str(i, num, charsmax(num))
			menu_additem(menu, name, num, 0)
		}
	}

	menu_display(id, menu)
}

public player_killed(victim, attacker)  {
	if(get_user_team(attacker) == 1 && get_user_team(victim) == 2)	{
		if(g_tinta[attacker] == victim) {

			new rand = random_num(30, 75)

			give_user_credits(attacker, rand)
			chatcolor(attacker, "!y[!gPenitenciar!y] !yAi ucis tinta !g%s !ysi ai fost recompensat cu !g%i credite!t", szName(victim), rand)

			if(get_user_credits(victim) >= 25) {
				take_user_credits(victim, 25)
				chatcolor(victim, "!y[!gPenitenciar!y] !yAi fost omorat de un !gHitman !ysi ti-au fost luate 25 de credite!")
			}
			g_tinta[attacker] = 0
		}
	}
}



Instalare:
1. Fisierul jb_jobs.sma il puneti in addons/amxmodx/scripting/*
2. Fisierul jb_jobs.amxx il puneti in addons/amxmodx/plugins/*
4. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:

 

Citat

jb_jobs.amxx

 

 

Editat de Blancoo
Postat (editat)

Pune creditele la autor, nu te autointitula singur drept autor ca nu e frumos. Totodata, macar imi puteai da un mesaj inainte sa il arunci pe aici, sa vezi daca sunt de acord.

Editat de oxydev
Postat (editat)

Unde ai vazut tu ca  m-am autointitulat cum zici tu sau unde ai vazut tu ca mi-am dat eu credite singur ? 

EDIT :  Tot odata tu lai postat in 05 Jul 2024, 02:41 ,  care ar fi problema ca l-am postat si eu aici ? 

Editat de Blancoo
Postat (editat)

ia casca ochii si vezi numele ala mai bine, cand lasi descrierea la persoana I se intelege cu totu alt ceva. totusi, daca publici ceva de pe alta comunitate, dai credite.

Editat de oxydev
Postat
Acum 1 minut, Blancoo a spus:

Unde ai vazut tu ca  m-am autointitulat cum zici tu sau unde ai vazut tu ca mi-am dat eu credite singur ? 

 

citez din topic-ul tau " l-am facut acum aproximativ un an " , acest plugin este facut de oxy , nu te mai intitula singur autor la ceva ce nu esti! 

Postat

Repet , unde ati vazut voi ca m-am dat autor sau ca l-am facut eu ?

Dar sa nu mai fiti asa suparti  , rectific .

Credite : Oxydev 

 

Postat (editat)
2 minutes ago, Blancoo said:

Repet , unde ati vazut voi ca m-am dat autor sau ca l-am facut eu ?

Dar sa nu mai fiti asa suparti  , rectific .

Credite : Oxydev 

 

Deci din textul de inaintea pluginului se intelege ca e facut de tine, fiind scris la persoana 1.

1: l-am facut acum aproximativ un an

2: versiunea finala pe care o facusem

Editat de Yvezzaintᴷʸˢ
Postat

Gata , nu va mai agitati ca am modificat topicu  - my bad 

  • Like 1
Postat
9 minutes ago, Blancoo said:

Gata , nu va mai agitati ca am modificat topicu  - my bad 

nu se agita nimeni, cand te vede lumea ce arogante si filme iti iei le cam sare țandăra. 

 

  7.    Însușirea unui plugin care nu îți aparține va duce la ban pe categorie.

imi poti multumi ca n ai luat ban pe categorie 😘

Postat

HMm suna ca o amenintare  ,  ai facut si tu un plugin de acuma 1/2 ani si te agiti  aiurea ..

Sa-ti multumesc ca nu am luat ban !? Ai visat urat cred azi noapte .. 

Deocamdata sa ii multumesti lui chatgpt ca te-a ajutat si te ajuta .


Mai usor cu amenintarile ca nu ma sperii ,  ti-am editat topicul ti-am dat creditele ce mai vreI!? 
 

  • Mor de râs 3
  • Scripters
Postat

Daca are cineva nevoie de informatii despre plugin, il poate contacta in privat pe autorul topicului / autorul pluginului.

Topic inchis pentru a evita off-topic.

  • Administrator
Postat

Vă reamintesc că aici, pe comunitatea LEAGUECS ROMÂNIA, avem un regulament clar de respectat. Nu acționăm după bunul plac, iar comportamentele neadecvate nu vor fi tolerate.

  • Amenințările, limbajul trivial și instigarea la scandal se sancționează conform regulamentului, în funcție de gravitatea situației. 
  • Am rugămintea la tine, @Blancoo, să nu te mai treci ca autor pe plugin-uri care nu îți aparțin și să nu îți atribui merite pentru munca altora. Acest lucru reprezintă plagiat, iar noi, pe LEAGUECS ROMÂNIA, susținem autenticitatea și respectul față de efortul individual.
  • Orice abatere de la aceste principii va fi tratată cu maximă seriozitate.

Cu stimă,

Dexter.

Vizitator
Acest topic este acum închis pentru alte răspunsuri.
  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.
×
×
  • Creează nouă...

Informații Importante

Termeni de Utilizare & Politică Intimitate