PDA

View Full Version : Pro nào giúp em sửa code cao cấp đoạn thạch đập thành công 100% vs



lehoanghiep9
17-10-14, 12:59 AM
Tình hình là em chưa biết cách sửa code ra sao để khi ép cao cấp đoạn thạch vào trang bị từ 4 sao trở lên cho nó thành công 100% không bị rớt sao :(. Pro nào giỏi về lập trình chỉ giúp em với em tks nhiều ;) ;)

..\currentnew\item\sell\2032.c >>code:
#include <item.h>
#include <ansi.h>
#include <equip.h>

inherit ITEM;
inherit "/inh/item/diamond";

// 函数:宝石识别
int is_diamond_2() { return 1; }

// 函数:需要确认卖出
int confirm_sell_item() { return 1; }

int get_item_color() {return 3 ;}

// 函数:宝石识别
int get_item_type() { return ITEM_TYPE_DIAMOND_3; }

// 函数:宝石属性
string get_diamond_type() { return "forge"; }

// 宝石锻造的辩别标志
string get_forge_index() {return "3";}

int is_specal_move() {return 1;}

// 函数:构造处理
void create()
{
set_name("Cao Cấp Đoạn Thạch");
set_real_name("Đoạn Thạch");
set_picid_1(4273);
set_picid_2(4273);
set_unit("块");
set_value(1000000);
set_level(1);
}

string get_desc()
{
return "Chỉ có thể luyện trang bị 4 sao hoặc cao hơn nữa, có thể tăng cường thuộc tính của trang bị.\n Nếu như luyện thất bại, trang bị sẽ giảm xuống 0 sao.\n Trang bị sẽ ngày càng cao theo số lần luyện, tỷ lệ thành công sẽ ngày càng thấp.";
}

int move_item(object me, object item, object equip)
{
return __FILE__->move_item_callout(me, item, equip, 1 );
}

int move_item2(object me, object item, object equip)
{
return __FILE__->move_item_callout(me, item, equip, 2 );
}

int move_item_callout(object me, object item, object equip, int type)
{
string result, forge;
object item2;
int i, p, level, rate;
if( equip->is_equip()==0 && equip->get_real_name()!="Đoạn Thạch" ) return 0;
if( equip->is_equip())
{
i=equip->get_equip_type();
if ( i!=WEAPON_TYPE&&i!=ARMOR_TYPE&&i!=HEAD_TYPE&&i!=BOOTS_TYPE&&i!=WAIST_TYPE&&i!=NECK_TYPE)
return 0;
}
if (equip->get_real_name()=="Đoạn Thạch" )
{
if (item->get_forge_index()!=equip->get_forge_index())
notify( "Cấp bậc không phù hợp, không thể hợp thành." );
else
notify( "Cao Cấp Đoạn Thạch không cần hợp thành." );
return 1;
}
forge = equip->get("forge");
if (forge==0) level = 0;
else level = strlen(forge);
if (level<4)
{
notify( "Cao Cấp Đoạn Thạch chỉ rèn được trang bị 4 sao trở lên." );
return 1;
}
rate = 10000;
for (i=4;i<=level;i++)
{
rate = rate * 3 / 5;
}
rate /= 100;
if ( me->get_vip() && !me->get_save_2("vip_package.trial") )
rate += 5;
if (rate>100) rate = 100;
if (type==1)
{
result = sprintf("Trang bị nếu rèn thất bại sẽ giảm xuống 0 sao, Tỷ lệ thành công là"HIR " %d%"NOR ",\nNgươi xác định phải rèn %s không?\n"
ESC "Chấp nhận\nmix3 0# %x# %x#\n"
ESC "Hủy bỏ",
rate, equip->get_name(), getoid(equip), getoid(item) );
send_user(me, "%c%c%w%s", ':', 3, 0, result);
return 1;
}
return 1;
}

BladeKnight109
17-10-14, 02:26 AM
Tình hình là em chưa biết cách sửa code ra sao để khi ép cao cấp đoạn thạch vào trang bị từ 4 sao trở lên cho nó thành công 100% không bị rớt sao :(. Pro nào giỏi về lập trình chỉ giúp em với em tks nhiều ;) ;)

