- Joined
- Nov 5, 2006
- Messages
- 38
- Reaction score
- 0
hello, i want to know where i can download the zulie fix...cuz...mobs in my server don't drop any zulie.. i want to know how to fix that!
thankzz
thankzz
CDrop* CWorldServer::GetDrop( CMonster* thismon )
{
CDrop* newdrop = new (nothrow) CDrop;
if(newdrop==NULL)
{
Log(MSG_WARNING, "Error allocing memory [getdrop]" );
return NULL;
}
newdrop->clientid = GetNewClientID( );
newdrop->posMap = thismon->Position->Map;
newdrop->pos = RandInCircle( thismon->Position->current, 3 );
newdrop->droptime = time(NULL);
newdrop->owner = thismon->MonsterDrop->firsthit;
newdrop->thisparty = thismon->thisparty;
ClearItem(newdrop->item);
int randv = RandNumber( 1, 100);
if(thismon->MonsterDrop->mapdrop->level_max<thismon->MonsterDrop->firstlevel) randv = 100;
if(randv<=30)//30% zuly [zulies will count as mapdrop]
{
if(thismon->MonsterDrop->mapdrop->level_max>=thismon->MonsterDrop->firstlevel)
{
newdrop->type = 1; //Drop Zuly
newdrop->amount = thismon->thisnpc->level*5*Config.ZULY_RATE + RandNumber( 1, 10 );
return newdrop;
}
delete newdrop;
return NULL;
}
CMDrops* thisdrops;
newdrop->type = 2; //drop item drop
switch( Config.DROP_TYPE )
{
case 0://only map
thisdrops = thismon->MonsterDrop->mobdrop;
if(thisdrops->level_max<thismon->MonsterDrop->firstlevel)
{
delete newdrop;
return NULL;
}
break;
case 1://mob only
thisdrops = thismon->MonsterDrop->mapdrop;
if(thismon->thisnpc->level-thismon->MonsterDrop->firstlevel<-14)
{
delete newdrop;
return NULL;
}
break;
default://both
randv = RandNumber(1,100);
if(thismon->MonsterDrop->mapdrop!=NULL)
if(thismon->MonsterDrop->mapdrop->level_max<thismon->MonsterDrop->firstlevel)
randv = 100;
if(randv>60)//select wich drop will use (map or mob) //40 - 60%
{
thisdrops = thismon->MonsterDrop->mobdrop;
if((int)(thismon->thisnpc->level-thismon->MonsterDrop->firstlevel) < -14)
{
delete newdrop;
return NULL;
}
}
else
{
thisdrops = thismon->MonsterDrop->mapdrop;
if(thisdrops->level_max<thismon->MonsterDrop->firstlevel)
{
delete newdrop;
return NULL;
}
}
break;
}
if(thisdrops==NULL)
{
thisdrops = thismon->MonsterDrop->mobdrop;
if(thisdrops==NULL)
{
thisdrops = thismon->MonsterDrop->mapdrop;
if(thisdrops==NULL)
{
newdrop->type = 1; //Drop Zuly
newdrop->amount = thismon->thisnpc->level*5*Config.ZULY_RATE - RandNumber( 1, 20 );
return newdrop;
}
}
}
randv = 0;
randv = RandNumber( 1, thisdrops->probmax );
DWORD prob = 1;
for(UINT i=0;i<thisdrops->Drops.size();i++)
{
CDropInfo* dropinfo = thisdrops->Drops.at( i );
prob += dropinfo->prob;
if(randv<=prob)
{
newdrop->item.itemtype = dropinfo->type;
newdrop->item.itemnum = dropinfo->item;
break;
}
}
if(newdrop->item.itemtype==0)
{
Log(MSG_WARNING, "Drop Probability Highter: %i", randv );
delete newdrop;
return NULL;
}
if(newdrop->item.itemtype>1 && newdrop->item.itemtype<10 && newdrop->item.itemtype!=JEWEL)
{
// Refine
randv = RandNumber( 1, 100 );
if( randv < 10 ) //10%
newdrop->item.refine = 48;
else if( randv < 25 ) //15%
newdrop->item.refine = 32;
else if( randv < 50 ) // 25%
newdrop->item.refine = 16;
else //50%
newdrop->item.refine = 0;
newdrop->item.lifespan = RandNumber( 30, 100 );
newdrop->item.durability = RandNumber( 35, 70 );
if( newdrop->item.itemtype==WEAPON || newdrop->item.itemtype==SUBWEAPON )
{
//socketed
randv = RandNumber( 1, 100 );
if( randv < 30 ) newdrop->item.socketed = true; // 30%
else newdrop->item.socketed = false; // 70%
}
else
{
newdrop->item.socketed = false;
}
randv = RandNumber( 1, 100 );
if( randv < 30 ) // 30%
newdrop->item.stats = rand()%300;
newdrop->item.appraised = newdrop->item.stats==0?true:false;
}
else
{
newdrop->item.lifespan = 100;
newdrop->item.durability = 40;
newdrop->item.socketed = false;
newdrop->item.stats = 0;
}
newdrop->item.count = 1;
if( newdrop->item.itemtype == 10 || newdrop->item.itemtype == 12 )
{
newdrop->item.count = RandNumber( 1, 3 );
}
newdrop->item.gem = 0;
return newdrop;
}
if(thismon->MonsterDrop->mapdrop->level_max<thismon->MonsterDrop->firstlevel) randv = 100;
if(thisdrops==NULL)
{
thisdrops = thismon->MonsterDrop->mobdrop;
if(thisdrops==NULL)
{
thisdrops = thismon->MonsterDrop->mapdrop;
if(thisdrops==NULL)
{
newdrop->type = 1; //Drop Zuly
newdrop->amount = thismon->thisnpc->level*5*Config.ZULY_RATE - RandNumber( 1, 20 );
return newdrop;
}
}
}
after commenting out the whole line the mobs still only drop gear...I hadn't noticed before, but after decimating several hundred mobs, just to be sure I wasn't being impatient, I noticed that not only are they not dropping zuly boxes...but they aren't dropping etc.'s either...
maybe commenting out that line worked like it was supposed to but I'm not seeing the zuly boxes because something else is borking up my drops somewhere else...
I'll have to see if 'search' still hates me and try to find additional information in the forums...
I'm a little leary about removing all references to "thismon->MonsterDrop->firstlevel" as I'm not sure what exactly it does and what to do if I break it even further (aside from restoring the file from an incremental backup)... would I just be removing it from any line it's in (leaving the rest of the line intact), or would I be commenting out the whole line that I find it in...just this file, or any file I find it in...etc etc etc
I'm using this whole project as a learning experience as I'm fairly new to programming in general (which I'm sure is painfuly obvious) but work has been driving me nuts the past couple of weeks and I haven't had a chance to sit down and read through some of the code to figure out what does what...
newdrop->type = 1; //Drop Zuly
newdrop->amount = thismon->thisnpc->level*5*Config.ZULY_RATE - RandNumber( 1, 20 );
return newdrop;
if(thismon->MonsterDrop->mapdrop->level_max>=thismon->MonsterDrop->firstlevel)
{
newdrop->type = 1; //Drop Zuly
newdrop->amount = thismon->thisnpc->level*5*Config.ZULY_RATE + RandNumber( 1, 10 );
return newdrop;
}
delete newdrop;
return NULL;
int randv = RandNumber( 1, 100);
if(thismon->MonsterDrop->mapdrop->level_max<thismon->MonsterDrop->firstlevel) randv = 100;
if(randv<=30)//30% zuly [zulies will count as mapdrop]
{
if(thismon->MonsterDrop->mapdrop->level_max>=thismon->MonsterDrop->firstlevel)
{
newdrop->type = 1; //Drop Zuly
newdrop->amount = thismon->thisnpc->level*5*Config.ZULY_RATE + RandNumber( 1, 10 );
return newdrop;
}
delete newdrop;
return NULL;
}
int randv = RandNumber( 1, 100);
//if(thismon->MonsterDrop->mapdrop->level_max<thismon->MonsterDrop->firstlevel) randv = 100;
if(randv<=30)//30% zuly drop and NO they WON'T be counted as a map drop
{
//if(thismon->MonsterDrop->mapdrop->level_max>=thismon->MonsterDrop->firstlevel)
//{
newdrop->type = 1; //Drop Zuly
newdrop->amount = thismon->thisnpc->level*5*Config.ZULY_RATE + RandNumber( 1, 10 );
return newdrop;
//}
//delete newdrop;
//return NULL;
}