|
 |
Losing Packets |
uweachim
Tele-Tubbie
Dabei seit: 27.01.2009
Beiträge: 141

|
|
CoD2, 1.3, extreme2.6 modern weapens
Moin moin Leute,
im extreme mod 2.7 bleiben nach der PB Losing Packets Meldung und dem Neueinstieg die Punkte die man hatte erhalten.
Leider sind meine Englischkentnisse nicht so gut, dass ich bei my cod nachfragen kann.
Gibt es vielleicht eine Möglichkeit, aus irgendeiner Datei in 2.7, das in den 2.6 zu kopieren, damit auch in meinem 2.6 die Punkte erhalten bleiben???????
Ich möchte nämlich nicht auf 2.7 umsteigen.
Danke und Gruß
Uwe
|
|
|
|
|
serthy
Codemeister
  
Dabei seit: 29.07.2010
Beiträge: 628

|
|
okay und los gehts:
mache lieber vorher eine kopie von jeder datei die du ab jetzt veränderst, damit dein server nicht total verunstaltet wird ^^
in der _ex_memory.gsc ganz oben in die init() muss das rein:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
|
registerMemory("score", "points", 0, 0, 1000000, "int");
registerMemory("score", "kills", 0, 0, 1000000, "int");
registerMemory("score", "deaths", 0, 0, 1000000, "int");
registerMemory("score", "bonus", 0, 0, 1000000, "int"); |
|
sieht dann so aus:
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:
|
#include extreme_ex_utils;
init()
{
// Either set it to true or false. DO NOT DISABLE!
level.ex_memory_log = false;
// registerMemory(memID, itemID, itemDef, itemMin, itemMax, itemType)
// itemType: "int", "bool", "char", "float", "string"
// itemMin on itemType "char" can be used as a string with valid characters
registerMemory("cinematic", "status", 1, 0, 1, "bool");
registerMemory("diana", "status", 0, 0, 1, "bool");
registerMemory("lrbind", "key", "m", "1234567890abcdefghijklmnopqrstuvwxyz", "", "char");
registerMemory("jukebox", "status", level.ex_jukebox_power ,0, 1, "bool");
registerMemory("jukebox", "loop", 0 ,0 ,1, "bool");
registerMemory("jukebox", "shuffle", 0, 0, 1, "bool");
registerMemory("jukebox", "track", 1, 1, 99, "int");
registerMemory("zoom", "sr", level.ex_zoom_default_sr, level.ex_zoom_min_sr, level.ex_zoom_max_sr, "int");
registerMemory("zoom", "lr", level.ex_zoom_default_lr, level.ex_zoom_min_lr, level.ex_zoom_max_lr, "int");
registerMemory("rcon", "pin", "xxxx", "", "", "string");
registerMemory("score", "points", 0, 0, 1000000, "int");
registerMemory("score", "kills", 0, 0, 1000000, "int");
registerMemory("score", "deaths", 0, 0, 1000000, "int");
registerMemory("score", "bonus", 0, 0, 1000000, "int");
//dumpMemoryStruct();
} |
|
okay hier sind wir fertig
weiter gehts in der _ex_clientcontrol.gsc in der 2. funktion namens exPlayerJoinedServer():
musst du nach
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
|
// check to see if the players name has changed since connecting
self extreme_ex_security::checkInit(); |
|
das einfügen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
memory = self extreme_ex_memory::getMemory("score", "points");
if(!memory.error) self.score = memory.value;
memory = self extreme_ex_memory::getMemory("score", "kills");
if(!memory.error) self.pers["kill"] = memory.value;
memory = self extreme_ex_memory::getMemory("score", "deaths");
if(!memory.error)
{
self.deaths = memory.value;
self.pers["death"] = memory.value;
}
memory = self extreme_ex_memory::getMemory("score", "bonus");
if(!memory.error) self.pers["bonus"] = memory.value; |
|
was am endo so aussieht:
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:
|
exPlayerJoinedServer()
{
// set one-off vars
self.ex_sinbin = false;
self.ex_glplay = undefined;
self.pers["spec_on"] = false;
self.pers["dth_on"] = false;
self.pers["intro_on"] = false;
// check to see if the players name has changed since connecting
self extreme_ex_security::checkInit();
memory = self extreme_ex_memory::getMemory("score", "points");
if(!memory.error) self.score = memory.value;
memory = self extreme_ex_memory::getMemory("score", "kills");
if(!memory.error) self.pers["kill"] = memory.value;
memory = self extreme_ex_memory::getMemory("score", "deaths");
if(!memory.error)
{
self.deaths = memory.value;
self.pers["death"] = memory.value;
}
memory = self extreme_ex_memory::getMemory("score", "bonus");
if(!memory.error) self.pers["bonus"] = memory.value;
// check if player prefers a female model
self extreme_ex_diana::checkDiana();
// make sure to update the ui_zoom variable
self extreme_ex_zoom::checkZoom();
|
|
speichern, server neustarten, und hoffen das es klappt
die deaths sollten klappen, score auch, bin mir aber bei den killstreaks nicht sicher
EDIT:
ich merke grade das es dabei passieren kann das deine stats immer wieder aufgerufen werden und nicht nach 1 min gelöscht werden :/
EDIT2:
okay, scheint nicht allzu verschachtelt zu sein: auf ein neues
alles so wie oben beschrieben machen
dann in die _ex_varcache.gsc gehen und danach suchen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
|
//****************************************************************************
// initialize players array
//****************************************************************************
level.players = []; |
|
und das darunter einfügen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
|
//****************************************************************************
// eXtreme+ score memory
//****************************************************************************
level.ex_scorememory = [[level.ex_drm]]("ex_scorememory", 60, 0, 3600, "int"); |
|
sodass es so aussieht:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
//****************************************************************************
// initialize players array
//****************************************************************************
level.players = [];
//****************************************************************************
// eXtreme+ score memory
//****************************************************************************
level.ex_scorememory = [[level.ex_drm]]("ex_scorememory", 60, 0, 3600, "int"); |
|
dann wieder in die _ex_memory.gsc gehen und das
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
|
if(level.ex_scorememory)
{
level.scorememory = [];
level thread onSecond();
} |
|
in die init() ganz unten drunter unter dem was du davor eingefügt hast einfügen, sieht dann so aus:
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:
|
init()
{
// Either set it to true or false. DO NOT DISABLE!
level.ex_memory_log = false;
// registerMemory(memID, itemID, itemDef, itemMin, itemMax, itemType)
// itemType: "int", "bool", "char", "float", "string"
// itemMin on itemType "char" can be used as a string with valid characters
registerMemory("cinematic", "status", 1, 0, 1, "bool");
registerMemory("diana", "status", 0, 0, 1, "bool");
registerMemory("lrbind", "key", "m", "1234567890abcdefghijklmnopqrstuvwxyz", "", "char");
registerMemory("jukebox", "status", level.ex_jukebox_power ,0, 1, "bool");
registerMemory("jukebox", "loop", 0 ,0 ,1, "bool");
registerMemory("jukebox", "shuffle", 0, 0, 1, "bool");
registerMemory("jukebox", "track", 1, 1, 99, "int");
registerMemory("zoom", "sr", level.ex_zoom_default_sr, level.ex_zoom_min_sr, level.ex_zoom_max_sr, "int");
registerMemory("zoom", "lr", level.ex_zoom_default_lr, level.ex_zoom_min_lr, level.ex_zoom_max_lr, "int");
registerMemory("rcon", "pin", "xxxx", "", "", "string");
registerMemory("score", "points", 0, 0, 1000000, "int");
registerMemory("score", "kills", 0, 0, 1000000, "int");
registerMemory("score", "deaths", 0, 0, 1000000, "int");
registerMemory("score", "bonus", 0, 0, 1000000, "int");
//dumpMemoryStruct();
if(level.ex_scorememory)
{
level.scorememory = [];
level thread onSecond();
}
} |
|
dann kommt gleich darunter folgendes:
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:
|
onSecond()
{
for( ; ; )
{
wait( [[level.ex_fpstime]]( 1.0 ) );
for(i = 0; i < level.scorememory.size; i++)
if(isDefined(level.scorememory[i].graceperiod) && level.scorememory[i].graceperiod > 0) level.scorememory[i].graceperiod--;
}
}
setScoreMemory(name)
{
index = -1;
// check if name is already in list
for(i = 0; i < level.scorememory.size; i++)
{
if(level.scorememory[i].name == name)
{
index = i;
break;
}
}
// name is not in list, so check for expired records
if(index == -1)
{
for(i = 0; i < level.scorememory.size; i++)
{
if(level.scorememory[i].graceperiod == 0)
{
index = i;
break;
}
}
}
// no expired records, so create new one
if(index == -1)
{
index = level.scorememory.size;
level.scorememory[index] = spawnstruct();
}
level.scorememory[index].graceperiod = level.ex_scorememory;
level.scorememory[index].name = name;
}
getScoreMemory(name)
{
index = -1;
// check if name is in list
for(i = 0; i < level.scorememory.size; i++)
{
if(isDefined(level.scorememory[i].name) && level.scorememory[i].name == name)
{
// check if still in grace period
if(level.scorememory[i].graceperiod > 0) index = i;
break;
}
}
// return true if player is still in grace period
return( (index != -1) );
}
|
|
was dann schlussendlich so (komplett) aussieht:
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:
|
init()
{
// Either set it to true or false. DO NOT DISABLE!
level.ex_memory_log = false;
// registerMemory(memID, itemID, itemDef, itemMin, itemMax, itemType)
// itemType: "int", "bool", "char", "float", "string"
// itemMin on itemType "char" can be used as a string with valid characters
registerMemory("cinematic", "status", 1, 0, 1, "bool");
registerMemory("diana", "status", 0, 0, 1, "bool");
registerMemory("lrbind", "key", "m", "1234567890abcdefghijklmnopqrstuvwxyz", "", "char");
registerMemory("jukebox", "status", level.ex_jukebox_power ,0, 1, "bool");
registerMemory("jukebox", "loop", 0 ,0 ,1, "bool");
registerMemory("jukebox", "shuffle", 0, 0, 1, "bool");
registerMemory("jukebox", "track", 1, 1, 99, "int");
registerMemory("zoom", "sr", level.ex_zoom_default_sr, level.ex_zoom_min_sr, level.ex_zoom_max_sr, "int");
registerMemory("zoom", "lr", level.ex_zoom_default_lr, level.ex_zoom_min_lr, level.ex_zoom_max_lr, "int");
registerMemory("rcon", "pin", "xxxx", "", "", "string");
registerMemory("score", "points", 0, 0, 1000000, "int");
registerMemory("score", "kills", 0, 0, 1000000, "int");
registerMemory("score", "deaths", 0, 0, 1000000, "int");
registerMemory("score", "bonus", 0, 0, 1000000, "int");
//dumpMemoryStruct();
if(level.ex_scorememory)
{
level.scorememory = [];
level thread onSecond();
}
}
onSecond()
{
for( ; ; )
{
wait( [[level.ex_fpstime]]( 1.0 ) );
for(i = 0; i < level.scorememory.size; i++)
if(isDefined(level.scorememory[i].graceperiod) && level.scorememory[i].graceperiod > 0) level.scorememory[i].graceperiod--;
}
}
setScoreMemory(name)
{
index = -1;
// check if name is already in list
for(i = 0; i < level.scorememory.size; i++)
{
if(level.scorememory[i].name == name)
{
index = i;
break;
}
}
// name is not in list, so check for expired records
if(index == -1)
{
for(i = 0; i < level.scorememory.size; i++)
{
if(level.scorememory[i].graceperiod == 0)
{
index = i;
break;
}
}
}
// no expired records, so create new one
if(index == -1)
{
index = level.scorememory.size;
level.scorememory[index] = spawnstruct();
}
level.scorememory[index].graceperiod = level.ex_scorememory;
level.scorememory[index].name = name;
}
getScoreMemory(name)
{
index = -1;
// check if name is in list
for(i = 0; i < level.scorememory.size; i++)
{
if(isDefined(level.scorememory[i].name) && level.scorememory[i].name == name)
{
// check if still in grace period
if(level.scorememory[i].graceperiod > 0) index = i;
break;
}
}
// return true if player is still in grace period
return( (index != -1) );
} |
|
dann müssen wir nochmal in die _ex_clientcontrol.gsc in der funktion in der wir vorhins waren, und etwas abändern (das was wir zuerst da eingefügt haben muss erweitert werden):
das hier haben wir vorhins eingefügt, und dass wieder löschen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
memory = self extreme_ex_memory::getMemory("score", "points");
if(!memory.error) self.score = memory.value;
memory = self extreme_ex_memory::getMemory("score", "kills");
if(!memory.error) self.pers["kill"] = memory.value;
memory = self extreme_ex_memory::getMemory("score", "deaths");
if(!memory.error)
{
self.deaths = memory.value;
self.pers["death"] = memory.value;
}
memory = self extreme_ex_memory::getMemory("score", "bonus");
if(!memory.error) self.pers["bonus"] = memory.value; |
|
und dafür das einsetzen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
if(level.ex_scorememory && level extreme_ex_memory::getScoreMemory(self.name))
{
memory = self extreme_ex_memory::getMemory("score", "points");
if(!memory.error) self.score = memory.value;
memory = self extreme_ex_memory::getMemory("score", "kills");
if(!memory.error) self.pers["kill"] = memory.value;
memory = self extreme_ex_memory::getMemory("score", "deaths");
if(!memory.error)
{
self.deaths = memory.value;
self.pers["death"] = memory.value;
}
memory = self extreme_ex_memory::getMemory("score", "bonus");
if(!memory.error) self.pers["bonus"] = memory.value;
} |
|
die KOMPLETTE funktion sollte jetzt so aussehen:
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:
|
exPlayerJoinedServer()
{
// set one-off vars
self.ex_sinbin = false;
self.ex_glplay = undefined;
self.pers["spec_on"] = false;
self.pers["dth_on"] = false;
self.pers["intro_on"] = false;
// check to see if the players name has changed since connecting
self extreme_ex_security::checkInit();
if(level.ex_scorememory && level extreme_ex_memory::getScoreMemory(self.name))
{
memory = self extreme_ex_memory::getMemory("score", "points");
if(!memory.error) self.score = memory.value;
memory = self extreme_ex_memory::getMemory("score", "kills");
if(!memory.error) self.pers["kill"] = memory.value;
memory = self extreme_ex_memory::getMemory("score", "deaths");
if(!memory.error)
{
self.deaths = memory.value;
self.pers["death"] = memory.value;
}
memory = self extreme_ex_memory::getMemory("score", "bonus");
if(!memory.error) self.pers["bonus"] = memory.value;
}
// check if player prefers a female model
self extreme_ex_diana::checkDiana();
// make sure to update the ui_zoom variable
self extreme_ex_zoom::checkZoom();
// detect forced auto-assign (0 = off, 1 = all, 2 = non-clan only)
self.ex_autoassign = 0;
if(level.ex_autoassign == 1) self.ex_autoassign = 1;
else if(level.ex_autoassign == 2 && (!isDefined(self.ex_name) || self.ex_clid != 1)) self.ex_autoassign = 1;
//if(self.ex_autoassign) logprint("TEAM DEBUG (C): " + self.name + " self.ex_autoassign switched onn");
// else logprint("TEAM DEBUG (C): " + self.name + " self.ex_autoassign switched offn");
if(self.ex_autoassign) self setClientCvar("ui_allow_select_team", "0");
else self setClientCvar("ui_allow_select_team", "1");
// bots need to reselect weapon on round based games with swapteams enabled
if(isDefined(self.pers["isbot"]))
{
if(level.ex_roundbased && level.ex_swapteams && game["roundsplayed"] > 0 && !isDefined(self.pers["weapon"]))
{
if(level.ex_testclients_diag) logprint(self.name + " reselecting new weapons...n");
self thread extreme_ex_bots::dbotLoadout();
}
}
// if roundbased, no need to hear any intro sounds again if they've already been playing
if(level.ex_roundbased && isDefined(self.pers) && isDefined(self.pers["score"])) return;
// if using the ready-up system, no need to hear any intro sounds again if they've already been playing
if(level.ex_readyup && isDefined(game["readyup_done"]) && isDefined(self.pers["team"])) return;
// start menu music
if(level.ex_gameover && (level.ex_endmusic || level.ex_mvmusic || level.ex_statsmusic)) skip_intromusic = true;
else skip_intromusic = false;
thread extreme_ex_maps::getmapstring(getCvar("mapname"));
if(!skip_intromusic && level.ex_intromusic > 0)
{
if(level.ex_intromusic == 1 && level.msc)
{
self.pers["intro_on"] = true;
self playlocalsound(getCvar("mapname"));
}
else
{
if(level.ex_intromusic == 2 && level.msc)
{
self.pers["intro_on"] = true;
self playlocalsound("mus_" + getCvar("mapname"));
}
else
{
if(level.ex_intromusic == 3 || !level.msc)
{
intro = randomInt(10) + 1;
self.pers["intro_on"] = true;
self playlocalsound("intromusic_" + intro);
}
}
}
}
if(level.ex_plcdmsg)
{
if( (isDefined(self.ex_name) && level.ex_clano[self.ex_clid]) || !isDefined(self.ex_name) )
iprintln(&"CLIENTCONTROL_HASJOINED", [[level.ex_pname]](self));
}
}
|
|
so nun ist das hoffentlich geschafft, jetzt fehlt nur noch einwas:
die zeit in die config schreiben..
gehe in den scriptdata ordner und suche dir eine config aus
ich nehme jetzt mal die serversettings.cfg und da kommt der befehl rein:
set ex_scorememory 60
bei 0 ist es ausgeschaltet und es muss zwichen 0 und 3600 liegen
also nach wie viel sekunden ein spieler der reconnected ist seine stats wiederhat
wie du siehst isses garnich so einfach, und hier können mehr als viele fehler jetzt rauskommen ^^...
trotzdem viel erfolg
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von serthy: 14.05.2012 20:59.
|
|
|
|
|
uweachim
Tele-Tubbie
Dabei seit: 27.01.2009
Beiträge: 141

|
|
Hallo du,
vielen vielen Dank für deine Mühe!!!!!!!
DAS geht mir aber ein bisschen zu sehr ins Eingemachte.
Habs begonnen, aber schon zwei Fehler gemacht.
Den Eintrag in der _ex_varcache.gsc
1:
2:
3:
4:
view sourceprint?1.
//*************************************************************************
***
2.
// initialize players array
3.
//*************************************************************************
***
4.
level.players = [];
finde ich nicht!!!!!!
Denke, da gebe ich lieber auf und lass es so wie es ist.
Tut mir echt leid,dass ich jetzt deine kostbare Zeit verschwendet habe.
Besteht vielleicht die Möglichkeit, dass ich dir die zu ändernden Dateien von mir schicke (e-mail oder so) und du mir die geänderten Dateien zurücksendest????????
Gruß
Uwe
|
|
|
|
|
uweachim
Tele-Tubbie
Dabei seit: 27.01.2009
Beiträge: 141

|
|
Moin moin du.
habe es gestern Abend zwei mal versucht, aber leider startet der Server dann nicht mehr.
Liegt an der _ex_clientcontrol.gsc sagt mein provider.
Hat lange genug gedauert.
Wir lassen es lieber so wie es ist.
Vielen vielen Dank noch mal und Gruß
Uwe
|
|
|
|
|
serthy
Codemeister
  
Dabei seit: 29.07.2010
Beiträge: 628

|
|
in der _ex_clientcontrol.gsc ganz unten das einfü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:
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:
|
getRecoveredStats()
{
if( level.recover_stats )
{
uGuid = self getGuid();
time = getTime();
if( uGuid == 0 )
return;
if( isDefined( level.recovered_stats ) && level.recovered_stats.size )
{
for( i = 0 ; i < level.recovered_stats.size ; i++ )
{
if( !isDefined( level.recovered_stats[i] ) )
continue;
if( !isDefined( level.recovered_stats[i].time ) )
continue;
if( time - level.recovered_stats[i].time >= level.recover_stats * 1000 )
continue;
if( level.recovered_stats[i].guid != uGuid )
continue;
self.score = level.recovered_stats[i].score;
self.deaths = level.recovered_stats[i].deaths;
level.recovered_stats[i] = undefined;
break;
}
}
}
}
setRecoveredStats()
{
if( !level.recover_stats )
return;
if( !isDefined( level.recovered_stats ) )
level.recovered_stats = [];
uGuid = self getGuid();
time = getTime();
index = -1;
if( uGuid == 0 )
return;
for( i = 0 ; i < level.recovered_stats.size ; i++ )
{
if( !isDefined( level.recovered_stats[i] ) )
continue;
if( level.recovered_stats[i].guid == uGuid )
{
index = i;
break;
}
}
if( index == -1 )
{
for( i = 0 ; i < level.recovered_stats.size ; i++ )
{
if( time - level.recovered_stats[i].time >= level.recover_stats * 1000 )
{
index = i;
break;
}
}
}
if( index == -1 )
{
index = level.recovered_stats.size;
level.recovered_stats[index] = spawnStruct();
}
level.recovered_stats[index].time = time;
level.recovered_stats[index].guid = uGuid;
level.recovered_stats[index].score = self.score;
level.recovered_stats[index].deaths = self.deaths;
} |
|
in der selben datei in der exPlayerJoinedServer() funktion das einfügen:
self thread getRecoveredStats();
und in der exPlayerDisconnect() funktion das einfügen:
self thread setRecoveredStats();
und in der _ex_varcache.gsc das iwe gehbat einfügen:
(zB. unter level.ex_intermission = [[level.ex_drm]]("ex_intermission", 10, 5, 60, "int";); )
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
|
level.recover_stats = [[level.ex_drm]]("ex_recoverstats", 60, 0, 3600, "int"); |
|
zu guter letzt noch in eine config schreiben:
set ex_recoverstats 60 // zeit in sekunden
das ist so gut, das hab ich gleich in meinen mod eingebaut :p
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von serthy: 18.05.2012 19:13.
|
|
|
|
|
uweachim
Tele-Tubbie
Dabei seit: 27.01.2009
Beiträge: 141

|
|
Hey du,
morgen früh (Samstag) kann ich auch das noch mal probieren. Wenns bei dir funktioniert, sollte es ja auch bei mir gehen ne.
Muss ich jetzt nur noch diese Änderungen in der _ex_clientcontrol.gsc durchführen, oder die in den anderen Dateien wie weiter oben beschrieben auch noch??
Horrido und bis bald
Uwe
|
|
|
|
|
uweachim
Tele-Tubbie
Dabei seit: 27.01.2009
Beiträge: 141

|
|
Moin moin,
bin ein Frühaufsteher!!!!!
Habe die Änderungen grad gemacht und siehe da, der Server startet auch!!!!!
Ob ALLES funktioniert, kann ich dir dann erst nach einer gewissen Spielzeit schreiben.
Denke, heute Nachmittag werden wir ne Runde spielen.
Das wäre ja der Hammer!!!! Weiß dar nicht, was ich dir Gutes tuen kann für deine Zeit und Mühe.
Auf jeden Fall: vielen vielen Dank und du bekommst dann sofort eine Rückmeldung.
Gruß
Uwe
|
|
|
|
|
uweachim
Tele-Tubbie
Dabei seit: 27.01.2009
Beiträge: 141

|
|
Hey du,
meine erste Rückmeldung!
Jetzt haben wir schon stundenlang gespielt, aber wie der Teufel es so will, es ist nicht einer mit der losing key packets Meldung rausgeflogen.
Ich kann dir also nicht sagen ob es funktioniert.
Geduld ist angesagt.
Gruß und ich melde mich wieder,
Uwe
|
|
|
|
|
uweachim
Tele-Tubbie
Dabei seit: 27.01.2009
Beiträge: 141

|
|
Moin moin serthy,
da hätte ich ja auch selbst mal drauf kommen können!!!!
Habs ausprobiert, und es funktioniert!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Vielen vielen Dank für deine Zeit und Mühe,
Gruß
Uwe
|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|