..\currentnew\item\sell\2032.c >>code:
#include <item.h>
#include <ansi.h>
#include <equip.h>

inherit ITEM;
inherit "/inh/item/diamond";

// 函数:宝石识别
int is_diamond_2() { return 1; }

// 函数:需要确认卖出
int confirm_sell_item() { return 1; }

int get_item_color() {return 3 ;}

// 函数:宝石识别
int get_item_type() { return ITEM_TYPE_DIAMOND_3; }

// 函数:宝石属性
string get_diamond_type() { return "forge"; }

// 宝石锻造的辩别标志
string get_forge_index() {return "3";}

int is_specal_move() {return 1;}

// 函数:构造处理
void create()
{
set_name("Cao Cấp Đoạn Thạch");
set_real_name("Đoạn Thạch");
set_picid_1(4273);
set_picid_2(4273);
set_unit("块");
set_value(1000000);
set_level(1);
}

string get_desc()
{
return "Chỉ có thể luyện trang bị 4 sao hoặc cao hơn nữa, có thể tăng cường thuộc tính của trang bị.\n Nếu như luyện thất bại, trang bị sẽ giảm xuống 0 sao.\n Trang bị sẽ ngày càng cao theo số lần luyện, tỷ lệ thành công sẽ ngày càng thấp.";
}

int move_item(object me, object item, object equip)
{
return __FILE__->move_item_callout(me, item, equip, 1 );
}

int move_item2(object me, object item, object equip)
{
return __FILE__->move_item_callout(me, item, equip, 2 );
}

int move_item_callout(object me, object item, object equip, int type)
{
string result, forge;
object item2;
int i, p, level, rate;
if( equip->is_equip()==0 && equip->get_real_name()!="Đoạn Thạch" ) return 0;
if( equip->is_equip())
{
i=equip->get_equip_type();
if ( i!=WEAPON_TYPE&&i!=ARMOR_TYPE&&i!=HEAD_TYPE&&i!=BOOTS_TYPE&&i!=WAIST_TYPE&&i!=NECK_TYPE)
return 0;
}
if (equip->get_real_name()=="Đoạn Thạch" )
{
if (item->get_forge_index()!=equip->get_forge_index())
notify( "Cấp bậc không phù hợp, không thể hợp thành." );
else
notify( "Cao Cấp Đoạn Thạch không cần hợp thành." );
return 1;
}
forge = equip->get("forge");
if (forge==0) level = 0;
else level = strlen(forge);
if (level<4)
{
notify( "Cao Cấp Đoạn Thạch chỉ rèn được trang bị 4 sao trở lên." );
return 1;
}
rate = 10000;
for (i=4;i<=level;i++)
{
rate = rate * 3 / 5;
}
rate /= 100;
if ( me->get_vip() && !me->get_save_2("vip_package.trial") )
rate += 5;
if (rate>100) rate = 100;
if (type==1)
{
result = sprintf("Trang bị nếu rèn thất bại sẽ giảm xuống 0 sao, Tỷ lệ thành công là"HIR " %d%"NOR ",\nNgươi xác định phải rèn %s không?\n"
ESC "Chấp nhận\nmix3 0# %x# %x#\n"
ESC "Hủy bỏ",
rate, equip->get_name(), getoid(equip), getoid(item) );
send_user(me, "%c%c%w%s", ':', 3, 0, result);
return 1;
}
return 1;
}

thay đoạn bôi đỏ trên bằng đoạn dưới thử xem.

rate = 100;


Làm phép tính sau để cho ra kết quả: 1 + 1 x 2 = ? (gợi ý câu trả lời: 3)

lehoanghiep9
17-10-14, 07:01 PM
thay đoạn bôi đỏ trên bằng đoạn dưới thử xem.

rate = 100;


Làm phép tính sau để cho ra kết quả: 1 + 1 x 2 = ? (gợi ý câu trả lời: 3)

