Wednesday, November 28, 2012

Hướng dẫn - Cách Mod game Avatar [Update]

Là 1 người mod game công cụ không thể thiếu là.
Uc wed,bluetooth FTP,và 1 số phần mềm khác.
Bắt đầu nào cái đơn giản nhất. Mod game avatar.
Bứơc đầu tiên là down phiên bản mình cần mod về dưới dang _jar bằng uc.vi dụ: Là avatar_jar. Sau đó đổi tên thành.zip ngay tại trình duyệt máy hoặc và ftp đổi tên. Sau đó dùng ftp tìm đến file.zip mở ra => tùy chọn => chọn tất kả => giải nén[ấn 1 cho nhanh] => tùy chọn => tạo thư mục => mở thư mục vừa tạo ra => tùy chọn => giải nén tại đây.Ok với máy đã hack fone đợi 40s còn máy không hack chúa biết.(máy mình là SE 
 )
Tiếp tục là dùng đến những cái này™
(Cần để ý kĩ rằng các phiên bản Avatar về sau Teammobi mã hóa các file hoặc đổi lại rất nhiều vị trí nên anh em tìm cho kĩ nhé)
Bài 1: Mod chữ
Trước tiên ta giải nén file ra 1 thư mục tiếp theo dùng bytecode mò đến thư mục vừa giải nén.ở đây ví dụ là avatar 195 nha. khi đã tim dến phần giải nén ta bấm tùy chọn=>tìm kiếm ở đây tim kiếm với bất kể chữ gì cũng được ở avatar 195 mình tìm với chữ "hon" nó ra 2 file bd.class là tiếng anh (bỏ) và x.class cái ta cần sửa là đây này. Ta ấn mở ra và ấn 8[tìm kiếm nhanh]. Nhập số cần tìm là ok. Sau khi sửa xong ta ấn trờ về 2 lần nó hiện lên có lưu file không.ấn có là lưu file lại.ok.
Anh em chú ý bây giờ team đã gộp hết các ký tự chữ vào với nhau nên chỉ cần sửa 1 lần là ok. Chữ trong avatar nó ở hết file eo.class 

Bài 2: Mod speel
Sau khi đã thay xog chữ. Ta dùng tiếp bytecodetìm kiếm với chữ "sleep".nó sẽ ra mấy file gì đó nhưg ta ko quan tâm chỉ quan tâm dến file đầu tiên.là main/a.class.cứ biết là file đầu tiên nhé. Xong ae ấn tùy chọn => mở chi tiết nha. Nhớ là không phải mở đâu. Xong ta tim chữ "run" trog đó và mở nó ra. Tiếp ấn 8 tim với kí tự "ldc" nó sẽ ra rât nhiều nhưng thứ ta cần sủa là "ldc_w50" ở gần cuối.dòng 499 và 502 chỉ cần 2 dòng đó. Max speel thì sửa về 0. Còn min thì về 100. Giá trị 50 là măc định. Xong ấn tùy chon phải=>lưu lại => xog lại trờ về 2 lần rồi lưu file như mod chữ.ok. Xong rồi nhé.rất dễ phải không.
Sau khi 2 bước trên đã xong. Tiếp đến nén là game lại. Vì ta hay dùng ftp để nén nhưng avatar có file bản quyền nén bằng niền tin. Không sao đã có minicoman đây. Ta mở minicoman lên =>1 bên ta để ở file tạo thư mục mà ta vừa giải nén và sửa rồi. Còn 1 bên tatim dến file avatar.zip lúc dow về mà ta giải nén ý. Ở bên file.zip ta ấn phím * <lệnh chọn tất cả> và ấn phím 0 [bỏ chọn 1 cái]ở mục normal vì đây là muc chưa file bản quyền nếu xóa là hỏng game. Xong rồi ta ấn 8 <lệnh xóa>và ấn ok. Đợi ti xóa hết file là xong chỉ còn muc nomal. ok đã xong 1 nửa rồi đó. Tiếp theo ở bên mục tạo thư muc ta cũng ấn * và bỏ normal xong ấn 5 <lệnh sao chép> đợi nó chay xog là ok.thoát ra đổi tên avatar195.zip sang.jar và hưởng thụ thành qủa

