[AMX] Tổng hợp Code, Plug do Mem chế hoặc giới thiệu

  • Thread starter Thread starter Orpheus
  • Ngày gửi Ngày gửi
Nếu như cái menu của mình nhiều selection quá thì nó phải code thế nào cho nó ra thế này, ví dụ:
1. abc
2. xyz
...
9. Đi tới trang tiếp theo
8. Quay lại trang trước
:)

Trong topic new amxx menus system có đó bác, phần sub-menu
Kiểu như là mỗi trang là 1 menu nhỏ :D.
 
Trong topic new amxx menus system có đó bác, phần sub-menu
Kiểu như là mỗi trang là 1 menu nhỏ :D.
Mình nghĩ sub-menu là như thế này: Primary Weapon ---> blah blah các súng
Nếu như ý của cậu thì menu "Next" sẽ gồm các sub-menu nhỏ đúng không :)
Nhưng như vậy còn "Back" thì mình nghĩ không làm theo kiểu trên được, rất rối :)
 
Mình nghĩ sub-menu là như thế này: Primary Weapon ---> blah blah các súng
Nếu như ý của cậu thì menu "Next" sẽ gồm các sub-menu nhỏ đúng không :)
Nhưng như vậy còn "Back" thì mình nghĩ không làm theo kiểu trên được, rất rối :)

page1
1.
2.
...


9. Next (chỗ này dẫn đến menu2 (page2)

page2
1.
2.
...

8. Back (quay trở về page1) (tức là bác xem cái function nào show menu page 1 thì viết nó ra)
9. Next (tương tự)

Còn muốn auto thì hình như có cái Dynamic Item gì gì ấy nhưng mà khó hiểu lắm @@. Em nghĩ mình newbie làm vậy thôi :)).
 
Nếu như cái menu của mình nhiều selection quá thì nó phải code thế nào cho nó ra thế này, ví dụ:
1. abc
2. xyz
...
9. Đi tới trang tiếp theo
8. Quay lại trang trước
:)
Add nhiều item là nó tự phân trang mà.
 
Mang SDK Hook lên forum giữ cho chắc, để share luôn... Nhiều khi đánh mất trên máy
Đây là một module đã hook sẵn cho ai tìm mà ko có

[SDK Hook]
Version: 1.0
Author: Dias
Credits:
- Kungfulon | Hook New Round
- thatguyzp | Hook Round Start & Round End
- Dias | Hook Round Restart
- Bos93 | Hook Spawn, TakeDamage, Killed

List Hooked Function:
- New Round (Lines: 51)
- Round Start (Lines: 54)
- Round End (+ Round Restart) (Lines: 61)
- Player Spawn (Lines: 138)
- Player Take Damage (Lines: 165)
- Player Killed (Lines: 187)
 

Attachments

Bác hướng dẫn cụ thể cách dùng được không :)
 
^
- Các chú chỉ mới lọ mọ tới Code AMXX thì ko nên rờ mó vào Module -.-, Module là 1 thứ cấp bậc cao hơn Code AMXX. Nổi tiếng nhiều chức năng và khó dùng. Mà nếu ai thực sự biết Code module thì ko phải hỏi cách dùng
 
Plugin Fun Menu by ngochai9a7
Plugin này được làm ra với tính chất tự sướng là chủ yếu nhưng up lên cho ai thích làm siêu nhân trong game thì down :5cool_big_smile:
Tính năng:
- Cộng 1000 máu và giáp
- Tăng tốc (nếu chuyển qua súng khác thì tốc độ sẽ trở về bình thường)
- Giảm trọng lực đi 1 nửa (nhảy cao hơn và rớt chậm hơn) =))
Cách dùng: Vào game bấm F1, nếu không được thì mở console lên và bấm bind F1 fun_menu rồi F1 :)
Nhận gạch đá thoải mái :4cool_beauty:
[spoil]Được lên #2 càng tốt :) [/spoil]
Link: http://www.mediafire.com/download.php?4dak12wrm9vj5c6
 
