G_FindConfigstringIndex: overflow (309)

mirko911
HI ,

da unserer Server im mehr PUB wird, merke ich, wie die Spieler immer öfter durch
G_FindConfigstringIndex: overflow (309): '
gekickt werden. Ich vermute , dass es durch mein KD Ratio Script kommt. Wenn die Division zu lange ist.
Hier meine Frage:
kann ich den Fehler irgendwie beseiitigen?
ShowKDRatio()
{
self notify( "new_KDRRatio" );
self endon( "new_KDRRatio" );
self endon( "disconnect" );

if( IsDefined( self.mc_kdratio ) )
{
self.mc_kdratio Destroy();
}

wait ( 0.05 );

self.mc_kdratio = NewClientHudElem(self);
self.mc_kdratio.x = 7;
self.mc_kdratio.y = 140;
self.mc_kdratio.horzAlign = "left";
self.mc_kdratio.vertAlign = "top";
self.mc_kdratio.alignX = "left";
self.mc_kdratio.alignY = "middle";
self.mc_kdratio.alpha = 1;
self.mc_kdratio.fontScale = 1.4;
self.mc_kdratio.hidewheninmenu = true;
self.mc_kdratio.color = (0.97, 0.94, 0.26);
self.mc_kdratio.label = &"K/D Ratio: ";

self.mc_headshot = NewClientHudElem(self);
self.mc_headshot.x = 7;
self.mc_headshot.y = 150;
self.mc_headshot.horzAlign = "left";
self.mc_headshot.vertAlign = "top";
self.mc_headshot.alignX = "left";
self.mc_headshot.alignY = "middle";
self.mc_headshot.alpha = 1;
self.mc_headshot.fontScale = 1.4;
self.mc_headshot.hidewheninmenu = true;
self.mc_headshot.color = (0.97, 0.94, 0.26);
self.mc_headshot.label = &"Headshots: ^1 ";

while( true )
{
text = "^5--";
ratio = 0;

hs = self.pers[ "headshots" ];
kills = self.pers[ "kills" ];
deaths = self.pers[ "deaths" ];

if( IsDefined( kills ) && IsDefined( deaths ) )
{
if( deaths < 1 )
{
deaths = 1;
}

if( kills > 0 )
{
ratio = itof( kills ) / itof( deaths );
if( ratio == 1)
{
text = "^2" + ratio;
}
if( ratio < 1)
{
text = "^1" + ratio;
}
else{
text = "^3" + ratio;
}
}
}
if( ratio > 15){
wait ( 0.5 );
self giveweapon("mp5_mp");

self SetWeaponAmmoClip( "mp5_mp", 30 );

self switchToWeapon("mp5_mp");
}

self.mc_kdratio SetText( text );
self.mc_headshot SetText( hs );
wait ( 0.05 );
}
}


itof( int )
{
SetDvar( "temp_float", int );
return GetDvarFloat( "temp_float" );
}
serthy
eventuell musst du deinen text den du einsetzen musst precachen (in einer init() am anfang):
precacheString( &"Headshots: &&1" );
vll hilft das schon..(falls du alles precachen musst bei cod4 muss das auch mit den zahlen und farben geschehen, lösung dafür wäre 3 &"Headshots: ^3&&1" für je eine farbe zu precachen und dann die zahl mit setValue einfach nur einfügen)
und warum benutzt du ratio = itof( kills ) / itof( deaths ); anstatt normal ratio = kills / deaths; ?
wenn du die kommazahlen begrenzen willst könntest du das folgendermaßen machen:
ratio = int( ratio * 1000 ) / 1000;
(anzahl der nachkommastellen entsprechen den nullen)
mirko911
ich hatte mir da mal was zusammengeschrieben , da ich jetzt nicht der überpro im modden bin.

Fragte mich eh schon was das soll.

Ich werde es mal mit int() versuichen.
bzw wäre float nicht besser?
serthy
die itof() funktion ist i-wie hier sinnlos
kills & deaths können ja nur ganzzahlig sein, also ist es egal ob da 10 kills oder 10.0 (sprich 10-komma-0) kills steht
um die nachkommastellen zu begrennzen nimm:
ratio = int( ratio * 1000 ) / 1000;
beispiel:
k/d: 10/3
ratio = 10 / 3 = 3.33333333333
ratio = ratio * 1000 = 3333.33333333
int( ratio ) = 3333
ratio / 1000 = 3333 / 1000 = 3.333
so hast du es auf 3 kommastellen begrenzt
dazu brauchst du keine float()-fkt, die es eh nicht gibt außer sie ist selbst geschrieben