(adsbygoogle = window.adsbygoogle || []).push({});
I found this on the internet:
Here is the code to make a cod4 menu
put it in the MP file
as a bind
player CloseInGameMenu
player closeMenu
player openMenu
NOTE VERY HARD TO MAKE
Now a response to this is that you cannot do this with these codes, but I am still posting this up for people to at least see it and try it if they want, but this is a reason why it will not work:
1.
init()
2.
{
3.
game["menu_team"] = "team_marinesopfor";
4.
game["menu_class_allies"] = "class_marines";
5.
game["menu_changeclass_allies"] = "changeclass_marines";
6.
game["menu_initteam_allies"] = "initteam_marines";
7.
game["menu_class_axis"] = "class_opfor";
8.
game["menu_changeclass_axis"] = "changeclass_opfor";
9.
game["menu_initteam_axis"] = "initteam_opfor";
10.
game["menu_class"] = "class";
11.
game["menu_changeclass"] = "changeclass";
12.
game["menu_changeclass_offline"] = "changeclass_offline";
13.
14.
if ( !level.console )
15.
{
16.
game["menu_callvote"] = "callvote";
17.
game["menu_muteplayer"] = "muteplayer";
18.
precacheMenu(game["menu_callvote"]);
19.
precacheMenu(game["menu_muteplayer"]);
20.
21.
// ---- back up one folder to access game_summary.menu ----
22.
// game summary menu file precache
23.
game["menu_eog_main"] = "endofgame";
24.
25.
// menu names (do not precache since they are in game_summary_ingame which should be precached
26.
game["menu_eog_unlock"] = "popup_unlock";
27.
game["menu_eog_summary"] = "popup_summary";
28.
game["menu_eog_unlock_page1"] = "popup_unlock_page1";
29.
game["menu_eog_unlock_page2"] = "popup_unlock_page2";
30.
31.
precacheMenu(game["menu_eog_main"]);
32.
precacheMenu(game["menu_eog_unlock"]);
33.
precacheMenu(game["menu_eog_summary"]);
34.
precacheMenu(game["menu_eog_unlock_page1"]);
35.
precacheMenu(game["menu_eog_unlock_page2"]);
36.
37.
}
38.
else
39.
{
40.
game["menu_controls"] = "ingame_controls";
41.
game["menu_options"] = "ingame_options";
42.
game["menu_leavegame"] = "popup_leavegame";
43.
44.
if(level.splitscreen)
45.
{
46.
game["menu_team"] += "_splitscreen";
47.
game["menu_class_allies"] += "_splitscreen";
48.
game["menu_changeclass_allies"] += "_splitscreen";
49.
game["menu_class_axis"] += "_splitscreen";
50.
game["menu_changeclass_axis"] += "_splitscreen";
51.
game["menu_class"] += "_splitscreen";
52.
game["menu_changeclass"] += "_splitscreen";
53.
game["menu_controls"] += "_splitscreen";
54.
game["menu_options"] += "_splitscreen";
55.
game["menu_leavegame"] += "_splitscreen";
56.
}
57.
58.
precacheMenu(game["menu_controls"]);
59.
precacheMenu(game["menu_options"]);
60.
precacheMenu(game["menu_leavegame"]);
61.
}
62.
63.
precacheMenu("scoreboard");
64.
precacheMenu(game["menu_team"]);
65.
precacheMenu(game["menu_class_allies"]);
66.
precacheMenu(game["menu_changeclass_allies"]);
67.
precacheMenu(game["menu_initteam_allies"]);
68.
precacheMenu(game["menu_class_axis"]);
69.
precacheMenu(game["menu_changeclass_axis"]);
70.
precacheMenu(game["menu_class"]);
71.
precacheMenu(game["menu_changeclass"]);
72.
precacheMenu(game["menu_initteam_axis"]);
73.
precacheMenu(game["menu_changeclass_offline"]);
74.
precacheString( &"MP_HOST_ENDED_GAME" );
75.
precacheString( &"MP_HOST_ENDGAME_RESPONSE" );
76.
77.
level thread onPlayerConnect();
78.
}
79.
80.
onPlayerConnect()
81.
{
82.
for(;

83.
{
84.
level waittill("connecting", player);
85.
86.
player setClientDvar("ui_3dwaypointtext", "1");
87.
player.enable3DWaypoints = true;
88.
player setClientDvar("ui_deathicontext", "1");
89.
player.enableDeathIcons = true;
90.
91.
player thread onMenuResponse();
92.
}
93.
}
94.
95.
onMenuResponse()
96.
{
97.
self endon("disconnect");
98.
99.
for(;

100.
{
101.
self waittill("menuresponse", menu, response);
102.
103.
//println( self getEntityNumber() + " menuresponse: " + menu + " " + response );
104.
105.
//iprintln("^6", response);
106.
/*if(response == "open_changeclass_menu" )
107.
{
108.
if( getDvarInt( "onlinegame" ) )
109.
self openMenu( "changeclass" );
110.
else
111.
self openMenu( "changeclass_offline" );
112.
}
113.
*/
114.
115.
if ( response == "back" )
116.
{
117.
self closeMenu();
118.
self closeInGameMenu();
119.
120.
if ( level.console )
121.
{
122.
if( menu == game["menu_changeclass"] || menu == game["menu_changeclass_offline"] || menu == game["menu_team"] || menu == game["menu_controls"] )
123.
{
124.
// assert(self.pers["team"] == "allies" || self.pers["team"] == "axis");
125.
126.
if( self.pers["team"] == "allies" )
127.
self openMenu( game["menu_class_allies"] );
128.
if( self.pers["team"] == "axis" )
129.
self openMenu( game["menu_class_axis"] );
130.
}
131.
else if ( menu == "class" )
132.
{
133.
self [[level.showsquadinfo]]();
134.
}
135.
}
136.
continue;
137.
}
138.
139.
if(response == "showsquadinfo")
140.
{
141.
self [[level.showsquadinfo]]();
142.
}
143.
144.
145.
if(response == "leavesquad")
146.
{
147.
self closeMenu();
148.
self [[level.leavesquad]]();
149.
}
150.
151.
if(response == "joinsquad")
152.
{
153.
self [[level.joinsquad]]();
154.
}
155.
156.
if(response == "createsquad")
157.
{
158.
self [[level.createsquad]]();
159.
}
160.
161.
if(response == "locksquad")
162.
{
163.
self closeMenu();
164.
self [[level.locksquad]]();
165.
}
166.
167.
if(response == "unlocksquad")
168.
{
169.
self closeMenu();
170.
self [[level.unlocksquad]]();
171.
}
172.
173.
if(response == "changeteam")
174.
{
175.
self closeMenu();
176.
self closeInGameMenu();
177.
self openMenu(game["menu_team"]);
178.
}
179.
180.
if(response == "changeclass_marines" )
181.
{
182.
self closeMenu();
183.
self closeInGameMenu();
184.
self openMenu( game["menu_changeclass_allies"] );
185.
continue;
186.
}
187.
188.
if(response == "changeclass_opfor" )
189.
{
190.
self closeMenu();
191.
self closeInGameMenu();
192.
self openMenu( game["menu_changeclass_axis"] );
193.
continue;
194.
}
195.
196.
if(response == "changeclass_marines_splitscreen" )
197.
self openMenu( "changeclass_marines_splitscreen" );
198.
199.
if(response == "changeclass_opfor_splitscreen" )
200.
self openMenu( "changeclass_opfor_splitscreen" );
201.
202.
// rank update text options
203.
if(response == "xpTextToggle")
204.
{
205.
self.enableText = !self.enableText;
206.
if (self.enableText)
207.
self setClientDvar( "ui_xpText", "1" );
208.
else
209.
self setClientDvar( "ui_xpText", "0" );
210.
continue;
211.
}
212.
213.
// 3D Waypoint options
214.
if(response == "waypointToggle")
215.
{
216.
self.enable3DWaypoints = !self.enable3DWaypoints;
217.
if (self.enable3DWaypoints)
218.
self setClientDvar( "ui_3dwaypointtext", "1" );
219.
else
220.
self setClientDvar( "ui_3dwaypointtext", "0" );
221.
// self maps\mp\gametypes\_objpoints::updatePlayerObjpoints();
222.
continue;
223.
}
224.
225.
// 3D death icon options
226.
if(response == "deathIconToggle")
227.
{
228.
self.enableDeathIcons = !self.enableDeathIcons;
229.
if (self.enableDeathIcons)
230.
self setClientDvar( "ui_deathicontext", "1" );
231.
else
232.
self setClientDvar( "ui_deathicontext", "0" );
233.
self maps\mp\gametypes\_deathicons::updateDeathIconsEnabled();
234.
continue;
235.
}
236.
237.
if(response == "endgame")
238.
{
239.
// TODO: replace with onSomethingEvent call
240.
if(level.splitscreen)
241.
{
242.
if ( level.console )
243.
endparty();
244.
level.skipVote = true;
245.
246.
if ( !level.gameEnded )
247.
{
248.
level thread maps\mp\gametypes\_globallogic::forceEnd();
249.
}
250.
}
251.
252.
continue;
253.
}
254.
255.
if ( response == "endround" && level.console )
256.
{
257.
if ( !level.gameEnded )
258.
{
259.
level thread maps\mp\gametypes\_globallogic::forceEnd();
260.
}
261.
else
262.
{
263.
self closeMenu();
264.
self closeInGameMenu();
265.
self iprintln( &"MP_HOST_ENDGAME_RESPONSE" );
266.
}
267.
continue;
268.
}
269.
270.
if(menu == game["menu_team"])
271.
{
272.
switch(response)
273.
{
274.
case "allies":
275.
//self closeMenu();
276.
//self closeInGameMenu();
277.
self [[level.leavesquad]]();
278.
self [[level.allies]]();
279.
break;
280.
281.
case "axis":
282.
//self closeMenu();
283.
//self closeInGameMenu();
284.
self [[level.leavesquad]]();
285.
self [[level.axis]]();
286.
break;
287.
288.
case "autoassign":
289.
//self closeMenu();
290.
//self closeInGameMenu();
291.
self [[level.leavesquad]]();
292.
self [[level.autoassign]]();
293.
break;
294.
295.
case "spectator":
296.
//self closeMenu();
297.
//self closeInGameMenu();
298.
self [[level.leavesquad]]();
299.
self [[level.spectator]]();
300.
break;
301.
}
302.
} // the only responses remain are change class events
303.
else if( menu == game["menu_changeclass"] || menu == game["menu_changeclass_offline"] )
304.
{
305.
self closeMenu();
306.
self closeInGameMenu();
307.
308.
self.selectedClass = true;
309.
self [[level.class]](response);
310.
}
311.
else if ( !level.console )
312.
{
313.
if(menu == game["menu_quickcommands"])
314.
maps\mp\gametypes\_quickmessages::quickcommands(response);
315.
else if(menu == game["menu_quickstatements"])
316.
maps\mp\gametypes\_quickmessages::quickstatements(response);
317.
else if(menu == game["menu_quickresponses"])
318.
maps\mp\gametypes\_quickmessages::quickresponses(response);
319.
}
320.
321.
// ======== catching response for create-a-class events ========
322.
/*
323.
responseTok = strTok( response, "," );
324.
325.
if( isdefined( responseTok ) && responseTok.size > 1 )
326.
{
327.
if( responseTok[0] == "primary" )
328.
{
329.
// primary weapon selection
330.
assertex( responseTok.size != 2, "Primary weapon selection in create-a-class-ingame is sending bad response:" + response );
331.
332.
stat_offset = cacMenuStatOffset( menu, response );
333.
self setstat( stat_offset+201, ( int( tableLookup( "mp/statsTable.csv", 4, responseTok[1], 1 ) ) - 3000 ) );
334.
}
335.
else if( responseTok[0] == "attachment" )
336.
{
337.
// primary or secondary weapon attachment selection
338.
assertex( responseTok.size != 3, "Weapon attachment selection in create-a-class-ingame is sending bad response:" + response );
339.
340.
stat_offset = cacMenuStatOffset( menu, response );
341.
if( responseTok[1] == "primary" )
342.
self setstat( stat_offset+202, int( tableLookup( "mp/attachmentTable.csv", 4, responseTok[2], 9 ) ) );
343.
else if( responseTok[1] == "secondary" )
344.
self setstat( stat_offset+204, int( tableLookup( "mp/attachmentTable.csv", 4, responseTok[2], 9 ) ) );
345.
}
346.
else if( responseTok[0] == "secondary" )
347.
{
348.
// secondary weapon selection
349.
assertex( responseTok.size != 2, "Secondary weapon selection in create-a-class-ingame is sending bad response:" + response );
350.
351.
stat_offset = cacMenuStatOffset( menu, response );
352.
self setstat( stat_offset+203, ( int( tableLookup( "mp/statsTable.csv", 4, responseTok[1], 1 ) ) - 3000 ) );
353.
}
354.
else if( responseTok[0] == "perk" )
355.
{
356.
// all 3 perks selection
357.
assertex( responseTok.size != 3, "Perks selection in create-a-class-ingame is sending bad response:" + response );
358.
359.
stat_offset = cacMenuStatOffset( menu, response );
360.
self setstat( stat_offset+200+int(responseTok[1]), int( tableLookup( "mp/statsTable.csv", 4, responseTok[2], 1 ) ) );
361.
}
362.
else if( responseTok[0] == "sgrenade" )
363.
{
364.
assertex( responseTok.size != 2, "Special grenade selection in create-a-class-ingame is sending bad response:" + response );
365.
366.
stat_offset = cacMenuStatOffset( menu, response );
367.
self setstat( stat_offset+208, ( int( tableLookup( "mp/statsTable.csv", 4, responseTok[1], 1 ) ) - 3000 ) );
368.
}
369.
else if( responseTok[0] == "camo" )
370.
{
371.
assertex( responseTok.size != 2, "Primary weapon camo skin selection in create-a-class-ingame is sending bad response:" + response );
372.
373.
stat_offset = cacMenuStatOffset( menu, response );
374.
self setstat( stat_offset+209, int( tableLookup( "mp/attachmentTable.csv", 4, responseTok[2], 11 ) ) );
375.
}
376.
}
377.
*/
378.
}
379.
}
380.
381.
/*
382.
// sort response message from CAC menu
383.
cacMenuStatOffset( menu, response )
384.
{
385.
stat_offset = -1;
386.
387.
if( menu == "menu_cac_assault" )
388.
stat_offset = 0;
389.
else if( menu == "menu_cac_specops" )
390.
stat_offset = 10;
391.
else if( menu == "menu_cac_heavygunner" )
392.
stat_offset = 20;
393.
else if( menu == "menu_cac_demolitions" )
394.
stat_offset = 30;
395.
else if( menu == "menu_cac_sniper" )
396.
stat_offset = 40;
397.
398.
assertex( stat_offset >= 0, "The response: " + response + " came from non-CAC menu" );
399.
400.
return stat_offset;
401.
}
402.
*/