Kết quả 1 đến 10 của 11
-
17-10-14, 12:59 AM #1
- Ngày tham gia
- Oct 2014
- Bài viết
- 15
- Thanks
- 1
- Thanked 2 Times in 1 Post
Pro nào giúp em sửa code cao cấp đoạn thạch đập thành công 100% vs
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!=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;
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;
}Lần sửa cuối bởi lehoanghiep9, ngày 17-10-14 lúc 01:03 AM.
Khách viếng thăm hãy cùng lehoanghiep9 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
17-10-14, 02:26 AM #2
- Ngày tham gia
- Jun 2014
- Đang ở
- 0x00000000
- Bài viết
- 1,135
- Thanks
- 151
- Thanked 951 Times in 465 Posts
Ðề: Pro nào giúp em sửa code cao cấp đoạn thạch đập thành công 100% vs
-
17-10-14, 07:01 PM #3
- Ngày tham gia
- Oct 2014
- Bài viết
- 15
- Thanks
- 1
- Thanked 2 Times in 1 Post
Ðề: Pro nào giúp em sửa code cao cấp đoạn thạch đập thành công 100% vs
Khách viếng thăm hãy cùng lehoanghiep9 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
17-10-14, 07:55 PM #4
- Ngày tham gia
- Feb 2011
- Đang ở
- Je suis là où l'esprit est libre...
- Bài viết
- 64
- Thanks
- 27
- Thanked 14 Times in 8 Posts
Ðề: Pro nào giúp em sửa code cao cấp đoạn thạch đập thành công 100% vs
Lần sửa cuối bởi YeuChienQuoc, ngày 17-10-14 lúc 08:03 PM. Lý do: Inconditionnel
Khách viếng thăm hãy cùng YeuChienQuoc xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
17-10-14, 08:41 PM #5
Ðề: Pro nào giúp em sửa code cao cấp đoạn thạch đập thành công 100% vs
PHP Code:..\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;
}
Lần sửa cuối bởi vd_tt, ngày 17-10-14 lúc 08:44 PM.
Khách viếng thăm hãy cùng vd_tt xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
17-10-14, 08:43 PM #6
- Ngày tham gia
- Sep 2014
- Bài viết
- 10
- Thanks
- 6
- Thanked 0 Times in 0 Posts
Ðề: Pro nào giúp em sửa code cao cấp đoạn thạch đập thành công 100% vs
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
Khách viếng thăm hãy cùng deagle153 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
17-10-14, 09:07 PM #7
- Ngày tham gia
- Oct 2014
- Bài viết
- 15
- Thanks
- 1
- Thanked 2 Times in 1 Post
Ðề: Pro nào giúp em sửa code cao cấp đoạn thạch đập thành công 100% vs
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( !whis_maker() ) return 1;
if( !inside_screen_2(me, who) )
{
notify( "Bạn cách %s quá xa rồi.", whget_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())
{
result = sprintf("Tinh chế thành công biến mất %s,%d,%s,%s @%s %s %s %d %s %d_%d_%d", me->get_name(), me->get_number(), get_ip_name(me), me->get_id(), "", item[1]->get_name(), "/sys/item/item"->get_pawn_save_string(item[1]), 1, item[1]->get_user_id(), get_z(me), get_x(me), get_y(me) );
"/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())
{
result = sprintf("Tinh chỉnh không biến mất %s,%d,%s,%s @%s %s %s %d %s %d_%d_%d", me->get_name(), me->get_number(), get_ip_name(me), me->get_id(), "", item[1]->get_name(), "/sys/item/item"->get_pawn_save_string(item[1]), 1, item[1]->get_user_id(), get_z(me), get_x(me), get_y(me) );
"/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!=B OOTS_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())
{
result = sprintf("Tinh chế thành công biến mất %s,%d,%s,%s @%s %s %s %d %s %d_%d_%d", me->get_name(), me->get_number(), get_ip_name(me), me->get_id(), "", item[1]->get_name(), "/sys/item/item"->get_pawn_save_string(item[1]), 1, item[1]->get_user_id(), get_z(me), get_x(me), get_y(me) );
"/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())
{
result = sprintf("Giả mạo không thành công biến mất %s,%d,%s,%s @%s %s %s %d %s %d_%d_%d", me->get_name(), me->get_number(), get_ip_name(me), me->get_id(), "", item[1]->get_name(), "/sys/item/item"->get_pawn_save_string(item[1]), 1, item[1]->get_user_id(), get_z(me), get_x(me), get_y(me) );
"/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;
}Lần sửa cuối bởi lehoanghiep9, ngày 17-10-14 lúc 09:09 PM.
Khách viếng thăm hãy cùng lehoanghiep9 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
17-10-14, 09:14 PM #8
- Ngày tham gia
- Feb 2011
- Đang ở
- Je suis là où l'esprit est libre...
- Bài viết
- 64
- Thanks
- 27
- Thanked 14 Times in 8 Posts
Ðề: Pro nào giúp em sửa code cao cấp đoạn thạch đập thành công 100% vs
Đoạn switch(level) ấy nhé , 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
Lần sửa cuối bởi YeuChienQuoc, ngày 17-10-14 lúc 09:15 PM. Lý do: Manque d'1 l
Khách viếng thăm hãy cùng YeuChienQuoc xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
17-10-14, 09:43 PM #9
- Ngày tham gia
- Oct 2014
- Bài viết
- 15
- Thanks
- 1
- Thanked 2 Times in 1 Post
Ðề: Pro nào giúp em sửa code cao cấp đoạn thạch đập thành công 100% vs
Khách viếng thăm hãy cùng lehoanghiep9 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
17-10-14, 10:00 PM #10
Ðề: Pro nào giúp em sửa code cao cấp đoạn thạch đập thành công 100% vs
bảo sửa thế này thử xem, ko cần sửa 10000 thành 100 mà if (rate>100) rate=100 (rate<100);
Khách viếng thăm hãy cùng vd_tt xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
Các Chủ đề tương tự
-
[Gunny] Xin Code Web Chuyển xu Game thành Cash Web Với code xóa pet 5 sao với ...
Bởi vinateam trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 5Bài viết cuối: 14-07-14, 01:04 PM -
[BÁN] Code nạp thẻ VTC 2013 , fix new bảo hành 1 tháng FULL CODE
Bởi katterkelly trong diễn đàn CHUYÊN ĐỀ WEB GAMESTrả lời: 6Bài viết cuối: 12-03-13, 01:23 PM -
[KT] Code gift code
Bởi canh_2009 trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 0Bài viết cuối: 01-12-12, 10:51 PM -
[MU] Làm ơn Giúp mình tìm code Hộp Kundun, code rồng vàng cho các map!!!!!!!!!!!!!!!!
Bởi lethanhbptv trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 4Bài viết cuối: 16-07-12, 10:19 PM