em thay code rồi nhưng vẫn thất bại rớt sao như thường :((:(( hình như nó còn tỉ lệ % rớt nữa :-s

YeuChienQuoc
17-10-14, 07:55 PM
Tình hình là em chưa biết cách sửa code ra sao để khi ép cao cấp đoạn thạch vào trang bị từ 4 sao trở lên cho nó thành công 100% không bị rớt sao :(. Pro nào giỏi về lập trình chỉ giúp em với em tks nhiều ;) ;)

..\currentnew\item\sell\2032.c >>code:
#include <item.h>
#include <ansi.h>
#include <equip.h>

inherit ITEM;
inherit "/inh/item/diamond";

// 函数:宝石识别
int is_diamond_2() { return 1; }

// 函数:需要确认卖出
int confirm_sell_item() { return 1; }

int get_item_color() {return 3 ;}

// 函数:宝石识别
int get_item_type() { return ITEM_TYPE_DIAMOND_3; }

// 函数:宝石属性
string get_diamond_type() { return "forge"; }

// 宝石锻造的辩别标志
string get_forge_index() {return "3";}

int is_specal_move() {return 1;}

// 函数:构造处理
void create()
{
set_name("Cao Cấp Đoạn Thạch");
set_real_name("Đoạn Thạch");
set_picid_1(4273);
set_picid_2(4273);
set_unit("块");
set_value(1000000);
set_level(1);
}

string get_desc()
{
return "Chỉ có thể luyện trang bị 4 sao hoặc cao hơn nữa, có thể tăng cường thuộc tính của trang bị.\n Nếu như luyện thất bại, trang bị sẽ giảm xuống 0 sao.\n Trang bị sẽ ngày càng cao theo số lần luyện, tỷ lệ thành công sẽ ngày càng thấp.";
}

int move_item(object me, object item, object equip)
{
return __FILE__->move_item_callout(me, item, equip, 1 );
}

int move_item2(object me, object item, object equip)
{
return __FILE__->move_item_callout(me, item, equip, 2 );
}

int move_item_callout(object me, object item, object equip, int type)
{
string result, forge;
object item2;
int i, p, level, rate;
if( equip->is_equip()==0 && equip->get_real_name()!="Đoạn Thạch" ) return 0;
if( equip->is_equip())
{
i=equip->get_equip_type();
if ( i!=WEAPON_TYPE&&i!=ARMOR_TYPE&&i!=HEAD_TYPE&&i!=BOOTS_TYPE&&i!=WAIST_TYPE&&i!=NECK_TYPE)
return 0;
}
if (equip->get_real_name()=="Đoạn Thạch" )
{
if (item->get_forge_index()!=equip->get_forge_index())
notify( "Cấp bậc không phù hợp, không thể hợp thành." );
else
notify( "Cao Cấp Đoạn Thạch không cần hợp thành." );
return 1;
}
forge = equip->get("forge");
if (forge==0) level = 0;
else level = strlen(forge);
if (level<4)
{
notify( "Cao Cấp Đoạn Thạch chỉ rèn được trang bị 4 sao trở lên." );
return 1;
}
rate = 10000;
for (i=4;i<=level;i++)
{
rate = rate * 3 / 5;
}
rate /= 100;
if ( me->get_vip() && !me->get_save_2("vip_package.trial") )
rate += 5;
if (rate>100) rate = 100;
if (type==1)
{
result = sprintf("Trang bị nếu rèn thất bại sẽ giảm xuống 0 sao, Tỷ lệ thành công là"HIR " %d%"NOR ",\nNgươi xác định phải rèn %s không?\n"
ESC "Chấp nhận\nmix3 0# %x# %x#\n"
ESC "Hủy bỏ",
rate, equip->get_name(), getoid(equip), getoid(item) );
send_user(me, "%c%c%w%s", ':', 3, 0, result);
return 1;
}
return 1;
}

Bạn vào cmd/std/mix3.c và tìm những dòng nào có chữ rate để chỉnh sửa nhé. Sửa xong thì lưu lại dưới dạng Encode in UFT8 without BOM hoặc dưới dạng ASCII ( ở đây mình dùng Notepadd++) :D

vd_tt
17-10-14, 08:41 PM
..\currentnew\item\sell\2032.c >>code:
#include <item.h>
#include <ansi.h>
#include <equip.h>

inherit ITEM;
inherit "/inh/item/diamond";

// 函数:宝石识别
int is_diamond_2() { return 1; }

// 函数:需要确认卖出
int confirm_sell_item() { return 1; }

int get_item_color() {return 3 ;}

// 函数:宝石识别
int get_item_type() { return ITEM_TYPE_DIAMOND_3; }

// 函数:宝石属性
string get_diamond_type() { return "forge"; }

// 宝石锻造的辩别标志
string get_forge_index() {return "3";}

int is_specal_move() {return 1;}

// 函数:构造处理
void create()
{
set_name("Cao Cấp Đoạn Thạch");
set_real_name("Đoạn Thạch");
set_picid_1(4273);
set_picid_2(4273);
set_unit("块");
set_value(1000000);
set_level(1);
}

string get_desc()
{
return "Chỉ có thể luyện trang bị 4 sao hoặc cao hơn nữa, có thể tăng cường thuộc tính của trang bị.\n Nếu như luyện thất bại, trang bị sẽ giảm xuống 0 sao.\n Trang bị sẽ ngày càng cao theo số lần luyện, tỷ lệ thành công sẽ ngày càng thấp.";
}

int move_item(object me, object item, object equip)
{
return __FILE__->move_item_callout(me, item, equip, 1 );
}

int move_item2(object me, object item, object equip)
{
return __FILE__->move_item_callout(me, item, equip, 2 );
}

int move_item_callout(object me, object item, object equip, int type)
{
string result, forge;
object item2;
int i, p, level, rate;
if( equip->is_equip()==0 && equip->get_real_name()!="Đoạn Thạch" ) return 0;
if( equip->is_equip())
{
i=equip->get_equip_type();
if ( i!=WEAPON_TYPE&&i!=ARMOR_TYPE&&i!=HEAD_TYPE&&i!=BO OTS_TYPE&&i!=WAIST_TYPE&&i!=NECK_TYPE)
return 0;
}
if (equip->get_real_name()=="Đoạn Thạch" )
{
if (item->get_forge_index()!=equip->get_forge_index())
notify( "Cấp bậc không phù hợp, không thể hợp thành." );
else
notify( "Cao Cấp Đoạn Thạch không cần hợp thành." );
return 1;
}
forge = equip->get("forge");
if (forge==0) level = 0;
else level = strlen(forge);
if (level<4)
{
notify( "Cao Cấp Đoạn Thạch chỉ rèn được trang bị 4 sao trở lên." );
return 1;
}
rate = 10000;
for (i=4;i<=level;i++)
{
rate = rate * 3 / 5;
}
rate /= 100;
if ( me->get_vip() && !me->get_save_2("vip_package.trial") )
rate += 5;
if (rate>100) rate = 100; ------------------------------------------ nếu rate >=100 thì cho lên 5 sao => cho nó : if (rate>100) rate=100 (rate<100);
if (type==1)
{
result = sprintf("Trang bị nếu rèn thất bại sẽ giảm xuống 0 sao, Tỷ lệ thành công là"HIR " %d%"NOR ",\nNgươi xác định phải rèn %s không?\n"
ESC "Chấp nhận\nmix3 0# %x# %x#\n"
ESC "Hủy bỏ",
rate, equip->get_name(), getoid(equip), getoid(item) );
send_user(me, "%c%c%w%s", ':', 3, 0, result);
return 1;
}
return 1;
}


ko có dev cq nhưng mà đoán thế này : nếu + - x / mà kết quả >=100 thì lên 5 sao => if (rate>100) rate=100 (rate<100); thì có lớn bé bằng cũng lên 5 sao >:) >:) , thử đi bác

deagle153
17-10-14, 08:43 PM
Sau khi chỉnh cái rate thành 100 thì bác vào bảo khố mua gói vip thì mới cường hóa k bị rớt

lehoanghiep9
17-10-14, 09:07 PM
Bạn vào cmd/std/mix3.c và tìm những dòng nào có chữ rate để chỉnh sửa nhé. Sửa xong thì lưu lại dưới dạng Encode in UFT8 without BOM hoặc dưới dạng ASCII ( ở đây mình dùng Notepadd++) :D

anh có thể hướng dẫn cụ thể hơn được không anh ? Ở mục cmd/std/mix3.c ấy đoạn mã code nào cần sửa lại để ép đoạn thạch từ 4 sao trở lên không bi rớt ấy . tks anh trước nha ;;)

