Формула Стрипа
-
что-то я немогу нигде найти =(
выложите пожалуйста ТОЧНУЮ формулу стрипа, которая работает на МОТР. ПАСИПА !!ЗЫ: арч не закрывай топик плз:)
-
oblivion, епт)
обли, это
[code:4pgun4ld]strip_fix = status_get_dex(src) - status_get_dex(bl);
вычитаем из декса рога декс врага
if(strip_fix < 0)
strip_fix=0;
если декс врага больше то 0
strip_per = 5+5*skilllv+strip_fix/5;
вот тут видно базовый шанс 5+25 (на 5ом лвле) плюс разница в дексах делить на 5
if (rand()%100 >= strip_per)
break;
проверка удачиВесь код стрипов:
case RG_STRIPWEAPON:/* XgbvEF| /
case RG_STRIPSHIELD:/ XgbvV[h /
case RG_STRIPARMOR:/ XgbvA[}[ /
case RG_STRIPHELM:/ Xgbvw */
{
struct status_change *tsc_data = status_get_sc_data(bl);
int cp_scid,scid, equip, strip_fix;
scid = SkillStatusChangeTable[skillid];
switch (skillid) {
case RG_STRIPWEAPON:
equip = EQP_WEAPON;
cp_scid = SC_CP_WEAPON;
break;
case RG_STRIPSHIELD:
equip = EQP_SHIELD;
cp_scid = SC_CP_SHIELD;
break;
case RG_STRIPARMOR:
equip = EQP_ARMOR;
cp_scid = SC_CP_ARMOR;
break;
case RG_STRIPHELM:
equip = EQP_HELM;
cp_scid = SC_CP_HELM;
break;
default:
map_freeblock_unlock();
return 1;
}if (tsc_data &&
(tsc_data[scid].timer!=-1 ||
tsc_data[cp_scid].timer!=-1))
break;strip_fix = status_get_dex(src) - status_get_dex(bl);
if(strip_fix < 0)
strip_fix=0;
strip_per = 5+5*skilllv+strip_fix/5;
if (rand()%100 >= strip_per)
break;if (dstsd) {
for (i=0;i<MAX_INVENTORY;i++) {
if (dstsd->status.inventory**.equip && (dstsd-**
>status.inventory.equip &**
equip)){
pc_unequipitem(dstsd,i,0);
break;
}
}
if (i == MAX_INVENTORY)
break;
}
clif_skill_nodamage(src,bl,skillid,skilllv,1);
strip_time = skill_get_time(skillid,skilllv)+strip_fix/2;
status_change_start(bl,scid,skilllv,0,0,0,strip_time,0 );
break;
}[/code:4pgun4ld] -
фигасе :)))
как я понял то шанс всегда 30% если стрипы по 5.
но идет бонус когда твой декс > декс врага и делится на 5...
пасиба за код епрст:))