Blancoo Postat Duminică la 07:56 Postat Duminică la 07:56 (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 Duminică la 09:16 de Blancoo
oxydev Postat Duminică la 09:00 Postat Duminică la 09:00 (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 Duminică la 09:01 de oxydev
Blancoo Postat Duminică la 09:08 Autor Postat Duminică la 09:08 (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 Duminică la 09:10 de Blancoo
oxydev Postat Duminică la 09:09 Postat Duminică la 09:09 (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 Duminică la 09:10 de oxydev
XeNnON Postat Duminică la 09:10 Postat Duminică la 09:10 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!
Blancoo Postat Duminică la 09:13 Autor Postat Duminică la 09:13 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
Yvezzaintᴷʸˢ Postat Duminică la 09:15 Postat Duminică la 09:15 (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 Duminică la 09:16 de Yvezzaintᴷʸˢ
Blancoo Postat Duminică la 09:16 Autor Postat Duminică la 09:16 Gata , nu va mai agitati ca am modificat topicu - my bad 1
oxydev Postat Duminică la 09:27 Postat Duminică la 09:27 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
Blancoo Postat Duminică la 09:31 Autor Postat Duminică la 09:31 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!? 3
Scripters Shadows Adi Postat Duminică la 16:57 Scripters Postat Duminică la 16:57 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 Dexter. @ GOV.RO Postat Duminică la 17:12 Administrator Postat Duminică la 17:12 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.
Postări Recomandate