#include <item.h>
#include <ansi.h>
#include <equip.h>

int check_match(object equip, object diamond);
int mix1(object me,object *item);

// 函数:命令处理
int main( object me, string arg )
{
object *item, who;
string name, make, result,forge,index;
int *id;
int i, flag, level, rate;

if( !arg ) return 1;

item = ({ 0, 0, }); id = ({ 0, 0, });

if( sscanf( arg, "? %s %x# %x#", name, id[0], id[1] ) == 3 ) flag = 1;
else if( sscanf( arg, "%s %x# %x#", name,
id[0], id[1] ) == 3 ) flag = 2;
else
{
notify( "Bạn muốn tinh luyện đồ vật gì?" );
return 1;
}
/*
if( !objectp( who = find_char(name) ) ) return 1;

if( !who->is_maker() ) return 1;

if( !inside_screen_2(me, who) )
{
notify( "Bạn cách %s quá xa rồi.", who->get_name() );
return 1;
}

me->to_front_eachother(who);
*/
if( flag == 1 ) //精炼成功率
{
for( i = 0; i < 2; i ++ )
{
if( !objectp( item[i] = present( sprintf("%x#", id[i]), me, 1, MAX_CARRY * 4 ) ) ) // 物品是否存在?
{
send_user( me, "%c%c%c%d", 0x25, 0, 0, 0 );
return 1;
}
}
if (item[1]->get_item_type()!=ITEM_TYPE_DIAMOND_3)
{
send_user( me, "%c%c%c%d", 0x25, 0, 0, 0 );
return 1;
}
if(item[1]->get_diamond_type() != "forge")//Đánh giá đá rèn có phù hợp hay không
{
make = item[0]->get("make");
level = item[1]->get_level();
if (make==0) make = "";
if (strlen(make)!=level-1)
{
send_user( me, "%c%c%c%d", 0x25, 0, 0, 0 );
return 1;
}
if (check_match(item[0], item[1])==0)
{
send_user( me, "%c%c%c%d", 0x25, 0, 0, 0 );
return 1;
}
}
else//Bản án đá giả mạo kết quả phù hợp với thiết bị.
{
forge = item[0]->get("forge");//Đây là ngôi sao của trang bị
if (forge==0) forge = "";
level = strlen(forge);
index = item[1]->get_forge_index();
if((level == 1||level == 0) && index!="1")
{
notify( "Loại đá rèn không phù hợp, không thể tinh luyện" );
return 1;
}
if((level == 2||level == 3) && index!="2" )
{
notify( "Loại đá rèn không phù hợp, không thể tinh luyện" );
return 1;
}
if(level >= 4)
{
if((index!="3" && index!="4"))
{
notify( "Loại đá rèn không phù hợp, không thể tinh luyện" );
return 1;
}
}
}
if(item[1]->get_diamond_type() == "forge")//Ở đây là để tính toán tỷ lệ thành công của các thiết bị tập thể dục rèn đá
{
rate = 10000;
for(i=4;i<=level;i++)
{
rate = rate * 3 / 5;
}
rate = rate / 100;
}
else//Dưới đây là tỷ lệ thành công thiết bị tính toán spar giả mạo.
{
switch(level)
{
case 1: rate = 100; break;
case 2: rate = 90; break;
case 3: rate = 80; break;
case 4: rate = 70; break;
case 5: rate = 60; break;
case 6: rate = 50; break;
case 7: rate = 40; break;
case 8: rate = 30; break;
case 9: rate = 20; break;
default: rate = 10; break;
}
}
if(level!=1 && me->get_vip() && !me->get_save_2("vip_package.trial"))
rate += 5;
send_user( me, "%c%c%c%d", 0x25, 0, rate, 0 );
return 1;
}
else //精炼装备
{
for( i = 0; i < 2; i ++ )
{
if( !objectp( item[i] = present( sprintf("%x#", id[i]), me, 1, MAX_CARRY * 4 ) ) ) // 物品是否存在?
{
return 1;
}
}
if (item[1]->get_item_type()!=ITEM_TYPE_DIAMOND_3)
{
notify( "Tinh chỉnh đá" );
return 1;
}
if ( item[1]->get_diamond_type() == "forge" )
{
return mix1( me,({item[0],item[1]}) ); //Giả mạo thiết bị đá giả mạo
}
if ( item[1]->get_mix_level() && item[0]->get_level() > item[1]->get_mix_level())
{
notify( sprintf("Xin lỗi, bạn không thể sử dụng các thiết bị hơn spar %d mức " ,item[1]->get_mix_level()));
return 1;
}
make = item[0]->get("make");
level = item[1]->get_level();
if (make==0) make = "";
if (strlen(make)!=level-1)
{
notify( "Tinh chỉnh bằng đá quý và mức độ thiết bị không phù hợp." );
return 1;
}
if (check_match(item[0], item[1])==0)
{
notify( "Các loại đá quý không phù hợp không thể được tinh chế" );
return 1;
}
switch(level)
{
case 1: rate = 100; break;
case 2: rate = 90; break;
case 3: rate = 80; break;
case 4: rate = 70; break;
case 5: rate = 60; break;
case 6: rate = 50; break;
case 7: rate = 40; break;
case 8: rate = 30; break;
case 9: rate = 20; break;
default: rate = 10; break;
}
if(level!=1 && me->get_vip() && !me->get_save_2("vip_package.trial"))
rate += 5;
if (random100()<rate)
{
item[0]->add(item[1]->get_diamond_type(), item[1]->get_diamond_add());
make += item[1]->get_diamond_index();
item[0]->set("make", make);
if (item[1]->is_record())
{
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
"/sys/user/cmd"->log_item(result);
}
item[1]->remove_from_user();
destruct( item[1] );
send_user( me, "%c%d%c", 0x31, getoid(item[0]), 0 );
write_user( me, ECHO " %s tinh luyện thành công! Bạn đạt được %s + %d .", item[0]->get_name(), item[0]->get_name(), level );
if (level>=9)
{
result = HIY+ sprintf("Chúc mừng %s ( %d ) thành công luyện được %s + %d ", me->get_name(), me->get_number(), item[0]->get_name(), level);
CHAT_D->sys_channel( 0, result );
}
}
else
{
if (item[1]->is_record())
{
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
"/sys/user/cmd"->log_item(result);
}
item[1]->remove_from_user();
destruct( item[1] );
write_user( me, ECHO "%s tinh luyện không thành công!", item[0]->get_name());
}
return 1;
}

return 1;
}