^
- Plugin này có thể lên dc #2 nhưng vì lý do là Slow-Hack nên ko dc lên
 
^
- Plugin này có thể lên dc #2 nhưng vì lý do là Slow-Hack nên ko dc lên
Maybe :2cool_go:
Do thực hành từ cái fun.inc :1cool_byebye:
Vậy thì bữa nào làm cái plugin give súng rồi up chắc không sao :5cool_big_smile:
 
Mấy plugin đó em nghĩ bác dùng để làm quen thôi chứ up thì em nghĩ ít ai dùng vì nó ko đặc biệt lắm :-?.
 
PHP:
#include <amxmodx>
#include <fun>

 public plugin_init()
 {
    register_clcmd( "my_awesome_menu","AwesomeMenu");
 }
 public AwesomeMenu(id)
 {
    new menu = menu_create("\rLook at this awesome Menu!:", "menu_handler")

    menu_additem(menu, "\wI'm Selection #1", "1", 0);
    menu_additem(menu, "\wGo to SubMenu", "2", 0);

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
 }
 public menu_handler(id, menu, item)
 {
    if( item == MENU_EXIT )
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

    new key = str_to_num(data);
    switch(key)
    {
    case 1:

        {
            //Send them to the submenu
            SubMenu(id);
        }
    }


    menu_destroy(menu);
    return PLUGIN_HANDLED;
 }
 SubMenu(id)
 {
    //Note that we will be using a different menu handler
    new menu = menu_create("\rLook at this awesome Sub-Menu!:", "submenu_handler")

    menu_additem(menu, "\wI'm Sub-Selection #1", "1", 0);
    menu_additem(menu, "\wI'm Sub-Selection #2", "2", 0);

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
 }
 public submenu_handler(id, menu, item)
 {
    if( item == MENU_EXIT )
    {
        menu_destroy(menu);

        //If they are still connected
        if( is_user_connected(id) )
            //Lets send them back to the top menu
            AwesomeMenu(id);

        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

    new key = str_to_num(data);

    switch(key)
    {
        case 1:
        {
            client_print(id, print_chat, "Hooray! You selected the Awesome 1st Sub-Selection");
        }
        case 2:
        {
            client_print(id, print_chat, "OH NO! You selected the Awesome 2nd Sub-Selection! BEWARE!");
        }
    }

    menu_destroy(menu);

    //Here you might want to show the submenu or the top menu again.
    AwesomeMenu(id);

    return PLUGIN_HANDLED;
}
case 2:
        {
            //Send them to the submenu
            SubMenu2(id);
        
    

    menu_destroy(menu);
    return PLUGIN_HANDLED;
 }
 SubMenu2(id)
 {
    //Note that we will be using a different menu handler
    new menu = menu_create("\rLook at this awesome Sub-Menu!:", "submenu2_handler")

    menu_additem(menu, "\wI'm Sub-Selection #1", "1", 0);
    menu_additem(menu, "\wI'm Sub-Selection #2", "2", 0);

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
 }
 public submenu2_handler(id, menu, item)
 {
    if( item == MENU_EXIT )
    {
        menu_destroy(menu);

        //If they are still connected
        if( is_user_connected(id) )
            //Lets send them back to the top menu
            AwesomeMenu(id);

        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

    new key = str_to_num(data);

    switch(key)
    {
        case 1:
        {
            client_print(id, print_chat, "Hooray! You selected the Awesome 1st Sub-Selection");
        }
        case 2:
        {
            client_print(id, print_chat, "OH NO! You selected the Awesome 2nd Sub-Selection! BEWARE!");
        }
    }

   menu_destroy(menu);

    //Here you might want to show the submenu or the top menu again.
    AwesomeMenu(id);

    return PLUGIN_HANDLED;
 }
Trong này sai bao nhiêu chỗ nhỉ, đang định làm 2 sub-menu (Primary --> ..., Second --> ...)
Ai biết thì sửa giúp luôn nhé :) Thank trước
 
Từng là có 1 menu

1. SubMenu1
2. SubMenu2


hả bác.
 
Làm được 1 sub-menu rồi, có ai giúp mình thêm 1 sub-menu vào được không
PHP:
 #include <amxmodx>
#include <fun>

 public plugin_init()
 {
    register_clcmd( "new_give_weapon","AwesomeMenu");
 }
 public AwesomeMenu(id)
 {
    new menu = menu_create("\rLook at this awesome Menu!:", "menu_handler")

    //Note that we are prefixing our data with an 'm' to know it is from the main menu
    menu_additem(menu, "\wPrimary Weapon", "m1", 0);
    menu_additem(menu, "\wSecondary Weapon", "m2", 0);

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
 }
 SubMenu2(id)
 {
    new menu = menu_create("\rLook at this awesome Sub-Menu!:", "menu_handler")

    //Note that we are prefixing our data with an 's' to know it is from the sub menu
    menu_additem(menu, "\wUSP", "p1", 0);
    menu_additem(menu, "\wDual Elite", "p2", 0);
    menu_additem(menu, "\wDeagle", "p3", 0);
    menu_additem(menu, "\wFive Seven", "p4", 0);
    menu_additem(menu, "\wP228", "p5", 0);
    menu_additem(menu, "\wGlock 18", "p6", 0);

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
 }
 SubMenu(id)
 {
    new menu = menu_create("\rLook at this awesome Sub-Menu!:", "menu_handler")

    //Note that we are prefixing our data with an 's' to know it is from the sub menu
    menu_additem(menu, "\wAK47", "s1", 0);
    menu_additem(menu, "\wM4A1", "s2", 0);
    menu_additem(menu, "\wAUG", "s3", 0);
    menu_additem(menu, "\wAWP", "s4", 0);
    menu_additem(menu, "\wFamas", "s5", 0);
    menu_additem(menu, "\wScout", "s6", 0);
    menu_additem(menu, "\wM3", "s7", 0);
    menu_additem(menu, "\wXM1014", "s8", 0);
    menu_additem(menu, "\wM249", "s9", 0);
    menu_additem(menu, "\wMac10", "s10", 0);
    menu_additem(menu, "\wMP5", "s11", 0);
    menu_additem(menu, "\wP90", "s12", 0);
    menu_additem(menu, "\wSG550", "s13", 0);
    menu_additem(menu, "\wSG552", "s14", 0);
    menu_additem(menu, "\wTMP", "s15", 0);
    menu_additem(menu, "\wUMP45", "s16", 0);
    menu_additem(menu, "\wG3GS1", "s17", 0);
    menu_additem(menu, "\wGalil", "s18", 0);
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
 }
 
 
 public menu_handler(id, menu, item)
 {
    if( item == MENU_EXIT )
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

    //Note that we are getting the number after the first character
    new key = str_to_num(data[1]);

    //Switch based on the first character of the data (the 'm' or the 's')
    switch( data[0] )
    {
        //All our main menu data will be handled in this case
        case 'm':
        {
            switch( key )
            {
                case 1:
                {
                   SubMenu(id);              
                }
                case 2:
                {
                   SubMenu2(id); 
                }
            }
        }
        //All our sub menu data will be handled in this case
case 's':
{
  switch( key )
    {
        case 1:
        {
            give_item(id, "weapon_ak47")
        }
        case 2:
        {
            give_item(id, "weapon_m4a1")
        }
	case 3:
        {
            give_item(id, "weapon_aug")
        }
	case 4:
        {
            give_item(id, "weapon_awp")
        }
	case 5:
        {
            give_item(id, "weapon_famas")
        }
	case 6:
        {
            give_item(id, "weapon_scout")
        }
	case 7:
        {
            give_item(id, "weapon_m3")
        }
	case 8:
        {
            give_item(id, "weapon_xm1014")
        }
	case 9:
        {
            give_item(id, "weapon_m249")
        }
	case 10:
        {
            give_item(id, "weapon_mac10")
        }
	case 11:
        {
            give_item(id, "weapon_mp5")
        }
	case 12:
        {
            give_item(id, "weapon_p90")
        }
	case 13:
        {
            give_item(id, "weapon_sg550")
        }
	case 14:
        {
            give_item(id, "weapon_sg552")
        }
	case 15:
        {
            give_item(id, "weapon_tmp")
        }
	case 16:
        {
            give_item(id, "weapon_ump45")
        }
	case 17:
        {
            give_item(id, "weapon_g3gs1")
        }
	case 18:
        {
            give_item(id, "weapon_galil")
	}
   }
   
   
   
   
   
   
            AwesomeMenu(id);
        }
    }

    menu_destroy(menu);
    return PLUGIN_HANDLED;
 }
Cụ thể mình muốn add thêm đoạn code sub-menu mua súng secondary vào đoạn code trên, tức là gộp 2 đoạn thành 1 (làm mãi không được, cứ báo error chỗ case 'p':):
PHP:
case 'p':
{
  switch( key )
    {
        case 1:
        {
            give_item(id, "weapon_usp")
        }
        case 2:
        {
            give_item(id, "weapon_elite")
        }
	case 4:
        {
            give_item(id, "weapon_deagle")
        }
	case 5:
        {
            give_item(id, "weapon_fiveseven")
        }
	case 6:
        {
            give_item(id, "weapon_glock18")
        }
    }
}
 
Chỉnh sửa cuối:
Plugin Buy Weapon v1.0 by ngochai9a7
Chức năng: Ngay như tiêu đề, cụ thể:
- Mua súng chính
- Mua súng phụ
- 1 tính năng khác, hãy test để trải nghiệm :)
Tất cả vũ khí đều là vũ khí có sẵn của CS
Plugin này do newbie làm nên đừng có ai nổi hứng hỏi các add súng như nst_wpn nhé =))
Xem lần này lên #2 được không ta :)
Đặc biệt cảm ơn bác kungfulon đã chỉ giúp lỗi sai của plugin
Link: http://www.mediafire.com/download.php?pp1999z2sc4qzqo
 