Bài 3: Mod map.
Bắt đầu. Ta mở phần mềm Imageteam lên tìm đến tạo thư mục vừa giải nén => tìm mục a.clazz nha. Không phải a.class đâu. Ấn unpack rồi đợi. Đóng phần mêm vào và dùng đến avatar map. Mở phần mêm lên tìm đến mục unpack vừa nãy trong thẻ nhớ. Trong đó có các map trong game. Ví dụ 5 là khu cưới,25 là farm... các bản mới thì có thêm các map khác. Ở trong đó muốn mod cái gì thì ta chỉ cần đưa đến cái đó nó sẽ ra giá trị tương ứng và chỉ cần nhớ giá trị để đặt vào chỗ khác là ok. Như bánh mì là -118 ta nhớ và có thể đặt ở bất cứ map nào . Tươg tự với giá trị khác. Sau khi mod xong ấn phím gọi để save file mới tạo thành có dang a_new.
Khi đã mod xog hết rồi ta đóng phần mềm avatar map, dùng dt mở đến mục unpack cho nhanh. Tiếp ta đánh dấu những map gốc đã sửa rồi và xoá nó đi. Và đổi tên map mới sửa thành map gốc. Nên đổi tên thoai để tránh bị lỗi ví dụ map farm 5_old mới là. 5_new. Xóa 5_old và sửa 5_new thành 5 là ok.
Tiếp tục mở tool Image lên tìm đến mục unpack ấn tùy chọn => sellect all => pack. Đợi tí pack thành công đóng tool dùng đt tìm đến mục pack có file là trânanh đổi file đó thành a.clazz xong. Dùng Minicoman nén vào game như mod chữ là ok. 

Bài 4Mod hình ảnh.
Ta lại mở tool imageteam lên tìm đến mục tạo thư mục mà mình đã giải nén tìm mục normal mở ra . Ví dụ với file home.av còn cácc file .av khác bạn tự tim hiểu nhé, các phiên bản sau thì càng thêm đấy (Các file.av là nơi chứa hình ảnh được mã hóa)
Sau khi tìm được home.av ta ấn phim giữa vào nó để lai unpack ra. À nhớ xoá file unpack lúc nãy của a.clazz đi rồi hãy unpack cái khác tránh bị trùng.Sau khi unpack xong bạn thoát tool dùng điện thoại cho nhanh tìm đến file unpack. Nó sẽ chứa các hình ảnh mà ta thấy trong game và bây giờ chỉ cần thay cái mà ta muốn vào thôi. Ví dụ: như xe bus có tên là 840.png thi bạn tìm icon mình muốn thay đổi tên thành 840.png và xoá kái xebus 840.png cũ đi. Chú ý tất cả icon muốn thay phải là chuẩn .png nha và nên giảm dung lượng tối đa của nó đi,các hình ảnh khác làm tương tự. Sau khi xog hết rồi lại vào image team và như mod map. Tùy chọn =>sellall và pack như mod cái trên. Nhưng đổi tên là home.av ok. Nén vào là xong. :Sau khi đã mod xog map và hình ảnh rồi xong 70% rồi đấy.Bây giờ là nén nó vào game. Ta lại dùng Minicoman mở ra. 1 bên là game avatar.zip và bên còn lại ta tìm đến mục pack nó chứa các file ta đã sửa. Ở bên avatar.zip ta mở ra sẽ thấy file a.clazz ở dòng thứ 5 thi phải. Bấm 8 xóa 1 mình nó đi thôi và về bên mục pack ấn 5 vào cái a.clazz mà mình đã sửa copy sang ý mà. Tiếp mở mục normal sẽ thấy các file.av ta tìm dến home.av và là như a.clazz.
Các file khác làm tương tư.
Ok.Đã xog rồi đổi .zip thành _jar và test nào.