int check_match(object equip, object diamond)
{
string type = diamond->get_diamond_type();
switch(equip->get_equip_type())
{
case HEAD_TYPE:
case ARMOR_TYPE:
if (type=="hp") return 1;
if (type=="mp") return 1;
if (type=="dp") return 1;
if (type=="pp") return 1;
break;
case NECK_TYPE:
if (type!="double" && type!="double2") return 1;
break;
case WEAPON_TYPE:
if (type=="ap") return 1;
if (type=="cp") return 1;
if (type=="!%") return 1;
if (type=="double") return 1;
if (type=="double2") return 1;
break;
case WAIST_TYPE:
if (type!="ap" && type!="cp" && type!="double" && type!="double2") return 1;
break;
case BOOTS_TYPE:
if (type!="ap" && type!="cp" && type!="!%" && type!="double" && type!="double2") return 1;
break;
}
}
//锻造石精炼装备
int mix1(object me,object *item)
{
int level,rate,rate1,i,color,bind;
string forge,result, index;
if ( !(i=item[0]->get_equip_type())
|| (i!=WEAPON_TYPE&&i!=ARMOR_TYPE&&i!=HEAD_TYPE&&i!=BOOTS_TYPE&&i!=WAIST_TYPE&&i!=NECK_TYPE))
return 0;
forge = item[0]->get("forge");
index = item[1]->get_forge_index();
if (index<"1" || index >"4") return 0;
if (forge==0) forge = "";
level = strlen(forge);
if (item[1]->get_level()!=1)
{
notify( "Đá rèn cho các lớp học đầu vào công cộng trên một phân hủy." );
return 1;
}
if (index=="1")
{
if (level>1)
{
notify( "Rèn đá chính chỉ rèn thiết bị trong ít hơn 2 sao." );
return 1;
}
}
if (index=="2")
{
if (level>3)
{
notify( "Trung cấp rèn đá chỉ rèn thiết bị trong vòng 4 sao." );
return 1;
}
}
bind = item[0]->get_bind();
if ( me->get_level()/10 < level+1 )
{
notify( "Số sao trang bị chỉ rèn được × 10 cấp." );
return 0;
}
color = item[0]->get_item_color();
rate = 10000;
for(i=4;i<=level;i++)
rate = rate * 3 / 5;
rate = rate / 100;
if ( me->get_vip() && !me->get_save_2("vip_package.trial") )
rate += 5;
rate1 = random100();
if ( is_god(me) )
{
if (me->get("lb")) rate1 = me->get("lb");
tell_user(me,"Bây giờ xác xuất thành công %d là %d",rate,rate1);
}
if (rate1<rate)
{
forge += item[1]->get_forge_index();
if (item[1]->is_record())
{
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
"/sys/user/cmd"->log_item(result);
}

ITEM_EQUIP_D->init_equip_prop_5(item[0]);
if (color!=0) "/sys/sys/count"->add_equip("blue", -1);
item[0]->set("forge", forge);
item[1]->remove_from_user();
destruct( item[1] );
send_user( me, "%c%d%c", 0x31, getoid(item[0]), 0 );
level = strlen(forge);
write_user( me, ECHO "Chúc mừng bạn thành công rèn ra %d tinh cấp trang bị!", level );
if (level>=9)
{
result = HIY+ sprintf("Chúc mừng %s thành công rèn ra %d tinh cấp trang bị!", me->get_name(), level);
CHAT_D->sys_channel( 0, result );
}
}
else
{
if (item[1]->is_record())
{
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
"/sys/user/cmd"->log_item(result);
}
if (item[1]->get_forge_index()=="4")
{
ITEM_EQUIP_D->reduce_equip_prop(item[0]);
write_user( me, ECHO "Thật không may, rèn thất bại. %s của bạn giảm một ngôi sao", item[0]->get_name());
}
else
{
item[0]->delete("forge");
ITEM_EQUIP_D->reset_equip_prop(item[0]);
write_user( me, ECHO "Thật không may, rèn thất bại. %s của bạn mất hết ngôi sao", item[0]->get_name());
}
send_user( me, "%c%d%c", 0x31, getoid(item[0]), 0 );
item[1]->remove_from_user();
destruct( item[1] );
}
return 1;


}

