admiral mod map vote |
|
|
Ähnlich wie eXtreme?? Oh Mann, da wär ich zufrieden, wenn ich schon soweit wär...Leider fehlt mir die Zeit, das voll durchzuziehen, sodass ich nur in kleinen Stücken arbeite...
Ne gute Freundin hat mir den Admiral Votetechnisch so umgescriptet, das man in der CFG alle Maps zum Vote angeben kann, und das davon 8 zufällige beim Mapende angezeigt werden.
Wenn die Gute vom Urlaub wieder da ist, frag ich sie, was genau sie geändert hat, denn sie vergass, es im Script zu Kennzeichnen. Oder ich schau nach der Spätschicht mal, ob ichs selber auseinanderpfriemeln kann.
Mit einer Playerbased Rotation und mit diversen Mapspezifischen Waffeneinstellungen kann ich leider (noch) nicht dienlich sein...
ToM
__________________

|
|
|
|
|
|
|
So, mein Versuch, das auseinanderzupfriemeln, Du bist Testperson...
Datei: maps/mp/gametypes_admiral_mod_vars.gsc
Suche nach: game["am_vote_map"]
Ersetze den kompletten Absatz, der die Variablennamen enthält, die Votespezifisch sind, mit diesem hier:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
game["am_vote_maps"] = [];
game["am_vote_map"] = GetV("int","am_vote_map",0,0,1);
game["am_vote_gametype"] = GetV("int","am_vote_gametype",0,0,1);
game["am_vote_time"] = GetV("int","am_vote_time",30,10,45);
game["am_vote_only_clanmembers"] = GetV("int","am_vote_only_clanmembers",0,0,1);
game["am_vote_maps_orig"] = GetV("array_komma","am_vote_maps",maplist,"","");
game["am_vote_gametypes"] = GetV("array_komma","am_vote_gametypes",gametypelist,"","");
game["am_allow_vote_custom_maps"] = GetV("int","am_allow_vote_custom_maps",0,0,1);
|
|
weiter zum File maps/mp/gametypes/_admiral_mod_player.gsc
Nach der Funktion SetPlayerObjects() bis zur Funktion PlayerDisconnect()
mit diesem Code ersetzen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
|
PlayerConnect(random_maplist) {
if(game["am_error_logfile"] == 1) logPrint("PlayerConnect\n");
self.do_status = "none";
if(game["am_skip_info_screen"] == 1) self.pers["skipserverinfo"] = true;
if(getTime() < 3000) wait 1; // * bei lokalem Test für den Playerstarter notwendig *
self PlayerCVarsInit(random_maplist);
// * Ban Check *
if(maps\mp\gametypes\_admiral_mod_teamkill::CheckPlayerIsTeamkiller(self getGuid()) ) {
self setClientCvar("am_ex_befehl", "disconnect");
wait 0.5;
self openMenu("ex_befehl");
return;
}
}
PlayerCVarsInit(random_maplist) {
self endon("disconnect");
if(game["am_show_hit_location_graphic"] == 1) self maps\mp\gametypes\_admiral_mod_hud::ShowHitFigur("clean");
else self maps\mp\gametypes\_admiral_mod_hud::ShowHitFigur("");
if(game["am_gametype"] == "csd") self setClientCvar("am_ui_game_type", "csd");
else if(game["am_gametype"] == "noz") self setClientCvar("am_ui_game_type", "noz");
else self setClientCvar("am_ui_game_type", "");
// * Im Waffen-Menu der Axis, die Thompson als Balance Waffe auswählbar machen *
if(game["am_enable_weapon_thompson_for_axis"] == 1) self setClientCvar("ui_allow_thompson_german", "1");
else {
if(getcvar("ui_allow_thompson_german") == "1") self setClientCvar("ui_allow_thompson_german", "0");
}
// * Im Waffen-Menu der Americans, die Enfieled als Balance Waffe auswählbar machen *
if(game["am_enable_weapon_enfield_for_american"] == 1) self setClientCvar("ui_allow_enfield_american", "1");
else {
if(getcvar("ui_allow_enfield_american") == "1") self setClientCvar("ui_allow_enfield_american", "0");
}
// * Nur beim 1. Connect alles initialisieren (SD würde doppelte erzeugen) *
if(isDefined(self.pers["connect_init"])) return;
self.pers["connect_init"] = true;
self setClientCvar("mapname", game["am_mapname"]);
if(game["am_show_friends_and_enemys_on_compass"] == 1) self setClientCvar("am_ui_show_friends_and_enemys_on_compass", "1");
else self setClientCvar("am_ui_show_friends_and_enemys_on_compass", "0");
if(game["am_forced_autoassign"] == 1) self setClientCvar("ui_forced_autoassign", "1");
else {
if(game["am_gametype"] == "csd") self setClientCvar("ui_forced_autoassign", "csd");
else if(game["am_gametype"] == "noz") self setClientCvar("ui_forced_autoassign", "noz");
else self setClientCvar("ui_forced_autoassign", "other");
}
if(game["am_use_player_class_system"] == 1) {
self setClientCvar("ui_allow_changeteam", "1");
self setClientCvar("ui_allow_changeplayerclass", "1");
}
else {
if(getcvar("ui_allow_changeteam") == "1") self setClientCvar("ui_allow_changeteam", "0");
if(getcvar("ui_allow_changeplayerclass") == "1") self setClientCvar("ui_allow_changeplayerclass", "0");
}
self setClientCvar("rank_v", getcvar("_Mod") + " " + getcvar("_ModVer"));
self thread PlayerVoteCvarsInit(random_maplist);
// * AdmiralMod *
if(game["am_use_player_class_system"] == 1) {
self setClientCvar("am_ui_allow_player_class_0", "1");
self setClientCvar("am_ui_allow_player_class_1", "1");
self setClientCvar("am_ui_allow_player_class_2", "1");
self setClientCvar("am_ui_allow_player_class_3", "1");
self setClientCvar("am_ui_allow_player_class_4", "1");
self setClientCvar("am_ui_allow_player_class_5", "1");
self setClientCvar("am_ui_allow_player_class_6", "1");
self setClientCvar("am_ui_allow_player_class_7", "1");
self setClientCvar("am_gas_grenade_has_allies_class", game["am_gas_grenade_has_allies_class"]);
if(game["am_fire_grenade_has_allies_class"] != game["am_gas_grenade_has_allies_class"]) self setClientCvar("am_fire_grenade_has_allies_class", game["am_fire_grenade_has_allies_class"]);
else self setClientCvar("am_fire_grenade_has_allies_class", "-1");
self setClientCvar("am_gas_grenade_has_axis_class", game["am_gas_grenade_has_axis_class"]);
if(game["am_fire_grenade_has_axis_class"] != game["am_gas_grenade_has_axis_class"]) self setClientCvar("am_fire_grenade_has_axis_class", game["am_fire_grenade_has_axis_class"]);
else self setClientCvar("am_fire_grenade_has_axis_class", "-1");
}
else {
self setClientCvar("am_gas_grenade_has_allies_class", "-1");
self setClientCvar("am_gas_grenade_has_axis_class", "-1");
self setClientCvar("am_fire_grenade_has_allies_class", "-1");
self setClientCvar("am_fire_grenade_has_axis_class", "-1");
}
self setClientCvar("am_ui_mm_mission_text", " ");
// * COD3 Style *
if(game["am_hud_style"] == 2) self setClientCvar("am_ui_show_cod3_hud", "1");
else self setClientCvar("am_ui_show_cod3_hud", "");
self.pers["am_stance"] = 2;
self.pers["am_ui_show_bomb_menu"] = 0;
if(game["am_third_person_spectate"] == 1) self setclientcvar("cg_thirdperson", 1);
else self setclientcvar("cg_thirdperson", 0);
}
ForAllPlayersRandomMaps(){
// * Maps und Gametypes für Voting *
maplist = game["am_vote_maps_orig"];
gametypelist = game["am_vote_gametypes"];
mapanzahl = 8;
indexlist = [];
maplist_result = [];
for(i=0;i<mapanzahl;i++){
used = false;
index = RandomInt(maplist.size - 1);
for(j=0;j<mapanzahl;j++){
if(isDefined(indexlist[j]) && indexlist[j]== index){
used = true;
break;
}
}
if(used){
i--;
continue;
}
indexlist[i] = index;
}
if(game["am_vote_map"] == 1) {
for(i=0;i<mapanzahl;i++) {
index = indexlist[i];
if(isDefined(maplist[index])) {
//map = maps\mp\gametypes\_admiral_mod_utils::firstToUpper(maplist[index]);
maplist_result[i] = maplist[index];
//self setClientCvar("am_ui_vote_map_" + i, map);
}
//else {
// self setClientCvar("am_ui_vote_map_" + i, " ");
//}
}
}
return maplist_result;
}
PlayerVoteCvarsInit(random_maplist) {
self endon("disconnect");
wait 1 + RandomInt(10); // * Damit kein Server Command Overflow *
// * Bei Maprestart (Gametype SD, ...) nicht erneut die CVars laden *
if(isDefined(self.pers["VoteCvarsInit"])) return;
self.pers["VoteCvarsInit"] = true;
// * Vote: muß hier stehen, damit eine evtl. alte gesetzte 1 gelöscht wird *
self setClientCvar("am_ui_show_vote_headline", "0");
self setClientCvar("am_ui_show_vote_map_button", "0");
self setClientCvar("am_ui_show_vote_gametype_button", "0");
self setClientCvar("am_ui_show_vote_board_maps", "0");
self setClientCvar("am_ui_show_vote_board_gametypes", "0");
self setClientCvar("am_ui_show_vote_only_for_clanmembers", "0");
// * Maps und Gametypes für Voting *
gametypelist = game["am_vote_gametypes"];
/*
maplist = game["am_vote_maps_orig"];
mapanzahl = 8;
indexlist = [];
maplist_result = [];
for(i=0;i<mapanzahl;i++){
used = false;
index = RandomInt(maplist.size - 1);
for(j=0;j<mapanzahl;j++){
if(isDefined(indexlist[j]) && indexlist[j]== index){
used = true;
break;
}
}
if(used){
i--;
continue;
}
indexlist[i] = index;
}
*/
if(game["am_vote_map"] == 1) {
for(i=0;i<random_maplist.size;i++) {
//index = indexlist[i];
if(isDefined(random_maplist[i])) {
map = maps\mp\gametypes\_admiral_mod_utils::firstToUpper(random_maplist[i]);
self setClientCvar("am_ui_vote_map_" + i, map);
}
else {
self setClientCvar("am_ui_vote_map_" + i, " ");
}
}
}
game["am_vote_maps"] = random_maplist;
if(game["am_vote_gametype"] == 1) {
for(i=0;i<10;i++) {
if(isDefined(gametypelist[i])) {
gametype = maps\mp\gametypes\_admiral_mod_utils::getGametypeName(gametypelist[i]);
self setClientCvar("am_ui_vote_gametype_" + i, gametype);
}
else {
self setClientCvar("am_ui_vote_gametype_" + i, " ");
}
}
}
}
|
|
und weiter zum File maps/mp/gametypes/_admiral_mod_vote.gsc
Ersetze es komplett mit dem neuen Code hier, da ich nicht weiss, was genau geändert wurde:
(weiter im nächsten Posting)
__________________

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nightwing: 25.09.2007 03:04.
|
|
|
|
|
|
|
(weiter im Text)
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
|
// * AdmiralMOD by Matthias Lorenz, http://www.cod2mod.com *
Vote() {
if(game["am_error_logfile"] == 1) logPrint("Vote\n");
level notify("am_vote_start");
level.vote_starting = true;
players = getentarray("player", "classname");
if(players.size < 1) return;
maps\mp\gametypes\_admiral_mod_hud::deleteLevelHudElementAll();
if(isDefined(level.clock)) level.clock destroy();
// * Alle Player spawnen *
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++) {
// * Nur die Spieler Spawnen, die eine Teamzuordnung haben *
if(isDefined(players[i].pers["team"]) && (players[i].pers["team"] == "allies" || players[i].pers["team"] == "axis") ) {
players[i] maps\mp\gametypes\_admiral_mod_player::SpawnVotePlayer();
players[i] freezeControls(true);
}
// * Für Spectators nur Vote-Tabelle anzeigen *
if(isDefined(players[i].pers["team"]) && players[i].pers["team"] == "spectator") {
players[i].pers["team"] = "axis";
players[i].pers["weapon"] = "shotgun_mp";
players[i] maps\mp\gametypes\_admiral_mod_player::SpawnVotePlayer();
players[i] freezeControls(true);
}
}
wait 0.2;
players = getentarray("player","classname");
for(i=0;i<players.size;i++) {
players[i] openMenu("close_highscore");
players[i] closeMenu();
players[i] maps\mp\gametypes\_admiral_mod_player::ClearHud();
if(isDefined(players[i].hud_teamicon)) players[i].hud_teamicon destroy();
if(isDefined(players[i].hud_enemyicon)) players[i].hud_enemyicon destroy();
if(isDefined(players[i].hud_teamscore)) players[i].hud_teamscore destroy();
if(isDefined(players[i].hud_enemyscore)) players[i].hud_enemyscore destroy();
// * Wenn nur Clanmember, dann Check *
if(game["am_vote_only_clanmembers"] == 1) {
if(!isDefined(players[i].pers["clanmember"])) {
players[i] setClientCvar("am_ui_show_vote_only_for_clanmembers", "1");
continue;
}
// * Vote nur für Clanmembers *
if(game["am_vote_map"] == 1) players[i] thread maps\mp\gametypes\_admiral_mod_player::VoteMap(game["am_vote_maps"]);
if(game["am_vote_gametype"] == 1) players[i] thread maps\mp\gametypes\_admiral_mod_player::VoteGametype(game["am_vote_gametypes"]);
}
else {
// * Vote für alle *
if(game["am_vote_map"] == 1) players[i] thread maps\mp\gametypes\_admiral_mod_player::VoteMap(game["am_vote_maps"]);
if(game["am_vote_gametype"] == 1) players[i] thread maps\mp\gametypes\_admiral_mod_player::VoteGametype(game["am_vote_gametypes"]);
}
}
level maps\mp\gametypes\_admiral_mod_hud::createLevelHudElement("cinema_vote_top", 0,0,"left","top","fullscreen","fullscreen",false,"black",640,80,-50,1,0,0,0);
level maps\mp\gametypes\_admiral_mod_hud::createLevelHudElement("cinema_vote_bottom", 0,400,"left","top","fullscreen","fullscreen",false,"black",640,80,-50,1,0,0,0);
level maps\mp\gametypes\_admiral_mod_hud::createLevelHudElement("cinema_vote_top_line", 0,80,"left","top","fullscreen","fullscreen",false,"white",640,2,-50,1,0.7,0.7,0.7);
level maps\mp\gametypes\_admiral_mod_hud::createLevelHudElement("cinema_vote_bottom_line", 0,398,"left","top","fullscreen","fullscreen",false,"white",640,2,-50,1,0.7,0.7,0.7);
maps\mp\gametypes\_admiral_mod_hud::showVoteBoard();
level thread ShowMostVotedMaps();
level thread ShowMostVotedGametypes();
vote_zeit = game["am_vote_time"];
maps\mp\gametypes\_admiral_mod_hud::createLevelTimerHudElement("vote_timer", 320,450,"center","middle","fullscreen","fullscreen",false,"default",2,4,&"AM_MP_TIME_TO_VOTE",vote_zeit,1,0.7,0,0);
wait vote_zeit; // Vote Zeit
maps\mp\gametypes\_admiral_mod_hud::deleteLevelHudElementByName("vote_timer");
// *** Auswertung ***
level notify("am_vote_end");
wait 1;
// * Most Votes Anzeige beenden *
level notify("am_vote_end_most_votes");
// * Wenn kein Spieler mehr da, dann weiter in der normalen Map-Rotation *
players = getentarray("player", "classname");
if(players.size < 1) return;
// ** Map **
gewaehlte_map = -2;
if(game["am_vote_map"] == 1) {
map_vote_punkte = [];
// * Punkte-Liste auf 0 setzen (für die Maps) *
for(i=0;i<game["am_vote_maps"].size;i++) map_vote_punkte[i] = 0;
// * Ergebnis ermitteln *
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++) {
if(isDefined(players[i].vote_position_map)) {
pos = players[i].vote_position_map;
if(!isDefined(map_vote_punkte[pos])) map_vote_punkte[pos] = 0;
map_vote_punkte[pos]++;
}
}
map_meisten_punkte = 0;
gewaehlte_maps = [];
for(i = 0; i < game["am_vote_maps"].size; i++) {
if(isDefined(map_vote_punkte[i]) && map_vote_punkte[i] > map_meisten_punkte) {
map_meisten_punkte = map_vote_punkte[i];
}
}
gewaehlte_maps_count = 0;
for(i = 0; i < game["am_vote_maps"].size; i++) {
if(isDefined(map_vote_punkte[i]) && map_vote_punkte[i] == map_meisten_punkte) {
gewaehlte_maps[gewaehlte_maps_count] = i;
gewaehlte_maps_count++;
}
}
gewaehlte_map = gewaehlte_maps[RandomInt(gewaehlte_maps.size)];
}
// ** Gameytpe **
gewaehlte_gametype = -2;
if(game["am_vote_gametype"] == 1) {
gametype_vote_punkte = [];
// * Punkte-Liste auf 0 setzen (für die gametypes) *
for(i=0;i<game["am_vote_gametypes"].size;i++) gametype_vote_punkte[i] = 0;
// * Ergebnis ermitteln *
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++) {
if(isDefined(players[i].vote_position_gametype)) {
pos = players[i].vote_position_gametype;
if(!isDefined(gametype_vote_punkte[pos])) gametype_vote_punkte[pos] = 0;
gametype_vote_punkte[pos]++;
}
}
gametype_meisten_punkte = 0;
gewaehlte_gametypes = [];
for(i = 0; i < game["am_vote_gametypes"].size; i++) {
if(isDefined(gametype_vote_punkte[i]) && gametype_vote_punkte[i] > gametype_meisten_punkte) {
gametype_meisten_punkte = gametype_vote_punkte[i];
}
}
gewaehlte_gametypes_count = 0;
for(i = 0; i < game["am_vote_maps"].size; i++) {
if(isDefined(gametype_vote_punkte[i]) && gametype_vote_punkte[i] == gametype_meisten_punkte) {
gewaehlte_gametypes[gewaehlte_gametypes_count] = i;
gewaehlte_gametypes_count++;
}
}
gewaehlte_gametype = gewaehlte_gametypes[RandomInt(gewaehlte_gametypes.size)];
}
// *** Ergebnis anzeigen ***
//* gewählte Map und Gametype hervorheben (neue Position + Farben der Balken) *
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++) {
if(game["am_vote_map"] == 1) {
data = players[i] maps\mp\gametypes\_admiral_mod_hud::getPlayerHudElementDataByName("vote_point_map");
if(isDefined(data)) players[i] maps\mp\gametypes\_admiral_mod_hud::changePlayerHudElementByName("vote_point_map",data["shader"],data["width"],data["height"],0.7,data["color"]);
}
if(game["am_vote_gametype"] == 1) {
data = players[i] maps\mp\gametypes\_admiral_mod_hud::getPlayerHudElementDataByName("vote_point_gametype");
if(isDefined(data)) players[i] maps\mp\gametypes\_admiral_mod_hud::changePlayerHudElementByName("vote_point_gametype",data["shader"],data["width"],data["height"],0.7,data["color"]);
}
players[i] maps\mp\gametypes\_admiral_mod_hud::changePlayerHudElementPositionByName("vote_point_map",170,120 + gewaehlte_map * 15);
players[i] maps\mp\gametypes\_admiral_mod_hud::changePlayerHudElementPositionByName("vote_point_gametype",470,120 + gewaehlte_gametype * 15);
}
wait 5;
// * Hud befreien *
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++) {
players[i] maps\mp\gametypes\_admiral_mod_player::ClearHud();
players[i] setClientCvar("am_ui_show_vote_headline", "0");
players[i] setClientCvar("am_ui_show_vote_map_button", "0");
players[i] setClientCvar("am_ui_show_vote_gametype_button", "0");
players[i] setClientCvar("am_ui_show_vote_board_maps", "0");
players[i] setClientCvar("am_ui_show_vote_board_gametypes", "0");
players[i] setClientCvar("am_ui_show_vote_only_for_clanmembers", "0");
}
maps\mp\gametypes\_admiral_mod_hud::deleteLevelHudElementAll();
level maps\mp\gametypes\_admiral_mod_hud::createLevelHudElement("cinema_vote_top", 0,0,"left","top","fullscreen","fullscreen",false,"black",640,80,-50,1,0,0,0);
level maps\mp\gametypes\_admiral_mod_hud::createLevelHudElement("cinema_vote_bottom", 0,400,"left","top","fullscreen","fullscreen",false,"black",640,80,-50,1,0,0,0);
level maps\mp\gametypes\_admiral_mod_hud::createLevelHudElement("cinema_vote_top_line", 0,80,"left","top","fullscreen","fullscreen",false,"white",640,2,-50,1,0.7,0.7,0.7);
level maps\mp\gametypes\_admiral_mod_hud::createLevelHudElement("cinema_vote_bottom_line", 0,398,"left","top","fullscreen","fullscreen",false,"white",640,2,-50,1,0.7,0.7,0.7);
// * Nächste Map und nächster Gametype aus der normalen Maprotation holen *
map = maps\mp\gametypes\_admiral_mod_hud::getMapNameAsLocalizedString(maps\mp\gametypes\_admiral_mod_utils::getNextMap());
gametype = maps\mp\gametypes\_admiral_mod_hud::getGametypeNameAsLocalizedString(maps\mp\gametypes\_admiral_mod_utils::getNextGametype());
// * Wenn eine Map gewählt wurde, oder ein Gametype, dann diesen nehmen anstatt die/den aus der Maprotation *
if(game["am_vote_map"] == 1 && isDefined(game["am_vote_maps"][gewaehlte_map])) {
if(game["am_allow_vote_custom_maps"] == 1) {
// * Wenn Stock Map, dann mp_ *
if(maps\mp\gametypes\_admiral_mod_utils::isMapNameExists("mp_" + game["am_vote_maps"][gewaehlte_map])) map = maps\mp\gametypes\_admiral_mod_hud::getMapNameAsLocalizedString("mp_" + game["am_vote_maps"][gewaehlte_map]);
else map = game["am_vote_maps"][gewaehlte_map];
}
else {
if(maps\mp\gametypes\_admiral_mod_utils::isMapNameExists("mp_" + game["am_vote_maps"][gewaehlte_map])) map = maps\mp\gametypes\_admiral_mod_hud::getMapNameAsLocalizedString("mp_" + game["am_vote_maps"][gewaehlte_map]);
}
}
if(game["am_vote_gametype"] == 1 && isDefined(game["am_vote_gametypes"][gewaehlte_gametype]) && maps\mp\gametypes\_admiral_mod_utils::isGametypeNameExists(game["am_vote_gametypes"][gewaehlte_gametype])) gametype = maps\mp\gametypes\_admiral_mod_hud::getGametypeNameAsLocalizedString(game["am_vote_gametypes"][gewaehlte_gametype]);
iprintln(&"AM_MP_NEXT_MAP_AND_GAMETYPE",map,gametype);
if(game["am_allow_vote_custom_maps"] == 1) {
if(game["am_vote_map"] == 1 && isDefined(game["am_vote_maps"][gewaehlte_map]) && maps\mp\gametypes\_admiral_mod_utils::isMapNameExists("mp_" + game["am_vote_maps"][gewaehlte_map])) v_map = "mp_" + game["am_vote_maps"][gewaehlte_map];
else v_map = game["am_vote_maps"][gewaehlte_map];
}
else {
if(game["am_vote_map"] == 1 && isDefined(game["am_vote_maps"][gewaehlte_map]) && maps\mp\gametypes\_admiral_mod_utils::isMapNameExists("mp_" + game["am_vote_maps"][gewaehlte_map])) {
v_map = "mp_" + game["am_vote_maps"][gewaehlte_map];
}
else {
v_map = maps\mp\gametypes\_admiral_mod_utils::getNextMap();
}
}
if(game["am_vote_gametype"] == 1 && isDefined(game["am_vote_gametypes"][gewaehlte_gametype]) && maps\mp\gametypes\_admiral_mod_utils::isGametypeNameExists(game["am_vote_gametypes"][gewaehlte_gametype])) {
v_gametype = game["am_vote_gametypes"][gewaehlte_gametype];
}
else {
v_gametype = maps\mp\gametypes\_admiral_mod_utils::getNextGametype();
}
next_map = "gametype " + v_gametype + " map " + v_map;
setcvar("sv_maprotationcurrent",next_map);
wait 7;
}
ShowMostVotedMaps() {
level endon("am_vote_end_most_votes");
// *** Map ***
if(game["am_vote_map"] != 1) return;
if(game["am_error_logfile"] == 1) logPrint("ShowMostVotedMaps\n");
while(1) {
map_vote_punkte = [];
m = 0;
// * Punkte-Liste auf 0 setzen (für die Maps) *
for(i=0;i<game["am_vote_maps"].size;i++) map_vote_punkte[i] = 0;
// * Ergebnis ermitteln *
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++) {
if(isDefined(players[i].vote_position_map) && players[i].vote_position_map > -1) {
pos = players[i].vote_position_map;
map_vote_punkte[pos]++;
}
}
meistgewaehlte_maps = [];
meistgewaehlte_maps_votes = [];
while(m<3) {
map_meisten_punkte = 0;
for(i = 0; i < game["am_vote_maps"].size; i++) {
if(map_vote_punkte[i] > map_meisten_punkte && !InMeistgewaehlteMapListe(i,meistgewaehlte_maps)) {
map_meisten_punkte = map_vote_punkte[i];
meistgewaehlte_maps[m] = i;
meistgewaehlte_maps_votes[m] = map_meisten_punkte;
}
}
m++;
}
wait 0.5;
for(i=0;i<3;i++) {
level maps\mp\gametypes\_admiral_mod_hud::deleteLevelHudElementByName("most_votes_maps_" + i);
if(isDefined(meistgewaehlte_maps_votes[i]) && meistgewaehlte_maps_votes[i] > 0) level maps\mp\gametypes\_admiral_mod_hud::createLevelTextHudElement("most_votes_maps_" + i, 100,126 + 15 * meistgewaehlte_maps[i],"center","middle","fullscreen","fullscreen",false,undefined,meistgewaehlte_maps_votes[i],1.3,50,1,1,1,1);
}
}
}
InMeistgewaehlteMapListe(map_nr,meistgewaehlte_maps) {
if(game["am_error_logfile"] == 1) logPrint("InMeistgewaehlteMapListe\n");
for(i=0;i<meistgewaehlte_maps.size;i++) {
if(map_nr == meistgewaehlte_maps[i]) return true;
}
return false;
}
ShowMostVotedGametypes() {
if(game["am_error_logfile"] == 1) logPrint("ShowMostVotedGametypes\n");
level endon("am_vote_end_most_votes");
// *** Map ***
if(game["am_vote_gametype"] != 1) return;
while(1) {
gametype_vote_punkte = [];
m = 0;
// * Punkte-Liste auf 0 setzen (für die Gametypes) *
for(i=0;i<game["am_vote_gametypes"].size;i++) gametype_vote_punkte[i] = 0;
// * Ergebnis ermitteln *
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++) {
if(isDefined(players[i].vote_position_gametype) && players[i].vote_position_gametype > -1) {
pos = players[i].vote_position_gametype;
gametype_vote_punkte[pos]++;
}
}
meistgewaehlte_gametypes = [];
meistgewaehlte_gametypes_votes = [];
while(m<3) {
gametype_meisten_punkte = 0;
for(i = 0; i < game["am_vote_gametypes"].size; i++) {
if(gametype_vote_punkte[i] > gametype_meisten_punkte && !InMeistgewaehlteGametypeListe(i,meistgewaehlte_gametypes)) {
gametype_meisten_punkte = gametype_vote_punkte[i];
meistgewaehlte_gametypes[m] = i;
meistgewaehlte_gametypes_votes[m] = gametype_meisten_punkte;
}
}
m++;
}
wait 0.5;
for(i=0;i<3;i++) {
level maps\mp\gametypes\_admiral_mod_hud::deleteLevelHudElementByName("most_votes_gametypes_" + i);
if(isDefined(meistgewaehlte_gametypes_votes[i]) && meistgewaehlte_gametypes_votes[i] > 0) level maps\mp\gametypes\_admiral_mod_hud::createLevelTextHudElement("most_votes_gametypes_" + i, 395,126 + 15 * meistgewaehlte_gametypes[i],"center","middle","fullscreen","fullscreen",false,undefined,meistgewaehlte_gametypes_votes[i],1.3,50,1,1,1,1);
}
}
}
InMeistgewaehlteGametypeListe(gametype_nr,meistgewaehlte_gametypes) {
if(game["am_error_logfile"] == 1) logPrint("InMeistgewaehlteGametypeListe\n");
for(i=0;i<meistgewaehlte_gametypes.size;i++) {
if(gametype_nr == meistgewaehlte_gametypes[i]) return true;
}
return false;
}
|
|
Nun in jedem Gametyp.gsc File (dm.gsc, usw) in der Funktion main() folgendes hinzufügen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
main()
{
// * AdmiralMOD *
maps\mp\gametypes\_admiral_mod_vars::GetAMVars();
//*** hinzugefügt ***//
level.random_maplist = maps\mp\gametypes\_admiral_mod_player::ForAllPlayersRandomMaps();
//*** ENDE ***//
level.callbackStartGameType = ::Callback_StartGameType;
level.callbackPlayerConnect = ::Callback_PlayerConnect;
level.callbackPlayerDisconnect = ::Callback_PlayerDisconnect;
|
|
Dann weiter zur Funktion Callback_PlayerConnect(), dort nach dem Eintrag suchen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
|
// * AdmiralMOD *
if(game["am_enabled"] == 1){
self maps\mp\gametypes\_admiral_mod_player::PlayerConnect();
}
|
|
Nun in den Funktionsaufruf PlayerConnect(); folgenden Wert in die Klammer einsetzen level.random_maplist sollte dann so Aussehen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
|
// * AdmiralMOD *
if(game["am_enabled"] == 1){
self maps\mp\gametypes\_admiral_mod_player::PlayerConnect(level.random_maplist);
}
|
|
Nun noch den Voteeintrag in der CFG erweitern, hier ein Beispiel:
Anmerkung: Die Limitierung auf 15 Maps entfällt mit diesem Script, man kann nun alle Maps der Rotation hier reinschreiben...
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
|
// Voting (0/1), (0/1), (10/45), (0/1), (0/1)
set am_vote_map "1"
set am_vote_gametype "1"
set am_vote_time "20"
set am_vote_only_clanmembers "0"
// Maps for randomized Mapvote - Put here the same Maps as in Rotation
set am_vote_maps "gob_rats,mtl_pirates_day,mp_chelm,mp_cod_harbor,mp_nuenen,mp_elmechili2_v3,mp_elmechili2_v3_night,mp_anema,el_katarv1,mp_the_garage,mp_marketsqr,mp_canal_final,mp_buhlert,mp_carentan_ville,mp_pavlov,mp_gob_rats,mp_bridge,mp_noobville,mp_complex,mp_montelimar07,mp_tefr_thayane_beta,mp_moh_town,mtl_purgatory,mp_oase,mp_couch_lock_2,mp_wspawn,mp_mancheville_v2,mp_karushville,mp_the_tomb,mp_navaronne2b,mp_mirage_ver4,mp_belltown,mp_brecourt,mp_burgundy,mp_carentan,mp_decoy,mp_farmhouse,mp_matmata,mp_toujane,mp_harbor,mp_rhine"
// Limited to 4 Gametypes
set am_vote_gametypes "dm,tdm"
// Allow Custom Maps If you doing the wrong name in the "am_vote_maps" cvar ... the server will not find the map and crash/stop!
set am_allow_vote_custom_maps "1"
// If server is empty then maprotation after x sec (0/1), (360/720)
set am_empty_server_map_rotation "1"
set am_empty_server_map_rotation_waittime "720"
|
|
Lass mich bitte Wissen, obs funktioniert, oder ob ich irgendwie irgendwo irgendwas vergessen hab
ToM
__________________

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Nightwing: 26.09.2007 10:42.
|
|
|
|
|
|
|
Okay, ich sehe schon, Griff ins Klo...
Ich bastel den Mod mit der von Dir gewünschten Änderung nach und fix den Fehler. Meld mich die Tage dann, wenn fertig.
ToM
__________________

|
|
|
|
|
|
|
Habs gesehn, als ich zufälligerweise die falsche Taste drückte und ICQ aufging... Will heissen, ICQ ist bei mir fast immer aus
Helfen tu ich Dir hier, wir denken an die Boardregeln
ToM
__________________

|
|
|
|
|
|
|
So, okay es tut, hatte eine Variable vergessen zu Erwähnen, das die übergeben wird. Sorry
Editiere gerade mein Posting, lies es nochmal durch und ändere Deinen Mod entsprechend...
ToM
__________________

|
|
|
|
|
|
|
Original von faceman
sachma schläfst du auch irgendwann mal ^^
Na klar, waren zwar nur 6 Stunden, aber könnte Reichen...
Zum Problem:
Habe gerade getestet:
Stell in der cfg das aus:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
|
set am_vote_gametype "0"
|
|
und schreib in der Rotation die Maps so rein:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
|
gametype dm map mp_brecourt gametype tdm map mp_burgundy gametype ctf map mp_carentan gametype hq map mp_dawnville gametype sd map mp_decoy gametype dm map mp_downtown gametype tdm map mp_farmhouse gametype ctf map mp_harbor gametype hq map mp_leningrad gametype sd map mp_matmata gametype dm map mp_railyard gametype tdm map mp_rhine gametype ctf map mp_toujane |
|
Gibt natürlich keine Garantie für das ganze. Oh altes Hirn, hatte mich falsch erinnert...
@ [D-W] }{!tm@n:
Schreibe bei Maps to Vote alle Maps rein, die in der Rotation stehen, die Limitierung auf 15 Maps ist durch mein Script aufgehoben.
@ Wally: Wenn die Map den Gametyp nicht unterstützt, stürzt ein Server mit Mod ab. Beim Admiral Mod kommt: Verbindung unterbrochen, beim eXtreme sieht man nur im Statsboard den Ping aller auf -1 gehen.
Da Du einen ich nenns mal Minimod am laufen hast, der Rotationstechnisch keine Originalscripts überschreibt, ist es klar, das er bei Dir dann auf DM schwenkt...
Ich brauch sehr wohl Schlaf, aber da ich allerhöchstens nur noch Morgen arbeiten muss, juckt mich das irgendwie recht wenig
ToM
__________________

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Nightwing: 26.09.2007 10:53.
|
|
|
|
|
|
|
Hmmm, Du hast die Rotation so, wie oben das Beispiel ist?
Von wegen, gametype WUNSCH map mp_MAPNAME??
Damit musst mal herumexperimentieren, ich weiss nicht, wie sich der Mod dahingehend verhält...
ToM
__________________

|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|