Bài 5: Mod ẩn ứng dụng và đổi tên
Chỉ cần duy nhất là minicoman lấy bên trên.
Đầu tiên đổi nó về .zip.(Lưu ý: nên làm trên PC thì nhanh hơn mình chỉ cần chuột phải vào cái file.jar của game rồi chọn open with...chọn Winrar nhé là mở được) Mở minicoman lên tìm đến file cần ẩn và đổi tên. Mở java đó ra tìm đến META-INF mở nó ra thấy MANIFEST.MF taị đây ấn số nha. 4 => 1. Nó ra các dòng linh tinh. Sửa ở dòng này MIDlet-Name: Avatar nhé Muốn sửa tên thì nhìn thấy chỗ nào có tên game thì sửa,đừng có sửa linh tinh dẫn đến đi cả game.
Và gạt xuống cuối cùng viết dòng này vào.
Nokia-MIDlet-no-exit:true
Ok đã ẩn ứng dụng với máy hack phone.

Bài 6: Ghép thêm n ứng dụng cùng với Avatar thành 1 ứng dụng.
Ta sử dụng công cụ Adv để làm nhé. Down game dưới dang _jar về và mở adv lên. Tìm đến java muốn ghép. Ấn chọn,thêm vào danh sách. Xong ấn danh sách nút chọn bên trái.nó ra danh sách muốn ghép và tùy chọn => bắt đầu ghép là ok. Nếu muốn ghép 1 cái thành 2 cái với nhau . Ví dụ. Avatarx2 . Ta tìm đến nó ấn chọn nó sẽ ra bảng.
Chất lượng.... => cốt yếu ở đây. Ở dưới dòng chất luợng măc đinh là 1. Nếu bạn muốn nó ghép thành x2,x3,x4 cũng đuợc chỉ cần xóa 1 đi và viết 2 hay 3 vào. Tùy thuộc vào muốn ghép. Còn măc định là giá trị 1 để ghép avatar với opera chẳng hạn.
Với cách ghép này avatar 193 ghép x3 chạy trên 2690 và x200 ngon lành.
Còn ghép 2 cái khác nhau thì để chất lượng 1.
Nge thì khó làm thì rất dễ

Bài CuốiMod key

1.Công cụ Byetcode editor 2. Tìm ra file điều hành hoạt động của game chính là file"mod speed" tìm như bài 1 nhé.
2. - Giải nén file điều hành hoạt động của game, dùng bytecode editor mở > method> keyPressed. Hàm keyPressed dùng để xác định mã phím khi ta bấm và quyết định xem với mã
phím đó thì thực hiện lệnh gì, lệnh này đc người viết định sẵn. Ngoài ra còn hàm keyReleased
(thực hiện khi nhả phím) keyRepeated (thực hiện khi giữ phím)..khoai nhờ

