Member
|
02-01-2024
, 11:50
script help
|
#1
|
so i need help finishing my menu ,
i will send a pic of the menu under , i need help making the respawn and buy terrorist, if you guys can , get the points code from this (and also if possible, i want a player to get 3 points everytime they get kills or when they finish the map, idk if you need the timer code but if you do lmk )
PHP Code:
#include <amxmodx> #include <fvault> #include <engine>
#define PREFIX "SPK-Deathrun"
#define PLUGIN "USP SHOP" #define VERSION "1.0" #define AUTHOR "Bu!ld3r"
native get_user_points(id) native set_user_points(id, amount)
enum _: eData { szName[32], szVmodel[64], szPmodel[64], cost }
new const szUsps[][eData] = { //NAME// //V_MODEL// //P_MODEL// //COST// { "Green Usp", "models/usp/v_usp_green.mdl", "models/usp/p_usp_green.mdl", 150 }, { "Dragon Usp", "models/usp/v_usp_dragon.mdl", "models/usp/p_usp_dragon.mdl", 200 }//, //{ "USP #3", "models/usp/v_usp3.mdl", "models/usp/p_usp3.mdl", 350 }, //{ "USP #4", "", "", 700 }, }
new current[33]; new bool: szData[33][sizeof(szUsps)];
new const g_vault[] = "USP_SHOP";
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_clcmd("say /usp", "cmd_main"); register_event("CurWeapon", "Event_CurWeapon", "be","1=1"); }
public plugin_precache() { for(new i=0; i<sizeof(szUsps); i++) { precache_model(szUsps[i][szVmodel]); precache_model(szUsps[i][szPmodel]); } }
//SET A MODEL public set_model(id) { if( current[id] >= 0 ) { entity_set_string(id, EV_SZ_viewmodel, szUsps[current[id]][szVmodel]); entity_set_string(id, EV_SZ_weaponmodel, szUsps[current[id]][szPmodel]); } }
//CONNECT public client_putinserver(id) { current[id] = -1; cmd_load(id); }
//DISCONNECT public client_disconnect(id) { cmd_save(id); }
//CURWEAPON public Event_CurWeapon(id) { if(!is_user_connected(id)) return PLUGIN_HANDLED; if( current[id] >= 0 ) { set_model(id); } return PLUGIN_CONTINUE; }
//DISABLE CALLBACK public disable_item(id, menu, item) { return ITEM_DISABLED; }
//MAIN MENU public cmd_main(id) {
new szText[150]; formatex(szText, charsmax(szText), "\d[ \r%s \d] \yUsp \wSystem \rMain \wMenu^n Your current Points: %i", PREFIX, get_user_points(id)); new menu = menu_create(szText, "main_handler"); new cb = menu_makecallback("disable_item"); menu_additem(menu, "Buy a Usp"); if(get_user_usps(id) <= 0) menu_additem(menu, "\wSell a Usp \d(No Usps)", .callback = cb); else menu_additem(menu, "\wSell a Usp"); menu_display(id, menu); return PLUGIN_CONTINUE;
}
public main_handler(id, menu, item) {
if(item== MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } switch(item) { case 0: cmd_buy(id); case 1: cmd_sell(id); } menu_destroy(menu); return PLUGIN_HANDLED;
}
//BUY MENU public cmd_buy(id) {
new szText[150]; formatex(szText, charsmax(szText), "\d[ \r%s \d] \yUsp Buying - \wmenu\w (%i Usps)^n Your current Points: %i", PREFIX, get_user_usps(id), get_user_points(id)); new menu = menu_create(szText, "buy_handler"); new cb = menu_makecallback("disable_item"); for(new i=0; i<sizeof(szUsps); i++) { if(szData[id][i]) { formatex(szText, charsmax(szText), "\w%s \d( \rPurchased \d)", szUsps[i][szName], szUsps[i][cost]); menu_additem(menu, szText, .callback = cb); } else { formatex(szText, charsmax(szText), "\w%s \d( \r%i POINTS \d)", szUsps[i][szName], szUsps[i][cost]); menu_additem(menu, szText); } } menu_display(id,menu); return PLUGIN_HANDLED;
}
public buy_handler(id, menu, item) {
if(item== MENU_EXIT) { cmd_main(id); menu_destroy(menu); return PLUGIN_HANDLED; }
if(szData[id][item]) { ColorChat(id, "you ^4already^1 bought this ^3skin^1."); cmd_buy(id); menu_destroy(menu); return PLUGIN_HANDLED; } new p = get_user_points(id); if(p < szUsps[item][cost]) { ColorChat(id, "you ^4are^1 missing ^3%i^1 points.", szUsps[item][cost] - p); cmd_main(id); menu_destroy(menu); return PLUGIN_HANDLED; }
set_user_points(id, p-szUsps[item][cost]); ColorChat(id, "you bought the ^4%s^1 skin.", szUsps[item][szName]); current[id] = item; szData[id][item] = true; set_model(id); cmd_save(id); cmd_buy(id); return PLUGIN_HANDLED;
}
//SELL MENU public cmd_sell(id) { if(get_user_usps(id) <= 0) { cmd_main(id); return PLUGIN_HANDLED; } new szText[150], szParm[10]; formatex(szText, charsmax(szText), "\d[ \r%s \d] \yUsp Selling - \wmenu\w (50%% off)^nYour current Points: %i", PREFIX, get_user_points(id)); new menu = menu_create(szText, "sell_handler"); for(new i=0; i<sizeof(szUsps); i++) { if(szData[id][i]) { formatex(szText, charsmax(szText), "\w%s - (%i Points)", szUsps[i][szName], szUsps[i][cost]/2); num_to_str(i, szParm, charsmax(szParm)); menu_additem(menu, szText, szParm); } }
menu_display(id, menu); return PLUGIN_HANDLED; }
public sell_handler(id, menu, item) { new key = MenuItem(menu, item); if(item == MENU_EXIT) { cmd_main(id); return PLUGIN_HANDLED; } if(!szData[id][key]) { ColorChat(id, "you ^4already^1 sold this ^3skin^1."); cmd_sell(id); return PLUGIN_HANDLED; } cmd_agree(id, key); return PLUGIN_HANDLED; }
//AGREE MENU public cmd_agree(id, key) { new szText[150], szParm[10]; formatex(szText, charsmax(szText), "\d[ \r%s \d] \yDo you want\w to sell your %s? ^nYour current Points: %i", PREFIX, szUsps[key][szName], get_user_points(id)); new menu = menu_create(szText, "agree_handler"); num_to_str(key, szParm, charsmax(szParm)); menu_additem(menu, "Yes, absolutely!", szParm); menu_additem(menu, "No, I do not."); menu_display(id, menu); return PLUGIN_HANDLED; }
public agree_handler(id, menu, item) { if(item == MENU_EXIT || item == 1 ) { cmd_sell(id); menu_destroy(menu); return PLUGIN_HANDLED; } new key = MenuItem(menu, item); if(!szData[id][key]) { ColorChat(id, "you ^4already^1 sold this ^3skin^1."); cmd_sell(id); return PLUGIN_HANDLED; } set_user_points(id, get_user_points(id) + szUsps[key][cost]/2); ColorChat(id, "you ^4sold^1 your ^3%s^1 for ^4%i^1 points.", szUsps[key][szName], szUsps[key][cost]/2); szData[id][key] = false; cmd_save(id); cmd_sell(id); return PLUGIN_HANDLED; }
//SAVE USER public cmd_save(id) { new data[250]; formatex(data, charsmax(data), "%i", szData[id][0] ? 1 : 0);
for(new i=1; i<sizeof(szUsps); i++) { format(data, charsmax(data), "%s %i", data, szData[id][i]? 1 : 0); } fvault_set_data(g_vault, get_authid(id), data); }
//LOAD USER public cmd_load(id) { new data[250], num[10]; if(fvault_get_data(g_vault, get_authid(id), data, charsmax(data))) { for(new i=0; i<sizeof(szUsps); i++) { strbreak(data, num, charsmax(num), data, charsmax(data)) szData[id][i] = str_to_num(num)? true : false;
} } else { arrayset(szData[id], false, charsmax(szData)); }
}
//GET AUTHID stock get_authid(id) { new authid[64]; get_user_authid(id, authid, charsmax(authid)); return authid; }
//GET USPS AMOUNT stock get_user_usps(id) { new temp = 0; for(new i=0; i<sizeof(szUsps); i++) { if(szData[id][i]) temp++; } return temp; }
//GET MENU ITEM stock MenuItem(menu, item) { new szData[10]; new access, callback; menu_item_getinfo(menu, item, access, szData, charsmax(szData), _, _, callback); menu_destroy(menu); return str_to_num(szData); } //COLORCHAT stock ColorChat(const id, const string[], {Float, Sql, Resul,_}:...) { new msg[191], players[32], count = 1; static len; len = formatex(msg, charsmax(msg), "^3[%s]^1 ", PREFIX); vformat(msg[len], charsmax(msg) - len, string, 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(); } } return PLUGIN_CONTINUE; }
and for the menu, i use the simple menu by oxicrom and also can someone make a new line under the title and display the current points of the player aswell)
PHP Code:
[Default Settings] ;These are the default settings for each menu created. ;You can add certain options in [Menu Settings] if you want to change them. ;Please note that every menu needs to have a different MENU_OPEN settings, therefore there's no default one.
MENU_TITLE = SPK - Deathrun | Main Menu MENU_TITLE_PAGE = %newline%Page:\d MENU_BACK = \yPrevious Page MENU_NEXT = \yNext Page MENU_EXIT = \rExit ;MENU_OPEN = say /menu, say_team /menu, amx_mymenu, chooseteam -- This must be set with a different value on every menu! MENU_FLAG = 0 MENU_TEAM = 0 MENU_ALIVEONLY = 0 MENU_ITEMS_PER_PAGE = 7 MENU_REOPEN = 0 MENU_ITEM_FORMAT = %item% MENU_PREFIX = !g[SPK Deathrun]!n MENU_NOACCESS = You have no access to this menu. MENU_NOTEAM = Your team isn't allowed to use this menu. MENU_ALIVE = You need to be alive to use this menu. MENU_DEAD = You need to be dead to use this menu. MENU_SOUND =
[New Menu = Menu Sample]
[Menu Settings] ;<settings> = <value>
MENU_OPEN = say /menu, say_team /menu, amx_mymenu, chooseteam MENU_REOPEN = 0
[Menu Items] ;<Item Name> <Command> [Flag] [Team]
"\yBuy \wRespawn \r[ 7 Points ]" "say /respawn" "\yBuy \rTerrorist \r[ 10 Points ]" "say /buytr" "\yBuy \wPrefix \r[ 250 Points ]" "say /prefix" #blank "Knife \ySkins" "say /knife" "USP \ySkins" "say /usp" #blank "\wSpec \r[Admins \rOnly]" "say /spec" "c" "ct" "\rAdmin Menu" "amx_amenu" "e"
[New Menu = Admin Menu]
[Menu Settings] ;<settings> = <value>
MENU_OPEN = say /am, say_team /am, amx_amenu, MENU_REOPEN = 0
MENU_TITLE = SPK - Deathrun | Admin Menu MENU_FLAG = e [Menu Items] ;<Item Name> <Command> [Flag] [Team]
" | \rRevive \yPlayers \w| " "amx_rmenu" "g" " | \rSlap/Slay \yMenu \w| " "amx_slapmenu" "e" " | \rBan \yMenu \w| " "amx_banmenu" "d" " | \rGag \yMenu \w| " "amx_gagmenu" "e"
https://forums.alliedmods.net/showthread.php?t=284324
Last edited by tedaimlocks; 02-01-2024 at 11:55.
Reason: code tag
|
|