Nếu bạn ghép được thì ghép giúp mình đi :)
Error thì tùm lum ở chỗ case 'p': (Too many error....)

Có vài cái bác cần chú ý nè:
1. Nếu code của bác chỉ có 1 dòng, vd give_item(id, "weapon_usp") thì ko cần { } đậu :D, để vậy nó rối lắm :D.
2. Bác chú ý cẩn thận khi code nha, cái case 'p' thiếu số 3 nè:
PHP:
case 'p':
{
  switch( key )
    {
        case 1:
        {
            give_item(id, "weapon_usp")
        }
        case 2:
        {
            give_item(id, "weapon_elite")
        }
// case 3 :D ?
    case 4:
        {
            give_item(id, "weapon_deagle")
        }
    case 5:
        {
            give_item(id, "weapon_fiveseven")
        }
    case 6:
        {
            give_item(id, "weapon_glock18")
        }
    }
}

Full Code (em chỉ sửa về nội dung thôi còn hình thức bác tự sửa nhé :D).

PHP:
 #include <amxmodx>
#include <fun>

 public plugin_init()
 {
    register_clcmd( "new_give_weapon","AwesomeMenu");
 }
 public AwesomeMenu(id)
 {
    new menu = menu_create("\rLook at this awesome Menu!:", "menu_handler")

    //Note that we are prefixing our data with an 'm' to know it is from the main menu
    menu_additem(menu, "\wPrimary Weapon", "m1", 0);
    menu_additem(menu, "\wSecondary Weapon", "m2", 0);

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
 }
 SubMenu2(id)
 {
    new menu = menu_create("\rLook at this awesome Sub-Menu!:", "menu_handler")

    //Note that we are prefixing our data with an 's' to know it is from the sub menu
    menu_additem(menu, "\wUSP", "p1", 0);
    menu_additem(menu, "\wDual Elite", "p2", 0);
    menu_additem(menu, "\wDeagle", "p3", 0);
    menu_additem(menu, "\wFive Seven", "p4", 0);
    menu_additem(menu, "\wP228", "p5", 0);
    menu_additem(menu, "\wGlock 18", "p6", 0);

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
 }
 SubMenu(id)
 {
    new menu = menu_create("\rLook at this awesome Sub-Menu!:", "menu_handler")

    //Note that we are prefixing our data with an 's' to know it is from the sub menu
    menu_additem(menu, "\wAK47", "s1", 0);
    menu_additem(menu, "\wM4A1", "s2", 0);
    menu_additem(menu, "\wAUG", "s3", 0);
    menu_additem(menu, "\wAWP", "s4", 0);
    menu_additem(menu, "\wFamas", "s5", 0);
    menu_additem(menu, "\wScout", "s6", 0);
    menu_additem(menu, "\wM3", "s7", 0);
    menu_additem(menu, "\wXM1014", "s8", 0);
    menu_additem(menu, "\wM249", "s9", 0);
    menu_additem(menu, "\wMac10", "s10", 0);
    menu_additem(menu, "\wMP5", "s11", 0);
    menu_additem(menu, "\wP90", "s12", 0);
    menu_additem(menu, "\wSG550", "s13", 0);
    menu_additem(menu, "\wSG552", "s14", 0);
    menu_additem(menu, "\wTMP", "s15", 0);
    menu_additem(menu, "\wUMP45", "s16", 0);
    menu_additem(menu, "\wG3GS1", "s17", 0);
    menu_additem(menu, "\wGalil", "s18", 0);
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
 }
 
 
 public menu_handler(id, menu, item)
 {
    if( item == MENU_EXIT )
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

    //Note that we are getting the number after the first character
    new key = str_to_num(data[1]);

    //Switch based on the first character of the data (the 'm' or the 's')
    switch( data[0] )
    {
        //All our main menu data will be handled in this case
        case 'm':
        {
            switch( key )
            {
                case 1:
                {
                   SubMenu(id);              
                }
                case 2:
                {
                   SubMenu2(id); 
                }
            }
        }
        //All our sub menu data will be handled in this case
case 's':
{
  switch( key )
    {
        case 1:
        {
            give_item(id, "weapon_ak47")
        }
        case 2:
        {
            give_item(id, "weapon_m4a1")
        }
    case 3:
        {
            give_item(id, "weapon_aug")
        }
    case 4:
        {
            give_item(id, "weapon_awp")
        }
    case 5:
        {
            give_item(id, "weapon_famas")
        }
    case 6:
        {
            give_item(id, "weapon_scout")
        }
    case 7:
        {
            give_item(id, "weapon_m3")
        }
    case 8:
        {
            give_item(id, "weapon_xm1014")
        }
    case 9:
        {
            give_item(id, "weapon_m249")
        }
    case 10:
        {
            give_item(id, "weapon_mac10")
        }
    case 11:
        {
            give_item(id, "weapon_mp5")
        }
    case 12:
        {
            give_item(id, "weapon_p90")
        }
    case 13:
        {
            give_item(id, "weapon_sg550")
        }
    case 14:
        {
            give_item(id, "weapon_sg552")
        }
    case 15:
        {
            give_item(id, "weapon_tmp")
        }
    case 16:
        {
            give_item(id, "weapon_ump45")
        }
    case 17:
        {
            give_item(id, "weapon_g3gs1")
        }
    case 18:
        {
            give_item(id, "weapon_galil")
	}
   }
   
            AwesomeMenu(id);
        } 
case 'p':
{
  switch( key )
    {
        case 1:
        {
            give_item(id, "weapon_usp")
        }
        case 2:
        {
            give_item(id, "weapon_elite")
        }
    case 3:
        {
            give_item(id, "weapon_deagle")
        }
    case 4:
        {
            give_item(id, "weapon_fiveseven")
        }
    case 5:
                   give_item(id, "weapon_p228")
		   
case 6:
	give_item(id, "weapon_glock18")
	
	}
	AwesomeMenu(id);
    }

   
}  

    return PLUGIN_HANDLED;
 }
 
^
- Đề nghị lần sau up = attachment của forum, file có vài kb mà cũng phải mediafire, mất thời gian
 
Back
Top