+Hàm switch để đặt điều kiệncho 1 biến switch(biến)
{
case giá_trị_1: làm việc này;
case giá_trị_2: làm việc kia;
...

(Cấp 3 nhớ chăm chỉ học pascal với C là biết đó )
+Cái mà ta cần sửa nằm trong hàm switch này nên khi tìm kiếm hãy gõ từ khoá switch

+Hàm này có thể dùng để đặt điều kiện cho bất kì biến nào, ko riêng gì mã phím nên ta chỉ nên quan tâm đến hàm chứa những mã phím quen thuộc. Tìm mã phím kiểu gì thì down tiếp phần mềm VNKeyDetect về xem nhé

3. Mở method keyPressed ra. 

Tìm dòng tableswitch Label92 -4:Label79,-3:Label66,-2:Label53,-1:Label40

4. Ở đây ta có:
*-1: mã phím lên
*-2: mã phím xuống
*-3: mã phím trái
*-4: mã phím phải
và sau mỗi mã phím ta thấy 1 Label có đính kèm 1 số đằng sau (số hiệu của lệnh đc thực thi). Việc cần làm để mod key chính là thay đổi số hiệu này với mã phím tương ứng.

Mod Auto Click
Lưu ý khi mod auto click mặc định là cài đặt sử dụng phím Gọi ,muốn mod lại phím khác chỉ cần dùng minicommander mở file game zip vừa mod bằng pm Auto click vd avatar.zip mở ra ta thấy thư mục javak/ mở ra thâý files config.txt ấn phím 4 nó hiện 3 dòng ấn tiếp phím 1 rùi sửa -10 thành mã phím khác tuỳ ý bạn .
Mã phím:
phím : 1 =mã : 49
phím : 2 =mã : 50
phím : 3 =mã : 51 ...
phím : 9 =mã : 57
phím : 0 =mã : 48
phím * =mã : 42
phím # =mã : 35
phím GỌI =mã : -10

Cái này là cơ bản rồi nhưng TeamMobi cứ thay đổi xoành xoạch nên ae có kinh nghiệm gì mới góp ý ngay nhé, đam mê mod game cả mà 

Tuesday, November 27, 2012

Code quản lý nhân sự bằng java-hướng đối tượng

CODE cho các bạn tham khảo nhé



import  java.io.*;
import  java.util.*;
//www.kenhdaihoc.com
public class QUANLYNHANSU {
  public  String HT;
  public  String NS;
  public  String DC;
    public QUANLYNHANSU() {
    }
public  QUANLYNHANSU(String HT,String NS,String DChi ){
this.HT=HT;
this.NS=NS;
this.DC=DChi;

public  void input(){
Scanner sc=new Scanner(System.in);
System.out.print("moi nhap hoten");
HT= sc.nextLine();
System.out.print("moi ban nhap ngay sinh");
     NS=sc.nextLine();
System.out.print("moi ban nhap dia chi đia chi");
     DC=sc.nextLine();

}
public  void hienthi(){

System.out.println("ho ten nhan vien",+HT);
System.out.println("ngày sinh nhân viên",+NS);
System.out.println("dia ch? nhân viên",+DC);
}
public  abstract double  TinhLuong();
}

 class NVSX extends QUANLYNHANSU{
  public String soSP;
public NVSX()
{
super();
}
public  NVSX(String HT,String NS,String DC, String soSP)
{
super(HT,NS,DC,soSP);
}
public  double   TinhLuong()
{
return  soSP*20000;
}
public  void input(){
Scanner sc=new  Scanner(System.in);
soSP=sc.nextInt();
}
public  hienthi()
{
{
super.hienthi();
}
System.out.println("luong cua nhân viên s?n xu?t là",+TinhLuong());
}

}
  class  NVCN extends QUANLYNHANSU{
  public   String soNC;
public NVCN(){
super();
}
public NVCN(String HT,String NS,String DC,String soNC){
super(HT,NS,DC,soNC);
}
public  double  TinhLuong(){

return soNC*90000;
}


 
 public  void  input(){
  Scanner sc=new  Scanner(System.in);
  System.out.print("moi ban nhap so ngay cong");
  soNC=sc.nextLine();
 }
 
public void  hienthi(){

super.hienthi();
}
{


System.out.println("tien luong cua nhan vien cong nhat",+TienLuong());
   }
}
  class NVQL extends QUANLYNHANSU{
  public String hsl;
  public  String lcb;
public NVQL(){
super();
}  
public NVQL(String HT,String NS,String DC,String hsl,String lcb)
{
super(HT,NS,DC,hsl,lcb);
}
public  double  TinhLuong(String hsl,String lcb)
{
return  hsl*lcb;
}
public  void input(){
Scanner sc=new Scanner();
System.out.println("moi nhap he so luong");
  sc.nextLine();
System.out.println("moi ban nhap luong co ban");
sc.nextLine();
}

public  void  hienthi(){
super.hienthi();
System.out.println("luong cua nhan vien quan ly",+TinhLuong());
}
}

//class xuly{

    public static void main(String[] args) {
    int  n;
    Scanner sc=new  Scanner(System.in);
    n=sc.nextLine();
    QUANLYNHANSU[] nv=new QUANLYNHANSU[n];
    for(int i=0;i<n;i++)
    {
    nv[i]=new QUANLYNHANSU();
    nv[i].input();
    }
    for(int  i=0;i<n;i++)
    {
    nv[i].hienthi();
    }
    NVCN[] cn=new NVCN[n];
    for(int i=0;i<n;i++)
    {
    cn[i]=new NVCN();
    cn[i].input();
    }
    for(int i=0;i<n;i++)
    {
    cn[i].hienthi();
    }
    NVSX[] sx=new  NVSX[n];
    for(int i=0;i<n;i++)
    {
    sx[i]=new  NVSX();
    sx[i].input();
    }
    for(int i=0;i<n;i++)
    {
    sx[i].hienthi();
    }
    NVQL[] ql=new NVQL[n];
    for(int i=0;i<n;i++)
    {
    ql[i]=new NVQL();
    ql[i].input();
    }
    for(int i=0;i<n;i++)

    {  
    ql[i].hienthi();
   
       
    }







Đề kiểm tra java kèm code đáp án

1.Tạo 1 interface tên opp có 2 phương thức
Nhap();
HienThi();
2.Tạo lớp abstract absNguoi kế thừa opp

 


6.Xây dựng menu với các chức năng sau:
1 . Nhập vào thông tin các lớp học
2. Xem thông tin chi tiết từng lớp
3. Loại bỏ 1 lớp học
4. Chuyển lớp 1 học sinh
5.Thoát

CODE

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package opp;
import java.util.*;
/**
 *
 * @author tien-www.kenhdaihoc.com
 */
interface iInOut{
    public void Nhap();
    public void Hienthi();
}
abstract class absNguoi implements iInOut{
    private String ten,diachi,tuoi;
    public void setTen(String Ten){
        this.ten=Ten;
    }
    public String getTen(){
        return this.ten;
    }
    public void setDiaChi(String diachi){
        this.diachi=diachi;
    }
    public String getDiaChi(){
        return this.diachi;
    }
    public void setTuoi(String tuoi){
        this.tuoi=tuoi;
    }
    public String getTuoi(){
        return this.tuoi;
    }
}
class clsSinhVien extends absNguoi{
    String masv;
    public void setMasv(String masv){
        this.masv=masv;
    }
    public String getMasv(){
        return this.masv;
    }
    public void Nhap(){
        Scanner sc=new Scanner(System.in);
        System.out.print("\n\tMã sinh viên: ");
        setMasv(sc.nextLine());
        System.out.print("\n\tTên sinh viên: ");
        setTen(sc.nextLine());
        System.out.print("\n\tĐịa chỉ sinh viên: ");
        setDiaChi(sc.nextLine());
        System.out.print("\n\tTuổi sinh viên: ");
        setTuoi(sc.nextLine());
    }
    public void Hienthi(){
        System.out.print("\n\t"+getMasv()+"\t"+getTen()+"\t"+getDiaChi()+"\t"+getTuoi());
    }            
}
class clsGiaoVien extends absNguoi{
    String Magv,MaNgach;
    public void setMagv(String magv){
        this.Magv=magv;
    }
    public String getMagv(){
        return this.Magv;
    }
    public void setMaNgach(String mangach){
        this.MaNgach=mangach;
    }
    public String getMaNgach(){
        return this.MaNgach;
    }
    public void Nhap(){
        Scanner sc=new Scanner(System.in);
        System.out.print("\n\tMã giáo viên: ");
        setMagv(sc.nextLine());
        System.out.print("\n\tMã ngạch giáo viên: ");
        setMaNgach(sc.nextLine());
        System.out.print("\n\tTên giáo viên: ");
        setTen(sc.nextLine());
        System.out.print("\n\tĐịa chỉ giáo viên: ");
        setDiaChi(sc.nextLine());
        System.out.print("\n\tTuổi giáo viên: ");
        setTuoi(sc.nextLine());
    }
    public void Hienthi(){
        System.out.print("\n\t"+getMagv()+"\t"+getMaNgach()+"\t"+getTen()+"\t"+getDiaChi()+"\t"+getTuoi());
    }    
}
class clsLop{
    String malop,tenlop;
    clsGiaoVien gvcn=new clsGiaoVien();
    ArrayList<clsSinhVien> dssv=new ArrayList<clsSinhVien>();
    public void setMaLop(String malop){
        this.malop=malop;
    }
    public String getMaLop(){
        return this.malop;
    }
    public void setTenLop(String tenlop){
        this.tenlop=tenlop;
    }
    public String getTenLop(){
        return this.tenlop;
    }
    public void setGV(clsGiaoVien gv){
        gvcn=gv;
    }
    public clsGiaoVien getGV(){
        return this.gvcn;
    }
    public void setdssv(clsSinhVien sv){
        dssv.add(sv);
    }
    public ArrayList<clsSinhVien> getdssv(){
        return this.dssv;
    }
    public void Nhap(){
        Scanner sc=new Scanner(System.in);
        System.out.print("\nNhập vào mã lớp: ");
        setMaLop(sc.nextLine());
        System.out.print("\nNhập vào tên lớp: ");
        setTenLop(sc.nextLine());
        System.out.print("\nNhập vào thông tin giáo viên: ");
        gvcn.Nhap();
        System.out.print("\nNhập vào danh sách sinh viên: ");
        int nhap;
        do{
            clsSinhVien sv=new clsSinhVien();
            sv.Nhap();
            dssv.add(sv);
            System.out.print("\nBấm 0 để dừng nhập danh sách sinh viên: ");
            nhap=sc.nextInt();
        }while(nhap!=0);
        
    }
    public void HienThi(){
        System.out.print("\n"+getMaLop()+"\t"+getTenLop());
        gvcn.Hienthi();
        for(clsSinhVien sv:dssv){
            sv.Hienthi();
        }
    }
    
}
public class Opp {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner sc=new Scanner(System.in);
        ArrayList<clsLop> dslop=new ArrayList<clsLop>();
        int chon;
        do{
            System.out.println("\n------MENU--------");
            System.out.println("\n1.Nhập vào thông tin các lớp học");
            System.out.println("2.Xem thông tin từng lớp");
            System.out.println("3.Loại bỏ 1 lớp học");
            System.out.println("4.Chuyển lớp 1 học sinh");
            System.out.println("5.Thoát");
            chon=sc.nextInt();
            switch(chon){
                case 1:
                    int chon1;
                    do{
                        clsLop l=new clsLop();
                        l.Nhap();
                        dslop.add(l);
                        System.out.println("Bấm 0 để dừng nhập danh sách lớp: ");
                        chon1=sc.nextInt();
                    }while(chon1!=0);                 
                break;
                case 2:
                    for(clsLop l:dslop){
                        l.HienThi();
                    }
                break;
                case 3:
                    System.out.println("Nhập vào mã lớp cần xóa");
                    sc.nextLine();
                    String mlop=sc.nextLine();
                    for(clsLop l:dslop){
                        if(mlop.equals(l.getMaLop())){
                            dslop.remove(l);
                        }
                    }
                    break;
                case 4:                    
                    String malop,masv,malopden;
                    System.out.println("Nhập vào mã lớp: ");
                    sc.nextLine();
                    malop=sc.nextLine();
                    clsSinhVien sinhvien=new clsSinhVien();
                    for(clsLop l:dslop){
                        if(malop.equals(l.getMaLop())){
                            System.out.println("Nhập vào mã sinh viên cần chuyển: ");
                            masv=sc.nextLine();
                            for(clsSinhVien sv:l.getdssv()){
                                if(masv.equals(sv.getMasv())){
                                    sinhvien=sv;
                                    l.dssv.remove(sv);
                                }
                            }
                        }
                    }
                    //ma lop chuyen den
                    System.out.println("Nhập vào mã lớp chuyển đến");
                    malopden=sc.nextLine();
                    for(clsLop l:dslop){
                        if(malopden.equals(l.getMaLop())){
                            l.setdssv(sinhvien);
                        }
                    }                    
                    break;
            }
        }while(chon!=5);
    }
}

Những nguy hiểm khi tùy tiện trao đổi LINK



Trao đổi link là một biện pháp cơ bản khi làm SEO, nếu trao đổi link đúng cách bạn có thể nâng cao đáng kể vị trí website của bạn trên search engine. Tuy nhiên nếu bạn trao đổi một cách tuỳ tiện kết quả có thể đi ngược lại với mong muốn.Vấn đề cốt lõi của trao đổi liên kết (link) là bạn phải tìm được các site đối tác có chất lượng. Tôi xin tóm tắt một số vấn đề cần chú ý để đánh giá xem một website có nên trao đổi hay không?

1. Các yếu tố đánh giá chất lượng links
- Thông tin liên hệ
- Ngành nghề website ví dụ: ngành nghề thiết kế website giá rẻ, thiết kế web bán hàng
- Tên miền
- PageRank
- Quảng cáo adsense
- Số lượng trang nội dung
- Cách trình bày
- Số lượng link tại link page

2. Thông tin liên hệ 
Một website có địa chỉ và số điện thoại là một minh chứng rất quan trọng chứng minh chủ sở hữu website là một tổ chức hoạt động nghiêm túc. Vì vậy khi xem xét một website việc đầu tiên nên tìm trang contact us. Nếu trang này có đủ địa chỉ và số điện thoại thì hoàn toàn yên tâm để trao đổi link với Website này

3. Ngành nghề website
Chỉ nên chấp nhận trao đổi link với các website cùng ngành nghề hoặc có liên quan đến website của bạn. Trao đổi link với những website ở ngành nghề khác không những không mang lại lợi thế trên google mà thậm chí có thể đánh mất đi lợi thế khi google đánh giá sai lĩnh vực hoạt động của website

4. Tên miền
Khi nhìn một tên miền có thể đánh giá một phần chất lượng website, nếu tên miền đẹp thì có thể nâng cao khả năng chấp nhận kết quả links.
Tên miền đẹp là tên miền không có dấu - ở giữa, ghép lại bằng những từ có nghĩa, không có chữ số, không quá dài:
Ví dụ:
Tên miền đẹp:
- thietkewebthudo.com
- tkwebgiare.com
- thoitrangnams.com
- thoitrangnams.com
Tên miền xấu:
- dna-worldwide.com
- my-singapore-hotels.com
- w529.net
- gwde.com

5. PageRank 
PageRank là một điểm số Google đánh giá cho mỗi trang web, điểm số càng cao thì sites đó càng quan trọng.
- Nếu trang chủ website của đối tác link có PageRank từ 3 trở lên thì nên trao đổi link nếu không gặp các vấn đề sau đây
+ Quảng cáo Adsword ngay tại Menu chính
+ Số lượng link tại link page vượt quá 100
- Nếu trang chủ website đối tác là 1,2 thì cần chặt chẽ hơn trong các yêu cầu
+ Quảng cáo adsword không được đặt tại menu chính, bannber và menu trái
+ Số lượng link tại link page không vượt quá 50
+ Trình bày phải gọn gàng, bố cục rõ nét
- Nếu trang chủ website đối tác là 0 hoặc không có page rank thì cần phải xem xét thật kỹ các yêu cầu khác

6. Quảng cáo adsense 
Google và các hãng quảng cáo o*nline cho phép một cá nhân cũng có thể tham gia quảng cáo kiếm tiền bằng cách đặt các mẩu quảng cáo do google (hoặc các hãng khác) lên website của mình. Việc quảng cáo không có gì là xấu, tuy nhiên nếu một website quá lạm dụng quảng cáo thì chắc chắn đây là một website nội dung kém. Vì vậy khi trao đổi link cần xem xét vị trí quảng cáo tại trang chủ website đối tác để đánh giá:
- Đặt adsense ở menu chính: Rất tồi, thói quen của người dùng nói chung là dùng menu chính để duyệt site, webmaster này đã lợi dụng thói quen đó để lừa người duyệt web click vào quảng cáo khi duyệt sites, tốt nhất là nên tránh xa không nên trao đổi link
- Ở trên banner: Bình thường, vì cac sites vẫn thường quảng cáo trên banner
- Tại banner trái: Tồi, cần phải cẩn thận khi trao đổi link
- Phía bên trên phần nội dụng: Tạm chấp nhận
- Xen lẫn với phần nội dung: Bình thường
- Menu phải: Bình thường

7. Số lượng trang nội dung/Cách trình bày
Số lượng nội dung trang là một yếu tố phụ để đánh giá chất lượng website, một khách sạn thì chỉ cần vài ba trang là đủ giới thiệu nội dung, nhưng một trang thông tin du lịch thì luôn có một khối nội dung lớn. Webiste nào có nhiều nội dung sẽ được ưu tiên hơn khi đánh giá chất lượng
Cách trình bày cũng là một yếu tố phụ đánh giá chất lượng site, vì đây là yếu tố có tính chất cảm tính nên không có một chuẩn chung. Trao đổi link với những site có cấu trúc gọn gàng sẽ có nhiều cơ hội thành công hơn.

8. Số lượng link tại link page
Số lượng links tại link page là yếu tố quan trọng quyết định giá trị của kết quả links, Nếu trong một trang có quá nhiều links thì giá trị của mỗi links tại trang đó sẽ thấp. Vì vậy khi xem xét trao đổi links cần đánh giá số lượng links đã có tại trang đó:
- Nếu số lượng links >150 không nên trao đổi
- Từ 100 đến 150, trao đổi nếu các yếu tố khác thật tốt
- Dưới 100, đạt yêu cầu.

9. Một số thủ thuật trao đổi link không trung thực của các webmaster
Khi trao đổi links, có một số webmaster thiếu trung thực có một số thủ thuật để lừa bạn giúp cho site của họ có được links trong khi site của bạn thì không. Khi gặp những kẻ như vậy tốt nhất là bạn từ chối trao đổi link và cho các site của họ vào blacklist.
- Đặt thuộc tính nofollow: Thủ thuật này được một số webmaster ở Việt Nam sử dụng (ít thấy ở các site nước ngoài). Khi gặp thuộc tính này google sẽ bỏ qua link vì vậy khi trao đổi link bạn thấy link của mình hiển thị bình thường trên site đối tác nhưng thực tế link này hoàn toàn vô dụng. Kết quả là bạn đặt link thật đến đối tác trong khi đối tác đặt link đểu đến site của bạn. Để kiểm tra xem link của mình có bị đặt thuộc tính nofollow không bạn duyệt link page bằng Firfox -> chuột phải vào link -> Properties -> xem thuộc tính
- Dùng frame: Frame là một phần nội dung được lấy vào từ một webpage khác vì vậy dù nhìn thấy link của bạn hiển thị trên site của đối tác thì chưa chắc nó đã tồn tại trên page đó. Các webmaster có thể lợi dụng điều này để offer bạn một link với PR cao, nội dung tốt nhưng thực tế link không nằm tại page đó. Để biết có bị đặt link trong Framework hay không duyệt link page bằng FireFox, chuột phải cạnh link -> Nếu có dòng “This frame” thì link của bạn đang nằm trong một Frame
- Không có đường link đến đến link page từ Home page. Mục tiêu của trao đổi link là để google nhìn thấy link của bạn tại webpage của đối tác, nhưng nếu đối tác tìm cách cản trở không cho google tìm thấy page đó thì mọi nỗ lực của bạn chỉ là con số không. Các thủ thuật cản trở google tìm đến link page thường dùng là:
i. Không đặt các đường link để dẫn tới link page từ home page
ii. Có đặt đường link từ home page nhưng đường link này được đặt thuộc tính nofollow
iii. Dùng file robots.txt để báo với google không ghé thăm link page. Để kiểm tra gõ http:// tkwebgiare.com /robots.txt nếu có dòng: Disallow: URL_deb_link_page thì chắc chắn bạn bị lừa bằng thủ đoạn này
Không phải lúc nào bạn cũng có đủ thời gian để kiểm tra tất cả các links, chỉ nên kiểm tra ngẫu nhiên một số. Khi gặp các link bị lừa bạn nên loại bỏ tất cả các links của webmaster đó và post bài lên diễn đàn để những webmaster khác được biết.

Lời khuyên dành cho các bạn: Đừng tùy tiện trao đổi link với các website qua những lời mời mọc của họ mà không tìm hiểu kỹ càng.