YeuChienQuoc
17-10-14, 09:14 PM
Đoạn switch(level) ấy nhé :D, lâu rồi mình cũng ko dev lại nên không nhớ chính xác là cái trên hay cái dưới, thôi thì cứ cả hai cho chắc ;))

lehoanghiep9
17-10-14, 09:43 PM
Đoạn switch(level) ấy nhé :D, lâu rồi mình cũng ko dev lại nên không nhớ chính xác là cái trên hay cái dưới, thôi thì cứ cả hai cho chắc ;))

vẫn rớt như thường anh à không biết tại sao nữa em sửa cái dòng rate = 100; với cái switch(level) trong mix3.c mà không thay đổi gì cả :-ss

vd_tt
17-10-14, 10:00 PM
bảo sửa thế này thử xem, ko cần sửa 10000 thành 100 mà 8-| 8-| if (rate>100) rate=100 (rate<100);

lehoanghiep9
17-10-14, 11:04 PM
bảo sửa thế này thử xem, ko cần sửa 10000 thành 100 mà 8-| 8-| if (rate>100) rate=100 (rate<100);

em sửa được rồi tks anh đã chỉ em > thay đổi chỉ số VIP cho nó lên 100 thay vì là 5 .Kết quả đập sao từ 1 - 15 thành công 100% lun hehe:D:D